AMBA-CHI协议详解(十八)

server/2025/2/23 17:59:53/

在这里插入图片描述
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

文章目录

    • 4.5 Response types
      • 4.5.1 Completion response
      • 4.5.2 WriteData response
      • 4.5.3 Snoop response
      • 4.5.4 Miscellaneous response


4.5 Response types

  每个请求可以生成一个或多个响应。 某些响应也可以包含数据。 响应被分类为如下:

  • Completion response
  • WriteData response
  • Snoop response
  • Miscellaneous response

4.5.1 Completion response

  对于除 PCrdReturn 和 PrefetchTgt 之外的所有事务,完成响应是必需的。它通常是从完成者发送的最后一条消息,以结束请求事务。 然而,请求者可能仍会发送 CompAck 响应以结束事务。 完成保证请求已到达 PoS 或 PoC,在那里将与来自系统中任何请求者的同一地址的请求进行排序。

Read and Atomic transaction completion
  读取完成可以是通过 RDAT 通道使用 CompData 操作码的单个响应,或是两个单独的响应,一个在 RSP通道使用 RespSepData 操作码,另一个在 RDAT 通道使用 DataSepResp 操作码。

  AtomicLoad、AtomicSwap 和 AtomicCompare 完成在 RDAT 通道上发送,并使用 CompData操作码。

CompData 和 DataSepResp 完成响应包括 Resp 字段,指示以下内容:

Cache state - 请求者处缓存行的最终允许状态,适用于除 ReadNoSnp 和 ReadOnce* 之外的所有读取。
Pass Dirty - 指示是否将更新内存的责任传递给请求者。传递脏数据位的断言在响应名称中显示为 _PD。

当使用单独的 Comp 和 Data 响应时,RespSepData 还包括带有缓存状态和传递脏数据指示的 Resp 字段。RespSepData 中的 Resp 字段值必须是不可适用并设置为零,或者与相应的 DataSepResp 中的值相同。

下表显示了允许的读取事务完成、Resp字段的编码以及响应的含义。 Subordinate节点只能在响应ReadNoSnpSep时发送数据分离响应,并且只能在响应ReadNoSnp时发送完整数据。

在这里插入图片描述
在这里插入图片描述
在带有error指示的响应中,缓存状态可以是任何值,包括保留值。

Dataless transaction completion
  对于Dataless和没有数据的 MakeReadUnique 事务,完成信息通过 CRSP 通道发送,并使用 Comp、CompPersist、CompCMO 或 CompStashDone 操作码。

  CompCMO 是在组合写入事务中 CMO 和 PCMO 的完成消息。 它只能在组合写入事务中使用。 CompCMO 可以与Persist响应结合使用,作为 CompPersist 操作码。

Comp 响应包括 Resp 字段,指示以下内容:
Cache state - 请求者允许缓存行处于的最终状态,CMO 事务除外。对于 CMO 事务,完成中的缓存状态字段值,特别是在 Comp、CompCMO 和 CompPersist 事务中,将被忽略,缓存状态保持不变。

下表显示了允许的Dataless事务Comp、Resp 字段的编码以及响应的含义。
在这里插入图片描述
在带有Error指示的响应中,缓存状态可以是任何值,包括保留值。

Write and Atomic transaction completion

  写入和AtomicStore完成通过 CRSP 通道发送,并使用 Comp 或 CompDBIDResp 操作码。

  写入事务完成时,不会传递任何缓存状态信息或Dirty缓存行。 对于任何写入事务完成,Comp 或 CompDBIDResp 响应的 Resp 字段必须设置为零,除了WriteNoSnpDef。所有缓存状态信息和Dirty缓存行的责任都通过 WriteData 进行传递。

允许的写入事务完成响应为:
Comp - 用于完成响应与 DBIDResp 或 DBIDRespOrd 响应分开的情况。

CompDBIDResp - 用于完成响应与 DBIDResp 或 DBIDRespOrd 响应结合的情况。
所有 CopyBack 请求必须使用 CompDBIDResp 完成响应。Immediate writes和 AtomicStore 可以单独发送 Comp 和 DBIDResp 或 DBIDRespOrd 响应,或者可以将两个响应结合并发送 CompDBIDResp,前提是两者都准备好发送给请求者。

