2015-07-12 25 views

回答

5

首先,具有L1高速缓存并不意味着NUMA架构,主板拓扑仍然是主元件,使一个机器UMANUMA

其次,Cache Coherence协议中的使用是依赖于体系结构,并且可以不同于MESI(实际上MESIF是更适合NUMA机)。


至于你的问题

每个处理器可以连接到彼此处理器缓存。实际上,每个高速缓存一致性协议都这样做,而不是通过允许直接读/写,因为需要很多努力,重复性差

但是,可以直接将CPU连接到另一个CPU缓存,实际上它可以在Intel CPU上实现。逻辑核心(即超线程核心)可共享L2高速缓存,并且同一封装中的一些物理核心可共享L3高速缓存。
但是这里有两个重要方面:第一,共享高速缓存的CPU数量很少和第二个它们位于相同的核心/程序包中。

连接所有缓存直接将失去之间是什么的CPU,什么是在CPU外部的边界(作为一个整体)。
隔离CPU让我们创建非常可定制的模块化系统,外部协议是一个让我们隐藏实现细节的接口,这比通过紧密连接的高速缓存提供的速度增加更多。
当我们需要这样的速度时,我们会建立专用集成系统组件,如coprocessor

高速缓存不直接连接的原因有很多,我不能为行业领导者说话,但在这里有一些通用的想法。

  1. 它不会缩放
    2个处理器意味着1个链接,3个处理器意味着3个链接,4个处理器意味着6个链接等等。
    n处理器需要C(n,2)链接即n * (n-1)/2链接。
    也可以只连接具有兼容缓存接口的CPU,这可能意味着只能连接相同的CPU。缓存体系结构是经常变化的东西,线条可能变得更大,结合性可能会改变,信号的定时可能更快。
    最后,如果CPU有足够的引脚连接到另外四个CPU,则只能创建四个CPU系统。
  2. 它需要很多管脚的。
    得到安宁访问缓存需要大量的管脚,还有每核心两个或三个缓存和每一个需要解决的问题和控制,这需要揭露了很多针,串行接口是不是因为这将是一种选择太慢了。
    如果您添加了每个处理器必须相互连接,而不是引脚数量按二次方爆炸。
    如果您使用高速缓存之间的共享总线,则实际上使用的协议是MESI,该协议试图避免拥塞总线,因为如果您的CPU甚至很少,则共享总线上的流量非常大,等待轮到使用它的时间会减慢CPU(即使存储缓冲区和失效队列)。
  3. 很慢
    缓存与内核高度集成,它可能支持多个读/写端口和其他增加并行化的接口。如果没有大量的引脚(并且尺寸和成本大幅增加),所有这些都无法从封装/内核中暴露出来。
    缓存在物理上是接近的核心,这最小化传播延迟,考虑一个3GHz的CPU的周期是1/3 * 10^-9,在该时刻的光可行进至多10厘米5厘米为往返行程,信号不会以光速传播。此外,只有内核访问缓存时,设计人员可以根据内核的内部架构进行一些优化。如果内核属于另一个可能不同的CPU,则这是不可能的。
  4. 它是复杂的
    让高速缓存由多个CPU被访问需要复制大量的电路,例如是高速缓存关联的,这意味着当请求一个地址,标签必须被一组可能的候选之间的验证,该电路必须被复制以允许其他CPU异步读取/写入缓存。

所以简单地说:它可以直接连接缓存,但它不值得分立元件。这是为集成组件完成的。

+0

非常感谢您的回答! – user1289

相关问题