What happens when a GPU writes memory
22 days ago
- STG.E 是将数据写入全局内存的 GPU 指令,在加载和加法之后执行。
- 该指令读取三个寄存器(地址和数据)并发送到加载/存储单元(LSU),由后者将地址和掩码发送到合并器。
- 每个线程束大约每 6.1 个周期可发出一次存储操作,但 SM 每周期限制为 32 字节的存储量。
- 合并器将 32 个四字节访问转换为最少数量的 32 字节扇区(对于连续写入,通常为四个)。
- L1 缓存采用写直达策略:无论缓存行是否驻留,存储操作都直接传递到 L2;L1 可能在未命中时分配空间。
- L2 缓存采用 16 路组相联设计,使用 RRPV 替换策略(3 级)和写回缓冲区;8 脏规则主动清理缓存行以避免突发驱逐。
- 存储操作从 L2 确认回 SM,但数据可能在 L2 中保持脏状态直到被驱逐;内存屏障(membar.cta、membar.gl、membar.sys)确保不同作用域下的可见性。
- 驱动程序在内核后插入系统作用域内存屏障,使存储操作对主机可见,以支持 cudaMemcpyDeviceToHost。