无忧启动论坛

标题: 4GB内存问题 [打印本页]

作者: sdshi    时间: 2012-3-6 11:43
标题: 4GB内存问题
转载
随着单条2GB内存的普及,配置4GB内存的用户越来越多。在32位操作系统下,不能使用全部4GB内存,系统属性显示出安装内存4GB,可用内存3GB。很多用户为此提出疑问。为何不能使用4GB内存?如何解决?
本文就这个问题做详细的解说。
一、计算机的内部存储器不单单是插在主板上的内存条
一提起内存,都认为内存就是插在主板上的内存条,其实计算机的内部存储器不单单是插在主板上的内存条,还有其他内存,比如存放BIOS的EEPROM芯片,芯片组内部的各种寄存器、输入/输出设备使用的地址寄存器和数据寄存器、显卡的显存、CPU内部的寄存器、缓存等等。这些内存预先安装在主板上,或者在芯片组、CPU内,不为用户熟悉罢了。

二、计算机系统要对所有的内部存储器编地址
这些内部存储器都是存放数据或地址的,CPU要在这些内存存储器存放数据/地址,或者读取数据/地址,就要找到这些内部存储器,为了能够寻找他们,就必须对这些内存存储器编上地址。就像我们现实生活中的对房屋编的邮政地址一样。
城市的邮政地址必须要有道路或通道连接这些房屋,以便人能够进出,计算机的内存编址也需要电子线路连通。
计算机的内存编址与邮政编址不同的就是地址总量在一个时期,或者在一种计算机架构中是固定的,不能随意增减。第二个不同之处就是除内存条的地址外,系统内部的其他地址是不能随意变动的。第三个不同之处就是考虑到计算机系统配置的发展变化,要保留一些地址供扩展用。

三、32位操作系统只能给4GB的内存编地址
计算机一般有2种地址系统,一种是硬件的地址系统,这是与硬件的地址总线密切相关的。比如32位的地址总线、36位的地址总线、40位的地址总线、64位的地址总线。地址总线与CPU、内存控制器、芯片组的设计密切相关。这些地址都是真实的物理地址。
还有一种是操作系统的地址系统,计算机用户不能直接使用计算机硬件的物理地址,是通过操作系统的逻辑地址系统使用计算机的内部存储器的。
操作系统的地址系统将对计算机的硬件地址系统进行管理,并产生一个地址对照表,使操作系统的地址与硬件地址一一对应。
操作系统的地址系统与操作系统设计时的规定有关,比如32位的操作系统,地址编码是32位的,地址代码总量是4GB。64位操作系统的地址编码是64位的,其地址量是2的64次方。实际上现在64位操作系统的地址码用36位,地址量是64GB。这也足够计算机发展几十年。也就是说32位的操作系统智能管理4GB的内部存储器,这可包括内存条、以及BIOS ROM、PCI内存等等。64位操作系统可以管理64GB的内存。

从上面介绍的32位操作系统的内存编址可以看明白这样2点:
1、32位操作系统只能给4GB的内存编址。
2、去掉留给BIOSROM、APCI内存、PCI内存的地址代码,分配给内存条的地址代码数量就不足4GB了。这就是主板安装4GB内存,使用32位操作系统,显示可用内存不到4GB的原因。并不是内存少了,是地址代码不够了。

