PPT

advertisement
CS 201
Compiler Construction
Global Register Allocation
1
Global Register Allocation
Global  Across basic block
boundaries
Approach: Model register allocation
as a graph coloring problem.
Graph Coloring: Given an undirected
graph G, a coloring of G is an
assignment of colors to nodes such
that any two nodes connected by an
edge have different colors. In
general, graph coloring is NPcomplete.
4-coloring
of a graph
2
Register Allocation Contd..
Register Allocation as a graph coloring
problem:
Nodes  Variables
Edges  Interferences among variables
If two variables are simultaneously live at a
program point, they interfere. Thus, they
must be assigned different registers.
3
Live Ranges
Nodes can be live ranges of variables instead
of variables.
Live Range: A minimal subset of definitions
and uses of a variable such that:
• no other uses of the same variable can use
definitions from the minimal subset; and
• no uses of the variable in the minimal
subset can use values from definitions of the
variable that are not part of the minimal
subset.
4
Live Ranges Contd..
5
Global Register Allocation
1. Perform global analysis, identify live
ranges, & compute interferences.
2. Build register interference graph.
3. Coalesce nodes in the graph.
4. Attempt n-coloring of the graph.
5. If none found, then modify program &
interference graph by introducing “spill
code” and repeat the above process till ncoloring is obtained.
6
Node Coalescing
Combine X & Y into a single node:
• X & Y will be assigned the same register
• X=Y is effectively eliminated.
7
Node Coalescing Contd..
Coalescing combines smaller live ranges into
bigger ones in order to eliminate copy
assignments.
8
Attempt n-coloring
Color the interference graph using R colors where R
is the number of registers.
Observation: If there is a node n with < R neighbors,
then no matter how the neighbors are colored,
there will be at least one color left over to color
node n.
Remove n and its edges to get G’
Repeat the above process to get G’’
…….
If an empty graph results, R-coloring is possible.
Assign colors in reverse of the order in which
they were removed.
9
Attempt Coloring Contd..
Input: Graph G
Output: N-coloring of G
While there exists n in G with < N edges do
Eliminate n & all its edges from G; list n
End while
If G is empty the
for each node i in list in reverse order do
Add i & its edges back to G;
choose color for i
endfor
10
End if
Example
Empty
graph
11
Example Contd..
12
Spill if needed
What if G is not empty ? Must introduce spill
code (loads and stores)
Remove a node from G and spill its value into
memory. The resulting graph will have
fewer edges and therefore we may be
able to continue removing nodes according
to degree < N condition.
Which node to spill?
Low spill cost (extra instructions)
High degree (more likely nodes with
degree < N will result)
13
CISC vs RISC Processor
CISC: spilled data is directly referenced
from memory.
RISC: spilled data must be loaded before
use, i.e. register is needed for a short
duration.
A=B+C
C spilled
A – R0,
B – R1
Load C, R2
R0 = R1 + R2
Live range of C
14
Revised Algorithm
1. Remove nodes with degree < N iteratively
as long as this process can continue.
2. If the graph is not empty then spill a node
and go back to step 1.
3. If nodes were spilled then
–
–
–
Insert spill code for all spill decisions
Rebuild interference graph
Go back to step 1
4. Assign colors in reverse order.
15
Enhancements
1. Attempt coloring of spilled nodes
–
When coloring nodes in reverse order, see if a
color is available for a spilled node. Why? The
graph may be colorable and this simple
heuristic may work.
2. Live Range Splitting
–
One live range can be split into two such that
different registers are available for coloring
each result live range. At transition point from
one range to another, Register-to-Register
transfer instruction is required.
16
Colorability
Interference Graphs for straightline code
are interval graphs  coloring is not NPcomplete for them.
2-registers
are needed
17
Colorability Contd..
Arbitrary interference graphs cannot be
created from straightline code.
Can if
control flow
is allowed
Cannot create live range D that
does not interfere with C but
does interfere with A and B
18
Many Other Issues
1.
2.
3.
4.
Different register types
Overlapping registers of different sizes
Instruction may require a register pair
Allocating register to array elements (as
opposed to scalars)
5. …….
19
Many Other Issues
1.
2.
3.
4.
Different register types
Overlapping registers of different sizes
Instruction may require a register pair
Allocating register to array elements (as
opposed to scalars)
5. …….
20
Sample Problems
21
Download