複製鏈接
請複製以下鏈接發送給好友

字長

鎖定
在計算機領域,對於某種特定的計算機設計而言,字(word)是用於表示其自然的數據單位的術語,是用來表示一次性處理事務的固定長度。一個字的位數,即字長,是計算機系統結構中的一個重要特性。字長在計算機結構和操作的多個方面均有體現。計算機中大多數寄存器的大小是一個字長。計算機處理的典型數值也可能是以字長為單位。CPU和內存之間的數據傳送單位也通常是一個字長。還有內存中用於指明一個存儲位置的地址也經常是以字長為單位的。現代計算機的字長通常為16、32、64位。其他曾經使用過的字長有:8、9、12、18、24、36、39、40、48、60位;slab是早期的另一個字長實例。
中文名
字長
外文名
word size
解    釋
同一時間處理二進制數位數
地    位
是CPU的主要技術指標之一
補    充
計算機處理器絕大部分已達到64位
學    科
計算機科學

字長概念

計算機採用二進制編碼方式表示數、字符、指令和其它控制信息。 [1]  計算機在存儲、傳送或操作時,作為一個單元的一組二進制碼稱為字,一個字中的二進制位的位數稱為字長。 [2] 
通常稱處理字長為8位數據的CPU叫8位CPU,32位CPU就是在同一時間內處理字長為32位的二進制數據。二進制的每一個0或1是組成二進制的最小單位,稱為位(bit)。常用的字長為8位、16位、32位和64位。字長為8位的編碼稱為字節,是計算機中的基本編碼單位。 [3] 
字長與計算機的功能和用途有很大的關係,是計算機的一個重要技術指標。字長直接反映了一台計算機的計算精度,為適應不同的要求及協調運算精度和硬件造價間的關係,大多數計算機均支持變字長運算,即機內可實現半字長、全字長(或單字長)和雙倍字長運算。在其他指標相同時,字長越大計算機的處理數據的速度就越快。早期的微機字長一般是8位和16位,386以及更高的處理器大多是32位。市面上的計算機的處理器大部分已達到64位。字長由微處理器對外數據通路數據總線條數決定。 [3] 

字長通俗含義

字長是CPU的主要技術指標之一,指的是CPU一次能並行處理二進制位數,通常PC機的字長為16位(早期),32位,64位。 [4] 
PC機可以通過編程的方法來處理任意大小的數字,但數字越大,PC機就要花越長的時間來計算。PC機在一次操作中能處理的最大數字是由PC機的字長確定的。 [5] 
我們先來看一下人腦是如何進行計算的,例如5×6則立即可以得到答案是30,但對於55×66,就不可能立即得到正確的答案,這就是説55或66已走出了人腦的“字長”,這是為了得出結果,就必須把複雜的問題(如55×66)分解成易於處理的問題(如55×66可分解為50×60,50×6,5×60,5×6),然後再綜合起來,得出結果。 [5] 
字長 字長
同樣PC機也是這樣處理問題的,一台16位字長的PC機,可以直接處理2的16次方(65536)之內的數字,對於超過65536的數字就需要分解的方法來處理。32位pc機比16位機優越的原因就在於它在一次操作中能處理的數字大,32位字長的PC機能直接處理的數字高達40億(2的32次方),能處理的的數字越大,則操作的次數就越少,從而系統的效率也就越高。 [5] 
CPU大多是64位的,但大多都以32位字長運行,都沒能展示它的字長的優越性,因為它必須與64位軟件(如64位的操作系統等)相輔相成,也就是説,字長受軟件系統的制約,例如,在32位軟件系統中64位字長的CPU只能當32位用。 [4] 

字長固定字長與可變字長

