认识物理内存4G地址空间的局限

认识物理内存4G地址空间的局限--转载ios


识别到4G内存知足的条件:
1.
须要Cpu EM64T64bit OS的支持。
2.
主板芯片组的支持。
945芯片组以前(包括945)的都是32bit的芯片组,已经没有空间来映射地址,扩展内存寻址,因此就算知足cpu,os两个条件也没法使用所有4G内存。好比370M65,M90,在945以后芯片组为36位,BIOS会自动映射。因此知足cpu,os条件后就能够正常识别4G内存服务器

1、4GB地址空间的局限

首先咱们还必需要先了解两个概念:

其一是物理内存:你们常说的物理内存就是指安装在主板上的内存条,其实否则,在计算机的系统中,物理内存不只包括装在主板上的内存条(RAM),还应该包括主板BIOS芯片的ROM,显卡上的显存(RAM)BIOS(ROM),以及各类PCIPCI-E设备上的RAMROM

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

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

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内存时操做系统也不可能使用到所有的内存容量,诸如传统DOSUMA区就有部分被占用的地址空间,但由于被占用的容量相比之下实在太少,因此就被不少读者忽略了。MMIO占用的地址空间在256MB1GB之间,这么大的浪费你们确定不能熟视无睹

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

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

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

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

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

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

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

3、BIOS必须支持内存重映射

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

4、解决4GB内存问题还须要操做系统支持:

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

5、小结

1、因为iA32架构要求BIOS(ROM)芯片的地址, PCIPCI-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的芯片组(Intel945nForce550以前的),和32位操做系统均不能利用内存重映射技术解决4GB内存问题。

看到这里,相信你们应该知道,4G内存不仅须要主板bios支持,还须要这个操做系统支持,64位自己就支持超过4G,因此配合支持4G的芯片组就能够识别4G或者以上。可是32位系统,则须要系统自己能够拓展内存地址空间,而后和支持4G的芯片组才能识别4G。对于通常的桌面操做系统而言,是没有拓展功能的,如xpVista32位版本。可是2003这类服务器,须要消耗如此巨大的内存,因此拥有拓展功能。架构

相关文章
相关标签/搜索