一、AI芯片存储系统概述

大家好,我是老张。在芯片行业摸爬滚打了十几年,今天咱们来聊聊AI芯片的存储子系统。说实话,这个 topic 我特别有感触——当年做第一款AI加速器时,就被存储墙问题狠狠教训过。

1.1 AI芯片存储层次结构

先看一张图,这是我手绘的存储层次结构。你想想看,AI芯片里的数据流动,就像城市交通系统。

AI芯片存储层次结构 计算单元 (PE/ALU) 寄存器文件 (RF) 容量: 几十KB | 延迟: 1~2周期 L1 缓存 / 本地SRAM 容量: 几百KB | 延迟: 2~5周期 L2 缓存 / 共享SRAM 容量: 几MB | 延迟: 10~20周期 HBM / 片外DRAM 容量: 几十GB | 延迟: 几百周期 速度越来越慢 容量越来越大 离计算单元越来越近

这张图我画了好几次才满意。从上往下看,离计算单元越近,速度越快但容量越小。说白了,这就是个金字塔结构。

  • 寄存器文件 (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%。这就是为什么我反复强调——数据布局和访问模式,比带宽数字本身更重要

嗯,总结一下这节的核心:

  • 存储层次结构决定了数据搬运的成本
  • 存储墙是计算和存储发展速度不匹配的必然结果
  • 带宽瓶颈既有片外的物理限制,也有片内的架构问题
  • 利用率比峰值带宽更值得关注

下一节我们会深入讲具体的带宽优化技术。不过在那之前,我建议你先把自己芯片的「数据流图」画出来——相信我,这一步省不了。


专注资料整理