MESI协议的理解

MESI protocol

MESI协议是一种基于无效的缓存一致性协议。

什么是基于无效呢?
首先讲一下CPU和缓存的关系。计算机在数据处理或信号控制的时候,常与内存进行数据访问,但是内存和CPU的速度差别很大,所以会造成CPU资源浪费问题,为了解决两者的速度不匹配,所以在两者之间加了L1、L2、L3等缓存。在多核计算机中有多个CPU,每个CPU都有自己的缓存,所以就会造成缓存的数据不一致问题。
在早期解决缓存不一致是对总线使用LOCK#锁,使得CPU访问某个变量的时候,其他CPU无法访问。但是这种效率很低。
MESI的主要思想:当CPU写数据时,如果该变量是共享数据,给其他CPU发送信号,使得其他的CPU中的该变量的缓存行无效。

执行写操作的时候有两种策略,一种是write-back caches,另一种是write-through caches。
MESI支持write-back。

Write-through: write is done synchronously both to the cache and to the backing store.

Write-back (also called write-behind): initially, writing is done only to the cache. The write to the backing store is postponed until the modified content is about to be replaced by another cache block.

Write through就是直接写回主存。
Write back就是先标记不写回,等到使用的时候再写回主存。

Write through和Write back的区别

MESI代表了四种状态:

  • M(Modified):在缓存行中被标记为Modified的值,与主存中的值不同,这个值将会在它被读取之前写入内存,并且状态置为Shared。
  • E(Exclusive):在缓存行中被标记为Modified的值与主存中的值一致,被读取时置为Shared状态,被写时置为Modified状态。
  • S(Shared):值也可能存在于其他缓存中,但是它的值和主存中的值一致。
  • I(Invalid):缓存行无效。

很清晰的一篇文章供以后自己查看。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值