spring 2010spring 2010 - mit opencourseware · s1 s2 use x s4 3 4 . saman amarasinghe & armando...

102
Spring 2010 Spring 2010 Register Allocation Courtesy of Saman Amarasinghe and Armando Solar-Lezama. Used with permission.

Upload: others

Post on 30-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Spring 2010Spring 2010

Register Allocation

Courtesy of Saman Amarasinghe and Armando Solar-Lezama. Used with permission.

Page 2: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

5

Outline • What is register allocation • Webs • Interference Graphs • Graph coloring • Spilling

S litti • Splitting • More optimizations

Saman Amarasinghe & Armando Solar-Lezama 2 ©MIT

6.035

Page 3: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Storing values between def and useg• Program computes with values

– value definitions (where computed)value definitions (where computed) – value uses (where read to compute new values)

• Values must be stored between def and use – First Option

• store each value in register at definition • retrieve value from register at each use

t h l i t d fi iti• store each value in memory at definition • retrieve from memory at each use

– Second Optionp

Saman Amarasinghe & Armando Solar-Lezama 3 6.035 ©MIT

Page 4: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

performance – Affects almost every statement of the program

• Limited mem-to-mem ALU ops, may need two instructions – Probably is the optimization with the most impact!

Register Allocationg• Deciding which values to store in limited

b f i tnumber of registers

• Register allocation has a direct impact onRegister allocation has a direct impact on

– Eliminates expensive memory instructions – # of instructions goes down due to direct

manipulation of registersmanipulation of registers

Saman Amarasinghe & Armando Solar-Lezama 4 6.035 ©MIT

Page 5: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

What can be put in a register?p g • Values stored in compiler-generated temps

• Language-level values

– Values stored in local scalar variables – Big constants

Values stored in array elements and object fields Values stored in array elements and object fields

• Issue: alias analysis

• Register set depends on the data-type – floating-point values in floating point registers – integer and pointer values in integer registers

Saman Amarasinghe & Armando Solar-Lezama 5 6.035 ©MIT

Page 6: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Issues • Fewer instructions when using registers

– Additional instructions when using memory accesses

• Registers are faster than memory wider gap in faster newer processors wider gap in faster, newer processors

– Factor of about 4 bandwidth, factor of about 3 latency

– Could be bigger if program characteristics were different

• But only a small number of registers available

Usually 16 integer and 16 floating point registers Usually 16 integer and 16 floating-point registers – Some of those registers have fixed users (ex: RSP, RBP)

Saman Amarasinghe & Armando Solar-Lezama 6 6.035 ©MIT

Page 7: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Outline 15

• What is register allocation • Key ideas in register allocation • Webs • Interference Graphs • Graph coloring

S litti• Splitting • More optimizations

Saman Amarasinghe & Armando Solar-Lezama 7 ©MIT

6.035

Page 8: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Summary of Register Allocationy g • You want to put each temporary in a register

– But, you don’t have enough registers.

• Key Ideas: 1 When a temporary goes dead its register can be reused 1. When a temporary goes dead, its register can be reused

2. Two live temporaries can’t use the same register at the same time

Saman Amarasinghe & Armando Solar-Lezama 8 6.035 ©MIT

Page 9: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

-

Summary of Register Allocationy g • When a temporary goes dead, its register can be reused •• Example:Example:

a := c + d

e := a + b

f := e - 11f := e (assume that a and e die after use)

• temporaries a, e and f can go in the same register

1 + d

r1 := c + d

r1 := r1 + b

r1:= r1 – 1

Saman Amarasinghe & Armando Solar-Lezama 9 6.035 ©MIT

Page 10: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Summary of Register Allocationy g • Two live temporaries can’t use the same register at the

same timesame time

• Example 2: a := c + d a := c + d

e := a + b

f := e - a

• ttemporariies e andd a can nott go iin th the same regiistter

r1 := c + d

r2 := r1 + b

r1 := r2 r1r1 := r2 – r1

Saman Amarasinghe & Armando Solar-Lezama 10 6.035 ©MIT

