CHI 协议导论与宏观架构
第1章:片上互连技术的演进与CHI的诞生
1.1 从 AMBA AXI 到 ACE:总线式与一致性挑战
在深入 CHI 之前,我们必须理解其诞生的土壤。ARM 的 AMBA(Advanced Microcontroller Bus Architecture)协议家族是这一切的起点。
1.1.1 AHB 与 ASB 时代:共享总线之困
在早期简单的微控制器系统中,AHB(Advanced High-performance Bus)是主流。它是一种共享总线架构,意味着多个主设备(如CPU、DMA)需要通过仲裁来争夺总线的使用权。

工作原理:仲裁器根据优先级决定哪个主设备可以使用总线。获胜的主设备在下一个周期开始传输,其他主设备必须等待。
核心缺陷:
性能瓶颈:任何时刻只有一个主设备能使用总线,无法实现并行传输。当主设备增多时,竞争激烈,延迟急剧增加。
可扩展性差:总线上的每个新设备都会增加负载,影响信号完整性,限制系统规模和最高频率。
1.1.2 AXI时代:点对点与并行性的突破
为克服共享总线瓶颈,ARM 推出了 AXI(Advanced eXtensible Interface)。这是 AMBA 演进史上的一个里程碑。
核心革新:
- 点对点互联:主设备和从设备之间通过独立的通道连接,而非共享一根总线。
- 分离的通道:读地址、读数据、写地址、写数据、写响应,五个通道相互独立,可以并行工作。
- 基于猝发(Burst):一次地址握手可传输一长串数据,提高效率。

优势:AXI极大地提升了系统的并行处理能力和最大带宽,成为高性能SoC的事实标准。
遗留挑战:AXI本身不提供缓存一致性。在一个多核处理器中,如果多个核心缓存了同一内存地址的数据,一个核心的修改无法被其他核心感知,会导致数据不一致的严重错误。
1.1.3 ACE时代:一致性扩展的尝试
为解决多核一致性难题,ARM 在 AXI4 的基础上引入了 ACE(AXI Coherency Extensions) 扩展。
核心思想:在 AXI 的通道上增加与"侦听"相关的信号,使连接到互联的"一致性代理"(如 CPU 核心)能够相互通信,维护缓存一致性。
工作机制:当一个核心(如CPU0)要写入一个共享数据时,互联(通常集成 Snoop Filter)会发起侦听事务,查询其他核心(如CPU1)的缓存。如果其他缓存有这份数据,互联会确保它们将数据写回或置为无效,然后才允许CPU0写入。

局限性:
- 架构依赖性强:ACE仍然基于共享总线式的通信模型,扩展性受限。当核心数量继续增加(例如达到几十甚至上百核),侦听流量会成为新的瓶颈。
- 复杂度高:ACE信号与AXI信号紧密耦合,设计复杂,时序收敛困难。
- 不够灵活:难以适应未来更复杂的拓扑结构(如网格Mesh)。
1.2 网络化片内互连(NoC)的兴起与需求
当 SoC 的规模突破十亿晶体管,集成数十个甚至上百个 IP 时,传统的总线式和交叉开关式互联已不堪重负。NoC(Network-on-Chip) 应运而生。
核心思想:借鉴计算机网络的概念,将数据打包成数据包(Packet),通过一个由路由器和链路组成的网络,进行路由和交换。
关键特征:
- 可扩展性:可以像拼乐高一样,通过增加路由器和链路来扩展系统规模。
- 并行性:多条消息可以在网络的不同路径上同时传输。
- 服务质量(QoS):可以引入优先级、虚拟通道等机制,保证关键流量(如音频、显示)的低延迟。
- 模块化:IP设计者只需关注与本地路由器的接口,无需关心全局拓扑。

