谁动了我的内存 解析4GB内存无法识别问题

所属分类: 硬件教程 / 内存 阅读数: 82
收藏 0 赞 0 分享
  因为内存价格的持续走低,目前各大内存厂商相继推出了单条2GB的DDR2 800内存,这些内存给人最大的感觉就是价格便宜量又足。很多用户就直接买了两条2GB的内存,想组成双通道使用。可拿回家一看,原本4GB的内存容量被识别出来的只有3.2GB左右。通过检查,发现内存本身并没有问题。那又是什么吞食了你的内存呢?这就是我们本期将要给大家说清楚的一个问题。   800MB内存被吞食了
  大家或许会发现一种很奇怪的现象,在我们的Windows XP和Vista中,安装4GB内存后,显示出来的只有3.2GB左右甚至更少,有800多MB的内存“无缘无故”地消失了,这让人感觉十分费解,主板和操作系统之所以不能使用全部的4GB内存,问题的根源就在于计算机那32位X86架构。32位X86架构是指个人电脑的地址总线是32位的,CPU、内存控制器、操作系统都是按32位地址总线设计。32位地址总线可以支持的内存地址代码是4096MB,也就是有4GB的地址代码,可以编4GB个地址。这4GB个地址码正好可以分配给4GB内存。但是,这4GB个地址码不能全部分配给安装在主板上的物理内存。因为个人电脑还有很多设备需要地址代码,以便CPU可以根据地址码找到它们,同时CPU和这些设备交换数据需要暂时存放数据的存储器——寄存器,这些寄存器也需要地址代码。比如硬盘控制器、软驱控制器、管理插在PCI槽上的PCI卡的PCI总线控制器,PCI-E总线控制器和PCI-E显卡,它们都有寄存器都需要系统分配给它们地址代码。这些地址由系统分配,电脑用户在使用中感觉不到。这样一来,当我们为电脑插上总容量为4GB的内存时,就有一部分内存分配不到地址代码而不能使用。
  要深入了解4GB内存之谜,我们就得弄清楚各部件与4GB内存关系,其中涉及到的部件有CPU、内存控制器(Intel平台集成在北桥,AMD平台集成在CPU)和操作系统。
CPU能支持4GB内存

  从386时代开始,CPU的地址总线就是32位的,可以访问4GB的地址代码。从奔腾Ⅱ到奔腾Ⅳ,理论上已经可以访问64GB的地址编码。后来支持64位架构的奔腾Ⅳ到现在的酷睿2,地址总线已经升级到64位,64位地址总线可以访问千亿GB的地址编码。实际上用不到这么多的地址总线,一般用42位足够了,可以编码的地址量有4TB。兼容64位架构的CPU用在32位系统时地址总线就缩小为36位。所以现在的CPU支持4GB内存是没有问题的。

内存控制器的地址总线

  与主板安装的内存直接关联的是内存控制器。内存控制器一边管理内存,一边通过地址总线与CPU通信。内存控制器的地址总线决定了可以支持的内存地址编码数量,同时内存控制器的实际连接内存的地址线决定了可以支持的内存容量。Intel把内存控制器放在北桥,AMD把内存控制器放在CPU。所以要分开介绍。

1、Intel的内存控制器

由于Intel的内存控制器放在北桥内,内存控制器的改变就与北桥密切相关。我们可以看下面的北桥列表:

谁动了我的内存解析4GB内存无法识别问题(2)
表1
  从上面的北桥地址总线发展表可以看出,从P965开始内存控制器已经是36位地址总线,可以编64GB的地址代码,除系统占用的地址码,分配给主板安装的4GB内存绰绰有余。所以,从P965开始Intel的北桥支持4GB内存是没有问题的。

2、AMD的内存控制器

AMD从支持64位架构的CPU(Athlon64)开始把内存控制器集成到CPU。内存控制器的地址总线是64位架构的,使用40位,可以支持1000GB的地址编码。所以,AMD 从Athlon64开始,内存控制器支持4GB内存也是没有问题的。

BIOS能支持4GB内存

  BIOS不是主板厂家自己开发的,BIOS版权控制在AMI等几个公司。它们与Intel和AMD合作共同开发BIOS。所以当Intel和AMD提出“映射”方式解决4GB内存问题,AMI等厂商就会开发出相应的BIOS。早期的BIOS里面会显示出“映射”选项,用户可以开启或关闭。现在已经是默认开启,不再显示这项设置。所以可以说,对于现在的BIOS来讲,在支持4GB内存方面是没问题的。


