【计算机组成与体系结构Ⅱ】多Cache一致性的模拟分析(实验)

实验八:多Cache一致性的模拟分析

一、实验目的

1:加深对多 Cache 一致性的理解。

2:进一步掌握解决多 Cache一致性的目录协议和监听协议的基本思想。

3:掌握在各种情况下, 目录协议和监听协议是如何工作的,能给出要进行什么样的操作以及 状态的变化情况。

二、实验平台

多 Cache一致性目录协议模拟器和监听协议模拟器

三、实验内容和步骤

Part I:多 Cache 一致性目录协议的模拟与分析

1:掌握多 Cache一致性目录协议模拟器的使用方法

点击【帮助】——【使用说明】,即可查看目录法模拟器的使用方法。

【0:基本显示】

该模拟器模拟4个CPU(A、B、C、D)访存的工作过程。每个CPU中都有一个Cache,该Cache包含4个块,其块地址为0~3。分布式共享存储器中有32个块,其块地址为0~31。Cache中每个块的状态用色块来表示,其中灰色表示“无效”状态,淡青色表示“共享”,橘红色表示“独占”。主存中块的状态由其右边的目录项的颜色来表示,未缓冲状态由黄色来表示,其他两种状态同Cache块。

对于每个CPU,可以指定所要进行的访问是读还是写(从列表中选),并在输入框中输入所要访问的主存块号,然后用鼠标点击在其右边的标有+的按钮,模拟器就将开始演示该在执行过程中,模拟器会在窗口的左上角显示相关的信息。

该模拟器的主菜单有4个:配置,操作,统计,帮助。

【1:配置】

该菜单用于进行配置参数的显示与设置。你可以修改动画播放速度:把游标往右边拖搜可提高播放速度,往左边拖拽可降低播放速度。你还可以选择是否进行优化传块。优化传块是指当要访问的块在某个Cache中,且处于独占状态时,可以不用等该块写回主存后再从主存调块,而是可以直接将该块传送给发出访问请求的结点。


本模拟器采用直接映象方法和写回法。

【2:操作】

可以通过该菜单中的选项来控制模拟器的执行。该菜单下有以下3个选项:单步执行、连续执行、复位。

  1. 单步执行:选用该方式后,点击鼠标或点击左上角的“步进”按钮,都会使模拟器前进一步。
  2. 连续执行:选用该方式后,用鼠标点击标有+的按钮,模拟器会连续演示整个过程,直至该访问结束。
  3. 复位:使模拟器复位,回到初始状态。

【3:统计】

该菜单用于显示模拟器的统计结果,包括各处理机的访问次数、命中次数、不命中次数以及命中率。

【4:帮助】

该菜单下有“关于”和“使用说明”两个选项。

2:对于以下访问序列, 写出目录协议所进行的操作

所进行的访问

目录协议所进行的操作

CPU A 读第 6 块

CPU读Cache A

Cache A不命中

本地向宿主发读不命中(A,6)消息

宿主把数据块送给本地

共享集合为{A}

CPU读Cache A第2行

CPU B 读第 6 块

CPU读Cache B

Cache B不命中

本地向宿主发读不命中(B,6)消息

宿主把数据块送给本地

共享集合为{A,B}

CPU读Cache B第2行

CPU D 读第 6 块

CPU读Cache D

Cache D不命中

本地向宿主发读不命中(D,6)消息

宿主把数据块送给本地

共享集合为{A,B,D}

CPU读Cache D第2行

CPU B 写第 6 块

CPU写Cache B

Cache B命中

本地向宿主发写命中(B,6)消息

宿主向远程结点A发作废(6)消息

宿主向远程结点D发作废(6)消息

共享集合为{B}

CPU写Cache B第2行

CPU C 读第 6 块

CPU读Cache C

Cache C不命中

本地向宿主结点发读不命中(C,6)消息

宿主给远程发取数据块(6)的消息(写回)

远程把数据块送给宿主结点(写回ing)

宿主把数据块送给本地结点(写回主存后再写cache)

共享集合为{B,C}

CPU读Cache C第2行

CPU D 写第 20 块

CPU写Cache D

Cache D不命中

本地向宿主结点发写不命中(D,20)消息

宿主把数据块送给本地结点

共享集合为{D}

CPU写Cache D第0行

CPU A 写第 20 块

CPU写Cache A

Cache A不命中

本地向宿主结点发写不命中(A,20)消息

宿主给远程结点发送取并作废(20)的消息

远程把数据块送给宿主结点(写回),把Cache中的该块作废

宿主把数据块送给本地结点

共享集合为{A}

CPU写Cache A第0行

CPU D 写第 6 块

CPU写Cache D

Cache D不命中

本地向宿主结点发写不命中(D,6)消息

宿主给远程结点发送取并作废(6)的消息

