Removing anti dependences by repairing

  • M. Anton Ertl
  • Andreas Krall
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1060)


Anti dependences (write-after-read dependences) constrain the reordering of instructions and limit the effectiveness of instruction scheduling and software pipelining techniques for superscalar and VLIW processors. Repairing solves this problem: If the definition of a variable is moved before a previous use of that variable, compiler-generated repair code reconstructs the value that the definition destroyed. Repairing features several potential advantages over register renaming, another technique for removing anti dependences: less register pressure, less loop unrolling and fewer move instructions.

Key words

anti dependence repairing register renaming instruction-level parallelism speculative execution 


  1. [BC94]
    Preston Briggs and Keith D. Cooper. Effective partial redundancy elimination. In SIGPLAN '94 Conference on Programming Language Design and Implementation, pages 159–170, 1994.Google Scholar
  2. [BCT92]
    Preston Briggs, Keith D. Cooper, and Linda Torczon. Rematerialization. In SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 311–321, 1992.Google Scholar
  3. [CAC+81]
    Gregory J. Chaitin, Marc A. Auslander, Ashok K. Chandra, John Cocke, Martin E. Hopkins, and Peter W. Markstein. Register allocation via coloring. Computer Languages, 6(1):45–57, 1981. Reprinted in [Sta90].Google Scholar
  4. [EK92]
    M. Anton Ertl and Andreas Krall. Instruction scheduling for complex pipelines. In Compiler Construction (CC'92), pages 207–218, Paderborn, 1992. Springer LNCS 641.Google Scholar
  5. [EK94]
    M. Anton Ertl and Andreas Krall. Delayed exceptions — speculative execution of trapping instructions. In Compiler Construction (CC '94), pages 158–171, Edinburgh, April 1994. Springer LNCS 786.Google Scholar
  6. [Ell85]
    John R. Ellis. Bulldog: A Compiler for VLIW Architectures. MIT Press, 1985.Google Scholar
  7. [Fis81]
    Joseph A. Fisher. Trace scheduling: A technique for global microcode compaction. IEEE Transactions on Computers, 30(7):478–490, July 1981.Google Scholar
  8. [GM86]
    Phillip B. Gibbons and Steve S. Muchnick. Efficient instruction scheduling for a pipelined architecture. In SIGPLAN '86 Symposium on Compiler Construction, pages 11–16, 1986.Google Scholar
  9. [HG83]
    John Hennessy and Thomas Gross. Postpass code optimization of pipeline constraints. ACM Transactions on Programming Languages and Systems, 5(3):422–448, July 1983.Google Scholar
  10. [KRS94]
    Jens Knoop, Oliver Rüthing, and Bernhard Steffen. Partial dead code elimination. In SIGPLAN '94 Conference on Programming Language Design and Implementation, pages 147–158, 1994.Google Scholar
  11. [Lam88]
    Monica Lam. Software pipelining: An effective scheduling technique for VLIW machines. In SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 318–328, 1988.Google Scholar
  12. [LDSM80]
    David Landskov, Scott Davidson, Bruce Shriver, and Pattrick W. Mallet. Local microcode compaction techniques. ACM Computing Surveys, 12(3):261–294, September 1980.Google Scholar
  13. [NE89]
    Toshio Nakatani and Kemal Ebcioğlu. “Combining” as a compilation technique for VLIW architectures. In 22nd Annual International Workshop on Microprogramming and Microarchitecture (MICRO-22), pages 43–55, 1989.Google Scholar
  14. [PHS85]
    Yale N. Patt, Wen-mei Hwu, and Michael Shebanow. HPS, a new microarchitecture: Rationale and introduction. In The 18nd Annual Workshop on Microprogramming (MICRO-18), pages 103–108, 1985.Google Scholar
  15. [PW86]
    David A. Padua and Michael J. Wolfe. Advanced compiler optimizations for supercomputers. Communications of the ACM, 29(12):1184–1201, December 1986.Google Scholar
  16. [Rau94]
    B. Ramakrishna Rau. Iterative modulo scheduling: An algorithm for software pipelining. In International Symposium on Microarchitecture (MICRO-27), pages 63–74, 1994.Google Scholar
  17. [RG81]
    B. R. Rau and C. D. Glaeser. Some scheduling techgniques and an easily schedulable horizontal architecture for high performance scientific computing. In 14th Annual Microprogramming Workshop (MICRO-14), pages 183–198, 1981.Google Scholar
  18. [Soh90]
    Gurindar S. Sohi. Instruction issue logic for high-performance, interruptable, multiple functional unit, pipelined processors. IEEE Transactions on Computers, 39(3):349–359, March 1990.Google Scholar
  19. [Sta90]
    William Stallings, editor. Reduced Instruction Set Computers. IEEE Computer Society Press, second edition, 1990.Google Scholar
  20. [Tho64]
    J. E. Thornton. Parallel operation in Control Data 6600. In AFIPS Fall Joint Computer Conference, pages 33–40, 1964.Google Scholar
  21. [Tom67]
    R. M. Tomasulo. An efficient algorithm for exploiting multiple arithmetic units. IBM Journal of Research and Development, 11(1):25–33, 1967.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • M. Anton Ertl
    • 1
  • Andreas Krall
    • 1
  1. 1.Institut für ComputersprachenTechnische Universität WienWienAustria

Personalised recommendations