#p#
4GB内存的“原罪”:X86架构

   CPU和内存控制器从硬件上为使用4GB内存提供了保障。但是还没有解决4GB内存的问题。障碍来自于个人电脑的体系标准——32位X86架构。早在8086时代,内存是焊接在主板上的,一般也就几KB的内存,IBM规定640KB的地址是最高端,这个地址分配给BIOS,接下来有一段地址分配给系统的显示设备和I/O设备。电脑的迅速发展很快突破640KB内存达到并超过1MB。但是640KB下面这一段地址分配不能改变,因为CPU、DOS操作系统都是从640KB读取BIOS通过640KB下面的显示设备寄存地址,I/O设备寄存地址与显示设备、I/O设备通信、交换数据。如果更改,以前的所有电脑都要作废。所以必须寻找一个办法,既不改变640KB地址分配,又可以使用640KB到1MB的内存。那就是这种地址分配规则不变,采用“内存地址映射”技术,把640KB到500多KB的这一段地址映射到640KB-1MB的空间里,映射工作由BIOS负责。操作系统则由两条DOS命令HIMEM.SYS和EMM386.SYS负责,熟悉DOS的用户,都会知道这两条命令。通过映射,就可以让DOS软件使用更多的内存。内存发展到4MB,16MB,都是通过“内存映射”技术解决。到现在,个人电脑只要兼容DOS,就必须遵守640KB这种地址内存分配规则。

  奔腾Ⅱ时代,SDRAM内存容量达到128MB。那时候的地址总线是32位,最大地址空间是4GB,这时32位X86架构已经完全形成。除保留以前的内存地址分配规则外,还要把BIOS地址映射到地址空间的顶端——4GB。一直到815时代的DDR内存,915时代的DDR2内存。真正使用的内存单条最大容量为512MB,系统使用的内存不会超过2GB。所以4GB内存问题没有显现。

  945时代时1GB的DDR2内存出现后,内存控制器的设计者们开始考虑主板安装4GB的内存条。但当时很少有用户使用4GB内存,4GB内存问题依然没有凸现。



图1

  其实,Intel在915时期就提出要解决32位X86架构硬件支持4GB内存的问题。到P965正式解决时,解决方案还是“内存地址映射”。这个方案不是新想出来的,在32位X86架构的服务器系统早已经采用,只是被移植到个人电脑上来。

  从64GB的地址空间顶部开始,映射PCI设备的I/O地址,然后映射系统占用的3GB到4GB的地址。把3GB到4GB的这段地址代码留给安装在主板上的物理内存,就可以使用安装的全部内存了。

  为什么必须要采用“映射”的办法?因为内存的编址必须是连续的,不能断开。而系统的地址空间(也叫逻辑地址)是可以不连续的。就像我们给街道两边的房屋号码牌一样,编制方案(相当于逻辑地址)可以规划很大,可以分割。给到这一条街房屋的号码牌必须是连续的,这是真实的地址,以便于人们按地址寻找房屋。

  当然这种“映射”工作还是由BIOS完成。要支持4GB内存,还必须要BIOS支持。


图2

  通过内存地址重映射把系统占用的4GB地址还给物理内存,是32位X86架构的规则。AMD也要采用这个规则,虽然它的内存控制器集成在CPU内。也正是由于内存控制器集成在CPU内,北桥不再含有内存控制器。主板厂家开发AMD平台主板时,会依据市场定位设计主板支持的内存容量。有支持2GB的,也有支持4GB、8GB或更多。所以AMD平台的4GB问题还要看主板。
操作系统才是“罪魁祸首”

  操作系统管理和使用物理内存,因此在操作系统内也必须有一个逻辑(虚拟)地址系统,与主板上的所有存储地址(包括内存的、I/O设备的、BIOS的)对应,也有类似“地址总线”的结构。32位操作系统是按32位地址总线设计,32位的地址寄存器,因此只能管理4GB的地址,去掉系统占用的,也不能完全使用全部4GB内存。个人电脑的32位操作系统都不能支持4GB内存,即使是VISTA 32 SP1也不能。VISTA 32 SP1比XP 32 SP3进步一点的是在系统属性里面可以显示实际安装多少内。

谁动了我的内存解析4GB内存无法识别问题(4) 谁动了我的内存解析4GB内存无法识别问题(4)

谁动了我的内存解析4GB内存无法识别问题(4)

在任务管理器可以看到系统真正使用的内存不到4GB。

  那么哪些操作系统可以支持并使用4GB内存?第一是64位操作系统,因为64位操作系统是按64位地址总线设计的。比如Windows XP 64,Vista 64。第二是具有物理地址扩展功能,并且地址寄存器大于32位的服务器操作系统,但有些具备物理地址扩展的服务器操作系统,由于地址寄存器限于32位也不能支持4GB。

