用动图的方式,理解 CPU 缓存一致性协议!
【摘要】 MESI 状态到底是如何在不用加锁的情况下,是如何实现 CPU 缓存一致性的。
我先给大家复习下 MESI 协议,然后再跟大家讲一些这个网站怎么用。
MESI 协议
-
Modified,已修改
-
Exclusive,独占
-
Shared,共享
-
Invalidated,已失效
网站体验
-
第一部分,内存。显示内存地址和数据;
-
第二部分,CPU 缓存。显示 CPU 缓存的变量数据和 MESI 协议状态,因为我现在还没开始操作,所以显示的是空白。
-
第三部分,CPU 操作。共有三个 CPU,每个 CPU 都有各自的 Cache,CPU 操作分别「读」和「写」,这部分是我们手动操作的部分。
-
数据总线(Data Bus):在CPU与内存之间来回传送需要处理或是需要储存的数据。
-
地址总线(Adress Bus),用来指定在内存之中储存的数据的地址。
-
shared,这个我也不知道是什么总线,网上没搜到资料,网站上最细那条总线就是这个名字,作用是控制 Cache 的数据状态。
-
点击 CPU2 的 read a0 操作;
-
CPU2 会向地址总线,发送读取 a0 变量的数据的请求,此时该请求不仅会被内存收到,也会被其他 CPU 核心收到。
-
CPU1 从地址总线得知,CPU2 发起的读取地址存在于 CPU1 Cache 里,于是 CPU1 Cache 里数据的状态会从 E(独占)变更为 S(共享);
-
内存收到 CPU2 发起的读取 a0 数据的请求后,就会通过数据总线将数据传递给 CPU2;
-
最后数据会写到 CPU2 Cache 里,且状态是 S(共享)。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)