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