每一個儲存位置都可以由其地址找到。但是每一儲存位置的長度( length)尚未指定。 [6] 
在某些計算機中,每一儲存位置是由固定的位數所組成的。每當計算機涉及到某一個儲存位置時,即表示它要引用此一固定長度的位置,亦稱為一個“字” ( word ) 。像此種型態的組織,我們稱之為固定字長( fixed word length)或可定址字( word-address-able)。例如典型的迷你計算機,一個字長為16個位 [6] 
可定址位元組 可定址位元組
另一些計算機,它的每個地址所引用是一個位元組或一個字。這種計算機,我們稱之為可定址字( character-ddressable )或可定址位元組( byte-addresable )。右圖所示即為此種儲存體,因為這10個位元組的每一個位元組,皆可個別設定一個位址。 [6] 
至於可定址字元的計算機,經常被稱為可變字長( variable word length )的機器。 [6] 
我們之所以稱之“可變字長” ,乃是因為只要利用一個計算機已有的指令(如" add"或"move " ),它就可以去處理字數目為可變的字。但對固定字長的計算機而言,它所處理的字數目是由指合本身所指定的。 [6] 
可定址字元 可定址字元
右圖所示為固定字長與可變字長儲存體組織的比較。圖a所示為每字可存4個字元的固定字長組織。注意此種組織中,雖然是每4個字元形成一組,且可賦予一個地址,但是每個個別的字元卻不能賦予位址。在圖b的可定址字元或可變字長的組織中,計算機可將其中每一個字賦予一個位址。 [6] 
在圖b中,假設要取出其中前5個字(即字母SANTA)時,需要分別引用5個位址。但實際上,並不需要如此。因為有一種可變字長指令,可讓你一次就取出一組的字。在指令中,你只要第一個字元的位址,然後再指定一共要取出幾個字元即可。
例如,在圖b ,一個讀取字母SANTA的指令,只要指定第一個字元的位址( 001 )及所要讀取的字數(5) ,則此5個字元即可被讀出。 [6] 
可變字長組織其主要優點為儲存體的使用效率高;即,只需使用與字數一樣的位置即可儲存該組字(注:如果想儲存SANTA這一組字,只需使用5個位置即可)。然而,固定字長的組織可能會有浪費內存空間的現象。例如圖a中的第三個字(位址為003 )僅被利用一半,而其另一半則未被使用。 [6] 

字長雙倍字長

雙倍字長是指計算機內部參與運算的數的位數。它決定着計算機內部寄存器ALU數據總線的位數,直接影響着機器的硬件規模和造價。雙倍字長直接反映了一台計算機的計算精度,為適應不同的要求及協調運算精度和硬件造價間的關係,大多數計算機均支持變字長運算,即機內可實現半字長、全字長(或單字長)和雙倍字長運算。 [7] 
微型機的字長通常為4位、8位、16位和32位,64位字長的高性能微型計算機也已推出。 [7] 
雙倍字長計算機計算精度的影響: [7] 
4位字長:2^4=16;16位字長:2^16=65536=64K
32位字長:2^32=4,294,967,296=4G;64位字長:2^64≈1.8445×10^19
數據總線DB用於傳送數據信息。數據總線是雙向三態形式的總線,即他既可以把CPU數據傳送存儲器I/O接口等其它部件,也可以將其它部件的數據傳送到CPU。數據總線的位數是微型計算機的一個重要指標,通常與微處理的字長相一致。例如Intel8086微處理器字長16位,其數據總線寬度也是16位。需要指出的是,數據的含義是廣義的,它可以是真正的數據,也可以指令代碼狀態信息,有時甚至是一個控制信息,因此,在實際工作中,數據總線上傳送的並不一定僅僅是真正意義上的數據。 [7] 
地址總線AB是專門用來傳送地址的,由於地址只能從CPU傳向外部存儲器I/O端口,所以地址總線總是單向三態的,這與數據總線不同。地址總線的位數決定了CPU可直接尋址內存空間大小,比如8位微機的地址總線為16位,則其最大可尋址空間為2^16=64KB,16位微型機的地址總線為20位,其可尋址空間為2^20=1MB。一般來説,若地址總線為n位,則可尋址空間為2^(n-10)千字節。 [7] 
控制總線CB用來傳送控制信號時序信號。控制信號中,有的是微處理器送往存儲器和I/O接口電路的,如讀/寫信號,片選信號中斷響應信號等;也有是其它部件反饋給CPU的,比如:中斷申請信號、復位信號、總線請求信號、限備就緒信號等。因此,控制總線的傳送方向由具體控制信號而定,一般是雙向的,控制總線的位數要根據系統的實際控制需要而定。實際上控制總線的具體情況主要取決於CPU。 [7] 

字長字長的選擇

在設計計算機時,字長的選擇是非常重要的。設計上的考慮傾向於為特定的用途(如地址)設定特定的位長。然而,出於經濟的考慮,又應該僅使用一種尺寸,或者很少的幾種與基本尺寸成倍數或分數(約數)關係的尺寸。這個首選的基本尺寸就成為該構架的字長。 [8] 
字符的尺寸對於字長的選擇也有影響。20世紀60年代中期以前,字符大部分以6位存儲;這樣最多允許64個字符,因此不能又大寫字符。由於將字長定義成字符尺寸的倍數在處理時間存儲空間上都比較划算,所以這個時期字長也就被定義為6位(在二進制機器上)的倍數。通常的選擇是36位字長,這也是適合於浮點數格式的一個長度。 [8] 
隨着IBM360系統的引入——該系統使用8位字符,並支持大小寫字母——標準的字符(確切地説:字節)尺寸也轉變成為8位。從那以後,字長也自然變成了8的倍數,16、32、64位字長被廣泛使用。 [8] 

