软件栈
双缓冲
也称为 double buffering、triple buffering、三缓冲、预取流水线、DMA 重叠
先用大白话
双缓冲在芯片还在计算当前数据块时就预取下一块,把内存延迟藏在有效计算之后。
技术定义
双缓冲是一种 kernel 技术,分配两个片上缓冲区,让向其中一个的 DMA 传输与另一个上的计算重叠;三缓冲把同样的思路扩展为更深的流水线。
工程细节
在 TPU 上,Pallas kernel 通过在 MXU 处理当前块时把下一块预取进 VMEM 来隐藏 HBM 延迟。两个块必须同时放进 VMEM,因此计算块大小决定了预取能跑多远。SparseCore 上的 ReduceScatter 用双缓冲在传输一个 chunk 的同时累加另一个,把本地归约和 die-to-die 传输与更慢的芯片间流量重叠。grouped matmul 对专家权重做三缓冲,让下一组的权重在当前组计算时已在途。异步 GDN 状态传输使用同样的模式,起初占用了额外 VMEM,直到复用 scratch buffer 才解决。
为什么重要
报告的 TPU kernel 收益中,很大一部分来自重叠而不是更快的算术。缓冲预算不当会表现为暴露的内存延迟,或者 kernel 其他部分的 VMEM 回退。
如何在 InferenceX 中解读
把 ragged paged attention 的计算块与预取块分开,为预取流水线留出空间,Qwen3-0.6B 的 decode 吞吐量提高 49%。VMEM 恢复后,异步 GDN 状态传输在 8k1k 并发 512 下带来 11.3% 收益。batched ragged paged attention 采用三缓冲来减少填充并改善流水线。