01. SG2262 MAC ID 映射与 CLE 路由技术参考
本文档描述 SG2262 C2C 子系统中 MAC ID 编址方案、CLE 路由查找引擎和 NoC 地址映射的行为级规格。
来源标注:[DOC] = SG2262 C2C 方案文档,[PPT] = 2262 C2C feature PPT,[推导] = 从文档逻辑推导
MAC ID 结构
三段式 10 bit 编址
[DOC] MAC ID 采用三段分层编址,总长不超过 10 bit,最大寻址 1024 个节点:
| 段 | 名称 | 位宽范围 | 说明 |
|---|---|---|---|
| 高位 | L2 网络 ID | 0~10 bit | 标识 L2 cluster |
| 中位 | L1 网络 ID | 0~10 bit | 标识 L1 cluster 内芯片 |
| 低位 | Die ID | 0~10 bit | 标识 Chip 内 Die |
三段各自可选 0~10 bit,但 L2 + L1 + Die 总长 <= 10 bit。每段为 0 bit 时该层级不参与编址。
分层编址原则
[DOC] 分层编址服务于两个硬件需求:
- 交换机路由表简化:交换机只需匹配 MAC ID 高位段即可完成 cluster 间路由,无需识别每个芯片的完整地址。
- 路径唯一性:所有 chip 连接交换机的 port 数必须相同且一对一。若同一 MAC ID 从多个 port 到达交换机,交换机无法确定 resp 的返回 port,产生路由歧义。
dst MAC ID 的生成
[DOC] CDMA 发起跨芯片请求时:
- chipid 部分:由 CDMA 生成,通过 AXI user 信号传递
- dieid 部分:由 NoC 根据目标地址计算(CDMA 与 C2C port 解耦,不感知 Die 分布)
DMAP (Die-level MAC ID Assignment Plan)
行为描述
[DOC] DMAP 以 Die 为单位分配 MAC ID:同一 Chip 中不同 Die 的 C2C MAC 分配不同 MAC ID,同一 Die 内的所有 C2C MAC 分配相同 MAC ID。每个 Die 独立出 C2C port 连接 switch。
路由流程:NoC 根据 SAM 表区分发往 dst chip 的不同 Die,CLE 根据 dst_chipid + dst_dieid 查找路由表得到 portid,交换机根据完整 dst MAC ID(含 dieid)转发到目标 Die 的 port。
限制条件
[DOC] DMAP 存在以下限制:
| # | 限制 | 原因 |
|---|---|---|
| 1 | 所有 chip 的 16share/8share/4share/private 分配方案(含地址区间)必须统一 | [推导] NoC 根据目标地址计算 dst_dieid。若不同 chip 地址映射不同,同一地址在不同 chip 上映射到不同 Die,src 端计算的 dieid 与 dst 端实际 dieid 不一致 |
| 2 | 软件需配置所有 Die 的 CDMA 才能利用全部 C2C port | [推导] 每个 Die 的 C2C port 绑定该 Die 的 MAC ID。只配一个 Die 的 CDMA 则另一 Die 的 C2C port 空闲,浪费一半带宽 |
| 3 | 支持的最大 chip 数受限 | [推导] 2-Die 芯片需 1 bit dieid,10 bit MAC ID 中仅剩 9 bit 给 chipid,最多 512 chip |
| 4 | 不支持芯片转发 | [DOC] 否则 resp 走错路径。[推导] 转发链路上不同 Die 的 resp 返回路径可能与 req 路径不对称 |
| 5 | 所有发给 C2C 的流量必须先经过 NoC | [推导] dst_dieid 由 NoC 计算(地址匹配 SAM 表),跳过 NoC 则请求不携带 dieid,CLE 无法路由 |
| 6 | 仅支持单层 clos 拓扑 | [DOC] 见下方分析 |
为何仅支持单层 clos
[DOC] 两个层面:
硬件连线约束:cube/all2all/torus/ring/mesh 等拓扑无法做到每个 Die 都与其他所有 chip 有相同连接方式。clos 中每个 Die 的 C2C port 均连到交换机,交换机天然路由到任意 Die;直连拓扑中物理连线决定每个 port 只连特定邻居,不同 Die 的 port 连到的邻居集合不同,无法保证路由对称性。
转发路径歧义:非 clos 拓扑需要芯片间转发,出现"先跨 Die 还是后跨 Die"歧义。无论选哪种路径,req 和 resp 走的链路不同,违背路径唯一约束。单层 clos 中所有流量经交换机一跳到达,不需芯片转发,无此歧义。
CMAP (Chip-level MAC ID Assignment Plan)
行为描述
[DOC] CMAP 以 Chip 为单位分配 MAC ID:同一 Chip 的所有 C2C MAC(跨所有 Die)分配相同 Chip ID。所有 C2C port 统一编号视为等价,是否跨 Die 由 NoC 决定。
路由流程:CDMA 发起请求 -> CLE 根据 dst_chipid 得到 portid -> NoC 根据 portid(44 bit 地址高 4 bit)路由到对应 C2C port -> 若目标 port 在另一 Die 上,NoC 自动通过 D2D 路由 -> MAC 将 dst MAC ID(仅含 chipid)填入帧头 -> 目标 Chip 接收后 NoC 根据地址路由到目标 Die。
优势
[DOC] MAC ID 以 Chip 为单位分配,保证所有 Chip 连接交换机的方式相同,路径唯一性有保证,无额外拓扑限制。支持全部六种拓扑。
潜在问题:冗余 D2D 流量
[DOC] CMAP 会产生冗余 D2D 流量,影响 GDMA 性能。
[推导] CLE 通过 interleave 将流量均匀分配到所有 port。当请求被分配到另一 Die 的 C2C port 时,必须先通过 D2D 链路跨 Die 传输。这些跨 Die 流量与 GDMA 等其他 D2D 流量共享 D2D 带宽,导致 GDMA 可用带宽下降。DMAP 模式下每个 Die 只用自己的 C2C port,不产生跨 Die 的 C2C 流量。
DMAP vs CMAP 兼容性对照表
[DOC]
| 拓扑 | CMAP | DMAP | 备注 |
|---|---|---|---|
| clos | Y | Y | 单层交换机,无芯片转发 |
| cube | Y | N | 需要芯片转发 |
| all2all + clos | Y | N | L1 层需要芯片转发 |
| clos + clos | Y | N | L1 层交换机仍需通过芯片做 L2 转发 |
| 低成本 all2all + clos | Y | N | L1 层需要芯片转发 |
| 低成本 clos + clos | Y | N | L1 层交换机仍需通过芯片做 L2 转发 |
[推导] CMAP 是通用方案,代价是可能产生冗余 D2D 流量;DMAP 仅在单层 clos 下有效,但完全避免 D2D 冗余流量。
CLE (Chip Address Lookup Engine) 路由引擎
路由原则
[DOC] CLE 路由遵循:先做 L2 路由,再做 L1 路由。L2 仅支持交换机路由;L1 同时支持交换机路由和点对点互联。
[PPT] CLE 部署在 CDMA(发送跨芯片流量时路由查找)和 C2C_sys(转发跨芯片流量时路由查找)两个 IP 中。
CLE 寄存器
[DOC]
| 寄存器 | 用途 |
|---|---|
reg_chipid | 本芯片 Chip ID。CLE 用此值与 dst chipid 比较,判断目标是否为本芯片 |
reg_l1_chip_num | L1 网络芯片数量。用于生成路由表 mask,提取 chipid 中 L1 层位段 |
reg_l1_port_num | L1 网络端口数量。interleave 模式下确定 L1 层 port 的分配范围 |
reg_l1_itlv | L1 网络路由模式。0 = 查找表模式(点对点互联),1 = interleave 模式(交换机路由) |
reg_l1_port_list | L1 网络端口列表。逻辑 port index 通过此列表映射为物理 portid |
reg_l2_port_num | L2 网络端口数量。确定 L2 层 port 的 interleave 范围 |
reg_l2_port_list | L2 网络端口列表。记录本芯片连接 L2 网络的 C2C port ID |
reg_l2_port_exist | 本芯片是否有 L2 C2C link。低成本拓扑中部分芯片没有 L2 port |
reg_l2_sw_cap_port | 本 cluster 中支持 L2 转发的芯片的 portid。本芯片无 L2 port 时,L2 流量转发到此芯片 |
查找表规格
[DOC] CLE 查找表参数:
| 参数 | 规格 |
|---|---|
| 最大条目数 | 32 项(entry 0 ~ 31) |
| 每条目 interleave port 数 | 最多 4 个 |
| 输入 | 10 bit Chip ID |
| 输出 | 4 bit Port ID |
每项查找表包含以下字段:
| 字段 | 说明 |
|---|---|
DA | 目标 Chip ID(匹配键) |
port_num | 本条目 interleave 使用的 port 数量(1~4) |
port_0 ~ port_3 | 最多 4 个 port ID,interleave 在这些 port 间分配流量 |
[PPT] 查找表两个使用区域:cluster 内(L1 点对点拓扑,根据 chipid 直接索引 portid)和 cluster 间(L1/L2 交换机拓扑,hash interleave 计算)。
CLE 路由查找状态机
[DOC] 输入:10 bit dst_chipid。输出:4 bit portid。

