gem5学习(24):缓存一致性协议——Cache Coherence Protocols

目录

一、Common Notations and Data Structures

1、Coherence Messages

2、Access Permissions

3、Data Structures

二、Coherence controller FSM Diagrams


官网教程:gem5: Cache Coherence Protocols

一、Common Notations and Data Structures

(常用符号和数据结构)

1、Coherence Messages

一致性消息:这些消息在每个协议的<protocol-name>-msg.sm文件中描述。

消息描述
ACK/NACK对等待解决方向后决定下一步动作的请求的肯定/否定确认。例如,写回请求、独占请求【如果接收方能够成功执行这个请求,它将发送 ACK 给发送方,表示已接收并成功执行了操作。如果接收方无法执行写回请求,它将发送 NACK 给发送方,表示无法执行该请求或需要进一步处理。】
GETS请求共享权限以满足CPU的加载或IFetch。
GETX请求独占访问。
INV用于将缓存块失效的请求。当一个缓存块失效时,表示该缓存块中保存的数据不再有效,需要从下一个缓存级别或目录中获取最新的数据副本。这可以由一致性协议本身触发,也可以由下一个缓存级别/目录触发,以强制包含或触发DMA访问的写回,以获取最新的数据副本。
PUTX请求写回缓存块。某些协议(例如MOESI_CMP_directory)仅在需要写回独占数据时使用此请求。
PUTS请求以共享状态写回缓存块。
PUTO请求以拥有状态写回缓存块。
PUTO_Sharers请求以拥有状态写回缓存块,但仍存在其他共享该块的缓存。
UNBLOCK解除阻塞的请求,用于解除下一级缓存级别或目录中的消息的阻塞状态。

2、Access Permissions

这些与每个缓存块相关联,确定对该块允许进行哪些操作。它与一致性协议状态密切相关。

权限描述
Invalid缓存块无效。表示该缓存块中保存的数据不再有效,需要从内存层次结构的其他位置获取最新的数据副本。对无效操作无动作(可能发送一个ACK)。对替换操作无动作。相关的一致性协议状态为I或NP,是每个协议中的稳定状态。
BusyTODO(当前正在忙于处理任务,无法立即响应其他请求或执行其他操作)。
Read_Only只允许加载、写回和使失效操作。在转换到其他状态之前不能执行存储操作。
Read_Write允许加载、存储、写回和使失效操作。通常表示该块已被修改。

3、Data Structures

  • 消息缓冲区(Message Buffers):TODO(尚未提供相关信息或待进一步补充)
  • TBE表:TODO(尚未提供相关信息或待进一步补充)
  • 计时器表(Timer Table):该表维护了一个基于地址的计时器映射。对于每个目标地址,可以关联并添加一个超时值(timeout value)到计时器表中。例如,MOESI_CMP_directory协议的L1缓存控制器实现使用这种数据结构来触发缓存块的单独超时。在内部,计时器表使用事件队列来安排超时。计时器表支持基于轮询的接口,可以使用isReady()方法检查是否发生了超时。可以使用set()方法设置地址的超时值,并使用unset()方法将超时值从计时器表移除。
  • 相关文件:
    • src/mem/ruby/system/TimerTable.hh:声明TimerTable类
    • src/mem/ruby/system/TimerTable.cc:实现TimerTable类的方法,处理地址和超时的设置,使用事件队列调度事件。

二、Coherence controller FSM Diagrams

(一致性控制器有限状态机图表)

  • 在有限状态机图表中,通常只显示稳定状态,即状态之间没有显示出具体的过渡。
  • 使用"Event list"、"Event list : Action list"或"Event list : Action list : Event list"的注释来注释转换。【例如,"Store : GETX" 表示在 "Store" 事件上触发了状态的转换,并发送了一个 "GETX" 消息。而 "GETX : Mem Read" 表示在接收到 "GETX" 消息时触发了状态的转换,并发送了一个内存读取请求。】
    • "Event list":表示在某个事件列表上触发了状态的转换。

    • "Event list : Action list":表示在某个事件列表上触发了状态的转换,并执行了相应的动作列表。

    • "Event list : Action list : Event list":表示在某个事件列表上触发了状态的转换,执行了相应的动作列表,并在转换后进入了另一个事件列表。

  • 只列出了主要的触发器和动作,而可选的动作(例如根据块是否脏来决定是否进行写回)用方括号 [ ] 括起来。
  • 在图表中,转换标签通常与横穿转换标签或最近的弧相关联,以显示状态之间的关系和转换的触发条件。

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

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

