一句话:提出编译器辅助的 GPU 寄存器文件合并读取设计,降低能耗并提升 IPC。
GPU 寄存器文件需维护大量线程状态,频繁访问与端口竞争会显著影响性能与动态能耗。本文提出 CORF,一种编译器辅助的合并操作数寄存器文件:利用编译器提示识别常被一起访问的寄存器对,通过寄存器打包将窄位宽操作数放入同一物理寄存器,从而把单条指令所需的多个寄存器读合并为一次物理读。为进一步增加合并机会,CORF++ 重构物理寄存器文件,允许在互斥子 bank 中合并不同物理寄存器的读,并将相应寄存器分配建模为二分边挫败图着色问题。评估显示,CORF++ 将寄存器文件动态能耗降低 17%,IPC 提升 9%。
The Register File (RF) in GPUs is a critical structure that maintains the state for thousands of threads that support the GPU processing model. The RF organization substantially affects the overall performance and the energy efficiency of a GPU. For example, the frequent accesses to the RF consume a substantial amount of the dynamic energy, and port contention due to limited ports on operand collectors and register file banks affect performance as register operations are serialized. We present CORF, a compiler-assisted Coalescing Operand Register File which performs register coalescing by combining reads to multiple registers required by a single instruction, into a single physical read. To enable register coalescing, CORF utilizes register packing to co-locate narrow-width operands in the same physical register. CORF uses compiler hints to identify which register pairs are commonly accessed together. CORF saves dynamic energy by reducing the number of physical register file accesses, and improves performance by combining read operations, as well as by reducing pressure on the register file. To increase the coalescing opportunities, we re-architect the physical register file to allow coalescing reads across different physical registers that reside in mutually exclusive sub-banks; we call this design CORF++. The compiler analysis for register allocation for CORF++ becomes a form of graph coloring called the bipartite edge frustration problem. CORF++ reduces the dynamic energy of the RF by 17%, and improves IPC by 9%.