我们知道Win7 32位系统不能使用4GB内存的原因是原有芯片组4GB内存的局限。解决4GB内存限制的唯一办法就是扩展地址空间。
想要使得Win7 32位系统无法最大化使用4G内存,扩展地址空间就需要支持大于4GB内存的芯片组和“内存重映射”技术。
面对原有芯片组4GB内存的局限,Intel和NVIDIA早就开始未雨绸缪,他们对传统的32位地址总线进行了调整,将其升级到36位,并推出了一系列可以突破4GB内存限制的芯片组,这就是Intel的965系列以及975系列、NVIDIA的nForce 570/590以及680系列。
注:AMD的64位Socket AM2 CPU把内存控制器放到CPU中,提供40bit的物理地址总线,地址空间可达到1000GB。具体支持的地址空间和内存量取决于芯片组及主板的总线设计。
芯片组
从上面的芯片组参数来看,地址总线从32位提升到36位,地址空间达到64GB,支持安装8GB的物理内存。但由于IA32架构的规则是开机时必须从4GB的FFFF_FFFFh地址读取BIOS信息,尽管芯片组支持的地址空间变大了,且最大支持的物理内存容量也达到了8GB(或以上),但从本质上来说仍然不能解决MMIO地址占用4GB内存编址的问题。这要怎么办呢?
36位地址总线最大可以支持64GB的地址空间,这就为移动MMIO地址区提供了条件。现在解决这个问题的办法就是“内存重映射”技术——就是在IA32架构的基础上,把BIOS(ROM)和PCI/PCI-E设备占用的MMIO地址区段重新映射到内存条顶端地址以上 (例如4GB以上)的地址空间,从而把IA32架构规定的这一段操作系统不可使用的、位于4GB下面的MMIO地址空间回收给物理内存使用,保证物理内存编址的连续性。
BIOS必须支持“内存重映射”
“内存重映射”技术必须通过BIOS完成。所以BIOS必须具有支持内存重映射的功能模块,以便根据用户安装的内存容量来确定是否需要启用内存重映射功能。同时,在BIOS的设置选单中也要有“Memory Re-Mapping”的设置选项,使用4GB或者4GB以上内存的用户一定要将此项设置设为“Enable”
由此我们知道:由于iA32架构要求BIOS(ROM)芯片的地址,PCI、PCI-E存储器地址、APCI中断路由地址等必须占用从4GB开始以下的256M-1GB空间,这段MMIO地址区不能分配给内存条,4GB的内存条有256MB-1GB的容量不能编址而浪费。使用4GB或者以上的内存条,必须使用地址(编址)空间64GB的芯片组主板,内存重映射就是把被MMIO占用的地址移到内存条容量以上的地址空间,BIOS具有支持“内存重映射”功能的,设置项里有 Memory Remap Feature 选项,应该设置为Enable,这样就可以解决MMIO地址区占用了内存地址的问题。
【温馨提示】前面我们介绍了解决4GB问题的芯片组是支持64GB地址空间的,硬件芯片组上的限制解决了,但WIN7/XP等32bit操作系统还会受限于32位架构限制,即使是采用虚拟内存的方式,最多只能寻址到4GB。
Copyright ©2018-2023 www.958358.com 粤ICP备19111771号-7 增值电信业务经营许可证 粤B2-20231006