4G变2.49G,遇到奸商了?请各位解惑!
2545 17
[1 楼] twld [泡菜]
11-2-17 23:52
电脑是Thinkpad R400,278225C,最大支持4G内存,原来是1G,今天去配了两个2G的金士顿的内存,一开始拿的两个不能启动电脑,换了另外两个(内存颗粒和开始两个不同)都是金士顿颗粒的,可以启动电脑了,可是显示的内存只有2.49G。
我记得以前台式机装了内存超过4G的时候,是显示3.75G(或者是3.25G)的,并且用ramdisk可以利用不能显示的那部分内存的(当时装了8G内存)。
问题是:
1、现在笔记本电脑只显示2.49G,为什么不显示3G以上?是笔记本主板的问题?
2、并且用ramdisk也只能用2.49G:我做了个1.5G的虚拟盘,结果内存只剩下910M可用。

买之前打联想技术电话,告诉只能用DDR3 1066的内存,买内存的时候,卖主说DDR3 1333的 内存完全通用,我买的1333的,1066的可能缺货。不会是这个问题吧?

现在没有64位系统,这几天也没有空闲时间安装64位系统。不然装完64位系统就知道是不是内存的问题了。

随后我把相关图片贴上,请各位给分析分析。
[18 楼] twld [泡菜]
11-2-18 13:25
原文由 namelz52 在2011-02-18 11:48发表

你在BIOS里面把显卡热切换给关了,然后用3470,不要用集成的4500,就不会只显示2.49G了


我的电脑只有一个显卡3470,昨天是为了测试电脑得分,换成win7系统32位,后来换回winxp,(全部使用GHOST和备份文件,如果是正常安装估计就直接显示2.99G了)第一次启动就成2.49G了,后来重新启动后,变成了2.99G了。
就现在这个样子。

现在应该对了,硬件认出4G内存,系统能使用的内存为:2.99G+显卡占用的512M,共3.25G,这只是猜测。

DDR3 1333的内存,频率在CPU-Z里是399MHz,在鲁大师里是800MHz,怎么不是1333MHz呢?

[twld 编辑于 2011-02-18 13:29]
[17 楼] datablader [资深泡菜]
11-2-18 11:54
32位XP系统 + 吃内存的内置显卡,造成了这个问题。
[16 楼] haiyuily [泡菜]
11-2-18 11:52
重新安装一下系统试试。
嘿嘿
[15 楼] namelz52 [资深泡菜]
11-2-18 11:48
原文由 twld 在2011-02-18 01:08发表

又看了一遍,温故知新:)
1、我的电脑是单显卡,不能切换。
但是你说的话让我想起来点情况。切换后正常,是不是用内置显卡就显示2.49G,用独立显卡就显示正常?如果是这样的话,那就是内置显卡的显存用的是内存共享的,而独立显卡有独立的显存,不占用内存。
而我的电脑的显卡是HD3470,虽然说是独立显卡,其显存可能 ......


你在BIOS里面把显卡热切换给关了,然后用3470,不要用集成的4500,就不会只显示2.49G了
[14 楼] twld [泡菜]
11-2-18 01:08
原文由 namelz52 在2011-02-18 00:41发表
再好好看一下我的回复嘛


又看了一遍,温故知新:)
1、我的电脑是单显卡,不能切换。
但是你说的话让我想起来点情况。切换后正常,是不是用内置显卡就显示2.49G,用独立显卡就显示正常?如果是这样的话,那就是内置显卡的显存用的是内存共享的,而独立显卡有独立的显存,不占用内存。
而我的电脑的显卡是HD3470,虽然说是独立显卡,其显存可能是共享的内存的,这就遭成了内存少了一部分(3.25-2.49=0.75),应该少512M 才对啊?因为我的显卡显存是512M的。
2、9.0版本确实没有那个设置选项,但也确实能够管理系统支配以外内存,这个我试过,在台式机上。
再次感谢
[13 楼] twld [泡菜]
11-2-18 00:52
在鲁大师里看内存是4G(DDR3 800MHz),而CPU-Z里是399.0MHz,怎么不是1333呢,是主板不支持吗?
[12 楼] twld [泡菜]
11-2-18 00:47
有时间了换64位系统;
内存在BIOS里和CPU-Z里都能认出,应该没有问题;
我也相信奸商是无辜的;
9.0版本的ramdisk确实没有那个管理功能,但是我以前用过,能用上其余内存;
再次感谢各位在深夜给予热心的帮助!
[11 楼] namelz52 [资深泡菜]
11-2-18 00:41
再好好看一下我的回复嘛
[10 楼] twld [泡菜]
11-2-18 00:34
感谢各位回复!

