Article

The Meeting Graph: A New Framework for Loop Register Allocation

11/1996;
Source: CiteSeer

ABSTRACT : Register allocation is a compiler phase where the gains can be essential in achieving performance on new architectures exploiting instruction level parallelism. We focus our attention on loops and improve the existing methods by introducing a new kind of graph. We model loop unrolling and register allocation together in a common framework, called the meeting graph. We expect that our results improve significantly loop register allocation while keeping the amount of code replication low. As a byproduct, we present an optimal algorithm for allocating loop variables to a rotating register file, as well as a new heuristic for loop variables spilling. Key-words: register allocation, loop optimization, instruction-level parallelism, graph decomposition, graph coloring (R'esum'e : tsvp) Ce travail a 'et'e partiellement financ'e par le projet Esprit #5399 COMPARE Unité de recherche INRIA Rocquencourt Domaine de Voluceau, Rocquencourt, BP 105, 78153 LE CHESNAY Cedex (France) Téléphone : (33 ...

Full-text

Available from: Christine Eisenbeis, Nov 16, 2012
0 Followers
 · 
147 Views
  • [Show abstract] [Hide abstract]
    ABSTRACT: In this paper we present a novel approach to find an optimum loop schedule under consideration of limited resources. The initiation interval λ is assumed to be a rational number. Our approach is formulated as a single optimization problem that can be solved using integer linear programming. The objective is to minimize the initiation interval, while both numerator and denominator of λ can be incorporated as variables of the optimization problem. the resources (functional units) may have a pipeline architecture; the approach also supports heterogeneous functional units.
    International Journal of Foundations of Computer Science 11/2011; 12(06). DOI:10.1142/S0129054101000825 · 0.33 Impact Factor
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: Register allocation is a compiler phase in which the gains can be essential in achieving performance on new architectures exploiting instruction level parallelism. We focus our attention on loops and improve the existing methods by introducing a new kind of graph. We model loop unrolling and register allocation together in a common framework, called the meeting graph. We expect that our results improve significantly loop register allocation while keeping the amount of code replication low. As a byproduct, we present an optimal algorithm for allocating loop variables to a rotating register file, as well as a new heuristic for loop variables spilling. 1 Introduction The efficiency of register allocation is a crucial problem in modern microprocessors, where the increasing gap between the internal clock cycle and memory latency exacerbates the need to keep the variables in registers and to avoid spill code. In this paper, we address the important problem of loop register allocation and s...