1. CMN与CHI概述:系统互连的演进、CMN家族介绍、CHI协议定位、课程路线图

1.1 为什么我们需要重新思考互连?

做芯片设计的朋友应该都有体会——十年前,我们还在为单核CPU的Cache一致性头疼。现在呢?动辄上百个核心,加上GPU、NPU、各种加速器,全都挤在一个die上。你想想看,这些家伙要共享数据、要协同工作,靠什么?

靠的就是系统互连。

我个人习惯把系统互连比作城市的交通网络。早期的总线就像一条乡间小路,车少的时候还行。后来车多了,就变成了环形总线、交叉开关。再后来,核心数量突破两位数,这些方案全都不够用了。我在2015年参与过一个16核的SoC项目,用的还是AXI总线做互连,结果呢?Cache一致性维护搞得我们团队差点崩溃。

嗯,这就是为什么ARM推出了CMN(Coherent Mesh Network)和CHI协议。说白了,它们就是为解决大规模多核系统的互连问题而生的。

1.2 系统互连的演进:从总线到网格

我们先快速回顾一下互连架构的演进路线:

阶段 架构 典型协议 最大核心数 主要问题
第一阶段 共享总线 AHB/APB 2-4 带宽瓶颈,仲裁开销大
第二阶段 环形总线 AXI3/AXI4 4-8 延迟随节点数线性增长
第三阶段 交叉开关 AXI4/AXI5 8-16 面积爆炸,连线复杂
第四阶段 网格互连 CHI 16-256+ ——(当前最优解)

看到这个表格,你可能会问:为什么交叉开关到了16核就不行了?

我在一个28nm的项目里做过交叉开关的评估。16个端口,每个端口128bit数据位宽,光布线就把后端的工程师逼疯了。而且,交叉开关的面积是O(n²)增长的,到了32核,光互连逻辑就能吃掉整个芯片面积的30%以上。这谁受得了?

网格架构就不一样了。它是O(n)的扩展性,每个节点只跟邻居通信。你加一个节点,只需要多拉几条线。这就是CMN的核心思想——用局部通信换取全局一致性。

1.3 CMN家族:从CMN-600到CMN-700

ARM的CMN产品线,我把它分成三代:

  • CMN-600:第一代,2015年推出。支持最多32个CHI节点,面向服务器和基础设施。我记得第一次看到CMN-600的文档时,最震撼的是它的分布式一致性——不再需要一个中心化的Snoop Filter,而是把目录分布到各个RN(Request Node)中。
  • CMN-650:第二代,2018年推出。节点数扩展到48个,引入了DVM(Distributed Virtual Memory)和QoS(Quality of Service)支持。这个版本在移动端也开始有应用了。
  • CMN-700:第三代,2021年推出。支持最多64个CHI节点,增加了CXL(Compute Express Link)的支持,可以外接加速器和内存池。这是目前最主流的CMN版本。

重要提示:CMN-700的CXL支持是一个里程碑。它意味着ARM生态正式拥抱了异构计算——你可以把Intel的GPU、FPGA、甚至自定义加速器通过CXL挂到ARM的CMN网络上,而且保持Cache一致性。这在以前是不可想象的。

1.4 CHI协议:CMN的通信语言

CHI(Coherent Hub Interface)是ARM专门为CMN设计的互连协议。它跟AXI最大的区别是什么?

AXI是主从架构——Master发起请求,Slave响应。CHI是点对点架构——任何节点都可以发起请求,任何节点都可以响应。这就好比AXI是打电话(一对一),CHI是微信群聊(多对多)。

CHI协议有几个关键概念:

  • RN(Request Node):发起请求的节点,比如CPU核心、GPU、DMA控制器。
  • HN(Home Node):负责管理某段地址空间的节点,维护该地址的Cache一致性目录。
  • SN(Slave Node):响应节点,通常是内存控制器或外设。
  • MN(Miscellaneous Node):处理同步、屏障等杂项操作的节点。

我曾经在调试一个CHI互连问题时,花了整整两周才定位到问题——一个RN发起了Non-snoop请求,但HN误判成了Snoop请求,导致数据一直拿不到。后来发现是CHI协议中的Transaction ID分配出了问题。嗯,这种坑踩过一次就记住了。

1.5 课程路线图:我们接下来要学什么?

这个课程我会带你系统性地掌握CMN和CHI。下面是整个课程的知识体系:

CMN与CHI系统化大师课 - 知识体系 第一章:CMN与CHI概述(当前章节) 系统互连演进 · CMN家族 · CHI协议定位 · 课程路线图 第二章:CHI协议详解 协议层 · 事务类型 · 流控机制 · 状态机 第三章:CMN架构深度剖析 网格拓扑 · 路由算法 · 死锁避免 · 服务质量 第四章:调试与优化实战 性能分析 · 常见问题 · 调试工具 · 优化技巧 第五章:前沿与展望 CXL集成 · Chiplet互连 · 未来趋势

学习建议:如果你已经有AXI协议的基础,可以直接从第二章开始。但如果你是第一次接触ARM互连协议,我建议你按顺序来——先理解CHI的协议细节,再看CMN的架构实现,最后才是调试和优化。跳过基础直接看实战,很容易掉坑里。

注意事项:CMN和CHI的规范文档加起来超过2000页。这个课程不会逐页讲解,而是提炼出最核心、最常用的知识点。如果你需要完整的规范参考,请务必从ARM官网获取最新的CHI Issue F和CMN-700 TRM文档。

好了,第一章的概述就到这里。从下一章开始,我们会深入CHI协议的每一个细节——包括Request、Snoop、Data三个独立的通道,以及它们是如何协同工作的。准备好了吗?


公众号:蓝海资料掘金营,微信deep3321