一、AI芯片存储系统概述
大家好,我是老张。在芯片行业摸爬滚打了十几年,今天咱们来聊聊AI芯片的存储子系统。说实话,这个 topic 我特别有感触——当年做第一款AI加速器时,就被存储墙问题狠狠教训过。
1.1 AI芯片存储层次结构
先看一张图,这是我手绘的存储层次结构。你想想看,AI芯片里的数据流动,就像城市交通系统。
这张图我画了好几次才满意。从上往下看,离计算单元越近,速度越快但容量越小。说白了,这就是个金字塔结构。
- 寄存器文件 (RF):最靠近计算单元,容量最小但速度最快。我习惯把它比作「桌面上的工具」——随手就能拿到。
- L1缓存/本地SRAM:每个计算簇私有的存储。嗯,这里要注意,L1的大小直接影响数据复用效率。
- L2缓存/共享SRAM:多个计算簇共享。我在项目中遇到过,L2的带宽分配搞不好,整个芯片性能直接腰斩。
- HBM/片外DRAM:容量最大,但访问延迟高达几百个周期。说白了,这就是「仓库」——东西多,但取一趟很费时。
关键认知:AI芯片的性能瓶颈,往往不在计算单元本身,而在数据搬运的速度。我见过太多团队把算力堆到几百TOPS,结果存储带宽跟不上,实际性能只有理论值的30%。
1.2 存储墙问题
什么是存储墙?说白了就是「计算速度增长远快于存储速度增长」这个矛盾。
我给大家算笔账:
| 指标 | 计算单元 | 存储单元 | 差距 |
|---|---|---|---|
| 性能年增长率 | ~60% (摩尔定律+架构优化) | ~10% (DRAM带宽) | 6倍差距 |
| 能效比 (pJ/bit) | ~0.1 (MAC运算) | ~10 (DRAM访问) | 100倍差距 |
| 延迟 (ns) | ~0.3 (1GHz时钟) | ~50 (HBM访问) | ~170倍差距 |
你看这个表就明白了。计算单元越来越快,但存储的访问速度几乎原地踏步。为什么会这样?
- 物理限制:DRAM的电容充放电速度有物理极限,不像晶体管可以靠工艺微缩持续提速。
- 带宽瓶颈:片外总线的引脚数有限,HBM虽然带宽高,但成本也高得吓人。
- 功耗墙:数据搬运消耗的能量,远高于计算本身。我曾经测过一个项目,数据搬运功耗占了总功耗的60%以上。
避坑指南:我曾经在某个项目里,为了追求极致算力,堆了1024个MAC单元。结果流片回来一测,存储带宽只能喂饱其中300个。剩下的700个MAC单元大部分时间都在空转。嗯,这个教训让我明白了——算力是虚的,带宽才是实的。
1.3 带宽瓶颈分析
带宽瓶颈,说白了就是「数据管道太细」。咱们来拆解一下AI芯片里最常见的几个瓶颈点。
1.3.1 片外带宽瓶颈
以HBM2E为例,单颗HBM2E的带宽约460GB/s。听起来很大对吧?但你想想看,一个现代AI芯片的算力轻松上千TOPS,每TOPS每秒需要搬运多少数据?
我给大家算个典型场景:
// 假设:卷积层,输入特征图 224x224x64,权重 3x3x64x128
// 一次卷积计算量:224*224*64*3*3*128 ≈ 3.7 GFLOPs
// 需要搬运的数据量:
// 输入:224*224*64*4 ≈ 12.8 MB
// 权重:3*3*64*128*4 ≈ 0.3 MB
// 输出:224*224*128*4 ≈ 25.6 MB
// 总计:约 38.7 MB
// 如果算力是 100 TOPS,每秒可执行约 27 次这样的卷积
// 需要带宽:38.7 MB * 27 ≈ 1.04 GB/s
// 看起来够用?别急,这是理想情况
// 实际中,数据复用率低,带宽需求会放大 3~5 倍
// 真实需求:3~5 GB/s
你看,单层卷积就需要几个GB/s的带宽。而整个芯片有几十层网络同时运行,带宽需求轻松突破几百GB/s。HBM2E的460GB/s看起来够,但实际利用率往往只有60%~70%。
1.3.2 片内互联瓶颈
片内的问题更隐蔽。我遇到过最头疼的,是NoC(片上网络)的带宽分配问题。
- 多核争抢:多个计算簇同时访问共享L2缓存,总线瞬间拥堵。
- Bank冲突:SRAM的bank划分不合理,导致访问冲突,有效带宽打折扣。
- 路由延迟:数据从L1到L2再到HBM,每跳都有延迟。我见过一个设计,数据路径上绕了7个路由节点,延迟直接翻倍。
我的经验:做存储子系统设计时,我习惯先画一张「数据流图」,把每个数据块的路径、带宽需求、延迟要求都标出来。然后对着这张图,一个一个瓶颈去优化。说白了,就是「先找堵点,再通管道」。
1.3.3 带宽利用率问题
很多人只盯着峰值带宽,却忽略了利用率。我给大家看个真实数据:
| 场景 | 理论带宽 | 实际带宽 | 利用率 |
|---|---|---|---|
| 连续大块读取 | 460 GB/s | ~400 GB/s | ~87% |
| 随机小粒度访问 | 460 GB/s | ~50 GB/s | ~11% |
| 混合读写模式 | 460 GB/s | ~200 GB/s | ~43% |
看到没?随机访问的利用率只有11%。这就是为什么我反复强调——数据布局和访问模式,比带宽数字本身更重要。
嗯,总结一下这节的核心:
- 存储层次结构决定了数据搬运的成本
- 存储墙是计算和存储发展速度不匹配的必然结果
- 带宽瓶颈既有片外的物理限制,也有片内的架构问题
- 利用率比峰值带宽更值得关注
下一节我们会深入讲具体的带宽优化技术。不过在那之前,我建议你先把自己芯片的「数据流图」画出来——相信我,这一步省不了。