Software pipelining with register allocation and spilling

Author(s):  
Jian Wang ◽  
A. Krall ◽  
M. Anton Ertl ◽  
C. Eisenbeis
2004 ◽  
Vol 14 (02) ◽  
pp. 287-313 ◽  
Author(s):  
Sid-Ahmed-Ali TOUATI ◽  
Christine EISENBEIS

Register allocation in loops is generally performed after or during the software pipelining process. This is because doing a conventional register allocation as a first step without assuming a schedule lacks the information of interferences between values live ranges. Thus, the register allocator may introduce an excessive amount of false dependences that dramatically reduce the ILP (Instruction Level Parallelism). We present a new theoretical framework for controlling the register pressure before software pipelining. Thus is based on inserting some anti-dependence edges (register reuse edges) labeled with reuse distances, directly on the data dependence graph. In this new graph, we are able to fix the register pressure, measured as the number of simultaneously alive variables in any schedule. The determination of register and distance reuse is parameterized by the desired minimum initiation interval (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 on conventional register sets or on rotating register files. We give an optimal exact model, and an approximation that generalizes the Ning-Gao [22] buffer optimization method. We provide experimental results which show good improvement compared to [22]. Our theoretical model considers superscalar, VLIW and EPIC/IA64 processors.


2003 ◽  
Vol 38 (1) ◽  
pp. 85-96 ◽  
Author(s):  
Sriraman Tallam ◽  
Rajiv Gupta
Keyword(s):  

1991 ◽  
Vol 26 (4) ◽  
pp. 122-131 ◽  
Author(s):  
David G. Bradlee ◽  
Susan J. Eggers ◽  
Robert R. Henry

Sign in / Sign up

Export Citation Format

Share Document