破解内存容量的“缩水”之谜

来自微型计算机2007年第十期

总结来说,要让4G内存被支持,需要如下条件: 

1. 由于IA32架构的要求,BIOS(ROM)芯片的地址、PCI/PCI-E存储器地址以及PCI中断路由地址等必须占用从4GB开始以下的256M~1GB空间。这段MMIO地址区不能分配给内存条,这就导致4GB内存中会有256MB~1GB的容量因不能编址而浪费。 
2. 如果要使用4GB以上的内存,必须使用地址(编址)空间64GB的芯片组主板(见表2)。 
3. 内存重映射就是把被MMIO占用的地址移到内存条容量以上的地址空间,BIOS中应有开启对应的“Memory Remap Feature”选项。 
4. 必须安装寻址空间大于4GB的操作系统,如Windows 2000高级服务器版本或者64bit的操作系统才能支持4GB以上的内存。 
5. 只有32b i t 地址总线的芯片组(Intel 945和NVIDIA nForce 550以前的芯片组)不能通过“内存重映射”技术来解决4GB内存限制的问题。


全文:
  很多已经购买了4GB内存的硬件玩家在实际使用中却遭遇到了一个非常尴尬的问题,那就是明明安装了4条1GB内存或者2条2GB内存,为什么在操作系统中 能够使用的内存却只有3.7G甚至3GB?最初不少玩家都认为是内存和主板不兼容或存在质量问题,可是经过三番五次更换硬件后,内存容量“缩水”的情况丝 毫没有得到改变,这究竟是什么原因呢?
  其实问题的根源并非内存和主板的硬件原因,而是这些用户在使用4GB内存之前没有充分了解使用 4GB内存所需要的软硬件支持,更没有对自己的配置进行认真评估,只是盲目地认为使用4GB内存能够带来更好的系统性能和游戏性能。事实上,尽管目前很多 主板和主流操作系统都宣称能够支持4GB内存,但使用起来却远不如大家想象的那样简单。那么,究竟哪些主板和操作系统能够支持4GB内存?与2GB内存相 比,4GB内存对于提高配置的游戏性能是否有帮助?在接下来的文章中,笔者将为大家详细回答这些问题。
  导致4GB内存缩水的硬件原因 
   简单说来,造成4GB内存缩水的原因主要可以归结为硬件和软件两种,其中硬件原因指的就是主板。在很多人的印象中,主板能够支持多大容量的内存是由主板 上的内存槽数量决定的,这样的想法虽然有一定的逻辑但并不正确。事实上,真正决定主板支持内存容量大小的因素是芯片组可支配地址空间大小。这里所说的地址 空间就是系统中所有存储器的编码范围,这里面既包括有内存编码,也包括了主板BIOS、显卡BIOS、显存以及其他PCI设备的存储器编码。
   以i945P主板为例,i945P芯片组只有32位地址总线,因此它对应的地址空间为4GB。表面上看似乎能够支持4GB容纳量的内存。但从下表中我们 可以看到,芯片组支持的4GB地址空间中,有1MB分配给了DOS兼容存储区,1MB-2GB分配给了内存,而2GB-4GB的地址空间则优先分配给了 PCI/PCI-E设备和BIOS、闪存区域,而这一区域也被Intel称作MMIO(存储器映射)区域。那么,内存容量缩水与地址空间、MMIO区域又 有什么联系吗?
  在i945P芯片组4GB的地址空间中,DOS兼容存储区占用的空间较小,对内存容量不会造成大的影响,但MMIO区 域由于占用了大量的地址空间,势必会影响实际内存的使用——当用户使用3GB以下容量的内存时,内存地址与MMIO区域基本不会发生重叠,不会影响内存的 正常使用;但用户使用4GB内存时,势必会与MMIO区域重叠,而此时系统会优先将空间分配给MMIO区域,那么重叠部分的内存将无法被系统正确识别,进 而造成内存容量丢失。
  说得再简单一点,假设芯片组的地址空间是一个4L的水缸,而内存、DOS兼容存储区和MMIO区域则是一定体积的水。只有当水的体积小于或等于4L时,这些水才能够被完全容纳在水缸中,一旦水的体积之和超过了4L的容积,那么溢出部分自然不能被利用。由于i945系列以及以前推出的Intel平台芯片组仅支持4GB地址空间,因此这些芯片组都不能顺利支持4GB内存。而在Intel平台上,nForce 550及以前推出的芯片组同样有类似的问题,不能解除4GB地址空间的限制。
   经过以上介绍,相信大家已经基本了解了造成4GB内存缩水的硬件原因,那么,目前有哪些芯片组是能够顺利支持4GB内存的呢?在Intel平台上, Intel 965/975以及新推出的3系列芯片组都具有36位地址总线,地址空间达到了64GB,最大可支持8GB容量内存。而在AMD平台上, nForce 570/590以上级别的芯片组同样支持64GB地址空间和最大8GB内存。需要注意的是,虽然从规格上看这些芯片组似乎能够顺利支持 4GB内存,但事实上在默认情况下,芯片组仍然不能解决MMIO区域占用系统内存的问题。这就需要借助到高端服务器领域的 Memory Remapping(内存重映射)技术。
  比如当用户在965P主板上使用4GB内存时,位于4GB地址以下的MMIO 区域仍然会占用部分内存空间,此时4GB的内存容量无法得到充分利用。通过内存重映射技术,我们可以将MMIO区域重新影射到4GB地址以上的空间,此时 4GB以下地址将完全留给内存使用,保证所有内存都能够被系统正确识别。那么,我们应该如何开启内存重映射技术呢?一般说来,基于 Intel 965/975、nForce 570/590及以上级别芯片组的主板在BIOS中都提供了类似 “Memory Remapping Feature”这样的选项,大家只需设置为“Enable”即可启用此项功能。
  导致4GB内存缩水的软件原因
   除了芯片组方面的原因外,不同版本的操作系统对内存容量的支持也不尽相同,这就是我们所提到的造成4GB内存缩水的软件原因。从下表中我们可以看到,虽 然Windows XP系统号称最大可支持4GB容量的内存,但实际上即使在主板打开内存重映射技术的前提下,Windows XP系统仍然不能完全识别 4GB容量的内存。毕竟Windows XP只是面向普通用户的操作系统,对服务器领域的内存重映射技术支持并不完善。只有当用户使用类似 Windows Server 2003这类面向高端服务器平台的32位系统由或者64位的Windows XP/Vista系统时,4GB内存的限制才 会被完全解除。

你可能感兴趣的:(windows,服务器,dos,存储,破解,平台)