  Graphics Processing Units (GPUs) maintain a large register file to increase
the thread level parallelism (TLP). To increase the TLP further, recent GPUs
have increased the number of on-chip registers in every generation. However,
with the increase in the register file size, the leakage power increases. Also,
with the technology advances, the leakage power component has increased and has
become an important consideration for the manufacturing process. The leakage
power of a register file can be reduced by turning infrequently used registers
into low power (drowsy or off) state after accessing them. A major challenge in
doing so is the lack of runtime register access information.
  This paper proposes GREENER (GPU REgister file ENErgy Reducer): a system to
minimize leakage energy of the register file of GPUs. GREENER employs a
compile-time analysis to estimate the run-time register access information. The
result of the analysis is used to determine the power state of the registers
(ON, SLEEP, or OFF) after each instruction. We propose a power optimized
assembly instruction set that allows GREENER to encode the power state of the
registers in the executable itself. The modified assembly, along with a
run-time optimization to update the power state of a register during execution,
results in significant power reduction.
  We implemented GREENER in GPGPU-Sim simulator, and used GPUWattch framework
to measure the register file's leakage power. Evaluation of GREENER on 21
kernels from CUDASDK, GPGPU-SIM, Parboil, and Rodinia benchmarks suites shows
an average reduction of register leakage energy by 69.04% and maximum reduction
of 87.95% with a negligible number of simulation cycles overhead (0.53% on
average).
