平時,我們談論CPU,都會說某程序是32位編譯,可以跑在32位機或64位機,或則是在下載某些開源包時,也分32位CPU版本或64CPU位版本,又或者在看計算機組成相關書籍時,特別時談到X86 CPU時,一定會把8086/80286/80386拿出來說事兒,且一定會提到8086/80286是16位CPU,從386開始是32位CPU,那么這里的16/32/64位究竟說的是CPU的指標?其實這里的談的就是CPU的字長。
一、計算機里的“字”
在計算機中,一串二進制數碼作為一個整體來處理或運算的,稱為一個計算機字,簡稱字。字通常分為若干個字節。在存儲器中,通常每個單元存儲一個字,因此每個字都是可以尋址的。字的長度用位數來表示。在CPU的運算器、控制器中,通常都是以字為單位進行傳送的。字出現在不同的地址其含義是不相同。例如,送往控制器去的字是指令,而送往運算器去的字就是一個數。
二、字長
字長就是特定CPU一次同時能處理的字的位數,也就時長度,也就是CPU一次能並行處理的二進制位數。
字長與計算機的功能和用途有很大的關系,是計算機的一個重要技術指標。字長直接反映了一台計算機的計算精度,為適應不同的要求及協調運算精度和硬件造價間的關系,大多數計算機均支持變字長運算,即機內可實現半字長、全字長(或單字長)和雙倍字長運算。在其他指標相同時,字長越大計算機的處理數據的速度就越快。一台16位字長的PC機,可以直接處理2的16次方(65536)之內的數字,對於超過65536的數字就需要分解的方法來處理。32位pc機比16位機優越的原因就在於它在一次操作中能處理的數字大,32位字長的PC機能直接處理的數字高達40億(2的32次方),能處理的的數字越大,則操作的次數就越少,從而系統的效率也就越高。早期的微機字長一般是8位和16位,386以及更高的處理器大多是32位。目前市面上的計算機的處理器大部分已達到64位。
三、CPU的字長由什么決定
CPU的字長由CPU片內數據總線寬度決定的。CPU有內部數據線和外部數據線之分,比如8086的CPU內部數據線為16位,而外部數據線為8位,那么就說它的字長為16位,仍是16位處理器,只不過是CPU與內存交換數據時是按8位方式傳送數據的。又比如Pentium4 CPU內部數據線為32位,而外部地址線是36位, 外部數據線為64位,它的字長仍然為32位,所以Pentium4還是32位處理器,而不能稱為64位處理器。