【计算机体系架构】 MESI缓冲一致性

高并发学习参考
https://blog.csdn.net/MrYushiwen/article/details/123049838
https://cloud.tencent.com/developer/article/2197857

ESI 是指Cache 行的三种一致性状态:E(Exclusive,独占),S(Shared,共享),I (Invalid,无效)。Invalid状态表示当前Cache行是无效的,对其进行任何读写操作都会引发缓存缺失(Cache Miss)。Shared状态表明当前Cache行可能被多个处理器核共享,只能读取,不能写入,对其写入也会引发缓存缺失。Exclusive状态表明对应Cache行被当前处理器核独占,该处理器核可以任意读写这个Cache行,而其他处理器核如果想读写这个Cache行需要请求占有这个Cache行的处理器核释放该Cache行。

MESI 在ESI 的基础上增加了M(Modified,修改)状态。其中Shared状态和Invalid状态和ESI的完全一样,而Exclusive 状态表示当前Cache块虽然被当前处理器核独占,但是还没有被修改,与内存中的数据保持一致,如果处理器核想将其替换出去,并不需要将该Cache行写回内存。Modified状态表示当前Cache行被当前处理器核独占并且已经被修改过了,如果处理器核想替换该Cache行,需要将该Cache行写回内存。与ESI协议相比,增加一个Modified状态的优点是减少了Cache到内存的数据传输次数,Cache只需要将Modified状态的Cache行写回内存。

在多核处理器系统中,同一份数据可能同时被读取到多个核心的缓存,当CPU写数据时,需要保证数据在多个核心cache之间的一致性。

MESI(Modified, Exclusive, Shared, Invalid)协议就是一种广泛使用的缓存一致性协议。MESI协议定义了四种状态来标记缓存行的状态,分别是Modified(修改)、Exclusive(独占)、Shared(共享)和Invalid(无效)。

  1. Modified状态:表示当前缓存行的数据是修改过的(即与主内存中的数据不一致),并且只在当前CPU的缓存中是修改过的。

  2. Exclusive状态:表示当前缓存行的数据是有效的,且在其他CPU的缓存中没有该行数据。同时,当前缓存行数据与内存中的数据相同。

  3. Shared状态:表示多个CPU的缓存中均缓存有这行数据,并且缓存中的数据与内存中的数据一致。

  4. Invalid状态:表示当前缓存行中的数据无效。

在MESI协议中,每个Cache的Cache控制器不仅知道自己的读写操作,而且也监听其它Cache的读写操作。当发生读写操作时,Cache控制器会根据操作类型和当前状态进行相应的状态转换。

相关推荐
薛定猫AI17 分钟前
Codex 与 Claude Code 安装配置完全指南
大数据·人工智能·架构
GISer_Jing1 小时前
Claude Code插件系统全解析
前端·人工智能·ai·架构
KaMeidebaby1 小时前
卡梅德生物技术快报|peg 修饰调控 MXene/WS2 异质结,氨气传感器制备与机理研究
大数据·前端·人工智能·架构·spark·新浪微博
龙佚1 小时前
抖动缓冲与播放控制:平滑播放的艺术
前端·架构
X54先生(人文科技)2 小时前
《元创力》纪实录·卷宗2.1刻舟求剑:一场关于“唯一解”的范式战争
人工智能·架构·开源·零知识证明
@insist1232 小时前
系统架构设计师-软件质量属性战术与架构评估方法全解
架构·系统架构·软考·系统架构设计师·软件水平考试
@insist1233 小时前
系统架构设计师-五大经典软件架构风格详解与软考真题应用指南
架构·系统架构·软考·系统架构设计师·软件水平考试
数据库小学妹3 小时前
InnoDB内存架构解密:Buffer Pool与性能优化实战
数据库·经验分享·sql·性能优化·架构
GISer_Jing3 小时前
Claude Code MCP Server 集成全解析
前端·人工智能·ai·架构
wengqidaifeng3 小时前
2. OpenClaw 架构落地指南:部署、渠道集成与安全边界全解
安全·ai·架构·openclaw