宿主给远程结点发送取并作废(6)的消息

宿主把数据块送给本地结点

共享集合为{D}

CPU写Cache D第2行

CPU A 读第 12 块

CPU读Cache A

Cache A不命中

本地向被替换块的宿主结点发写回(替换第20块后需要写回,因为只有1个副本)并修改共享集(A,20)消息

本地向宿主结点发读不命中(A,12)消息

宿主把数据块送给本地结点

共享集合为{A}

CPU读Cache A第0行


【访问序列】


【Cache模拟器统计信息】

3:自己编写一个访问序列, 写出目录协议所进行的操作

所进行的访问

是否发生替换

是否发生写回

目录协议所进行的操作

CPU A 读第 5 块

读cache A,不命中

本地:向宿主结点发读不命中(A,5)消息

宿主:把数据块送给本地结点

共享集合为:{A}

数据送入cache A的第1行,由CPU A读取

CPU B 读第 5 块

读cache B,不命中

本地:向宿主结点发读不命中(B,5)消息

宿主:把数据块送给本地结点

共享集合为:{A,B}

数据送入cache B的第1行,由CPU B读取

CPU C 读第 5 块

读cache C,不命中

本地:向宿主结点发读不命中(C,5)消息

宿主:把数据块送给本地结点

共享集合为:{A,B,C}

数据送入cache C的第1行,由CPU C读取

CPU B 写第 5 块

写cache B,命中

本地:向宿主结点发写命中(B,5)消息

宿主:向远程结点A发作废(5)消息

宿主:向远程结点C发作废(5)消息

共享集合为:{B}

CPU B写cache B第1行【独占】

CPU D 读第 5 块

读cache D,不命中

本地:向宿主结点发读不命中(D,5)消息

宿主:给远程结点发取数据块(5)的消息

远程:把数据块送给宿主结点【cache B第1行对应的主存第5块,写回主存】

宿主:把数据块送给本地结点

共享集合为:{B,D}

数据送入cache D的第1行,由CPU D读取

CPU B 写第 21 块

写cache B,不命中

本地:向被替换块的宿主结点发修改共享集(B,5)消息【cache B第1行对应的主存第5块替换为第21块】

本地:向宿主结点发写不命中(B,21)消息

宿主:把数据块送给本地结点

共享集合为:{B}

CPU B写cache B第1行【独占】

CPU A 写第 23 块

写cache A,不命中

本地:向宿主结点发写不命中(A,23)消息

宿主:把数据块送给本地结点

共享集合为:{A}

CPU A写cache A第3行【独占】

CPU C 写第 23 块

写cache C,不命中

本地:向宿主结点发写不命中(C,23)消息

宿主:给远程结点发送取并作废(23)的消息

远程:把数据块送给宿主结点,把cache中的该块作废【cache A第3行对应的主存第23块,写回主存】

宿主:把数据块送给本地结点

共享集合为:{C}

CPU C写cache C第3行【独占】

CPU B 读第 29 块

读cache B,不命中

本地:向被替换块的宿主结点发写回并修改共享集(B,21)消息【cache B第1行对应的主存第21块替换为第29块,并写回主存第21块】

本地:向宿主结点发读不命中(B,29)消息

宿主:把数据块送给本地结点

共享集合为:{B}

数据送入cache B的第1行,由CPU B读取

CPU B 写第 5 块

写cache B,不命中

本地:向被替换块的宿主结点发修改共享集(B,29)消息【cache B第1行对应的主存第29块替换为第5块】

本地:向宿主结点发写不命中(B,5)消息

宿主:向远程结点发作废(5)消息

宿主:把数据块送给本地结点

共享集合为:{B}

CPU B写cache B第1行【独占】

 


【访问序列】


【Cache模拟器统计信息】

4:根据上述结果,画出相关的状态转换图(仅画出与上表有关的部分)

5:目录协议的基本思想是什么?

目录协议的核心:物理存储器中共享数据块的状态及相关信息存在目录中。

PART II:多 Cache 一致性监听协议的模拟与分析

1:掌握多 Cache 一致性监听协议模拟器的使用方法


点击【帮助】——【使用说明】,即可查看目录法模拟器的使用方法。

2:对于以下访问序列,写出监听协议所进行的操作

所进行的访问

是否发生替换

是否发生写回

监听协议所进行的操作

CPU A 读第 5 块

CPU读Cache A

Cache A不命中

总线不命中

数据从存储器第5块送入Cache A第1块

CPU读Cache A第1块,显示共享

CPU B 读第 5 块

CPU读Cache B

Cache B不命中

总线不命中

数据从存储器第5块送入Cache B第1块

CPU读Cache B第1块,显示共享

CPU C 读第 5 块

CPU读Cache C

Cache C不命中

