第四章 存储层次设计:AI加速器的“粮草先行”
大家好,我是你们的芯片架构课讲师。今天咱们聊聊存储层次设计。说实话,在AI加速器里,计算单元再强,如果数据喂不上去,那就是“巧妇难为无米之炊”。我见过太多团队把精力全砸在MAC阵列上,结果流片回来发现性能瓶颈在存储——嗯,这坑我踩过。
4.1 片上存储:SRAM与Buffer的“黄金搭档”
先说说片上存储。AI加速器里,SRAM和Buffer是两种最常见的存储单元。SRAM速度快、延迟低,但面积大、功耗高;Buffer呢,说白了就是一块临时存放数据的区域,通常用寄存器堆或者小容量SRAM实现。
我个人习惯把SRAM用在全局共享数据缓存上,比如存放激活值、权重参数。Buffer则用在计算单元附近,做数据暂存和乒乓操作。举个例子,在卷积计算中,输入特征图的数据复用率很高,我会在PE阵列旁边放一个Line Buffer,专门缓存一行输入数据。
核心原则:片上存储的容量不是越大越好。容量越大,访问延迟越高,功耗也越大。我建议根据数据复用率来定——复用率高的数据放近处,复用率低的放远处。
4.2 数据复用策略:三种固定模式的“博弈”
数据复用,说白了就是让同一份数据被多个计算单元重复使用,减少对片外存储的访问。常见的策略有三种:权重固定、输入固定、输出固定。
4.2.1 权重固定(Weight Stationary)
权重数据加载到PE后,一直留在原地,直到所有相关的输入数据都处理完。这种模式适合权重参数大、输入数据小的场景,比如全连接层。
我曾经在一个语音识别芯片里用过这种模式,效果不错。但要注意,如果权重更新频繁,这种模式的效率会大打折扣。
4.2.2 输入固定(Input Stationary)
输入数据固定在PE里,权重数据流式传入。这种模式适合输入数据复用率高的场景,比如卷积层的输入特征图。
你想想看,卷积核在输入图上滑动时,同一个输入像素会被多个卷积核用到。这时候用输入固定模式,能省不少带宽。
4.2.3 输出固定(Output Stationary)
部分和结果固定在PE里,直到累加完成。这种模式适合输出通道数多的场景,比如深度可分离卷积。
我的建议:实际项目中,很少只用一种模式。我通常会在架构设计阶段,用数据流图分析工具跑一遍,看看哪种模式对当前网络层最友好。说白了,没有银弹,只有最适合的。
4.3 HBM与GDDR6接口:片外存储的“高速公路”
片外存储接口,是AI加速器与DRAM之间的桥梁。目前主流的有HBM和GDDR6两种。
| 特性 | HBM2E | GDDR6 |
|---|---|---|
| 带宽 | ~460 GB/s per stack | ~64 GB/s per chip |
| 功耗 | 较低(~2pJ/bit) | 较高(~4pJ/bit) |
| 容量 | 8-16GB per stack | 8-32GB per chip |
| 接口复杂度 | 高(需要2.5D/3D封装) | 低(PCB走线即可) |
| 典型应用 | 高端AI训练芯片 | 中低端推理芯片 |
我个人习惯:如果预算充足、对带宽要求极高,选HBM。如果追求性价比、容量需求大,选GDDR6。我记得有个项目,客户非要上HBM,结果封装成本比芯片本身还贵——嗯,后来我们改成了GDDR6,性能只差了15%,成本却降了40%。
4.4 存储带宽计算与优化:别让数据“饿死”计算单元
存储带宽的计算,说白了就是回答一个问题:我的计算单元需要多少数据,存储系统能不能喂得饱?
公式很简单:
所需带宽 = 计算吞吐量 × 数据复用率
举个例子,一个MAC阵列每秒能算1T次操作,每次操作需要读取2个8位数据(权重+输入),那么理论带宽需求是:
1T × 2 × 8bit = 2TB/s
如果片上存储的数据复用率是4倍,那么实际片外带宽需求就降到500GB/s。你看,数据复用有多重要。
注意:带宽计算时,别忘了考虑写回带宽。部分和结果要写回片外存储,这部分带宽很容易被忽略。我曾经有个项目,算力跑满了,结果写回带宽不够,导致流水线卡死——血的教训。
4.5 知识体系总览
下面这张图,是我对本章知识体系的总结。你可以把它当作一个“存储设计检查清单”。
4.6 避坑指南
最后,分享几个我踩过的坑:
- 别迷信大容量SRAM:容量越大,访问延迟越高。我见过有人把SRAM做到几十兆,结果访问延迟比片外DRAM还高——得不偿失。
- 数据复用率别算错:复用率不是拍脑袋定的。我建议用实际网络模型跑一遍数据流分析,看看每个层到底能复用多少次。
- HBM的功耗没那么低:虽然HBM的每比特功耗比GDDR6低,但它的接口电路(比如TSV、微凸点)功耗不小。算总账时别忘了这部分。
- 带宽计算要留余量:理论带宽和实际带宽之间,通常有20%-30%的差距。我习惯在计算时乘以1.3的安全系数。
好了,存储层次设计就聊到这儿。记住一句话:计算是主角,存储是后勤。后勤跟不上,主角再强也白搭。
公众号:蓝海资料掘金营,微信deep3321