超能課堂: 什麼是64位處理器

現在無論是電腦裡面的x86處理器還是手機裡面的

ARM

處理器都是64位的了,通常對於消費級的產品來說,就是支援x86-64指令集的x86處理器,或是支援ARM64指令集的ARM處理器。其實早在上世紀60年度64位的

CPU

就已經用在超級計算機上,到了90年代64位處理器也開始應用於工作站與伺服器,個人電腦是在AMD 2003年推出速龍64後才開始漸漸普及,而智慧手機上用的64位處理器ARMv8-A架構是2011年釋出的。

超能課堂: 什麼是64位處理器

點選載入圖片

這裡所說的64位是指CPU的位寬,簡單的說,CPU位寬指的是一個時鐘週期內CPU能處理的二進位制位數,如8086 CPU是16位的,可以一次處理2個位元組(16個bit),80386 CPU是32位,能一次處理4個位元組,目前的CPU基本上64位的了,一次能處理8個位元組。 我們的

Windows

作業系統

也分為32位和64位,主要是針對上面CPU的位寬做了些最佳化,比如32位的CPU就不能用64位的Windows(因為CPU一次只能處理32bit,而作業系統給你的指令是要處理64bit),但64位的CPU就可以執行32位的Windows,也能執行64位Windows。

64位CPU的優點是可以進行更大範圍的整數運算,吞吐量大的程式執行起來會更快,但大家經常對CPU的位寬認識有一些誤區,比如有人說為了支援更大的記憶體才CPU才升64位, 也有人認為32位系統只支援4GB記憶體,真的如此嗎?

最大記憶體容量和CPU的位寬有關係嗎?

CPU的定址能力與它的地址匯流排位寬有關,而我們通常說的CPU位寬指的是資料匯流排位寬,它和地址匯流排位寬半毛錢關係也沒有,自然也與定址能力無關。

超能課堂: 什麼是64位處理器

點選載入圖片

資料匯流排位寬等於CPU整數型暫存器的位寬,CPU內的暫存器通常可分為三種:整數型、浮點型還有其他,而這三種暫存器中只有整數暫存器可以存放指標值也就是記憶體資料地址,非整數暫存器不可存放指標值,所以讀寫記憶體操作不能避開整數型暫存器的位寬限制 ,以64位CPU為例,這些CPU的內部整數型暫存器的位寬為64bit,支援整數的64bit寬度的算術與邏輯運算。

但這並不代表64位CPU的所有匯流排與暫存器都是64位的,不同型別的暫存器也可以有著不同的位寬,上面說的64位CPU的整數暫存器位寬是64位沒錯,但浮點暫存器就不一樣了,比如奔騰MMX處理器所引入的MMX指令集開創了x86處理器支援SIMD操作的先河,該指令集定義了8個64位的浮點暫存器,而奔騰MMX本身只是個32位處理器。1999年推出,同樣只有32位的奔騰3處理器新增了SSE指令集,與之配套的是8個128位暫存器,而後來的AVX2與FMA指令集可支援256位的運算,浮點暫存器也擴大到256位,目前CPU內部最大的是AVX-512指令集所用的512位暫存器。

超能課堂: 什麼是64位處理器

點選載入圖片

CPU內有許多不同的暫存器

那CPU的地址匯流排位寬到底是個什麼鬼?

超能課堂: 什麼是64位處理器

點選載入圖片

Intel的解釋是Physical Address Extensions (PAE) is a feature that allows 32-bit processors to access a physical address space larger than 4 gigabytes。上面圖片是Intel Xeon Processor E5-2698 v3的截圖,專門就擴充套件物理地址作了說明,大意就是說這個是為了讓32位的處理器能使用超過4GB的記憶體。這個PAE就是CPU的地址匯流排位寬,在8086這個16位CPU,它的地址匯流排位寬是20位,正好能定址1MB,80286它的PAE是24位,在PentiumII(32位CPU)時這個PAE變成了36位,可以支援64GB的定址。64位CPU出現之後,其地址匯流排位寬一般採用的是36位或者40位,它們定址的物理地址空間為64GB或者1T。

那地址匯流排和資料匯流排有什麼關係?可以這麼理解,地址匯流排用來定位,資料匯流排用來傳輸,也就是當CPU需要從記憶體讀取資料或向記憶體寫入資料時,它使用地址匯流排來指定其需要訪問的儲存器塊的物理地址,然後透過資料匯流排傳送資料。

所以說,CPU的位寬和定址能力是沒有關係的,16位CPU的地址匯流排位寬可以是20位,32位CPU的地址匯流排可以是36位,64位CPU的地址匯流排位寬可以是40位。所以你下次一定不要說32位的CPU只能定址2^32(4GB)了,大錯特錯。

32位系統只支援4GB記憶體?

理論上32位作業系統的邏輯地址定址範圍只有2^32=4GB,但實際上並不是這樣的,雖然常見的Windows 7 32位(真有人在用Windows 10 32位嗎?)系統確實只能識別4GB記憶體,而且最大可用記憶體最多為3。25GB,但同為32位的Windows Server 2003/2008卻可用使用4GB以上的記憶體,因為這些系統支援PAE物理地址擴充套件技術。

超能課堂: 什麼是64位處理器

點選載入圖片

PAE除了CPU自身支援之外,還需要晶片組、主機板還有作業系統的支援才行,比如一些舊主機板就不支援大於4GB物理記憶體,而微軟也沒有把PAE功能開放到32位的家用作業系統中,即使是Windows Server系統,如果不是企業版的也沒有開放PAE功能。

當然了Windows XP/7/8/10系統的核心本身是支援PAE功能的,32位版的系統可透過破解開啟此功能以支援4GB以上記憶體,破解方法其實也不難,網上有許多現成的工具,但說真的,與其去破解,還不如直接裝64位的作業系統一了百了。

如果你還在用32位處理器,以上這些都不是你需要考慮的問題。

相關文章