跳到主要内容

TPUPerf 仿真引擎代码分析

本目录对 Sophgo TPUPerf (SG2260/SG2262) 的 SystemC 周期精确仿真引擎进行深度代码分析,分三篇文档覆盖不同层次。

文档索引

文档内容核心源文件
01-system-architecture.md系统架构总览:模块层次、时钟域、TIU-DMA 同步信号、仿真主流程、Profilertpu_subsys.h, tpuManyCore.*
02-single-chip-internals.md单芯片内部详解:IFE 取指引擎、TIU 5 级流水线、地址生成与 Bank 冲突、WDC 存储控制、GDMA 数据通路ip/include/ife/, ip/include/tiu_module/, ip/include/wdc/
03-noc-and-multi-chip.mdNoC 与多芯片通信:SimpleBus 片内总线、NoC Mesh 路由器、7 种路由算法、RN/SN 协议、C2C/CDMA 跨芯片noc/, c2c.h, cdma.h, simple_bus.h

架构图索引

文件内容
01-system-architecture.drawioPage 1: 模块层次与关键信号连接 / Page 2: TIU-DMA 同步信号流

TPUPerf 代码库结构速查

TPUPerf/
├── framework/ # 仿真框架层
│ ├── include/
│ │ ├── profiler.h # 性能数据收集器
│ │ ├── instruction.h # 指令上下文 (~80 字段)
│ │ ├── parser.h # 指令文件解析器
│ │ └── Brahma_profiler.h # Brahma 格式 Profiler
│ └── src/

├── ip/ # IP 核心模块
│ ├── include/
│ │ ├── ife/ # IFE 指令取指引擎
│ │ │ ├── ife.h # 取指解码主模块 (8 级流水)
│ │ │ ├── ife_master.h # AXI/TXI 接口控制
│ │ │ └── move_module.h # 向量寄存器搬运模块
│ │ ├── tiu_module/ # TIU 计算引擎内部
│ │ │ ├── tiu_module_top.h # 向量引擎顶层
│ │ │ ├── tiu_module_cube_top.h # Cube 引擎顶层
│ │ │ ├── dpc_des.h # DES 描述符加载 (2 拍)
│ │ │ ├── dpc_gen.h # GEN 地址生成 (NCHW)
│ │ │ ├── dpc_issue.h # ISSUE 发射控制
│ │ │ ├── dpc_arb.h # ARB Bank 冲突仲裁
│ │ │ └── compute_unit.h # COMPUTE 计算单元
│ │ └── wdc/ # WDC 存储控制器
│ │ ├── wdc.h # 顶层: 6 级 Fabric 路径
│ │ ├── umc.h # DDR 控制器封装
│ │ ├── dram_unit.h # DDR 时序模型
│ │ └── x2x.h # 跨时钟域桥 (800M->400M)
│ └── src/

├── noc/ # NoC 片上网络
│ ├── include/
│ │ ├── NoC.h # 2D Mesh 顶层
│ │ ├── Router.h # 路由器 (6 端口 x 8 VC)
│ │ ├── Tile.h # Mesh 节点 (3 通道隔离)
│ │ ├── rn.h # Request Node (TLM->Flit)
│ │ └── sn.h # Service Node (Flit->TLM)
│ ├── routingAlgorithms/ # XY, West-First, Odd-Even, DYAD 等
│ └── selectionStrategies/ # Buffer-Level, Random, NOP

├── spec/sg2260/ # 芯片规格定义
│ ├── include/ # 指令寄存器格式 (TIU/GDMA/CDMA)
│ └── spec/include/ # 寄存器位域定义, 地址映射

└── cfg/ # 芯片配置 YAML