1. 程式人生 > >CPU的位數與作業系統的位數

CPU的位數與作業系統的位數

    隨著近來AMD和Intel的64位CPU以及 Microsoft 64位作業系統的相繼釋出,我想來談談CPU位數與作業系統位數的問題,這二者有區別也有聯絡,作業系統位數的概念是基於CPU的位數的。


    首先我們從計算機的資訊表示談起。計算機中的資訊分為兩類:控制資訊、資料資訊。控制資訊表示:條件、命令、狀態等。資料資訊有數值與非數值的兩類,非數值如:文字、影象、聲音等。所有這些資訊在計算機中用數字程式碼表示,為了電路表示處理方便,就用二進位制表示。電路用高電平、低電平表示2個數碼“1”和“0”,簡單地可理解為高低電壓或有無電。十進位制在每個數位上可用10個數碼(0—9),二進位制在每個數位上可用2個數碼(0、1)。用二進位制表示數和十進位制的其實就是一樣,也可進行各種運算。計算機系統的資訊從輸入、儲存、處理到輸出就都是用基於二進位制的電訊號表示。如鍵盤的每一個按鍵可用一個數碼錶示;如滑鼠可用2個數碼分別表示水平和垂直的位置;如儲存字元“A”可用數碼“01100101”表示;如儲存、輸出影象可將影象分為很多點,各點用一數碼錶示其顏色。


    所談的位數就是表示資訊的二進位制數碼的位數。位數越大能表示的資訊範圍就越大。如“16位色”就是說能表示的顏色種數是2的16次冪(65536),32位就有2的32次冪(65536*65536)。
    CPU的位數是指CPU能一次同時寄存和處理二進位制數碼的位數,這和CPU中暫存器的位數對應。
    CPU為了實現其功能一般設計了指令集,即是CPU的全部指令,這就是機器語言。計算機的所有功能都是基於CPU的指令集。指令集和CPU的位數是有聯絡的。如Intel 8086 CPU 是16位,其指令集也是16位。如Intel 80386DX CPU 是32位,其指令集也是32位,但它也保持原16位指令集,這是為了向上相容。
    作業系統的位數是說其所依賴的指令集的位數。


    計算機系統一般都應有向上相容性,所以也可有64位CPU上執行32位作業系統、32位CPU上執行16位作業系統的情況。作業系統位數應該是根據指標型別的位數來定的。整數型別不一定跟位數相等,CPU位數準確地說應該是CPU一次能夠並行處理的資料寬度,一般就是指資料匯流排寬度。附:
    64位CPU如:AMD Athlon64 、Intel Pentium 4 F
    32位CPU如:Intel 80386DX 到 Intel Pentium III 和部分Intel Pentium 4
    16位CPU如:Intel 8086、Intel 80286
    64位作業系統如:Windows XP Professional x64和Windows Server 2003 x64
    32位作業系統如:Windows95、Windows98、Windows NT、Windows 2000、Windows XP
    16位作業系統如:DOS 
    Windows1.0到3.2是執行在DOS上的,不能算是獨立的作業系統。

    問:一個裝置既有32位的驅動又有64位的驅動,這個位數是指CPU的位數還是作業系統的位數
    答:一般意義上的驅動都是建立在作業系統之上的,根據os指定的方式才能編寫驅動。所以無論你的cpu是隻支援32位,還是em64t架構,只要作業系統是32位的,那麼你的驅動也就只能使用32位的。而在x64環境下可以安裝32位的驅動,是因為x64不是純粹的64位,它提供了一個相容32位的環境,所以本質上還是作業系統的位數。