Abstract
In this paper, we focus on the register allocation phase of software pipelining. We are interested in optimal register allocation. This means that the number of registers used must be equal to the maximum number of simultaneously alive variables of the loop. Usually two different means are used to achieve this, namely register renaming or loop unrolling. As these methods have both drawbacks, we introduce here a solution which is a trade-off between inserting move operations and unrolling the modulo-scheduled loop body.
We present a new algorithmic framework of optimal register allocation for modulo scheduled loops. The proposed algorithm, called U&M, is simple and efficient. We have implemented it in MOST. An experimental study of our algorithm on more than 1000 loops has been performed and we report a summary of the main results. This new algorithm performs consistently better than several other existing methods.
Chapter PDF
References
Erik R. Altman. Optimal Software Pipelining with Function Unit Register Constraints. PhD thesis, McGill University, Montréal, Canada, October 1995.
R. Bodik and R. Gupta. Array Data-Flow Analysis for Load-Store Optimizations in Superscalar Architectures. In Proceedings of the Eighth Annual Workshop on Languages and Compilers for Parallel Computing, number 1033 in LNCS, pages 1–15, Columbus, Ohio, August 1995. Springer Verlag.
R. Cytron and J. Ferrante. What's in a Name? or the Value of Renaming for Parallelism Detection and Storage Allocation. In Proceedings of the 1987 International Conference on Parallel Processing, pages 19–27, University Park, Pennsylvanie, August 1987. London: Penn State press.
J.C. Dehnert and R.A. Towle. Compiling for the Cydra 5. Journal of Supercomputing, 7(12), January 1993.
A.E. Eichenberger, E.S. Davidson, and S.G. Abraham. Minimum Register Requirements for a Modulo Schedule. In Proceedings of the 27th Annual International Symposium on Microarchitecture, pages 75–84, San Jose, California, November 30–December 2, 1994.
Ch. Eisenbeis, W. Jalby, and A. Lichnewsky. Compiler techniques for optimizing memory and register usage on the Cray-2. International Journal on High Speed Computing, 2(2), June 1990.
Ch. Eisenbeis, S. Lelait, and B. Marmol. The Meeting Graph: a New Model for Loop Cyclic Register Allocation. In Proceedings of the IFIP WG 10.3 Working Conference on Parallel Architectures and Compilation Techniques, PACT'95, pages 264–267, Limassol, Cyprus, June 27–29 1995. ACM Press.
M.R. Garey, D.S. Johnson, G.L. Miller, and C.H. Papadimitriou. The complexity of coloring circular arcs and chords. SIAM J. Alg. Disc. Meth., 1(2):216–227, June 1980.
L.J. Hendren, G.R. Gao, E.R. Altman, and C. Mukerji. A register allocation framework based on hierarchical cyclic interval graphs. The Journal of Programming Languages, 1(3):155–185, September 1993.
Richard A. Huff. Lifetime-Sensitive Modulo Scheduling. SIGPLAN Notices, 28(6):258–267, June 1993. Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation.
Monica S. Lam. Software Pipelining: An Effective Scheduling Technique for VLIW Machines. SIGPLAN Notices, 23(7):318–328, July 1988. Proceedings of the ACM SIGPLAN '88 Conference on Programming Language Design and Implementation.
Sylvain Lelait. Contribution à l'allocation de registres dans les boucles. Thése de Doctorat, Université d'Orléans, January 1996.
S. Lelait, G.R. Gao, and Ch. Eisenbeis. A New Fast Algorithm for Optimal Register Allocation in Modulo Scheduled Loops. Research Report, INRIA, 1998.
W. Mangione-Smith, S.G. Abraham, and E.S. Davidson. Register Requirements of Pipelined Processors. In Proceedings of the 1992 International Conference on Supercomputing, pages 260–271, Washington, DC, July 19–23 1992. ACM Press.
Q. Ning and G.R. Gao. A Novel Framework of Register Allocation for Software Pipelining. In Conference Record of the Twentieth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 29–42, Charleston, South Carolina, January 1993.
B.R. Rau, M. Lee, P.P. Tirumalai, and M.S. Schlansker. Register Allocation for Software Pipelined Loops. SIGPLAN Notices, 27(7):283–299, July 1992. Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation.
B.R. Rau. Iterative modulo scheduling: An algorithm for software pipelining loops. In Proceedings of the 27th Annual International Symposium on Microarchitecture, pages 63–74, San Jose, California, November 30-December 2, 1994.
J. Ruttenberg, G.R. Gao, A. Stouchinin, and W. Lichtenstein. Software pipelining showdown: Optimal vs. heuristic methods in a production compiler. In Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation, pages 1–11, Philadelphia, Pennsylvania, May 22–24, 1996.
P.A. Steenkiste and J.L. Hennessy. A simple interprocedural register allocation algorithm and its effectiveness for Lisp. ACM Transactions on Programming Languages and Systems, 11(1):1–32, January 1989.
J. Wang, Ch. Eisenbeis, M. Jourdan, and B. Su. DEcomposed Software Pipelining: a New Perspective and a New Approach. International Journal on Parallel Processing, 22(3):357–379, 1994.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Lelait, S., Gao, G.R., Eisenbeis, C. (1998). A new fast algorithm for optimal register allocation in modulo scheduled loops. In: Koskimies, K. (eds) Compiler Construction. CC 1998. Lecture Notes in Computer Science, vol 1383. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0026433
Download citation
DOI: https://doi.org/10.1007/BFb0026433
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64304-3
Online ISBN: 978-3-540-69724-4
eBook Packages: Springer Book Archive