相关文章

什么是SSD型云服务器?

​  SSD云服务器是一种使用固态硬盘代替传统HDD进行存储的虚拟机。SDD 使用闪存单元来存储数据&#xff0c;与云计算技术相结合&#xff0c;形成强大且高效的存储解决方案&#xff0c;可以随时随地访问。 SSD云服务器如何工作? SSD云服务器是利用虚拟化和云计算技术创建的。…

C++最佳实践之编译篇

C最佳实践之工程编译 在大型c/c工程开发中&#xff0c;往往会涉及多级CMakeLists.txt的调用&#xff0c;并且调用方式错综复杂&#xff0c;主要有以下两种方式&#xff1a; 1. 子目录中的CMakeList.txt独立生成目标&#xff0c;不作为主目标生成过程的依赖关系&#xff08;比…

virtualenv env_name 使用 virtualenv 创建 python 虚拟环境

为什么要用这个 win7 32 环境下 pycharm 只能用低版本的&#xff0c;比如 2016,2018 此时pycharm 图形界面创建的 虚拟环境版本很低&#xff0c;有些包不兼容&#xff0c;因此用 virtualenv 模块&#xff0c;可以创建 20 版本以上的虚拟环境 virtualenv env_name官方文档 http…

如何选择最适合的图纸加密软件?安秉网盾软件用户体验及性价比

安秉网盾图纸加密软件是一款功能强大的图纸加密工具&#xff0c;具有以下特点和优势&#xff1a; 全盘加密&#xff1a;安秉网盾采用先进的加密算法&#xff0c;能对文件、文件夹、磁盘等数据进行全面加密&#xff0c;确保数据在存储和传输过程中的安全性。 监控与审计&#x…

Swift基础知识:26.Swift类型转换

在 Swift 中&#xff0c;类型转换是指将一种类型的实例转换为另一种类型的操作。Swift 提供了三种类型转换操作&#xff1a;as?、as! 和 is。 as? 和 as! as?&#xff1a;可选类型转换。如果转换成功&#xff0c;返回一个可选类型&#xff0c;值为转换后的类型&#xff1b…

编程笔记 Golang基础 024 映射

编程笔记 Golang基础 024 映射 一、映射二、映射的定义与初始化三、基本操作四、综合示例程序 Go语言中的映射&#xff08;map&#xff09;是一种关联数组或哈希表数据结构&#xff0c;它存储键值对&#xff0c;其中每个键都是唯一的。在Go中&#xff0c;你可以使用 map[keyTy…

关于el-select值的回显问题 : 框内显示label值还是value值

<el-form-item label"状态" prop""><el-selectv-model"roleForm.state"class"m-2"size"large"style"width: 240px"placeholder"请选择状态"value-key"value"//value-key 与下面的ke…

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x Projectpom.xmlOpenAPIConfigFileUploadControllerapplication.yaml Project pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://…

软件压力测试:测试方法与步骤详解

随着软件应用的不断发展&#xff0c;用户对系统性能的要求也逐渐提高。在不同的负载条件下&#xff0c;系统必须能够保持稳定、高效的运行。软件压力测试是一种验证系统在各种负载情况下性能表现的关键手段。本文将详细探讨软件压力测试的方法和步骤。 1. 明确测试目标 在进行压…

vue源码分析之nextTick源码分析-逐行逐析-错误分析

nextTick的使用背景 在vue项目中&#xff0c;经常会使用到nextTick这个api&#xff0c;一直在猜想其是怎么实现的&#xff0c;今天有幸研读了下&#xff0c;虽然源码又些许问题&#xff0c;但仍值得借鉴 核心源码解析 判断当前环境使用最合适的API并保存函数 promise 判断…