字長各種字長的架構

早期的計算機設計中包括所謂的“可變字長”設計。(原文:Early machine designs included some that used what is often termed avariable word length.——譯者)。在這類設計中,數字操作數沒有固定的長度,它們通過檢查某個特殊字符來判斷是否結束。這樣的機器使用BCD編碼表示數字,例如IBM 702、IBM 705、IBM 7080、IBM 7010、UNIVAC 1050、IBM 1401和IBM 1620。 [8] 
大部分這樣的機器一次處理一個存儲單元,因為每條指令和數據佔用的數個單元,所以指令將使用數個週期來讀取存儲器。這類機器經常因為這個原因變得非常慢。例如,在IBM 1620 Model I上,取指令需要8個週期,只是為了讀取12個數字(Model II降低到6個週期,不過如果指令不需要取其中的一個1個地址域的話,可以只需要4個週期;如果兩個都不需要,則只需要1個週期)。 [8] 

字長字和字節編址

字長對計算機構架的存儲器模式有很大的影響。特別是:通常選擇字作為存儲器的編址方案,所謂存儲器編址方案就是地址碼能夠指定的最小存儲單位。編號相鄰的存儲器字組,其地址編號相差一。在計算機中這樣很自然,因為它通常總是要處理以字為單位的數據(或者是以字的倍數)。並且具有讓指令可以使用最小的長度來指定一個地址的優點,這樣,就可以減少指令長度或者可以定義更多的指令條數。 [8] 
當計算機很大的工作量是用來處理字節時,通常定義字節作為地址編址單位要比字更好。這樣做字符串中的單個字符可以通過地址直接指定。當然,一個字仍然可以被地址訪問,但是比起字編址方案,它的地址將使用更多的位數。在這種組織結構中,字長需要被定義為字符長度的整數倍。這種編址方案在IBM 360中被使用,此後即變成計算機設計中最普遍的方案。 [8] 

字長2的冪

數據常常要佔用不同大小的存儲空間,例如,有些數值比其他的數值要求有更高的精度。通常使用的長度是編址單位(以字為單位編址或以字節為單位編址)的倍數,這個倍數常常是的2的冪。這樣做是比較便利的,因為這樣的話,將一個處理對象在數組中的索引值轉化為這個處理對象的地址只需要進行一個移位操作(這在硬件上只需要進行佈線的變化)而不需要進行乘操作。某些時候這樣的做法還可以避免除操作。因此,一些現代計算機設計使用的字長(或者其他的操作數)是2的冪乘以字節尺寸。 [8] 

字長字長表

