ARM的CMN-700 IP全称为Coherent Mesh Network,是一种一致性片上网络,是CHI一致性协议的可定制化的mesh拓扑。
CMN700可以互联1~256个处理器,支持AMBA CHI Issue E协议,同时兼容CHI Issue B/C/D。CMN700还支持CXL.mem功能,兼容CXL revision 2。
下图是一个3×4配置(3列4行)的CMN拓扑图,接下来主要介绍一下CMN网络里的各个组件(Component)。

Crosspoint(XP)
Crosspoint(XP)是一个Switch或路由逻辑的模块,也叫MXP(Mesh XP)。CMN-700网络是基于一系列的XP模块构建的。XP模块以二维矩形网格拓扑结构进行排列。
每个XP可以使用mesh端口最多连接到四个相邻的XP,如下图。此外,XP还有一些设备端口,用于连接设备。图中虚线为mesh端口,实线为设备端口。

根据配置,每个XP最多可以有四个设备端口(P0/P1/P2/P3)。
- XP with 4 mesh ports:支持2个设备端口。
- XP on the edge of the mesh with 3 mesh ports:支持3个设备端口。
- XP on the corner of the mesh with 2 mesh ports:支持4个设备端口。
每个XP支持四个CHI通道,用于传输CHI事务:
- Request (REQ)
- Response (RSP)
- Snoop (SNP)
- Data (DAT)
CMN-700最大支持144个XP,即12×12网格。网格中的每个XP都使用(X、Y)坐标。(0,0)表示左下角,(11,11)表示右上角。XP的X坐标和Y坐标也分别叫做XID和YID。
RN-I和RN-D
RN-I(I/O coherent Request Node)是支持I/O一致性的请求节点,用于连接I/O一致性的master设备,例如加速器设备等。
RNI本质上是一个转换桥,实现ACE-Lite协议到CHI协议的转换。RNI包括三个ACE-Lite或ACE-Lite-with-DVM从接口。
RNI桥只能作为不包含硬件一致性cache的master代理。CMN没有向RN-I发出snoop事务的能力,所以叫做IO一致性,而不是fully一致性。
RND是DVM Request Node,比RNI多了一个功能:可以接收DVM message。
RN-F
RN-F(Fully coherent Request Node)是支持完整的cache一致性的请求节点。RN-F一般就是CPU core,其内部拥有一致性cache,通过CHI的RN‑F端口直接连到CMN上。
HN-F
HN-F(Fully coherent Home Node)是全一致性的Home节点,负责管理部分地址空间、维护cache一致性。HNF节点包括以下内容:
1. 系统级缓存(System Level Cache)
System Level Cache(SLC)是最后一级缓存。SLC分配策略对于数据line是独占的,所有的code line都可以根据初始请求分配到SLC中。当使能MTE时,SLC将存储data和tag。
2. PoS和PoC
PoS全称是Point-of-Serialization(串行点),PoC全称是Point-of-Coherency(一致性点)。
PoS和PoC负责对发送到HNF的所有内存请求进行保序处理序。
- PoS是负责保证来自不同agent的请求的顺序;
- PoC是负责维护缓存一致性(cache coherence),即同一个地址的数据在不同的cache和内存之间的一致性。
3. Snoop Filter(SF)
Snoop Filter用来记录RNF中存在的cacheline。通过精确的直接snoop而非广播snoop,可以显著减少系统中的snoop流量,但是会占用较多的面积。
系统中的每个HNF配置为管理整个地址空间的特定部分(由SAM映射决定)。整个DRAM空间是通过系统中的所有的HNF来管理的。
HN-I/HN-T/HN-D/HN-V
HN-I(I/O coherent Home Node)是I/O一致性的Home节点,用于连接ACE slave设备。HN-I作为CMN-700的所有RN的代理,将CHI协议转换为ACE5-Lite协议。HNI支持对Arm device类型的保序。
HNI不支持对读取或写入到下游ACE5-Lite slave子系统的任何数据的缓存。发送到HNI的任何cacheable请求,都不会导致HNI发送snoop请求给系统中的RNF。cacheable请求会被转换为适当的ACE5-Lite读或写命令,并发送到下游的ACE5-Lite子系统。
- HNV:HNI+DVM node。
- HNT:HNI+DTC+DVM node。
- HND:HNI + DTC + DVM node + configuration node。
HN-P
HN-P(I/O coherent Home Node with PCIe optimization):PCIe优化的I/O一致性Home节点,它包含了HNI功能和用于PCIe P2P(peer-to-peer)传输的专用tracker。HNP只能用于连接PCIe subordinate。
SBSX
SBSX是一个AMBA 5 CHI到ACE5-Lite桥,相当于是一个SNF,可以用于连接ACE5-Lite slave设备,如CoreLink DMC-400动态内存控制器。
CML
CML(Coherent Multichip Link):一致性多芯片链路,可以在CMN 700中实现多芯片互联。CML可用于:
- SMP(CML_SMP)连接
- CXL设备连接
CML设备(CCG)可以配置用于CML_SMP连接或CXL设备连接。对于CML_SMP连接,必须在CCG中包含一个RNI,以加快PCIe对remote内存的访问。
配置节点(CFG)
CFG(configuration node):与HND节点放在一起,负责CMN-700的配置、控制和监控功能。(HND比HNI多了DTC、DVM node和配置节点,CMN-700里必须有一个HND。)
CFG执行以下功能:配置访问、错误报告、中断生成。
CFG包括以下元素:
CFG没有一个专用的CHI端口,它与HND节点共享一个设备端口。
Power/Clock Control Block
PCCB(Power/Clock Control Block):电源/时钟控制模块,位于HND节点内,提供单独的通信通道。这些通道用来传输电源和时钟管理的信息。
PCCB作为一个聚合器,通过以下方式在SoC和其他CMN-700组件之间传递信息:
- PCCB从其他相关的CMN-700组件接收事务activity指示信号,并将该信息传递给外部电源和时钟控制单元。
- PCCB从外部电源或时钟控制单元接收电源或时钟控制管理请求。并将该请求传递给相关的CMN-700组件。
- PCCB等待来自相关CMN-700组件的响应,并向外部电源和时钟控制单元传递聚合响应。
PCCB没有专用的CHI端,它与HND共享一个设备端口。
SAM
SAM(System Address Map):系统地址映射,所有CHI命令都必须包含一个完全解析的地址。地址必须包含源和目标ID(target ID)。目标ID是通过SAM映射来获取的,SAM可以将内存或I/O地址映射到目标设备。
每个发请求的设备都需要使用SAM功能。SAM包括以下两个逻辑单元:
RN SAM:允许每个RN将地址映射到HNF、HN-I、HN-D、HN-T、HN-P、HN-V和CCG的target ID。RN SAM支持生成内存控制器的target ID,用于RN直接向内存控制器发出预取(PrefetchTarget)操作。
HN-F SAM and MC SAM:将地址映射到内存控制器目标ID。
DTC
DTC(Debug and Trace Controller)控制着DTM(Debug and Trace Monitor),并通过ATB接口生成带有时间戳的trace。DTC是位于HND和HNT里,DTM一般是位于XP里面。
DTC执行以下功能:
- 产生事件(event)或PMU中断
- 接收来自DTM的数据包,并打包成ATB格式的trace包
- 使用SoC计时器输入的时间戳进行trace
- 生成对齐同步ATB trcae输出
- 处理ATB flush请求
- 处理debug和安全debug外部请求
- 提供分布式的和中央的PMU计数器的一致视图
- 处理PMU快照(snapshot)请求
- 在PMU计数器溢出时生成中断INTREQPMU
CAL
CAL(Component Aggregation Layer):允许多个设备连接到XP上的单个设备端口。
CMN提供多种类型的CAL:
- CAL2:连接2个相同的设备。
- CAL4:连接4个相同的设备。
- HCAL2:连接2个不同类型的设备。

Credited Slice
可以在CMN-700系统中配置一些可选的credited register slice,用于帮助时序收敛。
CMN包括以下Credited Slices:
- Mesh Credited Slice:放置在XP之间。
- Async Mesh Credited Slice:放置在不同时钟域的XP之间。
- Device Credited Slice:放置在设备与CAL,或者设备与XP之间。
- CAL Credited Slice:放置在XP与CAL之间。
- HCAL Credited Slice:放置在XP与HCAL之间。


ADB、CDB、CXSDB
ADB(AMBA Domain Bridge):用于两个AMBA总线(AXI, ACE5-Lite, oACE5-Lite-with-DVM)接口处于不同的时钟域、电源/电压域。
CDB(CHI Domain Bridge):用于两个CHI总线接口处于不同的时钟域、电源/电压域。
CXSDB(CXS Domain Bridge):用于两个CXS接口处于不同的时钟域、电源/电压域。
参考:
Arm Neoverse CMN‑700 Coherent Mesh Network TRM (r3p2)
6388
