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

8 64-bit architecture ram

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

我的机器是 Toshiba P205-S6287 Intel Centrino Duo 64 位处理器和 667 MHz 的 4 GB RAM。

根据详细规格,该笔记本搭载64位Core 2 Duo T5300处理器,搭载945GM Express芯片组。

mar*_*rio 16

这是由于笔记本电脑中的Mobile Intel 945GM Express

我拥有一台 Thinkpad T60,它使用相同的芯片组。它是英特尔首批用于 Core2Duo 64 位 CPU 的北桥之一。他们设计它失败了。

该芯片组理论上只能寻址 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/ mp/2730

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


psu*_*usi 1

有几个可能的原因。

一是您实际上没有运行 amd64 版本。另一个原因是您的主板和/或 BIOS 损坏并且未报告正确的 RAM 量。

另一个原因是您的视频内存和其他硬件资源占用了 3-4 GB 内存区域的空间,并且您的主板/BIOS 无法将影子 RAM 提升到更高的地址以便对其进行访问。

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


aat*_*ark 0

普苏西是对的。

我这里也有同样的情况:

尽管他们称之为“64 位 CPU”,但您通常无法寻址 4 GB+ 内存。

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

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

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

如果您对详细信息感兴趣,我推荐:物理地址扩展