年份
計算機架構
字長
整數長度
浮點數長度
長度指令
編址單位
字符長度
1941
Zuse Z3
22 b
w
8 b
w
1942
50 b
w
1944
Harvard Mark I
23 d
w
24 b
1946
(1948)
{1953}
(w/Panel #16)
{w/Panel #26}
10 d
w, 2w
w
{w}
(2d, 4d, 6d, 8d
{w}
1951
12 d
w
½w
w
1 d
1952
IAS machine
40 b
w
½w
w
5 b
1952
36 b
½w,w
½w
½w,w
6 b
1952
UNIVAC 60
nd
1d, ... 10d
2d, 3d
1953
IBM 702
nd
0d, ... 511d
5d
d
1 d
1953
UNIVAC 120
nd
1d, ... 10d
2d, 3d
1954
(1955)
IBM 650
(w/IBM 653)
10 d
w
w
w
w
2 d
1954
IBM 704
36 b
w
w
w
w
6 b
1954
IBM 705
nd
0d, ... 255d
5d
d
1 d
1954
IBM NORC
16 d
w
w, 2w
w
w
1956
IBM 305
nd
1d, ... 100d
10d
d
1 d
1958
UNIVAC II
12 d
w
½w
w
1 d
1958
32 b
½w
w
w
6 b
1958
Autonetics Recomp II
40 b
w, 79 b, 8d, 15d
2w
½w
½w,w
5 b
1959
IBM 1401
nd
1d, ...
d, 2d, 4d, 5d, 7d, 8d
d
1 d
1959
(TBD)
IBM 1620
nd
2d, ...
(4d, ... 102d
12d
d
2 d
1960
LARC
12 d
w, 2w
w, 2w
w
w
2 d
1960
IBM 1410
nd
1d, ...
d, 2d, 6d, 7d, 11d, 12d
d
1 d
1960
IBM 7070
10 d
w
w
w
w,d
2 d
1960
18 b
w
w
w
6 b
1961
IBM 7030
(Stretch)
64 b
1b, ... 64b,
1d, ... 16d
w
½w,w
b, ½w,w
1 b, ... 8 b
1961
IBM 7080
nd
0d, ... 255d
5d
d
1 d
1962
UNIVAC III
25 b, 6 d
w, 2w, 3w, 4w
w
w
6 b
1962
UNIVAC 1107
36 b
/6w, ⅓w, ½w,w
w
w
w
6 b
1962
IBM 7010
nd
1d, ...
d, 2d, 6d, 7d, 11d, 12d
d
1 d
1962
IBM 7094
36 b
w
w, 2w
w
w
6 b
1963
Gemini Guidance Computer
39 b
26 b
13 b
13 b, 26 b
1963
(1966)
Apollo Guidance Computer
15 b
w
w, 2w
w
1964
CDC 6600
60 b
w
w
¼w, ½w
w
6 b
1965
IBM 360
32 b
½w,w,
1d, ... 16d
w, 2w
½w,w, 1½w
8 b
8 b
1965
UNIVAC 1108
36 b
/6w, ¼w, ⅓w, ½w,w, 2w
w, 2w
w
w
6 b, 9 b
1965
PDP-8
12 b
w
w
w
8 b
1970
16 b
w
2w, 4w
w, 2w, 3w
8 b
8 b
1971
4 b
w,d
2w, 4w
w
1972
8 b
w, 2d
w, 2w, 3w
w
8 b
1972
Calcomp 900
9 b
w
w, 2w
w
8 b
1974
8 b
w, 2w, 2d
w, 2w, 3w
w
8 b
1975
Cray-1
64 b
24 b,w
w
¼w, ½w
w
8 b
1975
Motorola 6800
8 b
w, 2d
w, 2w, 3w
w
8 b
1975
MOS Tech. 6501
MOS Tech. 6502
8 b
w, 2d
w, 2w, 3w
w
8 b
1976
Zilog Z80
8 b
w, 2w, 2d
w, 2w, 3w, 4w, 5w
w
8 b
1978
(1980)
(w/Intel 8087)
16 b
½w,w, 2d
w, 2w, 4w
(2w, 4w, 5w, 17d
½w,w, ... 7w
8 b
8 b
1978
VAX-11/780
32 b
¼w, ½w,w, 1d, ... 31d, 1b, ... 32b
w, 2w
¼w, ... 14¼w
8 b
8 b
1979
Motorola 68000
32 b
¼w, ½w,w, 2d
½w,w, ... 7½w
8 b
8 b
1982
(1983)
Motorola 68020
(w/Motorola 68881)
32 b
¼w, ½w,w, 2d
w, 2w, 2½w
½w,w, ... 7½w
8 b
8 b
1985
ARM1
32 b
w
w
8 b
8 b
1985
32 b
¼w, ½w,w
w, 2w
w
8 b
8 b
1989
16 b
½w,w, 2d
w, 2w, 4w
2w, 4w, 5w, 17d
½w,w, ... 7w
8 b
8 b
1989
Motorola 68040
32 b
¼w, ½w,w, 2d
w, 2w, 2½w
½w,w, ... 7½w
8 b
8 b
1991
32 b
¼w, ½w,w
w, 2w
w
8 b
8 b
2000
64 b
8 b, ¼w, ½w,w
½w,w
41 b
8 b
8 b
2002
32 b
w
w, 2w
½w,w
8 b
8 b
説明:b:位, d: 10進制數,w:該構架的字長,n:變量長度(variable size)

字長有關術語

在計算機中,一串數碼作為一個整體來處理或運算的,稱為一個計算機字,簡稱字,字反映計算機一次並行處理的一組二進制數。字通常分為若干個字節(每個字節一般是8位)。在存儲器中,通常每個單元存儲一個字,因此每個字都是可以尋址的。字的長度用位數來表示。 [9] 
在計算機的運算器、控制器中,通常都是以字為單位進行傳送的。字在不同的地址出現,其含義是不相同。例如,送往控制器去的字是指令,而送往運算器去的字就是一個數。 [9] 
字節
字節是指一小組相鄰的二進制數碼。通常是8位作為一個字節。它是構成信息的一個小單位,並作為一個整體來參加操作,比字小,是構成字的單位。在微型計算機中,通常用多少字節來表示存儲器存儲容量 [9] 
參考資料