【问题标题】:Advantage of the Exclusive state in MESI?MESI独占状态的优势?
【发布时间】:2020-03-28 05:03:14
【问题描述】:

我了解,对于 MSI,如果我们有一块处于共享状态的内存,即使没有其他人使用它,我们也必须广播我们正在修改的内容。这是 MESI 解决的问题。

但是,当我们确实使用 MESI 时,当从无效变为独占时,我们需要广播我们要读取此内容,并等待如果没有 HIT 响应。这有什么好?

【问题讨论】:

  • 您的“无 MESI”案例正在使用 MSI?没有anything,您甚至没有连贯性,也无法真正构建有用的 SMP 系统。
  • 如果您的行最初是“无效的”,那么无论任何一致性协议如何,这都是缓存未命中。您需要从其他地方阅读它。 (除非您正在执行全行写入,在这种情况下是的,您可以广播无效而不是 RFO。)
  • @PeterCordes 是的,我的意思是 MSI。是的,我需要(从记忆中)阅读它,然后我们做我说的事情。但似乎我并没有为自己保存任何广播,我只是在获取我的东西时这样做,而不是在我从共享变为修改时这样做。

标签: caching cpu-architecture cpu-cache mesi


【解决方案1】:

我需要(从记忆中)阅读它,然后我们按照我说的去做。但似乎我并没有为自己保存任何广播,我只是在获取我的东西时这样做,而不是在我从共享变为修改时这样做。

考虑先加载,然后存储的情况。使用 MSI,您会读入 Shared,然后需要再次脱离核心以获得独占所有权,然后再提交存储。

使用 MESI 读取纯负载的 Exclusive 状态,然后翻转到 Modified 是本地的;没有核心通信。

原来这是维基百科在https://en.wikipedia.org/wiki/MESI_protocol#Advantages_of_MESI_over_MSI中给出的例子

【讨论】:

  • 我明白了,谢谢!因此,我们在 MESI 中获得的命中响应非常少,足以弥补我们必须发送更少的一个请求?
  • @Maoepr3n 不一定,在传统的MESI中,加载事务本身并不能确定在E状态还是S状态下取行。响应消息告诉缓存是否将行置于 E 或 S 状态。所以E状态被机会性地使用。您可以使用需要 E 中的一行的事务来扩展 MESI。例如,x86 提供了PREFETCHW 指令,该指令是通过添加一个加载独占事务来实现的。这会强制线路处于 E 状态,而不管其在相干域中其他代理的缓存中的状态如何。
  • E 状态也被乐观地使用,因为如果加载后没有存储(MESI 优化的场景)并且如果其他内核想要加载该行,与 MSI 相比,这可能导致核心之间的额外流量(告诉在 E 中拥有它的核心转换到 S)。如果这种情况发生太多次,可能会导致更高的功耗和性能下降(由于互连和缓存访问端口的争用,具体取决于具体设计)。
猜你喜欢
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 2014-11-30
  • 2020-04-07
  • 2015-03-13
  • 2010-09-23
  • 1970-01-01
  • 2012-08-08
相关资源
最近更新 更多