AMBA CHI Architecture Spec 解读 — B1 Introduction

AMBA CHI(Coherent Hub Interface)是 ARM 推出的高性能片上互联协议,从 AMBA ACE 演进而来,面向 16+ 核的缓存一致性多核 SoC 设计。本文基于 IHI 0050 H(2025年9月发布的最新版),解读第一章 B1 Introduction。


一、CHI 是什么?

CHI 的全称是 Coherent Hub Interface。它定义了 SoC 中各个组件(CPU、GPU、DMA、内存控制器)之间如何通过互联网络进行通信,核心能力是:

  • 硬件缓存一致性 — 多核共享内存时,硬件自动保证各核看到的数据一致
  • 高带宽低延迟 — 基于 Flit(flow control unit)的包交换,而非 ACE 的通道握手
  • 灵活的拓扑 — 支持 Mesh、Ring、Crossbar 等多种互联拓扑
  • 事务化接口 — 所有通信以”事务”为单位,包括读写、原子操作、缓存注入等

对比 ACE/AXI 的主要改进:

维度 ACE/AXI CHI
传输粒度 基于通道握手信号 基于 Flit 包
一致性模型 MESI(侦听总线) MOESI(目录式,Home 节点管理)
拓扑扩展性 ~4-8 核 16+ 核至上百核
数据通路 读地址/读数据/写地址/写数据 REQ/RSP/SNP/DAT 四条独立通道
延迟隐藏 有限 DMT/DCT/DWT 直接数据转发

二、CHI 的组件模型

CHI 协议中定义了四类节点:

2.1 Request Node (RN)

请求节点——发起总线事务的组件。

  • RN-F:带缓存的一致请求节点(如 CPU 核心)。维护缓存状态,参与 snoop 协议。
  • RN-D:支持 DVM 操作的请求节点(如 GPU)。
  • RN-I:无缓存的请求节点(如 DMA)。只发非 snoopable 事务。

2.2 Home Node (HN)

归属节点——管理一致性域的节点。每个内存地址都有对应的 Home,负责:

  • 维护一致性目录
  • 协调 snoop 请求
  • 解决 race/hazard 条件
  • 决定响应状态

在实践中 HN 通常集成在互联网络(ICN)内部。

2.3 Subordinate Node (SN)

从属节点——响应请求的节点(通常是内存控制器)。

  • SN-F:支持全功能的内存节点
  • SN-I:仅支持非一致性访问的从属节点

2.4 Interconnect (ICN)

互联网络——连接所有节点的通信基础设施。实现 SAM(系统地址映射)、路由、credit 控制等。


三、CHI 的架构层次

CHI 协议分为四个逻辑层:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌──────────────────────────────────────────────┐
│ Protocol Layer │
│ B2 (事务定义) · B4 (一致性协议) · B5 (流) │
│ B6 (独占访问) · B7 (Stash) · B8 (DVM) │
│ B9 (错误处理) · B12 (MTE) │
├──────────────────────────────────────────────┤
│ Network Layer │
│ B3 (地址映射 · NodeID · TgtID 路由) │
├──────────────────────────────────────────────┤
│ Link Layer │
│ B13 (Flit · 通道 · 信号 · Opcode) │
│ B14 (时钟 · Credit · 低功耗 · 链路握手) │
├──────────────────────────────────────────────┤
│ Transaction Layer │
│ B1 (组件定义 · 拓扑 · 事务分类) │
└──────────────────────────────────────────────┘

四、事务分类

CHI 定义了一套丰富的事务类型:

大类 事务类型 说明
Read ReadNoSnp, ReadOnce, ReadClean, ReadShared, ReadUnique, ReadPreferUnique, ReadNotSharedDirty 各种读语义
Write WriteNoSnp, WriteUnique, WriteBack, WriteClean, WriteEvict 写回/写直达/逐出
Atomic AtomicStore, AtomicLoad, AtomicSwap, AtomicCompare 64种原子操作
Dataless CleanInvalid, CleanShared, CleanUnique, MakeInvalid, MakeUnique, Evict 缓存维护
Stash StashOnceShared, StashOnceUnique, WriteUniqueStash 缓存注入
Prefetch PrefetchTgt 预取
DVM DVMOp TLB/BP/Cache 无效化

