缓存一致性协议
简介
缓存一致性协议是为了解决多核以及多处理器的多个缓存之间的数据不一致提出来的,缓存一致性协议分为两种,第一种是基于窥探的协议(snoop-based),第二种是基于目录的协议(directory-based),基于窥探的协议在共享总线上广播一致信息,基于目录的协议能更好地扩展。MESI协议是基于目录的协议,本文主要讲述MESI协议。
MESI协议
MESI协议为cache block定义了四种状态,分别是Modified(M),Exclusive(E),Shared(S)和Invalid(I)。
- Modified状态:当前cache block的内容与内存不同,是脏的(dirty),并且只有一个core拥有这个cache block的副本
- Exclusive状态:当前cache block的内容与内存一致,是干净的(clean),并且只有一个core拥有这个cache block的副本
- Shared状态:当前cache block的内容与内存一致,是干净的(clean),但是不止一个core拥有这个cache block的副本
- Invalid状态:当前cache block的内容过时(无效)
举个不那么恰当的例子:
比如说现在有一个project,需要四个人(core)参与到coding工作,为了版本控制,我们将代码传到github&