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

ops/2025/3/18 10:46:21/

在这里插入图片描述

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

文章目录

  • 5.Interconnect Protocol Flows
    • 5.1 Read transaction flows
      • 5.1.1 Read transactions with DMT and without snoops
      • 5.1.2 Read transaction with DMT and with snoops
      • 5.1.3 Read transaction with DCT
      • 5.1.4 Read transaction without DMT or DCT
      • 5.1.5 Read transaction with snoop response with partial data and no memory update
      • 5.1.6 Read transaction with snoop response with partial data and memory update.
      • 5.1.7 ReadOnce* and ReadNoSnp with early Home deallocation
      • 5.1.8 ReadNoSnp transaction with DMT and separate Non-data and Data-only response
      • 5.1.9 ReadNoSnp transaction with DMT with ordering and separate Non-data and Data-only


5.Interconnect Protocol Flows

本章展示了不同事务类型的互连协议流程以及互连hazard条件。

在接下来的事务流图中:

  • 存在多个一致的请求节点,一个 HN-F 和一个 SN-F。
  • 如果 HN-F 收到多个数据响应,即来自被窥探的 RN-F 的一个响应和来自 SN-F 的另一个响应,则转发给请求者的数据以粗体突出显示。
  • HN-F 没有互连缓存。这导致所有对 HN-F 的请求都启动对 SN-F 的请求。

5.1 Read transaction flows

5.1.1 Read transactions with DMT and without snoops

对于没有窥探的读取事务,建议使用 DMT。
下图显示了使用 ReadShared 事务的示例 DMT 事务流。SN-F对HN-F的响应不是必需的,因为请求节点的CompAck用于在主节点处释放请求。
在这里插入图片描述
ReadShared事务流的步骤如下:

  1. RN-F向HN-F发送ReadShared请求。
  2. HN-F向SN-F发送ReadNoSnp请求。
  3. SN-F直接向RN-F发送数据响应,使用CompData_UC。
  4. RN-F向HN-F发送CompAck,因为请求是ReadShared,并且需要CompAck来完成事务。

5.1.2 Read transaction with DMT and with snoops

对于带有snoops和来自内存的数据的读取事务,建议使用DMT。
下图显示了使用ReadShared事务的DMT事务流程示例。
从SN-F到HN-F,不需要响应,因为请求者的CompAck用于在Home节点处释放请求。
在这里插入图片描述
ReadShared事务流程步骤如下:

  1. RN-F0向HN-F发送ReadShared请求。
  2. HN-F向RN-F1发送SnpShared请求。RN-F1向HN-F返回SnpResp_I响应。
  3. HN-F在收到RN-F1的窥探响应后,向SN-F发送ReadNoSnp请求。这保证了RN-F1没有返回数据。
  4. SN-F直接向RN-F0发送数据响应,使用CompData_UC。
  5. RN-F0向HN-F发送CompAck,因为请求是ReadShared,并且需要CompAck来完成事务。

5.1.3 Read transaction with DCT

对于带有snoops和来自其他请求节点缓存的数据的读取事务,建议使用Direct Cache Transfer(DCT)。

DCT from cache line in UC state
下图展示了DCT事务的示例流程。 请求者是 RN-F0,forwarding cache位于 RN-F1。
在这里插入图片描述
DCT 事务流的步骤如下:

  1. RN-F0向HN-F发送ReadShared请求。
  2. HN-F 发送 SnpSharedFwd,即向 RN-F1 发送转发窥探请求。
  3. RN-F1 将 CompData_SC 响应转发给 RN-F0。TxnID 与原始 ReadShared 请求相同。
  4. RN-F1 还向 HN-F 发送 SnpResp_SC_Fwded_SC 窥探响应。RN-F1 的缓存行状态从 UC 转变为 SC。
  5. 在接收到 CompData_SC 响应后,RN-F0 的缓存行状态从 I 转变为 SC,RN-F0 向 HN-F 发送 CompAck 响应。

DCT 事务流中的步骤 3 和 4 可以以任意顺序发生,因为 CompData 和 SnpResp 是在不同通道上发送的。

