在Windows XP中将内存地址映射到物理模块

时间:2010-04-21 11:59:58

标签: memory windows-xp numa nehalem

我计划在基于英特尔Nehalem微架构和三通道RAM的双处理器工作站上运行32位Windows XP。尽管XP仅限于4 GB的RAM,但我的理解是它将安装超过4 GB的功能,但只会暴露4 GB(或略低)。

我的问题是:假设6个1 GB模块中安装了6 GB的RAM,那么Windows实际将4 GB映射到其地址空间?

特别是:

  • 它是否会使用所有六个1 GB模块,利用所有内存通道? (我的猜测是肯定的,并且组内各个模块的映射都发生在硬件中。)

  • 它会将2 GB的地址空间映射到两个NUMA节点中的每一个(因为每个处理器都有自己的内存接口),或者一个处理器可以快速访问3 GB的RAM,而另一个只有1 GB?

谢谢!

1 个答案:

答案 0 :(得分:0)

SuperUser回答了这个问题。由于此处没有其他回复,我正在回答我自己的问题,以便轻松找到相关信息。

自提出问题以来,Mark Russinovich也遇到了this blog post,解释了Windows XP内核如何处理内存。

总之,看起来发生的事情是内核即使它具有PAE意识,也会将所有物理内存地址截断为32位,这意味着只有最低的物理 4 GB的RAM将会使用。这反过来又由硬件映射到内存模块,并且对应于第一个模块三元组的总体(总共3 GB),以及第二个三元组的三分之一(分布在它的所有三个模块中 - 总共1 GB)

因此,所有内存通道都将被利用,但NUMA节点之间的内存量将无法平衡。