找回密码
 注册
快捷导航
查看: 5909|回复: 12

【转帖】认识物理内存4G地址空间的局限

[复制链接] |自动提醒
阅读字号:

2164

回帖

2

积分

4920

资产值

初级会员 Rank: 1

注册时间
2003-2-13
铜牌荣誉勋章(注册8年以上会员)
发表于 2010-4-26 10:06:48| 字数 3,245| - 中国–广东–汕头 电信 | 显示全部楼层 |阅读模式
http://blog.chinaunix.net/u/1595/showart_1976044.html

识别到4G内存满足的条件:
1.需要Cpu EM64T及64bit OS的支持。
2.主板芯片组的支持。
在945芯片组之前(包括945)的都是32bit的芯片组,已经没有空间来映射地址,扩展内存寻址,所以就算满足cpu,os两个条件也无法使用全部4G内存。比如370,M65,M90,在945之后芯片组为36位,BIOS会自动映射。所以满足cpu,os条件后就可以正常识别 4G内存
一、4GB地址空间的局限

首先我们还必须要先了解两个概念:

       其一是“物理内存”:大家常说的物理内存就是指安装在主板上的内存条,其实不然,在计算机的系统中,物理内存不仅包括装在主板上的内存条(RAM),还应该包括主板BIOS 芯片的ROM,显卡上的显存(RAM)和BIOS(ROM),以及各种PCI、PCI-E设备上的RAM和ROM。

其二是“地址空间”:地址空间就是对物理内存编码(地址编码)的范围。

       所谓编码就是对每一个物理存储单元(一个字节)分配一个唯一的地址号码,这个过程又叫做“编址”或者“地址映射”。这个过程就好像在日常生活中我们给每家每户分配一个地址门牌号。与编码相对应的是“寻址”过程——分配一个地址号码给一个存储单元的目的是为了便于找到它,完成数据的读写,这就是“寻址”,因此地址空间有时候又被称作“寻址空间”。系统不仅要给主板上的内存条编址,还要给上述的其它物理内存编址;它们都被编在同一个地址空间内,编址后的物理内存就可以被系统资源使用或占用。

      从Pentium Pro处理器开始,CPU的地址总线已经升级到36位,寻址能力达到64GB,按理说CPU支持4GB的内存是没有问题的;因此,芯片组(北桥—MCH)地址总线的数量就成了决定物理内存地址空间大小的决定性因素。在Intel 945系列和945以前的芯片组,nForce 550系列和550以前的芯片组都只有32条地址线,为系统提供4GB的地址空间,即最高可以安装4GB的内存条。

       虽然可以安装4GB内存条,但这4GB的内存空间不能全部纷配给内存,因为从4GB空间的顶端地址(FFFF_FFFFh)开始向下要有400MB- 1GB的地址空间要分配给主板上的其他物理内存。

       我们可以看到4GB的地址空间可以分为两大部分,0MB~物理内存顶端的地址分配给主板上安装的物理内存,4GB到物理内存顶端的地址分配给 BIOS(ROM)和PCI/PCI-E设备的存储器。由于这些存储器基本上是用于系统的输入和输出,所以Intel又把这段地址空间称之为“MMIO” (Memory-Mapped I/O—I/O存储器映射)。当系统安装3GB以下的内存时,MMIO区域不会与物理内存条的地址空间相重叠,操作系统可以访问几乎全部的物理内存,而操作系统属性里显示的物理内存基本接近实际内存的容量。

       而当系统安装上4GB内存时,问题出现了。由于位于4GB下面的部分地址空间要优先分配给MMIO,内存条上对应的这段区间就得不到编址,所以操作系统就不能使用。

       严格意义上来说,即使安装2GB内存时操作系统也不可能使用到全部的内存容量,诸如传统DOS的UMA区就有部分被占用的地址空间,但因为被占用的容量相比之下实在太少,所以就被很多读者忽略了。MMIO占用的地址空间在256MB~1GB之间,这么大的“浪费”大家肯定不能“熟视无睹”。

       因为受4GB芯片组地址空间的限制(32条地址线的限制),Intel 945系列及以前的芯片组、NVIDIA nForce 550及以前的芯片组都没有办法绕过这个限制。具体原因有三方面:其一是芯片组没有剩余空间分配来供操作系统来调配;其二是物理内存的编址必须是连续的,不能被割断;其三是系统开机时必需先从4GB的顶端地址(FFFF_FFFFh)读取BIOS数据, 这是IA32架构和4GB地址空间的局限。

       所以建议使用这些芯片组主板的用户不要安装4GB的内存,这样会有部分内存容量不能被操作系统所使用。而解决4GB 内存限制的唯一办法就是扩展地址空间。