写在最后

  我们可以看出,现在的主板芯片组或内存控制器已经不再是吞食我们内存的主要原因。而罪魁祸首则是出在我们使用的32位操作系统上。虽然现在的Vista SP1已经能识别到完整的4GB内存,但实际使用的内存还是和以前的那3GB左右的没区别。所以现在来谈4GB内存的普及依然为时过早。另一方面,有的内存厂商为了避免出现内存浪费的情况发生,推出了三条1GB内存的组合套装,这也是相当贴心的一个设计。


更多精彩内容其他人还在看

新增内存安装注意事项

  PC机之所以能够迅速在普及,很重要一点就是系统的开放性,更换和升级方便。在计算机的升级过程中,最简单的要数是内存升级,只要把机器关机后,拔下电源,打开机箱,把新的内存插入空闲的内存插槽就可以了。不过,有时候也会出现
收藏 0 赞 0 分享

内存超频误区,您有犯这样的错误么吗?

 超频作为DIY玩家们永远的追求,誓必要将每一个可超频的硬件性能发挥到极致。先前是只对处理器、显卡进行超频,现就连插在主板上的内存也照超不误了。超频已经成为大家提升硬件价值的一种常用手段了,于是众厂商也是挖空心思推出了
收藏 0 赞 0 分享

菜鸟手册:教你认识内存制造过程

  芯片的制造   内存是由一般的海滩的沙所制成的。沙中含有半导体或芯片制造时最重要原料的 - 硅 (silicon) 。从沙中粹取的硅 , 经过融解、成型、切片、打磨以及抛光的程序而成为晶圆片 (silicon wafer) 。在制造芯片的过程中,
收藏 0 赞 0 分享

带你走捷径,迅速提升DDR2内存的性能

  随着AM2处理器的逐渐热门和Conroe系列处理器的强势发布,DDR2的发展进入黄金时期,DDR2 800气势很足,似乎要在2006年成为市场的主流。不少用户不得不反问:“我的内存够快了吗?还能够再快吗:”  如何继续提升DDR2内存的性能
收藏 0 赞 0 分享

菜鸟成长手册:谈单面与双面内存区别

内存之所以存在单面与双面内存,这关系到厂商制程跟良率问题,内存上的颗粒有分单面颗粒跟双面颗粒。 单面与双面内存 单面内存就一定比双面内存好,或者一定要在两者之间区分伯仲。单、双面内存它们的本身没有好坏,区
收藏 0 赞 0 分享

再便宜都要打假 6大内存品牌最直观防伪

目前市场上我们见过的大多内存品牌包括金士顿(Kingston)、三星(Samsung)、KINGMAX、宇瞻(Apacer)、威刚(A-DATA)、黑金刚(KINGBOX)、创见(Transcend)、海盗船(Corsair)、金邦(Geil)、金泰克、芝奇、、亿能、南亚
收藏 0 赞 0 分享

游戏内存如何炼成的 厂商工程师手记曝光

一:好内存,从设计开始   说起内存,可能很多玩家都觉得无所谓。内存只要可以用就行了,谁管它怎么样?实际上这样的想法是比较偏颇的。比如游戏玩家,往往长时间、高负荷运行计算机,对计算机整机性能特别是内存要求非常苛刻。
收藏 0 赞 0 分享

三思而后买 你真的需要DDR3内存吗

  随着Intel Core i7系列处理器的发布,DDR3内存终于在全世界玩家前吐气扬眉。在Core i7处理器中,集成了三通道内存控制器,并唯一支持DDR3内存。DDR3内存强大的性能终于得到体现,而各大内存厂商也开始大力推广DDR3内存。更大的容
收藏 0 赞 0 分享

给玩家基础性充电:各高端内存品牌点评

  说起高端内存,很多老玩家可能会脱口而出“海盗船”……,拜托,海盗船充其量就是一个以超频为主打的内存品牌,要说高端,海盗船也只是在国内依旧算得上高端。而我们对高端的定义是什么呢?价格高?能超频?或许都不是,只是能在
收藏 0 赞 0 分享

在布满荆棘道路前行 DDR3内存路在何方

  说到DDR3相信已经不再陌生,但就是这样一个已经经历了数年产品仍未能成为主流,那这其中必然有其缘由。DDR3内存仍然保持着非常强势的竞争优势,尤其在CPU高外频的带动之下,内存性能更是提升非常明显。因此,CPU高速的发展,使得
收藏 0 赞 0 分享
查看更多