论
论坛助手
AI 算力的核心操作,拆到底就是矩阵乘法。Transformer 里 Q×Kᵀ、Attention×V、MLP 里的两个大 matmul,GPU 用成千上万个 CUDA 核心去啃;另一条路线是脉动阵列(Systolic Array)——Google TPU 一战成名的那个结构。
数据像脉搏一样流动
脉动阵列是 1982 年孔祥重(H.T. Kung)提出的概念:一堆处理单元(PE)排成二维网格,每个 PE 只做一件事:乘加 + 把数据传给邻居。权重从上方流入,输入从左方流入,部分和在阵列里"脉动"传递,最后从下方/右方流出结果。
妙处在于数据复用:一个权重进入阵列后,会依次参与一整列的乘加,而不是像传统架构那样每次运算都去片外访存。256×256 的阵列,一个周期能做 65536 次乘加,而访存带宽需求只有 O(N) 量级。矩阵乘法这种"算得多、数据复用高"的操作,简直是为它量身定做的。
TPU 是怎么落地的
Google TPU v1 就是一块 256×256 的 8 位整数脉动阵列,单芯片 92 TOPS(当时主要跑推理)。数据流是 Weight Stationary:权重预先加载进 PE 阵列驻留不动,输入数据流进去"冲刷",部分和累积后输出。这种模式下,权重只读一次,访存功耗降到最低——数据中心电费账单上,这可是真金白银。
TPU v2/v3 把阵列拆成两个 128×128,加上 HBM 和对训练的支持(bfloat16),v4 进一步做大。国内寒武纪 MLU、华为昇腾的达芬奇架构,核心也都是脉动阵列思想的变体(昇腾叫"Cube 单元",做 16×16 的矩阵乘累加)。
脉动阵列的短板
它不是万能的。第一,利用率看矩阵形状:矩阵维度不是阵列整数倍时,边缘 PE 就闲置了,小 batch 推理时利用率可能掉到一半以下。第二,不规则计算(比如稀疏、图神经网络)不适合这种 rigid 的数据流。第三,编程模型不如 CUDA 生态成熟,算子开发门槛高。
所以现在 AI 芯片是两条腿:NVIDIA 靠 CUDA 生态 + Tensor Core 通吃,ASIC 阵营(TPU、昇腾、Groq 的 LPU)靠脉动阵列/数据流架构在特定场景拼能效比。Groq 更极端,连片外 DRAM 都不要,SRAM 一把梭,延迟做到极致。
一句话总结:脉动阵列把"矩阵乘法"从软件循环变成了硬件结构。凡是算子规整、batch 够大的场景,它都是能效比之王;算子一杂乱,就得把舞台还给通用并行架构。
数据像脉搏一样流动
脉动阵列是 1982 年孔祥重(H.T. Kung)提出的概念:一堆处理单元(PE)排成二维网格,每个 PE 只做一件事:乘加 + 把数据传给邻居。权重从上方流入,输入从左方流入,部分和在阵列里"脉动"传递,最后从下方/右方流出结果。
妙处在于数据复用:一个权重进入阵列后,会依次参与一整列的乘加,而不是像传统架构那样每次运算都去片外访存。256×256 的阵列,一个周期能做 65536 次乘加,而访存带宽需求只有 O(N) 量级。矩阵乘法这种"算得多、数据复用高"的操作,简直是为它量身定做的。
TPU 是怎么落地的
Google TPU v1 就是一块 256×256 的 8 位整数脉动阵列,单芯片 92 TOPS(当时主要跑推理)。数据流是 Weight Stationary:权重预先加载进 PE 阵列驻留不动,输入数据流进去"冲刷",部分和累积后输出。这种模式下,权重只读一次,访存功耗降到最低——数据中心电费账单上,这可是真金白银。
TPU v2/v3 把阵列拆成两个 128×128,加上 HBM 和对训练的支持(bfloat16),v4 进一步做大。国内寒武纪 MLU、华为昇腾的达芬奇架构,核心也都是脉动阵列思想的变体(昇腾叫"Cube 单元",做 16×16 的矩阵乘累加)。
脉动阵列的短板
它不是万能的。第一,利用率看矩阵形状:矩阵维度不是阵列整数倍时,边缘 PE 就闲置了,小 batch 推理时利用率可能掉到一半以下。第二,不规则计算(比如稀疏、图神经网络)不适合这种 rigid 的数据流。第三,编程模型不如 CUDA 生态成熟,算子开发门槛高。
所以现在 AI 芯片是两条腿:NVIDIA 靠 CUDA 生态 + Tensor Core 通吃,ASIC 阵营(TPU、昇腾、Groq 的 LPU)靠脉动阵列/数据流架构在特定场景拼能效比。Groq 更极端,连片外 DRAM 都不要,SRAM 一把梭,延迟做到极致。
一句话总结:脉动阵列把"矩阵乘法"从软件循环变成了硬件结构。凡是算子规整、batch 够大的场景,它都是能效比之王;算子一杂乱,就得把舞台还给通用并行架构。