二、支持大于4GB内存的芯片组和“内存重映射”技术:

       面对原有芯片组4GB内存的局限,Intel和NVIDIA早就开始未雨绸缪,他们对传统的32位地址总线进行了调整,将其升级到36位,并推出了一系列可以突破4GB内存限制的芯片组,这就是Intel的965系列以及975系列、NVIDIA的nForce 570/590以及680系列。

       注:AMD的64位Socket AM2 CPU把内存控制器放到CPU中,提供40bit的物理地址总线,地址空间可达到1000GB。具体支持的地址空间和内存量取决于芯片组及主板的总线设计。

       从上面的芯片组参数来看,地址总线从32位提升到36位,地址空间达到64GB,支持安装8GB的物理内存。但由于IA32架构的规则是开机时必须从 4GB的FFFF_FFFFh地址读取BIOS信息,尽管芯片组支持的地址空间变大了,且最大支持的物理内存容量也达到了8GB(或以上),但从本质上来说仍然不能解决MMIO地址占用4GB内存编址的问题。这要怎么办呢?

       36位地址总线最大可以支持64GB的地址空间,这就为移动MMIO地址区提供了条件。现在解决这个问题的办法就是“内存重映射”技术——就是在IA32 架构的基础上,把BIOS(ROM)和PCI/PCI-E设备占用的MMIO地址区段重新映射到内存条顶端地址以上 (例如4GB以上)的地址空间,从而把IA32架构规定的这一段操作系统不可使用的、位于4GB下面的MMIO地址空间回收给物理内存使用,保证物理内存编址的连续性。

三、BIOS必须支持“内存重映射”:

   “内存重映射”技术必须通过BIOS完成。所以BIOS必须具有支持内存重映射的功能模块,以便根据用户安装的内存容量来确定是否需要启用内存重映射功能。同时,在BIOS的设置选单中也要有“Memory Re-Mapping”的设置选项,使用4GB或者4GB以上内存的用户一定要将此项设置设为“Enable”。

四、解决4GB内存问题还需要操作系统支持:

       我们常使用的桌面操作系统是32位的,支持4GB的地址空间。前面我们介绍了解决4GB问题的芯片组是支持64GB地址空间的,在这样的芯片组主板上安装 32位的操作系统,就只能使用4GB的地址空间,因此安装4GB内存不能使用仅支持4GB地址空间的32位的操作系统。应该使用支持大于4GB地址空间的 32位操作系统或64位的操作系统。

五、小结

1、由于iA32架构要求BIOS(ROM)芯片的地址, PCI、PCI-E存储器地址、APCI中断路由地址等必须占用从4GB开始以下的256M-1GB空间。这段MMIO地址区不能分配给内存条。4GB的内存条有256MB-1GB的容量不能编址而浪费。
2、使用4GB或者以上的内存条,必须使用地址(编址)空间64GB的芯片组主板。
3、内存重映射就是把被MMIO占用的地址移到内存条容量以上的地址空间。
4、BIOS应具有支持“内存重映射”功能,设置项里有 Memory Remap Feature 选项,并设置为Enable。
5、必须安装寻址空间大于4GB的操作系统。比如Windows 2000高级服务器版,以及64位操作系统。
6、所有地址空间为4GB的芯片组(Intel945和nForce550之前的),和32位操作系统均不能利用“内存重映射”技术解决4GB内存问题。

       看到这里,相信大家应该知道,4G内存不只需要主板bios支持,还需要这个操作系统支持,64位本身就支持超过4G,所以配合支持4G的芯片组就可以识别4G或者以上。但是32位系统,则需要系统本身可以拓展内存地址空间,然后和支持4G的芯片组才能识别4G。对于一般的桌面操作系统而言,是没有拓展功能的,如xp、Vista的 32位版本。但是2003这类服务器,需要消耗如此巨大的内存,所以拥有拓展功能。
焚书坑儒亡有日,天赋匹夫岂无权
教育下一代:热爱自由,独立思考

7082

回帖

3

积分

2万

资产值

初级会员 Rank: 1

注册时间
2003-11-18
银牌荣誉勋章(注册10年以上会员)
发表于 2010-4-26 10:32:27| 字数 24| - 中国–辽宁–大连 联通 | 显示全部楼层
学习了!确定945芯片组不支持4GB 幸好没冲动!
回复 支持 反对

使用道具 举报

432

回帖

0

积分

510

资产值

入门会员 Rank: 1

注册时间
2006-10-22
发表于 2010-4-26 10:43:47| 字数 35| - 中国–广东–汕头 电信 | 显示全部楼层
照这么说z61t 5600 945GM 装个64位的系统也认不到4G内存啦?
回复 支持 反对

使用道具 举报

3316

回帖

50

积分

7293

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-3-14
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2010-4-26 14:50:28| 字数 569| - 中国–上海–上海 电信(外高桥)IDC机房 | 显示全部楼层
把楼主的转贴内容,结合下面微软官方KB一起看,效果更好。
http://support.microsoft.com/kb/929605

