编辑
2025-12-20
记录知识
0
请注意,本文编写于 141 天前,最后修改于 141 天前,其中某些信息可能已经过时。

目录

MESI
MOESI
参考

本文简单汇总MESI和MOESI协议理解。

MESI

  • M: Modified

在当前CPU上是属于被修改过的,其他CPU尚未同步,内存的值已经过时

  • E:Exclusive

独占的,其他CPU尚未同步,内存的值和当前独占的这份相同,如果其他CPU在bus上发 snooping,则同步给其他CPU,自己转成 Shared

  • S:Shared

和其他CPU上的内容共享,并且内存的值和当前CPU已经其他CPU上的cache值一致

  • I:Invalid

无效的,自己这份cache已经无效了,snooping自动会更新

MESI的状态机如下:

  1. 自己的cache更新状态机

image.png

  1. snooping下的cache更新状态机

image.png

arm上有几个bit来查看cache状态,如下

image.png

MOESI

相比于MESI多了个O,是从S状态的一种分化,O指的是Owner。所以S和O的概念会有刷新

  • O:Owner

和Share类似,其他CPU上也是共享的,但是这份数据的Owner是当前CPU的cache,与Share不一样的是,O标志的更新,所以内存的值可能是旧的

  • S:Shared

完全的共享状态,所以CPU都是当前这份内容,内存中的值是否是cache的值看snooping的情况

  1. 自己的cache更新状态机

image.png

  1. snooping下的cache更新状态机

image.png

arm上有几个bit来查看cache状态,如下

image.png

参考

https://en.wikipedia.org/wiki/MESI_protocol https://en.wikipedia.org/wiki/MOESI_protocol