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.
Preview
Unable to display preview. Download preview PDF.
References
D. Bernstein, “An improved approximation algorithm for scheduling pipelined machines,” in Proc. of the Intl. Conf. on Parallel Processing, Aug. 1988, pp. 430–433.
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.
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.
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.
E. G. Coffman, Computer and job-shop scheduling theory, John Wiley and Sons, New York, 1976.
P. Chow, The MIPS-X RISC Microprocessor, Kluwer Academic Publishers, 1989.
J. R. Ellis, Bulldog: A Compiler for VLIW Architecture, Ph.D. Thesis, Yale Univ. DCS RR-364, Yale Univ. Feb. 1985.
J. Fisher, “Trace scheduling: a technique for global microcode compaction,” IEEE Trans. on Computers, vol. c-30, no. 7, July 1981.
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.
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.
W. Hwu, et al., “The superblock: an effective technique for VLIW and superscalar compilation,“ in J. of Supercomputing, Jan. 1993.
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.
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.
Author information
Authors and Affiliations
Corresponding author
Editor information
Rights 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