Survey on Combinatorial Register Allocation and Instruction Scheduling
Roberto Casta\~neda Lozano, Christian Schulte

TL;DR
This survey reviews combinatorial optimization methods like integer programming and constraint programming applied to register allocation and instruction scheduling, highlighting developments, trends, and challenges over the past three decades.
Contribution
It provides an exhaustive classification and analysis of combinatorial approaches used in register allocation and instruction scheduling in compilers.
Findings
Combinatorial optimization can produce optimal solutions for register allocation and instruction scheduling.
Recent trends favor integer programming and constraint programming techniques.
Challenges include increased compilation time and complexity of models.
Abstract
Register allocation (mapping variables to processor registers or memory) and instruction scheduling (reordering instructions to increase instruction-level parallelism) are essential tasks for generating efficient assembly code in a compiler. In the last three decades, combinatorial optimization has emerged as an alternative to traditional, heuristic algorithms for these two tasks. Combinatorial optimization approaches can deliver optimal solutions according to a model, can precisely capture trade-offs between conflicting decisions, and are more flexible at the expense of increased compilation time. This paper provides an exhaustive literature review and a classification of combinatorial optimization approaches to register allocation and instruction scheduling, with a focus on the techniques that are most applied in this context: integer programming, constraint programming, partitioned…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsConstraint Satisfaction and Optimization · Scheduling and Optimization Algorithms · Logic, programming, and type systems