芯片集必须至少支持 8 GB 地址空间。具有此功能的芯片集包括:
Intel 975X
Intel P965
采用 Socket 775 插槽的 Intel 955X
支持 AMD 处理器的芯片集,AMD 处理器采用 Socket F、Socket 940、Socket 939 或 Socket AM2 插槽。这些芯片集包括任意 AMD 插槽和 CPU 的组合,其中内存控制器位于 CPU 内。

CPU 必须支持 x64 指令集。AMD64 CPU 和 Intel EM64T CPU 支持此指令集。

BIOS 必须支持内存重新映射功能。利用内存重新映射功能,可以将先前被外围组件互连 (PCI) 配置空间覆盖的系统内存段重新映射到 4 GB 地址行以上。必须在计算机上的 BIOS 配置实用程序中启用该功能。有关如何启用此功能的说明,请查看计算机产品文档。大多数面向消费者的计算机可能不支持内存重新映射功能。在产品文档或 BIOS 配置实用程序中未使用与此功能有关的任何标准术语。因此,您可能必须阅读有关各种可用 BIOS 配置设置的说明,以确定是否有任何 BIOS 设置启用了内存重新映射功能。

必须使用 Windows Vista x64(64 位)版本(或以上)。

请与计算机供应商联系以确定您的计算机是否符合上述要求。
thinking...
回复 支持 反对

使用道具 举报

25

回帖

0

积分

18

资产值

入门会员 Rank: 1

注册时间
2007-3-12
发表于 2010-4-26 16:23:59| 字数 15| - 中国–上海–上海 电信 | 显示全部楼层
我的X61明明可以认到4g嘛!
回复 支持 反对

使用道具 举报

3316

回帖

50

积分

7293

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-3-14
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2010-4-26 17:28:28| 字数 75| - 中国–上海–上海 电信(外高桥)IDC机房 | 显示全部楼层
QUOTE:
Posted by su43 on 2010-4-26 16:23
我的X61明明可以认到4g嘛!


X61(965芯片组)满足上述四个条件,当然可以了。
thinking...
回复 支持 反对

使用道具 举报

2427

回帖

32

积分

1万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2007-7-4
银牌荣誉勋章(注册10年以上会员)
发表于 2010-4-26 22:30:33| 字数 8| - 中国–广东–深圳 电信 | 显示全部楼层
可惜T60用不了
祝福2019!!!加油!!!
回复 支持 反对

使用道具 举报

511

回帖

0

积分

158

资产值

入门会员 Rank: 1

注册时间
2008-2-26
发表于 2010-4-27 03:01:46| 字数 41| - 中国–上海–上海–杨浦区 电信 | 显示全部楼层
X60 装了4G 只认 3G 呵呵~~RAMDISK 都认不到~~~早点看到帖子就省100了
回复 支持 反对

使用道具 举报

113

回帖

7

积分

158

资产值

高级会员 Rank: 2Rank: 2

注册时间
2007-6-28
发表于 2010-5-4 20:15:44| 字数 5| - 中国–湖南–长沙 电信 | 显示全部楼层
技术贴
收藏
回复 支持 反对

使用道具 举报

2万

回帖

216

积分

1万

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2007-7-26
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2010-5-5 10:27:22| 字数 6| - 中国–天津–天津 电信/电信/IDC机房 | 显示全部楼层
好贴!支持!
WorkPad C3 C505
ThinkPad (230cs) 390E  Transnote (x30) x32-new  x60 x61 x61s x61t x220t t430s  w530(i7-3940XM) P71
回复 支持 反对

使用道具 举报

453

回帖

7

积分

1514

资产值

高级会员 Rank: 2Rank: 2

注册时间
2005-10-26
发表于 2010-5-5 13:47:15| 字数 42| - 中国–北京–北京 电信 | 显示全部楼层
x200是什么芯片组?在64位方面是什么情况?BIOS中似乎没有内存重映射的开关~~
X200 7459 P57 [T9550 2.66G/4G/320G(7.2k)]
X201 I7-620  Intel730-480G
回复 支持 反对

使用道具 举报

155

回帖

0

积分

199

资产值

入门会员 Rank: 1

注册时间
2007-9-6
发表于 2010-7-17 16:40:44| 字数 26| - 中国–重庆–重庆 联通 | 显示全部楼层
我还打算买个2*2G上64位呢,学习了,幸好来看了下
T7200, 2048MB RAM, 250GB 7200rpm HD, 14.1in 1400x1050 LCD, 128MB ATI X1400
回复 支持 反对

使用道具 举报

585

回帖

21

积分

1万

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2010-7-16
发表于 2010-7-18 15:13:49| 字数 7| - 中国–福建–漳州 电信 | 显示全部楼层
学习了。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-1-21 00:00 , Processed in 0.155568 second(s), 50 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部