如何设置自定义的稿纸,例如我需要设计一份田字格或米字格的稿纸、我需要间隔线间距更小的稿纸等等。
795
2022-05-29
大家好,我是小林。
我之前写过 CPU 缓存一致性 MESI 协议:10 张图打开 CPU 缓存一致性的大门。
然后期间挺多人对 MESI 协议的转换有疑问,其实我在文章中把 MESI 协议状态切换的各个过程都总结成了一个表格,可能内容太多,很多小伙伴没有仔细看。
就在昨天,我发现个可以「在线体验 MESI 协议状态转换」过程的网站,地址如下:
https://www.scss.tcd.ie/Jeremy.Jones/VivioJS/caches/MESIHelp.htm
我先给大家复习下 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(共享)。
缓存
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。