WriteNoSnpDef
WriteNoSnpDef 事务中 Comp 或 CompDBIDResp 响应的 Resp 字段和 RespErr 字段值组合的允许情
况见下表
在这里插入图片描述
HN-F 被允许但不期望成为 WriteNoSnpDef 请求的目标主节点。 接收到预期的 WriteNoSnpDef 请求的 HN-F,必须不能将 WriteNoSnpDef 请求转发给 SN-F。HN-F 必须返回 OK/不支持的响应。

4.5.2 WriteData response

  写入数据响应是写入请求和 DVMOp 事务的一部分。 请求者在收到可接受数据的缓冲区可用保证后,将写入数据发送给完成者。 缓冲区可用性通过完成者发送的 DBIDResp 或 DBIDRespOrd 响应进行信号传递。(下游有存储数据的Buff空间后返回 DBIDResp 或 DBIDRespOrd)

写入数据响应在 WDAT 通道上发送,并使用以下opcode。

CopyBackWriteData, CBWrData
  用于 WriteBack、WriteClean、WriteEvictFull 和 WriteEvictOrEvict,以及 CopyBac
k组合写入事务。 从请求者的缓存向互连传输一致性数据。 在发送写数据响应之前,包含缓存行状态的指示。

NonCopyBackWriteData, NCBWrData
  用于WriteUnique 、WriteNoSnp、WriteNoSnpDef、Combined Immediate Write
transactions。 也用于DVMOp事务。 响应中的缓存状态必须为I。

NonCopyBackWriteDataCompAck, NCBWrDataCompAck
用于即时Immediate Write、Combined Write transactions。 组合NonCopyBackWrData and CompAck。响应中的缓存状态必须为I。

WriteDataCancel

用于通知完成者在写数据发送之前写请求被取消。

  • 请求节点可以在WriteNoSnpPtl、WriteUniquePtl、WriteUniquePtlStash和相应的组合写入事务中发送写数据取消,而不是NonCopyBackWrData。
  • Home节点可以在 WriteNoSnpFull、WriteNoSnpPtl 和相应的组合写入事务中,向从属节点发送 WriteDataCancel,而不是 NonCopyBackWrData。
  • 请求节点或主节点可以在 WriteNoSnpDef 事务中,向从属节点发送 WriteDataCancel,而不是 NCBWrdata,前提是 Comp 或 CompDBIDResp 响应包含NDERR、OK/Defer 或 OK/Unsupported。
  • 在写入Device内存的请求中不得使用,除非在 WriteNoSnpDef 事务中。
  • 所有原本打算传输的数据包必须发送。
    WriteDataCancel 消息中的 BE 字段值必须设置为全零。
  • 响应中的缓存状态必须为 I。

响应包括 Resp 字段,指示以下内容:

Cache state — 指示发送 WriteData 响应之前缓存行的状态。 如果在发送原始事务请求后,但在发送相应的 WriteData 响应之前,请求者收到了对同一地址的snoop请求,则该状态可能与发送原始事务请求时缓存行的状态不同。

Pass Dirty — 指示请求者是否将更新内存的责任传递。传递脏位的断言在响应名称中用 _PD 表示。

下表显示了允许的 WriteData 响应、操作码和响应字段编码,以及响应的含义。
在这里插入图片描述
在写入事务完成后,请求者的缓存行状态无法从 WriteData 响应中的缓存状态信息中确定。 可以通过事务的opcode确定缓存行在事务后是否保持有效:
• WriteBack 或 WriteEvictFull 事务必须处于 I 状态。
• WriteClean 事务可以保持allocated并处于Clean状态。

4.5.3 Snoop response

  Snoop事务包括Snoop 响应。 Snoop响应可以有数据或没有数据。 Snoop 响应的形式有:

Snoop response without data

  • 当不需要数据传输时使用此Snoop 响应。
  • 它通过SRSP通道发送,并使用SnpResp opcode。
  • 它可以包含对stash snoops的DataPull请求。
  • 没有数据的snoops响应始终用于对SnpDVMOp事务的响应。

Snoop response without data to Home and DCT

  • 当Snoopee向Requester发送数据且不需要向Home节点进行数据传输时,使用此Snoop 响应。
  • 它通过SRSP通道发送,并使用SnpRespFwded操作码。