Page 11: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

When things don’t work out • Sometimes more live variables than registers

g

a := c + d e := c + b f := e – c

+ f

Won’t work for 2 registers g := e + f

h := a + g

(assume only g and h live at the end)

g

• You can split a live range by storing to memory a := c + d store a e := c + b f := e – c g := e + f load a h := a + g

Saman Amarasinghe & Armando Solar-Lezama 11 6.035 ©MIT

Page 12: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Web-Based Register Allocationg• Determine live ranges for each value (web) • Determine overlapping ranges (interference) • Compute the benefit of keeping each web in a

register (spill cost)register (spill cost) • Decide which webs get a register (allocation) • Split webs if needed (spilling and splitting) • Split webs if needed (spilling and splitting) • Assign hard registers to webs (assignment) • Generate code including spills (code gen) • Generate code including spills (code gen)

Saman Amarasinghe & Armando Solar-Lezama 12 6.035 ©MIT

Page 13: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Outline 25

• What is register allocation • Key ideas in register allocation • Webs • Interference Graphs • Graph coloring

S litti• Splitting • More optimizations

Saman Amarasinghe & Armando Solar-Lezama 13 ©MIT

6.035

Page 14: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

web – Def and all reachable uses must be in same web

Webs • Starting Point: def-use chains (DU chains)

Connects definition to all reachable usesConnects definition to all reachable uses

• Conditions for putting defs and uses into sameConditions for putting defs and uses into same

– All defs that reach same use must be in same web

• Use a union-find algorithm

Saman Amarasinghe & Armando Solar-Lezama 14 6.035 ©MIT

Page 15: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Exampple

def yy

def x def x def x use y

def x def y

use x def x

use x use y

use x

Saman Amarasinghe & Armando Solar-Lezama 15 6.035 ©MIT

use x

Page 16: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Exampple

def yy

def x def x def x use y

def x def y

use x def x

use x use y

use x

Saman Amarasinghe & Armando Solar-Lezama 16 6.035 ©MIT

use x

Page 17: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def yy

def x def x def x use y

def x def y

use x def x

use x use y

use x

Saman Amarasinghe & Armando Solar-Lezama 17 6.035 ©MIT

use x

Page 18: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def yy

def x def x def x use y

def x def y

use x def x

use x use y

use x

Saman Amarasinghe & Armando Solar-Lezama 18 6.035 ©MIT

use x

Page 19: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def yy

def x def x def x use y

def x def y

use x def x

use x use y

use x

Saman Amarasinghe & Armando Solar-Lezama 19 6.035 ©MIT

use x

Page 20: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def yy

def x def x def x use y

def x def y

use x def x

use x use y

use x

Saman Amarasinghe & Armando Solar-Lezama 20 6.035 ©MIT

use x

Page 21: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def yy

def x def x def x use y

def x def y

use x def x

use x use y

use x

Saman Amarasinghe & Armando Solar-Lezama 21 6.035 ©MIT

use x

Page 22: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def y s1y

def x def x 2 def x use y

def x def y

s2

use x def x

use x use y

s3

use x

s4

Saman Amarasinghe & Armando Solar-Lezama 22 6.035 ©MIT

use x

Page 23: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Webs • Web is unit of register allocation

• If web allocated to a given register R – All definitions computed into R – All uses read from R

• If web allocated to a memory location M All d fi iti t d i t M– All definitions computed into M

– All uses read from M

Saman Amarasinghe & Armando Solar-Lezama 23 6.035 ©MIT

Page 24: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

31

Outline • What is register allocation • Webs • Interference Graphs • Graph coloring • Splitting • MMore opti timiizati tions

Saman Amarasinghe & Armando Solar-Lezama 24 ©MIT

6.035

Page 25: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

S a d C s o a o to es

Convex Sets and Live Rangesg• Concept of convex set

• A set S is convex if – A, B in S and C is on a path from A to B implies, pat p – C is in S

• Concept of live range of a web – Minimal convex set of instructions that includes all defs

and uses in web – Intuitively, region in which web’s value is live

