Exposing Memory Access Patterns to Improve Instruction and Memory Efficiency in GPUs
Modern computing workloads often have high memory intensity, requiring high bandwidth access to memory. The memory request patterns of these workloads vary and include regular strided accesses and indirect (pointer based) accesses. Such applications require a large number of address generation instructions and a high degree of memory level parallelism. This article proposes new memory instructions that exploit strided and indirect memory request patterns and improve efficiency in GPU architectures. The new instructions reduce address calculation instructions by offloading addressing to dedicated hardware, and reduce destructive memory request interference by grouping related requests together. Our results show that we can eliminate 33% of dynamic instructions across 16 GPU benchmarks. These improvements result in an overall runtime improvement of 26% an energy reduction of 18% and a reduction in energy delay product of 32%
ACM Trans. Archit. Code Optim.