3. CMN节点类型:HN、SN、MN、RN

CMN-600/700这套互联架构里,节点类型是绕不开的基础概念。我刚开始接触CMN时,被这堆缩写搞得有点晕——HN、SN、MN、RN,每个节点到底干嘛的?说白了,它们就是互联网络里的不同角色,各司其职。

你想想看,一个SoC里那么多IP核,总得有人发起请求、有人响应请求、有人负责一致性管理吧?CMN就把这些职责分给了四种节点类型。

3.1 RN(Request Node)—— 请求发起者

RN是请求的发起方。CPU核、GPU、DMA控制器,这些都属于RN。它们向系统发出读写请求,然后等待响应。

我记得在某个AI芯片项目中,RN的数量直接决定了互联的带宽需求。当时我们挂了16个CPU核和4个GPU,每个RN的请求带宽加起来,差点把CMN的瓶颈给撑爆了。

RN的关键特征:

  • 只发起请求,不处理一致性
  • 可以缓存数据(L1/L2 cache)
  • 通过CHI协议与HN通信

3.2 HN(Home Node)—— 一致性管家

HN是CMN里最核心的节点。它负责管理数据的一致性,说白了就是「这个地址的数据在谁手里?谁有最新版本?」。

每个地址区间都会映射到一个HN。当RN想读写某个地址时,HN会去查这个地址的缓存状态,然后决定怎么处理。

我建议你记住一点:HN的数量决定了系统的并发一致性处理能力。HN太少,所有请求都挤在同一个HN上,性能就上不去。HN太多,又会导致跨片通信开销变大。

实战经验:我曾经在一个16核项目中,把4个HN分布在不同的mesh节点上。结果发现,某些地址区间的访问延迟特别高。后来一查,是因为这些地址都映射到了同一个HN上,形成了热点。解决办法是把地址区间打散,均匀分布到所有HN上。

3.3 SN(Slave Node)—— 从设备接口

SN是连接从设备的节点。DRAM控制器、PCIe控制器、NIC这些,都属于SN。它们不发起请求,只响应请求。

SN的职责很简单:收到HN转发的请求后,去访问实际的从设备,然后把数据返回。

节点类型 典型设备 主要职责
SN DRAM控制器 响应内存读写
SN PCIe控制器 响应外设访问
SN NIC 响应网络数据

嗯,这里要注意:SN本身不处理一致性。它只负责把数据从设备搬出来或搬进去。一致性的事,全交给HN去操心。

3.4 MN(Master Node)—— 系统主控

MN是CMN里的「大脑」。它负责系统级的配置、初始化、电源管理这些事。每个CMN实例只有一个MN。

MN不参与正常的数据传输。它只在系统启动时配置各个节点的寄存器,或者在低功耗模式下管理电源状态。

避坑指南:我曾经在调试一个系统时,发现某个RN死活连不上HN。查了半天,原来是MN的配置寄存器里,那个RN的ID没使能。所以,系统启动后第一件事,就是检查MN的配置是否正确。

3.5 四种节点的协作关系

这四种节点怎么配合工作?我画了一张图,你看完就明白了。

CMN四种节点协作关系图 RN 请求发起者 HN 一致性管家 SN 从设备接口 MN 系统主控 请求 转发请求 返回数据 响应 配置/管理 图例: RN HN SN MN 请求路径 响应路径 管理路径

流程是这样的:

  1. RN发起请求:比如CPU要读内存地址0x8000_0000
  2. HN收到请求:根据地址映射,找到负责这个地址的HN
  3. HN查询一致性:检查这个地址的数据在哪个cache里,有没有被修改
  4. HN转发给SN:如果数据不在cache里,就去DRAM里读
  5. SN返回数据:DRAM控制器把数据读出来,返回给HN
  6. HN返回给RN:HN把数据发给RN,同时更新一致性状态

整个过程里,MN不参与数据传输。它只负责在系统启动时,告诉每个节点「你是谁,你该干什么」。

3.6 节点配置的实战要点

在实际项目中,节点配置有几个坑要注意:

节点配置检查清单:

  • RN数量:不能超过CMN支持的最大值(CMN-600支持最多32个RN)
  • HN分布:尽量均匀分布在mesh的不同位置,避免热点
  • SN映射:每个SN要正确映射到对应的地址区间
  • MN初始化:系统启动时,MN必须完成所有节点的配置

我个人习惯在项目初期,先用一个表格把节点清单列出来。这样后面做地址映射时,心里就有底了。

节点ID 类型 连接的设备 地址区间 备注
RN0 RN CPU0 - L1/L2 cache
RN1 RN CPU1 - L1/L2 cache
HN0 HN - 0x0000_0000 - 0x3FFF_FFFF 负责低1GB
HN1 HN - 0x4000_0000 - 0x7FFF_FFFF 负责高1GB
SN0 SN DRAM控制器0 0x0000_0000 - 0x3FFF_FFFF 低地址区间
SN1 SN DRAM控制器1 0x4000_0000 - 0x7FFF_FFFF 高地址区间

嗯,这四种节点类型,说白了就是CMN互联架构里的四个角色。RN负责问问题,HN负责查答案,SN负责去拿答案,MN负责告诉大家「你们该怎么干活」。搞清楚了这些,后面做地址映射和拓扑规划就顺了。


专注资料整理