第3章:三级存储基础与延迟带宽 cheat sheet
HBM3e / DRAM / 远端 RDMA pool / NVMe SSD 四档存储介质的延迟、带宽、容量、单位成本——给放置算法的物理底座
第 2 章建好了访问规律的”指纹”,这一章给”指纹该被印到什么材料上”的物理底座。任何分层放置算法都最终要落在物理介质的延迟、带宽、容量、单位成本四个数字上。本章把 HBM3e、DRAM、远端 RDMA 内存池、NVMe SSD 四档介质的关键参数压成一份 cheat sheet,给出跨层搬运的成本经济学,识别出三个对放置算法决定性的”数量级阈值”,最后用类 Roofline 的分析告诉你给定一份 AccessProfile,该数据”物理上”应该放哪一级——这是后续 Ch9 决策算法的硬约束。
📑 目录
- 1. 为什么硬件 cheat sheet 是调度的底座
- 2. 四档介质详解
- 3. 综合 cheat sheet:延迟/带宽/容量/单位成本
- 4. 跨层搬运的成本经济学
- 5. 三个决定性的数量级阈值
- 6. 类 Roofline 分析:数据该放哪一级
- 7. 物理底座对放置算法的硬约束
- 自我检验清单
- 参考资料
1. 为什么硬件 cheat sheet 是调度的底座
1.1 任何调度算法都跑在四个物理常数上
不论 LRU、LP、RL、还是某种神算法,最终决策都要回答:“把对象 X 从层级 A 挪到层级 B,值不值得?”——这个问题等于:
收益 = (A 的访问成本 - B 的访问成本) × 未来访问次数
代价 = 搬运一次的字节 × 跨层带宽倒数 + miss 时延
🌟 关键事实:收益和代价的所有变量都是物理常数 + 工作负载常数——前者由介质决定,后者由 AccessProfile 决定(第 2 章已建模)。调度算法不创造性能,它只是在物理上限内做最优搬运。
1.2 长记忆系统的”四档”而不是”三级”
传统讨论说”HBM-DRAM-SSD 三级”——但长记忆系统多了一档:远端 RDMA 内存池(Mooncake 这类系统的 KV pool)。它的延迟、带宽、容量都和本地 DRAM、本地 SSD 不在同一档,必须独立建模。
本地 HBM ── 本地 DRAM ── 远端 RDMA Pool ── 本地/远端 NVMe SSD
8 TB/s 0.5 TB/s 50-200 GB/s 5-7 GB/s
192 GB 1-2 TB 数十 TB-PB PB-EB
⭐ 设计含义:本系列后续放置/迁移算法永远是四档,不是三级。漏掉远端 RDMA pool 这一档,会得出错误的 trade-off。
2. 四档介质详解
2.1 HBM3e(显存) — 极致带宽 / 极小容量 / 极贵
| 维度 | 量级(以 NVIDIA Blackwell B200 为代表) |
|---|---|
| 单 GPU 容量 | 192 GB |
| 单 GPU 带宽 | ~8 TB/s |
| 访问延迟 | 几十 - 百 ns 量级 |
| 单位 GB 成本 | 数据中心 GPU 每 GB 折合数百-数千美元 |
| 主要瓶颈 | 容量 + 单位成本 |
🍎 类比:HBM 就像车上的副驾位置——离司机最近、最贵、永远不够用。
📍 放置原则:HBM 留给”高频 + 强延迟敏感 + 短生命周期” 的数据,典型代表是 active KV(decode 阶段)。
2.2 本地 DRAM — 主流容量 / 中等带宽 / 中等成本
| 维度 | 量级 |
|---|---|
| 单服务器容量 | 1-3 TB DDR5(高端配置) |
| 单服务器带宽 | ~0.5 TB/s 量级(取决于通道数) |
| 访问延迟 | ~100 ns |
| GPU↔DRAM 带宽 | NVLink-C2C ~900 GB/s(Grace-Blackwell);PCIe Gen5 ~64 GB/s |
| 单位 GB 成本 | 几美元-几十美元 |
| 主要瓶颈 | 带宽相对 HBM 低一个量级 |
🍎 类比:DRAM 是后排座位——离司机近,容量大很多,带宽是 HBM 的 1/10 量级。
📍 放置原则:DRAM 是”溢出 + 中频”数据的归宿:spilled KV、向量库导航结构、active embedding。
⭐ 关键事实:Grace-Blackwell 的 NVLink-C2C 把 HBM↔DRAM 拉到 900 GB/s 缓存一致访问——让”用 DRAM 当 HBM 扩展”在工程上真正可行(参考模块零第 2 章)。
2.3 远端 RDMA 内存池 — 大容量 / 中带宽 / 受网络拓扑约束
| 维度 | 量级 |
|---|---|
| 池容量 | 几十 TB - PB(随节点数线性扩) |
| 单 GPU 拉取带宽 | 50-200 GB/s(取决于 IB / RoCE 配置 + GPUDirect RDMA) |
| 访问延迟 | 微秒级(几 µs - 几十 µs) |
| 单位 GB 成本 | 比本地 DRAM 略低(摊到多节点) |
| 主要瓶颈 | 网络带宽 + 跨节点一致性 |
🍎 类比:远端 RDMA pool 像大客厅——你能去用,但要走过道(网络),每次去要花几个微秒,但容量随心放大。
📍 放置原则:跨实例可复用的数据应该放进来——KV pool、跨节点共享 prefix、热点向量索引片段。Mooncake 的 KVCache 池就是典型应用。
2.4 NVMe SSD — 极大容量 / 低带宽 / 高随机延迟
| 维度 | 量级 |
|---|---|
| 单盘容量 | 几 TB - 几十 TB(单盘),节点级 PB 起步 |
| 单盘顺序带宽 | 5-7 GB/s(PCIe Gen5 NVMe) |
| 单盘随机 4K 读延迟 | ~100 µs 量级 |
| 单盘随机 IOPS | 百万级(QD32+) |
| 单位 GB 成本 | 极低(0.05-0.5 美元/GB 量级) |
| 主要瓶颈 | 顺序带宽 + 随机延迟 + IO 放大 |
🍎 类比:SSD 是地下室——容量极大极便宜,但每次取东西要花百微秒级时间,且不善于”随便从一堆里抓一小撮”(随机 IO)。
📍 放置原则:长生命周期 + 大对象 + 顺序读为主的数据 → SSD。多模态原始 blob、冷向量、归档 KV 都该在这。
⭐ GPUDirect Storage 的意义:NVMe → GPU HBM 直接 DMA,绕开 CPU 缓冲。带宽接近线速、延迟降一截、CPU 几乎不参与。给”长记忆数据冷热演化”提供了关键工程基础(详见模块零第 4 章)。
3. 综合 cheat sheet:延迟/带宽/容量/单位成本
3.1 一张表速查
| 介质 | 容量(单节点) | 带宽 | 访问延迟 | 单位 GB 成本(相对) | 适合数据 |
|---|---|---|---|---|---|
| HBM3e | ~200 GB | 8 TB/s | 100 ns | 1000× | active KV、active 向量 |
| DRAM(DDR5) | 1-3 TB | 0.5 TB/s | 100 ns(本地) | 50× | 溢出 KV、向量导航、热 embedding |
| 远端 RDMA Pool | 数十 TB - PB | 50-200 GB/s | µs 级 | 30× | 跨实例 KV pool、共享 prefix |
| NVMe SSD | PB | 5-7 GB/s 顺序 / 100k IOPS 随机 | 100 µs | 1× | 多模态 blob、冷向量、归档 |
📌 单位 GB 成本一栏是相对量级(以 NVMe 为 1×),具体数字随时间和市场波动。
3.2 三个跨数量级的差距
带宽: HBM ─── DRAM ─── 远端 ─── NVMe顺序
8 TB/s 0.5 TB/s 100 GB/s 7 GB/s
▲ ▲ ▲ ▲
│ │ │ │
16× 5× 14× —
(15× 比 SSD) (7× 比 SSD) (15× 比 SSD)
延迟: HBM ─── DRAM ─── 远端 ─── NVMe随机
100 ns 100 ns 几 µs 100 µs
▲ ▲ ▲ ▲
│ │ │ │
~1× ~1× ~30× ~1000×
(本地常数) (网络跳) (闪存物理)
容量: HBM ─── DRAM ─── 远端 ─── NVMe
~200 GB ~2 TB ~100 TB ~PB
▲ ▲ ▲ ▲
│ │ │ │
10× 50× ~10× —
累积下来,SSD 是 HBM 的 5000-10000×
🌟 核心观察:带宽差 ~1000 倍、延迟差 ~1000 倍、容量差 ~10000 倍、成本差 ~1000 倍——四档介质在四个维度上都是数量级差距,没有一种数据放某一级”凑合也行”。
3.3 速查口诀
🧠 HBM 装”现在用”,DRAM 装”马上用”,RDMA 池装”邻居在用”,SSD 装”以后可能用”。
4. 跨层搬运的成本经济学
4.1 一次搬运的物理代价
把对象 X(大小 B 字节)从层级 A 搬到层级 B 的总耗时:
搬运耗时 ≈ B / min(BW_A_out, BW_B_in) + latency_setup
| 路径 | 典型 1 GB 搬运耗时 |
|---|---|
| HBM → DRAM | ~125 ms(NVLink-C2C 900 GB/s 双向 ≈ 单向 450 GB/s) |
| DRAM → SSD | ~150 ms(NVMe 顺序 ~7 GB/s) |
| 远端 RDMA → 本地 HBM | ~10-20 ms(100 Gbps 链路 + GPUDirect RDMA) |
| SSD → HBM(直 DMA, GDS) | ~150 ms |
| SSD → CPU → HBM(传统) | ~300 ms+(双倍 + bounce buffer) |
📍 设计含义:单次搬运的物理上限就是这几档——任何调度算法在这些数字之上做不出额外加速,只能选择”少搬 / 不搬 / 重叠搬运”。
4.2 搬运 vs 重算的取舍
KV Cache 的特殊性:miss 时不一定要从下一级搬运,可以直接重 prefill。这给出第一个非平凡的成本对比:
搬运 KV from SSD: 150 ms (搬一次 1 GB KV)
重新 prefill: 看模型 / context 长度
- 32K context, 70B 模型 ≈ 几秒
- 1M context, 70B 模型 ≈ 几十秒到分钟
🌟 关键洞察:对长 context KV,搬运的成本远低于重 prefill——这是 AttentionStore / LMCache / Mooncake 这一系架构的物理基础。但对短 prompt KV,直接重算反而便宜——这就是为什么 prefix cache 系统通常只缓存超过某长度阈值的 KV。
4.3 搬运的”放大效应”
第 2 章讲过 IO 放大——这里给具体物理代价:
| 数据类型 | 单查询应用层 IO | 物理 SSD IO 次数 | 实际延迟 |
|---|---|---|---|
| KV 整段拉(顺序) | 1 | 几个大块读 | ~150 ms / GB |
| 向量索引图遍历 | 1 query | 100-1000 次 random IO | 几 ms - 几十 ms |
| 多模态 blob | 1 对象 | 几次大块 | ~150 ms / GB |
| Scratchpad 回放 | 1 task | 几十次中等粒度 | 几 ms - 几十 ms |
⭐ 决策启发:向量索引在 SSD 上的 P99 抖动是核心痛点(因为 100-1000 次 random IO 任何一次抖动都被放大),这是为什么 DiskANN 主流方案要把 PQ-compressed 全量副本放 RAM——避开 SSD 随机 IO 的尾部延迟。
4.4 一个工程提醒:NVLink-C2C 不是免费午餐
Grace-Blackwell 的 NVLink-C2C 让”GPU 透明读 CPU 内存”成为可能,但:
- 它走的是 buffered/coalesced 的内存协议,不是任意随机访问都能跑出 900 GB/s
- 小粒度随机访问(< 128B)的实际带宽远低于峰值
- 跨 NUMA 访问、跨 superchip 访问性能下台阶
📍 务实建议:把 NVLink-C2C 当作”快得多的 PCIe”,不是”慢一点的 HBM”。批量 + 顺序访问能拿满,随机小粒度访问要谨慎。
5. 三个决定性的数量级阈值
把上面的物理参数浓缩成三个”决策阈值”——它们直接决定后续放置算法的分支结构:
5.1 阈值 T1:1 µs — HBM/DRAM 与远端 RDMA 的分水岭
- 本地 HBM/DRAM 访问 ~ ns 级
- 远端 RDMA 访问 ~ µs 级(差三个数量级)
- 任何要求 sub-µs 延迟的访问必须本地
📍 应用:active KV(decode 每 step 触发,要求 µs 级以内完成)只能 HBM 或本地 DRAM。
5.2 阈值 T2:100 µs — 内存与 NVMe 的分水岭
- 本地内存 ~ 100 ns - µs
- NVMe random IO ~ 100 µs
- 差 ~ 1000 倍
📍 应用:任何”突发随机访问 + 延迟敏感”的数据不能进 SSD —— 即使 SSD 容量便宜也得忍痛放 DRAM。这就是 DiskANN 必须把 PQ 副本放 RAM 的物理原因。
5.3 阈值 T3:GB 级搬运 ~ 100 ms — 工作负载步长上限
一次 GB 级跨层搬运需要 100-300 ms。这意味着:
- 如果 token 间隔 < 50 ms(典型 decode TPOT),GB 级搬运不能阻塞前向路径
- 必须用 prefetch / 重叠 / 流式
📍 应用:Ch10 自适应迁移章节的核心约束就是 T3——任何阻塞主路径的搬运都是 SLO 杀手,只能后台化。
5.4 三个阈值的层次关系
延迟轴: T1(1µs) T2(100µs) T3(100ms)
│ │ │
─────────┼─────────┼─────────────────┼─────────► 时间
ns 级访问 │ µs 级访问 │ 100µs 级访问 │ ms 级搬运
│ │ │
本地内存 内存与 SSD GB 级跨层
必须本地 的硬分界 只能后台
放置含义: active 数据 sub-second 数据 预取 / 流水
只能 HBM/DRAM 不能纯靠 SSD 才能容忍
🌟 三个阈值合在一起:给放置算法划出三层”硬约束区”——超过 T1 必须容忍, 超过 T2 必须缓冲, 超过 T3 必须重叠。Ch9 之后所有算法都在这三道护栏之内做优化。
6. 类 Roofline 分析:数据该放哪一级
把第 2 章的 AccessProfile 和本章的物理参数对接,得到一个**“该放哪一级”的快速决策图**。
6.1 决策维度:访问频率 × 访问粒度
访问频率
↑ ┌───────────────┬───────────────┬───────────────┐
高频 │ HBM(必须) │ HBM 或 DRAM │ DRAM │
│ (active KV) │ (active 向量) │ (active blob │
│ │ │ embedding) │
├───────────────┼───────────────┼───────────────┤
中频 │ DRAM │ DRAM 或 │ RDMA pool │
│ (spilled KV) │ RDMA pool │ 或 SSD │
│ │ (向量索引) │ │
├───────────────┼───────────────┼───────────────┤
低频 │ SSD │ SSD │ SSD │
│ (历史 KV) │ (冷向量) │ (多模态 blob) │
└───────────────┴───────────────┴───────────────┘
小粒度(KB) 中粒度(MB) 大粒度(GB+)→ 访问粒度
6.2 用 IO 放大系数修正
上面是粗略图——还要乘上 IO 放大:
有效访问频率 = 应用层访问频率 × IO 放大系数
向量索引应用层访问中频,但放大系数 100-1000 倍,实际等价于高频——因此即使应用层”中频”,索引导航结构还是要进 DRAM 而不是 SSD。
6.3 用失效代价做最后修正
最后一道修正:miss 代价高的数据要往上挪一级。
最终放置 = base_placement(频率, 粒度) + bonus(失效代价)
例:KV Cache 频率”中”(spilled session),粒度”中”,base 应该是 DRAM——但因为 KV miss 代价是”重 prefill”,bonus 把它往 HBM/DRAM 推得更激进。
🌟 设计准则:频率 × 放大系数 → 选 base 层级;失效代价 → 微调 ±1 层。这是 Ch9 静态放置策略的基本骨架。
7. 物理底座对放置算法的硬约束
把本章压成五条”调度算法不能违反”的硬约束:
| 硬约束 | 物理依据 |
|---|---|
| C1 sub-µs 访问只能本地 | T1 阈值,远端跨网络至少 µs 级 |
| C2 突发随机访问不能纯靠 SSD | T2 阈值,SSD 随机延迟 100 µs 量级 |
| C3 GB 级搬运不能阻塞主路径 | T3 阈值,搬运 ≥ 100 ms |
| C4 HBM 必须留给”现在正在用”的少量数据 | HBM 容量 ~200 GB,工作集动辄数 TB |
| C5 远端 RDMA pool 是”中带宽 + 大容量”专用通道 | 50-200 GB/s 比 SSD 高一个量级,适合跨实例热数据共享 |
⭐ 算法工程师视角:C1-C5 是”输入约束”,任何放置算法的搜索空间是这五条之内的可行解集——不要试图打破物理(没用),要在物理之内找最优。
✅ 自我检验清单
- 四档介质:能默写 HBM3e / DRAM / 远端 RDMA pool / NVMe SSD 各自的容量、带宽、延迟量级
- 数量级差距:能说出”带宽 ~1000×、延迟 ~1000×、容量 ~10000×、成本 ~1000ד四个数字
- 三个阈值:能默写 T1=1µs / T2=100µs / T3=100ms 各自的物理分水岭与放置含义
- NVLink-C2C 注意点:能解释为什么”900 GB/s 不是任意访问都能拿到”
- GPUDirect Storage 价值:能讲清”绕开 CPU bounce buffer”的工程意义
- 搬运 vs 重算:能用 KV 的例子讲清”什么时候搬运比重 prefill 便宜”
- IO 放大放大物理代价:能粗略估算向量索引一次查询的 SSD random IO 时延
- 类 Roofline 决策图:能用”频率 × 粒度 + 放大系数 + 失效代价”给一份具体数据做放置建议
- C1-C5 硬约束:能复述 5 条物理硬约束,每条都举一个反例(违反它会发生什么)
📚 参考资料
硬件白皮书 / 规格
- NVIDIA Blackwell GB200 NVL72 产品页:nvidia.com/en-us/data-center/gb200-nvl72/ —— HBM3e / NVLink-C2C / Grace 数据来源
- NVIDIA Hopper H100 白皮书:resources.nvidia.com/en-us-tensor-core
- NVIDIA GPUDirect Storage 用户指南:docs.nvidia.com/gpudirect-storage/
- NVMe 主流盘规格(Intel / Samsung / Solidigm 等的 PCIe Gen5 数据中心系列)
经典系统层论文
- HeMem (ASPLOS’21) —— DRAM-PMEM 自动 tiering 经典
- TPP (Meta ASPLOS’23) —— DRAM-CXL hot/cold tiering
- Pond (Microsoft ASPLOS’23) —— Azure CXL memory pool 实测数据
Roofline 与性能模型
- Roofline: An Insightful Visual Performance Model(Williams et al., 2009) —— 经典 Roofline 论文
- AI Systems Performance Engineering(Chris Fregly, O’Reilly 2025) —— 模块零的蓝本,Goodput / 跨层调优心智
本系列其它模块
- 模块零第 2 章 —— Grace-Blackwell / NVLink-C2C / NVL72 全景(本章硬件数据的来源)
- 模块零第 4 章 —— Magnum IO / GPUDirect Storage / NIXL
- 模块十三 —— RDMA / CXL / 远端内存事务系统
调研笔记
- 项目调研 - 长记忆分离式存储 —— FlexGen / Mooncake / DiskANN 论文笔记