4GB記憶體的地址長度為什麼是32?飄若秀吉悠2022-01-03 14:54:00

1。硬體原因

X86架構CPU分為32位與64位,這裡所說的32位與64位指的是CPU一次能夠處理的資料寬度。而決定CPU支援多大記憶體的是CPU的地址匯流排數目。

一般情況下32位的CPU的地址匯流排是32位的(可以理解成32根),那麼提供的可定址物理地址範圍為2^32=4G。64位的CPU一般採用36位(64G)或者40位(1T)。因為64位的CPU理論上支援的物理定址範圍非常大,正常情況下根本用不到那麼大,所以CPU不會滿配地址匯流排,想要檢視64位CPU最大支援的記憶體,可以去官網看一下。

2。軟體原因

使用者在使用計算機的時候能夠訪問的最大記憶體不僅僅是由CPU地址匯流排的位數決定的,作業系統訪問記憶體是訪問的邏輯地址,這個邏輯地址是作業系統提供的。

對於32位的Windows作業系統,其邏輯地址編碼採用的地址位數是32位的,所提供的邏輯地址範圍是2^32,每一個邏輯地址對應一個位元組所以就是4GB。對於64位的作業系統理論上支援的最大記憶體是2的64次方個邏輯地址。

3。總結

計算機能夠使用的最大記憶體是作業系統和CPU共同決定的,如果在64位的CPU上安裝32位的作業系統依舊是支援4G。有的時候我們安裝了4G的記憶體條,但顯示可用的卻不到4G這是因為有的CPU採用了記憶體對映技術,在記憶體邏輯地址中一部分要劃分出來與BIOS ROM、CPU暫存器、I/O裝置這些部件的物理地址進行對映,在Windows中叫做硬體保留空間。