两种 Mem remap

Posted on April 22, 2011

安装4G内存操作系统却只报告 3.2G 是4G时代困扰我们的一个问题。

解决办法需要3个条件齐备,缺一不可

1. 内存控制器支持 > 4G 寻址
2. 操作系统支持 PAE 或者直接64位系统
3. BIOS 支持 mem remap

** > 4G 寻址的内存控制器,intel 平台的话要求至少是 945 以上的芯片组。 AMD 平台的话,内存控制器内置于 CPU, 只要是支持 64 位的 AMD CPU 就可以了。

操作系统吧,不多解释。 32位的windows 使用 PAE 内核,或者64位 windows. Linux 也一样。 这里要注意的是,开了 PAE 的 32位 windows 7 也不能识别 > 4G 的内存 …… ,可以使用 ReadyFor4G 这个小工具修改内核。

这里是本文的重点。

mem remap 就是重新布局 PCI 设备地址和 DRAM 地址。使原本要重叠的地址错开,分布到 > 4G 的地址空间上。 这样才能使安装的 4G DRAM 可以被全部寻址。

其中,mem remap 分2种方式

1. 4G DRAM 获得连续的地址空间,PCI 设备地址被放置于 4G 地址之上
2. 4G DRAM 内存被分割。 PCI 设备地址被放置于 4G 以内,其余的 RAM 被放置到 4G 之上 

对于第一种方式最简单,最容易理解。 但是却有潜在的兼容性问题。 第一 许多 PCI 设备在设计的时候并不能寻址 > 4G 的内存,这样在进行 DMA 的时候非常容易出问题。 如果主板粗暴的将 PCI 地址放到 4G 后面,那么很多设计不良的设备就罢工了。 第二 32bit 的操作系统在此选项下将无法正常工作。因为 PCI 设备的地址都跑到 4G 外面去了。

第二种方式,给内存地址引入了一个“洞”。 对 32bit OS 和老旧的 PCI 设备提供了良好的兼容。 但是对内存引入的”洞” 确实给内存性能带来了潜在的影响。虽然通过 MTFR 情况还不会太坏。 但是,“洞” 怎么也不让人舒服啊!

Comments