第1章:AI芯片核心组件——计算单元、存储层次与互联总线
大家好,我是你们的老朋友。今天咱们正式开讲AI芯片多核并行计算的第一课。
说实话,我做了十几年芯片设计,从最早的DSP到后来的GPU,再到现在的AI加速器,最深的感触就是:AI芯片的本质,就是一场计算、存储、通信的三角博弈。你想想看,无论多复杂的神经网络,落到芯片上无非就是三件事——算得快、存得下、传得通。
这一章,我就带大家把这三个核心组件拆开揉碎了讲清楚。嗯,咱们先从计算单元说起。
1.1 计算单元:MAC阵列——AI芯片的“肌肉”
AI芯片最核心的计算单元是什么?说白了就是乘加运算阵列(MAC Array)。为什么?因为神经网络里90%以上的运算都是矩阵乘法,而矩阵乘法本质上就是一堆乘加操作。
我给大家算笔账:一个典型的卷积层,假设输入是224x224x3,卷积核是3x3x64,输出是224x224x64。你猜需要多少次乘加?大约8.6亿次。这还只是一个层,一个ResNet-50有50层……所以,没有专门的MAC阵列,CPU根本扛不住。
MAC阵列的核心指标:
- MAC数量:决定峰值算力。比如256个MAC,每个时钟周期就能完成256次乘加。
- 数据位宽:INT8、FP16、BF16……位宽越小,算力越高,但精度会下降。
- 利用率:实际跑起来能用到多少MAC?我见过不少芯片,理论算力很高,但实际利用率不到30%。
我在项目中遇到过一个问题:某款芯片标称4TOPS算力,但跑MobileNet时帧率就是上不去。后来一查,发现MAC阵列的数据复用策略没做好,导致大量MAC在空转。你想想看,肌肉再发达,供不上血也是白搭。
我的经验:设计MAC阵列时,别光盯着峰值算力。一定要考虑数据流模式——是权重固定(Weight Stationary)还是输入固定(Input Stationary)?不同的网络结构,最优的数据流完全不同。
1.2 存储层次:SRAM与HBM——芯片的“记忆”
算得快还不够,数据得喂得进去。这就引出了存储层次的问题。
AI芯片的存储,我习惯把它分成三层:
- 寄存器(Register):最快,但容量极小,通常几百字节。
- 片上SRAM:速度中等,容量几MB到几十MB。这是AI芯片的“主战场”。
- 片外HBM(高带宽内存):容量大(几GB到几十GB),但带宽和延迟都不如SRAM。
为什么SRAM这么重要?我给大家举个例子。假设你的MAC阵列每时钟周期需要读取256个权重和256个输入,如果这些数据都在片外HBM里,光读取延迟就够你受的。所以,SRAM的容量和带宽,直接决定了MAC阵列能不能吃饱。
| 存储层级 | 典型容量 | 带宽 | 延迟 | 功耗 |
|---|---|---|---|---|
| 寄存器 | ~1KB | >1000 GB/s | ~1ns | 极低 |
| SRAM | ~32MB | ~100 GB/s | ~5ns | 低 |
| HBM2e | ~16GB | ~1.6 TB/s | ~100ns | 高 |
避坑指南:我曾经在一个项目里,为了省成本,把SRAM从8MB砍到了4MB。结果呢?MAC阵列的利用率从70%直接掉到了35%。因为数据放不下,频繁从HBM搬运,性能腰斩。所以,SRAM容量是AI芯片的“命门”,千万别省。
说到HBM,它其实是一种3D堆叠的DRAM技术。为什么AI芯片都用HBM?因为传统DDR的带宽根本喂不饱MAC阵列。HBM2e的带宽能做到1.6TB/s,是DDR5的10倍以上。当然,代价就是贵,而且封装工艺复杂。
1.3 互联总线:NoC与PCIe——芯片的“血管”
计算单元和存储都有了,怎么把它们连起来?这就靠互联总线了。
AI芯片内部,我主要关注两种总线:
- 片上网络(NoC, Network-on-Chip):连接芯片内部的各种IP,比如MAC阵列、SRAM、控制器等。
- PCIe:连接AI芯片和主机(CPU),用于数据传输和控制。
NoC的设计,说白了就是解决“谁和谁通信,怎么通信”的问题。我见过最简单的NoC就是一个交叉开关(Crossbar),所有IP都能直接通信。但问题是,当IP数量超过10个时,交叉开关的面积和功耗会爆炸式增长。
所以,现代AI芯片更倾向于用环形(Ring)或网格(Mesh)拓扑。比如Google的TPU,用的就是2D Mesh NoC。每个节点只和邻居通信,数据通过路由逐跳传输。这样扩展性好,但延迟会随跳数增加。
NoC设计的关键指标:
- 带宽:每对IP之间的通信带宽。
- 延迟:数据从源到目的的时间。
- 一致性:多核访问共享数据时,怎么保证数据一致?
至于PCIe,它更像是AI芯片的“对外接口”。目前主流是PCIe 4.0 x16,单向带宽约32GB/s。但说实话,这个带宽在AI训练场景下经常不够用。比如你同时挂4块AI芯片做分布式训练,PCIe带宽就成了瓶颈。
我记得有一次,客户抱怨说4卡训练速度还不如2卡。排查了半天,发现是PCIe带宽被占满了,数据搬运成了瓶颈。后来我们改用NVLink(NVIDIA的私有互联技术),带宽直接翻了几倍,问题才解决。
1.4 三者的协同:一个完整的计算流程
说了这么多,咱们来串一下。假设你要在AI芯片上跑一个卷积层:
- 数据加载:主机通过PCIe,把输入特征图和权重从DDR搬运到芯片的HBM里。
- 数据分发:NoC把HBM里的数据,分发给各个计算核的SRAM。
- 计算:MAC阵列从SRAM读取数据,执行乘加操作,结果写回SRAM。
- 结果汇聚:NoC把各个核的计算结果汇总,写回HBM。
- 输出:主机通过PCIe,从HBM读取最终结果。
你看,每一步都离不开计算、存储、互联的协同。任何一个环节掉链子,整个系统性能都会受影响。
我的建议:做AI芯片设计时,别只盯着MAC阵列的算力。一定要做系统级建模,把存储带宽、NoC带宽、PCIe带宽都算进去。很多时候,瓶颈不在计算,而在数据搬运。
1.5 知识体系总览
为了让大家更直观地理解这三个核心组件的关系,我画了一张图。嗯,这张图我反复改了好几版,希望能帮你们建立起整体认知。
这张图里,我特意把三个核心组件用不同颜色区分开了:蓝色是主机,紫色是存储,橙色是互联,绿色是计算。你看,数据从主机出发,经过PCIe进入芯片,先存到HBM,再通过NoC分发到各个计算核的SRAM,最后喂给MAC阵列。整个过程环环相扣。
好了,这一章的内容就到这里。核心就三句话:MAC阵列决定算力上限,SRAM/HBM决定数据供给,NoC/PCIe决定通信效率。三者缺一不可。
下一章,咱们会深入MAC阵列的内部结构,聊聊数据流和脉动阵列的设计。到时候见!