A Systematic Generation of Register-Reuse Chains

레지스터 재활용 사슬의 체계적 생성

  • Published : 1999.12.01

Abstract

In order to improve the efficiency of optimizing compilers, integration of register allocation and instruction scheduling has been extensively studied. One of the promising integration techniques is register allocation based on register-reuse chains. However, the generation of register-reuse chains in the previous approach was not completely systematic and consequently it creates unnecessarily dependencies that restrict instruction scheduling. This paper proposes a new register allocation technique based on a systematic generation of register-reuse chains. The first phase of the proposed technique is to generate register-reuse chains that are optimal in the sense that no additional dependencies are created. Thus, register allocation can be done without restricting instruction scheduling. For the case when the optimal register-reuse chains require more than available registers, the second phase reduces the number of required registers by merging the register-reuse chains. Chain merging always generates additional dependencies and consequently enforces the execution order of instructions. A heuristic is developed for the second phase in order to reduce additional dependencies created by merging chains. For matrix multiplication program, the number of registers resulting from the first phase is small enough to fit into available registers for most basic blocks. In addition, it is shown that the restriction to instruction scheduling is reduced by the proposed merging heuristic of the second phase.

Keywords

References

  1. Principles of Compiler Design Alfred V. Aho;Jeffrey D. Ullman
  2. Advanced Compiler Design and Implementation Steven S. Muchnick
  3. A Retargetable C Compiler: Design and Implementation Christopher Fraser;David Hanson
  4. Ph.D. Thesis. Colorado State University Instruction scheduling using genetic algorithms. Steve Beaty
  5. Proc. Int. Conf. Parallel Architecture and Compilation Techniques Optimal Register Coalescing Jinpyo Park;Soo-Mook Moon
  6. Ph.D. Thesis, MIT Department of EECS Code generation and optimization for embedded digital signal processors Stan Y. Liao
  7. Proc. of IFIP WG 10.3 Working Conference on Parallel Architectures and Compilation Techniques Resource Spackling: A framework for integrating register allocation in local and global schedulers. David A. Berson;Rajiv Gupta;Mary Lou Soffa
  8. Proc. of IFIP WG 10.3 Working Conference on Architectures and Compilation Techniques for Fine and Medium Grain Parallelism URSA: A Unified ReSource Allocator for registers are functional units in VLIW architectures David A. Berson;Rajiv Gupta;Mary Lou Soffa.
  9. Proc. of the SIGPLAN'94 Conference on Programming Language Design and Implementation Register allocation over the program dependence graph. Cindy Norris;Lori L. Pollock
  10. Technical Report, Courant Institute, TR 698 Combining Register Allocation and Instruction Scheduling. Rajeev Motwani;Krishna V. Palem;Vivek Sarkar;Salem Reyen
  11. Ph.D. thesis, Louisiana Tech University Instruction Scheduling and Register Allocation for Embedded Processor Yukong Zhang