Title
A decoupled non-SSA global register allocation using bipartite liveness graphs
Abstract
Register allocation is an essential optimization for all compilers. A number of sophisticated register allocation algorithms have been developed over the years. The two fundamental classes of register allocation algorithms used in modern compilers are based on Graph Coloring (GC) and Linear Scan (LS). However, these two algorithms have fundamental limitations in terms of precision. For example, the key data structure used in GC-based algorithms, the interference graph, lacks information on the program points at which two variables may interfere. The LS-based algorithms make local decisions regarding spilling, and thereby trade off global optimization for reduced compile-time and space overheads. Recently, researchers have proposed Static Single Assignment (SSA)-based decoupled register allocation algorithms that exploit the live-range split points of the SSA representation to optimally solve the spilling problem. However, SSA-based register allocation often requires extra complexity in repairing register assignments during SSA elimination and in addressing architectural constraints such as aliasing and ABI encoding; this extra overhead can be prohibitively expensive in dynamic compilation contexts. This article proposes a decoupled non-SSA--based global register allocation algorithm for dynamic compilation. It addresses the limitations in current algorithms by introducing a Bipartite Liveness Graph (BLG)-based register allocation algorithm that models the spilling phase as an optimization problem on the BLG itself and the assignment phase as a separate optimization problem. Advanced register allocation optimizations such as move coalescing, live-range splitting, and register class handling are also performed along with the spilling and assignment phases. In the presence of register classes, we propose a bucket-based greedy heuristic for assignment that strikes a balance between spill-cost and register class constraints. We present experimental evaluation of our BLG-based register allocation algorithm and compare it with production-quality register allocators in Jikes RVM and LLVM.
Year
DOI
Venue
2013
10.1145/2544101
TACO
Keywords
Field
DocType
register assignment,register allocation algorithm,bipartite liveness graph,register allocation,register class,advanced register allocation,decoupled register allocation algorithm,production-quality register allocators,blg-based register allocation algorithm,ssa-based register allocation,global register allocation algorithm,decoupled non-ssa global register,bipartite graph
Register allocation,Global optimization,Computer science,Parallel computing,Greedy algorithm,Real-time computing,Allocator,Optimization problem,Static single assignment form,Graph coloring,Liveness
Journal
Volume
Issue
ISSN
10
4
1544-3566
Citations 
PageRank 
References 
1
0.36
25
Authors
3
Name
Order
Citations
PageRank
Rajkishore Barik156243.70
Jisheng Zhao248024.34
Vivek Sarkar34318409.41