在NUMA体系结构(非均匀内存访问)中,每个处理器都有自己的第一级缓存,所以有一个用于处理器通信的协议(MESI)。但为什么不能将每个处理器直接连接到其他的缓存?我读到“连接速度不够快”,但这并没有解释太多。为什么不能从一个处理器直接访问另一个处理器的缓存?
谢谢。
在NUMA体系结构(非均匀内存访问)中,每个处理器都有自己的第一级缓存,所以有一个用于处理器通信的协议(MESI)。但为什么不能将每个处理器直接连接到其他的缓存?我读到“连接速度不够快”,但这并没有解释太多。为什么不能从一个处理器直接访问另一个处理器的缓存?
谢谢。
首先,具有L1高速缓存并不意味着NUMA架构,主板拓扑仍然是主元件,使一个机器UMA或NUMA。
其次,Cache Coherence协议中的使用是依赖于体系结构,并且可以不同于MESI(实际上MESIF是更适合NUMA机)。
至于你的问题
每个处理器可以连接到彼此处理器缓存。实际上,每个高速缓存一致性协议都这样做,而不是通过允许直接读/写,因为需要很多努力,重复性差。
但是,可以直接将CPU连接到另一个CPU缓存,实际上它可以在Intel CPU上实现。逻辑核心(即超线程核心)可共享L2高速缓存,并且同一封装中的一些物理核心可共享L3高速缓存。
但是这里有两个重要方面:第一,共享高速缓存的CPU数量很少和第二个它们位于相同的核心/程序包中。
连接所有缓存直接将失去之间是什么内的CPU,什么是在CPU外部的边界(作为一个整体)。
隔离CPU让我们创建非常可定制的模块化系统,外部协议是一个让我们隐藏实现细节的接口,这比通过紧密连接的高速缓存提供的速度增加更多。
当我们需要这样的速度时,我们会建立专用集成系统组件,如coprocessor。
高速缓存不直接连接的原因有很多,我不能为行业领导者说话,但在这里有一些通用的想法。
所以简单地说:它可以直接连接缓存,但它不值得分立元件。这是为集成组件完成的。
非常感谢您的回答! – user1289