完整处理流程:
Step 1 -- L2 chipid 比较
提取 dst chipid 的 L2 部分(高位段),与 reg_chipid 的 L2 部分比较:
- 相同 -> 目标在同一 L2 cluster -> Step 2a
- 不同 -> 目标在不同 L2 cluster -> Step 2b
Step 2a -- L1 chipid 比较
提取 dst chipid 的 L1 部分(中位段),与 reg_chipid 的 L1 部分比较:
- 相同 -> 目标就是本芯片 -> portid = 0(发给 NoC,不经 C2C port),流程结束
- 不同 -> 目标在同 cluster 其他芯片 -> Step 3
Step 2b -- 判断本芯片能否做 L2 转发
检查 reg_l2_port_exist:
- 1(有 L2 link)-> 根据
reg_l2_port_num做 interleave,从reg_l2_port_list选择 portid,流程结束 - 0(无 L2 link)-> portid =
reg_l2_sw_cap_port(转发到 cluster 内有 L2 port 的芯片),流程结束
[推导] 这是低成本拓扑的关键路径:无 L2 port 的芯片通过 L1 层将 L2 流量转发到 cluster 内的"网关芯片"。
Step 3 -- L1 路由模式选择
检查 reg_l1_itlv:
- 0(查找表模式)-> 根据 L1 chipid 在 32 项查找表中匹配,取出 portid。若 entry 的
port_num > 1,在port_0~port_3间 interleave 选择,流程结束 - 1(interleave 模式)-> 根据 interleave 粒度和目标地址计算 index,经
reg_l1_port_num选择 port,再通过reg_l1_port_list映射为物理 portid,流程结束
Interleave 粒度
[DOC] CLE 支持的 interleave 粒度(软件通过寄存器配置):
1, 2, 3, 4, 6, 8, 12, 16
[推导] 支持非 2 的幂次粒度(3, 6, 12)是因为 L1 网络的 chip 数可能不是 2 的幂次,需对应粒度才能均匀分配。粒度越小流量分散越均匀;粒度越大可能出现 port 间负载不均。
[PPT] L2 层仅支持 interleave 模式(L2 只走交换机);L1 层同时支持 interleave 模式和查找表模式。
Port ID 过 NoC 路由
44 bit 地址空间
[DOC] CLE 输出的 portid 通过 NoC 44 bit 地址空间路由到对应 C2C port:
| bit 范围 | 字段 | 功能 |
|---|---|---|
| [43:40] | portid | 指定访问哪个 C2C port。0 = 片内访问(不经 C2C) |
| [39:0] | addr offset | 片内物理地址 |
[推导] 4 bit portid 最多寻址 16 个 C2C port(1~15,0 保留给片内)。SG2262 每芯片 8 个 C2C link(双 Die 各 4 个),4 bit 足够覆盖。
D2D Group
[DOC] NoC 支持 3 组 D2D group,控制跨 Die 流量路由:
| 配置类型 | 行为 |
|---|---|
| non-hash 区间 | 每个 non-hash 地址区间可单独配置属于哪个 D2D group。不配置则属于本 Die |
| hash 区间 | hash bit 值可根据软件配置选择属于哪个 D2D group。不配置则属于本 Die |
| D2D group -> SN | 每个 D2D group 可选择 n 个 SN(Slave Node),由 NoC 内置 interleave 策略分配 |
[PPT] NoC RNSAM 实现:non-hash 区域可指向 D2D group 或本 Die 内 SNID;hash 区域可根据 hash bit 指向 SNID 或 D2D group。
[推导] D2D group 机制在 CMAP 模式下尤为重要:CLE interleave 可能将流量分配到另一 Die 的 C2C port,NoC 通过 D2D group 配置自动将请求路由到正确 Die。3 组 D2D group 覆盖"本 Die C2C"、"对端 Die C2C"和"跨 Die 内存访问"三类场景。
VMACID (Virtual MAC ID)
使用场景
[DOC] 当单个芯片的多个 C2C link 连到同一个交换机时,同一 MAC ID 从多个 port 到达交换机。交换机 MAC 地址表中一个 MAC ID 只能绑定一个 port,产生路由歧义。
VMACID 将 PMACID 映射为不同的 VMACID,使交换机看到的每个 port 上的 MAC ID 唯一。
映射规格
[DOC] 每个 C2C link 独立维护 PMACID -> VMACID 映射表:
| 参数 | 规格 |
|---|---|
| 映射容量 | 最多 1024 个 PMACID -> VMACID |
| 映射方向 | 双向:发送时 PMACID -> VMACID,接收时 VMACID -> PMACID |
| 映射粒度 | 每个 C2C link 独立配置 |
约束
[DOC] 使用 VMACID 的两个约束:
- 交换网络内 MAC ID 唯一:映射后每个交换机看到的 VMACID 必须唯一。两个 port 映射出相同 VMACID 则交换机仍无法区分。
- src 和 dst 都需映射:开启映射后,发送时将 src/dst PMACID 转为 VMACID 填入帧头;接收时将帧头中 VMACID 还原为 PMACID 供芯片内部使用。
[DOC] 开启 VMACID 映射后,可实现类似 VLAN 的功能:通过配置映射表指定特定 src chip port 只与特定 dst chip port 通信,实现逻辑链路分组。
术语表
| 缩写 | 全称 | 说明 |
|---|---|---|
| CLE | Chip Address Lookup Engine | 芯片地址查找引擎,chipid -> portid 路由 |
| CMAP | Chip-level MAC ID Assignment Plan | 以 Chip 为单位分配 MAC ID |
| DMAP | Die-level MAC ID Assignment Plan | 以 Die 为单位分配 MAC ID |
| L1 | Layer 1 | cluster 内互联 |
| L2 | Layer 2 | cluster 间互联 |
| MAC | - | C2C link(以太网 MAC 层) |
| VMACID | Virtual MAC ID | 交换网络看到的虚拟 MAC ID |
| PMACID | Physical MAC ID | 芯片实际 MAC ID |
| CDMA | Cross-chip DMA | 跨芯片 DMA 引擎 |
| D2D | Die-to-Die | Die 间互联 |
| NoC | Network on Chip | 片上网络 |
| RNSAM | RN System Address Map | RN 侧系统地址映射表 |
| SN | Slave Node | NoC 从节点 |