Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 201 Compiler Construction

Similar presentations


Presentation on theme: "CS 201 Compiler Construction"— Presentation transcript:

1 CS 201 Compiler Construction
Global Register Allocation

2 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 NP-complete. 4-coloring of a graph

3 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.

4 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.

5 Live Ranges Contd.. X = = X X live-range 1 live-range 2

6 Global Register Allocation
Perform global analysis, identify live ranges, & compute interferences. Build register interference graph. Coalesce nodes in the graph. Attempt n-coloring of the graph. If none found, then modify program & interference graph by introducing “spill code” and repeat the above process till n-coloring is obtained.

7 Node Coalescing Combine X & Y into a single node:
X is live Y is live Y = X = Y = X = Y X Y Y is live at definition point of X Combine X & Y into a single node: X & Y will be assigned the same register X=Y is effectively eliminated. XY

8 Node Coalescing Contd.. L= S=L T=S =L =S =T SL= T=SL =SL SLT= =SLT Coalescing combines smaller live ranges into bigger ones in order to eliminate copy assignments.

9 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.

10 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 End if

11 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

12 Example Contd.. 5-coloring (A,B,C,D,E)

13 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)

14 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 Load C, R2 C spilled R0 = R1 + R2 A – R0, B – R1 Live range of C

15 Revised Algorithm Remove nodes with degree < N iteratively as long as this process can continue. If the graph is not empty then spill a node and go back to step 1. If nodes were spilled then Insert spill code for all spill decisions Rebuild interference graph Go back to step 1 Assign colors in reverse order.

16 Enhancements Attempt coloring of spilled nodes Live Range Splitting
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. 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.

17 Colorability Interference Graphs for straightline code are interval graphs  coloring is not NP-complete for them. A=B+1 X=Y+1 C=A+1 D=C+1 Write X,D A B X Y C D B A A & Y A & X X & C X & D 2-registers are needed

18 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

19 Colorability Contd.. A = B = C = = A = C D = = D = B A B C D

20 Many Other Issues Different register types
Overlapping registers of different sizes Instruction may require a register pair Allocating register to array elements (as opposed to scalars) …….

21 Sample Problems


Download ppt "CS 201 Compiler Construction"

Similar presentations


Ads by Google