CS 201 Compiler Construction Global Register Allocation 1
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. . X X= =X X= live-range 1 =X X= live-range 2 =X X 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 Y= Y is live X=Y =X X Y Y is live at definition point of X =Y Combine X & Y into a single node: • X & Y will be assigned the same register • X=Y is effectively eliminated. XY 7
Node Coalescing Contd. . L= SLT= S=L T=S =T =S =L =T =SL =SLT 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 5 -coloring (A, B, C, D, E) Empty graph 1, 2, 5, 7, 10, 11 have degree < 5 Now 3, 4, 6, 8, 9 have degree < 5 11
Example Contd. . 5 -coloring (A, B, C, D, E) 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 – R 0, B – R 1 Load C, R 2 R 0 = R 1 + R 2 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. A B X Y C D A=B+1 X=Y+1 C=A+1 D=C+1 Write X, D B A A&Y A&X X&C X&D 2 -registers are needed 17
Colorability Contd. . Arbitrary interference graphs cannot be created from straightline code. Cannot create live range D that - does not interfere with C - does interfere with A and B Can if control flow is allowed 18
Colorability Contd. . A A= D C C= =A B= =C D= =A B= =D =B B 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
- Slides: 21