代码之家  ›  专栏  ›  技术社区  ›  Josef Grahn

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

  •  0
  • Josef Grahn  · 技术社区  · 14 年前

    我计划在带有双处理器的工作站上运行32位WindowsXP,基于Intel的Nehalem微体系结构和三通道RAM。尽管xp的内存限制在4 GB以内,但我的理解是,它在安装了超过4 GB的内存后仍能正常工作,但只会暴露4 GB(或略低于4 GB)。

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

    特别地:

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

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

    谢谢!

    1 回复  |  直到 13 年前
        1
  •  0
  •   Community Mike Kinghan    7 年前

    这个问题的答案是 SuperUser . 因为这里没有其他的回答,所以我对自己的问题做出了回答,这样就可以很容易地找到相关的信息。

    自从问到这个问题以来,我也遇到过 this blog post 作者MarkRussinovich,解释了WindowsXP内核如何处理内存。

    综上所述,内核似乎将所有物理内存地址截断为32位,这意味着只有最低的 身体的 将使用4 GB的RAM。这反过来又由硬件映射到内存模块,并对应于第一个模块三联体(总共3 GB)和第二个三联体(分布在所有三个模块上——总共1 GB)的全部。

    因此,将利用所有内存通道,但在NUMA节点之间的内存量将不平衡。