0

I plan to run 32-bit Windows XP on a workstation with dual processors, based on Intel's Nehalem microarchitecture, and triple channel RAM. Even though XP is limited to 4 GB of RAM, my understanding is that it will function with more than 4 GB installed, but will only expose 4 GB (or slightly less).

My question is: Assuming that 6 GB of RAM is installed in six 1 GB modules, which physical 4 GB will Windows actually map into its address space?

In particular:

  • Will it use all six 1 GB modules, taking advantage of all memory channels? (My guess is yes, and that the mapping to individual modules within a group happens in hardware.)

  • Will it map 2 GB of address space to each of the two NUMA nodes (as each processor has it's own memory interface), or will one processor get fast access to 3 GB of RAM, while the other only has 1 GB?

Thanks!

Josef Grahn
  • 1,585
  • 9
  • 12
  • Probably more a question for serverfault (serverfault.com) or superuser (superuser.com) – Patrick Apr 21 '10 at 15:08
  • Thanks for the suggestion! I shall post this on superuser.com. I think I'll let it remain here as well, though, since the question arose from a programming and optimization perspective and could be interesting for other programmers. – Josef Grahn Apr 21 '10 at 17:14
  • If you enable PAE, more than 4 GB of memory will be addressable. The higher memory can be a bit slower, and the single process still can't use more than 4 GB. – osgx Feb 18 '11 at 16:28
  • It is my understanding that Windows XP 32-bit is software limited to 4 GB even with PAE enabled (since service pack 1), so I am afraid that will not help. – Josef Grahn Feb 18 '11 at 20:27

1 Answers1

0

This question was answered over at SuperUser. Because there are no other responses here, I'm responding to my own question so that the relevant information can easily be found.

Since the question was asked, I have also come across this blog post by Mark Russinovich, explaining how the Windows XP kernel handles memory.

In conclusion, it appears that what happens is that the kernel, even though it is PAE aware, truncates all physical memory addresses to 32-bit, meaning only the lowest physical 4 GB of RAM will be used. This in turn is mapped by hardware to memory modules, and corresponds to the entirety of the first module triplet (3 GB in total), and a third of the second triplet (spread across all three of its modules -- 1 GB in total).

Thus, all memory channels will be exploited, but the amount of memory will not be balanced between NUMA nodes.

Community
  • 1
  • 1
Josef Grahn
  • 1,585
  • 9
  • 12