SPC Tier Modeling Gap Analysis
Tier6-Model G5 仿真器 vs TPUPerf 分层建模对比分析 2026-03-01 (初始) / 2026-03-02 (Phase 1+2) / 2026-03-02 (Phase 3a + 架构重组)
层级总览
从芯片微架构到集群部署,建模分为以下层级(对齐 SPC 协议 v1.5.21 Tier 定义):
Tier 6+: 芯片间互联 (统一层) ← C2C 直连 / b2b 跨板 / r2r 跨机架 / p2p 跨 Pod
Tier 5: Die 级 (Die-to-Die) ← 双 Die 芯片内 D2D 互联
Tier 4: Die 全局网络 (K2K) ← Cake 间路由,Mesh/Ring/CrossRing
Tier 3: Die 内局部网络 (IP 间) ← T3N: TIU/DMA/SDMA/HAU 等 IP 模块间通信
SPC 协议层级参考 (v1.5.21):
- Tier 3 = Die 内局部网络 (T3N = 各 IP 模块)
- Tier 4 = 单 Die 全局网络 (T4N = Cake, K2K)
- Tier 5 = 单 Chip 内多 Die (T5N = Die, D2D)
- Tier 6 = 单运算板内 Chip 间直连 (T6N = Chip, C2C)
- Tier 7 = 单服务器内运算板间 (T7N = Board, 交换芯片)
- Tier 8 = 单机柜内服务器间 (T8N = Server)
- Tier 9 = 机柜间 (T9N = Pod)
- Tier 1/2 未在 SPC 中定义,微架构级细节 (流水线/存储时序) 暂不独立建模。
代码实现中 Tier 7/8/9 合并为 Tier 6+: SPC 协议定义 Tier 6~9 分别对应不同物理层级,但在 G5 仿真器中, 各级互联的核心组件 (C2CPhyLink / PAXIBridge / SwitchModel) 完全相同, 仅配置参数 (带宽/延迟) 不同。因此代码统一放在
tier6/目录下, 通过MultiChipSim的多级链路解析 (chip_board_map/chip_rack_map) 自动为不同芯片对选择对应级别的链路参数。
Tier 3: Die 内局部网络 (IP 间通信)
SPC 定义: T3N = 各类 IP 模块 (处理器核、存储控制器、DMA 等)。 Tier 3 是 Die 内的局部通信网络,负责 IP 模块之间的高效数据交换。
建模目标
单核内 TIU/DMA/SDMA/HAU 等 IP 模块的并行执行、同步依赖、指令发射调度。
TPUPerf 现状
- TIU-DMA 同步:
tiu_sync_id/tdma_sync_id信号级依赖 - Outstanding 控制:DMA 读/写各 128 outstanding,信号量控制并发
- DMA 分段:按 burst length 拆分大传输(
segment_by_tensor_seg) - Address Bubble:
BubbleRegionCalculator识别 stride 间隙 - IFE (指令取指):完整的指令调度单元
Tier6-Model G5 现状
- 4 引擎同步:已实现
cmd_id_dep依赖模型(TIU<->DMA 固定,SDMA/HAU 可配置) - 事件驱动调度:SimKernel heapq 事件队列
- 指令发射:
_try_issue_all()尝试所有队列 - Double-Buffering:InstructionEmitter 生成 prologue + 主循环 + epilogue 的 DMA/TIU 流水
- DMA Outstanding:已实现有限并发 (
_dma_outstanding计数器,上限从芯片配置gdma.max_outstanding读取,SG2262=128)。多条无依赖 DMA 可并发执行,outstanding 满时阻塞等待完成回调 - CDMA 引擎:
CDMAUnit(SimObject)芯片级引擎 (非 CoreSubsys 内部),8 thread + 1 共享 datapath + RR 仲裁,outstanding 128 流控,FENCE/TCREDIT_WAIT 状态机 - CDMA 延迟:
calc_cdma_latency()纯函数,FENCE=固定 startup,TRANSFER/SEND/RECEIVE=startup + data/bw - 无分段:DMA 命令不拆分
- 无 IFE:TODO
差距分析
| 项目 | 差距程度 | 精度影响 | 优先级 | 状态 |
|---|---|---|---|---|
| DMA Outstanding | 已实现 | 中 (限制 DMA 并发吞吐) | P1 | Phase 3a done |
| DMA 分段 | 中 | 低-中 | P2 | 缺失 |
| Address Bubble | 中 | 低 | P3 | 缺失 |
| IFE 调度 | 中 | 低 | P3 | 缺失 |
部署推理影响
低-中。DMA Outstanding 已实现,DMA 吞吐估算更准确。剩余缺失项 (分段、IFE) 对精度影响较小。
Tier 4: Die 全局网络 (K2K, Cake-to-Cake)
SPC 定义: T4N = Cake。Tier 4 是单 Die 的全局路由网络,连接并管理 Die 内所有 Tier 3 (IP 模块) 之间的通信。 Tier 4 尤其重要: SPC 协议将其定义为 "standalone chip top level topology"。
建模目标
Cake 之间的通信路由、延迟、带宽、仲裁和拥塞。SDMA 传输走 Tier 4 网络。
硬件实现背景: CrossRing 拓扑
SG2262 的片内网络采用 CrossRing 拓扑(非 Mesh),这是一种基于双向环的片内互联:
CrossRing 拓扑结构:
水平环 (Horizontal Ring): 每行节点形成一个双向环
垂直环 (Vertical Ring): 每列节点形成一个双向环
CrossPoint (CP): 水平/垂直环的交叉路由点,实现维度切换
Ring Bridge (RB): 同维度相邻环之间的桥接
数据流路径:
IP -> IQ (注入队列) -> Ring -> CrossPoint -> Ring -> EQ (弹出队列) -> 目标 IP
CrossRing 相比 Mesh 的关键特性:
- 环形传输:flit 沿环单向或双向流动,延迟依赖 hop 数和环占用情况
- ETag 机制:弹出优先级标记 (T0/T1/T2),防止 flit 在环上死循环
- ITag 机制:注入拥塞标记,背压上游 IP,实现逐跳流控
- req/rsp/data 三网络独立:请求、响应、数据走各自独立的环路,避免相互干扰
- Partial Multi-Channel (PMC):特定方向支持双通道,提升带宽
参考实现: CrossRing 仓库
C:\Users\DELL\Documents\code\CrossRing 是一个工业级 CrossRing NoC 仿真框架,待后续集成。
仓库规模: ~150 个 Python 源文件 + 25+ 技术设计文档
核心组件:
- KCIN (kcin/): CrossRing NoC 仿真引擎,支持 v1 (IQ/EQ/RB) 和 v2 (RingStation) 两种架构
- DCIN (dcin/): Die-to-Die 互连仿真,6-stage 通信流程(与 Tier 5 重叠)
- 分析工具 (analysis/): 带宽分析、延迟分解、链路状态热力图、FIFO 利用率
- Web 平台 (unified_web/): FastAPI + Vue3 交互式仿真和可视化
v1 架构 (IQ/EQ/RB):
IP inject_fifo
-> IPInterface (频率转换 1GHz <-> 2GHz)
-> NetworkInterface (inject/eject buffer)
-> IQ (注入仲裁)
-> Ring (双向环形链表, RingSlice 分段)
-> CrossPoint (维度切换路由)
-> Ring Bridge (同维度桥接)
-> EQ (弹出仲裁)
-> 目标 IP
v2 架构 (RingStation):
- 将 IQ/EQ/RB 统一为每节点的 RingStation 组件
- 单周期完成维度转换,减少流水线级数
流控机制:
- ETag (Ejection Tag): 优先级 T0/T1/T2,flit 到期时强制弹出,防止死锁
- ITag (Injection Tag): 拥塞信号,抑制新注入,背压上游 IP
- Tracker 资源: per-IP 的 outstanding 请求跟踪,资源耗尽时阻塞
仿真粒度: flit 级周期精确仿真,2GHz 网络域(IP 域 1GHz)
配置参数 (YAML):
NUM_ROW: 8 # 行数
NUM_COL: 8 # 列数
CYCLES_PER_NS: 2 # 2GHz = 0.5 ns/cycle
IQ_depth: 4 # 注入队列深度
EQ_depth: 4 # 弹出队列深度
ETag_T1_threshold: 2 # ETag T1 触发阈值
ITag_threshold: 8 # ITag 触发阈值
arbitration: ... # 仲裁策略配置
TPUPerf 现状
SimpleBus(简化版,已集成):
- NxM crossbar,per-master/per-slave 4 维延迟矩阵(req_rd/wr, rsp_rd/wr)
- SG2262 动态延迟:
lat = 2 * manhattan_distance(src, dst) - 读/写独立 Outstanding per-port
- Round-robin 仲裁,pending queue
- 完整的 TLM-4Phase 协议
SPC_NOC(新增,基于 CrossRing 仓库):
- Python 周期精确 CrossRing NoC 仿真(
python_noc/子模块) - 8x8 CrossRing 拓扑,flit 级传输
- ETag/ITag 流控,拥塞建模
- 可替换 SimpleBus(工厂模式切换)
- 注意: SPC_NOC 即是对 CrossRing 仓库的集成封装
Tier6-Model G5 现状
当前实现(高度简化):
- BusModel (
tier4/bus.py): 8x8 mesh,delay = manhattan_distance * 10ns/hop - 拓扑假设错误: 使用 Mesh 建模,实际硬件是 CrossRing
- 无仲裁: 不模拟多核 SDMA 争用
- 无流控: 无 ETag/ITag 机制,无 outstanding 限制
- 无拥塞: 假设带宽始终可用
- SDMA 延迟: bus delay + transfer delay 独立计算,不考虑路径争用
待集成 (后续 Phase):
- 通过
python_noc/接口对接 CrossRing 仓库的 KCIN 仿真引擎 - 将 SDMA 传输请求转化为 CrossRing 的 flit 注入
- 从 CrossRing 仿真结果提取精确的延迟和带宽统计
- 集成后的精度提升预计 30-60%(高并发 SDMA 场景)
差距分析
| 项目 | 差距程度 | 精度影响 | 优先级 | 状态 |
|---|---|---|---|---|
| CrossRing 拓扑建模 | 大 | 高 (拓扑类型错误) | P1 | 待集成 CrossRing 仓库 |
| ETag/ITag 流控 | 大 | 中-高 (拥塞场景) | P1 | CrossRing 仓库已实现 |
| req/rsp/data 三网络独立 | 大 | 中 (防死锁) | P1 | CrossRing 仓库已实现 |
| Bus 仲裁 | 大 | 中 (多核 SDMA 争用) | P1 | CrossRing 仓库已实现 |
| Outstanding 流控 | 中 | 中 | P1 | CrossRing 仓库已实现 |
| 拥塞建模 | 大 | 中 (AllReduce 核间通信) | P2 | CrossRing 仓库已实现 |
部署推理影响
中高。当前 BusModel 使用错误的拓扑类型(Mesh vs CrossRing)且无流控。多核 AllReduce/AllToAll 通过 NoC 时,仲裁和拥塞直接影响集合通信延迟。
集成 CrossRing 仓库后预期改善场景:
- 高并发 SDMA(多核同时 AllReduce):延迟低估问题得到修正
- AllToAll(MoE routing):跨 Die 通信路径精确建模
- 热点拥塞(incast):ETag/ITag 机制捕获背压传播
集成规划
接口设计 (待实现):
# 当前: 简单 BusModel
bus.get_delay_ns(src_core, dst_core, data_bytes) -> float
# 目标: CrossRing 仿真器驱动
# SDMA 请求注入 CrossRing KCIN 仿真器,
# 从仿真结果读取精确延迟
class CrossRingNoC:
def inject_request(self, src, dst, data_bytes, req_type, channel)
def step() # 推进一个仿真周期
def collect_completions() -> list[tuple[request_id, latency_ns]]
集成复杂度: 中-大(需协调两个仿真器的时间步进,适配 flit 格式)
Tier 5: Die-to-Die (D2D) 互联
建模目标
双 Die 封装内的 Die 间通信。SG2262 每颗芯片有 2 个 Die,Die 间通过 D2D 互联。
TPUPerf 现状
- D2D 作为 SimpleBus/SPC_NOC 的一个路径层级
- 延迟通过距离矩阵中的跨 Die 条目体现
- 不独立建模,融合在 NoC 拓扑中
Tier6-Model G5 现状
- D2DConfig (
tier5/d2d.py):boundary_core+extra_latency_nsdataclass - BusModel 集成 (
tier4/bus.py):get_delay_ns()中根据D2DConfig判断 src/dst 是否跨 Die,跨 Die 时额外加extra_latency_ns - 芯片配置 (
SG2262.yaml):noc.d2d.boundary_core=32, extra_latency_ns=40 - SingleChipSim (
top/single_chip.py): 创建 BusModel 时自动解析 D2D 参数 - MultiChipSim (
top/multi_chip.py): 每芯片独立的 BusModel 含 D2D 配置
差距分析
| 项目 | 差距程度 | 精度影响 | 优先级 | 状态 |
|---|---|---|---|---|
| Die 边界识别 | 已实现 | 中 (跨 Die 通信延迟更高) | P1 | Phase 3a done |
| D2D 额外延迟 | 已实现 | 中 | P1 | Phase 3a done |
| D2D 带宽约束 | 缺失 | 低-中 | P2 | 后续 |
| CMAP 冗余 D2D 流量 | 缺失 | 低 | P3 | 后续 |
部署推理影响
低-中。Die 边界已识别,跨 Die SDMA 传输自动加 40ns 额外延迟。D2D 带宽约束暂未建模,但在当前 SDMA 负载下影响较小。
Tier 6+: 芯片间互联 (C2C / b2b / r2r / p2p)
统一互联层:代码中
tier6/目录包含所有芯片间通信组件。 SPC 协议的 Tier 6 (C2C 直连) / Tier 7 (b2b 跨板) / Tier 8 (r2r 跨机架) / Tier 9 (p2p 跨 Pod) 在 G5 仿真器中共用同一套组件,通过配置参数区分不同级别的带宽和延迟。
建模目标
芯片间数据传输,是 TP/PP/DP/EP 跨芯片并行的核心通信路径。包括 CDMA 引擎、C2C Link 协议、路由、保序、Send/Receive 同步、交换机网络、多级互联路径选择。
SG2262 C2C 硬件规格 (来源: SG2262 C2C 方案文档 v1.0.1)
系统架构
- 基于 Ethernet 二层协议,最多 1024 芯片互联
- SerDes: 56Gbps / 112Gbps, 支持 x4/x8 组合
- 8 组 x4 C2C Link per chip (封装出 pin)
- 两种系统: (1) 交换机互联 (最多1024芯), (2) Ethernet 点到点互联
- 路径唯一: 不支持 ECMP 多路径算法, 严格保序
CDMA 引擎
- 每 Die 4 个 CDMA, 每芯片 (2 Die) 共 8 CDMA
- 每 CDMA 8 个 thread, 共 32 threads/die, 64 threads/chip
- 每 CDMA 64 GB/s 带宽上限, 全芯片 CDMA 总带宽 512 GB/s
- Datapath 共享: 每 CDMA 仅 1 个执行队列 (datapath), thread 通过 arbiter 仲裁
- Thread Arbiter: 只选搬运指令给 datapath, sys 指令 (fence/barrier) 每线程独立执行
- cmdq 独立: 每 thread 独立 cmdq 地址, 遵循 4KB boundary 限制
- CDMA 与 c2c_sys 解耦: 任意 CDMA 可访问任意 MAC (Ethernet port)
指令集
- transfer: 统一读写指令 (不再区分片内/片间, 通过地址区分)
- fence: 确保 fence 前所有搬运完成后才执行 fence 后搬运
- send/receive: 点对点同步传输 (tcredit 握手机制)
- In-network AllReduce: 支持 scale + reduce_sum (add/max/min 操作)
CLE 路由引擎 (Chip Address Lookup Engine)
- 输入: 10-bit chipid -> 输出: 4-bit portid
- 两层路由: 先 L2 (跨集群) 后 L1 (集群内)
- 查找表: 最多 32 项, 每项最多 4 port itlv
- itlv 粒度: 1/2/3/4/6/8/12/16 (软件可配)
- 两种 MAC ID 映射:
- DMAP (Die-level): 每 Die 一个 macid, 仅支持单层 clos (路径唯一限制)
- CMAP (Chip-level): 每 Chip 一个 macid, 支持所有拓扑 (可能有冗余 D2D 流量)
Memory Consistency
- CHS (post_write): 硬件沿路保序, MAC/交换机/芯片转发/写 Memory 全链路保序
- 保序窗口: 可配 32 个地址区域, 落入区域的写请求等待前置写全部完成
- CFS (non-post_write + fence): 软件在需要保序的位置插入 fence 指令
- CDMA 搬运指令切换不保证前置搬运完成, 由 fence 负责
- send 指令自带 fence 功能 (需收集所有 bresp 后才 retire)
Send/Receive 机制
- CDMA Thread 之间 一对一配对 (不支持一对多/多对多)
- CFS 流程: Receive 发 tcredit -> Send 收到后仲裁进入 datapath -> 搬运 -> 收集 bresp -> 发送 write_done -> Receive 收到后 retire
- CHS 流程: 与 CFS 类似, 额外通过保序窗口保证 write_done 与 write_send 顺序
- tcredit tracker: 32 深 buffer per CDMA, chipid + cdmaid 选择
- send descriptor 需指定 receive chip/cdma thread, 反之亦然
拓扑支持
- L1 (集群内, <=32 chips): all2all / torus / ring / mesh / cube
- L2 (跨集群): clos 交换机
- 组合: all2all+clos, clos+clos, 低成本变体 (L2 单轨)
- cube: 低成本服务器形态, 最多 8 芯互联
重要限制
- 路径唯一 (不支持 ECMP, 严格保序)
- c2c read 带宽代价大 (软件尽量用 write 替代)
- send/receive 只支持点对点
- AXI 4KB boundary + MAC 1.5KB MTU 限制报文大小
- 不支持 c2c 读 atomic (只支持 atomic 写)
- 芯片转发在 DMAP 方案下不支持
Switch 建模参考
Switch 建模(docs/design/switch-modeling/):
- 12 级流水线:PHY_RX -> PARSER -> INGRESS_MATCH -> VOQ+iSLIP -> XBAR -> EGRESS -> PHY_TX
- Zero-load 延迟:30ns + serialization
- VOQ (Virtual Output Queuing):消除 HOL blocking
- iSLIP 调度:2 次迭代 -> 99% 吞吐
- 共享缓冲池:Dynamic Threshold 算法
- ECN 标记:kmin=50%, kmax=80%
- PFC:per-priority pause frames
TPUPerf 现状
- CDMA 框架刚开始 (SEND/RECV 基础结构)
- 无完整的 C2C 通信模型
- 无交换机/板级建模
- 设计文档在 docs 中
Tier6-Model G5 现状 (Phase 1+2+3a 已实现)
已实现 (Phase 1 -- 2026-03-02, 核心链路打通):
- C2CPhyLink (
tier6/c2c_link.py): 单向物理链路, 序列化延迟 + 链路争用 (_busy_until_ns), 完成后回调 RX 端 PAXI - MultiChipSim (
top/multi_chip.py): 多芯片顶层组装, 全链路布线, 自动展开 collective 通信 - Ring AllReduce (
collective/allreduce.py): 2*(N-1) 步展开为 CDMACommand (TRANSFER) - expand_collectives (
collective/__init__.py): CommOp -> CDMACommand 统一入口 - CDMACommand/MultiChipProgram (
program.py): 数据结构, CommOp 扩展 - G5ResultAdapter: 支持 CDMA 记录归类到通信时间
已实现 (Phase 2 -- 2026-03-02, 精确仲裁 + 协议精化):
- CDMAUnit (
tier3/cdma.py): 8 thread + 1 共享 datapath, RR 仲裁, thread 状态机 (IDLE/READY/EXECUTING/FENCE_WAIT/TCREDIT_WAIT), outstanding 128 流控 - PAXIBridge (
tier6/paxi.py): 3 有效 VC (REQ/RSP/MUL) + 加权 RR 仲裁, CBFC per-VC credit 流控, PFC 水位线背压 (互斥配置), OST 512, 报文分段 (1344B) - SwitchModel (
tier6/switch.py): VOQ + iSLIP 2 迭代调度, Dynamic Threshold 缓冲管理, ECN 概率标记 (kmin/kmax), PFC 逐跳背压 - Send/Receive tcredit (
collective/p2p.py+cdma.py): RECEIVE 发 tcredit -> SEND 等待 -> 数据传输 -> write_done 回执, 完整握手协议 - MultiChipSim Phase 2 (
top/multi_chip.py): tcredit/write_done 消息路由, 可选 Switch 集成 (PAXI->C2C->Switch->PAXI), PFC 回调布线 (Switch->PAXI->CDMA)
已实现 (Phase 3a -- 2026-03-02, 多级互联 + All2All):
- 多级链路解析 (
top/multi_chip.py):_resolve_link_level()根据chip_board_map/chip_rack_map判断芯片对的互联级别 (c2c/b2b/r2r),每个级别使用独立的C2CLinkConfig(不同带宽/延迟) - Pairwise All2All (
collective/alltoall.py): N-1 步, 每步每芯片发一个 chunk (data_bytes/N), 解锁 MoE expert routing 多芯片仿真 - Tier 7/8/9 合并到 Tier 6+: SwitchModel 从
tier7/移到tier6/, 删除空的tier7//tier8//tier9/目录。各级互联共用同一套组件
Phase 2+3a 简化 (后续 Phase 精化):
- 不区分 CHS/CFS 保序, 统一 fence (Phase 3b: Memory Consistency)
- 不做 NCHW 张量分段, 直接用 data_bytes (Phase 3b: 4KB AXI boundary)
- 无 CLE 路由, 全连接拓扑 (Phase 3b: chipid->portid 查表)
- 无 In-network AllReduce (Phase 3b: 硬件 reduce)
- 每芯片 1 个 CDMAUnit, 非 4 CDMA/Die (Phase 3b: CLE Router 分流)
- ECN 仅标记, 不建模 CNP 反馈降速 (Phase 3b)
仍有:
- Math 模型有公式: alpha-beta 模型,
c2c_bandwidth_gbps,c2c_latency_us(独立于 G5)
差距分析
| 项目 | 差距程度 | 精度影响 | 优先级 | 状态 |
|---|---|---|---|---|
| CDMA 引擎模型 (datapath+arbiter+thread) | 已实现 | 极高 | P0 | Phase 1+2 done (8 thread + RR 仲裁 + 状态机) |
| PAXI 行为建模 (TX buffer+VC 仲裁+CBFC/PFC+OST) | 已实现 | 极高 | P0 | Phase 1+2 done (3 VC 加权 RR + CBFC + PFC + OST 512) |
| MultiChipSim 框架 | 已实现 | 极高 | P0 | Phase 1+2+3a done (全链路 + 多级互联) |
| C2C Link 物理层 | 已实现 | 高 | P0 | Phase 1 done (序列化延迟 + 链路争用) |
| 集合通信 (AllReduce + P2P + All2All) | 已实现 | 高 | P0 | Phase 1+2+3a done (Ring AllReduce + P2P tcredit + Pairwise All2All) |
| Send/Receive 同步 (tcredit 握手) | 已实现 | 高 (PP stage 间传输) | P1 | Phase 2 done |
| CDMA 多 thread datapath 仲裁 | 已实现 | 中 | P1 | Phase 2 done |
| PAXI VC 仲裁 + PFC 背压 | 已实现 | 中-高 | P1 | Phase 2 done |
| Switch VOQ/iSLIP/ECN/PFC | 已实现 | 中 | P1 | Phase 2 done |
| 多级链路 (c2c/b2b/r2r) | 已实现 | 中 | P1 | Phase 3a done (chip_board_map/chip_rack_map 路径解析) |
| CLE 路由 (chipid -> portid) | 缺失 | 高 | P1 | Phase 3b |
| Memory Consistency (CHS/CFS) | 缺失 | 中-高 (保序开销) | P1 | Phase 3b |
| In-network AllReduce (硬件 reduce) | 缺失 | 中-高 (DP 性能关键) | P1 | Phase 3b |
| Go-Back-N 重传 (丢包恢复) | 缺失 | 低-中 (正常场景少见) | P2 | Phase 3b |
关于 PAXI: PAXI 不是简单的延迟参数。它是 AXI 协议的跨芯片透明延伸 (AXI Bridge),从上层看远端芯片内存和本地 AXI 地址空间无异。但 PAXI 内部有影响性能的关键行为:
- TX Buffer 积攒/发出: AW+W 必须收齐 burst 才发, AR/B 最多打包 16 事务 (水位/超时/DA 切换触发)
- 8 VC 通道仲裁: REQ(VC0/VC2) / RSP(VC1/VC3) 分离防死锁, Channel Weight 加权轮询
- CBFC/PFC 流控背压: credit 不足阻塞 VC, 水位线触发 PFC -> 背压向上游 CDMA 传播
- OST 限制: TYPE1 最多 512 outstanding, 满时新请求被阻塞
- 报文封装效率: 最大 Payload 1344B, 报头开销 ~50B (Standard) 影响有效带宽
部署推理影响
Phase 1 之前: 极高。C2C/CDMA 完全缺失, 无法仿真任何多芯片场景。
Phase 1 之后: 中高。核心链路已打通, 可运行多芯片 TP/PP 仿真。但缺少精确仲裁。
Phase 2 之后: 中。CDMA 多 thread 仲裁、PAXI VC+PFC、Switch VOQ+iSLIP+ECN+PFC、Send/Receive tcredit 均已实现。仲裁争用和背压行为已捕获。
Phase 3a 之后: 低-中。多级互联路径 (c2c/b2b/r2r) 已支持跨板/跨机架仿真。All2All 解锁 MoE 多芯片场景。剩余缺失项 (CLE 路由、Memory Consistency、In-network AllReduce) 对精度影响可控。
实现状态
Phase 1 已完成 (2026-03-02) -- 核心链路打通, 多芯片仿真可运行
已实现的数据流路径:
CDMAEngine (tier3) --tx--> PAXIBridge (tier6) --> C2CPhyLink (tier6) --> PAXIBridge (RX) --> CDMAEngine (完成回调)
背压路径 (无轮询, 全事件驱动):
CDMA outstanding 满 -> 阻塞, 等 notify_credit_return()
PAXI CBFC credit=0 -> 入队, 等 on_credit_return()
PAXI OST 满 -> 入队, 等 on_credit_return()
C2C Link 忙 -> 排队等 busy_until_ns
已实现组件:
CDMAUnit(SimObject): 8 thread + RR 仲裁 + 状态机 + outstanding 128, FENCE/TCREDIT_WAITC2CPhyLink(SimObject): 序列化延迟 + 链路争用PAXIBridge(SimObject): 3 VC 加权 RR + CBFC credit + PFC 水位线 + OST 512 + 报文分段 (1344B)SwitchModel(SimObject): VOQ + iSLIP 2 迭代 + Dynamic Threshold + ECN + PFCMultiChipSim: 全链路组装 + collective 展开 + tcredit/write_done 消息路由 + Switch 集成expand_ring_allreduce(): Ring AllReduce -> CDMACommand (TRANSFER)expand_p2p(): P2P -> paired SEND/RECEIVE + tcredit 握手
Phase 2 已完成 (2026-03-02) -- 精确仲裁 + 协议精化
已实现:
CDMAUnit 精化:
- [done] 8 thread + 1 共享 datapath, RR 仲裁
- [done] 状态机: IDLE/READY/EXECUTING/FENCE_WAIT/TCREDIT_WAIT
- [done] SEND 等待 tcredit, RECEIVE 发送 tcredit + 等待 write_done
PAXIBridge 精化:
- [done] 3 有效 VC (REQ/RSP/MUL) + 加权 RR 仲裁
- [done] CBFC per-VC credit 流控
- [done] PFC 水位线背压 (与 CBFC 互斥配置)
- [done] OST 512, 报文分段 (1344B)
SwitchModel 精化:
- [done] VOQ + iSLIP 2 迭代调度
- [done] 共享缓冲池 + Dynamic Threshold
- [done] ECN 概率标记 (kmin/kmax)
- [done] PFC 逐跳背压
Send/Receive tcredit:
- [done] RECEIVE -> tcredit -> SEND -> data -> write_done 完整握手
- [done] MultiChipSim 消息路由 (regex 解析 tcredit/write_done)
MultiChipSim Phase 2:
- [done] 可选 Switch 集成 (PAXI->C2C->Switch->PAXI)
- [done] PFC 回调布线 (Switch->PAXI)
Phase 3a 已完成 (2026-03-02) -- 多级互联 + All2All + Die 边界 + DMA Outstanding
已实现:
DMA Outstanding (Tier 3):
- [done] CoreSubsys._dma_outstanding 计数器 (替代 _dma_busy flag)
- [done] 上限从芯片配置 gdma.max_outstanding 读取 (SG2262=128)
- [done] 多条无依赖 DMA 并发执行, outstanding 满时阻塞
- [done] 完成时 out-of-order 更新 tdma_sync_id (取 max)
Pairwise All2All (Collective):
- [done] expand_pairwise_alltoall(): N-1 步, 每步每芯片发 1 chunk
- [done] collective/__init__.py 添加 "alltoall" 分发
Die 边界建模 (Tier 5):
- [done] D2DConfig(boundary_core, extra_latency_ns) dataclass
- [done] BusModel.get_delay_ns() 跨 Die 自动加额外延迟
- [done] SG2262.yaml noc.d2d: boundary_core=32, extra_latency_ns=40
多级链路解析 (Tier 6+):
- [done] _resolve_link_level(src, dst, chip_board_map, chip_rack_map)
- [done] 不同级别 (c2c/b2b/r2r) 使用独立 C2CLinkConfig
- [done] 拓扑配置 chip_board_map / chip_rack_map 映射
架构重组:
- [done] SwitchModel 从 tier7/ 移到 tier6/
- [done] 删除空的 tier7/ / tier8/ / tier9/ 目录
- [done] 所有组件路径统一到 tier6/ 下
Phase 3b 目标 -- 高级特性
InNetworkReduce:
- 硬件 reduce: add/max/min @ fp32/fp16/bf16
- 交换机侧 reduce (减少网络流量)
Memory Consistency:
- CHS 保序窗口
- CFS fence 同步开销
集合通信扩展:
- Tree AllReduce
- Hierarchical AllReduce
路由:
- CLE Router (chipid->portid, L1/L2 两层路由)
综合优先级排序
按对部署推理仿真的影响排序:
P0 (阻塞性) -- Phase 1 已完成
Tier 6+: CDMA Engine-- [done] CDMAEngine SimObject, 固定延迟 arbiter, outstanding 128Tier 6+: PAXI 行为建模-- [done] PAXIBridge, CBFC credit + OST 512 + 报文分段 (简化版, 无 VC/PFC)Tier 6+: C2C Link 物理层-- [done] C2CPhyLink, 序列化延迟 + 链路争用Tier 6+: MultiChipSim 框架-- [done] 全链路布线 + collective 展开Tier 6+: Switch 基础模型-- [done] SwitchModel, 转发延迟 + 端口争用 (简化版, 无 VOQ/iSLIP)Tier 6+: 集合通信算法-- [done] Ring AllReduce + P2P 展开为 CDMACommand
P1 (精度提升 - 影响 10-30%) -- Phase 2+3a 已完成 + Phase 3b 剩余
Tier 6+: Send/Receive-- [done] RECEIVE->tcredit->SEND->data->write_done 完整握手Tier 6+: CDMA 多 thread datapath 仲裁-- [done] 8 thread RR + FENCE_WAIT/TCREDIT_WAIT 状态机Tier 6+: PAXI VC 仲裁 + PFC 背压-- [done] 3 VC 加权 RR + CBFC + PFC 水位线Tier 6+: Switch VOQ+iSLIP+ECN+PFC-- [done] VOQ + iSLIP 2 迭代 + DT + ECN + PFCTier 6+: All2All 集合通信-- [done] Pairwise All2All 展开 (MoE expert routing)Tier 6+: 多级链路 (c2c/b2b/r2r)-- [done] chip_board_map/chip_rack_map 路径解析Tier 5: Die 边界建模-- [done] D2DConfig + BusModel 跨 Die 额外延迟Tier 3: DMA Outstanding 控制-- [done] 有限并发, max_outstanding 从配置读取- Tier 6+: CLE Router -- chipid -> portid 两层路由, itlv 策略
- Tier 6+: Memory Consistency -- CHS 保序窗口 / CFS fence 同步开销
- Tier 6+: In-network AllReduce -- 硬件 reduce (add/max/min), 减少网络流量
- Tier 4: CrossRing NoC 集成 -- 接入 CrossRing 仓库 (KCIN),替换 BusModel,精确建模 CrossRing 拓扑 + ETag/ITag + 三网络
P2 (精度微调 - 影响 5-15%)
- Tier 6+: 报文分片开销 -- 4KB AXI boundary + 1.5KB MTU
- Tier 4: NoC 拥塞建模 -- Cake 间带宽争用
- Tier 3: TIU 流水线细化 -- 多级延迟 vs 单一 init_cycles
- Tier 3: LMEM bank + DDR 时序 -- 存储访问精度
P3 (锦上添花)
- Tier 3: Address Bubble -- Stride 间隙优化
- Tier 4: Python NoC -- flit 级仿真 (简化模型足够)
实现路线图
Phase 1 (核心打通 - P0) -- [已完成 2026-03-02]:
|- [done] CDMAEngine SimObject (固定延迟 arbiter, outstanding 128 流控, FENCE)
|- [done] C2CPhyLink (序列化延迟 + 链路争用)
|- [done] PAXIBridge (CBFC credit 流控 + OST 512 + 报文分段 + TX 排队背压)
|- [done] SwitchModel 简化版 (转发延迟 + 出口端口争用)
|- [done] MultiChipSim 框架 (全链路布线 + collective 展开)
|- [done] Ring AllReduce 展开 (2*(N-1) 步 -> CDMACommand)
|- [done] P2P 展开 (SEND/RECEIVE)
|- [done] CDMACommand / MultiChipProgram / CommOp 数据结构
|- [done] G5ResultAdapter 支持 CDMA 记录
\- [done] 芯片配置 CDMA 引擎 (SG2262.yaml + _template.yaml)
Phase 1 简化项 (后续精化):
- CDMA thread arbiter 用固定延迟, 不精确仲裁
- 不区分 CHS/CFS 保序, 统一 fence
- 不做 NCHW 张量分段, 直接用 data_bytes
- PAXI 无 VC 仲裁, 简化为单通道
- Switch 无 VOQ/iSLIP/ECN/PFC
- 无 CLE 路由, 全连接拓扑
- 无 Send/Receive tcredit 握手
Phase 2 (精确仲裁 + 协议精化 - P1) -- [已完成 2026-03-02]:
|- [done] CDMAUnit 多 thread datapath 仲裁 (8 thread + RR + 状态机) (Tier 3)
|- [done] PAXIBridge VC 仲裁 + PFC 背压 (3 VC 加权 RR + CBFC + PFC 水位线) (Tier 6+)
|- [done] Send/Receive tcredit 握手 (RECEIVE->tcredit->SEND->data->write_done) (Tier 6+)
|- [done] SwitchModel VOQ+iSLIP+DT+ECN+PFC (完整行为建模) (Tier 6+)
|- [done] MultiChipSim Phase 2 (tcredit/write_done 路由 + Switch 集成 + PFC 布线)
\- [done] P2P tcredit 展开 (paired SEND/RECEIVE + thread 分配)
Phase 2 简化项 (后续精化):
- 不区分 CHS/CFS 保序, 统一 fence (Phase 3b: Memory Consistency)
- 不做 NCHW 张量分段, 直接用 data_bytes (Phase 3b: 4KB AXI boundary)
- 无 CLE 路由, 全连接拓扑 (Phase 3b: chipid->portid 查表)
- 无 In-network AllReduce (Phase 3b: 硬件 reduce)
- 每芯片 1 个 CDMAUnit, 非 4 CDMA/Die (Phase 3b: CLE Router 分流)
- ECN 仅标记, 不建模 CNP 反馈降速 (Phase 3b)
Phase 3a (多级互联 + 功能扩展) -- [已完成 2026-03-02]:
|- [done] DMA Outstanding 有限并发 (Tier 3, max_outstanding 从配置读取)
|- [done] Pairwise All2All 集合通信 (Collective, MoE expert routing)
|- [done] Die 边界建模 (Tier 5, D2DConfig + BusModel 跨 Die 额外延迟)
|- [done] 多级链路解析 (Tier 6+, c2c/b2b/r2r 路径按 chip_board_map/chip_rack_map 选择)
\- [done] 架构重组 (Tier 7/8/9 合并到 Tier 6+, SwitchModel 移到 tier6/)
Phase 3b (剩余 P1):
|- CLE Router (chipid->portid, L1/L2 两层路由) (Tier 6+)
|- Memory Consistency (CHS 保序窗口 / CFS fence) (Tier 6+)
\- In-network AllReduce (硬件 reduce) (Tier 6+)
Phase 3c (Tier 4 CrossRing 集成 - 中-大工程):
|- CrossRing KCIN 仿真器接入 (替换 BusModel)
| - 接口适配: SDMA 请求 <-> CrossRing flit 注入/弹出
| - 时间步进协调: SimKernel <-> KCIN 仿真周期同步
| - 配置对接: SG2262 NoC 参数 -> KCIN YAML 配置
|- CrossRing 拓扑正确建模 (替换 Mesh)
|- ETag/ITag 流控集成
\- req/rsp/data 三网络建模
Phase 4 (微架构精度 - P2/P3):
|- 报文分片开销 (4KB + 1.5KB MTU) (Tier 6+)
|- NoC 拥塞 (Tier 4)
|- TIU 多级流水 (Tier 3)
\- LMEM Bank + DDR 时序 (Tier 3)
附录:参考参数
SG2262 关键参数
| 层级 | 参数 | 值 | 来源 |
|---|---|---|---|
| Tier 3 | TIU init cycles | 44 | G5 tiu.py |
| Tier 3 | Cube M/K/N | 16/32/8 | chip config |
| Tier 3 | LMEM per core | 2048 KB | chip config |
| Tier 3 | GDMA BW/startup | 68 GB/s, 100 ns | G5 dma.py |
| Tier 3 | SDMA BW/startup | 64 GB/s, 120 ns | G5 sdma.py |
| Tier 3 | DMA outstanding | 128 (max_outstanding) | chip config + G5 core_subsys.py |
| Tier 4 | NoC mesh (K2K) | 8x8, 10 ns/hop | G5 bus.py |
| Tier 5 | D2D boundary_core | 32 (core 0-31=Die0, 32-63=Die1) | SG2262.yaml noc.d2d |
| Tier 5 | D2D extra_latency | 40 ns | SG2262.yaml noc.d2d |
| Tier 6+ | C2C link | 8 组 x4, 112Gbps/lane | SG2262 C2C 方案 |
| Tier 6+ | C2C total BW | 448 GB/s (112G) | SG2262 C2C 方案 |
| Tier 6+ | C2C AXI latency | 150 ns (AXI-to-AXI) | PAXI docs |
| Tier 6+ | MAC MTU | 1.5 KB | SG2262 C2C 方案 |
| Tier 6+ | AXI boundary | 4 KB | SG2262 C2C 方案 |
| Tier 6+ | CDMA per Die | 4x, 64 GB/s each | SG2262 C2C 方案 |
| Tier 6+ | CDMA threads | 8 per CDMA, 1 datapath | SG2262 C2C 方案 |
| Tier 6+ | CDMA total threads | 32/die, 64/chip | SG2262 C2C 方案 |
| Tier 6+ | tcredit tracker | 32 深 per CDMA | SG2262 C2C 方案 |
| Tier 6+ | CLE 查找表 | 32 项, 4 port/项 | SG2262 C2C 方案 |
| Tier 6+ | macid 位宽 | 10 bit (最多1024芯) | SG2262 C2C 方案 |
| Tier 6+ | L1 Max cluster | 32 chips | SG2262 C2C 方案 |
| Tier 6+ | Memory Consistency | CHS (post_write) / CFS (fence) | SG2262 C2C 方案 |
| Tier 6+ | CDMA outstanding | 512 (TYPE1) | PAXI docs |
| Tier 6+ | Switch pipeline | 30 ns (zero-load) | switch-modeling docs |
| Tier 6+ | Switch buffer | 16-64 MB | switch-modeling docs |
| Tier 6+ | b2b/r2r bandwidth | topology config | interconnect.links.b2b/r2r |
TPUPerf vs Tier6 G5 功能矩阵
| 功能 | TPUPerf | Tier6 G5 | 状态 |
|---|---|---|---|
| TIU MM2 | 5 级流水 | init+compute 公式 | 简化 |
| TIU 多指令 | 全覆盖 | MM2_NN only | 缺失 |
| Bank Conflict | 完整 | 无 | 缺失 |
| GDMA 分段 | 按 burst 拆分 | 无 | 缺失 |
| DMA Outstanding | R/W 各 128 | max_outstanding 计数器 (128) | Phase 3a 已实现 |
| LMEM 时序 | R/W 延迟 + bank | 容量检查 | 缺失 |
| DDR 时序 | PHY + NALI | DMA 公式包含 | 缺失 |
| GS Cache | 4-way LRU | 无 | 缺失 |
| SimpleBus/SPC_NOC | CrossRing flit 级仿真 (SPC_NOC = CrossRing 仓库封装) | Manhattan * 10ns (Mesh 拓扑假设错误) | 待集成 CrossRing 仓库 |
| ETag/ITag 流控 | ETag T0/T1/T2 + ITag 注入抑制 | 无 | CrossRing 仓库已实现,待集成 |
| req/rsp/data 三网络 | 独立网络防死锁 | 无 | CrossRing 仓库已实现,待集成 |
| Die 边界 (D2D) | NoC 距离矩阵 | D2DConfig + BusModel 跨 Die 延迟 | Phase 3a 已实现 |
| 4 引擎同步 | sync_id 信号 | cmd_id_dep 依赖 | 已实现 |
| 事件驱动 | SystemC | SimKernel heapq | 已实现 |
| Double-Buffering | 手动编排 | InstructionEmitter | 已实现 |
| CDMA | 基础框架 | CDMAUnit (8 thread + RR 仲裁 + 状态机 + ost 128) | Phase 1+2 已实现 |
| PAXI | 无 | PAXIBridge (3 VC 加权 RR + CBFC + PFC + OST 512) | Phase 1+2 已实现 |
| C2C Link | 无 | C2CPhyLink (序列化+争用) | Phase 1 已实现 |
| Switch | 无 | SwitchModel (VOQ + iSLIP + DT + ECN + PFC) | Phase 1+2 已实现 |
| Ring AllReduce | 无 | expand_ring_allreduce() (TRANSFER) | Phase 1 已实现 |
| Pairwise All2All | 无 | expand_pairwise_alltoall() (MoE routing) | Phase 3a 已实现 |
| P2P | 无 | expand_p2p() (SEND/RECEIVE + tcredit) | Phase 1+2 已实现 |
| Send/Receive | 无 | tcredit 握手 (RECEIVE->tcredit->SEND->write_done) | Phase 2 已实现 |
| MultiChip | 设计中 | MultiChipSim (全链路 + 消息路由 + Switch + 多级链路) | Phase 1+2+3a 已实现 |
| 多级互联 (b2b/r2r) | 无 | chip_board_map/chip_rack_map 路径解析 | Phase 3a 已实现 |
| CLE 路由 | 无 | 无 | 两边都缺 |
| Memory Consistency | 无 | 无 | 两边都缺 |
| In-network AllReduce | 无 | 无 | 两边都缺 |
| Result Adapter | 有 | SimRecord->Metrics | 已实现 |
| 统计框架 | 有 (内部) | StatGroup (公共) | 已实现 |