某个下午偶尔间看到了 MESI 缓存一致性协议,引出了我不少相关的疑惑,写下此文记录
通过这篇文章你能了解到的知识
- MESI 协议是什么,解决了什么问题
- 指令重排 是什么,解决了什么问题
- 内存屏障 是什么,解决了什么
- MESI 与 并发同步的区别
MESI 缓存一致性协议
MESI 产生的前提
- 多级缓存的出现
- 多核 CPU 的出现
总之为了计算机的性能,现代计算机都具备上述两点的设计,下图为不同存储的 IO 速度对比
MESI 解决的问题
由于现在计算机都是多核 CPU 了,并且每一个 CPU 都有自己独立的缓存(如下图架构),这样就会有可能多个 cpu 操作同一份数据,导致各个 cpu 缓存中的同一份数据值不一致的情况。