缓存一致性协议——MESI

缓存一致性协议——MESI我们知道 线程之间的可见性能用 volatile 关键字来解决 那么它为什么能解决呢 缓存包含 L1 L1d 数据缓存 存放数据 L1i 指令缓存 执行数据的指令码 L2 L3 其中 L3 是 CPU 共享 而 L1 和 L2 是每个 cpu 独占的缓存空间 这三级缓存都是集成在 CPU 内的缓存结构 他们的作用就是为 CPU 和主内存之间提供一个高速缓冲区 L1 最靠近 CPU 核心 L2 其次 L3 再次 运行速度方面 L1 最快 L2 次快 L3 最慢 容量大小方面 L1 最小 L2 较大 L3 最大 CPU 会先在最快的 L1 中寻找需要的数据 找不到再

我们知道,线程之间的可见性能用volatile关键字来解决,那么它为什么能解决呢?

可见性问题的产生

CPU的高速缓存

在这里插入图片描述

可见性问题!!

当多个线程并行执行一个共享数据时,都同时在本cpu的高速缓存中的时候,最新的数据对其他的cpu是不可见的!!所以CPU又引入了总线锁与缓存锁

总线锁和缓存锁

缓存锁引入了缓存一致性协议来保证,有MSI,MESI.MOSI等等!

CPU为何要有高速缓存

 CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。 

带有高速缓存的CPU执行计算的流程:

  1. 程序以及数据被加载到主内存
  2. 指令和数据被加载到CPU的高速缓存
  3. CPU执行指令,把结果写到高速缓存
  4. 高速缓存中的数据写回主内存

CPU缓存一致性协议MESI

协议动态演示地址

具体的细节动态图里有详细体现,比我在这哔哔哔半天有用的多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204030.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:10
下一篇 2026年3月19日 下午9:11


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号