【发布时间】:2015-07-12 12:39:42
【问题描述】:
在 NUMA 架构(非统一内存访问)中,每个处理器都有自己的一级缓存,因此有一个用于处理器通信的协议 (MESI)。但是为什么每个处理器不能直接连接到其他的缓存呢?我读到“连接根本不够快”,但这并没有解释太多。
谢谢。
【问题讨论】:
标签: caching multiprocessing processor numa mesi
在 NUMA 架构(非统一内存访问)中,每个处理器都有自己的一级缓存,因此有一个用于处理器通信的协议 (MESI)。但是为什么每个处理器不能直接连接到其他的缓存呢?我读到“连接根本不够快”,但这并没有解释太多。
谢谢。
【问题讨论】:
标签: caching multiprocessing processor numa mesi
首先,拥有 L1 缓存并不意味着 NUMA 架构,主板拓扑仍然是制造机器 UMA 或 NUMA。
其次,使用的Cache Coherence 协议依赖于架构,可能与MESI 不同(实际上MESIF 更适合NUMA机器)。
转向您的问题
每个处理器都可以连接到彼此处理器缓存。事实上,每个缓存一致性协议都这样做,只是不允许直接读/写,因为它需要大量的努力且可重用性差。
但是,可以将 CPU 直接连接到另一个 CPU 缓存,实际上它是在 Intel CPU 上以某种方式实现的。
逻辑内核(即超线程内核)可以共享 L2 缓存,并且同一包中的某些物理内核可以共享 L3 缓存。
但是这里有两个重要方面:第一,共享缓存的 CPU 数量很少,第二它们在同一个内核/包中。
直接连接所有缓存将失去CPU(整体)内部与CPU外部之间的界限。
隔离 CPU 让我们可以创建非常可定制和模块化的系统,外部协议是一个让我们隐藏实现细节的接口,这比紧密连接的缓存所带来的速度增益更有价值。
当我们需要这样的速度时,我们会构建专用的集成系统组件,例如coprocessor。
缓存没有直接连接的原因有很多,我不能代表行业领导者,但这里有一些通用的想法。
简单地说:可以直接连接缓存,只是不值得分立组件。它是针对集成组件完成的。。
【讨论】: