字 (計算機)

字,在計算機領域中用於表示其自然的數據單位的術語。是用來一次性處理事務的一個固定長度的位(bit)組。一個字的位數(即字長)是計算機系統結構中的一個重要特性。

目錄·字的使用
·字長的選擇
·字長家族
·Dword 和 Qword
·字長表
·參見
·參考資料
sambig">
<small>這是一篇關於數據單位的文章。如果希望了解字處理軟體,請看Microsoft Word.</small>
在計算機領域, 對於某種特定的計算機設計而言,字是用於表示其自然的數據單位的術語。在這個特定計算機中,字是其用來一次性處理事務的一個固定長度的位(bit)組。一個字的位數(即字長)是計算機系統結構中的一個重要特性。
字長在計算機結構和操作的多個方面均有體現。計算機中大多數暫存器的尺寸是一個字長。計算機處理的典型數值也可能是以字長為單位。CPU和記憶體之間的數據傳送單位也通常是一個字長。還有而記憶體中用於指明一個存儲位置的地址也經常是以字長為單位的。
現代計算機的字長通常為16、32、64位。其他曾經使用過的字長有:8、9、12、18、24、36、39、40、48、60位;slab是早期的另一個字長實例。某些最早期的計算機是十進制的而不是二進制的,通常擁有10位或者12位的十進制數字作為字長,還有一些早期的計算機根本就沒有固定字長。
有時候字長被定義為某個特定值是為了與早期的計算機保持兼容。現在個人計算機中最通用的微處理器(例如: Intel的Pentium系列和AMD的Athlon系列)就是一個例子。它們中的IA-32構架是早期的具有16位字長的Intel 8086構架的擴展。而IA-32處理器仍然支持8086(x86)程式,所以在IA-32中,“字”的含義仍然為16位,儘管事實上它運行起來(特別是當默認運算元為32位時)更像一台32位計算機。類似地,在更新型的x86-64構架中,“字”仍然是16位的,雖然64位運算元更為常見。
字的使用
根據計算機的組織情況,字長單位可能被套用到:
整數 ? 計算機處理的整數值通常可以有若干種不同的長度,但是其中總有一種正好是該構架的字長。如果有的話,其他的整數長度很可能是字長的倍數或分數。小尺寸的整數尺寸通常是為了提高存儲效率;當它被載入處理器時,它經常被轉換成字長尺寸的形式。
浮點數 ? 計算機處理的浮點數通常是一個字長或字長的倍數。
地址 ? 計算機處理的存儲器地址必須有足夠的尺寸以便可以表示需要的數值範圍,但是又不能過大。經常使用的尺寸是字,不過也可以是字的倍數或分數。
暫存器 ? 處理器暫存器根據它要處理的數據類型被設計成適當的尺寸,例如:整數、浮點數、地址。許多計算機構架使用“通用”暫存器,它們可以存儲任何類型的數據,可以允許存儲哪怕是最大的數據類型。它們的尺寸通常是其構架的字長。
存儲器-處理器傳送 ? 當處理器從存儲器子系統讀取數據至暫存器,或者,寫暫存器數據到存儲器,傳送的數據通常是字。在簡單的存儲系統中,字在數據匯流排上傳送,它一般為一個字或半個字。在使用快取的存儲系統,在處理器和一級快取之間傳送的是一個字長,而在更低級的存儲層次上傳送的可能是更大的尺寸(這尺寸是字的倍數)。
編址單位 ? 在一個給定的構架中,連續的地址值對應連續的存儲器單位;該單位就是編址單位。在大部分計算機中,這個單位或者是一個字元(例如:位元組)或者是一個字(少部分計算機也使用位(bit)編址單位)。如果單位是字,那么用指定長度的地址就可以訪問較大數量的存儲空間。另一方面,如果單位是位元組,那么就可以訪問單個的字元 (i.e. selected during the memory operation)。
指令 ? 機器指令通常是字長的分數或倍數。因為指令和數據經常共享同一個存儲子系統,所以自然作出這樣的選擇。而在哈佛大學架構(Harvard architecture)中,指令和數據的長度並不需要有關聯。
字長的選擇
在設計計算機時,字長的選擇是非常重要的。設計上的考慮傾向於為特定的用途(如地址)設定特定的位長。然而,出於經濟的考慮,又應該僅使用一種尺寸,或者很少的幾種與基本尺寸成倍數或分數(約數)關係的尺寸。這個首選的基本尺寸就成為該構架的字長。
字元的尺寸對於字長的選擇也有影響。20世紀60年代中期以前,字元大部分以6位存儲;這樣最多允許64個字元,因此不能又大寫字元。由於將字長定義成字元尺寸的倍數在處理時間和存儲空間上都比較划算,所以這個時期字長也就被定義為6位(在二進制機器上)的倍數。通常的選擇是36位字長,這也是適合於浮點數格式的一個長度。
隨著IBM360系統的引入――該系統使用8位字元,並支持大小寫字母――標準的字元(確切地說:位元組)尺寸也轉變成為8位。從那以後,字長也自然變成了8的倍數,16、32、64位字長被廣泛使用。
各種字長的架構
早期的計算機設計中具有所謂的“多字長”(原文:Early machine designs included some that used what is often termed a variable word length. ――譯者)。在這類組織中,數字運算元沒有固定的長度,它們通過檢查某個特殊字元來判斷是否結束。這樣的機器使用BCD編碼表示數字。這樣的機器包括IBM 702、IBM 705、IBM 7080、IBM 7010、UNIVAC 1050、IBM 1401和IBM 1620。
大部分這樣的機器一次處理一個存儲單元,因為每條指令和數據占用的數個單元,所以指令將使用數個周期來讀取存儲器。這類機器經常因為這個原因變得非常慢。例如,在 IBM 1620 Model I上,取指令需要8個周期,只是為了讀取12個數字(Model II降低到6個周期,不過如果指令不需要取其中的一個1個地址域的話,可以只需要4個周期;如果兩個都不需要,則只需要1個周期)
字和位元組編址
字長對計算機構架的存儲器模式有很大的影響。特別是:通常選擇字作為存儲器的編址方案,所謂存儲器編址方案就是地址碼能夠指定的最小存儲單位。In this approach, address values which differ by one designate adjacent memory words. 在計算機中這樣很自然,因為它通常總是要處理以字為單位的數據(或者是以字的倍數)。並且具有讓指令可以使用最小的長度來指定一個地址的優點,這樣,就可以減少質量長度或者可以定義更多的指令條數。
當計算機很大的工作量是用來處理位元組時,通常定義位元組作為地址編址單位要比字更好。這樣做字元串中的單個字元可以通過地址直接指定。當然,一個字仍然可以被地址訪問,但是比起字編址方案,它的地址將使用更多的位數。在這種組織結構中,字長需要被定義為字元長度的整數倍。這種編址方案在IBM 360中被使用,此後即變成計算機設計中最普遍的方案。
2的冪
數據常常要占用不同大小的存儲空間,例如,有些數值比其他的數值要求有更高的精度。通常使用的長度是編址單位(以字為單位編址或以位元組為單位編址)的倍數,這個倍數常常是的2的冪。這樣做是比較便利的,因為這樣的話,將一個處理對象在數組中的索引值轉化為這個處理對象的地址只需要進行一個移位操作(這在硬體上只需要進行布線的變化)而不需要進行乘操作。某些時候這樣的做法還可以避免除操作。因此,一些現代計算機設計使用的字長(或者其他的運算元)是2的冪乘以位元組尺寸。
字長家族
隨著計算機設計日益複雜,一個單一字長的核心作用在計算機架構中已經不那么重要。雖然硬體有能力支持更寬的數據類型,但是在擴展處理器性能時,市場卻有強大的壓力要求新產品保持向後兼容。因此,在一個新構架的向後兼容的設計中,核心的字長不得不與原始機型的字長共存。原始的字長在未來設計中保持可用,這就構成了字長家族的基礎。
這種情形的一個主要的實例是x86系列的設計。原始的8086構架無疑是使用16位字長的。80386在8086的基礎上進行了大幅改進,使其基於32位系統構架。如果不用考慮其他因素,它將是32位的,但是作為8086的擴展,它的字長繼續被當作16位的。(也因此,有人說80386和它的後繼處理器是"32位"的(32-bit),但不是32位字的(32-bit word))(原文:As a result of this, one hears of the 80386 and successor processors as being "32-bit", but usually not as having a 32-bit word.――譯者)同樣的情形最近又發生了,當AMD64構架使64位在系統構架具有主要地位,但是它仍然沒有放棄對16位和32位的支持。
因此,今天我們看到的計算機體系結構更多的是基於一個有聯繫的、類似的字長家族,而不是一個單一的字長體系結構。這些尺寸以整因子(integral factors)――通常是2的冪――互相關聯。直接將它們中的任何一個尺寸定義為該系統的字長是武斷的,因為這些尺寸的設計可能是因為這一系列體系構架的發展的歷史原因,而不是體系自己的最新設計中的特性。
Dword 和 Qword
在計算機科學中, dword (雙倍字) 是一種數據單位,它是字的二倍或者說是qword的一半。在具有16位字長的x86平台上,dword數據單位具有32位長度。
qword(四倍字)是字長的四倍的一種數據單位。在通用的x86平台上,該單位的數據具有64位,因為x86系統的字定義為16位(不論實際的機器上工作在那個基本位長上的)
另外,Intel使用術語double quadruple word,或者 DQWord (雙四倍字)來指定128位數據,這在SSE和它的更原始版本中可以看到。
字長表
參見
位元組
32位元
32位元套用程式
64位元
參考資料
Gerrit A. Blaauw & Frederick P. Brooks, Computer Architecture: Concepts and Evolution (Addison-Wesley, 1997, ISBN 0-201-10557-8)
Anthony Ralston & Edwin D. Reilly, Encyclopedia of Computer Science Third Edition (Van Nostrand Reinhold, 1993, ISBN 0-442-27679-6)

相關詞條

相關搜尋

熱門詞條

聯絡我們