本文简单汇总MESI和MOESI协议理解。
在当前CPU上是属于被修改过的,其他CPU尚未同步,内存的值已经过时
独占的,其他CPU尚未同步,内存的值和当前独占的这份相同,如果其他CPU在bus上发 snooping,则同步给其他CPU,自己转成 Shared
和其他CPU上的内容共享,并且内存的值和当前CPU已经其他CPU上的cache值一致
无效的,自己这份cache已经无效了,snooping自动会更新
MESI的状态机如下:


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

相比于MESI多了个O,是从S状态的一种分化,O指的是Owner。所以S和O的概念会有刷新
和Share类似,其他CPU上也是共享的,但是这份数据的Owner是当前CPU的cache,与Share不一样的是,O标志的更新,所以内存的值可能是旧的
完全的共享状态,所以CPU都是当前这份内容,内存中的值是否是cache的值看snooping的情况


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

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