32位CPU的机器只能支持4GB的内存吗?
現在內存條都是白菜價的時代,很多人手中都是4G大內存了。但是普通的32位操作系統只能認3G多的內存,有很多都是給白白的浪費掉了。近來很多人說使用補丁,能使32位的系統支持4G大容量內存。事實果真如此嗎?
一,cpu的尋址能力
一般的cpu廠商標示的多少位cpu,其實說cpu的運算位寬。而CPU的位寬一般是以 min{ALU位寬、通用寄存器位寬、數據總線位寬}決定的!也就是說CPU由ALU、通用寄存器、數據總線三者之中最少的位寬決定!所以cpu的尋址能力和位寬是不能掛鉤的。
在AMD K8時代引入64位后,AMD的U尋址位就達到物理尋址40多位,而INTEL在p4 6系列之后物理尋址尋址能力亦達到40位,這大概是1TB,而如果是64位尋址應該是16EB,所以,以CPU位寬衡量CPU尋址能力是一個典型的錯誤!所以說,cpu是32位,所以支持內存為2^32=4G是錯誤的,傳媒中說64位cpu的最大好處是支持更大的內存也是錯誤的。
事實上CPU尋址能力因每種CPU設計不同而不同!就正如說32位的X86CPU,其實就在PentiumII是引入了36位的擴展PAE機制(Physical Address Extention)地址位來支持64G內存(源于當時服務器的問題),正常情況下也是用32位尋址,但通過設置相應的寄存器(沒記錯是cr4)的相應位激活PAE就可以支持64位尋址了!
二、大內存需要主板的支持
大家知道,Intel x86平臺中使用了名為內存映射I/O(MMIO)的技術。它是PCI規范的一部分,I/O設備被放置在內存空間而不是I/O空間。從處理器的角度看,內存映射I/O后系統設備訪問起來和內存一樣。這樣訪問AGP/PCI-E顯卡上的幀緩存,BIOS,PCI設備就可以使用讀寫內存一樣的匯編指令完成,簡化了程序設計的難度和接口的復雜性。
就像是一個大水缸,里面要裝一些泥沙,一些油,還要裝一些水。泥沙就是DOS兼容區,水就是系統各I/O設備,最上面的油就是可用的內存了。當配置一定的情況下,泥沙和水的比例也就一定了。那能加多少水呢?這個就要問問你的水缸有多大了。那怎么來看這個水缸的大小呢,就奧看主板芯片組的地址總線位數。例如 i945P芯片組只有32位地址總線,因此它對應的地址空間為4GB。表面上看似乎能夠支持4GB容納量的內存。但這4GB地址空間中,有1MB分配給了 DOS兼容存儲區,1MB-2GB分配給了內存訪問,而2GB-4GB的部分地址空間則優先分配給了顯卡幀緩存,PCI/PCI-E設備和BIOS區域,而這一區域也被Intel稱作內存映射I/O(MMIO)區域。
由于4GB芯片組地址空間的限制(32條地址線的限制),Intel 945系列及以前的芯片組、NVIDIA nForce Go C6100/C6510,ATI Xpress 1150M,這些芯片組無論如何都不能完全支持4GB內存。具體原因有三方面:其一是芯片組沒有設計剩余地址總線來供操作系統來調配;其二是不支持Memory Remap技術,而物理內存的編址必須是連續的,不能被割斷;其三是系統開機時必需先從4GB的頂端地址(FFFF_FFFFh)讀取BIOS數據, 這是IA32架構和4GB地址空間的局限。
三、操作系統的支持
除了芯片組方面的原因外,不同版本的操作系統對內存容量的支持也不盡相同,這就是我們所提到的造成4GB內存縮水的軟件原因。雖然Windows XP系統號稱最大可支持4GB容量的內存,但實際上即使在主板打開內存重映射技術的前提下,Windows XP系統仍然不能完全識別4GB容量的內存。
很多方法可以打開Windows操作系統的PAE功能,但是微軟為什么沒有主動開啟呢?
這個是有副作用的!通過PAE利用大內存32位服務器早做到了。但是如果某驅動程序無法正確處理4gb地址以上的內存,就會發生問題. 這也就是為什么ms要禁用pae的最初原因,因為桌面系統上確實存在不少有問題的驅動程序.
總上所述,32操作系統支持4G大容量內存是可行的,但是它受主板芯片組的制約,同時,開啟PAE,會影響穩定性。
轉載于:https://www.cnblogs.com/pxguoo/archive/2011/08/12/2136594.html
總結
以上是生活随笔為你收集整理的32位CPU的机器只能支持4GB的内存吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ATL-CComCreator(CCom
- 下一篇: 玩玩IronPython