1 / 20

Lecture 6 Register Allocation

Lecture 6 Register Allocation. Introduction Abstraction and the Problem Algorithm Reading: Chapter 8.8.4 Before next class: Chapter 10.1 - 10.2. Pseudo Registers. Code Selection Machine instructions using pseudo registers Pseudo registers Like machine registers, but infinite number

trinh
Télécharger la présentation

Lecture 6 Register Allocation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture 6Register Allocation Introduction Abstraction and the Problem Algorithm Reading: Chapter 8.8.4 Before next class: Chapter 10.1 - 10.2 CS243: Register Allocation

  2. Pseudo Registers • Code Selection • Machine instructions using pseudo registers • Pseudo registers • Like machine registers, but infinite number • No aliasing preg_a = reg2; preg_b = reg3; preg_0 = &g; preg_1 = preg_a + preg_b; preg_g = *preg_0; if(preg_1 == 0) goto Lab; preg_2 = preg_g + 1; *preg_0 = preg_2; bar(); preg_3 = *preg_0; preg_g= preg_3 - 1; *preg_0 = preg_g; Lab :; reg2 = preg_1 + preg_g; return ; int g; int foo(int a, int b) { if (a+b) { g++; bar(); g--; } return a+b+g; } CS243: Register Allocation 2

  3. I. Motivation • Problem • Allocation of variables (pseudo-registers) to hardware registers in a procedure • Perhaps the most important optimization • Directly reduces running time • (memory access  register access) • Other optimizations heavily interact • PRE • Scheduling • Loop optimizations CS243: Register Allocation

  4. Goal Find an assignment for all pseudo-registers, if possible. If there are not enough registers in the machine, choose registers to spill to memory CS243: Register Allocation

  5. Example A = … IF A goto L1 B = … = A D = = B + D L1: C = … = A D = = C + D CS243: Register Allocation

  6. II. An Abstraction for Allocation & Assignment • Intuitively • Two pseudo-registers interfere if at some point in the program they cannot both occupy the same register. • Interference graph: an undirected graph, where • nodes = pseudo-registers • there is an edge between two nodes if their corresponding pseudo-registers interfere • What is not represented • Extent of the interference between uses of different variables • Where in the program is the interference CS243: Register Allocation

  7. Register Allocation and Coloring • A graph is n-colorable if: • every node in the graph can be colored with one of the n colors such that two adjacent nodes do not have the same color. • Assigning n register (without spilling) = Coloring with n colors • assign a node to a register (color) such that no two adjacent nodes are assigned same registers(colors) • Is spilling necessary? = Is the graph n-colorable? • To determine if a graph is n-colorable is NP-complete, for n>2 • Too expensive • Heuristics CS243: Register Allocation

  8. III. Algorithm Step 1. Build an interference graph • refining notion of a node • finding the edges Step 2. Coloring • use heuristics to try to find an n-coloring • Success: • colorable and we have an assignment • Failure: • graph not colorable, or • graph is colorable, but it is too expensive to color CS243: Register Allocation

  9. Step 1a. Nodes in an Interference Graph A = … IF A goto L1 B = … = A D = = B + D L1: C = … = A D = = D + C A = 2 = A CS243: Register Allocation

  10. Live Ranges and Merged Live Ranges a = … a = … … = a • Motivation: to create an interference graph that is easier to color • Eliminate interference in a variable’s “dead” zones. • Increase flexibility in allocation: • can allocate same variable to different registers • A live range consists of a definition and all the points in a program (e.g. end of an instruction) in which that definition is live. • How to compute a live range? • Two overlapping live ranges for the same variable must be merged CS243: Register Allocation

  11. Example (Revisited) liveness reaching-def {} {} {A} {A1} {A} {A1} A = … (A1) IF A goto L1 {A} {A1} {A,B} {A1,B} {B} {A1,B} {B,D} {A1,B,D2} {D} {A1,B,D2} {A} {A1} {A,C} {A1,C} {C} {A1,C} {C,D} {A1,C,D1} {D} {A1,C,D1} B = … = A D = (D2) = B + D L1: C = … = A D = (D1) = D + C {D} {A1,B,C,D1,D2} {A,D} {A2,B,C,D1,D2} {A} {A2,B,C,D1,D2} A = (A2) = D {A} {A2,B,C,D1,D2} = A {} {A2,B,C,D1,D2} (Does not use A, B, C, or D.) CS243: Register Allocation

  12. Merging Live Ranges • Merging definitions into equivalence classes • Start by putting each definition in a different equivalence class • For each point in a program: • if (i) variable is live, and (ii) there are multiple reaching definitions for the variable, then: • merge the equivalence classes of all such definitions into one equivalence class • From now on, refer to merged live ranges simply as live ranges CS243: Register Allocation

  13. Step 1b. Edges of Interference Graph • Intuitively: • Two live ranges (necessarily of different variables) may interfereif they overlap at some point in the program. • Algorithm: • At each point in the program: • enter an edge for every pair of live ranges at that point. • An optimized definition & algorithm for edges: • Algorithm: • check for interference only at the start of each live range • Faster • Better quality CS243: Register Allocation

  14. Example 2 IF Q goto L1 A = … L1: B = … IF Q goto L2 … = A L2: … = B CS243: Register Allocation

  15. Step 2. Coloring • Reminder: coloring for n > 2 is NP-complete • Observations: • a node with degree < n  • can always color it successfully, given its neighbors’ colors • a node with degree = n  • a node with degree > n  CS243: Register Allocation

  16. Coloring Algorithm B E A C D • Algorithm: • Iterate until stuck or done • Pick any node with degree < n • Remove the node and its edges from the graph • If done (no nodes left) • reverse process and add colors • Example (n = 3): • Note: degree of a node may drop in iteration • Avoids making arbitrary decisions that make coloring fail CS243: Register Allocation

  17. What Does Coloring Accomplish? B E A C D • Done: • colorable, also obtained an assignment • Stuck: • colorable or not? CS243: Register Allocation

  18. What if Coloring Fails? • Use heuristics to improve its chance of success and to spill code Build interference graph Iterative until there are no nodes left If there exists a node v with less than n neighbor place v on stack to register allocate else v = node chosen by heuristics (least frequently executed, has many neighbors) place v on stack to register allocate (mark as spilled) remove v and its edges from graph While stack is not empty Remove v from stack Reinsert v and its edges into the graph Assign v a color that differs from all its neighbors (guaranteed to be possible for nodes not marked as spilled) CS243: Register Allocation

  19. Summary • Problems: • Given n registers in a machine, is spilling avoided? • Find an assignment for all pseudo-registers, whenever possible. • Solution: • Abstraction: an interference graph • nodes: live ranges • edges: presence of live range at time of definition • Register Allocation and Assignment problems • equivalent to n-colorabilityof interference graph  NP-complete • Heuristics to find an assignment for n colors • successful: colorable, and finds assignment • not successful: colorability unknown & no assignment CS243: Register Allocation

  20. Extra • Scope of Problem: • Example Showed Whole Function • Separate Inner Loops • Interaction with scheduling • Don’t want to spill in the inner loop • Inter-procedural • Preferencing • Avoid copies on function calls, entries and returns • Glue together inner loop allocation with global • Rematerialization CS243: Register Allocation 20

More Related