gpt4 book ai didi

x86 - 现代 x86 CPU 使用什么缓存一致性解决方案?

转载 作者:行者123 更新时间:2023-12-03 21:54:06 26 4
gpt4 key购买 nike

我对缓存一致性系统在现代多核 CPU 中的功能有些困惑。我已经看到基于监听的协议(protocol),如基于 MESIF/MOESI 监听的协议(protocol)已在 Intel 和 AMD 处理器中使用,另一方面,基于目录的协议(protocol)似乎对多核更有效,因为它们不广播,而是将消息发送到具体节点。

什么是 AMD 或 Intel 处理器中的现代缓存一致性解决方案,它是基于监听的协议(protocol),如 MOESI 和 MESIF,还是仅基于目录的协议(protocol),还是两者的组合(基于监听的协议(protocol),用于同一节点内的元素之间的通信? ,以及基于节点到节点通信的目录)?

最佳答案

MESI 是根据监听共享总线来定义的,但不,现代 CPU 实际上并不是这样工作的。每个缓存行的 MESI 状态可以通过消息和监听过滤器(基本上是一个目录)来跟踪/更新,以避免广播这些消息,这正是 Intel (MESIF) 和 AMD (MOESI) 实际所做的。
例如Intel CPU (before Skylake server) 中的共享包容性 L3 缓存让 L3 标签充当监听过滤器;除了跟踪 MESI 状态外,它们还会记录哪个内核 #(如果有)拥有一行的私有(private)副本。 Which cache mapping technique is used in intel core i7 processor?
例如,带有环形总线的 Sandybridge 系列 CPU(现代客户端芯片、服务器芯片直至 Broadwell)。核心#0 读取一行。该行在核心 #1 上处于修改状态。

  • 在核心 #0 上的 L1d 和 L2 缓存中读取未命中,导致在环总线上向包含该行的 L3 切片发送请求(通过某些物理地址位上的哈希函数索引)
  • L3 的切片获取消息,检查其标签。如果此时发现 tag = Shared,则响应可以通过双向环总线返回数据。
  • 否则,L3 标签告诉它核心 #1 拥有一行的独占所有权:独占,可能已被提升为修改 = 脏。
  • 该 L3 切片中的
  • L3 缓存逻辑将生成一条消息,要求内核 #1 写回该行。
  • 消息到达内核#1 的环形总线站,并让其L2 或L1d 回写该行。
    IDK,如果一个环形总线消息可以被核心 #0 以及 L3 缓存的相关切片直接读取,或者如果消息可能必须一直到达 L3 切片,然后从那里到达核心 #0。 (最坏情况下的距离 = 基本上是围绕环,而不是双向环的一半。)

  • 这是 super 手工波浪式的;不要在具体细节上相信我的话,但是发送诸如共享请求、RFO 或回写之类的消息的一般概念是正确的思维模型。 BeeOnRope 有 an answer,它具有类似的分解步骤,涵盖 uops 和存储缓冲区,以及 MESI/RFO。

    在类似的情况下,核心 #1 可以在没有修改的情况下悄悄删除该行,如果它只是获得了独占所有权但从未写过它。 (加载缓存中的未命中默认为加载到独占状态,因此单独的存储不必为同一行执行 RFO)。在那种情况下,我认为没有线路的核心毕竟必须发回一条消息来表明这一点。或者,它可能直接向也在环形总线上的其中一个内存 Controller 发送消息,而不是返回 L3 切片以强制它这样做。
    显然,每个内核都可以并行发生这样的事情。 (并且每个内核都可以有多个未完成的请求正在等待:单个内核内的内存级并行。在 Intel 上,L2 super 队列在某些微架构上有 16 个条目,而有 10 或 12 个 L1 LFB。)
    四插槽和更高级别的系统在插槽之间具有监听过滤器;采用 Broadwell 和更早版本的 E5-xxxx CPU 的双插槽 Intel 系统只是通过 QPI 链接相互窥探垃圾邮件。 (除非您在双插槽系统中使用支持四插槽的 CPU (E7-xxxx))。多插槽很难,因为在本地 L3 中缺失并不一定意味着是时候使用 DRAM;/另一个套接字可能修改了该行。
    还相关:
  • https://www.realworldtech.com/sandy-bridge/ Kanter 的 SnB 文章涵盖了一些关于 Intel 的环形总线设计 IIRC,尽管它主要是关于每个内核的内部结构。共享包容性 L3 是 Nehalem 中的新事物(当英特尔开始使用“core i7”品牌名称时),https://www.realworldtech.com/nehalem/
  • Why is Skylake so much better than Broadwell-E for single-threaded memory throughput? - 对于具有更多内核的 Intel CPU,环形总线上的更多跃点会损害 L3 和 DRAM 延迟,因此带宽 = 最大并发/延迟。
  • What is the benefit of the MOESI cache coherency protocol over MESI? 还有一些链接。
  • 关于x86 - 现代 x86 CPU 使用什么缓存一致性解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62114759/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com