3. 硬件加速原理
要理解 TPU、NPU、DPU 为什么能比通用 CPU 快出一个数量级,不能只看“专用”两个字,而要看它们背后共用的五类硬件加速原理:并行计算、流水线、数据复用、脉动阵列与存内计算。这五种机制分别解决“算得更多”“算得更顺”“搬得更少”“连得更紧”“搬得更近”的问题,共同构成 AI 加速器的性能底座。
一、并行计算:把一次运算拆成很多份同时做
神经网络的核心计算是矩阵乘加与卷积,本质是大量彼此独立的乘加运算。CPU 通常只有几十个通用核心,而 NPU 内部可以集成数千甚至数万个 MAC(乘累加)单元。并行计算分为三个层次:
- 数据级并行:同一指令同时作用于多个数据,例如 SIMD 向量运算。
- 空间并行:在芯片上摆放大量物理运算单元,各自处理不同数据。
- 任务并行:不同层、不同通道或不同 batch 分配到不同计算簇。
并行度越高,理论吞吐越大,但受限于数据供给、寄存器带宽和功耗。因此并行必须与下面的流水线和数据复用配合,否则运算单元会“饿死”。
二、流水线:让不同阶段重叠工作
流水线把一条计算任务拆成取数、译码、乘加、累加、写回等阶段,不同数据在不同阶段同时推进。理想情况下,每拍都能产出一个结果,吞吐率接近“阶段数倍”。在 AI 加速器中,流水线常表现为:
取激活 → 取权重 → 乘加 → 部分和累加 → 激活函数 → 量化/写回
↑ ↑ ↑ ↑ ↑ ↑
阶段1 阶段2 阶段3 阶段4 阶段5 阶段6
流水线的关键是平衡:最慢阶段决定整体节拍。若乘加阶段一拍完成,而取数需要三拍,则取数成为瓶颈,需要多级缓存或预取来填平。
三、数据复用:减少搬运,提升能效
在 AI 芯片中,数据搬运的能耗往往远高于计算本身。数据复用就是让同一份数据被多次使用,减少对 DRAM 的访问。常见复用方式包括:
- 权重复用:同一卷积核在多个输出通道、多个空间位置重复使用。
- 激活复用:同一输入特征图被多个卷积核共享。
- 部分和复用:累加结果在片上缓存中继续参与后续计算。
四、脉动阵列:让数据像血液一样流动
脉动阵列(Systolic Array)是 TPU 的标志性结构。它把大量 MAC 单元排成二维网格,权重预先加载并驻留在各单元中,激活数据从左侧逐拍流入,部分和从上向下逐拍传递。每个周期,数据在阵列中“脉动”一格,完成一次乘加并向下传递累加结果。
其优势是:权重不动、激活流动、部分和流动,极大减少寄存器堆和总线压力。缺点是灵活性较低,适合规则的大矩阵运算,对稀疏、动态形状支持较弱。
五、存内计算:把计算搬到数据所在的地方
传统冯·诺依曼架构中,计算单元与存储单元分离,数据在两者之间反复搬运,形成“存储墙”。存内计算(Compute-in-Memory, CIM)直接在 SRAM、RRAM 或 Flash 阵列内部完成乘加,利用欧姆定律和基尔霍夫定律实现模拟域累加,能效可提升 10~100 倍。它特别适合权重固定、批量较小的推理场景,但面临精度、工艺一致性和编程模型等挑战。
六、五种原理对比与适用场景
| 原理 | 核心思想 | 典型实现 | 主要收益 | 主要限制 |
|---|---|---|---|---|
| 并行计算 | 多运算单元同时工作 | SIMD、多核簇、MAC 阵列 | 吞吐量线性提升 | 功耗、面积、数据供给 |
| 流水线 | 阶段重叠,提高节拍 | 取数-乘加-写回流水 | 提高频率与利用率 | 阶段不平衡、冒险 |
| 数据复用 | 一份数据多次使用 | 权重缓存、激活缓存 | 降低 DRAM 带宽与能耗 | 缓存容量与调度复杂度 |
| 脉动阵列 | 数据在阵列中规律流动 | TPU 的 256×256 MAC 阵列 | 高能效、规则矩阵运算 | 灵活性低、稀疏支持弱 |
| 存内计算 | 在存储阵列内完成计算 | SRAM-CIM、RRAM-CIM | 突破存储墙,极高能效 | 精度、工艺、工具链 |
七、案例:一个卷积层如何在 NPU 上被加速
假设输入特征图 56×56×64,卷积核 3×3×64×128。NPU 的加速过程如下:
- 并行:128 个输出通道分配到 128 个计算簇并行计算。
- 流水线:取数、乘加、累加、激活、量化分五级流水,每拍出一个输出像素。
- 数据复用:3×3 卷积核权重加载一次,在 56×56 个空间位置上复用;输入激活在 128 个输出通道间复用。
- 脉动阵列:将 3×3×64 的乘加展开为矩阵乘,送入脉动阵列完成。
- 存内计算:若权重已固化,可在 CIM 阵列中直接完成乘加,进一步降低搬运。
八、常见误区与复盘
- 误区一:并行度越高越好。 并行度受限于数据带宽和功耗,盲目堆 MAC 会导致利用率下降。
- 误区二:流水线级数越多越快。 级数增加会带来寄存器开销和冒险处理成本,需权衡。
- 误区三:数据复用只靠缓存。 复用需要编译器、调度器和数据布局协同设计,否则缓存命中率低。
- 误区四:脉动阵列万能。 它对规则稠密矩阵高效,对稀疏、动态形状和注意力机制并不友好。
- 误区五:存内计算已成熟。 CIM 仍处于工程化早期,精度补偿和良率是量产关键。
掌握这五种原理后,就能理解 TPU 为何采用脉动阵列、NPU 为何强调多核并行与片上缓存、DPU 为何侧重数据流卸载。它们是后续分析具体架构、编程模型和性能调优的共同语言。