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

相关推荐
老周聊架构2 小时前
聊聊Flink:Flink的运行时架构
大数据·架构·flink
SofterICer4 小时前
GSMA eUICC 远程配置架构技术规范笔记 (SGP.02 v3.2)
笔记·架构
声网5 小时前
「AI Infra 软件开源不是一个选项,而是必然」丨云边端架构和 AI Infra专场回顾@RTE2024
人工智能·架构·开源
小华同学ai6 小时前
WukongCRM:github高分开源项目,基于微服务架构 +vue ElementUI的前后端分离CRM系统
架构·开源·github
gorgor在码农6 小时前
Redis 高并发缓存架构实战与性能优化
redis·缓存·架构
每天写点bug6 小时前
golang项目三层依赖架构,自底向上;依赖注入trpc\grpc
开发语言·架构·golang
东软吴彦祖6 小时前
将已有的MySQL8.0单机架构变成主从复制架构
服务器·mysql·架构
上官花雨6 小时前
超详细:数据库的基本架构
数据库·架构
Linux运维技术栈8 小时前
企业生产环境-麒麟V10(ARM架构)操作系统部署kafka高可用集群
linux·运维·架构·kafka·arm