HNU计算机体系结构-实验3:多cache一致性算法

news2024/12/25 12:36:28

文章目录

  • 实验3 多cache一致性算法
    • 一、实验目的
    • 二、实验说明
    • 三 实验内容
      • 1、cache一致性算法-监听法模拟
      • 2、cache一致性算法-目录法模拟
    • 四、思考题
    • 五、实验总结

实验3 多cache一致性算法

一、实验目的

熟悉cache一致性模拟器(监听法和目录法)的使用,并且理解监听法和目录法的基本思想,加深对多cache一致性的理解。

做到给出指定的读写序列,可以模拟出读写过程中发生的替换、换出等操作,同时模拟出cache块的无效、共享和独占态的相互切换。

二、实验说明

学习cache一致性监听法和目录法,并且进行一致性算法的模拟实验,同时熟悉相关知识。

三 实验内容

1、cache一致性算法-监听法模拟

1) 利用监听法模拟器进行下述操作,并填写下表

以下 I 表示无效, S表示共享, E表示独占。模拟器采用不优化设置.

所进行的访问是否发生了替换?是否发生了写回?监听协议进行的操作与块状态改变
CPU A 读第5块替换 Cache A的块1CPU A读不命中, Cache A发出BusRd信号, 存储器第5块经Bus传送到Cache A第1块, Cache A第1块状态从I变成S
CPU B 读第5块替换Cache B的块1CPU B读不命中, Cache B发出BusRd信号, 存储器第5块经Bus传送到Cache B第1块, Cache B第1块状态从I变成S
CPU C 读第5块替换Cache C的块1CPU C读不命中, Cache C发出BusRd信号, 存储器第5块经Bus传送到Cache C第1块, Cache C第1块状态从I变成S
CPU B 写第5块CPU B写命中, Cache B向Bus发出写作废信号, Cache A第1块和Cache C第1块状态都从S变成I, Cache B第1块状态从S变成E
CPU D 读第5块替换 Cache D的块1Cache B的块1写回CPU D读不命中, Cache D发出BusRd信号, Cache B监听到后把它的第1块写回到存储器第5块, 然后状态从E变成I。之后该块又从存储器传送到Cache D第1块, 状态设为E
CPU B 写第21块替换CacheB 的块1CPU B写不命中, Cache B发出BusRdx信号, 存储器第21块经Bus传送到Cache B第1块, 将原本的第1块替换出去, 状态设为E
CPU A 写第23块替换CacheA的块3CPU A读不命中, Cache A发出BusRdx信号, 存储器第23块经Bus传送到Cache A第3块, 状态设为E
CPU C 写第23块替换CacheC的块3CacheA的块3写回CPU C写不命中, Cache C发出BusRdx信号, Cache A监听到该信号, 将其第3块写回到存储器第23块, 同时Cache A中该块状态改为I。之后存储器第23块传送到Cache C第3块, 状态设为E
CPU B 读第29块替换CacheB的块1CacheB的块1写回CPU B读不命中, Cache B发出BusRd信号, 存储器第29块经Bus传送到Cache B第1块, 将原来的块替换出去, 将状态设为S
CPU B 写第5块替换CacheB的块1CPU B写不命中, Cache B发出BusRdx信号, Cache D监听到该信号后将其第1块作废, 存储器第5块传送到Cache B第1块, 替换原来的块, 状态设为E

2) 请截图,展示执行完以上操作后整个cache系统的状态

image-20231209105438044

监听法的基本原理是,每个处理器核心的缓存都可以监视(监听)其他核心对共享数据的读写操作。当一个处理器核心对共享数据进行写入时,它会发送一个写入操作的通知(invalidate、update等)给其他核心的缓存,告知它们更新或无效化相应的缓存行。其他核心的缓存会在收到通知后,根据通知的类型进行相应的操作。

以下是监听法模拟的基本步骤:

  1. 每个处理器核心的缓存行都包含一个有效位(valid bit)用于表示缓存行是否有效,以及一个标签(tag)用于唯一标识该缓存行所存储的内存地址。
  2. 当一个处理器核心对共享数据进行写入操作时,它首先检查自己的缓存中是否存在该数据的缓存行。如果存在,它将更新缓存行中的数据,并将该缓存行标记为“已修改(modified)”。
  3. 同时,该核心会发送一个写入操作的通知给其他核心的缓存,通知它们该缓存行已经被修改。这个通知可以是无效化(invalidate)操作或更新(update)操作,具体的实现方式取决于具体的监听法协议。
  4. 其他核心的缓存在接收到通知后,根据通知的类型进行相应的操作:
    1. 如果接收到无效化操作,则将自己的缓存行标记为无效(invalid),以后再访问该数据时需要从主内存或其他核心的缓存中重新获取。
    2. 如果接收到更新操作,则将自己的缓存行中的数据更新为最新的数据。
  5. 当一个处理器核心需要读取共享数据时,它首先检查自己的缓存中是否存在有效的缓存行。如果存在有效的缓存行,则直接读取缓存中的数据。如果缓存行无效,则需要从主内存或其他核心的缓存中获取最新的数据。

