gem5-gpu教程05 内存建模
memory-modeling|Details on how memory is modeled in gem5-gpu
gem5-gpu’s Memory Simulation
gem5-gpu在很大程度上避开了GPGPU-Sim的单独功能模拟,而是使用了gem5的执行中执行模型。因此,当执行存储/加载时,内存会被更新/读取。没有单独的功能路径。(顺便说一句,这并不是严格正确的。由于Ruby的一些特性,内存是在功能上模拟的,而不是保存在缓存层次结构中。但是,对于你看待模拟器的方式来说,这根本不重要。)
gem5-gpu使用Ruby来建模大多数计算单元(CU)的内存访问的功能和时序,包括负载-存储管道、地址合并、虚拟地址转换和缓存仲裁逻辑。这种细致的建模使得gem5-gpu能够更好地捕捉CPU和GPU之间的交互,而gem5的内存系统模型则没有专门针对GPU的优化。
Lifetime of a memory access
Here is a trace of a memory operation through gem5: - GPGPU-Sim executes a ld/st (see gpgpu-sim/gpgpu-sim/shader.cc: ldst_unit::memory_cycle_gem5)
- The warp-wide instruction is converted into lane operations and sent to the LSQ unit (see gem5-gpu/src/gpu/gpgpu-sim/cuda_core.cc: CudaCore::executeMemOp)
- The