Skip to main content

Register Pressure in Software-Pipelined Loop Nests: Fast Computation and Impact on Architecture Design

  • Conference paper
Languages and Compilers for Parallel Computing (LCPC 2005)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 4339))

Abstract

Recently the Single-dimension Software Pipelining (SSP) technique was proposed to software pipeline loop nests at an arbitrary loop level [18,19,20]. However, SSP schedules require a high number of rotating registers, and may become infeasible if register needs exceed the number of available registers. It is therefore desirable to design a method to compute the register pressure quickly (without actually performing the register allocation) as an early measure of the feasibility of an SSP schedule. Such a method can also be instrumental to provide a valuable feedback to processor architects in their register files design decision, as far as the needs of loop nests are concerned.

This paper presents a method that computes quickly the minimum number of rotating registers required by an SSP schedule. The results have demonstrated that the method is always accurate and is 3 to 4 orders of magnitude faster on average than the register allocator. Also, experiments suggest that 64 floating-point rotating registers are in general enough to accommodate the needs of the loop nests used in scientific computations.

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. Aiken, A., Nicolau, A., Novack, S.: Resource-constrained software pipelining. IEEE Transactions on Parallel and Distributed Systems 6(12), 1248–1270 (1995)

    Article  Google Scholar 

  2. Carr, S., Ding, C., Sweany, P.: Improving software pipelining with unroll-and-jam. In: Proc. 29th Annual Hawaii Int’l. Conf. on System Sciences, pp. 183–192 (1996)

    Google Scholar 

  3. Dani, A., Ramanan, V., Govindarajan, R.: Register-sensitive software pipelining. In: Proc. of 12th Int’l. Par. Processing Symp. /9th Int’l. Symp. on Par. and Dist. Systems (1998)

    Google Scholar 

  4. Darte, A., Schreiber, R., Rau, B.R., Vivien, F.: Constructing and exploiting linear schedules with prescribed parallelism. ACM Trans. on Design Automation of Electronic Systems (2001)

    Google Scholar 

  5. Douillet, A., Gao, G.R.: Register pressure in software-pipelined loop nests: Fast computation and impact on architecture design. CAPSL TM 58, Univ. of Delaware, Newark, Delaware (2005), ftp://ftp.capsl.udel.edu/pub/doc/memos

  6. Eichenberger, A., Davidson, E., Abraham, S.: Minimum register requirements for a modulo schedule. In: Proc. of the 27th int’l. symp. on Microarchitecture, pp. 75–84 (1994)

    Google Scholar 

  7. Hendren, L.J., Gao, G.R., Altman, E.R., Mukerji, C.: A register allocation framework based on hierarchical cyclic interval graphs. In: Pfahler, P., Kastens, U. (eds.) CC 1992. LNCS, vol. 641, pp. 176–191. Springer, Heidelberg (1992)

    Google Scholar 

  8. Huff, R.: Lifetime-sensitive modulo scheduling. In: Proc. of the conf. on Programming language design and implementation, pp. 258–267. ACM Press, New York (1993)

    Google Scholar 

  9. Jain, S.: Circular scheduling: A new technique to perform software pipelining. In: Proc. of the Conf. on Programming Language Design and Implementation, pp. 219–228 (1991)

    Google Scholar 

  10. Lam, M.: Software pipelining: An effective scheduling technique for VLIW machines. In: Proc. of the conf. on Programming language design and implementation (1988)

    Google Scholar 

  11. Llosa, J., Ayguadé, E., Valero, M.: Quantitative evaluation of register pressure on software pipelined loops. International Journal of Parallel Programming 26(2), 121–142 (1998)

    Article  Google Scholar 

  12. Llosa, J., González, A., Ayguadé, E., Valero, M.: Swing modulo scheduling: A lifetime sensitive approach. In: Proc. Conf. on Par. Arch. and Compil. Tech., pp. 80–86 (1996)

    Google Scholar 

  13. Moon, S.-M., Ebcioğlu, K.: Parallelizing nonnumerical code with selective scheduling and software pipelining. ACM Trans. on Prog. Lang. and Systems 19(6), 853–898 (1997)

    Article  Google Scholar 

  14. Muthukumar, K., Doshi, G.: Software pipelining of nested loops. In: Wilhelm, R. (ed.) CC 2001. LNCS, vol. 2027, pp. 165–181. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  15. Ning, Q., Gao, G.R.: A novel framework of register allocation for software pipelining. In: Proc. of the symp. on Principles of programming languages, pp. 29–42 (1993)

    Google Scholar 

  16. Rau, B.R.: Iterative modulo scheduling: an algorithm for software pipelining loops. In: Proc. of the int’l. symp. on Microarchitecture, pp. 63–74 (1994)

    Google Scholar 

  17. Rau, B.R., Lee, M., Tirumalai, P.P., Schlansker, M.S.: Register allocation for software pipelined loops. In: Proc. of the conf. on Prog. lang. design and impl., pp. 283–299 (1992)

    Google Scholar 

  18. Rong, H., Douillet, A., Gao, G.R.: Register allocation for software pipelined multidimensional loops. In: Proc. of the conf. on Prog. lang. design and impl. (2005)

    Google Scholar 

  19. Rong, H., Douillet, A., Govindarajan, R., Gao, G.R.: Code generation for single-dimension software pipelining of multi-dimensional loops. In: Proc. of Int. Symp. on Code Generation and Optimization, p. 175 (2004)

    Google Scholar 

  20. Rong, H., Tang, Z., Govindarajan, R., Douillet, A., Gao, G.R.: Single-dimension software pipelining for multi-dimensional loops. In: Proc. of Int. Symp. on Code Generation and Optimization, pp. 163–174 (2004)

    Google Scholar 

  21. Ruttenberg, J., Gao, G.R., Stoutchinin, A., Lichtenstein, W.: Software pipelining showdown: optimal vs. heuristic methods in a production compiler. In: Proc. of the conf. on Prog. lang. design and impl., pp. 1–11 (1996)

    Google Scholar 

  22. Zalamea, J., Llosa, J., Ayguadé, E., Valero, M.: Two-level hierarchical register file organization for vliw processors. In: Proc. of the symp. on Microarch., pp. 137–146 (2000)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2006 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Douillet, A., Gao, G.R. (2006). Register Pressure in Software-Pipelined Loop Nests: Fast Computation and Impact on Architecture Design. In: Ayguadé, E., Baumgartner, G., Ramanujam, J., Sadayappan, P. (eds) Languages and Compilers for Parallel Computing. LCPC 2005. Lecture Notes in Computer Science, vol 4339. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69330-7_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-69330-7_2

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-69329-1

  • Online ISBN: 978-3-540-69330-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics