09 - C2C 建模方案与实现规划
本文档规划 SG2262 C2C 子系统在 Tier6+Model 中的建模策略、实现分期和当前状态。
Spec 参考:
docs/design/2262-C2C/(硬件行为参考)分析日期: 2026-04-15
现有建模能力
Math 模型 (已有)
通过 alpha-beta 公式计算通信延迟,无微架构细节:
latency = alpha + beta * message_size
# alpha = base_latency (c2c_latency_us)
# beta = 1 / bandwidth (c2c_bandwidth_gbps)
参数来源: topology YAML 的 interconnect.c2c.bandwidth_gbps / latency_us
能力边界: 无法区分 L1 拓扑差异、CDMA 瓶颈、保序开销、Send/Receive 握手延迟。
G5 仿真器 (Rust 实现)
Rust crate g5_rs, 位于 perfmodel/evaluation/g5/。
已实现模块:
src/
├── tier6/
│ ├── cdma.rs # CDMA 引擎 (跨芯片 DMA)
│ ├── paxi_core.rs # PAXI 事务管理
│ ├── rc_link_tx.rs # RC Link 发送端
│ ├── rc_link_rx.rs # RC Link 接收端
│ ├── c2c_network.rs # C2C 网络 (链路延迟/带宽)
│ ├── switch.rs # 交换机模型
│ └── paxi.rs # PAXIBridge 组合
├── collective/
│ ├── allreduce.rs # Ring/BiDir/Tree AllReduce
│ └── ... # AllGather/ReduceScatter/AllToAll/P2P
├── top/
│ ├── multi_chip.rs # 多芯片仿真顶层
│ └── event_handlers.rs # 事件分发
└── kernel/
└── sim_kernel.rs # 事件驱动内核
SG2262 C2C vs 现有模型差距
| 维度 | SG2262 硬件行为 | Math 模型 | G5 仿真器 |
|---|---|---|---|
| CDMA 引擎 | 4/die, 8 thread, arbiter 仲裁共享 datapath | 无 | 已实现 (简化: 无 thread 仲裁) |
| C2C Link | 8 组 x4, MAC/SerDes 延迟, 1.5KB MTU | bandwidth_gbps 参数 | 已实现 (PAXIBridge + RC Link) |
| CLE 路由 | chipid->portid, L1/L2 两层, itlv | 层次位置判断 | 已实现 (RoutingTable) |
| 保序 | CHS 窗口 / CFS fence | 无 | 未实现 (当前等同 CFS 行为) |
| Send/Receive | tcredit 握手, write_done 同步 | 简单 P2P | 未实现 (用 transfer 替代) |
| In-network Reduce | add/max/min @ fp32/fp16/bf16 | network_efficiency 系数 | 未实现 |
| 路径唯一 | 不支持 ECMP, 严格保序 | 无路径概念 | 已实现 (路由表) |
| 报文分片 | 4KB AXI boundary + 1.5KB MTU | 无 | 已实现 (MPS 分段) |
已知精度问题
问题: Ring AllReduce 仿真 RMSPE 63.4% (对比 H200 NVLink4 实测数据)
根因: 当前 G5 实现中,Ring AllReduce 每步 transfer 依赖前一步的 DataArrived(远端 ACK roundtrip),等同 CFS non-post write 语义。但 CHS (基线方案) 下 transfer bresp = local MAC early resp,延迟仅几 ns。
影响: 8-chip Ring AllReduce 14 步,每步多出一个链路 RTT (~200ns),累积额外延迟 ~2800ns。
建模方案
CHS/CFS 内存一致性模式
G5 应支持 CHS/CFS 模式切换,作为 CDMA 或 MultiChipSim 的配置参数:
enum MemoryConsistencyMode {
CHS, // post write, early resp, 快速释放
CFS, // non-post write, 等远端 bresp
}
CHS 模式 (默认):
- transfer 完成 = 数据发送完毕 + early_resp_latency (~几 ns)
- datapath 快速释放,下一条 transfer 可立即开始
- Ring AllReduce step 间无 RTT gap
CFS 模式:
- transfer 完成 = DataArrived (远端 ACK roundtrip)
- datapath 被占用直到远端 bresp 返回
- 当前 G5 的行为
Phase 分期
Phase 1: 行为级建模 [已完成]
| 模块 | 状态 | 说明 |
|---|---|---|
| CDMAUnit | 已完成 | 带宽约束 + 启动延迟 + 多线程 outstanding |
| PAXIBridge | 已完成 | OST 限制 + MPS 分段 + CBFC credit 流控 |
| RC Link TX/RX | 已完成 | PSN + Go-Back-N 重传 + VC 仲裁 |
| SwitchModel | 已完成 | VOQ + iSLIP 调度 + ECN RED 标记 |
| C2CNetwork | 已完成 | 链路延迟/带宽建模 |
| MultiChipSim | 已完成 | 多芯片仿真顶层 |
| CollectiveOps | 已完成 | Ring/BiDir/Tree AllReduce 等 |
Phase 2: 精度提升 [进行中]
| 模块 | 状态 | 预期影响 |
|---|---|---|
| CHS/CFS 模式切换 | 待实现 | Ring AllReduce RMSPE 63% -> <20% (预期) |
| CDMA Thread Arbiter 精确仲裁 | 未开始 | 高负载时带宽下降 5-15% |
| Send/Receive tcredit 精确建模 | 未开始 | P2P 场景小消息延迟敏感 |
| PAXI CBFC/PFC 参数精调 | 未开始 | 拥塞场景下的背压行为 |
Phase 3: 完善补齐
| 模块 | 状态 | 预期影响 |
|---|---|---|
| In-network AllReduce | 未开始 | AllReduce 延迟降低 ~50% |
| CLE itlv 策略 | 未开始 | 非均匀流量场景 |
| PAXI TX buffer 精确水位/超时 | 未开始 | 突发流量场景的缓冲区溢出 |
建模参数对照表
| SG2262 参数 | 值 | G5 仿真器对应 | Math 模型对应 |
|---|---|---|---|
| C2C 总带宽 (112G) | 448 GB/s | PAXIBridge.total_bw_gbps | c2c.bandwidth_gbps |
| C2C 有效带宽 | ~431.9 GB/s | PAXIBridge 报文封装效率 | (无) |
| C2C 直连延迟 | ~150 ns (AXI-to-AXI) | PAXIBridge 行为建模 | c2c.latency_us = 0.15 |
| PAXI OST 上限 | 512 | PAXIBridge.max_ost | (无) |
| PAXI VC 数 | 8 | PAXIBridge VC 仲裁 | (无) |
| PAXI CBFC credit | 可配 (32-2048B) | PAXIBridge CBFC 流控 | (无) |
| MAC MTU | 1.5 KB | C2CPhyLink.mtu_bytes | (无) |
| AXI boundary | 4 KB | CDMAUnit (MPS 分段) | (无) |
| CDMA 数 / Die | 4 | CDMAUnit.cdma_count_per_die | (无, 建议增加 BW 约束) |
| CDMA 单引擎带宽 | 64 GB/s | CDMAUnit.bandwidth_per_cdma_gbps | (无, 建议增加 BW 约束) |
| Thread / CDMA | 8 | CDMAUnit.threads_per_cdma | (无) |
| tcredit 深度 | 32 / CDMA | 未建模 | p2p_overhead_ns |
| 保序窗口 | 32 区域 | 未建模 | (无) |
| In-network Reduce | add/max/min | 未建模 | network_efficiency |
带宽单位约定:
bandwidth_per_cdma_gbps的单位是 GB/s (= bytes/ns),不是 Gbits/s。整个项目中*_gbps后缀统一为 GB/s。
Math 模型增强建议
当前 Math 模型使用 alpha-beta 公式 (latency = alpha + beta * message_size),以下三个方向可在不引入事件驱动仿真的前提下提升精度。
CDMA 带宽约束
现状: Math 模型仅使用 c2c.bandwidth_gbps (C2C Link 带宽),未考虑 CDMA 引擎的带宽上限。
建议: 引入 CDMA 带宽作为上界约束:
effective_bw = min(c2c_link_bw, cdma_bw_per_die * num_dies)
- 单 Die:
effective_bw = min(448, 256 * 1) = 256 GB/s - 双 Die:
effective_bw = min(448, 256 * 2) = 448 GB/s
L1 拓扑参数
现状: Math 模型无拓扑感知能力,所有芯片对使用相同带宽。
建议: 引入 L1 拓扑描述参数,根据拓扑类型调整有效带宽。
Send/Receive 开销
现状: P2P 通信延迟仅计算传输时间,未包含 tcredit 握手开销。
建议: 引入 Send/Receive 协议开销参数:
p2p_overhead_ns = 2 * c2c_latency_us * 1000 # tcredit RTT