分享

XP系统最大能支持多少内存

 思想年代 2012-04-23

在32bit操作系统下用好4GB物理内存

     最近内存价格一路下滑,直接导致很多朋友或打算增加内存或新装机采购4GB内存,CPU都支持64bit了,然而很多人并不愿意直接使用64bit操作系统,甚至有不少人装了64bit的Vista后又卸掉重新回到32bit时代。 重装完后问题来了,仔细查看系统内存怎么不是4GB,少了很多嘛!有些是3GB有些是3.25GB甚至有的少于3GB,究竟是XP不支持4GB内存还是买到的内存有问题?
    其实这个现象是由软件伙同硬件一并作案造成的极其恶劣的后果。
   
    首先说软件方面:主要是操作系统的责任。
    其实像XP 32bit这样的操作系统设计上是支持4GB内存的(32bit版本XP最高支持4GB内存),但是在整个IA32系统上位于4GB以下的内存地址在系统中被分为很多块(4GB到64GB同样被划成多块但不是这里需要讨论的);其中主要包括了系统可用内存及PCI设备内存地址范围,操作系统中显示内存不足4GB的主要原因来源于系统地址中PCI设备的内存地址范围,这个范围是以256为基础成倍设定的,该PCI设备地址范围包括了系统BIOS/芯片组/IO/PCI区域/VGA等等等等,这些设备都是通过实际内存地址来通信的,该类地址被定义为内存映射IO空间(MMIO),由于MMIO地址所占用的就是4GB系统地址中部分物理内存所对应的地址,此时被其占用的对应地址的原物理内存部分就完全无效了,这就是软件方面大多32bit Windows操作系统为什么在使用4GB内存时只能看见3到3.25GB的罪魁祸首。

    然后是硬件方面:在物理内存槽中镶着4GB内存的时候正好包含到系统地址中第一个PCI设备地址范围(MMIO),正如上面操作系统所要求的,对MMIO的寻址部分被内存控制路由到对应的设备上,而这些设备使用的地址正是4GB系统地址中对应物理内存地址的一部分
此时它所对应的应该是实际物理内存的那部分地址就没有了(被MMIO取代),附和操作系统来完成这一罪恶行径的正是内存控制器。

    那么失踪的内存还有没有办法捞回来呢?答案是肯定的,需要说明的是捞回这部分内存有前提条件,同样要从软硬件两方面下手

    软件方面:NT核心的操作系统所要完成的是对PAE的支持和4GB内存调整优化,而后支持PAE的操作系统会通过AWE使每个程序的虚地址范围可以突破2GB的限制最高到64GB(64bit操作系统暂无此类问题)。
    那么操作系统方面解决问题的关键在于支持PAE,Win2000开始微软的操作系统基本都支持PAE,4GB内存调整优化通过/3G启动参数来启用(本质上还是对PAE的支持)

    硬件方面:要捞回这部分内存就是要将这些被MMIO占用的系统地址重新被路由到对应的内存上,为了解决这个问题引入了一种叫内存重映射(Memory Remapping)的技术,Memory Remapping技术最早是在服务器上使用的,在内存重映射启动后CPU要使用这部分被MMIO占用的物理内存时会通过PAE向高于4GB的空间寻址,此时CPU自身并不具备鉴别哪些是MMIO哪些是重映射的部分的能力,需要内存控制器将其重新转换到实际物理内存上,由此才能捞回那部分失踪的内存。
    这个累活完全是属于内存控制器独享的(自作自受)。

    那么只要你使用的是Win2000之后的操作系统,能否捞回它们的关键就在于是否支持内存重映射技术(Memory Remapping),换句话来说,如果你用的是Intel系统那就需要确定你主板北的桥芯片是否支持Memory Remapping(Intel目前将内存控制器集成在北桥芯片中),如果你用的是AMD的系统的话那么就需要先确定你的CPU是否支持Memory Remapping(AMD目前设计的内存控制器集成在CPU中),从掌握的资料来看Intel支持该技术的桌面芯片组是i955X之后的所有支持8GB内存的型号,AMD支持该技术的桌面CPU为Athlon 64(不含闪龙)以上支持8GB内存的型号,同时我们必须在BIOS内打开Memory Remapping的选项才能正式开始捞回失踪的内存。
    至此,内存打捞工作告一段落。

    值得留意的是目前一些主板并不独立提供提供Memory Remapping开关但在其出厂时都已经被设置为打开了,还需要注意的是一些中低端主板产品为了尽可能降低成本而没有设置该功能,第三方芯片组中nVidia/ATI的高端双卡系统具备该功能。
    ULI和VIA芯片组不详,在支持和打开Memory Remapping技术的32bit操作系统上通常能使用到3.5GB以上的物理内存(仍然不会完全显示出4GB的)

    虽然说Memory Remapping就是专门用来解决那些系统地址被设计在4GB内的操作系统中的内存丢失现象,但究其原因还是因为大多32bit操作系统无法完全利用4GB物理内存和其支持的系统内存最高只有4GB有关,同样的设计也出现在XP各个32bit版本/Windows 2000各版本(高级服务器版本除外)/windows 2003标准版/Vista各个32bit版本中,XP 64bit和Vista各个64bit版本/Windows 2003除了标准版外/Windows 2000只有高级服务器版无此问题。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多