缓存一致性协议

缓存一致性协议确保多核处理器间缓存数据的一致性。MESI协议是一种广泛采用的协议,它定义了Modified、Exclusive、Shared和Invalid四种状态。当多个核心读写同一缓存块时,通过状态迁移来维护一致性。例如,核心本地读取不影响状态,本地写操作会转为Modified状态;远程读可能导致状态由Exclusive变为Shared,远程写则可能使其他核心的块无效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存一致性协议

简介

缓存一致性协议是为了解决多核以及多处理器的多个缓存之间的数据不一致提出来的,缓存一致性协议分为两种,第一种是基于窥探的协议(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(内存)上,四个人分别是甲乙丙丁,对应着core0,core1,core2和core3,每个人都有自己的计算机(local cache),平时在自己的计算机上coding。
现在,假设甲从github(内存)上下载(load)了某一个类文件(cache block)到他的计算机(甲的local cache),而乙丙丁的计算机并没有这个类文件(cache block)的副本,这时候甲独占着这个类文件的副本,并且和github(内存)上一样,所以此时这个类文件的状态是exclusive。
假设这时候丁也从github上下载了这个类文件到他的计算机上,这时候,这个类文件在甲和丁两个人的计算机上都有副

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值