1 / 43

Register Allocation by Puzzle Solving

Register Allocation by Puzzle Solving Jens Palsberg UCLA Computer Science Department University of California, Los Angeles palsberg@ucla.edu This talk Register allocation Aliased registers and pre-coloring Optimal live-range splitting produces elementary programs

adamdaniel
Download Presentation

Register Allocation by Puzzle Solving

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. Register Allocation by Puzzle Solving Jens Palsberg UCLA Computer Science Department University of California, Los Angeles palsberg@ucla.edu

  2. This talk • Register allocation • Aliased registers and pre-coloring • Optimal live-range splitting produces elementary programs • Elementary programs have elementary interference graphs • Coloring elementary graphs is the same as solving puzzles • A linear-time puzzle solving algorithm • Spilling • Experimental results Copyright @ 2007 UCLA

  3. Register allocation  a collection of puzzles Copyright @ 2007 UCLA

  4. A Compiler source language parser intermediate representation code generator machine code Copyright @ 2007 UCLA

  5. A Better Compiler source language parser intermediate representation code generator with a register allocator machine code Copyright @ 2007 UCLA

  6. What is Register Allocation? A = 10 B = 20 C = A + 30 Print C + 40 + B Assume we have two registers Copyright @ 2007 UCLA

  7. Register allocation = liveness analysis + graph coloring A = 10 B = 20 C = A + 30 Print C + 40 + B A Interference graph: B,A A B C With colors: B,C A B C Copyright @ 2007 UCLA

  8. After Register Allocation A = 10 B = 20 C = A + 30 Print C + 40 + B A B C R1 = 10 R2 = 20 R1 = R1 + 30 Print R1 + 40 + R2 Copyright @ 2007 UCLA

  9. Core (Spill-free) Register Allocation Problem Instance: a program P and a number K of available registers. Problem: can each variable of P be mapped to one of the K registers such that: variables with interfering live ranges are assigned to different registers? Theorem (Chaitin et al., 1981): NP-complete Copyright @ 2007 UCLA

  10. A program in SSA form has a chordal interference graph • Proved by three groups independently in 2005: • Bouchez (ENS Lyon) • Brisk et al. (UCLA) • Hack (U. Karlsruhe) • A chordal graph can be colored in linear time Copyright @ 2007 UCLA

  11. Aliased registers on the Pentium 32 bits EAX EBX ECX EDX 16 bits AX BX CX DX 8 bits CH CL BH BL DH DL AH AL Pre-coloring Copyright @ 2007 UCLA

  12. Weighted Graphs and Aligned 1-2-coloring • Nodes have weight one or two • Two numbers 2i and 2i+1 are aligned • Aligned 1-2-coloring: • assigns a color to every vertex of weight one • assigns two aligned colors to every vertex of weight two • Partial aligned 1-2-coloring: partial function • models pre-coloring Copyright @ 2007 UCLA

  13. Aligned 1-2-coloring Extension Instance: a number 2K of colors, a weighted graph G, and a partial aligned 1-2-coloring C of G Problem: Extend C to an aligned 1-2-coloring of G. Aligned 1-2-coloring:no vertex is pre-colored Coloring Extension: all vertices have weight one Coloring: no vertex is pre-colored; all weight one Copyright @ 2007 UCLA

  14. Related work Copyright @ 2007 UCLA

  15. This talk • Register allocation • Aliased registers and pre-coloring • Optimal live-range splitting produces elementary programs • Elementary programs have elementary interference graphs • Coloring elementary graphs is the same as solving puzzles • A linear-time puzzle solving algorithm • Spilling • Experimental results Copyright @ 2007 UCLA

  16. From strict programs to elementary programs • Optimal live range splitting : strict program  elementary program • Used by Appel and George (PLDI 2001)  Basic block Statement1 Parallel copy Statement2 …  Copyright @ 2007 UCLA

  17. A program P is an elementary program if: • P is strict • P is in static single assignment form • For any variable v of P, LR(v) contains at most one program point outside the basic block that contains def(v) • If two variables u,v of P interfere, then either def(u) = def(v), or kill(u) = kill(v) • If two variables u,v of P interfere, then either LR(u)  LR(v), or LR(v)  LR(u) Copyright @ 2007 UCLA

  18. Interference graph of the example program Copyright @ 2007 UCLA

  19. A clique substitution of P3 • P3 is a path with three vertices    Copyright @ 2007 UCLA

  20. Elementary graphs • Definition: G is an elementary graph if and only if every connected component of G is a clique substitution of P3 • Theorem: An elementary program has an elementary interference graph. Copyright @ 2007 UCLA

  21. Six classes of graphs Copyright @ 2007 UCLA

  22. This talk • Register allocation • Aliased registers and pre-coloring • Optimal live-range splitting produces elementary programs • Elementary programs have elementary interference graphs • Coloring elementary graphs is the same as solving puzzles • A linear-time puzzle solving algorithm • Spilling • Experimental results Copyright @ 2007 UCLA

  23. A puzzle board Copyright @ 2007 UCLA

  24. The six kinds of pieces Copyright @ 2007 UCLA

  25. A puzzle and a solution Copyright @ 2007 UCLA

  26. From graphs to puzzles • Given PX,Y,Z we build a puzzle: • Vertex  piece • Color  column • X-clique  upper row • Y-clique  both rows • Z-clique  lower row • Precoloring  some pieces are on the board already • Theorem: Aligned 1-2-coloring extension for clique substitutions of P3 and puzzle solving are equivalent under linear-time reductions Copyright @ 2007 UCLA

  27. A rule, a pattern, and a mismatch Copyright @ 2007 UCLA

  28. Example program Copyright @ 2007 UCLA

  29. Counterexample 1 Lesson: use a size-2 piece before two size-1 pieces Copyright @ 2007 UCLA

  30. Counterexample 2 Lesson: statements 7-10 must come before statements 11-14 Copyright @ 2007 UCLA

  31. Counterexample 3 Lesson: statement 15 must come before statements 11-14 Copyright @ 2007 UCLA

  32. Counterexample 4 Lesson: the order in statement 11-14 is crucial Copyright @ 2007 UCLA

  33. From graph coloring to puzzle solving • Theorem: A puzzle is solvable if and only if our program succeeds on the puzzle • Our puzzle solving program runs in linear time Copyright @ 2007 UCLA

  34. This talk • Register allocation • Aliased registers and pre-coloring • Optimal live-range splitting produces elementary programs • Elementary programs have elementary interference graphs • Coloring elementary graphs is the same as solving puzzles • A linear-time puzzle solving algorithm • Spilling • Experimental results Copyright @ 2007 UCLA

  35. Spilling • Visit each puzzle once • If the puzzle is not solvable, then remove some pieces and try to solve again • Each time we remove a piece, we also remove all other pieces that stem from the same variable in the original program Copyright @ 2007 UCLA

  36. Benchmark characteristics Copyright @ 2007 UCLA

  37. Puzzles and the number of times we solve them Copyright @ 2007 UCLA

  38. Execution time of the generated code vs. gcc Copyright @ 2007 UCLA

  39. Conclusion • If you want to do register allocation for the Pentium, your problem is to solve a collection of puzzles • Fast compilation time, competitive code quality • Future work: compare with run times of code generated by Smith-Ramsey-Holloway (PLDI 2004) • Future work: compare with Appel-George (PLDI 2001) Copyright @ 2007 UCLA

More Related