Snoop response with data

  • 当一整行缓存数据被传输到Home节点时,使用此Snoop 响应。
  • 它在WDAT通道上发送,并使用SnpRespData操作码。
  • 它可以包含对stash snoops的DataPull请求。

Snoop response with partial data

  • 当部分缓存行数据被传输到主节点时,将使用此Snoop 响应。
  • 它通过WDAT通道发送,并使用SnpRespDataPtl操作码。
  • 它可以包含对stash snoops的DataPull请求。
  • 当Snoop 请求和缓存行状态的组合为:
    — 任何窥探请求,除了SnpMakeInvalid,并且缓存行状态为UDP时,发送。

Snoop response with data to Home and DCT

  • 当Snoopee向请求者发送数据,并且还需要向主节点进行数据传输时,将使用此Snoop 响应。
  • 它通过DAT通道发送,并使用SnpRespDataFwded操作码。

窥探响应包括Resp字段,指示以下内容:
Cache state — 在发送Snoop 响应后,Snoop 节点上缓存行的最终状态。
Pass Dirty — 指示更新内存的责任已转移给请求者或ICN。
仅在带数据的Snoop 响应中被断言。 Pass Dirty 位的断言在响应名称中由 _PD 显示。

  Snoop 响应还包括适用于 DCT 的 FwdState 字段,指示缓存状态和在发送给请求者的 CompData 响应中的 Pass Dirty 值。

Snoop 响应缓存状态信息提供了在发送Snoop 响应后缓存行的状态。
这与以下情况不同:
• 写入数据响应,其中缓存状态信息提供了在发送写入数据时缓存行的状态。
• 读取数据响应,其中缓存状态信息指示事务完成后缓存行的允许状态。

下表显示了允许的无数据Non-forward snoop响应、RSP操作码和响应字段编码,以及响应的含义。
在这里插入图片描述在这里插入图片描述

下表显示了允许的无数据Forward type窥探响应、RSP操作码、Resp和FwdState字段编码,以及响应的含义
在这里插入图片描述
在这里插入图片描述
下表显示了允许的Non-forward snopp响应及其数据、DAT 操作码和响应字段编码,以及响应的含义
在这里插入图片描述
在这里插入图片描述
下表显示了允许的Forward type snoop响应及数据、DAT 操作码、响应和转发状态字段编码,以及响应的含义。
在这里插入图片描述
在这里插入图片描述

在对stash snoops的响应中,Snoopee可以通过设置Data Pull发送结合了读取请求的snoop响应
(SnpResp_X_Read)。允许的带Data Pull的snoop响应有:

  • For SnpUniqueStash:
    — SnpResp_I_Read
    — SnpRespData_I_Read
    — SnpRespData_I_PD_Read
    — SnpRespDataPtl_I_PD_Read

  • For SnpMakeInvalidStash:
    — SnpResp_I_Read

  • For SnpStashUnique:
    — SnpResp_I_Read
    — SnpResp_UC_Read
    — SnpResp_SC_Read
    — SnpResp_SD_Read

  • For SnpStashShared:
    — SnpResp_I_Read
    — SnpResp_UC_Read

4.5.4 Miscellaneous response

在本节中的所有响应中,Resp 和 RespErr 字段没有意义,必须设置为零。

miscellaneous responses包括
CompAck

  • 在收到完成响应时由请求者发送。
  • 由Read, Dataless, WriteNoSnp, WriteUnique, 和CopyBack Write使用。
  • 对于Immediate Write事务,CompAck 响应中的 Resp 值不适用,必须设置为零。
  • 对于CopyBack Write事务,CompAck 响应中的 Resp 值是适用的。 CompAck 中 Resp 的允许值如下表所示。
    在这里插入图片描述
    a. 当CopyBack写事务为WriteClean时,Unique副本仍然可以存在于请求者处。

RetryAck

如果请求由于缺乏适当资源而未被完成者接受,则由完成者发送给请求者。
对于除PCrdReturn或PrefetchTgt之外的任何请求事务,响应是允许的。

PCrdGrant

授予协议信用。使用协议信用发送的后续请求,保证被目标接受。

ReadReceipt

  • 对于具有保序要求的请求,发送此请求以满足与来自同一请求者的其他有序请求的关系。
  • 由从属节点发送,以指示其已接受读取请求,并且不会发送RetryAck响应。
  • 适用于ReadNoSnp, ReadNoSnpSep, and ReadOnce*请求事务。

