Skip to main content

Bidirectional scheduling: A new global code scheduling approach

  • Instruction Scheduling and Register Allocation
  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1996)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1239))

  • 120 Accesses

Abstract

Instruction scheduling is an important compiler code transformation step for generating code for pipelined and VLIW processors. Dependencies among instructions need to be enforced. In this paper, we describe a global code scheduling algorithm that moves instructions upward and downward in the control flow graph. Downward code motion is first applied. The purpose of downward code motion is to move store instructions and other instructions on the tail portion of critical paths to later basic blocks. This allows for better code compaction. After downward code motion is applied, upward code motion and code compaction are applied. Upward code motion moves instructions on the beginning portion of critical paths to preceding basic blocks. This allows for better code compaction. In our algorithm, we integrate some instruction-level parallelization techniques with upward code motion to permit more code motion freedom.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. D. Bernstein, “An improved approximation algorithm for scheduling pipelined machines,” in Proc. of the Intl. Conf. on Parallel Processing, Aug. 1988, pp. 430–433.

    Google Scholar 

  2. D. Bernstein, D. Cohen, Y. Lavon, and V. Rainish, “Performance evaluation of instruction scheduling on the IBM RISC System/6000,” in Proc. of the 25th Annual Intl. Symp. on Microarchiteccture, Dec. 1992, pp. 226–235.

    Google Scholar 

  3. D. Bernstein, M. Rodeh, and I. Gertner, “Approximation algorithms for scheduling arithmetic expressions on pipelined machines,” TR-88.227, IBM Haifa Scientific Center, July 1987.

    Google Scholar 

  4. D. Bernstein, M. Rodeh, and I. Gertner, “On the complexity of scheduling problems for parallel/pipelined machines,” IEEE Trans. on Computers, vol. 38, no. 9, Sep. 1989.

    Google Scholar 

  5. E. G. Coffman, Computer and job-shop scheduling theory, John Wiley and Sons, New York, 1976.

    Google Scholar 

  6. P. Chow, The MIPS-X RISC Microprocessor, Kluwer Academic Publishers, 1989.

    Google Scholar 

  7. J. R. Ellis, Bulldog: A Compiler for VLIW Architecture, Ph.D. Thesis, Yale Univ. DCS RR-364, Yale Univ. Feb. 1985.

    Google Scholar 

  8. J. Fisher, “Trace scheduling: a technique for global microcode compaction,” IEEE Trans. on Computers, vol. c-30, no. 7, July 1981.

    Google Scholar 

  9. J. R. Goodman and W.-C. Hsu, “Code scheduling and register allocation in large basic blocks,” in Proc. of the IEEE-ACM Supercomputing Conf., 1988.

    Google Scholar 

  10. W. Hwu and P. Chang, “Exploiting parallel microprocessor microarchitectures with a compiler code generator,” in Proc. of the 15th Annual Intl. Symp. on Computer Architecture, May 1988.

    Google Scholar 

  11. W. Hwu, et al., “The superblock: an effective technique for VLIW and superscalar compilation,“ in J. of Supercomputing, Jan. 1993.

    Google Scholar 

  12. S.-M. Moon and K. Ebcioglu, “An efficient resource-constrained global scheduling technique for superscalar and VLIW processors,” in Proc. of the 25th Annual Intl. Symp. on Microarchitecture, Dec. 1992, pp. 55–71.

    Google Scholar 

  13. S. Mahlke, D. Lin, W. Chen, R. Hank, and R. Bringmann, “Effective compiler support for predicated execution using the hyperblock,” in Proc. of Intl. Symp. on Microarchitecture, pp. 45–54, Dec. 1992.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Pohua Chang .

Editor information

David Sehr Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints and permissions

Copyright information

© 1997 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Chang, P., Chen, Dy., Lee, Yf., Wu, Y., Banerjee, U. (1997). Bidirectional scheduling: A new global code scheduling approach. In: Sehr, D., Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1996. Lecture Notes in Computer Science, vol 1239. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0017255

Download citation

  • DOI: https://doi.org/10.1007/BFb0017255

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-63091-3

  • Online ISBN: 978-3-540-69128-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics