Cache一致性协议

在multi-core处理器中,一般情况下,数据可以被多core共享。如果多core访问了一个相同地址,为了保证访问数据的正确性,需要进行数据同步。
常用的最简单的一致性协议为MESI :
Modified: 数据只存在此cacheline中,cache和下级存储不一致,dirty (注意:Instruction cache没有M状态)
Exclusive:数据只存在此cacheline中,cache数据和下级存储一致,clean
Shared : 数据存在多个(或1个)cacheline中, cache数据和下级存储一致,clean
Invalid: 此cacheline数据无效

其他增强版:
Intel 采用MESIF,增加一个F状态( Forward )
AMD采用MOESI,增加一个O状态(Owned )
IBM 采用MERSI,增加一个R状态 (Recent)

以一个inclusive + write back + Write allocate 的cache为例, 且只考虑L1d cache 和L2,来看下cache的状态迁移。
在这里插入图片描述

也可参考《大话处理器》中的状态迁移图
在这里插入图片描述

参考 木兮清扬 《大话处理器》
https://blog.csdn.net/muxiqingyang/article/details/6615199
https://en.wikipedia.org/wiki/Cache_coherence

猜你喜欢

转载自blog.csdn.net/zgcjaxj/article/details/114970506
今日推荐