The 46th Annual IEEE/ACM International Symposium on Microarchitecture, 2013

MICRO-46 Session 5A - Programming, Compilation, and Provisioning

Allocating Rotating Registers by Scheduling

Hongbo Rong (Intel Labs)
Hyunchul Park (Intel Labs)
Cheng Wang (Intel Labs)
Youfeng Wu (Intel Labs)

Lightning session talk: PDF, Presentation: PDF, Poster: PDF, Full Paper: DOI 10.1145/2540708.2540738

Abstract:
A rotating alias register file is a scalable hardware support to detect memory aliases at run-time. It has been shown that it can enable instruction-level parallelism to be effectively exploited from sequential code. Yet it is unknown how to apply it to loops.

This paper presents an elegant and efficient solution that allocates rotating alias registers for a software-pipelined schedule of a loop. We show that surprisingly, this specific register allocation problem can be reduced to another software pipelining problem, for which numerous efficient algorithms are available. This is interesting in both theory and practice. We propose an algorithmic framework to solve the problem. We also present a simple software pipelining algorithm that specially targets register allocation. Comparison with a few other algorithms shows that it usually achieves the best allocation at the least time cost.

Finally, we generalize the approach to allocate generalpurpose (integer/floating-point/predicate) rotating registers by showing that it is also a software pipelining problem.