title: How much memory does my CPU support?
body: <p>This is my second question, following my first (<a href="https://stackoverflow.com/questions/16373021/how-to-detect-if-cpu-is-32-or-64-bit">How to detect if CPU is 32 or 64 bit</a>).</p>
  
  <p>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). </p>
  
  <p>For example: </p>
  
  <p>If I run this piece of code:</p>
  
  <pre><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"]); 
  }
  </code></pre>
  
  <p>This will result in:</p>
  
  <pre><code>AddressWidth: 32 (meaning, my OS is 32-bit)
  DataWidth: 64 (meaning, my CPU is 64-bit)
  Architecture: 9 (meaning 64-bit architecture)
  </code></pre>
  
  <p>Now I want to know the maximum possibly memory my CPU supports. If I look up my CPU at the internet (<a href="http://ark.intel.com/products/65520" rel="nofollow noreferrer">http://ark.intel.com/products/65520</a>) you will see it can address only 32GB of memory. Now how can I extract that information from my computer?</p>
  
  <p>Warning: This questions is not about how much memory my OS supports. I am using WinXP, 32bit, so it supports only 4GB.</p>