Saman Amarasinghe & Armando Solar-Lezama 25 6.035 ©MIT

Page 26: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Interference • Two webs interfere if their live ranges overlap

(have a nonemtpy intersection)

• If two webs interfere, values must be stored in different registers or memory locations

• If two webs do not interfere, can store values in same register or memory locationsame register or memory location

Saman Amarasinghe & Armando Solar-Lezama 26 6.035 ©MIT

Page 27: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def y s1y

def x def x 2 def x use y

def x def y

s2

use x def x

use x use y

s3

use x

s4

Saman Amarasinghe & Armando Solar-Lezama 27 6.035 ©MIT

use x

Page 28: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def y s1y

def x 2def x def x use y

s2def x def y

use x def x

s3 use x use y

use x

s4

Saman Amarasinghe & Armando Solar-Lezama 28 6.035 ©MIT

use x

Page 29: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def y s1 Webs s1 and s2 interfere Webs s2 and s3 interfere y

def x 2def x def x use y

s2def x def y

use x def x

s3 use x use y

use x

s4

Saman Amarasinghe & Armando Solar-Lezama 29 6.035 ©MIT

use x

Page 30: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Interference Graphp• Representation of webs and their interference

– Nodes are the webs – An edge exists between two nodes if they interfere

s1 s2

Saman Amarasinghe & Armando Solar-Lezama 30 6.035 ©MIT

s3 s4

Page 31: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def y s1y

def x 2def x def x use y

s2def x def y

use x def x

s3 use x use y

s1 s2

use x

s4

3 4

Saman Amarasinghe & Armando Solar-Lezama 31 6.035 ©MIT

use x s3 s4

Page 32: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Examplep

def y s1 Webs s1 and s2 interfere Webs s2 and s3 interfere y

def x 2def x def x use y

s2def x def y

use x def x

s3 use x use y

s1 s2

use x

s4

3 4

Saman Amarasinghe & Armando Solar-Lezama 32 6.035 ©MIT

use x s3 s4

Page 33: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

a

Outline 37

• Overview of procedure optimizations • What is register allocation • A simple register allocator • Webs • Interference Graphs • GGraphh colloriing • Splitting

More optimi tions• More optimizations

Saman Amarasinghe & Armando Solar-Lezama 33 ©MIT

6.035

Page 34: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Register Allocation Using

Graph Coloring

Graph Coloring

• Each web is allocated a register

each node gets a register (color)

• If two webs interfere they cannot use the same

register register – if two nodes have an edge between them, they cannot

have the same color

s1 s2

Saman Amarasinghe & Armando Solar-Lezama 34 6.035 ©MIT

s3 s4

Page 35: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloringp g • Assign a color to each node in graph

• Two nodes connected to same edge must have different colors

Cl i bl i h h• Classic problem in graph theory

• NP lNP complette – But good heuristics exist for register allocation

Saman Amarasinghe & Armando Solar-Lezama 35 6.035 ©MIT

Page 36: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloring Examplep g p

Saman Amarasinghe & Armando Solar-Lezama 36 6.035 ©MIT

Page 37: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloring Examplep g p

• 1 Color

Saman Amarasinghe & Armando Solar-Lezama 37 6.035 ©MIT

Page 38: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloring Examplep g p

Saman Amarasinghe & Armando Solar-Lezama 38 6.035 ©MIT

Page 39: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloring Examplep g p

• 2 Colors

Saman Amarasinghe & Armando Solar-Lezama 39 6.035 ©MIT

Page 40: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloring Examplep g p

Saman Amarasinghe & Armando Solar-Lezama 40 6.035 ©MIT

Page 41: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloring Examplep g p

• Still 2 Colors

Saman Amarasinghe & Armando Solar-Lezama 41 6.035 ©MIT

Page 42: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloring Examplep g p

Saman Amarasinghe & Armando Solar-Lezama 42 6.035 ©MIT

Page 43: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Graph Coloring Examplep g p

• 3 Colors

Saman Amarasinghe & Armando Solar-Lezama 43 6.035 ©MIT

