ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【缓存】MESI 缓存一致性协议 Gif 动画

2022-01-03 20:33:37  阅读:226  来源: 互联网

标签:缓存 读取 a0 写入 CPU0 Gif MESI 内存


缓存一致性可以分为三个点:

  1. 在进程每个写入运算时都立刻采取措施保证资料一致性
  2. 每个独立的运算,假如它造成资料值的改变,所有进程都可以看到一致的改变结果
  3. 在每次运算之后,不同的进程可能会看到不同的值(这也就是没有一致性的行为)

缓存一致性协议有哪些:

 缓存一致性协议有MSI,MESI,MOSI,Synapse,Firefly及DragonProtocol等等

inter采用MESI协议。

注意编程中Valotile关键 的可见性是基于缓存一致原则的,不是基于MESI协议的。

MESI(梅西)协议:

 

 VivioJS 动画旨在帮助您了解 MESI 缓存一致性协议。

描述了一个多处理器系统,包括3个CPU,具有本地缓存和主内存。为简单起见,主存储器包括4个位置a0,a1,a2和a3。缓存是直接映射的,包含两组。偶数地址(a0 和 a2)映射到设置 0,而奇数地址(a1 和 a3)映射到设置 1。

注意:为了简化此动画,缓存行的大小和 CPU 读/写操作的大小是相同的。但是,在写操作未命中时,CPU 会读取内存,即使它将完全覆盖缓存行。这模拟了实际缓存的行为,其中缓存行的大小通常大于 CPU 读/写操作的大小。

 

 

每个 CPU 都包含一些按钮,这些按钮在指定的内存位置上启动读取或写入事务。"CPU 写入"将递增值(最初为 1)写入"内存"。

我们的想法是按下按钮,看看是否可以遵循发生的操作和状态转换。可以通过按右上角的"无错误"按钮将错误引入动画中。看看你是否能确定错误是什么!

地址和数据总线上的流量方向分别由蓝色和红色箭头指示。事务中涉及的缓存行和内存位置显示为绿色。陈旧的内存位置显示为灰色。

缓存行可以处于以下 4 种状态之一。无效:缓存中不存在缓存行。EXCLUSIVE:仅此缓存中存在的缓存行,并且与内存中的副本相同。已修改:仅此缓存中存在缓存行,并且内存副本已过期(过时)。SHARED:此缓存中的缓存行以及可能的其他缓存,所有副本都与内存副本相同。对共享高速缓存行的写入是通过写来写的,而对EXCLUSIVE高速缓存行的写入是回写。如果缓存观察它所包含的地址的总线事务,它将断言 SHARED 总线行。MESI 是一种无效的缓存一致性协议。下面是缓存行的状态转换图:

1    CPU0:读取 a0    CPU0 从内存[非共享]读取 a0 - 状态 E

2    CPU0:读取 a0    CPU0 从缓存读取 a0 - 状态 E

 

3    CPU0: 写入 a0    CPU0 仅在缓存中更新 a0 - 状态 M

 

 

4    CPU0: 写入 a0    CPU0 仅在缓存中更新 a0 - 状态 M

 

5    CPU1: 读取 a0    CPU1 读取 a0,CPU0 高速缓存干预并向高速缓存和内存提供数据 - 状态 S

 

6    CPU1: 写入 a0    CPU1 更新缓存和内存中的 a0,并使地址为 a0 - 状态 E 的所有其他缓存失效

 

7    CPU1: 写入 a0    CPU1 仅在缓存中更新 a0 - 状态 M

 

8    CPU0: 写入 a0    CPU0 读取 a0,CPU1 缓存干预并向缓存和内存 (S) 提供数据,然后 CPU0 写入缓存和内存中的 a0,使地址为 a0 的所有其他缓存失效 - 状态

9    CPU0: 写入 a2    CPU0 从内存 (E) 读取 a2,然后写入 a2 - 状态 M

 

 

10    CPU0: 写入 a0    CPU0 将 a2 刷新到内存,从内存 (E) 读取 a2,然后写入 a0 - 状态 M


 


下面是缓存行的状态转换图:

 

 素材来源:https://www.scss.tcd.ie/Jeremy.Jones/VivioJS/caches/MESIHelp.htm










标签:缓存,读取,a0,写入,CPU0,Gif,MESI,内存
来源: https://www.cnblogs.com/cdaniu/p/15758916.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有