通过监听法模拟,每个核心都能感知到其他核心对共享数据的操作,并及时进行相应的缓存行更新或无效化,从而保持多核系统中缓存中的数据一致性。这种方式能够有效解决多核处理器中共享数据的一致性问题,提高系统的可靠性和性能。

2、cache一致性算法-目录法模拟

1)利用目录法模拟器进行下述操作,并填写下表

所进行的访问监听协议进行的操作与块状态改变
CPU A 读第6块Cache A读不命中 从本地存储器中传送第6块到Cache A第2块, Cache A该块状态设为S, 存储器中第6块状态也设为S, 将对应A的presence bit置1
CPU B 读第6块Cache B读不命中, 通过互联网络从宿主存储器中传送第6块到Cache B第2块, Cache B该块状态设为S, 存储器中将对应B的presence bit置1
CPU D 读第6块Cache D读不命中, 通过互联网络从宿主存储器中传送第6块到Cache D第2块, Cache D该块状态设为S, 存储器中将对应D的presence bit置1
CPU B 写第6块Cache B写命中, 向宿主存储器发送写命中信号, 宿主存储器向A, D发送作废信号, 将第6块的A, D对应的presence bit复位, 将块状态设为E。 Cache B写第2块, 将块状态设为E
CPU C 读第6块Cache C读不命中, 向宿主存储器发送读缺失信号, 宿主存储器向Cache B发送Fetch信号, Cache B将其第2块状态设为S, 向宿主存储器写回该块。宿主存储器收到该块后将状态设为S, 将C对应的presence bit置1, 将该块传送给Cache C, Cache C将该块状态设为S
CPU D 写第20块Cache D写不命中, Memory C通过互联网络从宿主存储器中传送第20块到Cache D第0块, Cache D该块状态设为E, 存储器中将对应D的presence bit置1, 块状态设为E
CPU A 写第20块Cache A写不命中, 向宿主存储器中发送Write miss, 宿主存储器向Cache D发送Fectch信号, Cache D将其第0块写回宿主存储器, 将块状态设为I。 存储器中将对应D的presence bit复位, 将A对应的presence bit置1, 块状态设为E, 将该块传送给Cache A。 Cache A中该块状态设为E
CPU D 写第6块Cache D写不命中, 向宿主存储器发送Write miss, 宿主存储器向Cache D传送该块, 将对应B, C的presence bit复位, 将D对应的presence bit置1, 块状态设为E, 向Cache B, C发出作废信号。Cache D中该块状态设为E。 Cache B, C均将该块状态设为I
CPU A 读第12块Cache A读不命中, 第12块要替换出Cache A中的第0块, 先将原本的第0块写回到宿主存储器第20块, 存储器中第20块状态变成未缓冲。宿主存储器将第12块的状态设为S, 将A对应的presence bit置1, 将该块传送给Cache A。 然后换入, 块状态设为S

2)请截图,展示执行完以上操作后整个cache系统的状态

image-20231209105457476

目录法的基本原理是,每个缓存块都有一个对应的目录项。目录项中记录了该缓存块在哪些核心的缓存中被缓存,以及该缓存块的共享状态。

以下是目录法模拟的基本步骤:

  1. 每个处理器核心的缓存块都包含一个有效位(valid bit)用于表示缓存块是否有效,以及一个标签(tag)用于唯一标识该缓存块所存储的内存地址。
  2. 每个缓存块的目录项记录了哪些核心的缓存中包含该缓存块的副本,并记录了每个核心对该缓存块的共享状态,例如“独占(exclusive)”、“共享(shared)”、“无效(invalid)”等。
  3. 当一个处理器核心需要读取共享数据时,它首先检查自己的缓存中是否存在该数据的缓存块。如果存在有效的缓存块,它会从该缓存块中读取数据。如果缓存块无效,则需要从主内存或其他核心的缓存中获取最新的数据。
  4. 当一个处理器核心对共享数据进行写入操作时,它首先检查自己的缓存中是否存在该数据的缓存块。如果存在有效的缓存块,并且该缓存块的共享状态为“独占”,表示该核心是唯一一个拥有该数据副本的核心,那么该核心可以直接在缓存块中更新数据。
  5. 如果存在有效的缓存块,但其共享状态为“共享”,表示其他核心也拥有该数据的副本,那么该核心需要向目录发送一个请求,请求将该缓存块的共享状态变为“独占”。同时,目录会向其他包含该数据副本的核心发送无效化操作,让它们将缓存块标记为无效。
  6. 当其他核心的缓存接收到无效化操作时,它们将对应的缓存块标记为无效。如果其他核心的缓存块在之后的访问中需要读取或写入该数据,它们需要从主内存或其他核心的缓存中重新获取最新的数据。

