一般來說,CPU的位寬指的是數據總線的寬度。
這個你可以這么推想:
CPU的地址總線寬度決定了尋址范圍,數據總線決定了單次能取出的數據的長度。
決定CPU的性能的話,數據總線和地址總線誰更能決定這個性能呢?
當然是數據總線嘛,你64位數據總線一次就能取出64bit的數據,8位數據總線的CPU一次只能取出8bit的數據,在相同頻率的情況下,8位數據總線的CPU就得連續取8次數據,數據量才能和64位數據總線一次取出的數據量相同,是不是性能差8倍呢。這里還不關心取到數據后處理數據的性能問題,但就說取數據的性能問題,就差8倍。
地址總線寬度不是直接影響到性能的參數。給個例子:
假如說有個36位地址總線寬度、32位數據總線寬度的A型號的CPU,
假如還有個32位地址總線寬度、32位數據總線寬度的B型號的CPU。
你覺得這兩個型號的CPU性能上能差到哪嗎?只不過B型號的CPU地址超過了32位可能就不行能,也可能需要用其他的方式組合出更長位寬的地址來,總之不如A型號直接、高效。但是,只要不是這樣的情況,A和B的其他因素相同,你覺得A和B兩個CPU的性能差到哪嗎。
其實,intel的x86CPU就剛好有這樣的情況,36位地址總線寬度、32位數據總線寬度,寄存器是32位的,你會想,那寄存器放不下36位的地址,那怎么辦呢,其實它是用某種方法組合出來的36位地址,段地址32位向高位偏移4位后加上偏移地址,就出來36位的地址。
一般,寄存器的寬度和數據總線寬度是一致的,地址總線可以通過某種方式組合出來,所以可以不一致。畢竟寄存器絕大部分時間是要存儲和處理數據的,不是嗎,地址作為數據使用的情況在整個程序運行中占的時間是很少數的。
另外,操作系統的位寬應該指的是編譯時使用的是32位指令集還是64指令集(這里就只說x86體系的吧,IA32和IA64這個比較多,其他體系結構的我也不是很清楚。),首先硬件CPU要是能支持足夠的位寬,不過現在的inter和AMD的IA64體系的CPU都支持64位,為了兼容之前的軟件體系,當然也支持32位的指令集。只是32位的操作系統和32位的軟件,使用的是32位的指令集,沒有用到64位的指令集,CPU上運行的是32位的指令集,但不是說它不能運行64位的指令集,而是軟件它自己用的是32位,沒用64位。如果這類比於ARM的32位ARM指令集和Thumb指令集就會很清楚了。
目前很多軟件都是老的32位指令的軟件,運行的是32位指令集,還沒用跟上CPU,所以64位的操作系統上還不能像32位XP那樣很好的運行全部的軟件。