3. 硬件加速原理

要理解 TPU、NPU、DPU 为什么能比通用 CPU 快出一个数量级,不能只看“专用”两个字,而要看它们背后共用的五类硬件加速原理:并行计算、流水线、数据复用、脉动阵列与存内计算。这五种机制分别解决“算得更多”“算得更顺”“搬得更少”“连得更紧”“搬得更近”的问题,共同构成 AI 加速器的性能底座。

一、并行计算:把一次运算拆成很多份同时做

神经网络的核心计算是矩阵乘加与卷积,本质是大量彼此独立的乘加运算。CPU 通常只有几十个通用核心,而 NPU 内部可以集成数千甚至数万个 MAC(乘累加)单元。并行计算分为三个层次:

  • 数据级并行:同一指令同时作用于多个数据,例如 SIMD 向量运算。
  • 空间并行:在芯片上摆放大量物理运算单元,各自处理不同数据。
  • 任务并行:不同层、不同通道或不同 batch 分配到不同计算簇。

并行度越高,理论吞吐越大,但受限于数据供给、寄存器带宽和功耗。因此并行必须与下面的流水线和数据复用配合,否则运算单元会“饿死”。

二、流水线:让不同阶段重叠工作

流水线把一条计算任务拆成取数、译码、乘加、累加、写回等阶段,不同数据在不同阶段同时推进。理想情况下,每拍都能产出一个结果,吞吐率接近“阶段数倍”。在 AI 加速器中,流水线常表现为:

取激活 → 取权重 → 乘加 → 部分和累加 → 激活函数 → 量化/写回
   ↑        ↑       ↑         ↑           ↑          ↑
 阶段1    阶段2   阶段3     阶段4       阶段5      阶段6

流水线的关键是平衡:最慢阶段决定整体节拍。若乘加阶段一拍完成,而取数需要三拍,则取数成为瓶颈,需要多级缓存或预取来填平。

三、数据复用:减少搬运,提升能效

在 AI 芯片中,数据搬运的能耗往往远高于计算本身。数据复用就是让同一份数据被多次使用,减少对 DRAM 的访问。常见复用方式包括:

  • 权重复用:同一卷积核在多个输出通道、多个空间位置重复使用。
  • 激活复用:同一输入特征图被多个卷积核共享。
  • 部分和复用:累加结果在片上缓存中继续参与后续计算。
经验法则:一次 DRAM 访问的能耗可能是片上 SRAM 访问的 10~100 倍,是寄存器访问的数百倍。因此“算得再快,不如少搬一次”。

四、脉动阵列:让数据像血液一样流动

脉动阵列(Systolic Array)是 TPU 的标志性结构。它把大量 MAC 单元排成二维网格,权重预先加载并驻留在各单元中,激活数据从左侧逐拍流入,部分和从上向下逐拍传递。每个周期,数据在阵列中“脉动”一格,完成一次乘加并向下传递累加结果。

其优势是:权重不动、激活流动、部分和流动,极大减少寄存器堆和总线压力。缺点是灵活性较低,适合规则的大矩阵运算,对稀疏、动态形状支持较弱。

脉动阵列数据流示意(4×4 MAC 网格) 激活输入 a0 → a1 → a2 → a3 → MAC w00 MAC w01 MAC w02 MAC w03 MAC w10 MAC w11 MAC w12 MAC w13 MAC w20 MAC w21 MAC w22 MAC w23 MAC w30 MAC w31 MAC w32 MAC w33 部分和输出 部分和输出 部分和输出 部分和输出 图例 激活水平流动 部分和垂直流动 权重驻留 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 的加速过程如下:

  1. 并行:128 个输出通道分配到 128 个计算簇并行计算。
  2. 流水线:取数、乘加、累加、激活、量化分五级流水,每拍出一个输出像素。
  3. 数据复用:3×3 卷积核权重加载一次,在 56×56 个空间位置上复用;输入激活在 128 个输出通道间复用。
  4. 脉动阵列:将 3×3×64 的乘加展开为矩阵乘,送入脉动阵列完成。
  5. 存内计算:若权重已固化,可在 CIM 阵列中直接完成乘加,进一步降低搬运。
实际芯片通常组合使用多种原理:用脉动阵列做主体矩阵运算,用多级缓存实现数据复用,用流水线隐藏访存延迟,用并行簇提升吞吐,用 CIM 处理低批量高能效场景。

八、常见误区与复盘

  • 误区一:并行度越高越好。 并行度受限于数据带宽和功耗,盲目堆 MAC 会导致利用率下降。
  • 误区二:流水线级数越多越快。 级数增加会带来寄存器开销和冒险处理成本,需权衡。
  • 误区三:数据复用只靠缓存。 复用需要编译器、调度器和数据布局协同设计,否则缓存命中率低。
  • 误区四:脉动阵列万能。 它对规则稠密矩阵高效,对稀疏、动态形状和注意力机制并不友好。
  • 误区五:存内计算已成熟。 CIM 仍处于工程化早期,精度补偿和良率是量产关键。
复盘要点:评估一个 AI 加速器时,不要只看峰值 TOPS,而要看在真实模型上的有效利用率、DRAM 访问量和能效比。峰值算力只是上限,数据搬运和调度才是决定实际性能的瓶颈。

掌握这五种原理后,就能理解 TPU 为何采用脉动阵列、NPU 为何强调多核并行与片上缓存、DPU 为何侧重数据流卸载。它们是后续分析具体架构、编程模型和性能调优的共同语言。