Skip to main content

A Spill Code Placement Framework for Code Scheduling

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1998)

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

  • 275 Accesses

Abstract

Many of compiler optimization techniques either reply on or can benefit from the timing information associated with each instruction and each variable in a given program. Using such information, in this paper, we develop an analytical approach that helps the parallelizing compiler to determine whether to spill a variable or not, which variable to spill and the places where spill code needs to be added, when a register is needed for a computation but all available registers are in use. The preliminary experimental results show that this new approach produces better object code.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. T. Kiyohara and J. C. Gyllenhaal, “Code Scheduling for VLIW/Superscalar Processors with Limited Register Files”, Proc. of the 1992 International Symposium on Microarchitecture, pp.197–201, 1992.

    Google Scholar 

  2. D. Bernstein, D. Goldin, M. Golumbic, H. Krawczyk, Y. Mansour, I. Nahshon, and R. Pinter, “Spill code minimization techniques for optimizing compilers”, Proc. of the ACM SIGPLAN’89 Conf. Programming Languages Design and Implementation, pp. 258–263, 1989.

    Google Scholar 

  3. P. Briggs, K. Cooper, K. Kennedy, and L. Torczon, “Coloring heuristics for register allocation”, Proc. of the ACM SIGPLAN’89 Conf. Programming Languages Design and Implementation, pp. 275–284, 1989.

    Google Scholar 

  4. P. Briggs, K. Cooper, and L. Torczon, “Improvements to graph coloring register allocation”, ACM Trans. on Programming Languages and Systems, vol. 16,no. 3, pp. 428–455, May 1994.

    Article  Google Scholar 

  5. D. G. Bradlee, S. J. Eggers, and R. R. Henry, “Integrating Register Allocation and Instruction Scheduling for RISCs,“ Proc. Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 122–131, 1991.

    Google Scholar 

  6. S. S. Pinter, “Register Allocation with Instruction Scheduling: a New Approach, Proc. the SIGPLAN’93 Conference on Programming Language Design and Implementation, 1993.

    Google Scholar 

  7. C. Norris, and L. L. Pollock, “A Scheduler-Sensitive Global Register Allocator,” Proc. Supercomputing’93, pp. 804–813, 1993.

    Google Scholar 

  8. J. Wang, A. Krall, M. A. Ertl and C. Eisenbeis, “Software Pipelining with Register Allocation and Spilling,” Proc. of the 1994 International Symposium on Microarchitecture, pp. 95–99, 1994.

    Google Scholar 

  9. J. Llosa, M. Valero and E. Ayguade, “Heuristic for Register-constrained Software Pipelining,” Proc. of the 1996 International Symposium on Microarchitecture, pp. 250–261, 1996.

    Google Scholar 

  10. B. Natarajan, and M. Schlansker, “Spill-Free Scheduling of Basic Blocks,” Proc. the 28th International Symposium on Microarchitecture, pp. 119–124, 1995.

    Google Scholar 

  11. G. Lowney et al., “The Multiflow Trace Scheduling Compiler,” J. of Supercomputing, vol. 7, pp. 51–142, 1993.

    Article  Google Scholar 

  12. J. A. Fisher, “Trace Scheduling: A Technique for Global Microcode Compaction,” IEEE Trans. on Comput., vol. C-30,no.7, pp. 478–490, 1981.

    Article  Google Scholar 

  13. J. Ellis, “Bulldog: A Compiler for VLIW Architectures,” The MIT Press, Cambridge, Mass., 1986.

    Google Scholar 

  14. M. Y. Wu and D. Gajski, “Hypertool: A Programming Aid for Message-Passing Systems,” IEEE Trans. on Parallel and Distributed Systems, vol.1,no. 3, pp. 101–119, 1990.

    Article  Google Scholar 

  15. E. B. Fernandez and B. Bussell,“Bounds on the Number of Processors and Time for Multiprocessor Optimal Schedules,” IEEE Trans. on Comput., Vol.C-22,No. 8, pp.745–751, 1973.

    Article  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1999 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Li, D., Iwahori, Y., Hayashi, T., Ishii, N. (1999). A Spill Code Placement Framework for Code Scheduling. In: Chatterjee, S., et al. Languages and Compilers for Parallel Computing. LCPC 1998. Lecture Notes in Computer Science, vol 1656. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48319-5_17

Download citation

  • DOI: https://doi.org/10.1007/3-540-48319-5_17

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-66426-0

  • Online ISBN: 978-3-540-48319-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics