为什么使用AMD64时无法识别超过3 GB的RAM?

为什么Ubuntu 10.10 amd64(Maverick Meerkat)不能解决更多的3 GB RAM?

我的机器是东芝P205-S6287英特尔迅驰双核64位处理器和4 GB RAM,频率为667 MHz。

根据详细规格 ,笔记本电脑采用64位Core 2 Duo T5300处理器,并配备945GM Express芯片组。

这是由于笔记本电脑中的移动式英特尔945GM Express

我拥有一台使用相同芯片组的Thinkpad T60。 它是Core2Duo 64位CPU的第一批来自intel的北桥芯片之一。 他们设计失败了。

芯片组理论上只能处理4GB的RAM,还必须解决其他硬件(I / O内存)问题。 它保留了1GB以上的内存范围。 Linux内核中的64位逻辑内存地址支持没有帮助,因为主板和北桥只为CPU提供32位物理地址总线。 并没有解决方法。
http://forums.lenovo.com/t5/T61-and-prior-T-series-ThinkPad/Thinkpad-s-and-N100-sw-945PM-chipset-can-t-address-gt-3G-Ram/熔点/ 2730

在设计存储体切换方面存在理论选择。 然而内核不支持它,也不会在x86架构上有意义。 945GM的i810内存控制器可能太懒了。

我的简短回答是: 可能是因为BIOS设计师很草率。

长的anwser是:

虽然你安装了4GB RAM,但你不能指望Intel 945GM芯片组可以使用4GB的可用RAM。 这是芯片组限制。 你可以从芯片组的规格中说出这个:

http://www.intel.com/content/www/us/en/intelligent-systems/navy-pier/mobile-945-express-chipset-datasheet.html

引用自9.2节:“ M emory C ontroller H ubs提供4 GB的最大DRAM地址解码空间.MCH不会重新映射APIC或PCI Express内存空间。这意味着随着系统中填充的物理内存量达到4 GB,将存在物理内存,但仍然是不可寻址的,因此系统无法使用。

BIOS必须保留多个资源的地址范围,即BIOS本身,PCI和PCI Express内存映射空间,内部图形,APIC内存空间和其他用于I / O访问的内存窗口。 所有这些地址范围必须位于4GB地址空间内,因此占用系统内存不再可用的地址范围。 你可以说这些资源“窃取”物理RAM内存空间。

话虽这么说,如果你安装了4GB, 你可以期望有超过3GB的系统内存

系统可用的物理内存量取决于BIOS设计人员在安排这些地址范围方面花费的精力。 例如,BIOS可以分配每个资源所需的最少量。 或者它可以允许禁用或限制PCI Express的地址分配,具体取决于系统对PCI Express设备的使用情况。

即使您安装了4GB,系统的BIOS设计人员也可能将可用RAM的上限设置为静态最大值3GB。 这种方法为BIOS设计者提供了1GB的静态地址窗口,因此简化了BIOS设计人员的任务,即为资源分配地址范围,使其不与任何其他地址范围冲突。

有几个可能的原因。

一个是你实际上没有运行amd64构建。 另一个是你的主板和/或BIOS坏了,没有报告正确的RAM数量。

另一个是你有video内存和其他硬件资源占用3-4 GB内存空间,你的主板/ BIOS无法将阴影RAM提升到更高的地址,以便可以访问它。

弄清楚哪个需要查看你的dmesg输出。

psusi是对的。

我有同样的情况:

虽然他们称之为“64位CPU”,但通常无法满足4 GB +内存的需求。

大多数旧主板只有32位的地址,从这个池,显卡也需要获取他们的地址。

= 4 GB – 显卡内存(1 GB)= 3 GB。

我担心没有可能通过修补或升级任何固件来解决这个问题。

如果您对细节感兴趣,我建议: 物理地址扩展