跳到主要内容

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 BubbleBubbleRegionCalculator 识别 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 并发吞吐)P1Phase 3a done
DMA 分段低-中P2缺失
Address BubbleP3缺失
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 流控中-高 (拥塞场景)P1CrossRing 仓库已实现
req/rsp/data 三网络独立中 (防死锁)P1CrossRing 仓库已实现
Bus 仲裁中 (多核 SDMA 争用)P1CrossRing 仓库已实现
Outstanding 流控P1CrossRing 仓库已实现
拥塞建模中 (AllReduce 核间通信)P2CrossRing 仓库已实现

部署推理影响

中高。当前 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_ns dataclass
  • 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 通信延迟更高)P1Phase 3a done
D2D 额外延迟已实现P1Phase 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)已实现极高P0Phase 1+2 done (8 thread + RR 仲裁 + 状态机)
PAXI 行为建模 (TX buffer+VC 仲裁+CBFC/PFC+OST)已实现极高P0Phase 1+2 done (3 VC 加权 RR + CBFC + PFC + OST 512)
MultiChipSim 框架已实现极高P0Phase 1+2+3a done (全链路 + 多级互联)
C2C Link 物理层已实现P0Phase 1 done (序列化延迟 + 链路争用)
集合通信 (AllReduce + P2P + All2All)已实现P0Phase 1+2+3a done (Ring AllReduce + P2P tcredit + Pairwise All2All)
Send/Receive 同步 (tcredit 握手)已实现高 (PP stage 间传输)P1Phase 2 done
CDMA 多 thread datapath 仲裁已实现P1Phase 2 done
PAXI VC 仲裁 + PFC 背压已实现中-高P1Phase 2 done
Switch VOQ/iSLIP/ECN/PFC已实现P1Phase 2 done
多级链路 (c2c/b2b/r2r)已实现P1Phase 3a done (chip_board_map/chip_rack_map 路径解析)
CLE 路由 (chipid -> portid)缺失P1Phase 3b
Memory Consistency (CHS/CFS)缺失中-高 (保序开销)P1Phase 3b
In-network AllReduce (硬件 reduce)缺失中-高 (DP 性能关键)P1Phase 3b
Go-Back-N 重传 (丢包恢复)缺失低-中 (正常场景少见)P2Phase 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_WAIT
  • C2CPhyLink(SimObject): 序列化延迟 + 链路争用
  • PAXIBridge(SimObject): 3 VC 加权 RR + CBFC credit + PFC 水位线 + OST 512 + 报文分段 (1344B)
  • SwitchModel(SimObject): VOQ + iSLIP 2 迭代 + Dynamic Threshold + ECN + PFC
  • MultiChipSim: 全链路组装 + 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 已完成

  1. Tier 6+: CDMA Engine -- [done] CDMAEngine SimObject, 固定延迟 arbiter, outstanding 128
  2. Tier 6+: PAXI 行为建模 -- [done] PAXIBridge, CBFC credit + OST 512 + 报文分段 (简化版, 无 VC/PFC)
  3. Tier 6+: C2C Link 物理层 -- [done] C2CPhyLink, 序列化延迟 + 链路争用
  4. Tier 6+: MultiChipSim 框架 -- [done] 全链路布线 + collective 展开
  5. Tier 6+: Switch 基础模型 -- [done] SwitchModel, 转发延迟 + 端口争用 (简化版, 无 VOQ/iSLIP)
  6. Tier 6+: 集合通信算法 -- [done] Ring AllReduce + P2P 展开为 CDMACommand

P1 (精度提升 - 影响 10-30%) -- Phase 2+3a 已完成 + Phase 3b 剩余

  1. Tier 6+: Send/Receive -- [done] RECEIVE->tcredit->SEND->data->write_done 完整握手
  2. Tier 6+: CDMA 多 thread datapath 仲裁 -- [done] 8 thread RR + FENCE_WAIT/TCREDIT_WAIT 状态机
  3. Tier 6+: PAXI VC 仲裁 + PFC 背压 -- [done] 3 VC 加权 RR + CBFC + PFC 水位线
  4. Tier 6+: Switch VOQ+iSLIP+ECN+PFC -- [done] VOQ + iSLIP 2 迭代 + DT + ECN + PFC
  5. Tier 6+: All2All 集合通信 -- [done] Pairwise All2All 展开 (MoE expert routing)
  6. Tier 6+: 多级链路 (c2c/b2b/r2r) -- [done] chip_board_map/chip_rack_map 路径解析
  7. Tier 5: Die 边界建模 -- [done] D2DConfig + BusModel 跨 Die 额外延迟
  8. Tier 3: DMA Outstanding 控制 -- [done] 有限并发, max_outstanding 从配置读取
  9. Tier 6+: CLE Router -- chipid -> portid 两层路由, itlv 策略
  10. Tier 6+: Memory Consistency -- CHS 保序窗口 / CFS fence 同步开销
  11. Tier 6+: In-network AllReduce -- 硬件 reduce (add/max/min), 减少网络流量
  12. Tier 4: CrossRing NoC 集成 -- 接入 CrossRing 仓库 (KCIN),替换 BusModel,精确建模 CrossRing 拓扑 + ETag/ITag + 三网络

P2 (精度微调 - 影响 5-15%)

  1. Tier 6+: 报文分片开销 -- 4KB AXI boundary + 1.5KB MTU
  2. Tier 4: NoC 拥塞建模 -- Cake 间带宽争用
  3. Tier 3: TIU 流水线细化 -- 多级延迟 vs 单一 init_cycles
  4. Tier 3: LMEM bank + DDR 时序 -- 存储访问精度

P3 (锦上添花)

  1. Tier 3: Address Bubble -- Stride 间隙优化
  2. 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 3TIU init cycles44G5 tiu.py
Tier 3Cube M/K/N16/32/8chip config
Tier 3LMEM per core2048 KBchip config
Tier 3GDMA BW/startup68 GB/s, 100 nsG5 dma.py
Tier 3SDMA BW/startup64 GB/s, 120 nsG5 sdma.py
Tier 3DMA outstanding128 (max_outstanding)chip config + G5 core_subsys.py
Tier 4NoC mesh (K2K)8x8, 10 ns/hopG5 bus.py
Tier 5D2D boundary_core32 (core 0-31=Die0, 32-63=Die1)SG2262.yaml noc.d2d
Tier 5D2D extra_latency40 nsSG2262.yaml noc.d2d
Tier 6+C2C link8 组 x4, 112Gbps/laneSG2262 C2C 方案
Tier 6+C2C total BW448 GB/s (112G)SG2262 C2C 方案
Tier 6+C2C AXI latency150 ns (AXI-to-AXI)PAXI docs
Tier 6+MAC MTU1.5 KBSG2262 C2C 方案
Tier 6+AXI boundary4 KBSG2262 C2C 方案
Tier 6+CDMA per Die4x, 64 GB/s eachSG2262 C2C 方案
Tier 6+CDMA threads8 per CDMA, 1 datapathSG2262 C2C 方案
Tier 6+CDMA total threads32/die, 64/chipSG2262 C2C 方案
Tier 6+tcredit tracker32 深 per CDMASG2262 C2C 方案
Tier 6+CLE 查找表32 项, 4 port/项SG2262 C2C 方案
Tier 6+macid 位宽10 bit (最多1024芯)SG2262 C2C 方案
Tier 6+L1 Max cluster32 chipsSG2262 C2C 方案
Tier 6+Memory ConsistencyCHS (post_write) / CFS (fence)SG2262 C2C 方案
Tier 6+CDMA outstanding512 (TYPE1)PAXI docs
Tier 6+Switch pipeline30 ns (zero-load)switch-modeling docs
Tier 6+Switch buffer16-64 MBswitch-modeling docs
Tier 6+b2b/r2r bandwidthtopology configinterconnect.links.b2b/r2r

TPUPerf vs Tier6 G5 功能矩阵

功能TPUPerfTier6 G5状态
TIU MM25 级流水init+compute 公式简化
TIU 多指令全覆盖MM2_NN only缺失
Bank Conflict完整缺失
GDMA 分段按 burst 拆分缺失
DMA OutstandingR/W 各 128max_outstanding 计数器 (128)Phase 3a 已实现
LMEM 时序R/W 延迟 + bank容量检查缺失
DDR 时序PHY + NALIDMA 公式包含缺失
GS Cache4-way LRU缺失
SimpleBus/SPC_NOCCrossRing 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 依赖已实现
事件驱动SystemCSimKernel heapq已实现
Double-Buffering手动编排InstructionEmitter已实现
CDMA基础框架CDMAUnit (8 thread + RR 仲裁 + 状态机 + ost 128)Phase 1+2 已实现
PAXIPAXIBridge (3 VC 加权 RR + CBFC + PFC + OST 512)Phase 1+2 已实现
C2C LinkC2CPhyLink (序列化+争用)Phase 1 已实现
SwitchSwitchModel (VOQ + iSLIP + DT + ECN + PFC)Phase 1+2 已实现
Ring AllReduceexpand_ring_allreduce() (TRANSFER)Phase 1 已实现
Pairwise All2Allexpand_pairwise_alltoall() (MoE routing)Phase 3a 已实现
P2Pexpand_p2p() (SEND/RECEIVE + tcredit)Phase 1+2 已实现
Send/Receivetcredit 握手 (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 AdapterSimRecord->Metrics已实现
统计框架有 (内部)StatGroup (公共)已实现