硬件
Systolic 阵列
也称为 systolic array、systolic 阵列、脉动阵列、weight-stationary 阵列
先用大白话
Systolic 阵列是由大量乘加单元组成的网格,数据像脉搏一样在单元之间逐格传递,矩阵乘法中途不需要访问内存。
技术定义
Systolic 阵列是一个二维乘加单元网格,其中一个操作数固定驻留,另一个操作数流过网格,部分和在每个时钟周期传递给相邻单元。
工程细节
在 TPU 的 MXU 中,权重加载进阵列后保持不动。激活值从一条边进入,每个单元把输入乘以自己存储的权重,再加上邻居传来的部分和,最终结果从另一边流出,中间值从不写入内存。阵列边长固定:TPU v5 及之前是 128,v6e 起是 256,小于边长的矩阵维度都会被补齐。GPU 的 tensor core 则从寄存器读取小 tile,因此对不规则形状更宽容。
为什么重要
Systolic 设计在单位硅面积和功耗下提供极高的每周期 MAC 数,这是 Google 能把 Ironwood 的每 token 价格压到 Blackwell 以下的部分原因。代价是刚性:Ironwood 的 256x256 阵列只有在两个矩阵维度都是 256 的倍数时才能交付 65,536 MAC/周期,head 维度为 128 时注意力矩阵乘法的利用率上限只有 50%。
如何在 InferenceX 中解读
TPU InferenceX 预览和 OpenAI Jalapeno 分析都把 systolic 阵列几何视为模型 bring-up 成本差异的主要原因。形状能填满阵列的模型只需要数周调优,与阵列冲突的模型则需要先写新的 Pallas kernel 才能追平。