理論上:32位=2^32B = 4 * 2^30B = 4GB,這是 32 位下單進程內存上限
目前(2015年5月),Intel的32位架構下,可使用的地址線是36個,可使用的最大物理地址是2^36B,摺合64GB,可用的地址空間是4GB。
64位架構下,地址線是46個,所以最大的物理地址是2^46B,摺合64TB,可用地址空間也是這麼大(目前爲止):
爲什麼32位Windows中實際可用內存少於4G:
雖然物理地址有4G,但CPU如果要訪問你的顯卡上的顯存,就必須把物理地址空間的一部分用於標識顯存,這種技術被稱爲memory-mapped I/O,這樣可以讓CPU操作顯存像操作內存一樣。
在Windows的設備管理器裏,查看顯卡的屬性頁裏的“資源”,可以看到內存映射的地址範圍,實際上不管32位還是64位,都需要佔用一部分地址空間,32位Windows只有4G的地址空間,被顯存佔去了一部分,所以可用的地址空間就少於4G了
實際上不僅僅是顯存,你電腦上的PCI控制器,各種網卡、聲卡、USB控制器等等都需要佔用一定的物理內存,所以最終的後果就是可用的物理地址範圍變得特別少,最少可能只有1.99GB,這種限制在32位Windows上是不可改變的。
所以,32位WIN7的可用內存才變得那麼少,解決問題的唯一途徑是換64位系統,或者Linux。
CPU | CPU Address Bus Size | Maximum RAM |
8086 | 20 bit | 1MB |
8088 | 20 bit | 1MB |
80286 | 24 bit | 16MB |
80386SX | 24 bit | 16MB |
80386DX | 32 bit | 4GB |
80486SX | 32 bit | 4GB |
80486DX | 32 bit | 4GB |
Pentium I | 32 bit | 4GB |
K6 | 32 bit | 4GB |
Duron | 32 bit | 4GB |
Athlon | 32 bit | 4GB |
Athlon XP | 32 bit | 4GB |
Celeron | 36 bit | 64GB |
Pentium Pro | 36 bit | 64GB |
Pentium II | 36 bit | 64GB |
Pentium III | 36 bit | 64GB |
Pentium 4 | 36 bit | 64GB |
Athlon | 40 bit | 1TB |
Athlon-64 | 40 bit | 1TB |
Athlon-64 FX | 40 bit | 1TB |
Opteron | 40 bit | 1TB |
Itanium | 44 bit | 16TB |
Itanium 2 | 44 bit | 16TB |
PAE確實可以讓x86硬件支持到能夠訪問64G的地址空間,Windows的內核也支持使用多達64G的物理地址空間,但是微軟偏偏要對各個版本的Windows的物理內存上限作出限制,下面是XP和Win7的物理內存上限
參考:https://blog.csdn.net/w892824196/article/details/80558114
https://bbs.pediy.com/thread-137830.htm