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

AMBA-CHI协议详解(一)- Introduction

文章目录

    • [5.3 Write transaction flows](#5.3 Write transaction flows)
      • [5.3.1 Write transaction with no snoop and separate responses](#5.3.1 Write transaction with no snoop and separate responses)
      • [5.3.2 Write transaction with snoop and separate responses](#5.3.2 Write transaction with snoop and separate responses)
      • [5.3.3 CopyBack Write transaction to memory](#5.3.3 CopyBack Write transaction to memory)
    • [5.4 Atomic transaction flows](#5.4 Atomic transaction flows)
      • [5.4.1 Atomic transactions with data return](#5.4.1 Atomic transactions with data return)
      • [5.4.2 Atomic transaction without data return](#5.4.2 Atomic transaction without data return)
      • [5.4.3 Atomic operation executed at the SN](#5.4.3 Atomic operation executed at the SN)

5.3 Write transaction flows

本节给出了写入事务的互连协议流程示例。

5.3.1 Write transaction with no snoop and separate responses

WriteNoSnp 事务流的步骤如下:(传输的数据副本以粗体标记。)

  1. RN-F0 向 HN-F 发起 WriteNoSnp 事务。HN-F 接收并分配该请求。
  2. HN-F 发送 DBIDResp 而不发送 Comp。同时,HN-F 向 SN-F 发送 WriteNoSnp。
  3. RN-F0 用数据 NCWrData 作出响应。SN-F 向 HN-F 返回 CompDBIDResp。
  4. HN-F 在接收到来自 SN-F 的 CompDBIDResp 后发送 Comp。HN-F 向 SN-F 发送 NCBWrData。(此流程示例显示 Comp 在接收到来自 SN-F 的 CompDBIDResp 后发送。然而,HN-F 被允许在接收到来自 RN-F0 的 WriteNoSnp 请求后随时发送 Comp。)
  5. RN-F0 等待来自 HN-F 的 Comp,并释放其请求。

5.3.2 Write transaction with snoop and separate responses

WriteUniquePtl事务实例

带有Snoop的WriteUniquePtl步骤:

  1. RN-F0向HN-F发送WriteUniquePtl写入请求。
  2. HN-F向RN-F1和RN-F2发送SnpCleanInvalid请求。HN-F还向RN-F0返回DBIDResp。RN-F2缓存行状态从UD转换为I。
  3. RN-F1向HN-F发送SnpResp_I,RN-F2向HN-F发送SnpRespData_I_PD。
  4. RN-F0向HN-F发出NCBWrData。HN-F将写入数据与dirty line合并,并向SN-F发送WriteNoSnp。
  5. HN-F向RN-F0发送Comp响应。
  6. SN-F 返回 CompDBIDResp 给 HN-F。
  7. HN-F 发送 NCBWrData 给 SN-F。

5.3.3 CopyBack Write transaction to memory

WriteBackFull示例

  1. RN-F0 向 HN-F 发送WriteBackFull请求。
  2. HN-F 返回 CompDBIDResp 给 RN-F0。RN-F0 缓存行状态从 UD 转变为 I。
  3. RN-F0 向 HN-F 发送 CBWrData_UD_PD。HN-F 向 SN-F 发送 WriteNoSnp。
  4. SN-F 返回 CompDBIDResp 给 HN-F。
  5. HN-F 发送 NCBWrData 给 SN-F。

5.4 Atomic transaction flows

本节展示不同原子事务类型的流程。

5.4.1 Atomic transactions with data return

此流程适用于:

  • AtomicLoad
  • AtomicCompare
  • AtomicSwap

Atomic transaction with snoops and data return

下图显示了在 HN-F 执行的原子操作。

  1. RN-F0 向 HN-F 发送原子事务。
  2. 在接收到原子请求后,HN-F:
    • 向RN-F0发送DBIDResp以获取原子事务数据。
    • 在确定需要窥探后,向其他RN-F发送SnpUnique窥探请求。
    • HN-F被允许但不要求向SN-F发送一个推测性的ReadNoSnp请求。
  3. RN-F2在UD状态下拥有缓存行,并通过发送数据和使其自己的缓存副本失效来响应。
    • 响应为SnpRespData_I_PD。
    • 该数据标记为(InitialData,初始数据),以将其与请求者发送的数据和在执行原子操作后写入SN-F的数据区分开。
    • HN-F还从RN-F1接收到第二个窥探响应SnpResp_I。
  4. 在接收到所有窥探响应后,HN-F将CompData_I发送给请求者。
    • 与Comp一起发送的数据是数据的初始副本。
    • 该数据在 RN-F0 处不得以一致状态缓存。
  5. 作为之前发送的 DBIDResp 的响应,HN-F 从请求者接收 NonCopyBackWrData_I 响应。
    • 该数据标记为 (TxnData),以将其与 RN-F2 对 HN-F 的窥探请求的响应中发送的数据区分开。
  6. 一旦 HN-F 从请求者接收到 NonCopyBackWrData_I 响应,并且从 RN-F2 接收到带数据的窥探响应,它将执行原子操作。
    • 原子操作执行后的结果值标记为 (NewData),并写入 SN-F。
  7. 在此示例中,由于推测性读取而接收到的读取数据被 HN-F 丢弃。

Atomic transaction without snoops and with data return

下图显示了在Home节点执行的原子操作。

  1. RN-F0 向Home节点发送原子事务请求。
  2. Home节点向 RN-F0 返回DBIDResp。
  3. Home节点向 SN 发送ReadNoSnp请求。与此同时,RN 向Home节点发送 NCBWrData(TxnData)。
  4. SN 向Home节点返回 RespData_I(InitialData)。
  5. Home节点返回 CompData_I(InitialData)。
  6. Home节点执行原子操作并向 SN 发送WriteNoSnp请求。
  7. SN 向Home节点返回 CompDBID 响应。
  8. Home节点将原子操作的结果发送给 SN,标记为(NewData)。

5.4.2 Atomic transaction without data return

此流程适用于AtomicStore事务。

Atomic transaction with snoops and without data return

下图显示了在HN-F执行的原子操作。该流程类似于带有窥探且有数据返回的原子事务,唯一不同的是对RN-F0的Comp响应不包含数据。

HN执行的AtomicStore事务的步骤如下:

  1. RN-F0向HN-F发送AtomicStore请求。
  2. HN-F向请求者RN-F0发出DBIDResp,并向RN-F1和RN-F2发出SnpUnique请求。
  3. RN-F1向HN-F返回SnpResp_I响应。RN-F2的缓存行处于UD状态,并返回SnpRespData_I_PD(InitialData)响应。 这使得RN-F2中的缓存副本失效。
  4. RN-F0 将写入数据 (TxnData) 发送到 HN-F。HN-F 在本地执行 AtomicStore 操作。
  5. HN-F 向 SN-F 发出 WriteNoSnp 请求。
  6. SN-F 向主节点返回 CompDBIDResp。
  7. HN-F 将原子操作的结果发送给 SN-F,标记为 (NewData)。

Atomic transaction without snoops and without data return

下图显示了在Home节点执行的原子操作。该流程类似于没有窥探且有数据返回的原子事务,只是对请求节点的 Comp 响应不包括数据。

注意:

在图中,从SN节点读取是为了获取初始数据,并且不是推测性的。

来自Home节点的 Comp 响应可以与 DBIDResp 响应合并。

  1. RN 向 HN 发送 AtomicStore 请求。
  2. HN 返回 DBIDResp 响应给 RN,指示 RN 可以将写入数据发送到 HN。
  3. HN 向 RN 发送 Comp 响应,并向 SN 发送 ReadNoSnp 请求。
  4. SN 返回 RespData_I 给 HN。
  5. 一旦 HN 从 RN 获取写入数据,它可以执行原子操作并向 SN 发送 WriteNoSnp。
  6. SN 返回 CompDBIDResp 给 HN。
  7. HN 将原子操作的结果发送给 SN,标记为 NewData。

5.4.3 Atomic operation executed at the SN

下图显示了一个示例原子事务流,其中 SN-F 正在执行原子操作。

在 SN-F 执行的 AtomicStore 事务的步骤如下:

  1. RN-F0 向 HN-F 发送 AtomicStore 事务。
    • 原子请求是针对Snoopable位置的。
  2. 在接收到原子请求后,HN-F:
    • 向RN-F0发送DBIDResp以获取原子事务数据。
    • 在确定需要窥探后,向其他RN-F发送SnpUnique。
  3. RN-F2在UD状态下具有缓存行,并通过发送数据和使其自己的缓存副本失效来响应。
    • 响应为SnpRespData_I_PD。
    • 该数据在图中标记为(InitialData),以将其与请求者发送的数据和写入SN-F以执行原子操作的数据区分开。
    • HN-F还从其他被窥探的RN-F接收到第二个窥探响应SnpResp_I。
  4. HN-F使用WriteNoSnp事务将接收到的数据写入SN-F。
  5. 作为之前发送的DBIDResp的响应,HN-F从请求者接收到NonCopyBackWrData响应。
  6. HN-F在将窥探响应数据发送到SN-F后,向SN-F发送AtomicStore请求,并执行完成原子事务所需的消息序列。
  7. HN-F 在将 Comp 响应发送给请求者并从 SN-F 收到原子事务的 Comp 响应后,释放请求。
    • 当所有窥探响应都收到时,HN-F 可以发送 Comp 响应。
相关推荐
张一西2 个月前
ARM学习(42)CortexM3/M4 MPU配置
stm32·arm·mpu·nxp·arm架构·cortexm3·cortexm4
charlie1145141915 个月前
STM32 从0开始系统学习2
stm32·嵌入式硬件·c·1024程序员节·arm架构·寄存器映射
Spcarrydoinb9 个月前
11111
arm架构
charlie1145141919 个月前
QEMU + Vscode + Arm Arch‘s Linux调试小记
操作系统·调试·arm架构·arch linux
Spcarrydoinb9 个月前
嵌入式学习——硬件(ARM体系架构)——day51
汇编·arm开发·学习·arm架构
码农小展10 个月前
ARM的工作模式
arm开发·stm32·arm·arm架构
农民真快落10 个月前
【IC设计】任意倍数占空比为50%的奇数分频和偶数分频(Verilog源码、仿真波形、讲解)
fpga开发·riscv·chisel·一生一芯·cpu设计
数字硬鉴1 年前
AMBA-CHI协议详解(二)
amba·arm架构·cpu设计·chi协议
农民真快落1 年前
【程序人生】研二下学期快结束了~~~~随便写写
fpga开发·riscv·chisel·一生一芯·cpu设计