GPU/加速器的缓存与内存层次
更新时间:2026-10-01。CPU 那套“大缓存自动透明”的直觉搬到 GPU/加速器上常常不成立。
本文要回答的问题
- GPU 靠什么隐藏访存延迟?
- 为什么访存“合并”如此重要?
一、层次与并行
GPU 有成千上万线程,用海量并行在某些线程等待时切换到其它线程来隐藏延迟,而不是依赖大缓存。层次通常是寄存器 → 片上 shared memory(软件显式管理)→ L1 → L2 → 高带宽 HBM。
二、合并与拷贝
一个 warp 内线程若访问连续地址,硬件合并成少量事务(coalescing),带宽利用率高;离散访问则产生大量事务。设备与主机内存多为显式拷贝、一致性较弱;建模要看 occupancy(在驻留线程数)和片上存储复用。
三、常见坑
- 用 CPU 缓存命中率思维优化 GPU。
- 忽略访存合并,带宽骤降。
- 不管理 shared memory 与显式传输。
小结
加速器靠并行隐藏延迟、软件管片上存储,合并访存决定带宽,主机-设备边界要显式处理。下一篇 缓存一致性互连与目录。
总结
GPU/DSA 的存储层次不是 CPU 的缩小复制:它靠成千上万线程的海量并行,在某些线程等待访存时切换到另一些线程来隐藏延迟,而不是依赖透明大缓存;寄存器、软件显式管理的 shared memory、L1/L2 与 HBM 逐级展开,warp 内访问连续地址时 coalescing 合并成少量事务、离散访问则带宽骤降,主机与设备之间通常还得显式拷贝。优化加速器先想 occupancy 与访存模式,照搬 CPU 命中率思维必然踩空。