ARM CCI-500 与 NI0700 的关系.
Arm 的 CCI-500 与 NI-700,实际上代表了 Arm SoC interconnect 演进中的“两条线”:
CCI-500 = coherent interconnect(缓存一致性)
NI-700 = scalable NoC(片上网络)
它们不是简单前后代关系。
而是:
“缓存一致性层”
+
“系统传输层”
的关系。
这个一定要从 ARM SoC 的演进过程理解。
1. 为什么 ARM 会有 CCI?
先理解最原始问题。
早期 SoC:
单CPU
时:
- cache 不需要跨 cluster 同步
- 内存模型简单
后来出现:
big.LITTLE
例如:
- A57 + A53
- 多 cluster
问题来了:
CPU0 修改 cache line
例如:
x = 1;
数据还在:
L1 cache
里。
CPU1 读取 x
CPU1:
read(x)
如果:
- 没有 snoop
- 没有 coherency
CPU1 可能读到旧值。
2. CCI-500 的核心任务
因此 ARM 搞出了:
CCI
Cache Coherent Interconnect
CCI-500 的核心:
维护多个master之间的cache一致性
包括:
- snoop
- DVM
- ACE
- shareability
3. CCI-500 内部本质
CCI-500 本质是:
带ACE协议的coherent crossbar
内部:
- snoop filter
- arbitration
- ACE channel
- shareability tracking
4. CCI-500 典型结构
典型:
+-----------+
A53 ----| |
| |
A57 ----| CCI-500 |---- DDR
| |
GPU ----| |
+-----------+
其中:
| 模块 | 功能 |
|---|---|
| CPU cluster | fully coherent |
| GPU | ACE-Lite coherent |
| DDR | memory backend |
5. 什么是 ACE?
这是关键。
CCI-500 的核心基础:
ACE
AXI Coherency Extensions
ACE = AXI + cache coherency。
它增加:
| Channel | 作用 |
|---|---|
| AC | snoop request |
| CR | snoop response |
| CD | snoop data |
因此:
CPU 可以:
互相snoop cache
6. CCI-500 的问题
到这里都还好。
但现代 SoC 出现了:
- GPU
- NPU
- ISP
- 8K视频
- AI
- 多DDR channel
traffic 爆炸。
问题1:Centralized
CCI-500 是:
中心化crossbar
所有流量:
汇聚到中央
像:
高速公路收费站
很容易堵。
问题2:Wire explosion
ACE/AXI 信号极宽:
例如:
- 256-bit data
- ID
- snoop
- barrier
- QoS
先进工艺下:
布线困难
问题3:Timing closure
7nm/5nm 后:
global wire delay 巨大。
central crossbar:
频率越来越难拉高
7. 因此 ARM 开始 NoC 化
于是 ARM 进入:
NoC时代
即:
Network-on-Chip
理念:
不要再搞“大总线”
而是搞“片上网络”
8. NI-700 的核心思想
NI-700:
Network Interconnect
核心:
packetized NoC
9. 什么叫 packetized?
传统 AXI:
信号线直接传输transaction
例如:
AWADDR
WDATA
BRESP
全部一路传。
NI-700:
会把 transaction:
封装成packet
类似:
网络数据包
然后:
router hop-by-hop转发
10. NI-700 内部结构
结构像:
CPU -- Router -- Router -- DDR
|
GPU
内部:
- router
- packet buffer
- flow control
- virtual channel
- QoS
已经非常像:
on-chip Ethernet network
11. 那 coherency 怎么办?
这里最关键。
很多人误解:
NI-700替代CCI
实际上:
NI-700 不负责复杂CPU coherency
它主要负责:
transport
而:
coherency
后来交给:
- CMN-600
- CMN-700
- CI-700
这些 coherent mesh。
12. ARM 后来变成“两层结构”
现代 ARM SoC:
不是:
一个大CCI
而是:
Coherent Mesh
+
System NoC
13. 现代结构长这样
例如:
CMN-700
(CPU coherent mesh)
/ | \
CPU LLC DSU
|
NI-700
/ | \
GPU NPU ISP
|
DDR
14. 为什么拆成两层?
因为:
coherency 很复杂
需要:
- snoop
- MOESI
- directory
- DVM
transport 更关注:
- bandwidth
- routing
- congestion
- scalability
两者优化目标完全不同。
15. CCI-500 vs NI-700 核心区别
| 特性 | CCI-500 | NI-700 |
|---|---|---|
| 类型 | coherent interconnect | packetized NoC |
| 目标 | cache coherency | scalable transport |
| 核心协议 | ACE | packet routing |
| 架构 | centralized crossbar | distributed router |
| 重点 | snoop | bandwidth |
| CPU cache一致性 | 强 | 不负责 |
| 扩展性 | 一般 | 极强 |
| wire scalability | 差 | 好 |
| AI/GPU适合度 | 一般 | 极强 |
| 时代 | ARMv8早期 | ARMv9时代 |
16. 为什么现代 SoC 不再用 CCI?
因为:
GPU/NPU traffic 太恐怖
现代:
- GPU TB/s
- AI massive DMA
- ISP 8K RAW
centralized coherent crossbar:
根本撑不住
17. CCI-500 更像“CPU coherence island”
现代视角看:
CCI-500 更像:
CPU coherency island
而不是:
全SoC backbone
18. 一个非常形象的比喻
CCI-500
像:
银行总账系统
重点:
所有账户数据必须一致
NI-700
像:
城市交通网
重点:
如何让海量车辆高效流动
19. ARM 实际演进路线
coherent line
CCI-400
↓
CCI-500
↓
CCN-5xx
↓
CMN-600
↓
CMN-700
system NoC line
NIC-400
↓
NIC-450
↓
NI-700
20. 最终总结
最本质关系:
CCI-500:
解决 “谁的数据是最新的”
NI-700:
解决 “数据怎么高效运过去”
或者:
CCI-500 = coherency
NI-700 = transportation
现代 SoC 已经把:
“缓存一致性”
和
“全芯片数据运输”
彻底拆成两层架构。


浙公网安备 33010602011771号