Это мой второй вопрос, следующий за моим первым (How to detect if CPU is 32 or 64 bit).Сколько памяти поддерживает мой процессор?
Теперь я знаю, как узнать, имеет ли мой процессор 64-битную архитектуру. Но наличие 64-битной архитектуры не означает, что он может адресовать 2^64 (= 16 777 216 ТБ).
Например:
Если я запускаю этот кусок кода:
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 , Если я посмотрю мой процессор в Интернете (http://ark.intel.com/products/65520), вы увидите, что он может адресовать только 32 ГБ памяти. Теперь, как я могу извлечь эту информацию с моего компьютера?
Внимание: этот вопрос не касается того, сколько памяти поддерживает моя ОС. Я использую WinXP, 32 бит, поэтому он поддерживает только 4 ГБ.
Для того, чтобы быть понятным, «память моего процессора поддерживает», вы имеете в виду * физическую память *, которая может быть * адресована *. Вы спрашиваете о поддержке PAE? –
Да, я имею в виду физическую память. И да, поддержка PAE будет приятной (для 32-битной архитектуры), а также адресным пространством 64-битного процессора. –
Только комментарий, но с HAL не уверен, что вы это получите. У ОС нет реальной причины знать, сколько адресной памяти аппаратное обеспечение поддерживает только количество адресной памяти, имеющейся у оборудования. И я не думаю, что это чисто процессор - биос должен также поддерживать адресацию памяти, а аппаратное обеспечение должно иметь достаточно слотов для памяти. – Paparazzi