AMBA-CHI协议详解(二十五)

在这里插入图片描述

AMBA-CHI协议详解(一)- Introduction
AMBA-CHI协议详解(二)- Channel fields / Read transactions
AMBA-CHI协议详解(三)- Write transactions
AMBA-CHI协议详解(四)- Other transactions
AMBA-CHI协议详解(五)- Transaction identifier fields
AMBA-CHI协议详解(六)- Transaction identifier field flows
AMBA-CHI协议详解(七)- Ordering
AMBA-CHI协议详解(八)- Address, Control, and Data
AMBA-CHI协议详解(九)- Data transfer
AMBA-CHI协议详解(十)- Retry
AMBA-CHI协议详解(十一)- Network Layer
AMBA-CHI协议详解(十二)- Cache line states
AMBA-CHI协议详解(十三)- Read transactions and Cache line states
AMBA-CHI协议详解(十四)- Dataless transactions
AMBA-CHI协议详解(十五)- Write transactions
AMBA-CHI协议详解(十六)- Combined Write/Atomic transactions
AMBA-CHI协议详解(十七)- Snoop request types
AMBA-CHI协议详解(十八)- Response types
AMBA-CHI协议详解(十九)- Cache state transitions at a Requester
AMBA-CHI协议详解(二十)- Cache state transitions at a Snoopee
AMBA-CHI协议详解(二十一)- Hazard conditions
AMBA-CHI协议详解(二十二)- Read transaction flows
AMBA-CHI协议详解(二十三)- Dataless transaction flows
AMBA-CHI协议详解(二十四)- Write transaction flows/Atomic transaction flows
AMBA-CHI协议详解(二十五)- Stash transaction flows/Hazard handling examples

文章目录

    • 5.5 Stash transaction flows
      • 5.5.1 Write with Stash hint
      • 5.5.2 Independent Stash request
    • 5.6 Hazard handling examples
      • 5.6.1 CopyBack-Snoop hazard at RN-F
      • 5.6.2 Request hazard at HN-F
      • 5.6.3 Read - CopyBack or Dataless - CopyBack hazard at HN-F
      • 5.6.4 HN-F race hazard: Request and CompAck


5.5 Stash transaction flows

本节展示了Stash transaction的示例互连协议流程:

5.5.1 Write with Stash hint

图中显示了带Data Pull的WriteUniqueStash事务流程的示例。
在这里插入图片描述

  1. 请求节点向 HN-F 发送一个WriteUniqueFullStash请求,stash目标标识为 RN-F1(由StashNID指示)。
    通常,请求的请求节点是 RN-I。
  2. HN-F 向 RN-F1 发送 SnpMakeInvalidStash,并向 RN-F2 发送 SnpUnique。
  3. RN-F1 和 RN-F2 向 HN-F 发送 SnpResp 响应。RN-F1 的窥探响应还包括一个读取请求,即Data Pull。
  4. HN-F 将 RN-F1 的读取请求视为ReadUnique,并向 RN-F1 发送合并的 CompData。
    CompData 响应包括请求节点写入的数据。
  5. RN-F1 向 HN-F 发送 CompAck 以完成读取事务。

5.5.2 Independent Stash request

下图显示了一个带有Data Pull事务流的 StashOnce 示例。
在这里插入图片描述

  1. 请求节点向 HN-F 发送 StashOnceShared 请求,stash目标标识为 RN-F1。
  2. HN-F在为接收到的请求建立处理顺序后发送Comp响应,以确保在向稍后从任何请求者收到的同一地址请求之前处理该请求。
  3. HN-F 向 RN-F1 发送 SnpStashShared 侦听请求,并向 SN-F 发送ReadNoSnp以获取数据。
  4. RN-F1 向 HN-F 发送 SnpResp_I_Read 响应。
  5. HN-F 将来自 RN-F1 的读取请求视为 ReadNotSharedDirty,并向 RN-F1 发送合并的 CompData。
  6. RN-F1 向 HN-F 发送 CompAck 以完成读取事务。