每种事务在 C4 Transaction Summaries 中有完整的字段映射表。


五、缓存状态模型

CHI 的缓存状态与经典的 MESI 不同,更加精细:

状态 全称 含义
UC Unique Clean 唯一副本,干净(与内存一致)
UD Unique Dirty 唯一副本,脏(与内存不一致)
SC Shared Clean 共享副本,干净
SD Shared Dirty 共享副本,脏(”与内存不一致”)
I Invalid 无效

特别注意:CHI 没有 MESI 中的 E(Exclusive)状态,也没有 O(Owned)状态。SD 承担了类似 O 的角色但语义不同。CHI 的 Unique 意味着”系统中只有这一个副本”,区别于 MESI 的 Exclusive(意味着没被共享但可以自由写入)。

关键规则:

  • UC/UD 的拥有者可以不经 snoop 直接写入
  • SC/SD 的拥有者在写入前必须通过事务获取 Unique 权限
  • SD 是一个转瞬即逝的状态——脏共享数据通常很快会被写回或变为 Unique

六、与 ARMv9 体系结构的关系

CHI 不是孤立存在的。CHI H 版深度集成了 ARMv9.x/RME 的特性:

ARM 特性 CHI 支持 所在章节
RME (Realm Management Extension) PAS 扩展、MECID、设备分配 B10
MTE (Memory Tagging) TagOp、Tag 一致性、Tag 错误响应 B12
MPAM QoS 优先级、资源分区 B11.4
SME/SVE 通过 DVM 和原子操作间接支持 B8/B2
SPE (Statistical Profiling) DataSource 字段提供采样信息 B11.2
颗粒数据隔离 (GDI) MECID 不匹配解析 B10.8

七、理解 CHI 的 6 个核心概念

要深入理解 CHI,抓住这 6 个概念:

  1. 事务(Transaction) — CHI 的一切以事务为单位。一个事务由 REQ→(SNP)→RSP→DAT 的报文序列组成。
  2. 归属节点(Home) — 每个地址的”主人”,管理一致性。它决定了读返回什么数据、写何时完成。
  3. 直接数据转发(DMT/DCT/DWT) — 减少延迟的关键优化:数据直接从缓存到缓存,不经过 Home。
  4. Snoop — Home 在服务一个事务时,向其他 RN-F 发出 snoop 查询/修改它们的缓存副本。
  5. Credit — 流控制机制。每个节点有发送 credit,用完必须等待对方返送 credit。
  6. 缓存状态转换 — 理解了 UC/UD/SC/SD 四种状态在请求和 snoop 下的转换,就理解了 90% 的一致性协议。

八、下一步阅读建议

CHI spec 有 716 页(B 部分占 557 页)。建议按以下顺序阅读:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
阶段一:基础
B1 Introduction(概览)
B2 Transactions(事务结构)

阶段二:核心
B4 Coherence Protocol(缓存状态 + Snoop 响应)⭐ 最难但最重要
B5 Interconnect Protocol Flows(结合图理解 B4)

阶段三:细节
B3 Network Layer
B6/B7/B8(独占/Stash/DVM)
B13 Link Layer(信号接口)

阶段四:进阶
B9/B10/B11/B12(错误/RME/MTE)
B14/B15/B16(链路握手/SCI/参数)

阶段五:速查
C1-C4(字段映射/事务摘要)

附:当前工作目录

1
2
3
4
5
6
7
8
9
10
~/claude/chi_spec/
├── .claude/skills/
│ └── chi-interpret/SKILL.md ← CHI 解读 skill
│ └── publish-blog/SKILL.md ← 博客发布 skill
├── B1_Introduction.pdf
├── B2_Transactions.pdf
├── B3_Network_Layer.pdf
├── B4_Coherence_Protocol.pdf
├── ... ← 共23个章节PDF
└── IHI0050H_amba_chi_architecture_spec.pdf ← 原始文件