Abstract
The register allocation in loops is generally performed after or during the software pipelining process. This is because doing a conventional register allocation at first step without assuming a schedule lacks the information of interferences between variable lifetime intervals. Thus, the register allocator may introduce an excessive amount of false dependences that reduce dramatically the ILP (Instruction Level Parallelism).We present a new framework for controlling the register pressure before software pipelining. This is based on inserting some anti-dependences edges (register reuse edges) labeled with reuse distances, directly on the data dependence graph. In this new graph, we are able to guarantee that the number of simultaneously alive variables in any schedule does not exceed a limit. The determination of register and distance reuse is parameterized by the desired critical circuit ratio (MII) as well as by the register pressure constraints - either can be minimized while the other one is fixed. After scheduling, register allocation is done cyclically on conventional register sets or on rotating register files. We give an optimal exact model, and another approximative one that generalizes the Ning-Gao [13] buffer optimization heuristics.
We refer here to MII dep since we will not consider any resource constraints.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
D. Berson, R. Gupta, and M. Soffa. URSA: A Unified ReSource Allocator for Registers and Functional Units in VLIW Architectures. In Conference on Architectures and Compilation Techniques for Fine and Medium Grain Parallelism, pages 243–254, Orlando, Florida, Jan. 1993.
A. Darte, G.-A. Silber, and F. Vivien. Combining Retiming and Scheduling Techniques for Loop Parallelization and Loop Tiling. Parallel Processing Letters, 4(7):379–392, 1998.
D. de Werra, C. Eisenbeis, S. Lelait, and B. Marmol. On a Graph-Theoretical Model for Cyclic Register Allocation. Discrete Applied Mathematics, 93(2–3):191–203, July 1999.
J. C. Dehnert, P. Y.-T. Hsu, and J. P. Bratt. Overlapped Loop Support in the Cydra 5. In Proceedings of Third International Conference on Architectural Support for Programming Languages and Operating Systems, pages 26–38, NewYork, Apr. 1989. ACM Press.
A. E. Eichenberger, E. S. Davidson, and S. G. Abraham. Minimizing Register Requirements of a Modulo Schedule via Optimum Stage Scheduling. International Journal of Parallel Programming, 24(2):103–132, Apr. 1996.
W. fen Lin, S. K. Reinhardt, and D. Burger. Reducing DRAM Latencies with an Integrated Memory Hierarchy Design. In Proceedings of the 7th International Symposium on High-Performance Computer Architecture, Nuevo Leone, Mexico, Jan. 2001.
D. Fimmel and J. Muller. Optimal Software Pipelining Under Resource Constraints. International Journal of Foundations of Computer Science (IJFCS), 12(6):697–718, 2001.
L. J. Hendren, G. R. Gao, E. R. Altman, and C. Mukerji. A Register Allocation Framework Based on Hierarchical Cyclic Interval Graphs. Lecture Notes in Computer Science, 641, 1992.
R. Huff. Lifetime-Sensitive Modulo Scheduling. In PLDI 93, pages 258–267, Albuquerque, New Mexico, June 1993.
J. Janssen. Compilers Strategies for Transport Triggered Architectures. PhD thesis, Delft University, Netherlands, 2001.
C. E. Leiserson and J. B. Saxe. Retiming Synchronous Circuitry. Algorithmica, 6:5–35, 1991.
J. Llosa. Reducing the Impact of Register Pressure on Software Pipelined Loops. PhD thesis, Universitat Politecnica de Catalunya (Spain), 1996.
Q. Ning and G. R. Gao. A Novel Framework of Register Allocation for Software Pipelining. In Conference Record of the Twentieth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 29–42, Charleston, South Carolina, Jan. 1993. ACM Press.
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.
F. Sanchez and J. Cortadella. RESIS: A New Methodology for Register Optimization in Software Pipelining. In Proceedings of Second International Euro-Par Conference, Euro-Par’96, Lyon, France, August 1996.
A. Sawaya. Pipeline Logiciel:Découplage et Contraintes de Registres. PhD thesis, Université de Versailles Saint-Quentin-En-Yvelines, Apr. 1997.
Schlansker, B. Rau, and S. Mahlke. Achieving High Levels of instruction-Level Parallelism with Reduced Hardware Complexity. Technical Report HPL-96-120, Hewlet Packard, 1994.
M. M. Strout, L. Carter, J. Ferrante, and B. Simon. Schedule-Independent Storage Mapping for Loops. ACM SIG-PLAN Notices, 33(11):24–33, Nov. 1998.
W. Thies, F. Vivien, J. Sheldon, and S. Amarasinghe. A Unified Framework for Schedule and Storage Optimization. ACM SIGPLAN Notices, 36(5):232–242, May 2001.
S.-A.-A. Touati. EquiMax: A New Formulation of Acyclic Scheduling Problem for ILP Processors. In Interaction between Compilers and Computer Architectures. KluwerAcademic Publishers, 2001. ISBN 0-7923-7370-7.
S.-A.-A. Touati. OptimalAcyclic Fine-Grain Schedule with Cache Effects for Embedded and Real Time Systems. In Proceedings of 9th nternational Symposium on Hardware/Software Codesign, CODES, Copenhagen, Denmark, Apr. 2001. ACM.
S.-A.-A. Touati. Register Pressure in Instruction Level Parallelisme. PhD thesis, Université de Versailles, France, June 2002. ftp.inria.fr/INRIA/Projects/a3/touati/thesis.
J. Wang, A. Krall, and M. A. Ertl. Decomposed Software Pipelining with Reduced Register Requirement. In Proceedings of the IFIP WG10.3Working Conference on Parallel Architectures and Compilation Techniques, PACT95, pages 277–280, Limassol, Cyprus, June 1995.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Sid-Ahmed-Ali, T., Eisenbeis, C. (2003). Early Control of Register Pressure for Software Pipelined Loops. In: Hedin, G. (eds) Compiler Construction. CC 2003. Lecture Notes in Computer Science, vol 2622. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-36579-6_2
Download citation
DOI: https://doi.org/10.1007/3-540-36579-6_2
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-00904-7
Online ISBN: 978-3-540-36579-2
eBook Packages: Springer Book Archive