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

相关推荐
Dawson Zhu13 小时前
《Agentic Design Patterns》第 1 章导读:提示词链(Prompt Chaining)
人工智能·语言模型·架构·aigc·agi
feiyu_gao13 小时前
Mindcraft:从个人实践到可复用模式集
架构·aigc·ai编程
abigalexy14 小时前
Claude Code从零搭建新项目全流程AI实现-宠物生命周期管理App
架构·aigc·ai编程
写后端的胖头鱼15 小时前
【高频面试题】微服务项目排查错误流程(万字详解)
微服务·架构·问题定位·链路·线上排错
小小龙学IT15 小时前
Kubernetes 深度实践:架构、API 与避坑指南
容器·架构·kubernetes
MayBaymax16 小时前
MQ 基础概念与架构
java·中间件·架构·java-rocketmq
嘎嘎风16 小时前
MiniMind 学习笔记之 04 注意力之外:位置、记忆、省显存、省时间、深加工
架构·源码阅读
国科安芯17 小时前
商业立方星平台中高集成度抗辐射MCU的功耗优化与批量化应用可行性探讨
单片机·嵌入式硬件·架构·risc-v·抗辐射·as32x601
ESDWAN19 小时前
企业跨境网络合规建设指南:从线路选择到数据出境的全流程方案
网络·架构
用户53723128824620 小时前
从一句话到水密 STL:给科研工具装 LLM Agent 的安全架构实录
架构