总线不命中

数据从存储器第5块送入Cache C第1块

CPU读Cache C第1块,显示共享

CPU B 写第 5 块

CPU写Cache B

Cache B命中

总线作废

Cache A第1块和Cache B第1块作废

存储器第5块tag,送入Cache B第1块

CPU写Cache B第1块,显示独占

CPU D 读第 5 块

CPU读Cache D

Cache D不命中

Cache B写回存储器第5块

数据从存储器第5块送入Cache D第1块

CPU读Cache D第1块,显示共享

Cache B第1块,显示共享

CPU B 写第 21 块

CPU写Cache B

Cache B不命中

总线写不命中

存储器第21块tag,送入Cache B第1块,发生块内替换

CPU写Cache B第1块,显示独占

CPU A 写第 23 块

CPU写Cache A

Cache A不命中

总线写不命中

存储器第23块tag,送入Cache A第3块

CPU写Cache A第3块,显示独占

CPU C 写第 23 块

CPU写Cache C

Cache C不命中

总线写不命中

Cache A写回存储器第23块

存储器第23块tag,送入Cache C第3块

CPU写Cache C第3块,显示独占

CPU B 读第 29 块

CPU读Cache B

Cache B不命中

Cache B写回存储器第21块

总线读不命中

数据从存储器第29块送入Cache B第1块,发生块内替换

CPU读Cache B第1块,显示共享

CPU B 写第 5 块

CPU写Cache B

Cache B不命中

总线写不命中

存储器第5块tag,送入Cache B第1块

总线作废Cache C第1块

CPU写Cache B第1块,显示独占


【访问序列】


【Cache模拟器统计信息】

3:自己编写一个访问序列, 写出监听协议所进行的操作

所进行的访问

是否发生替换

是否发生写回

监听协议所进行的操作

CPU A 读第 6 块

读cache A,不命中

向总线发送不命中

数据从存储器第6块送入cache A第2行

CPU A读cache A第1行,显示共享

CPU B 读第 6 块

读cache B,不命中

向总线发送不命中

数据从存储器第6块送入cache B第2行

CPU B读cache B第1行,显示共享

CPU D 读第 6 块

读cache D,不命中

向总线发送不命中

数据从存储器第6块送入cache D第2行

CPU D读cache D第1行,显示共享

CPU B 写第 6 块

写cache B,命中

向总线发送(6)作废消息

作废掉cache A第2行、cache D第2行

CPU B写cache B第2行,显示独占

CPU C 读第 6 块

读cache C,不命中

向总线发送不命中

将cache B第2行对应的(6)写回存储器

数据从存储器第6块送入cache C第2行

CPU C读cache C第2行,显示共享

CPU D 写第 20 块

写cache D,不命中

向总线发送不命中

数据从存储器第20块送入cache D第0行

CPU D写cache D第0行,显示独占

CPU A 写第 20 块

写cache A,不命中

向总线发送不命中

将cache D第0行对应的(20)写回存储器

作废掉cache D第0行

数据从存储器第20块送入cache A第0行

CPU A写cache A第0行,显示独占

CPU D 写第 6 块

写cache D,不命中

向总线发送不命中

数据从存储器第6块送入cache D第2行

作废掉cache B第2行、cache C第2行

CPU D写cache D第2行,显示独占

CPU A 读第 12 块

读cache A,不命中

将cache A第0行对应的(20)写回存储器

向总线发送不命中

数据从存储器第12块送入cache A第0行

CPU A读cache A第0行,显示共享


【访问顺序】


【Cache模拟器统计信息】

4:根据上述结果,画出相关的状态转换图(仅画出与上表有关的部分)

5:监听协议的基本思想是什么?

    监听协议的核心:Cache中保存各块的共享状态,共享总线,总线监听。

四、实验总结

1:监听协议是基于总线的。在监听协议中,所有的缓存控制器都通过总线来监听其他缓存控制器的操作。当一个缓存控制器修改了共享数据时,它会通过总线发送一个信号,让其他缓存控制器将对应的缓存行置为无效。这样,其他缓存控制器在需要访问这个缓存行时,就会重新从内存中读取最新的数据,保证了数据的一致性。

2:目录协议是集中式的。在目录协议中,每个缓存控制器都维护了一个目录表,用于记录共享数据的状态和位置。当一个缓存控制器修改了共享数据时,它会向目录表发送一个更新请求,将对应的缓存行置为无效或者共享状态。其他缓存控制器在需要访问这个缓存行时,需要先向目录表发出请求,获取该数据的状态和位置信息,然后根据相应的状态进行操作。

3:监听协议的特点分析:
    优点:核数较少时,总线压力较小,成本低,效果好。
    缺点:需要通过总线广播一致性相关信息. 总线上能够连接的处理器数目有限。当核数增多时,总线冲突增加, 监听带宽成为瓶颈。

