一、加速器微架构概览:脉动阵列与数据流

各位同学,今天我们来聊聊卷积加速器里最核心的架构——脉动阵列。说实话,我第一次接触这个概念时,觉得它特别像工厂里的流水线。每个工人只做一件事,然后把半成品传给下一个人。嗯,脉动阵列就是这么个思路。

1.1 经典的脉动阵列(Systolic Array)架构

脉动阵列,说白了就是一组处理单元(PE)排成阵列。每个PE只和邻居通信。数据像血液一样,在阵列里有节奏地“脉动”。

我在项目中遇到过这样一个场景:用4x4的脉动阵列做3x3卷积。你想想看,如果让每个PE独立计算,那数据搬运量会大得吓人。但脉动阵列不一样——数据从左边流进来,权重从上边流进来,结果在PE里累加,然后往下传。

核心特点:

  • 每个PE只做简单的乘加运算(MAC)
  • 数据流是规则的、可预测的
  • 局部互联,没有全局总线瓶颈
  • 高吞吐、低功耗

下面这张图,是我手绘的一个4x4脉动阵列结构。你看,数据从左边进来,权重从上面进来,结果从下面出去。

4x4 脉动阵列结构图 权重 输入 ↓ 数据输入 → PE ({{row-1}},{{col-1}}) 结果累加输出 ↓ 数据流 权重流 结果流

1.2 空间架构 vs 时间架构

这两个概念,我当年花了很长时间才真正搞明白。简单来说:

空间架构:把计算摊开在空间上。每个PE负责一部分计算,大家同时干活。脉动阵列就是典型的空间架构。

时间架构:复用同一个计算单元,分时处理。比如用一个MAC单元,循环计算所有乘加操作。

对比维度 空间架构 时间架构
硬件资源 多PE并行,面积大 单PE复用,面积小
吞吐率 高(O(N²)) 低(O(1))
控制复杂度 简单,数据流固定 复杂,需要调度逻辑
功耗 较高(但效率高) 较低(但时间长)
典型应用 Google TPU、NVIDIA Tensor Core 传统DSP、CPU SIMD

我的经验:做加速器选型时,我一般这样判断——如果面积预算充足、对延迟敏感,选空间架构。如果面积受限、吞吐要求不高,选时间架构。曾经有个项目,客户非要在一个小芯片上跑大模型,我建议用时间架构,结果...嗯,性能差得没法看。后来还是换了空间架构。

1.3 数据流类型

数据流类型,说白了就是决定“谁不动、谁在动”。我把它分成四种:

1.3.1 权重固定(Weight Stationary)

权重加载到PE后就不动了。输入数据流过来,和权重做乘加。结果累加后输出。

  • 优点:权重复用率高,适合权重不变的推理场景
  • 缺点:输入数据需要广播,带宽压力大
  • 我遇到过:做边缘端推理芯片时,用的就是权重固定。因为模型训练好后权重就不变了,省了不少搬运开销。

1.3.2 输入固定(Input Stationary)

输入数据待在PE里不动。权重流过来,和输入做计算。结果累加后输出。

  • 优点:输入数据复用,适合输入特征图较大的场景
  • 缺点:权重需要频繁更新
  • 避坑指南:我曾经在一个视频处理项目里用了输入固定,结果发现输入数据太大,PE存不下。后来改成行固定才解决问题。

1.3.3 输出固定(Output Stationary)

部分和结果留在PE里累加。输入和权重都流进来,计算完成后一次性输出最终结果。

  • 优点:减少片外访存,适合大卷积核
  • 缺点:PE需要额外的累加器
  • 我的习惯:做高精度计算时,我偏好输出固定。因为累加过程在PE内部完成,精度损失小。

1.3.4 行固定(Row Stationary)

这是Google TPU用的数据流。把卷积核的一行权重固定在一个PE行里。输入数据按行流过,结果按行累加。

  • 优点:平衡了权重和输入的复用,数据搬运最少
  • 缺点:控制逻辑复杂,需要精心调度
  • 我记得:第一次看TPU时,被行固定的调度图绕晕了。后来自己动手画了一遍,才明白它的精妙之处。

⚠️ 重要提醒:数据流的选择不是拍脑袋决定的。我见过太多人直接抄Google TPU的行固定,结果自己的芯片面积爆炸。记住:没有最好的数据流,只有最适合你场景的数据流。

1.4 数据流对比总结

数据流类型 谁不动 谁在动 最佳场景 典型芯片
权重固定 权重 输入、结果 推理、权重不变 边缘推理芯片
输入固定 输入 权重、结果 大输入特征图 视频处理
输出固定 部分和 输入、权重 大卷积核、高精度 科学计算加速器
行固定 权重行 输入行、结果行 平衡复用、高吞吐 Google TPU

好了,这一章的内容就到这里。脉动阵列和数据流类型是卷积加速器的基石。你想想看,理解了这些,后面讲具体设计时,你就能明白为什么这么做了。

核心要点回顾:

  • 脉动阵列:局部互联、规则数据流、高吞吐
  • 空间架构:面积换性能;时间架构:时间换面积
  • 四种数据流各有适用场景,没有银弹
  • 选型时考虑:面积、功耗、延迟、数据复用率
可可精品资料库