L1 HBM / L2 DRAM / L3 CXL.mem:三级存储区别

← 返回 §CXL 三级存储 · 硬件拓扑 02b · 访问时序 02c · prefetch window · CXL vs RDMA · 答疑目录


问题

CXL 硬件拓扑图 里出现 L1 HBM、L2 Local DRAM、L3 CXL Pool——三者物理上是什么?在 Engram 部署里各放什么、差在哪?


结论

HBM(L1)Host DRAM(L2)CXL.mem(L3)
物理位置焊在 GPU 封装内CPU 插槽旁 主板内存条CXL 扩展内存卡,经 Switch 挂到 PCIe/CXL fabric
谁直接访存GPU SM(最高带宽)CPU;GPU 经 PCIe 间接读CPU / GPU 经 CXL 协议 load/store(像内存,不像网卡消息)
典型容量数十 GB / 卡TiB 级 / 节点论文 256 GB/卡;多机池 4 TB / 8 机
延迟最低(GPU 片上)本地 DRAM 级论文:≈ 本地 DRAM(远好于小包 RDMA)
带宽特点极高(TB/s 级),容量瓶颈高,按节点私有交换机聚合 512 GB/s多机共享一份表
Engram 放什么MoE/Attn 权重、hidden、gate/conv 小参数、prefetch staging热 embedding 缓存、CPU offsets[]、bounce buffer、CXL 的 mmap 窗口完整 Engram embedding 大表(只读、DAX mmap)
大表能否全放下❌ 装不下百亿参数表⚠️ 单机可放一部分;多机各拷一份贵机架级共享一份

一句话HBM = GPU 算力旁边的小而快内存DRAM = CPU 旁边的大内存(可当中间缓存)CXL.mem = 用内存语义挂在 fabric 上的超大扩展池,专扛 Engram 只读大表 + 多机共享


1. 三种介质分别是什么

HBM

  • 是什么:与 GPU die 2.5D/3D 封装的专用 DRAM 栈(如 H100 上的 HBM2e/HBM3)。
  • 特点:带宽极高、延迟最低,但 每卡只有几十 GB~百余 GB,且 只有 GPU 能高效用
  • 类比:GPU 的「工作台台面」——算子权重、激活、临时 buffer 必须在这儿才能跑满算力。

Host DRAM

  • 是什么:服务器主板上 DDR4/DDR5 内存条,CPU 通过内存控制器访问。
  • 特点:容量 比 HBM 大一个数量级以上(单节点可达 TB),延迟低,但 GPU 访问要经过 PCIe(除非 pinned + DMA)。
  • Engram 语境:奠基论文把大表 offload 到 Host DRAM,异步 prefetch 进 HBM,吞吐损失 <3%;CXL 论文里 L2 还可做 Zipf 热 n-gram 缓存,命中则不必每次打到 L3。

CXL.mem

  • 是什么:符合 CXL.mem 协议的 扩展内存设备(内存语义设备),经 CXL Adapter + Switch 接到 CPU/GPU 同一 fabric。
  • 与「普通 DRAM」的区别
  • 不在 主板 DIMM 槽里,而是 扩展卡 / 池化设备
  • 多主机可通过 Switch 映射到各自地址空间共享物理一份数据(Engram 表只读,无需 cache coherence);
  • 软件用 DAX + mmapcxl_base + offset[i] 按 cache line 细粒度 load/store,适合 Engram 5 KB×多段离散小读
  • 与 RDMA 池的区别:RDMA 是 消息式 远端读写,小包效率差;CXL 是 字节寻址内存,延迟接近 DRAM(见 CXL 论文 Figure 3/5/6)。

2. Engram 三级分层

CXL 论文 Figure 4 把部署抽象为三层(与 02b 拓扑图 一致):

L3 CXL Pool 完整 embedding 表(只读,多机一份)
 | prefetch / memcpy
L2 Host DRAM 热缓存、CPU 算 offsets、可选中转
 | DMA / P2P
L1 GPU HBM staging e_t -> W_K,W_V, gate, conv -> 写回 H
步骤典型位置说明
[hash / offsetsCPU + L2
读表L3(未命中热缓存时)离散小读;可 overlap 前层 GPU 计算
热命中L2 或 L1 缓存Zipf:高频 n-gram 不必每次访问 L3
gate / conv / AttnL1 HBM需要 $h_t$,必须在 GPU

数据通路:

  • CXL → CPU:OpenMP 并行 memcpy(延迟 ≈ DRAM)
  • CXL → GPU(推荐)cxl2vram_copy P2P,离散 embedding 直进 HBM staging

详见 02c 访问时序


3. 为什么 Engram 需要三层,而不是「全放 HBM」

  1. 表太大:百亿参数级 embedding 放不进 HBM;全复制到每机 DRAM 贵且浪费
  2. 访问又小又碎:每 token 每层约 5 KB、多段随机读——适合 内存语义细粒度读,不适合 RDMA 小包风暴。
  3. 索引可提前算:与 GPU 算力 overlap prefetch(~56 μs 窗口 / 层,见 overview §②)。
  4. 多机推理L3 共享一份表 + L2/L1 热缓存,比每节点 DRAM 全副本更省。

4. 和「奠基论文只用 DRAM offload」的关系

阶段存储
Engram ①(2601.07372)大表 offload 到 Host DRAM,PCIe prefetch 到 HBM
CXL Pooling ②(2603.10087)表升级到 L3 CXL 共享池;L2 热缓存 + L1 staging 逻辑 不变

CXL 论文结论:端到端吞吐 CXL ≈ DRAM(如 Qwen3-4B 1.2% 损失),成本上多机大表更优。


5. 速查:该把什么放在哪

数据推荐层级
Transformer / MoE 权重L1 HBM
当前 hidden、KV(若在本机)L1 HBM
Engram gate / ShortConv 参数L1 HBM(小)
prefetch 到的 $e_t$ / embedding 行L1 staging
高频 embedding 缓存L2(可选 L1 更小缓存)
完整 Engram 表L3 CXL(或单机时 L2 DRAM
hash offsets[] 计算CPU(不占 HBM 算力)

参考