msi mesi moesi cpu缓存一致性

想想计算机代码都在干啥,等待事件,处理事件

所以遍历事件,check,handle

所以for(i++){if(eventsi){handlei}}

所以cache就诞生了。这个i 代表了时间局部性,它老是会访问一个地址。然后events\[\]是空间局部性,代码通常会访问相邻的地址。万恶的链表就没这福利。

cache按行为单位从内存捞出数据保存下来,供cpu享用。这里又扯到了存储金字塔。

大多数情况他们都跑的好好的,但是想想两个线程共享一个变量,他两跑在两个cpu上。

现在就需要引入什么机制来保证所有u上的数据都是一致的。

所有的不一致都是由于有人想做出变化,想写。

msi

Modified Shared Invalid

大家最开始都是 s,然后咱u写了就便m了,然后通知其他u变成i。其他u就不能用这一行了。

mesi

多了一个 Exclusive

如果这一行只有咱有,则不是s而是e,这样咱想改就直接e变m,不需要通知其他u改i了。大多数的数据他是不在多个u共享的,咱系统这么多进程,大多相互也八竿子打不着,然后多线程,也不能全是共享变量不是?

moesi

多了一个owner。

一般情况下,A改了行变成m后,其他B想用这行,必须A写回ddr,B再去ddr里面load。这一来一回时间就长了。然后现在,B想用这行,A直接m变o,然后把这行发个B,B是s。节省了这一来一回的时间。当然最后在某个trigger还是会写回ddr来个大同步。主要cover微改的case。

当然,有这些协议有专门的状态机转移图,细节比这复杂的多了。

相关推荐
gwf2162 小时前
SSD读写速度深度解析:顺序读写vs随机读写、IOPS、延迟,你的硬盘性能到底怎么看?
git·嵌入式硬件·缓存·github·智能硬件
番茄炒鸡蛋加糖4 小时前
缓存三大问题
缓存
江晓鱼未暖9 小时前
十七、Redis 核心原理与架构详解
大数据·数据库·数据仓库·redis·缓存·架构
小罗水9 小时前
第13章 Redis 缓存、幂等锁与任务状态
数据库·redis·缓存
热心市民lcj10 小时前
Spring Boot 整合 Caffeine 本地缓存实战
spring boot·后端·缓存
zx11545011 小时前
【热点 Key 探测与加长缓存 TTL 实战】
缓存
toooooop81 天前
如何用 ss + ps 精准定位本机 Redis 的“隐形”消费者?
linux·数据库·redis·缓存
软萌萌的11 天前
C#中的多级缓存架构设计与实现深度解析
缓存·c#·wpf
醉城夜风~1 天前
HTML表单域学习博客:表单标签、输入框、按钮详解
android·java·缓存
肥胖小羊1 天前
企业微信应用的 Token 缓存策略与分布式锁高可用设计
分布式·缓存·企业微信