通过目录法的模拟,每个核心都可以通过目录来获取共享数据的最新状态,同时协调共享数据的访问。目录维护了所有共享数据的副本信息和共享状态,通过协调缓存之间的通信和状态转换,确保多核处理器系统中缓存的一致性。

四、思考题

目录法和监听法分别是集中式和基于总线,两者优劣是什么?

答:

监听法

  • 优点:核数较少时,总线压力较小,成本低,效果好.

  • 缺点:需要通过总线广播一致性相关信息. 总线上能够连接的处理器数目有限。当核数增多时,总线冲突增加, 监听带宽成为瓶颈

目录法

  • 优点:使用集中目录来记录每个cache块的状态,不需要总线广播一致性信息, 总线压力小。

  • 缺点:需要维护目录数据结构, 随着核数增加时目录的开销变大。

五、实验总结

在我进行对cache一致性模拟器的实验过程中,我深入研究了监听法和目录法这两种常见的cache一致性协议。通过实际的模拟器操作,我对这两种协议的原理和工作机制有了更深入的理解。

首先,我发现监听法是一种基于总线的cache一致性协议。在这个协议中,所有的缓存控制器都通过总线来监听其他缓存控制器的操作。当一个缓存控制器修改了共享数据时,它会通过总线发送一个信号,让其他缓存控制器将对应的缓存行置为无效。这样,其他缓存控制器在需要访问这个缓存行时,就会重新从内存中读取最新的数据,保证了数据的一致性。通过实验,我清晰地观察到了监听法的特点:简单、易于实现,但是总线的带宽成为性能瓶颈,并且在大规模系统中会导致严重的总线竞争问题。

其次,我研究了目录法,这是一种基于目录的cache一致性协议。在这个协议中,每个缓存控制器都维护了一个目录表,用于记录共享数据的状态和位置。当一个缓存控制器修改了共享数据时,它会向目录表发送一个更新请求,将对应的缓存行置为无效或者共享状态。其他缓存控制器在需要访问这个缓存行时,需要先向目录表发出请求,获取该数据的状态和位置信息,然后根据相应的状态进行操作。通过实验,我发现目录法相对于监听法来说,减轻了总线的压力,提高了并发度和扩展性。然而,目录的维护和更新会带来一定的开销,特别是在多处理器系统中。

其他缓存控制器在需要访问这个缓存行时,需要先向目录表发出请求,获取该数据的状态和位置信息,然后根据相应的状态进行操作。通过实验,我发现目录法相对于监听法来说,减轻了总线的压力,提高了并发度和扩展性。然而,目录的维护和更新会带来一定的开销,特别是在多处理器系统中。

通过这次实验,我不仅对cache一致性的概念和原理有了更深入的理解,还通过实际模拟操作加深了对监听法和目录法的理解。我认识到在设计和选择cache一致性协议时,需要综合考虑系统规模、性能需求、开销以及硬件限制等方面的因素。不同的协议适用于不同的场景,了解它们的特点和优缺点有助于我们做出合适的选择。同时,我也意识到cache一致性对于多处理器系统的正确性和性能具有重要影响,因此在实际应用中需要仔细权衡

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中的IO流③——转换流、序列化流、反序列化流、打印流

目录 转换流 代码演示 总结 序列化流&反序列化流 序列化流 构造和成员方法 细节 代码演示 反序列化流 代码演示 序列化流和反序列化流细节 综合练习 打印流 字节打印流 代码演示 字符打印流 代码演示 总结 转换流 转换流可以将字节流转成字符流&#xff0…

每日一博 - 图解5种Cache策略

文章目录 概述读策略Cache AsideRead Through 写策略Write ThroughWrite AroundWrite Back 使用场景举例 概述 缓存是在系统中存储数据的临时存储器,用于提高访问速度。缓存策略定义了如何在缓存和主存之间管理数据 读策略 Read data from the system: &#x1f5…

Kalman滤波、扩展Kalman滤波、无迹Kalman滤波和异步滤波的原理及其Matlab代码

目录 引言Kalman滤波代码及其结果展示 扩展Kalman滤波代码及其结果展示 无迹Kalman滤波无迹变换无迹Kalman滤波代码及其结果展示 异步无迹Kalman滤波原理代码及其结果展示 引言 本文给出了Kalman Filter(卡尔曼滤波)、Extended Kalman Filter&#xff0…

八、SSRF服务器端请求伪造漏洞

