惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
T
Threatpost
V
Vulnerabilities – Threatpost
Recorded Future
Recorded Future
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
Engineering at Meta
Engineering at Meta
Project Zero
Project Zero
Jina AI
Jina AI
雷峰网
雷峰网
T
ThreatConnect
E
Exploit-DB.com RSS Feed
T
True Tiger Recordings
Y
Y Combinator Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tenable Blog
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
SegmentFault 最新的问题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
M
Microsoft Research Blog - Microsoft Research
U
Unit 42
L
LINUX DO - 热门话题
C
Cybersecurity and Infrastructure Security Agency CISA
I
InfoQ
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recent Commits to openclaw:main
Recent Commits to openclaw:main
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
F
Fortinet All Blogs
Google DeepMind News
Google DeepMind News
C
Check Point Blog
Malwarebytes
Malwarebytes
T
Threat Research - Cisco Blogs
The GitHub Blog
The GitHub Blog
D
Docker
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Blog — PlanetScale
Blog — PlanetScale
T
The Exploit Database - CXSecurity.com
SecWiki News
SecWiki News
B
Blog RSS Feed
F
Future of Privacy Forum
罗磊的独立博客
Scott Helme
Scott Helme

博客园 - yooooooo

ARM CoreLink 系列 4.3 -- NI-700 Component and interface identifiers claude code命令使用 【ARM Trace32(劳特巴赫) 使用介绍 2.2 -- TRACE32 进阶命令之 DIAG 弹框命令】 trace32 .cmm脚本和.t32文件的区别 【ARM Trace32(劳特巴赫) 使用介绍 1.1 - Veloce 环境中使用trace32 连接 Cortex-M33】 【ARM Trace32(劳特巴赫) 使用介绍 2.1 -- TRACE32 Practice 脚本 cmm 脚本学习】 PCIe 总线的 ASPM 和 链路状态机制总结 fw_devlink 功能 I3C协议详解 UART 协议规范 BPF 调度器 sched_ext 实现机制、调度流程及样例 Android Camera性能分析 录像Buffer Path详解 【UEFI基础】Protocol介绍 【UEFI实战】在库中使用全局变量 sched feature TTWU_QUEUE 【ARM CoreLink 系列 4.2 -- NI-700 Function units 详细介绍】 EDK II PCD的概念、类型、使用 UEFI:FDF文件及FD、FV、FFS edk2构建编译流程 PELT算法浅析 load_balance函数代码详解 - yooooooo UEFI Boot Manager Linux misfit task Linux 内核中sched_prio_to_weight转换关系 CFS任务放置代码详解 CFS任务的负载均衡(load balance)
ARM CCI-500 与 NI0700 的关系.
yooooooo · 2026-05-23 · via 博客园 - yooooooo

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 已经把:

“缓存一致性”
和
“全芯片数据运输”

彻底拆成两层架构。