1.3 CHI 协议的定位:ARM 生态系统中的一致性枢纽
在 NoC 成为大势所趋,而 ACE 又无法满足未来需求的背景下,CHI(Coherent Hub Interface) 协议被设计和推出。
CHI 的根本性革新在于:它从诞生之初就是一个为 NoC 设计的一致性协议,而非在已有总线协议上打补丁。
协议与拓扑解耦:CHI 定义了完整的协议层、网络层、链路层,使其能够灵活运行在各种 NoC 拓扑之上(星型、环型、网格等),而不依赖于特定的物理实现。
基于数据包的传输:所有事务,包括请求、响应和数据,都被格式化为标准化的数据包(Flit)。这是其能适应网络化传输的基础。
分离的请求与响应路径:请求和响应可以经由不同的路径在网络中传输,进一步提高了并行性和灵活性。
高度可扩展的一致性:通过引入Home Node(HN)作为地址的"协调中心",采用基于目录的一致性模型,极大地减少了维护一致性所需的网络流量,使其能够高效地扩展到数百个节点。
CHI 在 ARM 生态系统中的角色:它是连接计算集群(如Cortex-A/X系列CPU、Mali GPU)、内存子系统、高速外设(如PCIe)和自定义加速器的"神经系统"和"一致性基石"。它确保了在复杂的异构计算场景下,所有参与者能看到同一份正确的数据视图。
1.4 CHI与其它互连协议(如CXL, CCIX)的比较与关系
CHI是片内(on-chip) 互连协议。而当我们需要将一致性域扩展到芯片之外时,就需要诸如CXL(Compute Express Link) 和CCIX这样的片外(off-chip) 一致性协议。
|------|-----------------------------|----------------------------------|---------------------------|
| 特性 | CHI | CXL | CCIX |
| 范围 | 片内(On-Chip) | 片外(Off-Chip),通过PCIe物理层 | 片外(Off-Chip),通过PCIe/其他物理层 |
| 主要应用 | 连接SoC内部的CPU, GPU, 加速器,内存控制器 | CPU与加速器(GPU, FPGA)、内存扩展卡之间的缓存一致性 | 多芯片一致性,特别是在Arm服务器领域 |
| 拓扑 | 依赖于NoC(网格,星型等) | 基于PCIe的层级拓扑 | 更灵活的对称或对等拓扑 |
| 关系 | 基础 | 补充与扩展 | 补充与扩展(目前生态趋于CXL) |
一个典型的现代数据中心SoC可能这样组织:
- 片内:数十个Arm Neoverse核心通过CHI协议在一个复杂的NoC上互联,共享最后的LLC和内存控制器。
- 片外:该SoC通过CXL.io(兼容PCIe)连接标准外设,通过CXL.mem扩展内存容量,并通过CXL.cache使得外部AI加速器能够高效、一致地访问主机内存。
总结:CHI 并非凭空出现,它是 ARM 在深刻认识到片上互连从"总线"到"网络"的范式转变后,为引领异构计算时代而打造的全新一代一致性互连协议。它解决了 ACE 在可扩展性、灵活性和效率上的根本瓶颈,为构建从移动设备到云服务器的下一代计算平台奠定了坚实的基础。
第2章:CHI协议核心概念与架构视图
2.1 基础范式:请求-响应分离式事务
CHI 协议彻底告别了总线式的"独占与仲裁"模式,采用了完全解耦的、基于数据包的请求-响应分离式事务。
- 事务分解:一个完整的事务(例如,CPU读取数据)被分解为三个完全独立的阶段:
- 请求:由请求节点发出,包含"你想做什么"(操作码、地址等)。
- 数据:由完成节点发出,包含请求所期望的数据(对于读事务)或确认接收的数据(对于写事务)。
- 响应:由完成节点发出,包含"事情办得怎么样了"(成功、失败、错误等状态信息)。
关键优势:
- 解耦与并行:请求、数据和响应可以在网络中通过不同的路径独立流动,极大地提高了网络利用率和系统并行度。
- 流水线化:多个事务的各个阶段可以交织在一起,形成高效的流水线。
- 非阻塞:一个RN在发出一个请求后,无需等待其完成,即可发出下一个请求。

2.2 拓扑结构:星型、网格与自定义拓扑的CHI实现
CHI协议与物理拓扑解耦,但其设计天然适合网络化拓扑。以下是几种典型拓扑及其在CHI系统中的体现:
- 星型拓扑
- 描述:所有RN和SN都连接到一个中心HN或交叉开关上。
- 优点:结构简单,延迟可预测(对于单跳)。
- 缺点:中心节点成为性能和带宽的瓶颈,可扩展性差。
- 适用场景:小型、低复杂度的系统。

