
ARM AMBA 5 CHI 架构规范IHI0050B中文翻译本文档为 ARM AMBA 5 CHI Architecture SpecificationIHI0050BIssue B2017 年 8 月的中文译本按章节拆分如下。说明本翻译仅供参考学习使用。如中英文内容存在冲突以 ARM 官方英文原版为准。原版版权 © 2014, 2017 ARM Limited。目录前言第1章 简介第2章 事务第3章 网络层第4章 一致性协议第5章 互连协议流程第6章 独占访问第7章 缓存暂存第8章 DVM 操作第9章 错误处理第10章 服务质量第11章 数据源与跟踪标签第12章 链路层第13章 链路握手第14章 系统一致性接口第15章 属性、参数与广播信号附录A 消息字段映射附录B 通信节点附录C 修订记录术语表前言本前言介绍 AMBA 5 CHI 架构规范AMBA 5 CHI Architecture Specification包含以下各节关于本规范使用本规范约定补充阅读反馈关于本规范本规范描述 AMBA 5 CHI 架构。目标读者本规范面向希望熟悉 CHI 架构并设计与 CHI 架构兼容的系统和模块的硬件工程师与软件工程师。使用本规范本书分为以下各章第1章 引言Introduction阅读本章了解 CHI 架构简介以及本规范中使用的术语。第2章 事务Transactions阅读本章概览节点之间的通信通道、相关的包字段以及事务结构。第3章 网络层Network Layer阅读本章了解负责确定目的节点之节点 ID 的网络层。第4章 一致性协议Coherence Protocol阅读本章了解一致性协议简介。第5章 互连协议流程Interconnect Protocol Flows阅读本章查看不同事务类型的协议流程示例。第6章 独占访问Exclusive Accesses阅读本章了解该架构为支持独占访问而包含的机制。第7章 缓存暂存Cache Stashing阅读本章了解可将数据装入缓存的缓存暂存机制。第8章 DVM 操作DVM Operations阅读本章了解协议用于管理虚拟内存的 DVM 操作。第9章 错误处理Error Handling阅读本章了解错误响应要求。第10章 服务质量Quality of Service阅读本章了解协议为支持服务质量QoS而包含的机制。第11章 数据源与跟踪标签Data Source and Trace Tag阅读本章了解为系统调试、跟踪和性能测量提供额外支持的机制。第12章 链路层Link Layer阅读本章了解链路层链路层为协议节点与互连之间基于包的通信提供机制。第13章 链路握手Link Handshake阅读本章了解链路层握手要求。第14章 系统一致性接口System Coherency Interface阅读本章了解支持将组件连入一致性域和 DVM 域或从这两个域断开的接口信号。第15章 属性、参数与广播信号Properties, Parameters, and Broadcast Signals阅读本章了解为配置可选接口属性提供灵活性的可选信号。附录A 消息字段映射Message Field Mappings阅读本附录了解消息的字段映射。附录B 通信节点Communicating Nodes阅读本附录了解协议中可合法通信的节点对。附录C 修订Revisions阅读本附录了解本规范各发布版本之间的技术变更。术语表阅读术语表查看本规范中所用术语的定义。约定以下各节说明本规范可使用的约定排版约定时序图信号数字排版约定排版约定如下italic斜体用于突出重要说明、引入特殊术语以及表示内部交叉引用和引文。bold粗体用于表示信号名并酌情用于描述性列表中的术语。monospace等宽字体用于汇编器语法描述、伪代码和源代码示例在正文中还用于指令助记符以及对汇编器语法描述、伪代码和源代码示例中所出现其他项的引用。SMALL CAPITALS小型大写字母用于少数具有特定技术含义的术语。时序图“时序图约定图例”Key to timing diagram conventions说明了时序图中所用的各个组成部分。出现变体时均有明确的标注。对于图中未明确给出的任何时序信息读者不得自行臆测。带阴影的总线区域和信号区域为未定义因此此时总线或信号在阴影区域内可以取任意值。实际电平并不重要不影响正常操作。时序图有时会将单比特信号同时显示为 HIGH 和 LOW其外观与 “时序图约定图例” 所示的总线变化类似。如果时序图以这种方式显示单比特信号则其取值不影响附带的描述。注上述时序图词条解释见文末注1。时间-空间图Time-Space 图“Time-Space 图约定图例”Key to Time-Space diagram conventions说明了用于展示协议流程的格式。在 Time-Space 图中RN-F(Request Node - Fully coherent)HN-F(Home Node - Fully coherent)协议节点沿水平轴排列时间沿垂直方向自上而下表示。事务在协议节点上的生命周期用沿时间轴从分配到释放时刻的狭长阴影矩形表示。节点的初始缓存状态显示在顶部。时间轴上的菱形表示请求到达以及其处理是否因等待另一事件完成而被阻塞。事件发生时的缓存状态转换用 I-UC 表示。注上图解释见文末注2。信号信号约定如下信号电平Signal level有效asserted信号的电平取决于该信号是高电平有效active-HIGH还是低电平有效active-LOW。“有效” 是指对高电平有效信号为 HIGH。对低电平有效信号为 LOW。小写 nLowercase n位于信号名开头或结尾的小写 n 表示该信号为低电平有效。数字数字通常以十进制书写。二进制数前加 0b十六进制数前加 0x二者均以等宽字体书写。补充阅读本节列出 ARM 的相关出版物。访问 ARM 文档请参见 Infocenter 网站 http://infocenter.arm.com。ARM 出版物《ARM® AMBA® AXI and ACE Protocol Specification》ARM IHI 0022。反馈ARM 欢迎就其文档提出反馈意见。关于本规范的反馈如果您对本规范的内容有意见请发送电子邮件至 errataarm.com并提供以下信息标题ARM AMBA 5 CHI Architecture Specification。编号ARM IHI 0050B。您的意见所适用的页码。对您的意见的简要说明。ARM 也欢迎有关内容增补和改进的一般性建议。第1章 简介1.1 架构概述CHI 架构提供了一套全面的分层规范用于构建小型、中型和大型系统这些系统由多个组件组成并使用可扩展的一致性集线器接口coherent hub interface和片上互连。CHI 架构允许组件连接拓扑的灵活性这可由系统的性能、功耗和面积需求来驱动。基于 CHI 的系统的组件可以包括独立处理器、处理器集群、图形处理器、内存控制器、I/O 桥、PCIe 子系统以及互连本身。该架构的关键特性包括可扩展架构支持从小型系统扩展到大型系统的模块化设计。独立的分层方法由协议层Protocol、网络层Network和链路层Link组成各层功能明确区分。基于包的通信。所有事务由基于互连的归属节点Home Node处理该节点协调所需的监听、缓存和内存访问。CHI 一致性协议支持64 字节缓存行的一致性粒度。用于监听扩展的监听过滤器和基于目录的系统。MESI 和 MOESI 两种缓存模型并支持从任何缓存状态转发数据。额外的部分Partial和空Empty缓存行状态。CHI 事务集包括丰富的事务类型允许实现性能、面积和功耗高效的系统缓存。支持互连内的原子操作和同步。用于高效移动和放置数据的事务以及时将数据移动到更靠近预期使用点的位置。通过分布式虚拟内存DVM操作实现虚拟内存管理。请求重试用于管理协议资源。支持端到端服务质量QoS。可配置的数据宽度以满足系统需求。按事务逐一支持 ARM TrustZone™。针对一致性写优化的、采用生产者-消费者定序模型的事务流。跨组件和互连的错误报告与传播以满足系统可靠性和完整性需求。使用数据毒化Data Poisoning和逐字节错误指示来处理子缓存行数据错误。组件接口上的功耗感知信号支持 Flit 级时钟门控。用于时钟门控和电源门控控制的组件激活与停用序列。用于功耗和时钟控制的协议活动指示。1.1.1 架构层次功能分为以下几层协议层Protocol。网络层Network。链路层Link。表 1-1 描述了每一层的主要功能。表 1-1 CHI 架构的层次层通信粒度主要功能Protocol协议层Transaction事务协议层是 CHI 架构的最顶层。协议层的功能是• 在协议节点生成和处理请求与响应。• 定义包含缓存的协议节点处允许的缓存状态转换。• 定义每种请求类型的事务流。• 管理协议级流控。Network网络层Packet包网络层的功能是• 将协议消息打包成包。• 确定源节点 ID 和目标节点 ID 并将其添加到包中以便通过互连将包路由到所需目的地。Link链路层Flit链路层的功能是• 提供网络设备之间的流控。• 管理链路通道以提供跨网络的无死锁交换。1.2 拓扑CHI 架构基本上与拓扑无关。但是本规范包含了某些与拓扑相关的优化以使实现更加高效。图 1-1 展示了三个拓扑示例用以说明可用的互连带宽和可扩展性选项的范围。Crossbar交叉开关这种拓扑构建简单天然提供低延迟的有序网络。它适用于连线数量仍然相对较小的情况适合节点数量较少的互连。Ring环形这种拓扑在互连布线效率和延迟之间提供了良好的权衡。延迟随环上节点数量线性增加。该拓扑适用于中等规模的互连。Mesh网状这种拓扑以更多连线为代价提供更大的带宽。它具有高度模块化特性可以通过增加更多行和列的交换开关轻松扩展到更大的系统。该拓扑适用于更大规模的互连。1.3 术语以下术语在本规范中具有特定含义术语中文译名定义Transaction事务事务执行单个操作。通常事务要么从内存读取要么向内存写入。Message消息协议层术语定义两个组件之间交换的粒度。示例包括• 请求Request。• 数据响应Data response。• 监听请求Snoop request。单个数据响应消息可能由多个包组成。Packet包端点之间通过互连传输的粒度。一个消息可能由一个或多个包组成。例如单个数据响应消息可能由 1 到 4 个包组成。每个包都包含路由信息如目的地 ID 和源 ID使其能够在互连上独立路由。FlitFlit最小的流控单元。一个包可能由一个或多个 Flit 组成。给定包的所有 Flit 通过互连时遵循相同的路径。注意对于 CHI所有包都由单个 Flit 组成。PhitPhit物理层传输单元。一个 Flit 可能由一个或多个 Phit 组成。Phit 定义为两个相邻网络设备之间的一次传输。注意对于 CHI所有 Flit 都由单个 Phit 组成。PoS串行化点Point of Serialization互连内的一个点在该点确定来自不同代理的请求之间的定序。PoC一致性点Point of Coherence在该点所有能够访问内存的代理都保证看到同一内存位置的相同副本。在典型的基于 CHI 的系统中该点是互连中的 HN-F。Downstream cache下游缓存下游缓存是从请求节点的角度定义的。对于某个请求而言下游缓存是该请求使用 CHI 请求事务访问的缓存。请求节点可以将缓存行分配到下游缓存中。Requester请求方通过发出请求消息来启动事务的组件。Requester 一词可用于独立发起事务的组件此类组件也称为主机master。Requester 一词也可用于互连组件即作为系统中正在发生的其他事务的副作用而发出下游请求消息的组件。Completer完成方对从另一个组件收到的事务作出响应的任何组件。完成方可以是互连组件也可以是互连之外的组件例如从机slave。Master主机独立发出事务的代理。通常主机是系统中最上游的代理。主机也可称为请求方Requester。Slave从机接收事务并适当完成事务的代理。通常从机是系统中最下游的代理。从机也可称为完成方Completer或端点Endpoint。Endpoint端点从机组件的另一个名称。顾名思义端点是事务的最终目的地。Protocol Credit协议 Credit来自完成方的 Credit即保证表明它将接受一个事务。Link layer Credit链路层 Credit表明链路另一侧将接受一个 Flit 的 Credit即保证。链路层 CreditL-Credit可以被认为是链路层上单独一跳的 Credit。ICN互连interconnect 的缩写是用于协议节点之间通信的 CHI 传输机制。ICN 可能包括以环形、网状、交叉开关或其他某种拓扑连接的交换开关结构。ICN 可能包括归属节点Home Node和杂项节点Misc Node等协议节点。ICN 的拓扑由实现定义IMPLEMENTATION DEFINED。IPA中间物理地址中间物理地址Intermediate Physical Address。在两阶段地址转换中• 第一阶段产生中间物理地址。• 第二阶段提供物理地址。RN请求节点Request Node生成到互连的协议事务包括读和写。HN归属节点Home Node位于互连内的节点接收来自请求节点的协议事务完成所需的一致性操作并返回响应。SN从属节点Slave Node接收来自归属节点的请求、完成所需操作并返回响应的节点。MN杂项节点Misc NodeMisc 节点或 Miscellaneous 节点。位于互连内的节点接收来自请求节点的 DVM 消息完成所需操作并返回响应。IO Coherent nodeIO 一致节点一种 RN除生成 Non-snoopable 请求外还生成一些 Snoopable 请求。IO 一致节点生成的 Snoopable 请求不会导致接收到的数据以一致状态被缓存。因此IO 一致节点不接收任何监听请求。Write-Invalidate protocol写失效协议一种协议在该协议中当 RN 要向系统中处于共享状态的缓存行写入时必须在继续写入之前失效所有共享副本。CHI 协议是一种写失效协议。In a timely manner以及时方式协议无法定义某事必须发生的绝对时间。但是在足够空闲的系统中它将在不需要任何显式操作的情况下取得进展并完成。Don’t Care不关心一种字段值表示该字段可以设置为任何值包括保留值或非法值。任何接收到某字段值设置为 Don’t Care 的包的组件必须忽略为该字段设置的值。Inapplicable不适用一种字段值表示该字段在该消息的处理中未被使用。1.4 事务分类本规范支持的协议事务及其主要分类如下Read读ReadNoSnp。ReadOnce。ReadOnceCleanInvalid。ReadOnceMakeInvalid。ReadClean。ReadNotSharedDirty。ReadShared。ReadUnique。Dataless无数据CleanUnique。MakeUnique。Evict。StashOnceUnique。StashOnceShared。CleanShared。CleanSharedPersist。CleanInvalid。MakeInvalid。Write写WriteNoSnpPtl、WriteNoSnpFull。WriteUniquePtl、WriteUniqueFull。WriteUniqueStashPtl、WriteUniqueStashFull。WriteBackPtl、WriteBackFull。WriteCleanFull。WriteEvictFull。Atomic原子AtomicStore。AtomicLoad。AtomicSwap。AtomicCompare。在本规范中除非另有明确说明ReadOnce* 代表 ReadOnce、ReadOnceCleanInvalid 和 ReadOnceMakeInvalid。WriteNoSnp 代表 WriteNoSnpPtl 和 WriteNoSnpFull 两者。WriteUnique 代表 WriteUniquePtl、WriteUniqueFull、WriteUniqueStashPtl 和 WriteUniqueStashFull。WriteBack 代表 WriteBackPtl 和 WriteBackFull 两者。StashOnce 代表 StashOnceUnique 和 StashOnceShared 两者。Other其他DVMOp。PrefetchTgt。PCrdReturn。Snoop监听SnpOnceFwd。SnpOnce。SnpStashUnique。SnpStashShared。SnpCleanFwd。SnpClean。SnpNotSharedDirtyFwd。SnpNotSharedDirty。SnpSharedFwd。SnpShared。SnpUniqueFwd。SnpUnique。SnpUniqueStash。SnpCleanShared。SnpCleanInvalid。SnpMakeInvalid。SnpMakeInvalidStash。SnpDVMOp。1.5 一致性概述硬件一致性使系统组件能够共享内存而无需软件执行软件缓存维护来维持缓存之间的一致性。如果两个组件对同一内存位置的写入能够以相同顺序被所有组件观察到则该内存区域是一致的。1.5.1 一致性模型图 1-2 展示了一个一致性系统示例其中包括三个主组件每个组件都带有一个本地缓存和一个一致性协议节点。该协议允许同一内存位置的缓存副本驻留在一个或多个主组件的本地缓存中。一致性协议通过强制要求在每次向某个位置发生存储时该位置最多只存在一份副本来确保所有主组件在任何给定地址位置都能观察到正确的数据值。每次向某个位置存储之后其他主组件可以获得数据的新副本放入自己的本地缓存从而允许多个缓存副本存在。所有一致性都以缓存行粒度维护。缓存行定义为 64 字节对齐、大小为 64 字节的内存区域。协议不要求主内存始终保持最新。只有当内存位置的副本即将不再保存在任何缓存中之前才需要更新主内存。注意尽管这不是必需的但在缓存副本仍然存在时更新主内存也是可以接受的。协议使主组件能够确定某个缓存行是特定内存位置的唯一副本还是可能存在同一位置的其他副本以便如果缓存行是唯一副本主组件可以更改该缓存行的值而无需通知系统中的任何其他主组件。如果缓存行可能也存在于另一个缓存中主组件必须使用适当的事务通知其他缓存。1.5.2 缓存状态模型为了确定组件访问缓存行时是否需要采取操作协议定义了缓存状态。每种缓存状态基于以下缓存行特性Valid有效、Invalid无效当为 Valid 时缓存行存在于缓存中。当为 Invalid 时缓存行不存在于缓存中。Unique独占、Shared共享当为 Unique 时缓存行仅存在于此缓存中。当为 Shared 时缓存行可能存在于多个缓存中但这并不保证。Clean干净、Dirty脏当为 Clean 时缓存没有更新主内存的责任。当为 Dirty 时缓存行相对于主内存已被修改此缓存必须确保主内存最终得到更新。Full完整、Partial部分、Empty空Full 缓存行的所有字节有效。Partial 缓存行可能有部分字节有效但并非所有字节有效。Empty 缓存行没有任何字节有效。图 1-3 展示了七状态缓存模型。缓存行状态见第4章提供了有关每种缓存状态的更多信息。注意非 Partial 或 Empty 的有效缓存状态名称被视为 Full。在图 1-3 中UC、UD、SC 和 SD 都是 Full 缓存行状态。1.6 组件命名组件按 CHI 协议节点类型分类RN请求节点Request Node。生成到互连的协议事务包括读和写。RN 进一步分类为RN-F完全一致请求节点Fully coherent Request Node包含硬件一致性缓存。允许生成协议定义的所有事务。支持所有监听事务。RN-D支持 DVM 的 IO 一致请求节点IO coherent Request Node with DVM support不包含硬件一致性缓存。接收 DVM 事务。生成协议定义的事务子集。RN-IIO 一致请求节点IO coherent Request Node不包含硬件一致性缓存。不接收 DVM 事务。生成协议定义的事务子集。不需要监听功能。HN归属节点Home Node。位于互连内的节点接收来自 RN 的协议事务。HN 进一步分类为HN-F期望接收除 DVMOp 之外的所有请求类型包含一致性点PoC通过监听所需的 RN-F、合并事务的各监听响应并向发出请求的 RN 发送单个响应来管理一致性。期望作为串行化点PoS管理内存请求之间的定序。可能包含目录或监听过滤器以减少冗余监听。注意此为具体实现相关IMPLEMENTATION SPECIFIC可以包含集成的 ICN 缓存。HN-I处理协议定义的有限请求类型子集期望作为 PoS管理针对 IO 子系统的请求的定序。不包含 PoC且不能处理 Snoopable 请求。收到 Snoopable 请求时必须以符合协议的消息作出响应。MN杂项节点Miscellaneous Node接收来自 RN 的 DVM 事务完成所需操作并返回响应。SN从属节点Slave Node。SN 接收来自 HN 的请求完成所需操作并返回响应。SN 进一步分类为SN-F用于普通内存Normal memory的从属节点类型。它可以处理 Non-snoopable 读、写和原子请求包括这些请求的独占exclusive变体以及缓存维护操作CMO请求。SN-I用于外设或普通内存的从属节点类型。它可以处理 Non-snoopable 读、写和原子请求包括这些请求的独占变体以及 CMO 请求。图 1-4 展示了通过互连连接的各种协议节点类型。1.7 读数据源在基于 CHI 的系统中读请求可以从不同的数据源获取数据。如图 1-5 所示这些数据源包括ICN 内的缓存。从属节点Slave Node。对等 RN-F。归属节点Home的一种选择是请求 RN-F 或从属节点仅将数据返回给归属节点然后由归属节点将接收到的数据副本转发给请求方。如果使能数据提供方直接将数据响应转发给请求方而不是经由归属节点转发则可以在此读事务流中省去获取数据的一跳。本规范期望系统使用以下读延迟节省技术Direct Memory Transfer (DMT)直接内存传输定义了允许从属节点直接向请求方发送数据的特性。Direct Cache Transfer (DCT)直接缓存传输定义了允许对等 RN-F 直接向请求方发送数据的特性。DCT 读事务流中的数据提供方必须告知归属节点它已向请求方发送了数据并且在某些情况下它还必须向归属节点发送一份数据副本。以下所有内容为译者添加注1时序图词条解释时序图Timing Diagram是数字电路、FPGA、芯片设计和嵌入式开发中用来描述信号随时间变化的图形化语言。图片里展示的是时序图标准约定符号Key to timing diagram conventions。接下来将逐一详细解释这8个条目并在最后专门梳理最容易混淆的几个概念。逐条详细解析1. Clock时钟图示标准的方波高低电平交替。含义系统的参考基准。通常用于同步逻辑大多数信号的变化或采样都与时钟的特定边沿上升沿或下降沿对齐。2. HIGH to LOW高到低图示带有灰色阴影的下降斜坡。含义信号从高电平1跳变到低电平0。注意这里的阴影区域它表示信号不是瞬间完成跳变的存在过渡时间压摆率/Slew Rate涉及门电路的寄生电容和驱动能力。3. Transient瞬态 / 毛刺图示一条直线突然下探成一个尖锐的倒三角然后立刻恢复原状。含义这是逻辑竞争或噪声引起的短暂错误脉冲Glitch。信号本来应该保持高电平但瞬间掉下去又弹回来了。在同步设计中如果不满足建立/保持时间这种毛刺会被误认为是时钟或有效数据造成严重错误。4. HIGH/LOW to HIGH高/低到高图示带有灰色阴影的上升斜坡。含义无论当前是低电平还是高电平信号正在向高电平跳变。同理阴影表示物理电平的过渡过程需要时间。5. Bus stable总线稳定 / 有效数据图示两条平行的水平直线。含义在多比特总线Bus上数据当前处于稳定且有效的状态可以安全被接收端采样。两条线代表多个信号位同时保持稳定。6. Bus to high impedance总线到高阻态图示两根线并拢后变成一根中间线带有一个类似箭头或括号的符号。含义总线被释放进入高阻态High-Z通常用Z表示。此时总线不由当前的驱动源控制处于悬空状态可以被其他设备驱动。7. Bus change总线变化图示带有交叉菱形X型阴影区间的两根线。含义总线上的数据正在发生改变。因为多位信号不可能完全同时翻转所以在变化瞬间总线的电平组合是未知的、混乱的可能会出现无效的中间状态。交叉菱形表示这段时间内的数据是“无效的”或“不确定的”。8. High impedance to stable bus高阻态到稳定总线图示从一根中间线过渡到交叉菱形再变成两根平行线。含义某个设备开始接管总线。从高阻态开始驱动总线经过一段过渡期菱形区数据未稳定最终总线达到稳定有效状态。 重点辨析最容易混淆的词条1.Transient瞬态 vs.Bus change总线变化Transient通常是单根信号线。它是一个“错误”是短暂偏离了原本稳定值的毛刺最终一定会回到原电平比如1 - 0 - 1那个0是瞬态。Bus change针对总线或多根信号。它是正常的功能切换比如从数据A切换到数据B中间因为多比特不同步所以呈现交叉阴影代表不确定或Don’t Care。它不是回到原值而是变成新值。2.Bus stable总线稳定 vs.HIGH/LOW to HIGH电平跳变单根信号用HIGH/LOW to HIGH表示电平跳变画的是斜坡线。总线用Bus stable表示一段有效数据。你不能把总线画成单根线跳变因为总线是多根线。总线稳定时画成两条平行线总线切换时画成交叉网纹Bus change。两者的图形质感完全不同。3.Bus to high impedancevs.High impedance to stable bus这是方向完全相反的一组状态Bus to high impedance设备“放手”了。总线从有驱动两条线变成悬空一条中线。通常发生在总线仲裁或分时复用TDM中当前设备读写完毕交出总线控制权。High impedance to stable bus设备“接管”了。从悬空一条中线变成有驱动两条线。通常发生在另一个设备获得总线控制权开始输出数据。4. ⚠️ 灰色阴影与交叉菱形的区别灰色阴影阴影斜坡用于单根信号或电平代表物理电压上升或下降的过渡时间斜率。交叉菱形网纹用于总线代表多比特数据在变化时状态不确定的窗口。因为每一位翻转时间不同此时去采样会采到乱七八糟的值所以用交叉表示“这段不要看”。理解这些符号能帮助你在读芯片Datasheet数据手册时准确判断控制信号的有效窗口、总线何时可以安全采样以及何时会发生总线冲突。注2缓存一致性协议过程图解这张图是计算机体系结构特别是缓存一致性协议如ARM的AMBA CHI协议中非常经典的时间-空间图Time-Space diagram。它用来描述分布式系统中不同节点之间随时间推移进行消息交互的完整过程下面详细展开解读。 整体展开解读横轴Time右侧向下的箭头表示时间流逝越往下时间越晚。纵轴Space底部的箭头表示“空间”或“节点”。在这个图里空间被展开成左右两条平行的生命线Lifeline代表两个独立的物理或逻辑实体。整体流程图描述了一个完整的“事务Transaction”生命周期。从左侧节点发起请求REQ经过网络传输到达右侧节点右侧节点进行处理经历阻塞与解除阻塞然后返回响应RESP最终左侧节点完成状态更新并释放资源Deallocation。 问题 1左右两条竖线表示什么这两条竖线代表通信协议中的两个不同的协议节点Protocol nodes也就是消息交互的双方。左侧竖线RN-F (Request Node - Fully coherent)角色全相干请求节点。通常代表发起内存访问请求的组件例如CPU核、CPU集群、或者包含缓存的加速器。图中活动顶部有“Initial cache state初始缓存状态”说明它当前持有一个缓存行。它负责发起REQ接收RESP并在最后进行缓存状态更改I-UC即从Invalid无效状态变为Unique Clean独占干净状态和解除分配Deallocation黑色圆点。右侧竖线HN-F (Home Node - Fully coherent)角色全相干主节点。通常代表系统级缓存SLC或内存控制器它是维护整个系统缓存一致性的“大管家”。图中活动它接收RN-F的请求负责分配资源Allocation红色/绿色菱形所在的逻辑节点处理阻塞blocked并最终发送响应RESP。这两条竖线构成了图表的“空间”维度它们之间的水平距离代表两个节点在物理或逻辑上的隔离。 问题 2其他带箭头的斜线表示什么这些带箭头的斜线表示消息在节点之间的传递Message flow也就是通信过程中的报文。方向箭头指向就是消息的传播方向图中标注了“Direction of message flow”。REQRequest 请求从 RN-F 指向 HN-F。表示左侧节点向右侧节点发起读写或缓存一致性请求。RESPResponse 响应从 HN-F 指向 RN-F。表示右侧节点处理完请求后将数据或状态响应返回给左侧节点。斜线的斜率斜线不是垂直的因为它需要跨越“空间”从一端到达另一端同时也在消耗“时间”。斜线越平缓代表消息在网络中的传输延迟Latency越大。时间跨度标注图中有一个双向箭头标注了“Lifetime of a transaction事务的生命周期”它从RN-F发出REQ那一刻开始到RESP返回RN-F并触发后续动作Deallocation为止。这段时间就是一个完整事务的耗时。 图中其他关键符号的补充说明黑色方块在左侧顶部代表事务开始前的初始状态和资源分配Allocation。红色菱形在右侧标注“Allocated but forward progress is blocked”。表示HN-F虽然已经为这个事务分配了资源但当前由于某种原因比如等待内存数据、资源冲突无法继续推进阻塞。绿色菱形在右侧标注“Forward progress is unblocked”。表示阻塞解除HN-F可以继续处理并向RN-F发送RESP了。黑色圆点在左侧底部标注“I-UC”和“Deallocation”。表示RN-F收到响应后缓存行状态发生了改变变为有效状态同时这个事务占用的资源被释放解除分配整个事务彻底结束。