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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Aiken, A., Nicolau, A., Novack, S.: Resource-constrained software pipelining. IEEE Transactions on Parallel and Distributed Systems 6(12), 1248–1270 (1995)
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)
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)
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)
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
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)
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)
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)
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)
Lam, M.: Software pipelining: An effective scheduling technique for VLIW machines. In: Proc. of the conf. on Programming language design and implementation (1988)
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)
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)
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)
Muthukumar, K., Doshi, G.: Software pipelining of nested loops. In: Wilhelm, R. (ed.) CC 2001. LNCS, vol. 2027, pp. 165–181. Springer, Heidelberg (2001)
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)
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)
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)
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)
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)
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)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)