四、为何同是32位操作系统,显示的可用内存不一样
从第三段的说明已经知道,大约有750MB-1GB的地址分配给系统内部的存储器(BIOSROM、APIC内存、PCI内存),此外还要保留一部分地址。这些地址总量是不固定的。要看芯片组的设计,比如支持4个硬盘的和支持支持8个硬盘的,PCI内存就不一样,8个硬盘的占用地址就多一些。所以不同的芯片组,在32位操作系统下,显示的可用内存多少不一样。
即使相同的芯片组,由于BIOS工程师的做法不同,也会显示不同数量的可用内存。因为从整体系统来说,AMI的原始BIOS 按规定给系统内部的存储器(BIOSROM、APIC内存、PCI内存)留足了地址(P55一般是1GB),实际上用户不可能连接了所有的PCI设备,比如硬盘,不会连接6个。这样BIOS工程师就修改BIOS,把暂时不用的地址代码收回来,分配给内存条,这样32位操作系统就会显示较多一点可用内存。比如P55主板,标准AMI BIOS是3GB可用内存,经过“修改”的BIOS可以显示3.25GB可用内存,这就是收回250MB的内存地址给内存条。
这250MB的内存地址,对系统性能的影响微乎其微。但是可以满足部分用户的心理安慰,以为多了250MB内存可用了。
其实,操作系统根本看不上这250MB,它看中的是虚拟内存,也叫页面文件,这个虚拟内存的数量是内存条的2-4倍。
因此,32位操作系统下安装4GB内存,最好用RAMDISK软件,把1GB的内存设置为RAM磁盘,然后把这个RAM磁盘用于Windows的虚拟内存(页面文件)。这样比从系统内存挤出250MB的性能提高更大,而且真正使用了全部4GB内存条。

五、64位操作系统的内存地址重映射
现在的CPU、芯片组都是集合了32位/64位二种架构,可以使用32位操作系统,也可以使用64位操作系统。这就要求硬件的地址编码系统兼容32位和64位架构。“内存地址重映射”就是解决兼容的方案。
32位系统的地总线是32位,最大地址量是4GB,64位系统理论上是64位地址总线,实际上采用40位地址总线,地址范围是1024GB。但是内存控制器是实实在在的硬件,要考虑当前的内存条容量和成本,所以内存控制器一般用是每通道33位,支持8GB内存条,双通道支持16GB内存条。从64位操作系统来讲,一般是36位地址编码,地址量是64GB。
在目前的32位的X86和64位的X64共存于同一架构的计算机体系中,就要有一种兼容32位和64位的地址转换系统,这就是“内存地址重映射”。也就是说,转成64位系统时,通过“内存地址重映射”解决支持4GB以上的内存问题。
“内存地址重映射”其实就是把32位地址体系分配给系统内部存储器(BIOSROM、APIC内存、PCI内存)的这一段地址移到4GB以上的空间,因为64位系统的地址编码空间是64GB,地址量是64GB。注意是逻辑地址,不是实际的内存,然后把原来分配给系统内部存储器(BIOSROM、APIC内存、PCI内存)的这一段地址收回,重新分配给主板上安装的内存条。
“内存地址重映射”的原理如下图

从“内存地址重映射”的原理可以看出“内存地址重映射”是给64位系统用的,不是给32位系统用的。也就是说用户使用64位操作系统时需要启用“内存地址重映射”,使用32位操作系统可以关闭“内存地址重映射”。
开启/关闭“内存地址重映射”这个任务交给了BIOS,最开始BIOS公示“内存地址重映射”选项,用户在使用32位操作系统时关闭“内存地址映射”,使用64位操作系统时开启“内存地址重映射”。不过现在的BIOS不再把这个选项公开显示,默认就是开启,并自动依据用户安装的操作系统自动开启/关闭“内存地址重映射”。只有不能自动设置的BIOS才公示这个选项,让用户自己去设定。如果用户把“内存地址重映射”关闭,安装64位操作系统就不能支持4GB以上的内存
作者: pla    时间: 2012-3-6 13:39
这个技术贴讲得好,没道理没人顶啊
作者: renchmin    时间: 2012-3-6 14:04
我来支持楼主了,这个是扫盲贴啊。
作者: bluemoon    时间: 2012-3-6 14:31
谢谢楼主,长了见识!
作者: xiaoxiao86    时间: 2012-3-6 15:20
64位的系统就可以搞定吧!
作者: 2012fffff    时间: 2012-3-12 07:39
支持楼主,明白了.
















电子词典哪个好
作者: 2012ctiger1974    时间: 2012-3-12 13:12
是个扫盲贴,多谢。
作者: 2010qiankun    时间: 2012-3-12 14:04
不错额,可以让好多装机人员,了解一下,更好为客服解答。




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3