关于NVIDIA GPU Load/Store缓存及与CPU No-Write Allocate的疑问
GPU全局内存Store操作的缓存机制解析
核心结论
GPU的全局内存Store操作并非完全不涉及缓存,但和CPU的Store缓存逻辑存在本质差异,书中两处表述是从不同角度描述同一机制,并不矛盾。
对书中两处表述的拆解
p142“GPU仅能缓存Load操作,Store操作无法缓存”
这里的“无法缓存”指GPU不会为Store操作执行Write Allocate(写分配):当执行Store时,如果目标地址不在缓存中,不会将对应内存块加载到缓存再写入,而是直接准备向全局内存DRAM发起写入请求。这一机制确实类似CPU的No-Write Allocate模式。p158“全局内存的Load/Store均通过缓存中转”
这里的“中转”指Store操作会先写入写合并缓冲区(Write Combine Buffer)——这是GPU内存子系统中的临时缓存结构,作用是将多个零散的小Store操作合并为更大的内存事务,再批量写入DRAM,以此提升内存带宽利用率。需要注意的是,写合并缓冲区不属于传统意义上的L1/L2持久化缓存,它的存在是为了优化写入效率,而非像Load操作那样提供数据复用的缓存能力。
补充细节
- 不同GPU架构的具体实现有差异:Fermi及后续架构中,全局内存Store会经过L2缓存,但依然遵循No-Write Allocate规则——只有当Store目标地址已在L2缓存中时,才会写入L2;否则仍通过写合并缓冲区直接写向DRAM。
- 和CPU的核心区别:CPU的Store通常会执行Write Allocate,配合Write-Back或Write-Through策略实现缓存复用;而GPU的Store更偏向于批量Write-Through模式,不主动分配缓存行,核心目标是提升大规模并行场景下的内存写入吞吐量。
内容的提问来源于stack exchange,提问作者kdh
相关产品推荐
相关产品推荐

