【计算机体系架构】 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控制器会根据操作类型和当前状态进行相应的状态转换。

相关推荐
凌虚3 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
努力进修5 小时前
KFS 全链路并行架构:异构增量同步的 TB 级性能突破
架构·kfs
老王以为6 小时前
走进 AI Agent
前端·人工智能·架构
SLD_Allen6 小时前
大模型推理引擎架构深度解析:vLLM、SGLang与TensorRT-LLM的技术路线对决
架构·vllm·sglang
cxr8286 小时前
Graphify vs GitNexus vs CodeGraph — 三工具架构深度对比
开发语言·架构·知识图谱
奈斯先生Vector7 小时前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney
隔窗听雨眠8 小时前
生产级Kubernetes集群部署完全指南:从kubeadm到高可用架构落地
容器·架构·kubernetes
IT小白杨9 小时前
2026亚马逊多店铺运营的环境隔离架构与合规实践
经验分享·架构·业界资讯·指纹浏览器
&Hello Code9 小时前
3.解决STM32工程混乱:一套可复用六层架构,GPIO 、LED 实战演示
stm32·嵌入式硬件·架构
Embedded-Xin9 小时前
Rust学习——Cargo工具
linux·学习·架构·rust·嵌入式