- 网格拓扑
- 描述:节点(RN, HN, SN)通过路由器连接到规则的网格上。数据包在X和Y维度上进行路由。
- 优点:极高的可扩展性,模块化设计,布局规整。
- 缺点:跳数增加导致延迟,可能出现热点拥塞。
- 适用场景:大规模多核处理器、服务器SoC。

- 环型拓扑
- 描述:节点通过环形网络连接。
- 优点:连线简单。
- 缺点:延迟随节点数线性增长,带宽受限。
- 适用场景:某些中等规模或对成本敏感的设计。

CHI的灵活性允许SoC架构师根据其特定的性能、功耗和面积目标,混合和匹配这些拓扑结构,甚至创建自定义的不规则拓扑。
2.3 核心组件详解
CHI协议将系统中的功能单元抽象为几种明确的节点类型,每种类型有明确的职责。
RN - Request Node
- 角色:事务的发起者。通常是需要访问内存或与其他组件通信的主设备。
关键子类型:
- RN-F:全功能RN。支持所有一致性请求(读、写、使无效等),通常指CPU集群、GPU计算单元。
- RN-D:轻型RN。仅支持非一致性或有限的一致性请求,通常指DMA控制器、网络接口等。
- RN-I:IO一致性RN。支持使无效请求,用于需要感知一致性的IO主设备。
HN - Home Node
- 角色:系统的协调中心和一致性引擎。它是其管理的地址范围的"家"。
核心职责:
- 接收请求:接收所有发往其管辖地址范围的请求。
- 目录查询:查询基于目录的一致性信息,确定数据的当前状态和位置。
- 请求调度:决定下一步行动:从内存读取、向其他RN发起侦听、或直接提供数据。
- 组合响应:收集所有必要的信息(如侦听响应、内存数据)后,组织并发送最终响应给原始RN。
- 典型实现:HN通常与最后一级缓存(LLC)的切片集成在一起。目录信息可以存储在Tag RAM中。
SN - Slave Node
- 角色:事务的最终完成者。是数据的源头或终点。
关键子类型:
- SN-F:全功能SN。能够处理所有类型的请求,包括带数据的请求。典型代表是内存控制器。
- SN-I:简化SN。仅支持所需的最小事务集。
MN - Monitor Node
- 角色:系统的"观察者"。用于调试、性能分析和系统监测。
- 功能:它可以被动地监听网络流量,记录特定事件或事务,但绝不主动参与或修改事务。
2.4 一致性模型:为什么需要缓存一致性?MOESI模型在CHI中的体现
为什么需要缓存一致性?
想象一个场景:CPU0和CPU1都从内存中读取了变量X=5到各自的缓存。随后,CPU0将X更新为10。如果系统没有一致性协议,CPU1的缓存中仍然是陈旧的X=5,这将导致程序运行错误。缓存一致性协议就是为了自动解决这种多副本数据不一致的问题。
MOESI模型
MOESI是描述缓存行状态的经典模型,CHI协议基于此模型并进行了细化。
| 状态 | 全称 | 描述 | 是否脏? | 其他副本? | CHI协议对应 | CHI行为特点 |
|---|---|---|---|---|---|---|
| M | Modified 已修改 | 独占且已修改。这是唯一的最新副本,内存中的数据是旧的。 | 是 | 否 | UniqueDirty | 需要写回内存;其他请求需从此缓存获取数据 |
| O | Owned 拥有 | 共享但已修改。有多个副本,但本缓存负责在必要时将数据写回内存。内存数据是旧的。 | 是 | 是 | SharedDirty | HN(主节点)会指示此节点写回;可服务其他节点的读请求 |
| E | Exclusive 独占 | 独占且干净。这是唯一副本,且与内存一致。 | 否 | 否 | UniqueClean | 可直接写入转为M状态;无需与其他缓存协调 |
| S | Shared 共享 | 共享且干净。有多个副本,所有副本都与内存一致。 | 否 | 是 | SharedClean | 写入前需使无效其他副本;读操作无需访问内存 |
| I | Invalid 无效 | 缓存行数据不可用,不能作为数据源。 | - | - | Invalid | 需从网络或内存重新获取;所有访问都会产生缺失 |
MOESI状态转换示意图

