处理器协同机制其一缓存一致性协议(MESI)

3 篇文章 0 订阅
3 篇文章 0 订阅

目录

处理器协同机制其一缓存一致性协议(MESI)

处理器协同机制其二内存屏障与内存顺序(及Store Buffer与Invalidate Queue)

处理器协同机制其三C++内存顺序与栅栏(及依赖性读屏障)

一、缓存结构

       现代CPU的速度远快于内存系统,因此引入缓存(Cache),其结构如下:

       缓存和内存以固定大小的数据块进行交互,这些数据块被称为缓存行,其大小一般是2的整数幂次。在硬件上,用哈希表来实现高速缓存。

Cache miss : 缓存缺失,CPU要操作的数据不在其缓存中,需要从他处获取(一般是内存)。

Cache hit : 缓存命中,CPU要操作的数据在其缓存中,可以直接操作缓存。

       提升缓存命中率,能提高系统性能。从缓存为空,CPU不断处理数据(从内存中读取),缓存越来越满,而缓存大小有限,会出现要缓存缺失的数据必须要覆盖(驱逐)一些已缓存的数据,这样会达到缓存的稳定状态,此时缓存命中率越高则性能越优。

二、缓存一致性协议

       此处只讲MESI协议:

M : modified,该缓存行刚被修改,其数据不会存在于他处,负责将之写回内存或者交给其他缓存(驱逐此缓存行之前必须完成)。

E : exclusive,该缓存行是当前核心独有的,其与内存一致,可以直接对其操作。

S : shared,其数据可能在一个或多个CPU cache中,其与内存一致,需先转换为E状态才能进行修改(需要和其他CPU cache进行沟通)。

I : invalid,该缓存行是空的。

当需要驱逐缓存行时,优先使用I状态的缓存行,其次驱逐S和E状态的缓存行。

        MESI协议消息:

1、Read : 读消息包含需要读取的缓存行的物理地址。

2、Read Response : 回应读消息包含之前读消息所请求的数据,它可能来自内存或其他缓存,若另一个缓存拥有请求的缓存行数据且为M状态,则必须回应读消息。

3、Invalidate : 使无效消息包含需要改为I状态的缓存行的物理地址,其他缓存必须移除相应的数据并回应。

4、Invalidate Acknowledge : 认可使无效消息,收到使无效消息且移除相应数据後,必须回复认可使无效消息。

5、Read Invalidate : 使无效读消息包含要读取的缓存行的物理地址,等同于Read+Invalidate,其希望收到一个回应读消息和多个认可使无效消息。

6、Writeback : 写回消息包含要写回内存的地址和数据,M状态的缓存行通过写回消息的完成以允许被驱逐,从而为其他数据腾出空间。

       MESI状态图解:

EM : 修改,处理器可以直接修改E状态的缓存行,这不需要MESI消息。

ME : 写回,缓存行写回内存,这需要“写回消息”。

有关“读消息”:

IS : 读消息,处理器加载未命中的缓存,由其他缓存响应。

IE : 读消息,加载未命中的缓存,由内存响应(有些体系将此归为IS,即读消息不会将缓存行状态改为E)。

ES : 回应读消息,其他处理器读取此缓存行必须以回应,不用写回内存。

MS : 回应读消息,其他处理器读取此缓存行必须以回应,可能会写回内存。

有关“使无效消息”:

SE : 使无效消息,处理器将要修改此缓存行。或者所有其他缓存弹出该缓存行。

SM : 使无效消息,处理器原子的修改此缓存行。

SI : 认可使无效消息,收到使无效消息後做出回应。或者主动弹出缓存行。

有关“使无效读消息”:

IE : 使无效读消息,处理器将要修改未命中的缓存行。

IM : 使无效读消息,处理器原子的修改未命中的缓存行。

EI : 认可使无效消息且回应读消息。或者主动弹出缓存行。

MI : 认可使无效消息且回应读消息。或者主动弹出缓存行(伴有写回内存)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值