【问题标题】:MESI protocol. Write with cache miss, but cache line copy exists on another CPU. Why needs fetch from main memory?MESI 协议。写入缓存未命中,但缓存行副本存在于另一个 CPU 上。为什么需要从主存中获取?
【发布时间】:2016-09-04 18:16:15
【问题描述】:

根据此diagram,如果在另一个 CPU 缓存中复制时写入缓存未命中(例如 共享/独占 状态)。步骤是:

1. Snooping cores (with cache line copy) 将状态设置为无效

2. 当前缓存存储新的主内存值。

为什么其中一个监听内核一开始不能将其缓存线值放在总线上?然后进入无效状态。相同的算法用于现有副本的读取未命中。谢谢。

【问题讨论】:

    标签: caching cpu-cache mesi


    【解决方案1】:

    你说得对,当你已经在你身边时从内存中获取一行是非常愚蠢的,但是这个图表描述了功能正确性连贯性的最低要求协议(即必须采取什么措施来避免一致性错误),并且仅指示窥探数据以查找修改的行,因为这是唯一正确的副本。您所描述的是一种可能的优化,某些系统确实是这样的。

    但是,请记住,当今的大多数系统也使用共享缓存(L2 或 L3,有时甚至超出),而且这通常是包容性的(关于所有内核中存在的所有行)。在这样的系统中,没有必要一直到内存,因为在另一个核心中拥有该行意味着它也在共享缓存中,并且在失效后请求核心可以从那里获取它。因此,您的建议仅适用于没有共享缓存的系统,或具有非严格包容性缓存的系统。

    【讨论】:

      猜你喜欢
      • 2017-01-03
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2018-10-03
      • 1970-01-01
      • 2013-09-04
      相关资源
      最近更新 更多