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

2024-02-24 22:36

本文主要是介绍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":表示在某个事件列表上触发了状态的转换,执行了相应的动作列表,并在转换后进入了另一个事件列表。

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

这篇关于gem5学习(24):缓存一致性协议——Cache Coherence Protocols的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/743587

相关文章

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、