-
字長
鎖定
字長概念
通常稱處理字長為8位數據的CPU叫8位CPU,32位CPU就是在同一時間內處理字長為32位的二進制數據。二進制的每一個0或1是組成二進制的最小單位,稱為位(bit)。常用的字長為8位、16位、32位和64位。字長為8位的編碼稱為字節,是計算機中的基本編碼單位。
[3]
字長與計算機的功能和用途有很大的關係,是計算機的一個重要技術指標。字長直接反映了一台計算機的計算精度,為適應不同的要求及協調運算精度和硬件造價間的關係,大多數計算機均支持變字長運算,即機內可實現半字長、全字長(或單字長)和雙倍字長運算。在其他指標相同時,字長越大計算機的處理數據的速度就越快。早期的微機字長一般是8位和16位,386以及更高的處理器大多是32位。市面上的計算機的處理器大部分已達到64位。字長由微處理器對外數據通路的數據總線條數決定。
[3]
字長通俗含義
我們先來看一下人腦是如何進行計算的,例如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]
字長固定字長與可變字長
在某些計算機中,每一儲存位置是由固定的位數所組成的。每當計算機涉及到某一個儲存位置時,即表示它要引用此一固定長度的位置,亦稱為一個“字” ( word ) 。像此種型態的組織,我們稱之為固定字長( fixed word length)或可定址字( word-address-able)。例如典型的迷你計算機,一個字長為16個位。
[6]
另一些計算機,它的每個地址所引用是一個位元組或一個字。這種計算機,我們稱之為可定址字( character-ddressable )或可定址位元組( byte-addresable )。右圖所示即為此種儲存體,因為這10個位元組的每一個位元組,皆可個別設定一個位址。
[6]
我們之所以稱之“可變字長” ,乃是因為只要利用一個計算機已有的指令(如" add"或"move " ),它就可以去處理字數目為可變的字。但對固定字長的計算機而言,它所處理的字數目是由指合本身所指定的。
[6]
右圖所示為固定字長與可變字長儲存體組織的比較。圖a所示為每字可存4個字元的固定字長組織。注意此種組織中,雖然是每4個字元形成一組,且可賦予一個地址,但是每個個別的字元卻不能賦予位址。在圖b的可定址字元或可變字長的組織中,計算機可將其中每一個字賦予一個位址。
[6]
在圖b中,假設要取出其中前5個字(即字母SANTA)時,需要分別引用5個位址。但實際上,並不需要如此。因為有一種可變字長指令,可讓你一次就取出一組的字。在指令中,你只要第一個字元的位址,然後再指定一共要取出幾個字元即可。
可變字長組織其主要優點為儲存體的使用效率高;即,只需使用與字數一樣的位置即可儲存該組字(注:如果想儲存SANTA這一組字,只需使用5個位置即可)。然而,固定字長的組織可能會有浪費內存空間的現象。例如圖a中的第三個字(位址為003 )僅被利用一半,而其另一半則未被使用。
[6]
字長雙倍字長
雙倍字長是指計算機內部參與運算的數的位數。它決定着計算機內部寄存器、ALU和數據總線的位數,直接影響着機器的硬件規模和造價。雙倍字長直接反映了一台計算機的計算精度,為適應不同的要求及協調運算精度和硬件造價間的關係,大多數計算機均支持變字長運算,即機內可實現半字長、全字長(或單字長)和雙倍字長運算。
[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]
字節
- 參考資料
-
- 1. 楊建林.計算機應用基礎:西安交通大學出版社,2006.07:第6頁
- 2. 裴純禮.計算機應用基礎 Windows 2000版:北京郵電大學出版社,2005.12:第16頁
- 3. 唐建軍,吳燕,塗傳清.大學信息技術基礎:北京理工大學出版社,2018.08:第40頁
- 4. 董加強主編;張健,鍾黔川,郭秋灩,陳宗榮副主編.西昌學院“質量工程”資助出版系列教材 大學計算機基礎與實訓教程:北京理工大學出版社,2014.02:第19頁
- 5. 陳建平.PC系列微機維護與升級大全:福建科學技術出版社,1995.01:第36頁
- 6. 黃河楫.資料處理入門:儒林圖書有限公司,1985:第100頁
- 7. 孫秀福.為DJS131機增配定點雙倍字長開方程序的設計及應用:中國計算機應用文集 DJS100系列機軟件專輯 第三集,2011:第177頁
- 8. 周毓麟,袁國興.關於科學計算用數字電子計算機字長問題[J].計算機工程與科學,2005(10):1-2+16 .中國知網[引用日期2019-08-26]
- 9. 曾慶良.位、字節、字和字長不再混淆[J].中國會計電算化,1999(02):51 .中國知網[引用日期2019-08-26]