讲一讲MESI缓存一致性协议

M(Modify)表示缓存行中的数据已经修改了,和主内存不一致,此时会阻止其他读取主内存对应数据的操作

E(Exclusive)表示缓存行中的数据被当前缓存独占,其他缓存没有缓存此缓存行的数据,此时会监听其他缓存操作该缓存行对应在内存中的数据,如果有,那都将改为S

S(Share)表示共享状态,就是该缓存行的内容也被缓存在其他缓存中,  此时会监听其他缓存是否有将该缓存行设置为M修改或者E独占的状态,如果有,那将改为I

I(Invalid) 表示失效状态

接下来就根据这四种状态的相互切换来讲一下缓存之间的协同流程

首先Core A读取主存中的A数据放进缓存行中,此时这个缓存行会变成E状态

接着,CoreB读取主存中的A数据放进缓存行中,CoreA检测到该缓存行的数据也被其他缓存缓存了,于是将存放了A缓存行改为S共享状态,Core读取时也检测到,于是也设置为S共享状态

此时CoreA打算修改数据A,将其设置E修改状态,CoreB检测到,于是将缓存了A数据的缓存行设置为I无效状态,完成后,Core A再将数据A进行修改

最后CoreB打算读取数据A 了,于是CoreA监听到并将数据A同步到主内存中,并将数据A修改为E状态,于是数据B就可以读取主内内的数据A了,CoreA监听到了,于是就改回了S状态,CoreB也设置为S状态,这就又回到了一开始共享的状态了.

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值