每日一问(20210919) MESI协议

问题:
什么是MESI协议?

MESI协议

1. MESI的状态

基础概念

状态 是指的专用缓存块的状态。
即:每个核的私有缓存上,某个缓存块的状态。

  • 对于单核处理器,每个 cache line 有 2 个标志:dirty 和 valid。
  • 对于多核处理器,要多出来一些保证一致性的标志,MESI 包含 4 个标志:Modified, Exclusive, Shared, Invalid
    • 4 个状态可以使用两个 bit 来表示。

    • 四种状态的意思:

      NOTE:(这里的内存,也可能是共享LLC)

      状态含义
      M这个缓存块有效,被本cache修改了,和内存中 不一致,只存在于本cache中
      E这个缓存块有效,和内存中一致,只存在于本cache中
      S这个缓存块有效,和内存中一致,存在于 多个cache
      I这个缓存块 无效

MSI 状态的拓展
  1. 引入 E(Exclusive) 状态
  • 表示缓存块仅驻存在一个缓存中,而且是清洁的。
    • 问:什么是清洁?
      dirty bit 代表:被修改后未下一级缓存,与下一级缓存不一致
      清洁就是不dirty —— 与下一级缓存(即内存或共享LLC)一致

  • 好处:
    • 在同一核心对于处于独占状态的块进行后续写入时,不需要访问总线,也不会生成失效操作
    • 因为处理器知道这个块在本地缓存中是独占的,只需要将独占改为已修改
  1. 引入 O(Owned) 状态
  • 表示这个缓存块有效,被本cache修改了,和内存中不一致,但是存在于多个cache中,
  • 区别:
    • 在 MESI 中,共享 M 状态下的缓存块,会将其状态改为 S,并必须将这个块写回内存中;
    • 在 MOESI 中,会在原缓存中由 M 变为 O,不再将其写回内存中;新共享这个块的缓存保持 S 状态;
      • 因为存储器中没有最新内容,这个块的拥有者必须在发生缺失时提供该快

2. MESI 的状态转换

  • 共有四种事件可能会导致缓存块的状态发生变化:
    • Local Read
    • Local Write
      • 本地core发出的读、写请求
    • Remote Read
    • Remote Write
      • 其他core发出的读、写请求

  • 对于每个缓存块,都有 当前状态——》事件——》触发行为——》下一个状态 的过程。
  • 在触发行为时,需要考虑到其他 cache 中对这个缓存块的状态,也可能会改变其他 cache 中这个缓存块的状态!
  • 状态转换:
    .
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值