第四章:AI芯片的核心差异:架构对比(SIMT vs 脉动阵列 vs 数据流)
好,我们直接切入正题。上一章聊了生态,这一章咱们看看芯片肚子里到底有什么不同。很多人问我:“GPU不是已经在AI领域大杀四方了吗?为什么还要搞专门的AI芯片?”
这个问题,我当年也困惑过。直到我在一个数据中心项目里,用GPU跑BERT推理,功耗墙直接把我拍在墙上。嗯,那时候我才真正理解——架构的差异,决定了你能走多远。
4.1 三种架构的底层逻辑
先看一张图,这是我手绘的架构对比逻辑图,帮你快速建立全局认知。
4.2 SIMT:GPU的看家本领,也是它的软肋
SIMT,全称是单指令多线程。说白了,就是一条指令下去,几百上千个线程同时干活。GPU靠这个在图形渲染领域称王称霸。
但到了AI推理场景,问题就来了。我举个例子:你在做矩阵乘法时,每个线程处理一个元素。如果矩阵是1024x1024,你需要一百多万个线程。GPU调度这些线程,光线程束(warp)的上下文切换就要消耗不少能量。
核心痛点:GPU的SIMT架构,本质上是为“大量独立线程”设计的。但AI计算中,数据依赖性强,线程之间需要频繁通信。这就导致GPU的缓存一致性协议和线程同步机制,成了沉重的包袱。
我记得有一次,我们在一个推荐系统项目里,用V100跑一个深度模型。GPU利用率只有30%多,剩下的时间都在等数据、做同步。说白了,GPU的通用性,在AI场景下变成了“过度设计”。
4.3 脉动阵列:让数据“流动”起来
脉动阵列的思路完全不同。它不搞“一堆线程各自为战”,而是让数据像心跳一样,在计算单元之间规律地流动。
你看Google的TPU,核心就是脉动阵列。每个处理单元(PE)只做一件事:乘加运算。权重存在本地寄存器里,输入数据从左到右、从上到下流过整个阵列。
// 脉动阵列的伪代码示例
// 假设一个 4x4 的脉动阵列
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
// 数据从左侧流入
input_data = systolic_shift_left(pe[i][j-1]);
// 权重固定在本PE
weight = weight_register[i][j];
// 乘加运算
pe[i][j].accum += input_data * weight;
// 部分和向下传递
systolic_shift_down(pe[i-1][j], pe[i][j]);
}
}
这样做的好处是什么?数据复用率极高。同一个权重可以被多个输入复用,同一个输入也可以被多个权重复用。我算过一笔账:在同样的制程和功耗下,脉动阵列的矩阵乘法效率,比GPU高3-5倍。
我的经验:脉动阵列不是万能的。如果你要跑非矩阵运算(比如稀疏计算、图神经网络),脉动阵列的效率会急剧下降。我曾经在一个图神经网络项目里尝试用脉动阵列,结果性能还不如CPU。嗯,选型很重要。
4.4 数据流架构:计算跟着数据走
数据流架构,是这三者里最“激进”的。它不依赖指令,也不依赖固定的阵列。而是让计算单元根据数据的到达,动态触发计算。
你可以把它想象成一个“计算流水线”。数据从输入端口进来,经过一层层计算单元,每个单元只处理自己负责的那部分。没有全局时钟,没有复杂的调度器。
这种架构在推理场景下特别有优势。因为推理的计算图是固定的,你可以把整个网络“映射”到芯片上。数据流一次,结果就出来了。
避坑指南:我曾经在创业公司时,尝试用数据流架构做通用AI芯片。结果发现,编译器的复杂度远超预期。要把任意神经网络映射到数据流硬件上,需要解决数据依赖、内存分配、流水线平衡等一系列问题。最后项目黄了,但教训很深刻——数据流架构,目前只适合特定场景。
4.5 为什么GPU不是最优解?
好了,现在可以回答这个问题了。GPU不是最优解,原因有三:
- 控制开销太大:GPU的线程调度、缓存一致性、分支预测,这些在AI计算中都是“无用功”。你想想看,一个矩阵乘法需要分支预测吗?不需要。
- 数据复用率低:GPU的每个线程独立取数据,导致内存带宽成为瓶颈。而脉动阵列可以通过数据流动,把带宽需求降低一个数量级。
- 能效比差:同样的功耗,专用架构可以做到GPU的5-10倍性能。我在数据中心测过,TPU的每瓦性能是V100的3倍以上。
| 对比维度 | GPU (SIMT) | 脉动阵列 | 数据流 |
|---|---|---|---|
| 通用性 | 高 | 中 | 低 |
| 矩阵乘法效率 | 中 | 高 | 高 |
| 控制开销 | 高 | 低 | 极低 |
| 数据复用率 | 低 | 高 | 中 |
| 编译器复杂度 | 低 | 中 | 高 |
| 典型代表 | NVIDIA A100 | Google TPU | Cerebras WSE |
当然,我不是说GPU一无是处。在训练场景下,GPU的灵活性和生态优势依然明显。但在推理场景,尤其是大规模部署时,专用架构的优势就体现出来了。
一句话总结:GPU是“万能钥匙”,但AI芯片是“专用扳手”。拧螺丝的时候,扳手比钥匙好用得多。
好了,这一章就到这里。下一章我们会聊聊AI芯片的内存层次设计,那又是一个很有意思的话题。