我的CPU支持多少内存?

时间:2013-05-04 13:44:05

标签: c# .net memory-management 32bit-64bit cpu-architecture

这是我的第二个问题,跟随我的第一个问题(How to detect if CPU is 32 or 64 bit)。

我现在知道如何查明我的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支持的最大可能内存。如果我在互联网上查看我的CPU(http://ark.intel.com/products/65520),你会发现它只能处理32GB的内存。现在我如何从计算机中提取该信息?

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

1 个答案:

答案 0 :(得分:2)

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

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

  1. 操作系统: 它不仅仅是32位或64位: Physical Address Extension with memory limits of Windows versions

  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内存测试的。

  6. 一个现实生活中的例子: 我在Gigabyte GA-EX58-UD4主板上安装了英特尔酷睿i7-920 CPU。主板和CPU都支持最大。 24GB内存基于制造商的网页,因为当时市场上只有4GB内存模块。不过,我在主板上使用48GB内存和Windows 7专业版x64。它运行良好,操作系统看到并可以毫无问题地使用它们。 该CPU架构的Xeon版本可以使用max。基于网页的144GB内存。限制与支持的主板的一个CPU内存限制相同,因为没有更大容量的内存模块可以测试它。

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