一、SSRF漏洞介绍 SSRF:全称Server-side Request Fogery(服务器端请求伪造漏洞),其是攻击者绕过网站的一些过滤,访问或或攻击或控制了一些本不应该访问或接触的内容(拿外网主机当跳板机去窥探内网) 二、SSRF漏洞发现 简单例子①&#xff1…

算法通关村第八关—二叉树的经典算法题(青铜)

二叉树的经典算法题 一、二叉树里的双指针 双指针就是定义了两个变量,在二叉树中有时候也需要至少定义两个变量才能解决问题,这两个指针可能针对一棵树,也可能针对两棵树,姑且也称之为“双指针”吧。一般是与对称、反转和合并等类…

6-6 计算最长的字符串长度

本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。 函数接口定义: int max_len( char *s[], int n ); 其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。 裁判测试程序样例: #incl…

algorithm graphics

绘制地图坐标路线_哔哩哔哩_bilibili neo4j test-CSDN博客

【Angular开发】Angular 16发布:发现前7大功能

Angular 于2023年5月3日发布了主要版本升级版Angular 16。作为一名Angular开发人员,我发现这次升级很有趣,因为与以前的版本相比有一些显著的改进。 因此,在本文中,我将讨论Angular 16的前7个特性,以便您更好地理解。…

关于 SAP S/4HANA 中的控制您应该了解什么-Part1

原文地址:What you should know about controlling in SAP S/4HANA. (Part 1) | SAP Blogs (自 SAP S/4HANA 版本 1909 起更新) 作为一名CO顾问,我对 SAP ERP 中央组件 (ECC) 向 SAP S/4HANA 的演变感到非常兴奋。 自从第一个版…

13.触发器

目录 1、创建触发器 1、创建只有一个执行语句的触发器 2、创建有多个执行语句的触发器 2、查看触发器 1、通过SHOW TRIGGERS查看触发器: 2.在triggers 表中查看触发器信息 3、使用触发器 4、删除触发器 1、创建触发器 MySQL 的触发器和存储过程一样,都是嵌…

高效扫频阻垢装置广谱感应水处理设备介绍工作原理使用参数和选型

​ 1:高效扫频阻垢装置设备介绍 高效扫频阻垢装置是一种通过控制箱释放变频电磁信号,传输到信号放大装置,管道外侧的电磁线圈和电锤产生高频机械振动,在管道和水中传输,通过共振机理破坏水分子之间的氢键,产…

ubuntu 命令行安装 conda

安装包地址: Index of / 找到对应的版本,右键点复制链接 wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.shbash Anaconda3-2023.09-0-Linux-x86_64.sh https://linzhji.blog.csdn.net/article/details/126530244

计算机病毒判定专家系统原理与设计《文字提取人工修正》

内容源于网络。网络上流转的版本实在是不易阅读, 又不忍神作被糟蹋故稍作整理,对于内容仍然有识别不准的地方,网友可留言,我跟进修改。 雷 军 (武汉大学计算机系,430072) 摘要: 本文详细地描述了…

Excel表格转换word的两个方法

Excel表格想要转换到word文档中,直接粘贴复制的话,可能会导致表格格式错乱,那么如何转换才能够保证表格不错乱?今天分享两个方法,excel表格转换为word文件。 方法一: 首先打开excel表格,将表格…

Linux部署Kettle(pentaho-server-ce-9.4.0.0-343)记录/配置MySQL存储

下载地址 Kettle 是一个开源的数据集成工具,它是 Pentaho Data Integration(PDI)项目的一部分。要访问 Kettle 的官方网站,可以通过访问其母公司 Hitachi Vantara 的网站来找到相关信息 官方网站:https://www.hitachi…

面试 JVM 八股文五问五答第一期

面试 JVM 八股文五问五答第一期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1.JVM内存布局 Heap (堆区) 堆是 OOM 故障最主要的发生区域。它是内存…

class074 背包dp-分组背包、完全背包【算法】

class074 背包dp-分组背包、完全背包【算法】 算法讲解074【必备】背包dp-分组背包、完全背包 code1 P1757 通天之分组背包 // 分组背包(模版) // 给定一个正数m表示背包的容量,有n个货物可供挑选 // 每个货物有自己的体积(容量消耗)、价值(获得收益)、组号(分组)…

分布式搜索引擎02

分布式搜索引擎02 在昨天的学习中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以今天,我们研究下elasticsearch的数据搜索功能。我们会分别使用DSL和Res…

小红书笔记种草表现怎么看,营销攻略!

小红书平台的传播,离不开内容种草。当我们撰写好一篇笔记并进行发布后,该如何衡量这篇笔记的种草表现呢?今天我们为大家分享下小红书笔记种草表现怎么看,营销攻略! 一、小红书笔记种草衡量指标 想要了解小红书笔记种草表现怎么看…

智能监控平台/视频共享融合系统EasyCVR接入大华SDK后只有一路通道可云台控制该如何解决?

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…