4:目录协议的特点分析:
    优点:使用集中目录来记录每个cache块的状态,不需要总线广播一致性信息, 总线压力小。
    缺点:需要维护目录数据结构, 随着核数增加时目录的开销变大。

5:在设计和选择cache一致性协议时,需要综合考虑系统规模、性能需求、开销以及硬件限制等方面的因素。不同的协议适用于不同的场景。

6:实现cache一致性的关键——跟踪记录共享数据块的状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/412478.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jupyter Notebook

2017年左右在大学里都听说过Jupyter Notebook,并且也安装用了一段时间,后来不知道什么原因没有用了。估计是那时候写代码的时候多一些,因为它可以直接写代码并运行结果,现在不怎么写代码了。 介绍 后缀名为.ipynb的json格式文件…

雍禾植发为地球种下发际线,雍禾医疗以公益名义为消费者种下希望

“绿水青山才是金山银山”,绿色现已成为新时代中国的鲜明底色。天更蓝,水更清,人与环境和谐发展已深入人心。位于内蒙古自治区阿拉善盟西部的额济纳旗常年干旱少雨,风沙肆虐,这里亟需被植上一片森林,为地球…

Grind75第9天 | 733.图像渲染、542.01矩阵、1235.规划兼职工作

733.图像渲染 题目链接:https://leetcode.com/problems/flood-fill 解法: 可以用深度优先搜索和广度优先搜索。 深度优先搜索。每次搜索到一个方格时,如果其与初始位置的方格颜色相同,就将该方格的染色,然后继续对…

AI嵌入式K210项目(11)-SPI Flash读写

文章目录 前言一、K210的SPI二、Flash介绍三、实验过程总结 前言 这一章我们来学习下SPI及其应用,SPI 是一种高速的,全双工,同步的通信总线,由于其高速、同步和简单的特性,被广泛应用于各种微控制器和外围设备之间的通…

统计学R语言实验7 方差分析

统计学R语言实验7 方差分析 一、实验目的 1. 掌握理解方差分析的相关概念。 2. 掌握理解方差分析的相关方法。 3. 熟悉R语言等语言的集成开发环境。 二、实验分析与内容 完成教材P117的第4题 本题采用单因素方差分析来解题: (1)分析三…

2023年全球软件架构师峰会(ArchSummit深圳站):核心内容与学习收获(附大会核心PPT下载)

本次峰会是一次重要的技术盛会,旨在为全球软件架构师提供一个交流和学习的平台。本次峰会聚焦于软件架构的最新趋势、最佳实践和技术创新,吸引了来自世界各地的软件架构师、技术专家和企业领袖。 在峰会中,与会者可以了解到数字化、AIGC、To…

电梯节能落座-智慧停车场️,电梯不仅可载人也可以载汽车!

电梯不仅可载人也可以载汽车哦! 在北京市丰台区,有这么一个智慧停车场🅿️ ,共298个停车位,全部智能一体化,简直是“豪华” “智能” 的象征。 523能源:小伍,你跑题了... 小伍&am…

【牛客周赛Round 27】题目讲解

题目一 小红的二进制删数字: 小红拿到了一个二进制字符串 s,她可以删掉其中的一些字符,使得最终该字符串为一个2的幂(即可以表示为 2^k 形式的数)。小红想知道,自己最少删几个字符可以达成?请你…

【GAMES101】Lecture 07 着色(shading)

目录 着色 Blinn-Phong反射模型 漫反射 光衰减 着色 这个着色(shading)就是将不同的材质应用到不同的物体上,像一个物体,它可以是木头的、金属的、塑料的…… Blinn-Phong反射模型 我们来看一个简单的着色模型,…

大文件的断点续传如何实现

断点续传 断点续传是一种数据恢复技术,主要用于在读取或发送数据时,因为网络问题、磁盘问题等原因导致数据传输中断。断点续传技术允许你在已经传输的数据基础上继续传输,从而节省数据传输时间。 断点续传通常用于文件传输过程中,…

C语言基本概念——正确理解C,不要被错误的题目误导

在进行C语言训练或做题时,我们可能会遇到一些看似简单但实则错误的题目。这些题目可能会误导我们对C语言基本概念的认识。因此,正确理解C语言并辨别题目中的错误至关重要。下面,举例说明题目错在哪。 1. 写出下列程序的运行结果。 #include…

vue3自定义按钮点击变颜色(切换)

实现效果图&#xff1a; 默认选中第一个按钮&#xff0c;未选中按钮为粉色&#xff0c;点击时颜色变为红色 利用动态类名&#xff0c;当定义isChange数值和下标index相同时&#xff0c;赋予act类名&#xff0c;实现变色效果 <template><view class"page"&g…