最大限度地减少NUMA体系结构中的核心间通信



有人能强调在NUMA多核架构中减少核间通信的方法吗。英特尔NEHALEM微架构案例研究。

Nehalem处理器使用QuickPath Interconnect(QPI)进行处理器/节点/包间通信。在NUMA系统中,每个节点都有自己的本地内存,与系统中的其他节点共享。当程序的工作集适合一级缓存并且是只读的时,哪个NUMA节点拥有内存并不重要。当一个核心缓存未命中并且内存由另一个节点拥有时,NUMA节点之间的通信是必要的。然而,这并不意味着它访问另一个节点拥有的内存的速度较慢,这取决于另一节点是否将其缓存在与其本地内存相关的缓存中,英特尔称之为末级缓存(LLC)。核心对该节点本地内存位置的访问比对另一个节点拥有的内存的访问更快,但前提是它在两个节点的LLC中都未命中。访问另一个节点上LLC中命中的内存比访问本地节点上的内存更快,这是因为内存比CPU慢得多,并且QPI针对这种通信进行了优化。大多数系统都不愿意尝试减少处理器间通信,因为正如你所能想象的,这不是一个容易的问题——它需要设置线程与核心的相关性,设置该线程的内存工作集与该节点的本地内存的相关性。你可以在Drepper-Ulrich的论文中阅读更多关于这方面的内容,搜索NUMA。在本文中,Ulrich将QPI称为通用系统接口(CSI),在发布之前,这是QPI的英特尔名称。

最新更新