Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的CPU支持多少内存?_C#_.net_Memory Management_32bit 64bit_Cpu Architecture - Fatal编程技术网

C# 我的CPU支持多少内存?

C# 我的CPU支持多少内存?,c#,.net,memory-management,32bit-64bit,cpu-architecture,C#,.net,Memory Management,32bit 64bit,Cpu Architecture,这是我的第二个问题,在第一个问题之后() 我现在知道如何确定我的CPU是否有64位体系结构。但拥有64位体系结构并不意味着它可以处理2^64(=16777216 TB) 例如: 如果我运行这段代码: ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor"); ManagementObjectCollection cpus = se

这是我的第二个问题,在第一个问题之后()

我现在知道如何确定我的CPU是否有64位体系结构。但拥有64位体系结构并不意味着它可以处理2^64(=16777216 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()上查找我的CPU,您将看到它只能处理32GB的内存。现在,我如何从我的计算机中提取这些信息


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

简单的回答是,您无法从计算机上获取这些信息

复杂的答案是,有5个因素会影响您正在搜索的值:

  • 操作系统: 它不仅仅是32位或64位:

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

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

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

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

  • 一个真实的例子: 我在千兆字节GA-EX58-UD4主板上有一个Intel Core i7-920 CPU。基于制造商的网页,主板和CPU都支持最大24GB内存,因为当时市场上只有4GB内存模块。然而,我在Windows7 Professional x64的主板上使用了48GB内存。它工作得很好,操作系统可以看到并可以毫无问题地使用它们。 基于该网页,Xeon版本的CPU架构最多可使用144GB内存。该限制与受支持的主板的单CPU内存限制相同,因为没有更大容量的内存模块可供测试


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

    只是说清楚,“我的CPU支持的内存”是指可以寻址的物理内存。你是在问PAE支持吗?是的,我是说物理记忆。是的,PAE支持(对于32位体系结构)很好,但也有64位CPU的地址空间。只是一个注释,但HAL不确定您是否会得到它。操作系统没有真正的理由知道硬件支持多少可寻址内存,只有硬件支持多少可寻址内存。我不认为这是纯粹的CPU-bios还必须支持内存寻址,硬件必须有足够的内存插槽。请评论。