ARM AMBA 5 CHI 架构规范(IHI0050B)中文翻译
本文档为 ARM AMBA 5 CHI Architecture Specification(IHI0050B,Issue B,2017 年 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。
- 小写 n(Lowercase n):位于信号名开头或结尾的小写 n 表示该信号为低电平有效。
数字
数字通常以十进制书写。二进制数前加 0b,十六进制数前加 0x,二者均以等宽字体书写。
补充阅读
本节列出 ARM 的相关出版物。
访问 ARM 文档,请参见 Infocenter 网站 http://infocenter.arm.com。
ARM 出版物
- 《ARM® AMBA® AXI and ACE Protocol Specification》(ARM IHI 0022)。
反馈
ARM 欢迎就其文档提出反馈意见。
关于本规范的反馈
如果您对本规范的内容有意见,请发送电子邮件至 errata@arm.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,使其能够在互连上独立路由。 |
| Flit | Flit | 最小的流控单元。一个包可能由一个或多个 Flit 组成。给定包的所有 Flit 通过互连时遵循相同的路径。 注意:对于 CHI,所有包都由单个 Flit 组成。 |
| Phit | Phit | 物理层传输单元。一个 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(即保证)。链路层 Credit(L-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 Node) | Misc 节点或 Miscellaneous 节点。位于互连内的节点,接收来自请求节点的 DVM 消息,完成所需操作,并返回响应。 |
| IO Coherent node | IO 一致节点 | 一种 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-I:IO 一致请求节点(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”)。
REQ(Request 请求):从 RN-F 指向 HN-F。表示左侧节点向右侧节点发起读写或缓存一致性请求。RESP(Response 响应):从 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收到响应后,缓存行状态发生了改变(变为有效状态),同时这个事务占用的资源被释放(解除分配),整个事务彻底结束。