A genetic algorithm for register allocation

Conference Paper (PDF Available) · April 1999with 75 Reads
DOI: 10.1109/GLSV.1999.757416 · Source: IEEE Xplore
Conference: VLSI, 1999. Proceedings. Ninth Great Lakes Symposium on
Abstract
In this paper we introduce a new genetic algorithm for register allocation. A merge operator is used to generate new individual solutions. The number of steps required to examine all pairs in the population matrix to generate n<sup>2</sup> (n is the population matrix size). Generating an offspring from the parents needs m steps (m number of nodes). The total number of steps required by the algorithm is n<sup>2</sup>m, that is the genetic algorithm has a linear time complexity in terms of number of nodes. The experimental results show optimal solutions in many of the graphs used for testing
C47_A Genetic Algorithm for Register Allocation.pdf
14.82 KB
110.pdf
14.82 KB
  • Article
    We present RALF, a framework for end-to-end evaluation of regis-ter allocators. Built on top of gcc, RALF enables evaluation and comparison of register allocators in the setting of an industrial-strength compiler. RALF supports modular plug-and-play of reg-ister allocators without modifying the compiler implementation at all. RALF provides any plugged-in register allocator with an in-termediate program representation that is independent of the data structures of the framework. In return, the register allocator pro-vides RALF with a set of register allocation directives. The contract between RALF and a register allocator is given by requirements on the intermediate program representation and the register allocation directives. RALF checks that the produced directives satisfy the requirements, thereby helping with finding bugs in a register allo-cator. We demonstrate the versatility of RALF by presenting our experiments with six different register allocators.
  • Conference Paper
    This paper presents a framework for designing, verifying, and evaluating register allocation algorithms. The proposed framework has three main components. The rst component is MIRA, a language for describing programs prior to register allocation. The second component is FORD, a language that describes the results produced by the register allocator. The third component is a type checker for the output of a reg- ister allocator which helps to nd bugs. To illustrate the eectiveness of the framework, we present RALF, a tool that allows a register allocator to be integrated into the gcc compiler for the StrongARM architecture. RALF simplies the development of register allocators by sheltering the programmer from the internal complexity of gcc. MIRA and FORD's fea- tures are sucient to implement most of the register allocators currently in use and are independent of any particular register allocation algorithm or compiler. To demonstrate the generality of our framework, we have used RALF to evaluate eight dierent register allocators, including iter- ated register coalescing, linear scan, a chordal based allocator, and two integer linear programming approaches.