Page 44: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Heuristics for Register Coloringg g • Coloring a graph with N colors • If degree < N (degree of a node = # of edges)

– Node can always be colored – After coloring the rest of the nodes, you’ll have at least

one color left to color the current node • IfIf d degree >>= NN

– still may be colorable with N colors

Saman Amarasinghe & Armando Solar-Lezama 44 6.035 ©MIT

Page 45: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Heuristics for Register Coloringg g • Remove nodes that have degree < N

– push the removed nodes onto a stack • When all the nodes have degree >= N

– Find a node to spill (no color for that node) – Remove that node

• When empty, start to color – pop a node from stack back

AAssiign it a collor th that i t is different f t from itit s connectteddit diff nodes (since degree < N, a color should exist)

Saman Amarasinghe & Armando Solar-Lezama 45 6.035 ©MIT

Page 46: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

s3 s4

Saman Amarasinghe & Armando Solar-Lezama 46 6.035 ©MIT

Page 47: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

s3 s4

Saman Amarasinghe & Armando Solar-Lezama 47 6.035 ©MIT

Page 48: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s4

s4

Saman Amarasinghe & Armando Solar-Lezama 48 6.035 ©MIT

Page 49: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 49 6.035 ©MIT

Page 50: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2 s1

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 50 6.035 ©MIT

Page 51: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2 s1 s3

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 51 6.035 ©MIT

Page 52: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2 s1 s3

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 52 6.035 ©MIT

Page 53: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2 s1 s3

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 53 6.035 ©MIT

Page 54: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2 s1

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 54 6.035 ©MIT

Page 55: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2 s1

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 55 6.035 ©MIT

Page 56: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 56 6.035 ©MIT

Page 57: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s2

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 57 6.035 ©MIT

Page 58: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s4

s4

Saman Amarasinghe & Armando Solar-Lezama 58 6.035 ©MIT

Page 59: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s4

s4

Saman Amarasinghe & Armando Solar-Lezama 59 6.035 ©MIT

Page 60: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

s3 s4

Saman Amarasinghe & Armando Solar-Lezama 60 6.035 ©MIT

Page 61: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Coloring Exampleg p N = 3

s1 s2

s0

s3 s4

Saman Amarasinghe & Armando Solar-Lezama 61 6.035 ©MIT

Page 62: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

s3 s4

Saman Amarasinghe & Armando Solar-Lezama 62 6.035 ©MIT

Page 63: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s4

s4

Saman Amarasinghe & Armando Solar-Lezama 63 6.035 ©MIT

Page 64: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s4

s4

Saman Amarasinghe & Armando Solar-Lezama 64 6.035 ©MIT

Page 65: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 65 6.035 ©MIT

Page 66: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s2

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 66 6.035 ©MIT

Page 67: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s2

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 67 6.035 ©MIT

Page 68: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s2

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 68 6.035 ©MIT

Page 69: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 69 6.035 ©MIT

Page 70: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3

s3 s4 s4

Saman Amarasinghe & Armando Solar-Lezama 70 6.035 ©MIT

Page 71: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s4

s4

Saman Amarasinghe & Armando Solar-Lezama 71 6.035 ©MIT

Page 72: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

4 s3 s4

s4

Saman Amarasinghe & Armando Solar-Lezama 72 6.035 ©MIT

Page 73: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

s3 s4

Saman Amarasinghe & Armando Solar-Lezama 73 6.035 ©MIT

Page 74: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Another Coloring Exampleg p N = 3

s1 s2

s0

s3 s4

Saman Amarasinghe & Armando Solar-Lezama 74 6.035 ©MIT

Page 75: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

What Now? • Option 1

– Pick a web and allocate value in memory – All defs go to memory, all uses come from memory

• Option 2 – Split the web into multiple webs

• In either case, will retry the coloring

Saman Amarasinghe & Armando Solar-Lezama 75 6.035 ©MIT

Page 76: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Which web to pick?p• One with interference degree >= N • One with minimal spill cost (cost of placing value

in memory rather than in register) • What is spill cost?

– Cost of extra load and store instructions

Saman Amarasinghe & Armando Solar-Lezama 76 6.035 ©MIT

Page 77: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Solution: Use a static approximation – profiling can give instruction execution frequencies – or use heuristics based on structure of control flow

Ideal and Useful Spill Costsp• Ideal spill cost - dynamic cost of extra load and

store instructions. Can’t expect to compute this. – Don’t know which way branches resolve

D ’ k h i l– Don’t know how many times loops execute – Actual cost may be different for different executions

Solution: Use a static approximation •

or use heuristics based on structure of control flow graph

Saman Amarasinghe & Armando Solar-Lezama 77 6.035 ©MIT

Page 78: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

t t t t

One Way to Compute Spill Costy p p • Goal: give priority to values used in loops • So assume loops execute 10 or 100 times

• Spill cost = – sum over all def sites of cost of a store instruction

times 10 to the loop nesting depth power, plus ll it f f l d i i isum over all use sites of cost of a load instruction times

10 to the loop nesting depth power •• Choose the web with the lowest spill cost Choose the web with the lowest spill cost

Saman Amarasinghe & Armando Solar-Lezama 78 6.035 ©MIT

Page 79: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

With 1 R i t Whi h

Spill Cost Examplep p

Spill Cost For x def x def y

Spill Cost For x storeCost+loadCost

use y Spill Cost For y

9*storeCost+9*loadCost y def y

9 storeCost+9 loadCost

use x use y

With 1 Register, Which Variable Gets Spilled?

Saman Amarasinghe & Armando Solar-Lezama 79 6.035 ©MIT

use y

Page 80: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

a

Outline 47

• Overview of procedure optimizations • What is register allocation • A simple register allocator • Webs • Interference Graphs • GGraphh colloriing • Splitting

More optimi tions• More optimizations

Saman Amarasinghe & Armando Solar-Lezama 80 ©MIT

6.035

Page 81: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Rather Than Spilling

p g p g • Split the web

Split a web into multiple webs so that there will be less interference in the interference graph making it N-colorable

– Spill the value to memory and load it back at the points where the web is split

Saman Amarasinghe & Armando Solar-Lezama 81 6.035 ©MIT

Page 82: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def xdef x def y use x use x use y

use z

Saman Amarasinghe & Armando Solar-Lezama 82 6.035 ©MIT

Page 83: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def xdef x def y use x x y use x use y

z

use z

z

Saman Amarasinghe & Armando Solar-Lezama 83 6.035 ©MIT

Page 84: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def xdef x def y use x x y use x use y

z

use z

z

2 colorable?

Saman Amarasinghe & Armando Solar-Lezama 84 6.035 ©MIT

Page 85: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def xdef x def y use x x y use x use y

z

use z

z

2 colorable? NO!

Saman Amarasinghe & Armando Solar-Lezama 85 6.035 ©MIT

NO!

Page 86: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def xdef x def y use x use x use y

use z

Saman Amarasinghe & Armando Solar-Lezama 86 6.035 ©MIT

Page 87: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def xdef x def y use x use x use y

use z

Saman Amarasinghe & Armando Solar-Lezama 87 6.035 ©MIT

Page 88: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def x z1

def x def y use x x y use x use y

z2

use z

z2

Saman Amarasinghe & Armando Solar-Lezama 88 6.035 ©MIT

Page 89: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def x z1

def x def y use x x y use x use y

z2

use z

z2

2 colorable?

Saman Amarasinghe & Armando Solar-Lezama 89 6.035 ©MIT

Page 90: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def x z1

def x def y use x x y use x use y

z2

use z

z2

2 colorable? YES!

Saman Amarasinghe & Armando Solar-Lezama 90 6.035 ©MIT

YES!

Page 91: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z

x y z

use z

def x

r1 r2

1

z1 def x def y use x

r1

x y use x use y

r1 z2

use z r1 z2

2 colorable? YES!

Saman Amarasinghe & Armando Solar-Lezama 91 6.035 ©MIT

YES!

Page 92: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Examplep g p def z use z str z

x y z

str z

def x

r1 r2

1

z1 def x def y use x

r1

x y use x use y

r1 z2

ld z use z

r1 z2

2 colorable? YES!

Saman Amarasinghe & Armando Solar-Lezama 92 6.035 ©MIT

YES!

Page 93: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Splitting Heuristicp g • Identify a program point where the graph is not R-

colorable (point where # of webs > N) – Pick a web that is not used for the largest enclosing

block around that point of the program

Redo the interference graph

block around that point of the program – Split that web at the corresponding edge – Redo the interference graph– Try to re-color the graph

Saman Amarasinghe & Armando Solar-Lezama 93 6.035 ©MIT

Page 94: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Cost and benefit of splitting

Estimate by its loop nesting

p g • Cost of splitting a node

Proportion to number of times splitted edge has to be crossed dynamically

– Estimate by its loop nesting• Benefit

– Increase colorability of the nodes the splitted web

interferes with

– Can approximate by its degree in the interference graph

•• Greedy heuristic Greedy heuristic – pick the live-range with the highest benefit-to-cost ration to

spill

Saman Amarasinghe & Armando Solar-Lezama 94 6.035 ©MIT

Page 95: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

a

Outline 52

• Overview of procedure optimizations • What is register allocation • A simple register allocator • Webs • Interference Graphs • GGraphh colloriing • Splitting

More optimi tions• More optimizations

Saman Amarasinghe & Armando Solar-Lezama 95 ©MIT

6.035

Page 96: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Further Optimizationsp• Register coalescing • Register targeting (pre-coloring) • Presplitting of websg• Interprocedural register allocation

Saman Amarasinghe & Armando Solar-Lezama 96 6.035 ©MIT

Page 97: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Register Coalescingg g • Find register copy instructions sj = si

• If sj and si do not interfere, combine their webs

similar to copy propagation• Pros

– similar to copy propagation– reduce the number of instructions

• Cons – may increase the degree of the combined node

a colorable graph may become non-colorable

Saman Amarasinghe & Armando Solar-Lezama 97 6.035 ©MIT

Page 98: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Register Targeting (pre-coloring)g g g (p g) • Some variables need to be in special registers at

a given time – fist 6 arguments to a function – return vallue

• Pre color those webs and bind them to the right Pre-color those webs and bind them to the right register

• Will eliminate unnecessary copy instructions

Saman Amarasinghe & Armando Solar-Lezama 98 6.035 ©MIT

Page 99: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Pre-splitting of the websp g • Some live ranges have very large “dead” regions.

– Large region where the variable is unused

• Break up the live ranges Break-up the live ranges – need to pay a small cost in spilling

but the graph will be very easy to colorbut the graph will be very easy to color

• Can find strateggic locations to break-upp – at a call site (need to spill anyway) – around a large loop nest (reserve registers for values

used in the loop))

Saman Amarasinghe & Armando Solar-Lezama 99 6.035 ©MIT

Page 100: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Interprocedural register allocationallocation

• saving registers across procedure boundaries is expensive – especially for programs with many small functions

• Calling convention is too general and inefficient

• Customize calling convention per function by

doing interprocedural register allocation doing interprocedural register allocation

Saman Amarasinghe & Armando Solar-Lezama 100 6.035 ©MIT

Page 101: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

Summaryy • Register Allocation

– Store values in registers between def and use – Can improve performance substantially

–• Key concepts

W b Webs – Interference graphs

Colorability Colorability – Splitting

Saman Amarasinghe & Armando Solar-Lezama 101 6.035 ©MIT

Page 102: Spring 2010Spring 2010 - MIT OpenCourseWare · s1 s2 use x s4 3 4 . Saman Amarasinghe & Armando Solar-Lezama 31 . 6.035 ©MIT . use x s s. Example. def y s1 Webs s1 and s2 interfere

MIT OpenCourseWarehttp://ocw.mit.edu

6.035 Computer Language Engineering Spring 2010

For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.