TPU(Tensor Processing Unit,张量处理器)是专为神经网络设计的芯片,而脉动阵列(Systolic Array)是它内部真正做矩阵乘法的那片二维计算网格。
"Systolic"取自心脏收缩的节律。这个名字很形象:数据像血液一样,被按固定节拍泵过整片阵列,流过的过程中就把乘法加法做完了。
它是怎么工作的
阵列里每个交叉点是一个 PE(Processing Element,计算单元)。每个 PE 只干一件极小的事:把从左边进来的数,乘上从上边进来的数,加进自己的累加器,然后把左边的数继续往右传、上边的数继续往下传。一个节拍,全体 PE 同时动一下。于是一波数据像水面波纹一样穿过网格,等它从另一侧流出来时,一整块矩阵乘法的部分和就已经算好了。
打个比方。普通处理器像手工作坊:工人每要拧一颗螺丝,都得先跑去仓库取两个零件,拧完再把成品送回仓库。路远,力气大半花在跑腿上。脉动阵列像流水线:每个工位的工人手边常备一套固定工具(权重),零件(激活值)坐着传送带依次经过每个工位,每过一站被加工一次,到终点就是成品。跑腿这一项被彻底删掉了。
能效优势从哪来
主要是四件事:
1. 权重驻留。权重加载一次就待在 PE 本地,被成千上万次复用,不用反复从内存搬。
2. 几乎没有指令开销。不需要取指、译码、乱序调度,控制逻辑小到可以忽略,省下的晶体管和电量都给乘加单元。
3. 数据复用率高。一个激活值向右流动时被一整行的 PE 共用,一个权重向下流动时被一整列共用。
4. 连线短。每个 PE 只和左右上下邻居说话,不用驱动长长的总线和复杂的片上网络。
关键直觉是:在芯片里,搬数据往往比算数据更耗电。传统架构每次乘加都要读寄存器堆、写回结果;脉动阵列把"搬运"变成了"流过",这才是它省电的根本原因。
和相邻概念的区别
| 通用 GPU | TPU 的脉动阵列 | |
|---|---|---|
| 设计目标 | 通用并行计算 | 矩阵乘法 |
| 控制开销 | 高,靠指令调度 | 极低,近乎固定节拍 |
| 数据移动 | 在寄存器、缓存间反复往返 | 在阵列中单向流转 |
| 灵活性 | 高,什么都能跑 | 低,形状要匹配 |
要区分两层:TPU 是芯片,脉动阵列只是芯片里的一种数据流架构;TPU 还包含片上缓存、激活单元等部分。反过来,脉动阵列也不是 TPU 独有,很多 NPU(Neural Processing Unit,神经网络处理器)和边缘推理芯片都采用类似的数据流思路。
对从业者的意义
理解了"搬运比计算贵",很多现象就顺了:为什么专用芯片在规则的大矩阵乘上能效突出,为什么遇到小批量、稀疏、动态形状时利用率会明显掉下来——因为阵列空转的 PE 一样在耗电。这也解释了为什么通用 GPU 至今仍是主力。
具体型号规格与支持情况,以官方页面为准。