5.6 Hazard handling examples

本节展示了如何在请求者处处理 CopyBack-Snoop 请求的Hazard条件(冲突),以及如何在 HN-F 处处理各种请求和Snoop请求的Hazard条件。

5.6.1 CopyBack-Snoop hazard at RN-F

下图显示了一个对RN-F的Snoop请求,该请求在时间C处Hazard了一个待处理的CopyBack请求。
在这里插入图片描述

  1. 在时间C:
    • SnpShared事务忽略了该Hazard并读取了缓存行数据。
    • 缓存行状态从UD更改为SC。
  2. 在时间D:
    • CopyBack的CompDBIDResp被发送到RN-F0。
    • RN-F0返回一个CopyBackWrData_SC响应。
    • 缓存行状态从SC更改为I。
    数据在一致性方面是clean的,不需要发送到互连以确保正确的功能。
    然而,协议要求CopyBack流程在snoop hazard的情况下保持一致。
    WriteData响应中的缓存行状态为SC,因为在发送WriteData响应时缓存行的状态就是SC。

注意:
• 对于与未完成的Evict发生冲突的Snoop请求,可以接收到的响应必须是SnpResp_I。
• 在对同一地址的Snoop请求的Snoop响应待处理时,唯一可以接收到的CopyBack请求的响应是RetryAck。这包括数据(如果适用)。

下图展示了一个Snoop请求与未完成的CopyBack请求发生冲突的进一步示例。 在这个示例中,Snoop请求是由于来自RN-F1的ReadOnce请求生成的SnpOnce请求。SnpOnce请求接收到带有Snoop响应的数据副本,但不改变缓存行状态。
在这里插入图片描述

5.6.2 Request hazard at HN-F

如果对同一缓存行的多个请求在 HN-F 处理,则 HN-F 可以以任意顺序选择下一个请求。 例外情况是当两个请求有排序要求并且来自同一来源时,必须要保证顺序。

下图展示了一个示例,其中一个ReadShared和一个ReadUnique针对同一缓存行,几乎同时到达HN-F。
在这里插入图片描述

  1. 在时间A:
    • 来自RN-F0的ReadUnique到达,并对来自RN-F2的ReadShared请求造成hazard,而HN-F已经发送了嗅探请求。
    • ReadUnique的处理在HN-F处被阻塞。
  2. 在时间B:
    • HN-F已完成来自RN-F2的ReadShared事务请求。
    • ReadShared事务被视为完成,HN-F解除对来自RN-F0的ReadUnique事务请求的阻塞。
    除了ReadNoSnp,如果图中显示的两个事务被任何读取请求类型或无数据请求类型替换,则流程类似:
    • 当以下两个条件都为真时,未使用 DMT 或 DCT 或分离的 Comp 和数据响应的读取事务请求在 HN-F 处完成:
    — 所有 CompData 已发送,并且(如适用)已收到 CompAck。 仅对在原始请求消息中断言 ExpCompAck 的事务要求 CompAck。
    — 如果需要,内存更新已完成。

5.6.3 Read - CopyBack or Dataless - CopyBack hazard at HN-F

在 HN-F 处,Read or Dataless请求与 CopyBack 请求之间的hazard 处理方式类似上面描述的Read-Read hazard

下图显示了在大约相同时间到达 HN-F 的ReadShared和WriteBack对同一缓存行的情况。
在这里插入图片描述

  1. 在时间A:
    • WriteBack在HN-F处遇到hazard条件。hazard的原因是一个已经在进行中的ReadShared事务。
    • hazard检测导致WriteBack被阻塞。
    • ReadShared事务接收到带有Snoop响应的数据,并且必须在将数据发送给请求者的同时更新内存。
  2. 在时间B:
    • WriteBack被解除阻塞,因为HN-F已将数据响应发送给请求者,并且为ReadShared事务向内存发送了WriteData响应。
    如果ReadShared请求在HN-F开始处理WriteBack请求后到达HN-F,则ReadShared请求将在WriteBack请求完成之前被阻塞。
    当以下两个条件都为真时,CopyBack请求在HN-F处完成:
    • 收到与CopyBack请求对应的数据消息。
    • 如果必要,内存更新将完成。