CHI协议中的关键特性
-
状态细化:CHI在MOESI基础上细化为UniqueDirty、SharedDirty、UniqueClean、SharedClean
-
分布式所有权:明确指示哪个缓存负责写回操作
-
网络化操作:所有状态转换都通过CHI事务在片上网络中进行
-
一致性保证:确保所有缓存看到的内存视图一致
典型应用场景
| 状态 | 典型应用场景 | 性能特点 |
|---|---|---|
| M | 频繁写入的私有数据 | 写入性能最佳,无需通知其他缓存 |
| O | 多核共享的写入数据 | 减少写回次数,提高共享效率 |
| E | 即将写入的私有数据 | 提供快速写入升级路径 |
| S | 只读共享数据 | 提供高读取并行性 |
| I | 未缓存或失效数据 | 强制从正确源获取数据 |
MOESI模型在CHI协议中的实现确保了大规模多核SoC中缓存一致性的高效维护,同时通过状态细化优化了不同类型数据访问的性能特征。
MOESI缓存一致性模型及其在CHI协议中的对应关系

CHI中的一致性流程(简例)
假设RN-A处于SharedClean状态,它想写入该缓存行。
- RN-A向HN发送WriteUnique请求(意图:获取独占权限以便写入)。
- HN查询目录,发现RN-B也持有该行(SharedClean)。
- HN向RN-B发送Comp(使无效)请求。
- RN-B使其缓存行无效,并向HN回复CompAck。
- HN收到CompAck后,更新目录,标记RN-A为UniqueDirty,然后向RN-A发送RespSepData响应,授予写入权限。
- RN-A收到响应,将状态转为UniqueDirty,然后执行写入。
这个过程完全由协议在硬件层面自动完成,软件无需干预。
2.5 传输层次:协议层、网络层、链路层、物理层
为了实现灵活性与可移植性,CHI协议栈被清晰地划分为四个层次,这与计算机网络中的OSI模型概念相似。

- 协议层
- 职责:定义事务的语义。它关心的是"做什么",而不是"怎么传"。
- 内容:操作码(Opcode)、地址、缓存状态、事务ID、数据内容等。
- 接口:与IP核心(如CPU)的接口就在这一层。
- 网络层
- 职责:负责将协议层的消息打包并路由到正确的目的地。
内容:
- 打包:为协议层消息添加路由头(如TgtID, SrcID),形成数据包。
- 路由:根据数据包头中的目标ID,决定其在NoC中的下一跳。
- QoS:为数据包打上优先级标签,管理虚拟通道以避免死锁和保证服务质量。
- 链路层
- 职责:确保数据在相邻节点(如两个路由器之间,或路由器与节点之间)的可靠传输。
核心机制:
- 流控制:基于信用的机制,防止发送方淹没接收方。
- 错误检测与重传:通过CRC等技术检测传输错误,并触发局部重传,对上层透明。
- 物理层
- 职责:处理信号的电气特性和时序,将数据包分解为物理传输单元在链路上传输。
- 内容:并串转换、时钟域跨越、驱动强度、线延迟优化等。
- 层次化优势:这种分层允许SoC设计团队独立地进行优化。例如,可以升级物理层工艺以提升频率,或者修改网络层拓扑以增加带宽,而无需改变协议层的设计。
本章总结
本章构建了 CHI 协议的宏观蓝图。我们了解到 CHI 通过请求-响应分离实现了高并行度;通过定义清晰的节点角色(RN/HN/SN/MN) 和基于目录的MOESI一致性模型,构建了一个可扩展的、可靠的一致性框架;最后,通过分层的协议栈,将复杂的功能解耦,赋予了实现上的巨大灵活性。
至此,您已经对 CHI 协议"是什么"以及"为什么这样设计"有了系统的认识。从下一章开始,我们将深入协议的细节,首先从CHI协议的版本演进开始,了解其不断发展的特性与优化。
第3章:CHI协议版本演进(CHI.A, CHI.B, CHI.C, CHI-D)
3.1 各版本关键特性对比与演进脉络
CHI协议并非一成不变,它随着工艺的进步和应用需求的演变而不断发展。其演进主线清晰地指向:更高的性能、更低的延迟、更好的能效,以及更强的可扩展性。
下表概括了各主要版本的核心特性与演进重点:

