跳到主要内容

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 网络 ID0~10 bit标识 L2 cluster
中位L1 网络 ID0~10 bit标识 L1 cluster 内芯片
低位Die ID0~10 bit标识 Chip 内 Die

三段各自可选 0~10 bit,但 L2 + L1 + Die 总长 <= 10 bit。每段为 0 bit 时该层级不参与编址。

分层编址原则

[DOC] 分层编址服务于两个硬件需求:

  1. 交换机路由表简化:交换机只需匹配 MAC ID 高位段即可完成 cluster 间路由,无需识别每个芯片的完整地址。
  2. 路径唯一性:所有 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]

拓扑CMAPDMAP备注
closYY单层交换机,无芯片转发
cubeYN需要芯片转发
all2all + closYNL1 层需要芯片转发
clos + closYNL1 层交换机仍需通过芯片做 L2 转发
低成本 all2all + closYNL1 层需要芯片转发
低成本 clos + closYNL1 层交换机仍需通过芯片做 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_numL1 网络芯片数量。用于生成路由表 mask,提取 chipid 中 L1 层位段
reg_l1_port_numL1 网络端口数量。interleave 模式下确定 L1 层 port 的分配范围
reg_l1_itlvL1 网络路由模式。0 = 查找表模式(点对点互联),1 = interleave 模式(交换机路由)
reg_l1_port_listL1 网络端口列表。逻辑 port index 通过此列表映射为物理 portid
reg_l2_port_numL2 网络端口数量。确定 L2 层 port 的 interleave 范围
reg_l2_port_listL2 网络端口列表。记录本芯片连接 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。

CLE 路由查找流程

完整处理流程:

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 的两个约束:

  1. 交换网络内 MAC ID 唯一:映射后每个交换机看到的 VMACID 必须唯一。两个 port 映射出相同 VMACID 则交换机仍无法区分。
  2. src 和 dst 都需映射:开启映射后,发送时将 src/dst PMACID 转为 VMACID 填入帧头;接收时将帧头中 VMACID 还原为 PMACID 供芯片内部使用。

[DOC] 开启 VMACID 映射后,可实现类似 VLAN 的功能:通过配置映射表指定特定 src chip port 只与特定 dst chip port 通信,实现逻辑链路分组。


术语表

缩写全称说明
CLEChip Address Lookup Engine芯片地址查找引擎,chipid -> portid 路由
CMAPChip-level MAC ID Assignment Plan以 Chip 为单位分配 MAC ID
DMAPDie-level MAC ID Assignment Plan以 Die 为单位分配 MAC ID
L1Layer 1cluster 内互联
L2Layer 2cluster 间互联
MAC-C2C link(以太网 MAC 层)
VMACIDVirtual MAC ID交换网络看到的虚拟 MAC ID
PMACIDPhysical MAC ID芯片实际 MAC ID
CDMACross-chip DMA跨芯片 DMA 引擎
D2DDie-to-DieDie 间互联
NoCNetwork on Chip片上网络
RNSAMRN System Address MapRN 侧系统地址映射表
SNSlave NodeNoC 从节点