在NUMA架构(非统一内存访问)中,每个处理器都拥有自己的第一级缓存,因此有一个用于处理器通信的协议(MESI)。但为什么每个处理器都可以直接连接到其他处理器呢?我读过这个"连接速度不够快",但这并没有解释太多。
感谢。
答案 0 :(得分:5)
首先,拥有L1缓存并不意味着 NUMA 架构,主板拓扑仍然是使机器 UMA 或 NUMA <的主要元素/ em>的。
其次,正在使用的Cache Coherence协议取决于架构,可能与 MESI 不同(实际上 MESIF 更适合 NUMA 机器)。
转到您的问题
每个处理器都可以连接到彼此处理器缓存。事实上,每个缓存一致性协议都是这样做的,而不是通过允许直接读/写,因为它需要很多努力以及可重用性差。
然而,可以直接将CPU连接到另一个CPU缓存,实际上它是以Intel CPU的方式实现的。
逻辑核心(即超线程核心)可以共享L2高速缓存,并且同一包中的一些物理核心可以共享L3高速缓存
但是,这里有两个重要方面:第一,共享缓存的CPU数量,第二个它们位于相同的核心/包中。
直接连接所有缓存会失去CPU(整体上)内部与CPU的外部之间的界限。
隔离CPU让我们创建了非常可定制的模块化系统,外部协议是一个让我们隐藏实现细节的接口,这比紧密连接的缓存提供的速度更有价值。
当我们需要这样的速度时,我们会构建专用集成系统组件,就像coprocessor一样。
缓存没有直接关联的原因有多种,我不能代表行业领导者,但这里有一些通用的想法。
如此简单:可以直接连接缓存,这对于分立组件来说是不值得的。它适用于集成组件。