Abstract
This article introduces a combinatorial optimization approach to register allocation and instruction scheduling, two central compiler problems. Combinatorial optimization has the potential to solve these problems optimally and to exploit processor-specific features readily. Our approach is the first to leverage this potential in practice: it captures the complete set of program transformations used in state-of-the-art compilers, scales to medium-sized functions of up to 1,000 instructions, and generates executable code. This level of practicality is reached by using constraint programming, a particularly suitable combinatorial optimization technique. Unison, the implementation of our approach, is open source, used in industry, and integrated with the LLVM toolchain.
An extensive evaluation confirms that Unison generates better code than LLVM while scaling to medium-sized functions. The evaluation uses systematically selected benchmarks from MediaBench and SPEC CPU2006 and different processor architectures (Hexagon, ARM, MIPS). Mean estimated speedup ranges from 1.1% to 10% and mean code size reduction ranges from 1.3% to 3.8% for the different architectures. A significant part of this improvement is due to the integrated nature of the approach. Executing the generated code on Hexagon confirms that the estimated speedup results in actual speedup. Given a fixed time limit, Unison solves optimally functions of up to 946 instructions, nearly an order of magnitude larger than previous approaches.
The results show that our combinatorial approach can be applied in practice to trade compilation time for code quality beyond the usual compiler optimization levels, identify improvement opportunities in heuristic algorithms, and fully exploit processor-specific features.
- Abderrahmane Aggoun and Nicolas Beldiceanu. 1993. Extending chip in order to solve complex scheduling and placement problems. Math. Comput. Model. 17, 7 (Apr. 1993), 57--73. Google ScholarDigital Library
- Andrew W. Appel. 1998. SSA is functional programming. ACM SIGPLAN Not. 33, 4 (Apr. 1998), 17--20. Google ScholarDigital Library
- Andrew W. Appel and Lal George. 2001. Optimal spilling for CISC machines with few registers. In Proceedings of the Symposium on Programming Language Design and Implementation. ACM, 243--253. Google ScholarDigital Library
- ARM. 2007. ARM1156T2F-S Technical Reference Manual. ARM. Rev. r0p4. Retrieved from http://infocenter.arm.com/help/topic/com.arm.doc.ddi0290g/DDI0290G_arm1156t2fs_r0p4_trm.pdf.Google Scholar
- John Aycock and R. Nigel Horspool. 2000. Simple generation of static single-assignment form. In Proceedings of the International Conference on Compiler Construction, Vol. 1781. Springer-Verlag, 110--124. Google ScholarDigital Library
- Philippe Baptiste, Claude Le Pape, and Wim Nuijten. 2006. Constraint-based scheduling and planning. In Handbook of Constraint Programming, Francesca Rossi, Peter van Beek, and Toby Walsh (Eds.). Elsevier, 759--797.Google Scholar
- Gergö Barany and Andreas Krall. 2013. Optimal and heuristic global code motion for minimal spilling. In Proceedings of the International Conference on Compiler Construction (LNCS), Vol. 7791. Springer-Verlag, 21--40. Google ScholarDigital Library
- Rajkishore Barik, Christian Grothoff, Rahul Gupta, Vinayaka Pandit, and Raghavendra Udupa. 2007. Optimal bitwise register allocation using integer linear programming. In Proceedings of the International Workshop on Languages and Compilers for Parallel Computing. Springer-Verlag, 267--282. Google ScholarDigital Library
- Steven Bashford and Rainer Leupers. 1999. Phase-coupled mapping of data flow graphs to irregular data paths. Design Auto. Embed. Syst. 4 (Mar. 1999), 119--165. Google ScholarDigital Library
- Nicolas Beldiceanu and Evelyne Contejean. 1994. Introducing global constraints in CHIP. Math. Comput. Model. 20, 12 (Dec. 1994), 97--123. Google ScholarDigital Library
- Christian Bessiere. 2006. Constraint propagation. In Handbook of Constraint Programming, Francesca Rossi, Peter van Beek, and Toby Walsh (Eds.). Elsevier, 27--81.Google Scholar
- Armin Biere, Marijn Heule, Hans van Maaren, and Toby Walsh (Eds.). 2009. Handbook of Satisfiability. IOS Press.Google Scholar
- Edward H. Bowman. 1959. The schedule-sequencing problem. Op. Res. 7, 5 (Sept. 1959), 621--624. Google ScholarDigital Library
- Preston Briggs, Keith D. Cooper, and Linda Torczon. 1992. Rematerialization. In Proceedings of the Symposium on Programming Language Design and Implementation. ACM, 311--321. Google ScholarDigital Library
- Sebastian Buchwald, Denis Lohner, and Sebastian Ullrich. 2016. Verified construction of static single assignment form. In Proceedings of the International Conference on Compiler Construction. ACM, 67--76. Google ScholarDigital Library
- Mats Carlsson and Roberto Castañeda Lozano. 2018. Unison’s source code: x86 fork. Retrieved from: https://github.com/matsc-at-sics-se/unison.Google Scholar
- Roberto Castañeda Lozano. 2016. Tool demonstration: Register allocation and instruction scheduling in Unison. Retrieved from: https://youtu.be/t4g2AjSfMX8.Google Scholar
- Roberto Castañeda Lozano. 2017. Register allocation and instruction scheduling in Unison. Retrieved from: https://youtu.be/kx64V74Mba0.Google Scholar
- Roberto Castañeda Lozano. 2017. The Unison manual. Retrieved from: https://unison-code.github.io/doc/manual.pdf.Google Scholar
- Roberto Castañeda Lozano, Mats Carlsson, Frej Drejhammar, and Christian Schulte. 2012. Constraint-based register allocation and instruction scheduling. In Proceedings of the Conference on Principles and Practice of Constraint Programming (LNCS), Vol. 7514. Springer-Verlag, 750--766.Google ScholarCross Ref
- Roberto Castañeda Lozano, Mats Carlsson, Gabriel Hjort Blindell, and Christian Schulte. 2014. Combinatorial spill code optimization and ultimate coalescing. In Proceedings of the Conference on Languages, Compilers, Tools and Theory for Embedded Systems. ACM, 23--32. Google ScholarDigital Library
- Roberto Castañeda Lozano, Mats Carlsson, Gabriel Hjort Blindell, and Christian Schulte. 2016. Register allocation and instruction scheduling in Unison. In Proceedings of the International Conference on Compiler Construction. ACM, 263--264. Google ScholarDigital Library
- Roberto Castañeda Lozano, Mats Carlsson, Gabriel Hjort Blindell, and Christian Schulte. 2018. Unison website. Retrieved from: https://unison-code.github.io.Google Scholar
- Roberto Castañeda Lozano and Christian Schulte. 2014. Survey on Combinatorial Register Allocation and Instruction Scheduling. Technical Report. SCALE, KTH Royal Institute of Technology 8 Swedish Institute of Computer Science. Retrieved from: https://arxiv.org/abs/1409.7628.Google Scholar
- Gregory J. Chaitin, Marc A. Auslander, Ashok K. Chandra, John Cocke, Martin E. Hopkins, and Peter W. Markstein. 1981. Register allocation via coloring. Comput. Lang. 6, 1 (1981), 47--57. Google ScholarCross Ref
- Chia-Ming Chang, Chien-Ming Chen, and Chung-Ta King. 1997. Using integer linear programming for instruction scheduling and register allocation in multi-issue processors. Comput. Math. Applic. 34, 9 (Nov. 1997), 1--14.Google ScholarCross Ref
- Frederick Chow. 1988. Minimizing register usage penalty at procedure calls. In Proceedings of the Symposium on Programming Language Design and Implementation. ACM, 85--94. Google ScholarDigital Library
- Frederick Chow and John Hennessy. 1984. Register allocation by priority-based coloring. SIGPLAN Not. 19, 6 (June 1984), 222--232. Google ScholarDigital Library
- Geoffrey G. Chu. 2011. Improving Combinatorial Optimization. Ph.D. Dissertation. The University of Melbourne, Australia.Google Scholar
- Lucian Codrescu, Willie Anderson, Suresh Venkumanhanti, Mao Zeng, Erich Plondke, Chris Koob, Ajay Ingle, Charles Tabony, and Rick Maule. 2014. Hexagon DSP: An architecture optimized for mobile multimedia and communications. IEEE Micro 34, 2 (Mar. 2014), 34--43.Google ScholarCross Ref
- Quentin Colombet, Florian Brandner, and Alain Darte. 2015. Studying optimal spilling in the light of SSA. ACM Trans. Arch. Code Opt. 11, 4 (Jan. 2015), 1--26. Google ScholarDigital Library
- Keith Cooper and Linda Torczon. 2012. Engineering a Compiler (2nd ed.). Morgan Kaufmann.Google ScholarDigital Library
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2009. Introduction to Algorithms (3rd ed.). MIT Press. Google ScholarDigital Library
- Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. 1991. Efficiently computing static single assignment form and the control dependence graph. ACM Trans. Program. Lang. Syst. 13, 4 (Oct. 1991), 451--490. Google ScholarDigital Library
- Dietmar Ebner, Bernhard Scholz, and Andreas Krall. 2009. Progressive spill code placement. In Proceedings of the Conference on Compilers, Architecture, and Synthesis for Embedded Systems. ACM, 77--86. Google ScholarDigital Library
- Tobias J. K. Edler von Koch, Igor Böhm, and Björn Franke. 2010. Integrated instruction selection and register allocation for compact code generation exploiting freeform mixing of 16- and 32-bit instructions. In Proceedings of the International Symposium on Code Generation and Optimization. ACM, 180--189. Google ScholarDigital Library
- Mattias Eriksson and Christoph W. Kessler. 2012. Integrated code generation for loops. ACM Trans. Embed. Comput. Syst. 11S, 1 (June 2012), 1--24. Google ScholarDigital Library
- Heiko Falk, Norman Schmitz, and Florian Schmoll. 2011. WCET-aware register allocation based on integer-linear programming. In Proceedings of the Euromicro Conference on Real-Time Systems. IEEE, 13--22. Google ScholarDigital Library
- Joseph A. Fisher. 1983. Very long instruction word architectures and the ELI-512. In Proceedings of the International Symposium on Computer Architecture. ACM, 140--150. Google ScholarDigital Library
- Graeme Gange, Jorge A. Navas, Peter Schachte, Harald Søndergaard, and Peter J. Stuckey. 2015. Horn clauses as an intermediate representation for program analysis and transformation. In Proceedings of the International Workshop on Theory and Practice of Logic Programming. Cambridge University Press, 526--542.Google Scholar
- Catherine H. Gebotys. 1997. An efficient model for DSP code generation: Performance, code size, estimated energy. In Proceedings of the International Symposium on Systems Synthesis. IEEE, 41--47. Google ScholarDigital Library
- Gecode Team. 2018. Gecode: Generic constraint development environment. Retrieved from: https://www.gecode.org.Google Scholar
- Carla P. Gomes and Bart Selman. 2001. Algorithm portfolios. Artific. Intell. 126, 1 (Feb. 2001), 43--62. Google ScholarDigital Library
- Carla P. Gomes, Bart Selman, Nuno Crato, and Henry Kautz. 2000. Heavy-tailed phenomena in satisfiability and constraint satisfaction problems. J. Auto. Reason. 24, 1--2 (Feb. 2000), 67--100. Google ScholarDigital Library
- James R. Goodman and Wei-Chung Hsu. 1988. Code scheduling and register allocation in large basic blocks. In Proceedings of the International Conference on Supercomputing. ACM, 442--452. Google ScholarDigital Library
- David W. Goodwin and Kent Wilken. 1996. Optimal and near-optimal global register allocations using 0-1 integer programming. Softw.: Pract. Exper. 26, 8 (Aug. 1996), 929--965. Google ScholarDigital Library
- R. Govindarajan. 2007. Instruction scheduling. In The Compiler Design Handbook (2nd ed.). CRC.Google Scholar
- Sebastian Hack, Daniel Grund, and Gerhard Goos. 2006. Register allocation for programs in SSA-form. In Proceedings of the International Conference on Compiler Construction (LNCS), Vol. 3923. Springer-Verlag, 247--262. Google ScholarDigital Library
- John L. Hennessy and David A. Patterson. 2011. Computer Architecture: A Quantitative Approach (5th ed.). Morgan Kaufmann. Google ScholarDigital Library
- Gabriel Hjort Blindell. 2016. Instruction Selection: Principles, Methods, and Applications. Springer-Verlag. Google ScholarDigital Library
- Gabriel Hjort Blindell. 2018. Universal Instruction Selection. Ph.D. Dissertation. KTH Royal Institute of Technology, Sweden.Google Scholar
- Intel. 2017. Intel 64 and IA-32 Architectures Software Developer Manuals. Intel. 325462-065US. Retrieved from https://software.intel.com/en-us/articles/intel-sdm.Google Scholar
- Cliff Young Joseph A. Fisher, Paolo Faraboschi. 2005. Embedded Computing. Elsevier.Google Scholar
- Daniel Kästner. 2001. PROPAN: A retargetable system for postpass optimisations and analyses. In Proceedings of the Conference on Languages, Compilers, Tools and Theory for Embedded Systems (LNCS), Vol. 1985. Springer-Verlag, 63--80. Google ScholarDigital Library
- Christoph W. Kessler. 2010. Compiling for VLIW DSPs. In Handbook of Signal Processing Systems. Springer-Verlag, 603--638.Google Scholar
- Christoph W. Kessler and Andrzej Bednarski. 2006. Optimal integrated code generation for VLIW architectures. Concur. Computat.: Pract. Exper. 18, 11 (2006), 1353--1390. Google ScholarDigital Library
- David Ryan Koes and Seth Copen Goldstein. 2006. A global progressive register allocator. In Proceedings of the Symposium on Programming Language Design and Implementation. ACM, 204--215. Google ScholarDigital Library
- David Ryan Koes and Seth Copen Goldstein. 2009. Register allocation deconstructed. In Proceedings of the International Workshop on Software and Compilers for Embedded Systems. ACM, 21--30. Google ScholarCross Ref
- Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis 8 transformation. In Proceedings of the International Symposium on Code Generation and Optimization. IEEE, 75--88. Google ScholarDigital Library
- Yat Chiu Law and Jimmy H. M. Lee. 2004. Global constraints for integer and set value precedence. In Proceedings of the International Conference on Principles and Practice of Constraint Programming (LNCS), Vol. 3258. Springer-Verlag, 362--376. Google ScholarDigital Library
- Chunho Lee, Miodrag Potkonjak, and William H. Mangione-Smith. 1997. MediaBench: A tool for evaluating and synthesizing multimedia and communicatons systems. In Proceedings of the International Symposium on Microarchitecture. IEEE, 330--335. Google ScholarDigital Library
- Rainer Leupers and Peter Marwedel. 2001. Retargetable Compiler Technology for Embedded Systems: Tools and Applications. Springer-Verlag. Google ScholarDigital Library
- Andrea Lodi, Silvano Martello, and Michele Monaci. 2002. Two-dimensional packing problems: A survey. Euro. J. Op. Res. 141, 2 (Sept. 2002), 241--252.Google Scholar
- Michele Lombardi and Michela Milano. 2012. Optimal methods for resource allocation and scheduling: A cross-disciplinary survey. Constraints 17, 1 (Jan. 2012), 51--85. Google ScholarDigital Library
- James B. MacQueen. 1967. Some methods for classification and analysis of multivariate observations. In Proceedings of the 5th Berkeley Symposium on Mathematical Statistics and Probability. University of California Press, 281--297.Google Scholar
- Abid M. Malik, Michael Chase, Tyrel Russell, and Peter Van Beek. 2008. An application of constraint programming to superblock instruction scheduling. In Proceedings of the International Conference on Principles and Practice of Constraint Programming (LNCS), Vol. 5202. Springer-Verlag, 97--111. Google ScholarDigital Library
- Abid M. Malik, Jim McInnes, and Peter Van Beek. 2008. Optimal basic block instruction scheduling for multiple-issue processors using constraint programming. Artific. Intell. Tools 17, 1 (2008), 37--54.Google ScholarCross Ref
- Alan S. Manne. 1960. On the job-shop scheduling problem. Op. Res. 8, 2 (Mar. 1960), 219--223. Google ScholarDigital Library
- MiniZinc Team. 2018. MiniZinc constraint modeling language. Retrieved from: https://www.minizinc.org.Google Scholar
- MIPS. 2016. The MIPS32 Instruction Set Manual. MIPS. Rev. 6.06. Retrieved from https://www.mips.com/downloads/the-mips32-instruction-set-v6-05.Google Scholar
- Santosh G. Nagarakatte and R. Govindarajan. 2007. Register allocation and optimal spill code scheduling in software pipelined loops using 0-1 integer linear programming formulation. In Proceedings of the International Conference on Compiler Construction (LNCS), Vol. 4420. Springer-Verlag, 126--140. Google ScholarDigital Library
- Mayur Naik and Jens Palsberg. 2002. Compiling with code-size constraints. In Proceedings of the Conference on Languages, Compilers, Tools and Theory for Embedded Systems. ACM, 120--129. Google ScholarDigital Library
- V. Krishna Nandivada and Jens Palsberg. 2006. SARA: Combining stack allocation and register allocation. In Proceedings of the International Conference on Compiler Construction (LNCS), Vol. 3923. Springer-Verlag, 232--246. Google ScholarDigital Library
- V. Krishna Nandivada, Fernando Pereira, and Jens Palsberg. 2007. A framework for end-to-end verification and evaluation of register allocators. In Proceedings of the International Static Analysis Symposium (LNCS), Vol. 4634. Springer-Verlag, 153--169. Google ScholarDigital Library
- George L. Nemhauser and Laurence A. Wolsey. 1999. Integer and Combinatorial Optimization. Wiley.Google ScholarDigital Library
- Nicholas Nethercote, Peter J. Stuckey, Ralph Becket, Sebastian Brand, Gregory J. Duck, and Guido Tack. 2007. MiniZinc: Towards a standard CP modelling language. In Proceedings of the International Conference on Principles and Practice of Constraint Programming (LNCS), Vol. 4741. Springer-Verlag, 529--543. Google ScholarDigital Library
- Fernando Magno Quintão Pereira and Jens Palsberg. 2008. Register allocation by puzzle solving. In Proceedings of the Symposium on Programming Language Design and Implementation. ACM, 216--226. Google ScholarDigital Library
- Martin Persson. 2017. Evaluating Unison’s Speedup Estimation. Master’s Thesis. KTH Royal Institute of Technology, Sweden.Google Scholar
- Aashish Phansalkar, Ajay Joshi, Lieven Eeckhout, and Lizy K. John. 2005. Measuring program similarity: Experiments with SPEC CPU benchmark suites. In Proceedings of the International Symposium on Performance Analysis of Systems and Software. IEEE, 10--20. Google ScholarDigital Library
- Qualcomm. 2013. Hexagon Application Binary Interface Specification. Qualcomm. 80-N2040-23 Rev. B. Retrieved from https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools.Google Scholar
- Qualcomm. 2013. Hexagon Simulator User Guide. Qualcomm. 80-N2040-17 Rev. B. Retrieved from https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools.Google Scholar
- Bantwal Ramakrishna Rau and Joseph A. Fisher. 1993. Instruction-level parallel processing: History, overview, and perspective. J. Supercomput. 7, 1--2 (May 1993), 9--50. Google ScholarDigital Library
- Francesca Rossi, Peter van Beek, and Toby Walsh (Eds.). 2006. Handbook of Constraint Programming. Elsevier. Google ScholarDigital Library
- Martin Savelsbergh. 1994. Preprocessing and probing techniques for mixed integer programming problems. ORSA J. Comput. 6, 4 (Sept. 1994), 445--454.Google ScholarCross Ref
- Bernhard Scholz and Erik Eckstein. 2002. Register allocation for irregular architectures. In Proceedings of the Conference on Languages, Compilers, Tools and Theory for Embedded Systems. ACM, 139--148. Google ScholarDigital Library
- Ghassan Shobaki, Maxim Shawabkeh, and Najm Eldeen Abu Rmaileh. 2013. Preallocation instruction scheduling with register pressure minimization using a combinatorial optimization approach. ACM Trans. Arch. Code Optim. 10, 3 (Sept. 2013), 1--31. Google ScholarDigital Library
- Helmut Simonis and Barry O’Sullivan. 2008. Search strategies for rectangle packing. In Proceedings of the International Conference on Principles and Practice of Constraint Programming (LNCS), Vol. 5202. Springer-Verlag, 52--66. Google ScholarDigital Library
- Barbara M. Smith. 2006. Modelling. In Handbook of Constraint Programming, Francesca Rossi, Peter van Beek, and Toby Walsh (Eds.). Elsevier, 375--404.Google Scholar
- Charles Spearman. 1904. The proof and measurement of association between two things. Amer. J. Psych. 15, 1 (Jan. 1904), 72--101.Google ScholarCross Ref
- SPEC. 2016. CPU 2006 Benchmarks. SPEC. Retrieved from: https://www.spec.org/cpu2006.Google Scholar
- SPEC. 2018. Building the SPEC CPU2006 Tool Suite. SPEC. Retrieved from: https://www.spec.org/cpu2006/Docs/tools-build.html.Google Scholar
- Vugranam Sreedhar, Roy Ju, David Gillies, and Vatsa Santhanam. 1999. Translating out of static single assignment form. In Proceedings of the International Static Analysis Symposium (LNCS), Vol. 1694. Springer-Verlag, 849--849. Google ScholarDigital Library
- Peter van Beek. 2006. Backtracking search algorithms. In Handbook of Constraint Programming, Francesca Rossi, Peter van Beek, and Toby Walsh (Eds.). Elsevier, 83--132.Google Scholar
- Pascal Van Hentenryck and Jean-Philippe Carillon. 1988. Generality vs. specificity: An experience with AI and OR techniques. In Proceedings of the National Conference on Artificial Intelligence. AAAI Press, 660--664. Google ScholarDigital Library
- Willem-Jan van Hoeve and Irit Katriel. 2006. Global constraints. In Handbook of Constraint Programming, Francesca Rossi, Peter van Beek, and Toby Walsh (Eds.). Elsevier, 205--244.Google Scholar
- Harvey M. Wagner. 1959. An integer linear-programming model for machine scheduling. Naval Res. Logist. Quart. 6, 2 (June 1959), 131--140.Google ScholarCross Ref
- David W. Wall. 1986. Global register allocation at link time. In Proceedings of the SIGPLAN Symposium on Compiler Construction. ACM, 264--275. Google ScholarDigital Library
- Fredrik Wickberg and Mattias Eriksson. 2017. Outperforming state-of-the-art compilers in Unison. Retrieved from: https://www.ericsson.com/research-blog/outperforming-state-art-compilers-unison.Google Scholar
- Frank Wilcoxon. 1945. Individual comparisons by ranking methods. Biomet. Bull. 1, 6 (Dec. 1945), 80--83.Google ScholarCross Ref
- Kent Wilken, Jack Liu, and Mark Heffernan. 2000. Optimal instruction scheduling using integer programming. In Proceedings of the Symposium on Programming Language Design and Implementation. ACM, 121--133. Google ScholarDigital Library
- Tom Wilson, Gary Grewal, Ben Halley, and Dilip Banerji. 1994. An integrated approach to retargetable code generation. In Proceedings of the International Symposium on High Level Synthesis. IEEE, 70--75. Google ScholarDigital Library
- Tom Wilson, Gary Grewal, Shawn Henshall, and Dilip Banerji. 2002. An ILP-based approach to code generation. In Proceedings of the International Symposium on Code Generation for Embedded Processors. Springer-Verlag, 103--118.Google ScholarCross Ref
- Sebastian Winkel. 2007. Optimal versus heuristic global code scheduling. In Proceedings of the International Symposium on Microarchitecture. IEEE, 43--55. Google ScholarDigital Library
Index Terms
- Combinatorial Register Allocation and Instruction Scheduling
Recommendations
Survey on Combinatorial Register Allocation and Instruction Scheduling
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 past ...
Fast, frequency-based, integrated register allocation and instruction scheduling
Instruction scheduling and register allocation are two of the most important optimization phases in modern compilers as they have a significant impact on the quality of the generated code. Unfortunately, the objectives of these two optimizations are in ...
Evaluating Register Allocation and Instruction Scheduling Techniques in Out-Of-Order Issue Processors
PACT '99: Proceedings of the 1999 International Conference on Parallel Architectures and Compilation TechniquesThe phase ordering of register allocation and instruction scheduling in a compiler and their integration have been well studied for in-order issue and VLIW processors. In this paper we study this problem in the context of out-of-order issue processors. ...
Comments