DBIDResp

  • 发送响应以通知请求者资源可用,以接受写入数据响应。
  • DBIDResp 响应还表明,完成者提供某些事务排序保证。
  • 适用于Write, Combined Write, DVMOp, and Atomic事务。
  • 响应允许从主节点到请求节点,以及从从属节点到主节点和请求节点。(HN到RN,或SN到HN,SN到RN)

DBIDRespOrd

  • 发送响应以通知请求者资源可用,以接受写入数据响应。
  • DBIDRespOrd 响应还表明,完成者提供某些事务排序保证。
  • 适用于Write, Combined Write, and Atomic事务。
  • 在 DVM 事务中不允许使用 DBIDRespOrd。
  • 响应仅允许从主节点到请求节点。

Persist
由完成者发送的 CleanSharedPersistSep 事务,表示之前写入同一内存位置的数据已被持久化。

StashDone
由完成者发送的 StashOnceSep,以指示请求在完成者处的排序。

TagMatch
由完成者发送,用于带有TagOp为Match的写入事务,以表示标记Tag Match操作完成。


http://www.ppmy.cn/server/170174.html

相关文章

微信小程序-二维码绘制

wxml <view bindlongtap"saveQrcode"><!-- 二维码 --><view style"position: absolute;background-color: #FFFAEC;width: 100%;height: 100vh;"><canvas canvas-id"myQrcode" style"width: 200px; height: 200px;ba…

源码方式安装llama.cpp及调试

llama.cpp源码方式安装和调试配置 构建和编译 注意这里是cuda&#xff0c;且要开启debug模式 cmake -B build -DGGML_CUDAON -DCMAKE_BUILD_TYPEDebug cmake --build build --config Debug正在编译&#xff1a; 配置launch.json用于调式&#xff1a; 要根据自己的环境路径…

Vue.js 与 Ajax(Axios)的深入探索

Vue.js 与 Ajax(Axios)的深入探索 引言 在当前的前端开发领域,Vue.js 已经成为了最受欢迎的 JavaScript 框架之一。它以其简洁的语法、高效的性能和强大的生态系统获得了广泛的应用。而在与后端服务交互时,Ajax 技术是不可或缺的。本文将深入探讨 Vue.js 与 Ajax(Axios)…

AWS-SAA中文版题库

一家公司收集多大洲城市的温度、湿度和大气压数据。该公司每天从每个站点收集的平均数据量为500GB。每个站点都有高速互联网连接。该公司希望尽快将所有这些全球站点的数据聚合到一个AmazonS3存储桶中。解决方案必须将操作复杂性降至最低。哪种解决方案满足这些要求&#xff1f…

win32汇编环境,窗口程序中使用菜单示例二

;运行效果 ;win32汇编环境,窗口程序中使用菜单示例二 ;最基本的应用&#xff0c;通过将资源里的菜单载入窗口的模式&#xff0c;添加菜单及点击后响应的操作方法 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>&g…

Python在实际工作中的运用-Excel数据统计和数据分析

说起Excel数据统计和数据分析&#xff0c;这也是Excel的强项&#xff0c;那为什么还要用python呢&#xff01;我认为主要原因还是和使用场景有关&#xff0c;在需要进行重复性的、自动化的出具数据统计和分析报表方面&#xff0c;采用python来完成还是比较适合的。下面我们就用…

android 网络防护 手机网络安全怎么防

手机也会受到网络攻击吗&#xff1f;是的。没错。手机目前已经成为攻击者最爱的目标。不只是它更容易受到攻击&#xff0c;而是他缺乏安全的保护。 企业&#xff0c;政府的基础设施虽然可以让攻击者获利很多&#xff0c;但是攻击难度很大&#xff0c;这些组织都有专业的团队在处…

《MB-TaylorFormer:通过泰勒公式扩展的多分支高效Transformer用于图像去雾》学习笔记

pape&#xff1a;2308.14036 GitHub&#xff1a;FVL2020/ICCV-2023-MB-TaylorFormer 目录 摘要 1、介绍 2、相关工作 2.1 基于 CNN 的图像去 2.2 高效自注意力 2.3 多尺度 Transformer 网络 3、方法 3.1. 多分支骨干网络 3.2. 多尺度 patch 嵌入 3.3 泰勒展开多头自…