CHI各版本核心特性对比表
| 特性维度 | CHI.A (基础版) | CHI.B (演进版) | CHI.C (性能版) | CHI-D (精简版) |
|---|---|---|---|---|
| 核心焦点 | 奠定基础,定义架构 | 功能增强,扩展性优化 | 性能与能效大幅提升 | 为特定场景精简 |
| 发布时间 | ~2011年 | ~2013年 | ~2016年 | ~2019年 |
| 关键新特性 | 1. 基础协议/网络/链路层 2. RN-F/HN-F/SN-F节点模型 3. 基于目录的一致性 4. 基础事务类型 | 1. 原子操作扩展(AMO) 2. 缓存维护操作增强 3. 更细粒度的QoS 4. 直接数据支持(有限) 5. 持久性支持 | 1. 直接数据传输(DCT) 2. 部分数据与提前响应 3. 端到端QoS 4. 预取提示 5. 原子操作增强 6. 低功耗状态增强 | 1. 精简的事务集 2. 简化的数据包格式 3. 针对面积和功耗优化 4. 移除高级特性 |
| 性能优化 | 基础性能 | 中等优化(提升10-30%) | 显著优化(提升40-70%) | 基础但高效(针对目标场景) |
| 延迟表现 | 高延迟(多跳中转) | 中等延迟 | 低延迟(直连路径) | 中等延迟但确定 |
| 带宽效率 | 低效(多次中转) | 改进 | 高效(DCT旁路) | 适中 |
| 功耗特性 | 高功耗 | 优化功耗管理 | 先进低功耗状态 | 超低功耗设计 |
| 面积开销 | 基础面积 | 略有增加 | 增加(性能特性) | 最小化面积 |
| 主要应用场景 | 早期多核移动/嵌入式SoC | 高性能移动、入门级网络处理器 | 服务器、高端移动、HPC、汽车ADAS | 面积/功耗敏感型IoT、微控制器、边缘设备 |
| 代表性芯片 | 早期Cortex-A系列SoC | 中高端智能手机SoC | 服务器CPU(如Neoverse)、汽车芯片 | Cortex-M系列、物联网芯片 |
CHI.C性能飞跃关键技术详解
直接数据传输(DCT)对比

部分数据与提前响应机制

