register allocation by puzzle solving
Download
Skip this Video
Download Presentation
Register Allocation by Puzzle Solving

Loading in 2 Seconds...

play fullscreen
1 / 43

Register Allocation - PowerPoint PPT Presentation


  • 488 Views
  • Uploaded on

Register Allocation by Puzzle Solving Jens Palsberg UCLA Computer Science Department University of California, Los Angeles [email protected] This talk Register allocation Aliased registers and pre-coloring Optimal live-range splitting produces elementary programs

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Register Allocation ' - adamdaniel


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
register allocation by puzzle solving

Register Allocation by Puzzle Solving

Jens Palsberg

UCLA Computer Science Department

University of California, Los Angeles

[email protected]

this talk
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

a compiler
A Compiler

source language

parser

intermediate representation

code generator

machine code

Copyright @ 2007 UCLA

a better compiler
A Better Compiler

source language

parser

intermediate representation

code generator with a

register allocator

machine code

Copyright @ 2007 UCLA

what is register allocation
What is Register Allocation?

A = 10

B = 20

C = A + 30

Print C + 40 + B

Assume we have

two registers

Copyright @ 2007 UCLA

register allocation liveness analysis graph coloring
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

after register allocation
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

core spill free register allocation problem
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

a program in ssa form has a chordal interference graph
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

aliased registers on the pentium
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

weighted graphs and aligned 1 2 coloring
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

aligned 1 2 coloring extension
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

related work
Related work

Copyright @ 2007 UCLA

this talk15
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

from strict programs to elementary programs
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

a program p is an elementary program if
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

a clique substitution of p 3
A clique substitution of P3
  • P3 is a path with three vertices   

Copyright @ 2007 UCLA

elementary graphs
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

six classes of graphs
Six classes of graphs

Copyright @ 2007 UCLA

this talk23
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

a puzzle board
A puzzle board

Copyright @ 2007 UCLA

the six kinds of pieces
The six kinds of pieces

Copyright @ 2007 UCLA

a puzzle and a solution
A puzzle and a solution

Copyright @ 2007 UCLA

from graphs to puzzles
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

example program
Example program

Copyright @ 2007 UCLA

counterexample 1
Counterexample 1

Lesson: use a size-2 piece before two size-1 pieces

Copyright @ 2007 UCLA

counterexample 2
Counterexample 2

Lesson: statements 7-10 must come before statements 11-14

Copyright @ 2007 UCLA

counterexample 3
Counterexample 3

Lesson: statement 15 must come before statements 11-14

Copyright @ 2007 UCLA

counterexample 4
Counterexample 4

Lesson: the order in statement 11-14 is crucial

Copyright @ 2007 UCLA

from graph coloring to puzzle solving
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

this talk37
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

spilling
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

benchmark characteristics
Benchmark characteristics

Copyright @ 2007 UCLA

conclusion
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

ad