2024年2月17日~2月23日周报

文章目录 一、前言二、DDNet架构学习2.1 数据预处理2.2 网络模型构建 三、基于深度学习地震数据去噪处理3.1 深度学习在地震数据去噪中的研究方向3.2 深度学习地震数据去噪流程3.2.1 数据集准备3.2.2 模型构建3.2.3 训练网络 3.3 基于DnCNN的地震数据去噪实验 四、小结4.1 存在…

xxl_job系列---【GLUE(shell)模式如何传多个参数,并被shell接收】

1.场景 我需要传入多个参数&#xff0c;在执行任务时传入的任务参数用逗号隔开&#xff0c;到shell中都被$1当做字符串接收到了&#xff0c;没办法&#xff0c;只能在shell中截取字符串&#xff0c;截成多个参数。 2.编辑入参 CRON:0 0 0 1 * ? #每月1号0点执行 点击“任务管理…

Javascript数字精度丢失的问题

一、问题 0.1 0.2 0.3 // false 二、浮点数 “浮点数”是一种表示数字的标准&#xff0c;整数也可以用浮点数的格式来存储 我们也可以理解成&#xff0c;浮点数就是小数 在JavaScript中&#xff0c;现在主流的数值类型是Number&#xff0c;而Number采用的是IEEE754规范中…

uniapp开发微信小程序跳转到另一个小程序中

注意&#xff1a;一开始我的云上务工模块是单独的tabbar界面&#xff0c;但是小程序跳转好像不能直接点击tabbar进行&#xff0c;所以我将这里改成了点击首页中的按钮进行跳转 点击这里进行小程序跳转 目录 基础讲解 uniapp小程序跳转的两个方法 调用说明&#xff08;半屏跳转…

C++力扣题目 647--回文子串 516--最长回文子序列

647. 回文子串 力扣题目链接(opens new window) 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被视作不同的子串。 示例 1&#xff1a; 输入&#xff1a…

面试系列之《Spark》(持续更新...)

参考文档及示例代码均基于pyspark3.1.2 1.什么是RDD&#xff1f;2.job、stage、task如何划分&#xff1f;3.什么是宽窄依赖&#xff1f;4.spark有哪几种部署模式&#xff1f;5.spark中的算子分为哪些类型&#xff0c;举例说明。6.cache、persist、checkpoint的区别&#xff0c;…

C++模板为什么不能声明和定义分离

首先我们要直到C程序运行需要进行的四个阶段。 预处理->编译->汇编->链接 编译&#xff1a;对语法语义分析&#xff0c;分析无误生成汇编&#xff0c;头文件不参加编译&#xff0c;多个源文件是分开单独编译的。 链接&#xff1a;将多个obj文件链接合成一个&#x…

ubuntu20.04安装webots仿真

ubuntu20.04安装webots仿真 1.首先: wget -qO- https://cyberbotics.com/Cyberbotics.asc | sudo apt-key add - sudo apt-add-repository deb https://cyberbotics.com/debian/ binary-amd64/ sudo apt-get update sudo apt-get install webots .bashrc中添加环境变量:…

Sora----打破虚实之间的最后一根枷锁----这扇门的背后是人类文明的晟阳还是最后的余晖

目录 一.Sora出道即巅峰 二.为何说Sora是该领域的巨头 三.Sora无敌的背后究竟有怎样先进的处理技术 1.Spacetime Latent Patches 潜变量时空碎片&#xff0c;建构视觉语言系统 2.扩散模型与Diffusion Transformer&#xff0c;组合成强大的信息提取器 3.DiT应用于潜变量时…

关于在分布式环境中RVN和使用场景的介绍4

简介 在前面的文档中&#xff0c;我们介绍了RVN的概念&#xff0c;通过RVN可以解决的某类问题和使用技巧&#xff0c;以及处理RVN的逻辑的具体实现。在本文中&#xff0c;我们将要介绍关于如何使用RVN解决另一种在分布式系统中常出现的问题。 问题 假设我们创建了一个servic…