3

这是我的第二个问题,继我的第一个问题(如何检测 CPU 是 32 位还是 64 位)之后。

我现在知道如何确定我的 CPU 是否具有 64 位架构。但是拥有 64 位架构并不意味着它可以寻址 2^64 (=16,777,216 TB)。

例如:

如果我运行这段代码:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor");
ManagementObjectCollection cpus = searcher.Get();
foreach (ManagementObject queryObj in cpus)
{
    Console.WriteLine("AddressWidth: {0}", queryObj["AddressWidth"]); 
    Console.WriteLine("DataWidth: {0}", queryObj["DataWidth"]); 
    Console.WriteLine("Architecture: {0}", queryObj["Architecture"]); 
}

这将导致:

AddressWidth: 32 (meaning, my OS is 32-bit)
DataWidth: 64 (meaning, my CPU is 64-bit)
Architecture: 9 (meaning 64-bit architecture)

现在我想知道我的 CPU 支持的最大内存。如果我在 Internet ( http://ark.intel.com/products/65520 )上查找我的 CPU,您会发现它只能处理 32GB 的内存。现在如何从我的计算机中提取这些信息?

警告:这个问题不是关于我的操作系统支持多少内存。我使用的是 WinXP,32 位,所以它只支持 4GB。

4

1 回答 1

3

简单的答案是您无法从计算机中获取该信息。

复杂的答案是有 5 件事会影响您正在搜索的价值:

  1. 操作系统: 不仅仅是 32 位或 64 位: 物理地址扩展与 Windows 版本的内存限制

  2. 手册或制造商网站上的 CPU 规格: 所有处理器都指定了它们的内存限制,就像你的 32GB 一样。

  3. 手册或制造商网站上的主板规格: 所有主板都指定了它们的内存限制,例如。32GB。

  4. CPU 的实际内存限制: CPU 架构可以是 32 位或 64 位。一个简单的 32 位 CPU 支持 4GB 内存。在支持 PAE 的情况下,理论上的可寻址内存限制为 64GB,因为在这种情况下 CPU 的地址大小为 36 位。64 位 CPU 可以寻址 16EB (16777216 TB) 的内存。

  5. 主板的实际内存限制: 主板的芯片组规格是基于当前架构的,所以如果市场上没有 32GB 内存模块,那么制造商不能写或说他们的 4 个内存插槽的主板支持 128GB 内存,因为他们没有不知道。他们说它支持 32GB 内存,因为它是用 4x8GB 内存测试的。

一个真实的例子: 我在 Gigabyte GA-EX58-UD4 主板上有一个 Intel Core i7-920 CPU。主板和CPU都支持最大。24GB 内存基于制造商的网页,因为当时市场上只有 4GB 内存模块。但是,我在该主板上使用了 48GB 内存和 Windows 7 Professional x64。它运行良好,操作系统可以看到并且可以毫无问题地使用所有这些。该 CPU 架构的 Xeon 版本最多可以使用。144GB内存基于网页。该限制与支持的主板的一个 CPU 内存限制相同,因为没有更大容量的内存模块可以测试它。

因此,基本上有许多因素和规格可以考虑,但没有真正的方法来获得确切系统的确切可寻址内存量。

于 2013-05-05T21:29:16.753 回答