5.6.4 HN-F race hazard: Request and CompAck

Completion后,请求可能会静默地将缓存行从缓存中驱逐,并生成另一个对同一地址的请求(即相同的Txnid)。例如:

  1. 重新生成的请求(下图Req2)在与早期Req1请求相关联的 CompAck 响应之前到达 HN-F。
  2. HN-F 检测到地址Hazard,并在收到 CompAck 响应之前阻止新请求的处理。
    在这里插入图片描述

在这种情况下,当 CompAck 响应到达 HN-F 时,它将从 HN-F 中解除分配先前的请求,并解除对新请求处理的阻塞。

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

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

相关文章

HTML 区块和布局

HTML 可以通过 <div> 和 <span>将元素组合起来。 HTML 区块元素 大多数 HTML 元素被定义为块级元素或内联元素。 块级元素在浏览器显示时&#xff0c;通常会以新行来开始&#xff08;和结束&#xff09;。 实例: <h1>, <p>, <ul>, <table&…

在 STM32F7 系列微控制器中,使用定时器(如 TIM10)实现 10ms 中断,并在中断服务函数中调用 ProRelay() 函数

在 STM32F7 系列微控制器中&#xff0c;使用定时器&#xff08;如 TIM10&#xff09;实现 10ms 中断&#xff0c;并在中断服务函数中调用 ProRelay() 函数&#xff0c;可以按照以下步骤实现&#xff1a; 1. 配置 TIM10 定时器 首先&#xff0c;需要配置 TIM10 定时器&#xff0…

Web 小项目: 网页版图书管理系统

目录 最终效果展示 代码 Gitee 地址 1. 引言 2. 留言板 [热身小练习] 2.1 准备工作 - 配置相关 2.2 创建留言表 2.3 创建 Java 类 2.4 定义 Mapper 接口 2.5 controller 2.6 service 3. 图书管理系统 3.1 准备工作 - 配置相关 3.2 创建数据库表 3.2.1 创建用户表…

Godot读取json配置文件

概述 在Godot 4.3中读取JSON配置文件&#xff0c;可以通过以下步骤实现&#xff1a; 步骤说明 读取文件内容&#xff1a;使用FileAccess类打开并读取JSON文件。 解析JSON数据&#xff1a;使用JSON类解析读取到的文本内容。 错误处理&#xff1a;处理文件不存在或JSON格式错…

RabbitMQ八股文

RabbitMQ 核心概念与组件 1. RabbitMQ 核心组件及其作用 1.1 生产者&#xff08;Producer&#xff09; 作用&#xff1a;创建并发送消息到交换机。特点&#xff1a;不直接将消息发送到队列&#xff0c;而是通过交换机路由。 1.2 交换机&#xff08;Exchange&#xff09; 作…

C语言每日一练——day_7

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第七天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…

C#原型模式:通过克隆对象来优化创建过程

在软件开发中&#xff0c;创建对象是非常常见的操作。然而&#xff0c;在某些情况下&#xff0c;构造对象的过程可能非常复杂或耗时&#xff0c;特别是当对象的创建涉及多个步骤或者需要初始化大量数据时。为了解决这个问题&#xff0c;**原型模式&#xff08;Prototype Patter…

ArcGIS10. 8简介与安装,附下载地址

目录 ArcGIS10.8 1. 概述 2. 组成与功能 3. 10.8 特性 下载链接 安装步骤 1. 安装准备 2. 具体步骤 3.补丁 其他版本安装 ArcGIS10.8 1. 概述 ArcGIS 10.8 是由美国 Esri 公司精心研发的一款功能强大的地理信息系统&#xff08;GIS&#xff09;平台。其核心功能在于…

Mac:JMeter 下载+安装+环境配置(图文详细讲解)

