码迷,mamicode.com
首页 > 其他好文 > 详细

MESI-CPU缓存一致性

时间:2020-04-19 17:46:00      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:操作   bit   其它   转换   监测   shared   加载   nbsp   blog   

1. 概念

  MESI(Modified Exclusive Shared Or Invalid)是一种广泛使用的支持写回策略的缓存一致性协议。

  cpu核中每个缓存行使用2bit表示4种状态。

2.状态机

  M(Modified,修改的):

    缓存行只被缓存在该cpu中(其它cpu中如果有,也会变为invalid),并且是被修改过的,修改内容需要在未来某个时间点写回主内存。

    写回主内存之后,变为独享状态

  E(Exclusive,独享的):

    该缓存行只被缓存在该cpu缓存中,且是未被修改的。

  S(Shared, 共享的):

    缓存行可能被多个cpu缓存,并且各个缓存行的数据和主存一致。

    当有一个cpu修改缓存行时,其它cpu中的缓存行变为无效状态。

  I(Invalid,无效的):

    该缓存是无效的。

    某个核修改了缓存行后,其它核的缓存行会变为无效。

3.状态转换图解

    A.起初只有一个cpu核加载了缓存,那么缓存行的状态为Exclusive

    技术图片

 

    B.新增了两个核加载了同样的缓存,则状态全部切换为Shared

    技术图片

 

     C.第一个核修改了缓存,则状态变为Modified,其它两个核监测到写操作,则转态变为Invalid状态

     技术图片

 

 

4.原理

  在多核系统中,每个cpu核都有自己的缓存cache,那么久涉及到了缓存一致性问题。

  在MESI模型中,每个cache的控制器不仅知道自己的读写操作,而且还监听了其它cache的读写操作。

  每个cache根据自身的状态和新发生的读写操作转换缓存行当前状态。

 

图片转载自:

  https://blog.csdn.net/muxiqingyang/article/details/6615199 

MESI-CPU缓存一致性

标签:操作   bit   其它   转换   监测   shared   加载   nbsp   blog   

原文地址:https://www.cnblogs.com/gc65/p/12732266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!