32位系统最大支持4GB,系统不能全部利用,这可以理解。
现在的问题是:
1、操作系统显示内存只有2.49G,而不是3G以上;
2、用ramdisk应该可以全部识别4GB内存啊,并且能用上操作系统不能使用的那部分内存。也就是说,操作系统分配2.49G,其它的1.5G左右,我可以用ramdisk软件做个虚拟盘。
现在的情况是,我做的1.5G虚拟盘是在那2.49G里分出来的。
原来装过一个台式机,主板支持16G内存,我配了8G,32位xp只识别3.75(或3.25)G内存,其它的4G多内存(3.75或3.25G以外的),我全部做了虚拟盘。
[9 楼] aungor [泡菜]
11-2-18 00:31
原文由 cattor 在2011-02-18 00:16发表
4G内存与CPU,BIOS和操作系统之间牵绊

这也是相当贴心的一个设计。

这也是相当贴心的一个回复。
[8 楼] namelz52 [资深泡菜]
11-2-18 00:25
1、双显卡的机器如果开启了热切换功能,那么4G内存就会剩下2.49G,关闭热切换就可以了,基本上T/R系列都会这样,但并不是100%出现,这问题有点奇怪,但如果出现了的话关闭基本100%可以解决

2、换个版本的ramdisk吧,有些版本的ramdisk不设置的话是没法使用那一部分不可识别的内存的,而是直接在可以识别的内存里面加载缓存盘

是不是9版本的没有下面的那个管理功能?
[7 楼] 真的假的哎 [资深泡菜]
11-2-18 00:19
赶紧换64bit的win7或者vista吧
[6 楼] cattor [资深泡菜]
11-2-18 00:16
4G内存与CPU,BIOS和操作系统之间牵绊

4G内存与CPU,BIOS和操作系统之间牵绊因为内存价格的持续走低,目前各大内存厂商相继推出了单条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、内存控制器、BIOS:能支持4GB

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的内存控制器放在北桥内,内存控制器的改变就与北桥密切相关。从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内存方面是没问题的。

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内存问题依然没有凸现。

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

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

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

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

通过内存地址重映射把系统占用的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进步一点的是在系统属性里面可以显示实际安装多少内。

32位的Vista SP1已经能顺利识别4GB内存、但在任务管理器可以看到系统真正使用的内存不到4GB。

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

最后:

我们可以看出,现在的主板芯片组或内存控制器已经不再是吞食我们内存的主要原因。而罪魁祸首则是出在我们使用的32位操作系统上。虽然现在的 Vista SP1已经能识别到完整的4GB内存,但实际使用的内存还是和以前的那3GB左右的没区别。所以现在来谈4GB内存的普及依然为时过早。另一方面,有的内存厂商为了避免出现内存浪费的情况发生,推出了三条1GB内存的组合套装,这也是相当贴心的一个设计。
[5 楼] 老顽童 [陈年泡菜]
11-2-18 00:13
恐怕不是奸商的问题。
[4 楼] twld [泡菜]
11-2-18 00:06
这是在CPU-Z里看到的内存1#、2#插槽信息
[3 楼] 行形色色 [泡菜]
11-2-18 00:02
XP能支持4Gb内存么?

楼主可以这样检测,将内存取出一条,分别单条2Gb测试,要是单条没问题还是从其他方面找原因
[2 楼] twld [泡菜]
11-2-17 23:58
xp系统显示的2.49G内存和在ramdisk里做了1.5G虚拟盘之后,只剩下910M得内存