我的内存谁也没动:4GB内存终极解迷 - 图文(2)

2019-04-22 22:08

现在是时候讲一讲主板BIOS中的Memory Remapping(也有的叫Memory Hole Remapping)了。实际上Memory Remapping就是在定义TOLUD的地址(华硕P5Q主板为例),这个功能并不会让任务管理器中显示4GB内存。在使用4GB内存(准确说应该是3.25GB以上内存)并将该功能开启时,TOLUD会被赋值D0000000h,这样MMIO就会被固定在3.25GB至4GB这个范围内,所以我们就能够看到3.25GB的物理内存显示了。

注:每款主板BIOS中的Memory Remapping项含义可能有所不同,其也可能是Memory Reclaim功能的开关。关于Memory Reclaim后文将详细讲述。

DFI的X58主板给出了一个很有意思的选项,名叫Memory LowGap。这个选项可以让用户自定义选择TOLUD的地址,或者说自定义选择PCI Memory Address Range的大小。该选项的范围为1024M至3072M,即PCI Memory Address Range的大小为1024MB-3072MB。一些顶级显卡的驱动程序会要求比较大的PCI Memory Address Range支持,例如NVIDIA的GTX280、GTX295之类。4GB内存用户甚至可以发现,当更换显卡后,设备管理器显示的物理内存大小竟然也会发生变化,甚至会降低到3GB以下的数值,这就是因为某些高阶显卡申请了更大的PCI Memory Address Range,使得内存的地址空间被进一步压缩,我们可以在设备管理器内看到地址分布的变化。

若PCI Memory Address Range小于驱动程序的需求,那么会导致驱动程序安装失败,这是DFI提供这个选项的原因。关于这个问题应该有两种可能:一是这些高阶GeForce显 卡本身确实需求更多的物理地址空间才能正常运作;二是NVIDIA的显卡驱动设计上对高位内存地 址考虑不周。不过这两种可能似乎都存在,而NVIDIA也已经正在驱动上慢慢改进这个问题。由于笔者并没有GTX295

这样的怪兽显卡可以做尝试,所以无 法了解DFI以外的主板是如何解决这个问题的,不过似乎多数主板BIOS都能够应对这个问题。但有一点可以肯定的是,在这种情况下一定要关闭Memory Remapping,因为0.75GB的PCI Memory Address Range基本是不够的。

当我们把DFI X58主板BIOS中的Memory LowGap调至一个巨额的数值之后,上图中的景象就出现了。由于PCI Memory Address Range的进一步扩张,我们发现连2GB的内存竟然也被“侵蚀”了好大一块,50000000h(1280MB)之后的地址就已经开始被PCI Memory Address Range占据。4GB的地址一共就那么多,PCI Memory Address Range占去了,那么内存自然就占不到了。难道内存就这么白费了?真是万恶的PCI Memory Address Range,万恶的MMIO,万恶的美帝国主义。。。。。。先不用着急,继续向下看,我们会把内存找回来的。 寻找失落的内存

让我们再来温习一下这张图,并再次明确一件事情:我们至今为止仍然还是在讲地址,并未谈及任何与内存存储空间相关的东东。PCI Memory Address Range占去的仅仅是物理地址,并不会去占据内存空间。每个内存颗 粒中的NAND gates本身并不会拥有地址,所有的地址都是由系统进行分配的。这一切的地址排布与操作系统是多少位并无太多关联,而操作系统方面对PCI Memory Address Range大小的影响主要来自于系统自身驱动以及设备驱动程序等方面的要求。因此我们可以发现在一些默认功能开启较少的系统中(如Win Sever),任务管理器显示的物理内存会大一些。因为此时的PCI Memory Address Range相对较小。从根本上来说,这是芯片组来自于兼容性方面的考量,必须让PCI Memory Address Range位于4GB以内。

由于兼容性的考量,即使使用了64bit操作系统和64bit处理器,PCI Memory Address Range仍然会被芯片组安置于4GB地址以内。所以当安装了大容量物理内存时,PCI Memory Address Range必然会在整个物理内存地址中形成一个Memory Hole。

小贴士:Memory Hole其实很好理解,就像上面的图中那样,Main Memory被分成了两段,而那段被占用的地址空间就像一个“洞”(Hole),所以称之为Hole。。。。。。上面图中PCI Memory Address Range就充当了这个Hole的角色,它并不占用内存存储空间,只是一个物理地址上的横亘,而系统会用其他手段将两段分开的内存地址连接起来。

既然PCI Memory Address Range必须占用这段地址空间,芯片组设计师们自然有其他的考量去解决物理内存地址的分配问题,毕竟会白白浪费内存的芯片组是不讨人喜欢的。既然4GB以下地址如此紧张,我们为何不将物理内存分配到更高的地址空间去呢?于是,TOM、 TOUUD寄存器以及RECLAIMBASE、RECLAIMLIMIT寄存器诞生了。

TOM即“Top of Memory”,其描述的是系统上所安装的物理内存的总量。TOM寄存器值并不见得代表最高内存地址,因为MMIO的地址分配要优先于TOM寄存器,所以内存地址中基本都会存在一些hole(PCI Memory Address Range),这显然会使得TOM寄存器的地址会更高一些。TOM寄存器之下将会有1-64MB内存被Manageability Engine占用(图中的EP-UMA),这是确确实实被占有的内存。

TOUUD即“Top of Upper Usable DRAM”,其描述的是可设定地址的物理内存总量。TOLUD寄存器会始终在4GB内存地址以下工作,但我们知道现在的主流芯片组都能安装高达16GB的内存,TOUUD就可以解决这个问题。TOUUD会在4GB以上地址定义物理内存范围,这个范围会从4GB到可用物理内存顶端(TOM)。经过鉴别的物理内存就可以直接被使用了。


我的内存谁也没动:4GB内存终极解迷 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2007美国大学生数学建模竞赛B题特等奖论文翻译

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: