Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory Windows XP中内存地址到物理模块的映射_Memory_Windows Xp_Numa_Nehalem - Fatal编程技术网

Memory Windows XP中内存地址到物理模块的映射

Memory Windows XP中内存地址到物理模块的映射,memory,windows-xp,numa,nehalem,Memory,Windows Xp,Numa,Nehalem,我计划在基于英特尔Nehalem微体系结构和三通道RAM的双处理器工作站上运行32位Windows XP。尽管XP的内存限制为4GB,但我的理解是,它在安装超过4GB的情况下仍能正常工作,但只会暴露4GB(或略低于4GB) 我的问题是:假设6 GB的RAM安装在6个1 GB的模块中,Windows将实际映射到哪个物理4 GB的地址空间 特别是: 它会使用所有六个1GB模块,利用所有内存通道吗?(我的猜测是肯定的,在一个组中映射到单个模块是在硬件中发生的。) 它会将2GB的地址空间映射到两个NU

我计划在基于英特尔Nehalem微体系结构和三通道RAM的双处理器工作站上运行32位Windows XP。尽管XP的内存限制为4GB,但我的理解是,它在安装超过4GB的情况下仍能正常工作,但只会暴露4GB(或略低于4GB)

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

特别是:

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

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


谢谢

这个问题在上一次会议上得到了回答。因为这里没有其他的回答,所以我会回答我自己的问题,这样相关的信息就可以很容易地找到

自从提出这个问题以来,我还遇到了马克·鲁西诺维奇,他解释了Windows XP内核是如何处理内存的

总之,似乎发生的是内核,即使它是PAE感知的,也会将所有物理内存地址截断为32位,这意味着只会使用最低物理4GB的RAM。这反过来又被硬件映射到内存模块,并对应于第一个模块三元组的全部(总共3 GB)和第二个三元组的三分之一(分布在其所有三个模块上——总共1 GB)


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

可能是serverfault(serverfault.com)或superuser(superuser.com)的问题,谢谢您的建议!我将在superuser.com上发布这篇文章。不过,我想我还是让它留在这里吧,因为这个问题是从编程和优化的角度提出的,其他程序员可能会感兴趣。如果启用PAE,将可以寻址超过4GB的内存。较高的内存可能会稍微慢一点,单个进程的使用量仍然不能超过4 GB。据我所知,即使启用PAE(自service pack 1以来),Windows XP 32位软件也限制为4 GB,因此我担心这不会有帮助。