1996Unpublished venueRequires access

Cooperative register allocation and instruction scheduling

Cynthia Anne Norris

Open publisher page 1 citations

Abstract

In order to exploit the fine-grain parallelism in pipelined, superscalar, superpipelined and VLIW machines, various strategies for scheduling instructions at compile time have been developed. Unfortunately, these strategies can have a negative effect on register allocation which is one of the most important optimizations performed in optimizing compilers. Until recently instruction scheduling and register allocation were treated separately, one occurring before the other in isolation. Due to the conflicts in ordering these two phases, several efforts have been made to provide communication between instruction scheduling and register allocation. However, the current schemes suffer a number of drawbacks. This dissertation investigates these issues through several strategies to provide cooperation between register allocation and instruction scheduling. One strategy, a Scheduler Sensitive Global register allocator (SSG), provides cooperation between global register allocation and per basic block instruction scheduling by making modifications to key phases of a successful global register allocator. Experimental results indicate that this technique performs as well as and increasingly better than other techniques with an increasing number of registers without the complexity of the previous approaches. A second strategy, Register Allocation Sensitive Region scheduling (RASER), performs a global scheduling technique called region scheduling while keeping track of the number of live variables in each region. RASER creates regions with parallelism matching the amount of parallelism exploitable by the architecture and also reduces the number of live variables in a region in order to reduce the amount of spill code generated by the subsequent register allocation phase. In addition, the design and implementation of a Register Allocator which allocates over the Program dependent graph (RAP) is also presented. By basing the allocation on the program dependence graph, the register allocation phase may be more easily integrated and intertwined with other optimization analyses and transformations, including instruction scheduling.

About this research paper

What this paper is about

In order to exploit the fine-grain parallelism in pipelined, superscalar, superpipelined and VLIW machines, various strategies for scheduling instructions at compile time have been developed. Unfortunately, these strategies can have a negative effect on register allocation which is one of the most important optimizations performed in optimizing compilers. Until recently instruction scheduling and register allocation were treated separately, one occurring before the other in isolation. Due to the conflicts in ordering these two phases, several efforts have been made to provide communication between instruction scheduling and register allocation. However, the current schemes suffer a number of drawbacks. This dissertation investigates these issues through several strategies to provide cooperation between register allocation and instruction scheduling. One strategy, a Scheduler Sensitive Global register allocator (SSG), provides cooperation between global register allocation and per basic block instruction scheduling by making modifications to key phases of a successful global register allocator. Experimental results indicate that this technique performs as well as and increasingly better than other techniques with an increasing number of registers without the complexity of the previous approaches. A second strategy, Register Allocation Sensitive Region scheduling (RASER), performs a global scheduling technique called region scheduling while keeping track of the number of live variables in each region. RASER creates regions with parallelism matching the amount of parallelism exploitable by the architecture and also reduces the number of live variables in a region in order to reduce the amount of spill code generated by the subsequent register allocation phase. In addition, the design and implementation of a Register Allocator which allocates over the Program dependent graph (RAP) is also presented. By basing the allocation on the program dependence graph, the register allocation phase may be more easily integrated and intertwined with other optimization analyses and transformations, including instruction scheduling.

Why it matters

OpenAlex reports 1 citations for this work. Citation counts describe recorded attention and do not establish research quality.

Key contribution

A contribution statement is not available in the OpenAlex record.

Method / approach

Method details are not available in the OpenAlex metadata.

Main findings

Findings are not separately available in the OpenAlex metadata.

Limitations

Limitations are not available in the OpenAlex metadata.

Applications

Application details are not available in the OpenAlex metadata.

Available abstract

In order to exploit the fine-grain parallelism in pipelined, superscalar, superpipelined and VLIW machines, various strategies for scheduling instructions at compile time have been developed. Unfortunately, these strategies can have a negative effect on register allocation which is one of the most important optimizations performed in optimizing compilers. Until recently instruction scheduling and register allocation were treated separately, one occurring before the other in isolation. Due to the conflicts in ordering these two phases, several efforts have been made to provide communication between instruction scheduling and register allocation. However, the current schemes suffer a number of drawbacks. This dissertation investigates these issues through several strategies to provide cooperation between register allocation and instruction scheduling. One strategy, a Scheduler Sensitive Global register allocator (SSG), provides cooperation between global register allocation and per basic block instruction scheduling by making modifications to key phases of a successful global register allocator. Experimental results indicate that this technique performs as well as and increasingly better than other techniques with an increasing number of registers without the complexity of the previous approaches. A second strategy, Register Allocation Sensitive Region scheduling (RASER), performs a global scheduling technique called region scheduling while keeping track of the number of live variables in each region. RASER creates regions with parallelism matching the amount of parallelism exploitable by the architecture and also reduces the number of live variables in a region in order to reduce the amount of spill code generated by the subsequent register allocation phase. In addition, the design and implementation of a Register Allocator which allocates over the Program dependent graph (RAP) is also presented. By basing the allocation on the program dependence graph, the register allocation phase may be more easily integrated and intertwined with other optimization analyses and transformations, including instruction scheduling.

Key concepts: Register allocation, Computer science, Allocator, Instruction scheduling, Scheduling (production processes), Processor register, Parallel computing, Instruction-level parallelism

Related papers

Back to paper searchBrowse research topicsOriginal source
Cooperative register allocation and instruction scheduling — Research Paper | ScholarLens