NPU设计全流程教程:从算法到RTL实现
课程概述
本教程深入探讨神经网络处理器(NPU)的设计全流程,从上游算法映射到RTL实现、验证与仿真。课程聚焦自动驾驶和具身智能两大前沿应用场景,以200 TOPS推理性能为设计目标,支持2:4结构化稀疏和nvfp4量化。通过对比脉动阵列(Systolic Array)和数据流(Dataflow)两种主流架构,结合TPU和Groq TSP的实际案例,帮助读者掌握NPU设计的核心技术。
目标读者
- 具有深度学习算法背景的工程师
- 数字IC设计与验证工程师
- 计算机体系结构研究人员
- AI编译器与系统软件开发者
预备知识
- 深度学习基础(CNN、Transformer、Attention机制)
- 数字电路设计(Verilog/SystemVerilog)
- 计算机体系结构(流水线、存储层次、并行计算)
- 线性代数与矩阵运算
第一部分:基础篇
第1章:NPU设计导论
- NPU vs GPU vs CPU:架构特征对比
- 推理加速的关键指标:延迟、吞吐量、能效
- 自动驾驶场景:感知、预测、规划算法需求
- 具身智能场景:VLM/VLA模型特征
- 200 TOPS设计空间探索
- 练习重点:屋顶线模型(Roofline Model)分析
第2章:算法与算子分析
- 自动驾驶核心网络剖析 - 2D检测:YOLO系列、CenterNet - 3D检测:PointPillars、CenterPoint - BEV感知:BEVFormer、BEVDet - 轨迹预测与规划网络
- VLM/VLA工作负载特征 - CLIP与对比学习 - LLaVA、Flamingo多模态架构 - RT-1/RT-2机器人控制模型
- 算子级性能分析 - GEMM、Conv2D、Attention计算密度 - Memory-bound vs Compute-bound分析
- 练习重点:算子融合优化策略
第3章:量化与稀疏化技术
- nvfp4 (E2M1)数值系统 - 动态范围与精度权衡 - 指数偏置选择策略 - Gradual underflow处理
- 2:4结构化稀疏 - 稀疏模式约束与压缩率 - 稀疏索引编码方案 - 与非结构化稀疏对比
- 量化感知训练(QAT)与后训练量化(PTQ)
- 混合精度策略与敏感层识别
- 练习重点:量化误差传播分析
第4章:存储系统与数据流
- 存储层次设计 - 片上SRAM vs HBM vs DDR - 存储带宽需求计算 - Bank冲突与访问模式优化
- 数据重用模式 - Temporal vs Spatial重用 - Loop tiling与blocking策略 - Dataflow分类:WS/OS/RS
- DMA设计与数据预取
- 片上网络(NoC)基础
- 练习重点:带宽利用率计算
第二部分:脉动阵列架构(以TPU为例)
第5章:脉动阵列原理与设计
- 脉动阵列基本概念 - 数据流动与计算同步 - Weight-stationary设计选择 - 阵列维度与利用率分析
- TPU v1-v4i架构演进 - MXU (Matrix Multiply Unit)设计 - 向量单元与标量单元 - 双缓冲与流水线设计
- 控制流与指令集 - VLIW vs MIMD vs SIMD - 指令调度与依赖管理
- 练习重点:脉动阵列利用率优化
第6章:脉动阵列RTL实现
- PE (Processing Element)设计 - MAC单元与累加器 - 权重寄存器与控制逻辑 - 时序收敛策略
- 阵列级互连 - 数据广播网络 - 部分和传递链 - Skew buffer设计
- 控制器设计 - FSM状态机设计 - Counter chain与地址生成 - 异常处理与边界情况
- 练习重点:RTL时序分析与优化
第7章:TPU编译器与映射
- XLA编译流程 - HLO (High-Level Optimizer)图优化 - 算子融合与内存规划 - Tiling策略与参数选择
- 矩阵乘法映射 - 大矩阵分块策略 - Padding与对齐要求 - 批处理维度处理
- 卷积映射优化 - Im2col vs Direct convolution - Winograd变换适用性 - Depthwise/Pointwise分解
- 练习重点:映射效率分析
第8章:脉动阵列验证方法
- 功能验证策略 - 单元测试vs系统测试 - 定向测试vs随机测试 - 覆盖率驱动验证
- 性能验证 - Cycle-accurate模拟器 - 性能计数器设计 - 瓶颈分析方法
- 数值验证 - Bit-accurate参考模型 - 误差累积分析 - Corner case测试
- 练习重点:验证计划制定
第三部分:数据流架构(以Groq TSP为例)
第9章:数据流架构原理
- 数据流计算模型 - 静态vs动态数据流 - Token-based执行 - 确定性执行优势
- Groq TSP架构特征 - 无外部DRAM设计理念 - 编译时调度 - 确定性延迟保证
- 与脉动阵列对比 - 灵活性vs效率权衡 - 编程模型差异 - 适用场景分析
- 练习重点:数据流图构建与分析
第10章:TSP微架构设计
- 计算单元设计 - Vector ALU阵列 - Matrix multiplication unit - 特殊函数单元(SFU)
- 片上存储系统 - 分布式SRAM banks - 地址生成与仲裁 - Multi-casting机制
- 片上网络设计 - 2D mesh拓扑 - 路由算法与死锁避免 - 虚通道与流控
- 练习重点:NoC带宽与延迟计算
第11章:数据流RTL实现
- 流处理器设计 - 指令解码与发射 - 操作数收集与转发 - 背压处理机制
- 同步与调度 - 全局同步机制 - Credit-based流控 - Stall处理策略
- 功耗优化技术 - Clock gating - Power gating - DVFS支持
- 练习重点:流水线hazard分析
第12章:TSP编译器技术
- 静态调度算法 - 指令调度与资源分配 - 寄存器分配策略 - 内存布局优化
- 数据流图优化 - 公共子表达式消除 - 死代码消除 - 循环优化技术
- 自动并行化 - 数据并行识别 - 流水线并行 - 模型并行策略
- 练习重点:调度算法复杂度分析
第四部分:系统集成与优化
第13章:多核扩展与互连
- Scale-up架构 - 多芯片互连技术 - Cache一致性协议 - NUMA效应与优化
- Scale-out架构
- 分布式训练vs推理 - 参数服务器vs AllReduce - 梯度压缩与量化 - 芯片间互连 - NVLink/CXL/UCIe对比 - 拓扑选择:Ring/Mesh/Torus - 集合通信优化
- 练习重点:多核性能建模
第14章:软硬件协同设计
- 硬件抽象层(HAL)设计 - 驱动接口定义 - 内存管理接口 - 同步原语实现
- 运行时系统 - 任务调度器设计 - 内存分配器 - 性能profiling接口
- 调试与诊断 - Hardware trace机制 - Performance counter - Error reporting系统
- 练习重点:API设计最佳实践
第15章:性能分析与优化
- 性能建模方法 - Analytical model - Cycle-level simulation - ML-based预测
- 瓶颈识别技术 - Roofline分析 - Critical path分析 - 资源利用率分析
- 优化案例研究 - Attention优化:Flash Attention - 卷积优化:Implicit GEMM - 激活函数融合
- 练习重点:性能优化决策树
第16章:工程实践与部署
- 芯片bring-up流程 - 功能验证检查清单 - 性能验证与校准 - 可靠性测试
- 量产考虑 - 良率分析与binning - 功耗分级 - 热设计与散热
- 实际部署案例 - 数据中心部署 - 边缘端部署 - 车载部署要求
- 练习重点:部署检查清单
附录
附录A:数学基础回顾
- 线性代数要点
- 数值分析基础
- 概率论与信息论
附录B:常用算子参考
- GEMM变体详解
- 卷积算子变体
- 注意力机制变体
附录C:工具链使用指南
- RTL仿真工具
- 性能分析工具
- 编译器工具链
附录D:术语表
- 中英文术语对照
- 缩略语列表
学习路径建议
快速路径(4周)
- 第1、3、5、9章:核心概念
- 第6、11章(选读):RTL要点
- 第15章:性能优化
标准路径(8周)
- 第一部分:基础篇(2周)
- 第二部分或第三部分(3周,二选一)
- 第四部分:系统集成(2周)
- 实践项目(1周)
深入路径(12周)
- 完整阅读所有章节
- 完成所有练习题
- 实现mini项目
- 参与开源项目
配套资源
- 代码仓库:示例RTL代码、验证环境
- 在线仿真平台:免费FPGA验证环境
- 论坛社区:技术交流与答疑
- 视频课程:重点章节配套讲解
本教程持续更新中,欢迎反馈与贡献