WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

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

更新时间:2008-08-01 01:59 作者:佚名点击:

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。


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

写在最后

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

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容