我计划在基于英特尔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?
谢谢!
答案 0 :(得分:0)
SuperUser回答了这个问题。由于此处没有其他回复,我正在回答我自己的问题,以便轻松找到相关信息。
自提出问题以来,Mark Russinovich也遇到了this blog post,解释了Windows XP内核如何处理内存。
总之,看起来发生的事情是内核即使它具有PAE意识,也会将所有物理内存地址截断为32位,这意味着只有最低的物理 4 GB的RAM将会使用。这反过来又由硬件映射到内存模块,并且对应于第一个模块三元组的总体(总共3 GB),以及第二个三元组的三分之一(分布在它的所有三个模块中 - 总共1 GB)
因此,所有内存通道都将被利用,但NUMA节点之间的内存量将无法平衡。