本章介绍了CHI架构以及在整个规范中使用的术语。它包含以下部分:B1.1架构概述B1.2拓扑结构B1.3术语B1.4事务分类B1.5共同性概览B1.6组件命名B1.7读数据源B1.1架构概述CHI 架构是一种可扩展、一致性的枢纽接口及片上互连结构可供多个组件使用。CHI 架构支持根据性能、功耗及面积系统需求组件连接采用灵活的拓扑结构。B1.1.1 组件基于 CHI 的系统组件可包括独立处理器处理器集群图形处理器内存控制器I/O 桥接器PCIe 子系统互连组件B1.1.2 关键特性该架构的核心特性包括可扩展架构支持从小型到大型系统的模块化设计独立分层架构包含协议层、网络层与链路层各层具备独立功能基于数据包的通信机制所有事务均由基于互连架构的主节点处理该主节点协调所需的嗅探器、缓存及内存访问资源CHI 一致性协议支持以下功能164 字节缓存行的一致性颗粒2用于缓存扩展的窥探过滤器及目录机制3同时支持 MESI 和 MOESI 缓存模型可从任意缓存状态转发数据。– 额外的部分及空缓存行状态CHI 事务集包括1 丰富的事务类型可实现性能、面积及功耗优化的系统缓存实现2支持互连中的原子操作与同步机制3支持高效执行独占访问4支持高效的数据移动与定位事务确保数据及时传输至预期使用点附近5通过分布式虚拟内存DVM操作实现虚拟内存管理采用请求重试与资源规划协议进行资源管理支持端到端服务质量QoS支持 ARM 内存标记扩展MTE支持 ARM 领域管理扩展RME可配置数据宽度以满足系统需求按交易逐次支持 ARM TrustZone™采用生产者-消费者有序模型优化具有一致性写入特性的事务流程实现跨组件及互连结构的错误报告与传播以保障系统可靠性与完整性利用数据污染机制及按字节错误指示机制处理子缓存行数据错误在组件接口上实现功耗感知信号控制1启用 flit 级时钟门控2定义组件激活与停用顺序以控制时钟门及功耗门3提供协议活动状态指示用于功耗与时钟控制。B1.1.3架构层功能被划分为以下层级协议层、网络层、链路层。表 B1.1 描述了各层的主要功能。层级通信颗粒度主要功能协议层事务协议层是 CHI 架构中最顶层的层协议层的功能包括– 在协议节点上生成并处理请求与响应– 在包含缓存的协议节点上定义允许的缓存状态转换– 为每种请求类型定义事务流程– 管理协议层级的流量控制。网络层数据包/分组网络层的功能包括– 将协议消息分组化– 确定将数据包通过互连网络路由至目标目的地所需的源节点与目标节点 ID并将这些信息添加到数据包中。链路层微片数据单元链路层的功能是– 在网络设备之间提供流量控制– 管理链路通道以在整个网络中实现无死锁的交换。B1.2拓扑结构CHI 架构原则上与拓扑结构无关。但本规范仍包含若干与拓扑结构相关的优化措施以提升实现的效率。图 B1.1 展示了三种选定的拓扑结构示例用以呈现可用的互连带宽范围及可扩展性选项。Crossbar 交叉总线拓扑结构易于构建且天然能提供低延迟的有序网络。交叉总线拓扑结构适用于导线数量相对较少的情况。交叉总线拓扑结构适用于节点数量较少的互连系统。Ring 环形拓扑在内部互连布线效率与延迟之间提供了权衡。延迟随环上节点数量的增加而线性增长。环形拓扑适用于中等规模的互连系统。Mesh 网格拓扑结构以需要更多线缆为代价提供了更大的带宽。网格拓扑结构非常模块化可以通过增加更多行和列的交换机来轻松扩展至更大规模的系统。网格拓扑结构适用于大规模互连。B1.3 术语下列术语在本说明中具有特殊含义Transaction事务执行单一操作。事务要么从内存读取数据要么向内存写入数据。Message消息是协议层中的一个术语用于定义两个组件之间的交换基本单元按照协议进行数据交互的最小交换单位。示例包括• 请求• 数据响应• 窥探请求单个数据响应消息可由多个数据包组成。Packet数据包是节点间互连通道上的传输基本单元。一条消息可由一个或多个数据包构成例如单个数据响应消息可由1至4个数据包组成。每个数据包均包含路由信息如目的端ID与源端ID从而支持在互连通道上实现独立路由。FlitFLow control unITFlit是最小的流控制单元。一个数据包可由一个或多个 Flit 组成。给定数据包中的所有 Flit 在互连网络中均沿相同路径传输。注意对于CHI所有数据包均由单个flit组成。PhitPHysical layer transfer unITPhit是两个相邻网络设备之间的一种传输方式。一个 flit 可由一个或多个 Phit 组成。注意对于CHI所有flit均由单个phit组成。PoSPoint of SerializationPoS是互连网络中的一个特定节点用于确定来自不同代理的请求之间的顺序。对同一地址的多个内存请求做仲裁与排序保证程序顺序语义PoCPoint of CoherencePoC是指所有可访问内存的代理均能保证看到同一内存位置副本的临界点。在典型的基于 CHI 的系统中PoC 即为互连结构中的 HN-FFully Coherent Home Node即全一致性主节点是 CHI 协议里真正算一致性的地方也是整个一致性系统的大脑和交通枢纽。对某个内存地址而言所有针对该地址的缓存一致性操作都必须经过这里仲裁才能保证所有核看到的数据版本和状态变迁是同一个顺序、同一个结果。PoEPoint of EncryptionPoE是指内存系统中所有已到达该点的写入操作均会被加密的位置。PoPPoint of PersistencePoP是内存系统中位于或位于一致性点之后的一个潜在位置在该位置下即使系统断电对内存的写入操作仍会被保留而当对内存中受影响区域重新供电时这些写入操作可被可靠地恢复。PoDPPoint of Deep PersistencePoDP是指内存系统中即使主电源与备用电池同时失效数据仍能得以保留的关键点。PoPAPoint of Physical AliasingPoPA是指在一个物理地址空间PAS中对某位置进行的更新在所有其他物理地址空间中均可见的特定位置。PoPSPoint of Physical StoragePoPS是指内存层次结构中距离 PE 或其他观测点最远、且写入事务可传播至该点的位置即内存。.......B1.4 事务分类本规范支持的协议事务及其主要分类列于表B1.2中。见P35B1.5 一致性概述硬件一致性使系统组件能够在无需软件缓存维护的情况下共享内存以维持一致性。如果两个组件对同一内存位置的写入能被所有组件以相同顺序观察到则该内存区域是coherent一致的。B1.5.1 一致性模型图 B1.2 展示了一个示例性一致性系统该系统包含三个请求器组件每个组件均配备本地缓存及一致性协议节点。该协议允许同一内存位置的缓存副本驻留于一个或多个请求器组件的本地缓存中。一致性协议规定每当在某个地址位置执行存储操作时该地址位置上至多只能存在一个数据值的副本。该协议确保所有请求者在任何给定地址位置均能观察到正确的数据值。在每次对某地址位置执行存储操作后其他请求者可获取该数据的新副本以供其本地缓存使用从而允许多个缓存副本共存。缓存行被定义为一个以 64 字节为对齐单位的内存区域所有一致性均在缓存行粒度上得到维护。主内存仅需在某个内存位置副本不再被任何缓存保留之前进行更新一致性协议并不要求主内存始终处于最新状态。注意尽管并非强制要求但在缓存副本仍存在的情况下允许更新主内存。一致性协议让请求器组件能够判定某缓存行是否仅为特定内存位置的唯一副本或该内存位置还存在其他副本。该协议确保以下特性• 若某缓存行仅为唯一副本请求器组件可修改该缓存行的值而无需通知系统中其他请求器组件• 若某缓存行亦可能存在于其他缓存中请求器组件则须通过适当的事务操作通知其他缓存。B1.5.2 缓存状态模型当某个组件访问缓存行时该协议定义了多种缓存状态用以判定是否需要执行相应操作。每个缓存状态均基于以下缓存行特性而确定有效/无效Valid, Invalid“有效”时缓存行存在于缓存中“无效”时缓存行不存在于缓存中。唯一/共享Unique, Shared“唯一”时该缓存行仅存在于“唯一”缓存中“共享”时该缓存行可存在于多个缓存中但缓存中可能不存在多个缓存中的该缓存行。干净/脏Clean, Dirty“干净”时缓存不负责更新主内存“脏”时该缓存行相对于主内存已被修改且该“脏”缓存必须确保主内存最终被更新。完整/部分/空Full, Partial, Empty完整缓存行中所有字节均有效部分缓存行中部分字节有效其中部分字节可能无有效字节或全部字节有效空缓存行中无任何字节有效。图 B1.3 展示了七状态缓存模型。B4.1 节中的“缓存行状态”提供了关于每个缓存状态的进一步信息。除“Partial”或“Empty”之外的有效缓存状态名称均被视为“Full”状态。在图 B1.3 中UC、UD、SC 和 SD 均为“Full”缓存行状态。B1.6 组件命名CHI 协议中的组件按节点类型进行分类RN 请求节点Request Node该节点向互连网络生成协议事务包括读取与写入操作。请求节点可进一步细分为RN-F 全一致性请求节点– 包含硬件级相干缓存– 可生成协议定义的所有事务除 ReadNoSnpSep 外– 支持所有 Snoop 事务。RN-D 支持 DVM 的 IO 一致性请求节点– 不包含硬件相干缓存– 可接收 DVM 事务– 可生成由协议定义的事务子集。更多详情请参阅“C3.1 请求节点子集”章节。RN-I IO 一致性请求节点– 不包含硬件一致性缓存– 不接收 DVM 事务– 仅生成协议定义的事务子集详见 C3.1 “请求节点子集”章节– 无需执行旁路检查功能。HN 主节点Home Node位于互连网络中负责接收来自请求节点的协议事务的主节点。主节点还可进一步划分为HN-F 全一致性主节点– 预期可接收除 DVMOp 外的所有请求类型– 包含一个一致性处理点PoC该节点通过监听所需的 RN-F 节点、汇总事务相关的 Snoop 响应并向请求节点发送单一响应从而实现相干性管理– 预期可作为序列化处理点PoS负责管理内存请求的顺序– 可包含目录或 Snoop 过滤器以减少冗余监听操作。注意实施特定要求可包含集成互连缓存。HN-I 非一致性主节点– 仅处理协议定义的有限子集请求类型– 不包含 PoC且无法处理可窥探请求– 在收到可窥探请求时必须返回符合协议规范的响应消息– 预期作为 PoS负责管理针对 IO 子系统的 IO 请求之间的顺序控制。MN 杂项节点Miscellaneous Node从请求节点接收 DVM 事务执行所需操作并返回响应。SN 从属节点Subordinate Node接收来自主节点的请求执行所需操作并返回响应。从属节点可进一步划分为SN-F 从节点– 用于普通内存– 可处理非可窥读、可窥写及原子请求包括其独占变体以及缓存维护操作CMO请求。更多详情请参阅 C3.2 “从节点子集”章节。SN-I 从属节点– 用于外设或常规内存– 可处理不可窥探读取、写入及原子请求包括其独占变体以及 CMO 请求。更多详情请参阅“C3.2 从属节点子集”章节。图 B1.4 展示了通过互连链路连接的各种协议节点类型。B1.7 读数据源在基于 CHI 的系统中读取请求可从不同来源获取数据。图 B1.5 所示的这些来源包括• 互连网络中的缓存• 从属节点• 对端 RN-F对于 Home 节点一种可选方案是要求 RN-F 或从属subordinate节点仅向 Home 节点返回数据随后Home 节点将接收到的数据副本转发给请求方。若数据提供者被配置为将数据响应直接转发至请求方而非经由 Home 节点中转则可在读取事务流程中消除获取数据时的一跳hop一条报文从源节点到目的节点所经过的链路总数或中转路由器的个数。可采用多种技术来减少完成一次事务所需的跳数。跳数的减少可缩短读取与写入延迟并提升互连带宽利用率。这些技术可分为以下几类直接内存传输DMT/Direct Memory Transfer允许从属节点直接向请求方发送数据的功能特性直接缓存传输DCT/Direct Cache Transfer允许对端 RN-F 直接向请求方发送数据的功能特性。在 DCT 读取事务流中数据提供者需向主节点告知已将数据发送至请求方在某些情况下数据提供者还需向主节点发送一份数据副本。直接写入传输DWT/Direct Write-data Transfer允许请求方节点直接向从属节点发送写入数据的功能特性。