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

文章目录

  • 实验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一致性对于多处理器系统的正确性和性能具有重要影响,因此在实际应用中需要仔细权衡

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

类人智能体概念、能力与衍生丨AI Agents闭门研讨观点集锦

导读 在智源社区举办的「青源Workshop第27期:AI Agents 闭门研讨会」上,来自英伟达的高级应用科学家王智琳、CAMEL一作李国豪、AutoAgents一作陈光耀,以及相关技术专家们共同参与交流讨论,分享了最新的研究成果,共同探…

【UE5】初识MetaHuman 创建虚拟角色

步骤 在UE5工程中启用“Quixel Bridge”插件 打开“Quixel Bridge” 点击“MetaHumans-》MetaHuman Presets UE5” 点击“START MHC” 在弹出的网页中选择一个虚幻引擎版本,然后点击“启动 MetaHuman Creator” 等待一段时间后,在如下页面点击选择一个人…

mysql:建议使用INT UNSIGNED类型存储IPv4地址

建议使用INT UNSIGNED类型存储IPv4地址,而不要使用INT类型,也不建议使用VARCHAR(15)类型存储。 在mysql中,内嵌函数INET_ATON(expr)可以将IP地址字符串转换为整数,内嵌函数INET_NTOA(expr)可以将整数转换为ip地址字符串。 例如&a…

【基础知识】SAR成像:从背景到应用的全方位概述

最近有项目接触到SAR成像图像,为了对SAR有一个全面的认识,本文结合自身研究经验,从背景到应用做一下简要概述。 背景 SAR(Synthetic Aperture Radar,合成孔径雷达)成像是一种先进的雷达技术,…

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

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

新零售模式:跨境电商如何实现线上线下融合?

随着数字时代的发展,新零售模式逐渐崭露头角,成为跨境电商发展的重要趋势。线上线下融合不仅拓宽了销售渠道,更提供了更丰富、更便捷的购物体验。 本文将深入探讨新零售模式在跨境电商中的应用,以及如何实现线上线下融合&#xf…

测距传感器

测距传感器 电子元器件百科 文章目录 测距传感器前言一、测距传感器是什么二、测距传感器的类别三、测距传感器的应用实例四、测距传感器的作用原理总结前言 测距传感器广泛应用于自动化控制、机器人导航、无人驾驶、测量仪器等领域。不同类型的测距传感器具有不同的测距范围、…

ASP.NET Core 8 在 Windows 上各种部署模型的性能测试

ASP.NET Core 8 在 Windows 上各种部署模型的性能测试 我们知道 Asp.net Core 在 windows 服务器上部署的方案有 4 种之多。这些部署方案对性能的影响一直以来都是靠经验。比如如果是部署在 IIS 下,那么 In Process 会比 Out Process 快;如果是 Self Hos…

从零开始搭建企业管理系统(六):RBAC 权限管理设计

RBAC 权限管理设计 前言权限分类功能权限设计什么是 RBACRBAC 组成RBAC 模型分类基本模型RBAC0角色分层模型RBAC1角色限制模型RBAC2统一模型RBAC3 RBAC0 权限设计用户管理角色管理权限管理关联表 总结 前言 作为一个后台管理系统,权限管理是一个绕不开的话题&#…

[Linux基础知识]页表

文章目录 1.页表 环境变量2.进程 1.页表 环境变量 一个分页存储管理系统中,地址长度为 32 位,其中页号占 8 位,则页表长度是 页号即页表项的序号,总共占8个二进制位,意味着页表项的个数就是2^8 在CPU和物理内存之间进行…

基于ssm高校教师科研信息展示网站论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师科研项目展示信息管理混乱,出错率高&#xff0c…

【23真题】难!最后的几所985!

今天分享的是23年天津大学815的信号与系统试题及解析!985的题目做一套少一套,考研前我也发不了几所985的真题了,大家珍惜! 本套试卷难度分析:22年天津大学815考研真题,我也发布过,若有需要&…

聚首引领行业风潮!聚首品牌联动资源价值平台发布会正式启航

2023年12月10日,由杭州建筑装饰学会、浙江聚首联优材料科技有限公司主办,天尚设计集团、公和设计集团、铭扬工程设计集团、地标设计集团、上宸工程设计集团、华坤建筑设计院、广厦建筑设计研究院、上海传承博华建筑规划设计院、航冠工程设计院、浙江鸿能…

SQL进阶 | CASE表达式

本文所有案例基于《SQL进阶教程》实现。 概述 SQL中的CASE表达式是一种通用的条件表达式,类似于其他语言中的if/else语句。它用于在SQL语句中实现条件逻辑。CASE表达式以WHEN子句开始,后面跟着一个或多个WHEN条件,每个WHEN条件后面跟着一个TH…

【S32DS RTD实战】-1.3-S32K3工程生成S19,BIN,Hex文件,以及Post-build steps的妙用

目录 1 方法一:逐个生成Motorola S-record(s19,srec…),Intel HEX,Bin文件 1.1 生成Motorola S-record(s19,srec…)文件 1.2 生成Intel HEX文件 1.3 生成Bin文件 2 …

关于 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 的演变感到非常兴奋。 自从第一个版…

深入理解JVM虚拟机第二十八篇:详解JVM当中方法重写的本质和虚方法表

😉😉 欢迎加入我们的学习交流群呀: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群&a…

Unity中结构体定义的成员如何显示在窗口中

在Unity中,有时候我们在处理数据的时候会用到结构体定义一些Unity组件相关的数据成员,并且需要在编辑器中拉取对象赋值。比如: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;publ…

正则表达式(9):扩展正则表达式

正则表达式(9):扩展正则表达式 小结 本博文转载自 前文中一直在说,在Linux中,正则表达式可以分为”基本正则表达式”和”扩展正则表达式”。 我们已经认识了”基本正则表达式”,现在,我们来认…

笔记本电脑安装了Ubuntu系统设置关盖/合盖不挂起/不睡眠

文章目录 简介通过gnome-tweaks设置通过更改登录配置文件logind.conf设置参考资料 简介 学习工作中需要用到笔记本安装Ubuntu Linux系统,并且需要关盖电脑不关机、不挂起且不睡眠。为此,本篇博客整理了两种常规操作方式,并给了详细的步骤&am…