所属: 基础设施层。本页边界: 为什么同一模型的不同阶段会分别受计算和显存带宽限制。
#核心公式
公式把数据在不同存储层之间的搬运分别计入;若多层搬运能够流水重叠,实际关键路径介于最大单层时间与各层时间之和之间。
#符号说明
| 符号 | 含义 | 单位/条件 |
|---|---|---|
| 纳入分析的存储层级数量 | 正整数 | |
| 第 条存储路径搬运的数据量 | Byte | |
| 第 条路径的有效带宽 | Byte/s | |
| 数据搬运对执行时间的贡献 | s | |
| 后文中的运算量、片外字节量、有效带宽、算术强度 | FLOPs、Byte、Byte/s、FLOP/Byte | |
| 权重、KV Cache、激活占用 | Byte | |
| 一般数据搬运时间、分片重载时间下界 | s | |
| 被重载的分片大小、设备间有效带宽 | Byte、Byte/s |
这里的 是实测有效带宽,不是产品标称峰值带宽。
#技术要点
- 寄存器/SRAM 容量小但最快,服务于局部复用。
- HBM 提供 GPU 主显存容量和高带宽,是 LLM 训练与推理的核心存储层。
- HBM 的高带宽来自三个同时作用的物理机制:TSV 垂直堆叠缩短信号路径、超宽总线并行传输、与 GPU 通过硅中介层物理邻近。
- DRAM/SSD 容量更大但延迟和带宽更差。
- decode 常反复读取权重和 KV,常比 prefill 更受带宽限制。
- 内存墙在大模型时代同时表现为带宽墙和容量墙:带宽墙限制单步解码速度,容量墙限制可运行的模型规模和上下文长度。
#原理与演进
#容量、带宽、延迟分工
| 层级 | 放置对象 | 为什么不能互相替代 |
|---|---|---|
| 寄存器 / 片上 SRAM | 当前线程或矩阵块的临时值 | 快但容量小,装不下整层权重 |
| HBM | 活跃权重、激活与 KV | 带宽高,但容量与成本受限 |
| 主机 DRAM | 卸载状态、数据缓存 | 访问需经过设备互联 |
| SSD / 分布式存储 | 数据集和持久化状态 | 容量大,随机访问和延迟不适合逐 token 计算 |
- 上式给出搬运时间下界:若必须读取 字节,链路有效带宽为 ,则 。
- 复用是关键:矩阵块只从 HBM 读一次,在 SRAM/寄存器中参与多次乘加。若每次运算都回写 HBM,峰值算力无法发挥。
- 预填充阶段多个 token 可共享权重加载;解码阶段批量小、每步重复读权重,算术强度往往较低。具体生成流程见推理笔记。
#从容量问题到 I/O 问题
- 参数放不下:分片、卸载或压缩。
- 参数放得下但读不快:增加复用、合并算子、提高批量。
- 注意力中间矩阵写回过多:分块并在线更新 softmax;FlashAttention 是精确注意力的 I/O 优化,而非更换注意力定义。原论文
#1. 两个不同问题:能否容纳、能否及时供数
设运算需要从某一层内存搬运 字节,该层有效带宽为 :
- 容量不足:目标张量不能同时驻留,必须分片、卸载或压缩。
- 带宽不足:张量能放下,但反复读取的速度跟不上计算单元。
- 延迟过高:很多小请求逐个等待返回,带宽尚未饱和却已拖慢关键路径。
- 同一模型可在训练阶段受容量限制、Prefill 受计算限制、Decode 受带宽限制;不能把三个问题都称为“显存不够”。
#2. 内存层级的技术含义
| 层 | 典型作用 | 长处 | 限制 |
|---|---|---|---|
| 寄存器 | 当前线程的累加器与临时值 | 极低访问开销 | 容量极小;占用多会减少并发 |
| 片上 SRAM/共享内存 | 一个计算块反复使用的 tile | 高速局部复用 | 容量有限,需显式或编译器调度 |
| HBM/设备主存 | 活跃权重、激活、KV | 容量和带宽兼顾 | 远慢于片上运算,容量仍有限 |
| 主机 DRAM | 数据缓存、卸载状态 | 容量较大 | 经设备互联访问有额外代价 |
| SSD/远端存储 | 原始语料与持久化 Checkpoint | 容量大 | 不适合逐 token 随机访问 |
表中是相对关系,具体容量与带宽随设备变化。技术判断应基于当前系统的有效值,而非固定数字。
#3. HBM:高带宽显存的核心原理
#3.1 HBM 是什么
HBM(High Bandwidth Memory,高带宽内存)是一种通过3D 堆叠将多层 DRAM 芯片垂直整合在一起的高性能内存。它不是一种新的存储介质——底层仍然是 DRAM 电容存储单元——而是通过封装和互联的重新设计,从根本上提升了内存的带宽密度。
HBM 解决的核心问题是:传统 DDR/GDDR 内存通过 PCB 走线与 GPU 通信,信号路径长、引脚数有限,带宽提升空间受限。HBM 将 DRAM 芯片直接堆叠在 GPU 旁边,用数千条垂直通道取代数十条 PCB 走线。
#3.2 为什么 HBM 快:三个同时作用的物理机制
机制一:TSV 垂直堆叠,缩短信号路径。
TSV(Through-Silicon Via,硅通孔)是在硅晶圆上蚀刻出垂直孔洞,填充铜等导电材料,使不同芯片层之间直接垂直电气连接。一个 12 层 HBM 堆叠结构包含数百万个 TSV。
传统 DRAM 封装使用金线键合,信号需要从芯片边缘引出、经过引线、到达基板,路径长且电阻大。TSV 让数据像乘坐“数据电梯”一样在堆叠芯片之间垂直移动,信号路径缩短到几微米级别,功耗更低、速度更高。每层 DRAM die 通过 TSV 直接连接到底层的逻辑 die,而非与其他 die 通信。
机制二:超宽总线,并行传输。
这是 HBM 与传统内存最本质的区别之一。标准 DDR5 接口宽度为 64 位,而 HBM3E 的运行宽度为 1024 位,HBM4 进一步提升至 2048 位。这意味着 HBM 在一个时钟周期内可以并行传输的数据量是 DDR 的 16–32 倍。
更宽的总线不仅仅意味着更多的导线——每个 I/O 引脚都需要独立的信号通路,加上电源和控制信号,单个 HBM3E 堆叠就需要与相邻 GPU 建立超过一千个连接。这种布线密度无法在 PCB 上实现,这是硅中介层和 2.5D 封装(如 CoWoS)不可或缺的根本原因。
HBM 芯片内部被划分为多个独立通道(HBM3 有 16 个通道),每个通道包含 128 位数据总线。多个通道可以同时工作,控制器可以交错访问不同通道,进一步提高并行度。
机制三:与 GPU 物理邻近,通过硅中介层直连。
HBM 堆栈与 GPU 芯片通过硅中介层(Silicon Interposer) 并排放置在同一个封装内。中介层是一层硅基板,上面布有高密度金属布线,将 GPU 与 HBM 之间的通信距离缩短到毫米级甚至更短。
传统方案中,GPU 需要通过 PCB 走线访问 DRAM 模块,距离以厘米计,且需要经过内存控制器、PHY 等中间环节。HBM 与 GPU 通过中介层上的微凸点直接连接,信号完整性更好,延迟更低,功耗也更低。CoWoS(Chip-on-Wafer-on-Substrate)是台积电提供的 2.5D 封装技术,将逻辑芯片与 HBM 堆栈集成在硅中介层上,自 2012 年起量产。
#3.3 HBM 的代际演进
| 代际 | 年份 | 最大数据速率 | 单堆栈带宽 | 接口宽度 | 单堆栈容量 | 关键变化 |
|---|---|---|---|---|---|---|
| HBM | 2013 | 1 Gbps | 128 GB/s | 1024 位 | 2 GB | 首个 3D 堆叠标准,4-Hi |
| HBM2 | 2016 | 2.4 Gbps | 307 GB/s | 1024 位 | 4/8 GB | 通道数翻倍至 8,支持 8-Hi |
| HBM2E | 2019 | 3.6 Gbps | 460 GB/s | 1024 位 | 4/16 GB | 数据速率提升 50%,支持 12-Hi |
| HBM3 | 2022 | 6.4 Gbps | 819 GB/s | 1024 位 | 16/24 GB | 通道数翻倍至 16,奠定 AI 训练内存基础 |
| HBM3E | 2023 | 9.6 Gbps | 1.2 TB/s | 1024 位 | 24/32 GB | 接近 1024 位接口的实际带宽极限 |
| HBM4 | 2025–2026 | ≥10 Gbps | ≥2 TB/s | 2048 位 | 36–64 GB | 接口宽度翻倍;基底 die 改用逻辑工艺 |
数据来源:
每一代 HBM 的带宽提升来自两个方向的乘积累加:数据速率提升(每针更快)和接口宽度扩展(更多通道并行)。HBM3 到 HBM3E 主要靠速率从 6.4 Gbps 提升到 9.6 Gbps;HBM3E 到 HBM4 则主要靠接口宽度从 1024 位翻倍到 2048 位,JEDEC 于 2025 年 4 月发布官方 HBM4 规范。
#3.4 HBM4 的架构变化:从通用内存到半定制组件
HBM4 引入了一个根本性的架构变化:基底 die(Base Die)从 DRAM 工艺改为代工厂逻辑工艺。前几代 HBM 的基底 die 与 DRAM 芯片使用相同的工艺制造;HBM4 的基底 die 采用台积电 12nm 或三星 SF 级逻辑工艺。
这不仅是工艺切换,而是功能的重新分配。基底 die 现在可以承载客户定制的逻辑电路,意味着 NVIDIA 的 HBM4 和 AMD 的 HBM4 在物理结构上将不同。内存正在从标准化的通用组件过渡为半定制组件——加速器厂商可以针对自己的内存访问模式优化 HBM 的基底逻辑。
实测进展:SK海力士的 12 层 HBM4 样品运行速度超过 10 Gbps,带宽达 2 TB/s;美光 36GB 12-Hi HBM4 支持 11 Gbps 引脚速度,带宽超过 2.8 TB/s,已于 2026 年 Q1 量产出货;三星计划展示 36GB 容量、3.3 TB/s 带宽的 HBM4。
#3.5 HBM 为什么昂贵
HBM 的成本远高于同等容量的 DDR 内存,原因集中在制造和封装的良率挑战上。
TSV 良率:TSV 直径只有几微米,纵横比(深度与宽度之比)很高,蚀刻和电镀步骤容易产生缺陷。一个 12 层 HBM 堆叠包含数百万个 TSV,一个连接不良就可能导致整个堆叠报废。供应商会在设计中内置 TSV 修复方案以降低损失。
晶圆减薄:为了堆叠芯片,每个晶圆必须被研磨到极薄。12 层 HBM 所需的芯片厚度约为 50 微米;16 层则需要减至 30 微米——不到人类头发丝厚度的一半。在这种厚度下,晶圆容易开裂和弯曲,而弯曲的晶圆无法以 HBM 所需的精度进行键合。
晶圆消耗:按比特计算,HBM 消耗的晶圆面积约为传统 DRAM 的两到三倍。当晶圆厂将产能分配给 HBM 时,DDR5 和 LPDDR 的产能都会受到挤压。
#4. 数据复用为什么比“多一次计算”更重要
若权重块 从 HBM 取一次,对 个输入向量执行乘法,搬运权重的成本由 次摊为一次。
- 训练与 Prefill 通常有较大的 ,矩阵乘可复用权重。
- Decode 单步的 往往较小,反复读权重;增加并发可提高 ,但 KV 和排队成本随之增长。
- 分块(tiling)把大矩阵拆为适合片上存储的块;块太小会重复加载,块太大放不下或使并发下降。
- 算子融合让相邻运算在片上消费中间值,避免“写回 HBM、下一算子再读出”。CUDA 最佳实践指南
#5. 张量在不同阶段放在哪里
| 张量 | 训练 | Prefill | Decode |
|---|---|---|---|
| 权重 | 前向与反向读取;有梯度和优化器状态 | 只读 | 每步反复读取 |
| 激活 | 需保留或重算以求梯度 | 当前前向短暂存在 | 单步激活较小 |
| KV | 训练常不以服务式 KV 缓存方式保留 | 建立提示词的历史 KV | 随上下文持续增长 |
| 优化器状态 | 更新参数必需 | 不需要 | 不需要 |
训练状态的精确字节账见分布式训练与显存;KV 随长度增长的公式见推理。
#6. 卸载与缓存:容量收益不是免费速度
把 字节状态从 HBM 卸到主机内存,可释放设备容量;需要再次使用时至少要付出传输时间:
- 若重载位于关键路径,模型虽能运行却可能远慢于纯设备内存方案。
- 若传输能与其他计算重叠,部分开销可隐藏;可隐藏量受依赖关系限制。
- 缓存只对重复访问有效;一次性流式数据应优化顺序读取,而不是期待缓存命中。
#7. 内存墙与双墙约束
#7.1 内存墙的定义
内存墙(Memory Wall)的概念诞生于 1990 年代初,描述的是处理器速度与 DRAM 速度之间不断扩大的差距。术语至今仍然存在,但在 AI 时代被赋予了新的含义:DRAM 和 HBM 正艰难追赶 LLM 对内存需求的爆炸式增长。
内存墙的本质是算力提升速度远超内存带宽提升速度。从 V100 到 B200,HBM 带宽增长约 9 倍(900 GB/s → 约 8 TB/s),而 FP8 计算能力从无到有,接近 2,000 TFLOPS。计算与带宽的增速差使得硬件的 ridge point(计算与带宽的平衡点)持续右移。
#7.2 带宽墙与容量墙
在大模型推理场景中,内存墙表现为两个相互关联的约束:
带宽墙:Decode 阶段每步仅处理少量 token,算术强度低,性能由权重读取和 KV Cache 传输速度决定。长上下文推理的 KV Cache 带宽消耗随序列长度 增长,这是一个“无论多少算力扩展都无法打破”的瓶颈。
容量墙:模型权重、KV Cache 和激活的总和超出 HBM 容量时,必须分片、卸载或量化。以 Llama 3 405B 为例,仅 FP16 权重就需要约 810 GB,加上优化器状态和梯度,总需求超过 2.5 TB。即使 B200 的 192 GB HBM3e 也无法单独容纳。
两堵墙导致计算单元利用率下降——GPU 和 TPU 的计算核心经常处于闲置状态,等待数据从内存到达。
#7.3 GPU 显存代际演进
| GPU | HBM 代际 | 容量 | 带宽 | 算力(FP16/FP8) | NVLink 带宽 |
|---|---|---|---|---|---|
| V100 (2017) | HBM2 | 16/32 GB | 900 GB/s | 125 TFLOPS | 300 GB/s |
| A100 (2020) | HBM2e | 40/80 GB | 2,039 GB/s | 312 TFLOPS | 600 GB/s |
| H100 (2023) | HBM3 | 80 GB | 3,350 GB/s | 990/1,979 TFLOPS | 900 GB/s |
| H200 (2024) | HBM3e | 141 GB | 4,800 GB/s | 990/1,979 TFLOPS | 900 GB/s |
| B200 (2025) | HBM3e | 192 GB | ~8,000 GB/s | 1,125/~2,250 TFLOPS | 1,800 GB/s |
数据来源:
每一代 HBM 带宽的提升直接转化为 decode 阶段吞吐的改善。H200 相比 H100 计算单元完全相同,仅通过 HBM3e 将带宽从 3.35 TB/s 提升到 4.8 TB/s、容量从 80 GB 提升到 141 GB,就显著改善了长上下文和高并发的推理表现。
#8. 内存技术的演进链
| 触发问题 | 方法 | 收益 | 新代价 |
|---|---|---|---|
| 算子重复搬运中间张量 | 融合、分块 | 降低 HBM 访问 | 片上资源占用增加 |
| 注意力分数矩阵过大 | I/O 感知的精确注意力 | 避免显式存储完整分数矩阵 | kernel 复杂、受块形状约束 |
| 权重/状态超过 HBM | 分片、卸载、量化 | 可运行更大模型 | 网络传输、精度或重算成本 |
| 多请求 KV 分配碎片 | 分页 KV 管理 | 提高可用缓存率 | 块映射与管理开销 |
| Decode 受 HBM 带宽限制 | HBM 代际迭代 + 低精度量化 | 单堆栈带宽持续提升 | 良率挑战、封装成本高 |
边界: FlashAttention 优化的是数据移动,不改变全注意力的数学依赖和通常的二次计算量;它的 kernel 原理在算子与 Roofline,长上下文能力问题在长上下文。