演进脉络总结
第一阶段:CHI.A → CHI.B (从"能用"到"好用")
-
目标:丰富功能,增强系统控制
-
改进:
-
扩展原子操作,支持更复杂的同步原语
-
增强缓存维护,提高系统一致性管理能力
-
细化QoS,支持差异化服务质量
-
-
应用影响:满足高性能移动和网络处理器的需求
第二阶段:CHI.B → CHI.C (质的飞跃)
-
目标:从根本上降低延迟,提升能效
-
创新:
-
DCT:绕过HN,建立RN-SN直接数据通道
-
部分传输:允许RN提前处理数据
-
端到端QoS:提供更精细的流量控制
-
-
性能提升:
-
典型延迟降低:30-50%
-
有效带宽提升:25-40%
-
功耗效率改善:20-35%
-
第三阶段:CHI.C → CHI-D (差异化精简)
-
目标:为特定场景提供最优成本效益方案
-
策略:
-
移除高级特性(DCT、部分传输等)
-
简化协议栈,减少面积开销
-
优化低功耗设计
-
-
权衡:用性能换取面积和功耗的优化
各版本选择指南
| 设计考量 | 推荐版本 | 理由 |
|---|---|---|
| 高性能计算 | CHI.C | DCT和部分传输显著降低延迟 |
| 服务器/数据中心 | CHI.C | 高带宽和低延迟是关键需求 |
| 高端移动/汽车 | CHI.C | 平衡性能和能效,支持复杂功能 |
| 中端消费电子 | CHI.B | 成本效益平衡,功能足够 |
| 物联网/边缘设备 | CHI-D | 最小化面积和功耗至关重要 |
| 遗留系统升级 | CHI.B | 相对平滑的迁移路径 |
未来演进趋势
-
AI/ML优化:针对神经网络工作负载的特殊优化
-
CXL集成:与Compute Express Link协议的协同
-
安全增强:硬件级安全特性的深度集成
-
3D堆叠:支持芯片堆叠架构的互连优化
-
异步时钟域:更灵活的时钟和电源域管理
CHI协议的演进反映了半导体行业从单纯追求性能到平衡性能、能效、面积和成本的多维优化趋势,为不同应用场景提供了针对性的互连解决方案。
3.2 CHI.C对性能和能效的提升
CHI.C是迄今为止最重要的一次升级,它引入的特性从根本上优化了事务流。我们重点剖析其中最核心的两项。
3.2.1 直接数据传输
在CHI.B及之前,数据路径通常需要经过Home Node中转。CHI.C引入的DCT允许数据在获得授权后,在RN和SN之间,甚至在两个RN之间直接传输,跳过了HN。
- 传统路径(CHI.B):RN -> HN -> SN -> HN -> RN
- DCT路径(CHI.C):RN -> HN (协调) -> SN -> RN
优势:
- 降低延迟:减少了一到两跳的网络延迟。
- 减轻HN负担:HN不再需要为数据包提供大量的缓冲区和转发带宽,使其能更专注于请求调度和一致性管理,提升了整体系统效率。
- 提高有效带宽:数据流不再挤占HN的内部数据路径。
3.2.2 部分数据与提前响应
这项优化允许SN在准备好全部数据之前,就提前返回部分数据和一个提前响应。
应用场景:当SN(如内存控制器)需要从多个DRAM Bank中获取数据时,可能先从一个Bank中拿到一部分数据。
工作方式:
SN将先得到的第一部分数据(称为一个"数据块")立即发送给请求者。
同时,SN发送一个DataSepResp消息,告知请求者"第一部分数据已发出,剩余部分稍后就来"。
请求者收到第一部分数据后即可开始处理(例如,CPU可以开始解码指令),无需等待所有数据到位。
SN发送剩余的数据块。
优势:
显著降低读延迟:对于长猝发读取,有效隐藏了内存访问延迟,使得请求者能够更早地开始工作,提升了系统整体性能。
3.2.3 端到端QoS
CHI.C增强了QoS机制,使其能够从请求源点到终点贯穿整个系统。
- 机制:RN在发起请求时,会附加一个QoS标签(如QoS Priority)。这个标签在网络中传输时会被保留,HN和SN可以根据这个优先级来处理请求。
- 优势:确保了高优先级事务(如实时音频/视频处理、中断处理)能够获得低延迟的服务,即使在系统总线繁忙时也是如此。
3.3 CHI-D简介:面向特定应用的精简
并非所有SoC都需要CHI.C提供的全部高性能特性。对于面积和功耗极度敏感的场景(如某些IoT设备、微控制器),CHI-D提供了一个经过精心修剪的版本。
- CHI-D的设计哲学:在保持CHI架构精髓的前提下,做减法。
- 精简的事务集:移除了许多高级一致性事务和原子操作,只保留最核心、最必需的集合。
- 简化的数据包格式:优化了数据包字段,减少了每次传输的比特数,降低了总线开销和功耗。
- 针对目标优化:整个协议针对较小的系统规模、简单的拓扑进行了优化,移除了与之无关的复杂特性。
- CHI-D与CHI.C的关系:它们不是取代关系,而是互补关系。SoC架构师可以根据产品的性能、成本和功耗目标,选择合适的协议变体。
需要顶级性能?选择CHI.C。
成本和王功耗是首要考量?选择CHI-D。
本章总结
CHI 协议的版本演进是一部针对不同市场需求不断自我优化的历史。从奠定基础的CHI.A,到功能丰富的 CHI.B,再到性能飞跃的 CHI.C,以及面向成本优化的 CHI-D,每一个版本都代表了ARM 对其互连技术蓝图的持续投入和精准定位。
理解这些版本的差异至关重要,因为它决定了:
- 对于设计工程师:在架构定义阶段,应选择哪个版本来满足产品需求。
- 对于验证工程师:需要针对特定版本的特性构造相应的测试场景。
现在,我们已经完成了对 CHI 协议宏观架构和演进历史的介绍。从下一部分开始,我们将进入本专题的核心------第二部分:CHI 协议层深度精解,我们将一层层剥开 CHI 的"洋葱",从最基础的数据包结构开始,深入其每一个细节。