1

任何人都可以强调在 NUMA 多核架构中减少内核间通信的方法。案例研究英特尔 NEHALEM 微架构。

4

1 回答 1

4

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

于 2013-02-03T17:51:59.553 回答