Double data return in a DCT transaction
下图显示了一个示例 DCT 事务流,该流将数据发送到 HN-F 并将数据转发到 RN-F0。
在这里插入图片描述
DCT 事务流的步骤如下:

  1. RN-F0向HN-F发送ReadShared请求。
  2. HN-F 向 RN-F1 发送 SnpSharedFwd 侦听请求。
  3. RN-F1 向 RN-F0 发送 CompData_SC 响应。TxnID 与原始 ReadShared 请求相同。RN-F0 缓存行从 I 过渡到 SC。
  4. RN-F1 还向 HN-F 发送了一个 SnpRespData_SC_PD_Fwded_SC 窥探响应,其中包含缓存行的副本,并将脏缓存行的责任转交给 HN-F。RN-F1 的缓存行状态从 UD 转变为 SC。
  5. HN-F 向 SN-F 发送了一个 WriteNoSnp 请求。
  6. SN-F 向 HN-F 响应 CompDBIDResp 请求数据。
  7. HN-F 向 SN-F 发送 NCBWrData。
  8. RN-F0 在接收到数据响应后发送 CompAck。

5.1.4 Read transaction without DMT or DCT

下图显示了在没有 DMT 的情况下使用 ReadNoSnp 事务的流程示例。 在图中,ReadNoSnp 在原始请求中设置了ExpCompAck。

该请求不会生成任何snoops,并从 HN-F 的内存读取响应中接收数据。
在这里插入图片描述

  1. RN-F0 发起一个ReadNoSnp事务,ExpCompAck 设置为 1。
  2. HN-F 接收并allocates该请求。
  3. HN-F 向 SN-F 发送ReadNoSnp请求。
  4. SN-F 向 HN-F 返回 CompData_I。
  5. HN-F 将数据返回给 RN-F0。(如果在原始ReadNoSnp请求中未断言 ExpCompAck,HN-F 此时可能会释放该请求)
  6. RN-F0 释放该请求并向 HN-F 发送 CompAck。
  7. HN-F 接收 CompAck 响应并释放请求。

(正在传输的数据副本以粗体标记。)

5.1.5 Read transaction with snoop response with partial data and no memory update

下图显示了事务流程,正在传输的数据副本以粗体标记。
在这里插入图片描述

  1. RN-F0向HN-F发送ReadUnique请求。
  2. HN-F向SN-F发送ReadNoSnp请求,并向RN-F1和RN-F2发送SnpUnique请求。
  3. RN-F1将缓存行从UDP转换为I,并将SnpRespDataPtl_I_PD返回给HN-F。RN-F2将SnpResp_I返回给HN-F。与此同时,SN-F将CompData响应返回给HN-F。HN-F将从SN-F返回的数据与从RN-F1接收到的部分数据合并。
  4. HN-F 将 CompData_UD_PD 发送给 RN-F0。RN-F0 缓存行状态从 I 过渡到 UD。
  5. RN-F0 向 HN-F 发出 CompAck 响应以指示事务完成。

5.1.6 Read transaction with snoop response with partial data and memory update.

下图显示了事务流程,传输的数据副本以粗体标记。
在这里插入图片描述
图中 ReadClean 带有部分数据窥探响应事务流程的步骤如下:

  1. RN-F0 向 HN-F 发送 ReadClean 请求。
  2. HN-F 向 SN-F 发送 ReadNoSnp 请求,并向 RN-F1 和 RN-F2 发送 SnpClean 请求。RN-F1 缓存行状态从 UDP 过渡到 I。
  3. RN-F1 返回 SnpRespDataPtl_I_PD,RN-F2 返回 SnpResp_I 到 HN-F。同时,SN-F 返回 CompData_I 响应给 HN-F。合并数据。
  4. HN-F 发送 CompData_UC 给 RN-F0,发送 WriteNoSnp 给 SN-F。RN-F0 的缓存行状态从 I 转变为UC。
  5. RN-F0 向 HN-F 发出 CompAck 响应以指示事务完成。
  6. SN-F 向 HN-F 发出 CompDBIDResp。
  7. HN-F 发送 NCBWrData 给 SN-F。

5.1.7 ReadOnce* and ReadNoSnp with early Home deallocation

下图显示了没有order要求的ReadOnce的优化流程
在这里插入图片描述
图 5-8 中优化的ReadOnce流程的步骤如下:

  1. RN-F0 向 HN-F 发送无序ReadOnce请求,Order[1:0] 设置为0b00。
  2. HN-F向SN-F发送DMT ReadNoSnp请求,Order[1:0]设置为0b01。
  3. SN-F向主节点发送ReadReceipt。
  4. HN-F在接收到ReadReceipt后释放请求。
  5. SN-F直接向RN-F0发送CompData_UC。

注意:在不需要CompAck的情况下,从Home节点到从属的ReadNoSnp事务避免了从Home节点到请求者发送RespSepData的需要。

5.1.8 ReadNoSnp transaction with DMT and separate Non-data and Data-only response