&#x1f4cc; 下载JMeter 下载地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi &#x1f4cc; 无需安装 Apache官网下载 JMeter 压缩包&#xff0c;无需安装&#xff0c;下载解压后放到自己指定目录下即可。 按我自己的习惯&#xff0c;我会在用户 jane 目…

【PCB工艺】基础:电子元器件

电子原理图&#xff08;Schematic Diagram&#xff09;是电路设计的基础&#xff0c;理解电子元器件和集成电路&#xff08;IC&#xff09;的作用&#xff0c;是画好原理图的关键。 本专栏将系统讲解 电子元器件分类、常见 IC、电路设计技巧&#xff0c;帮助你快速掌握电子电路…

nvm 安装某个node.js版本后不能使用或者报错,或不能使用npm的问题

安装了nvm之后发现不能使用某个版本的node.js&#xff0c;报错之后&#xff0c;不能使用npm这个命令。可以这样解决&#xff1a; 1、再node.js官网直接下载node.js 的压缩包。 找到nvm的安装目录 2、直接将文件夹解压到这个安装目录中修改一下名字即可。

【MySQL数据库】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法

在DQL的基础查询中&#xff0c;我们已经学过了多表查询的一种&#xff1a;联合查询&#xff08;union&#xff09;。本文我们将系统的讲解多表查询。 笛卡尔积现象 首先&#xff0c;我们想要查询emp表和stu表两个表&#xff0c;按照我们之前的知识栈&#xff0c;我们直接使用…

Java:Apache HttpClient中HttpRoute用法的介绍

当使用Apache HttpClient组件时&#xff0c;经常会用到它的连接池组件。典型的代码如下&#xff1a; PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager();connectionManager.setMaxTotal(httpConfig.getMaxPoolTotal());connect…

RHCE(RHCSA复习:npm、dnf、源码安装实验)

七、软件管理 7.1 rpm 安装 7.1.1 挂载 [rootlocalhost ~]# ll /mnt total 0 drwxr-xr-x. 2 root root 6 Oct 27 21:32 hgfs[rootlocalhost ~]# mount /dev/sr0 /mnt #挂载 mount: /mnt: WARNING: source write-protected, mounted read-only. [rootlocalhost ~]# [rootlo…

分布式的消息流平台之Pulsar

Pulsar 流处理详解 Apache Pulsar 是一个分布式的消息流平台&#xff0c;集成了**消息队列&#xff08;MQ&#xff09;和流处理&#xff08;Stream Processing&#xff09;**能力。Pulsar 不仅提供低延迟、高吞吐的消息传输能力&#xff0c;还支持基于 Pulsar Functions、Flin…

【C++多线程】thread

C中的std::thread是C11引入的线程库的一部分&#xff0c;提供了创建和管理线程的能力。它封装了操作系统的线程接口&#xff0c;使得在C中更方便地进行多线程编程。 1. std::thread 的定义 std::thread 类位于<thread>头文件中&#xff0c;定义在std命名空间下&#xff…

【css酷炫效果】纯CSS实现故障文字特效

【css酷炫效果】纯CSS实现故障文字特效 缘创作背景html结构css样式完整代码基础版进阶版(3D效果) 效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492053 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚…

uniapp配置代理解决跨域问题

两种方式&#xff1a; 1、manifest.json中配置 "h5" : {"template" : "static/index.html","devServer" : {"port" : 9090,"https" : false,"proxy":{"/prod-api":{"target":&quo…

物联网为什么用MQTT不用 HTTP 或 UDP?

先来两个代码对比&#xff0c;上传温度数据给服务器。 MQTT代码示例 // MQTT 客户端连接到 MQTT 服务器 mqttClient.connect("mqtt://broker.server.com:8883", clientId) // 订阅特定主题 mqttClient.subscribe("sensor/data", qos1) // …

Flutter:页面滚动,导航栏背景颜色过渡动画

记录&#xff1a;导航默认透明&#xff0c;页面发生滚动后&#xff0c;导航背景色由0-1&#xff0c;过渡到白色背景。 view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:get/get.dart; import package:redo…