Studying optimal spilling in the light of SSA

@article{Colombet2011StudyingOS,
  title={Studying optimal spilling in the light of SSA},
  author={Quentin Colombet and Florian Brandner and Alain Darte},
  journal={2011 Proceedings of the 14th International Conference on Compilers, Architectures and Synthesis for Embedded Systems (CASES)},
  year={2011},
  pages={25-34}
}
  • Quentin ColombetF. BrandnerA. Darte
  • Published 9 October 2011
  • Economics
  • 2011 Proceedings of the 14th International Conference on Compilers, Architectures and Synthesis for Embedded Systems (CASES)
Recent developments in register allocation, mostly linked to static single assignment (SSA) form, have shown that it is possible to decouple the problem in two successive phases: a first spilling phase places load and store instructions so that the register pressure at all program points is small enough, a second assignment and coalescing phase maps the remaining variables to physical registers and reduces the number of move instructions among registers. This paper focuses on the first phase… 

Figures from this paper

A Tiling Perspective for Register Optimization

An approach to register allocation and promotion in a unified optimization framework that simultaneously considers the impact of loop unrolling and instruction scheduling is developed, done via a novel instruction tiling approach.

Register allocation and promotion through combined instruction scheduling and loop unrolling

An approach to register allocation and promotion in a unified optimization framework that simultaneously considers the impact of loop unrolling and instruction scheduling is developed, done via a novel instruction tiling approach.

Investigation on the Optimization for Storage Space in Register-Spilling

In order to make full use of the memory resources of computers, especially embedded systems, the multiplexing of storage space in register spilling is investigated and the corresponding method is

Survey on Combinatorial Register Allocation and Instruction Scheduling

An exhaustive literature review and a classification of combinatorial optimization approaches to register allocation and instruction scheduling are provided, with a focus on the techniques that are most applied in this context: integer programming, constraint programming, partitioned Boolean quadratic programming, and enumeration.

Criticality: static profiling for real-time programs

The criticality metric is formally defined and some of its properties with respect to dominance in control-flow graphs are investigated, and an algorithm is proposed that reduces the overhead of computing the metric to cover complete programs.

Data Locality on Manycore Architectures. (Optimisation de la Localité des Données sur Architectures Manycœurs)

Les premiers travaux sur une nouvelle technique d'optimisation, le pavage generalise qui a l'avantage d'utiliser un modele abstrait pour the reutilisation des donnees et d'etre en meme temps utilisable dans un grand nombre of contextes.

Improving on Linear Scan Register Allocation

This work describes a new class of rapid register allocation algorithms and presents experimental data on their behavior, based on the mathematical foundations of abstract interpretation and the computation of the level of abstraction in a specialized library for just-in-time compilation.

Constraint-Based Register Allocation and Instruction Scheduling

A decomposition scheme exploiting the underlying program structure and exhibiting robust behavior for functions with thousands of instructions is introduced, showing that code quality is on par with LLVM, a state-of-the-art compiler infrastructure.

References

SHOWING 1-10 OF 34 REFERENCES

Register Spilling and Live-Range Splitting for SSA-Form Programs

This paper generalizes the well-known furthest-first algorithm, which is known to work well on straight-line code, to control-flow graphs, and presents a spilling algorithm for programs in SSA form that is competitive with standard linear-scan allocators.

On the complexity of spill everywhere under SSA form

This paper provides an exhaustive study of the complexity of the "spill everywhere" problem in the context of the SSA form and identifies some polynomial cases but that are impractical in JIT context that can give hints to simplify formulations for the design of aggressive allocators.

On the Complexity of Register Coalescing

This paper is devoted to the complexity of the coalescing phase, in particular in the light of recent developments on the SSA form, and almost completely classify the NP-completeness of these problems, discussing also on the structure of the interference graph.

Progressive spill code placement

The constrained min-cut (CMC) problem is introduced for solving the spilling problem, an integer linear program formulation for computing an optimal solution of CMC is provided, and a progressive Lagrangian solver is devised that is viable for production compilers.

Optimal spilling for CISC machines with few registers

This work shows how to optimally split live ranges and optimally use addressing modes, and shows a variant of Park and Moon's optimistic coalescing algorithm that does a very good (though not provably optimal) job of removing the register-register moves.

Register allocation for programs in SSA form

A novel register allocation architecture for programs in SSA-form is presented which simplifies register allocation significantly and a heuristic methods for spilling and coalescing are compared to an optimal method based on integer linear programming.

Register allocation by puzzle solving

We show that register allocation can be viewed as solving a collection of puzzles. We model the register file as a puzzle board and the program variables as puzzle pieces; pre-coloring and register

Optimal and near-optimal global register allocations using 0–1 integer programming

This paper presents a fundamentally new approach to global register allocation that optimally allocates registers and optimally places spill code, significantly decreasing spill code overhead

A faster optimal register allocator

This paper presents an IP-based optimal register allocator which is much faster than previous work, built into the Gnu C Compiler and evaluated experimentally using the SPEC92INT benchmarks.

Register allocation & spilling via graph coloring

This work has discovered how to extend the graph coloring approach so that it naturally solves the spilling problem, and produces better object code and takes much less compile time.