下图展示了一个带有分离非数据和仅数据响应的DMT事务流的示例。

在这个示例中,没有保序要求,RN-F可以向HN-F发送CompAck以在主节点释放请求,而无需等待DataSepResp.响应。
在这里插入图片描述

  1. RN-F向HN-F发送无序的ReadNoSnp请求。
  2. HN-F向SN-F发送读取ReadNoSnpSep请求。
  3. HN-F向RN-F发送RespSepData数据。
  4. SN-F向HN-F发送ReadReceipt。
  5. RN-F在接收到响应RespSepData后发送CompAck。
  6. SN-F向RN-F发送DataSepResp,返回读取的数据。

5.1.9 ReadNoSnp transaction with DMT with ordering and separate Non-data and Data-only

下图显示了一个具有保序和分离非数据和仅数据的DMT事务流示例。
ReadNoSnp具有非零排序字段,要求:

  • 下一个有序请求只能在接收到RespSepData后发送。
  • RN-F必须在发送CompAck.之前等待RespSepData和至少一个DataSepResp包。
  • HN-F 在收到 CompAck 之前不得向 SN-F 发送下一个有序请求。

在这里插入图片描述

  1. RN-F 向 HN-F 发送ReadNoSnp,ExpCompAck 设置为 1。 Order[1:0] 设置为0b10。
  2. HN-F 向 SN-F 发送ReadNoSnpSep,Order[1:0] 设置为0b01。
  3. HN-F 返回RespSepData给 RN-F。
  4. SN-F 返回ReadReceipt给 HN-F。
  5. SN-F 直接向 RN-F 发送DataSepResp。
  6. RN-F 向 HN-F 发出 CompAck。

http://www.ppmy.cn/ops/166744.html

相关文章

DeepSeek重构产业生态:餐饮、金融与短视频的智能跃迁

引言:智能时代的产业共振 在数字技术浪潮席卷全球的当下,DeepSeek作为人工智能领域的重要参与者,正以其强大的算法能力和多模态交互特性,深度渗透至餐饮、金融、短视频等民生关键领域。从长江之畔的烟火气到陆家嘴的金融脉搏&…

Umi-OCR 全家桶

介绍: 下载 访问官网地址 https://github.com/hiroi-sora/umi-ocrhttps://github.com/hiroi-sora/umi-ocr 点击下载(.exe 文件 安装即可) 桌面使用 安装完毕后去安装路径下点击 Umi-OCR.exe (默认不会生成桌面的快捷方式&…

【机器人-基础知识】标定 - 相机内参求解原理(单应性矩阵、内参约束方程)

1. 求解目标:内参 从世界坐标系到像素坐标系的齐次坐标形式: s [ u v 1 ] K [ R t ] [ X w Y w Z w 1 ] s \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} K \, [\, R \quad t \,] \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} s ​uv1​ ​K…

驾驭 DeepSeek 科技之翼,翱翔现代学习新天际

在当今这个信息爆炸的时代,学习的方式和途径正在经历着前所未有的变革。人工智能技术的飞速发展,为我们的学习带来了全新的机遇和挑战。DeepSeek 作为一款强大的大语言模型,凭借其卓越的性能和丰富的功能,为现代学习注入了新的活力…

Unix时间戳BKP备份寄存器RTC实时时钟

Unix时间戳 Unix时间戳,也称为POSIX时间或Epoch时间,是一种在Unix和类Unix操作系统中使用的时间表示方法。它表示的是自1970年1月1日00:00:00 UTC(协调世界时)至当前时间经过的秒数,不考虑闰秒。Unix时间戳通常以秒为…

JVM常用概念之信任非静态final字段

问题 JVM可以信任非静态的final字段吗? 基础知识 编译器通常信任static final字段,因为已知该值不依赖于特定对象,并且已知它不会改变。那对于静态常量实例的final字段也使如此吗? class M {final int x;M(int x) { this.x x; } }static final M …

蓝桥杯备考:图论之Prim算法

嗯。通过我们前面的学习,我们知道了,一个具有n个顶点的连通图,它的生成树包括n-1个边,如果边多一条就会变成图,少一条就不连通了 接下来我们来学一下把图变成生成树的一个算法 Prim算法,我们从任意一个结…

剑指 Offer II 087. 复原 IP

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20087.%20%E5%A4%8D%E5%8E%9F%20IP/README.md 剑指 Offer II 087. 复原 IP 题目描述 给定一个只包含数字的字符串 s ,用以表示一个 IP 地址&#xf…