Early control of register pressure for software pipelined loops

  • Authors:
  • Sid-Ahmed-Ali Touati;Christine Eisenbeis

  • Affiliations:
  • INRIA Rocquencourt, Le Chesnay, France;INRIA Rocquencourt, Le Chesnay, France

  • Venue:
  • CC'03 Proceedings of the 12th international conference on Compiler construction
  • Year:
  • 2003

Quantified Score

Hi-index 0.00

Visualization

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.