Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How much memory does my CPU support?

This is my second question, following my first (How to detect if CPU is 32 or 64 bit).

I know now how to find out if my CPU has a 64 bit architecture. But having a 64-bit architecture, does not mean it can address 2^64 (=16,777,216 TB).

For example:

If I run this piece of code:

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"]); 
}

This will result in:

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

Now I want to know the maximum possibly memory my CPU supports. If I look up my CPU at the internet (http://ark.intel.com/products/65520) you will see it can address only 32GB of memory. Now how can I extract that information from my computer?

Warning: This questions is not about how much memory my OS supports. I am using WinXP, 32bit, so it supports only 4GB.

like image 749
Martin Mulder Avatar asked Sep 01 '26 16:09

Martin Mulder


1 Answers

The simple answer is that you can't get that information from your computer.

The complex answer is that there are 5 things which can affect the value you are searching:

  1. Operating system: It's not only about 32-bit or 64-bit: Physical Address Extension with memory limits of Windows versions

  2. CPU specification in the manual or on the manufacturer's website: All processors have specified their memory limit like yours have 32GB.

  3. Motherboard specification in the manual or on the manufacturer's website: All motherboards have specified their memory limit eg. 32GB.

  4. Real memory limit of the CPU: CPU architecture can be 32-bit or 64-bit. A simple 32-bit CPU supports 4GB of memory. In case of supporting PAE the theoretical addressable memory limit is 64GB because the CPU's address size is 36-bit in this case. 64-bit CPU can address 16EB (16777216 TB) of memory.

  5. Real memory limit of the Motherboard: The motherboard's chipset specification is based on the current architectures so if there are no 32GB memory modules on the market then the manufacturer can't write or say that their motherboard with 4 memory slots supports 128GB memory because they don't know. They say that it supports 32GB memory because it was tested with 4x8GB memory.

A real life example: I had an Intel Core i7-920 CPU in a Gigabyte GA-EX58-UD4 motherboard. The motherboard and the CPU both supported max. 24GB memory based on the manufacturers' webpages because back then there were only 4GB memory modules on the market. However I used 48GB of memory in that motherboard with a Windows 7 Professional x64. It worked well and the operating system saw and could use all of them without any problem. The Xeon versions of that CPU architecture could use max. 144GB memory based on the webpage. The limit was the same as the supported motherboards' one CPU memory limit, because there weren't memory modules with larger capacity they could test it with.

So, basically there are many factors and specifications, which can be taken into consideration but there are no real way to get the exact amount of addressable memory of an exact system.

like image 78
zoty314 Avatar answered Sep 03 '26 06:09

zoty314



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!