Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register...

62
Register Allocation Register Allocation

Transcript of Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register...

Page 1: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Register AllocationRegister Allocation

Page 2: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Revisiting A Typical OptimizingCompiler

Front End Back EndSource Program

Intermediate Language

Scheduling Register Allocation

Page 3: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Rationale for Separating RegisterAllocation from Scheduling

• Each of Scheduling and Register Allocation are hardto solve individually, let alone solve globally as acombined optimization.

• So, solve each optimization locally and heuristically“patch up” the two stages.

Page 4: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Why Register Allocation?

• Storing and accessing variables from registers ismuch faster than accessing data from memory.

The way operations are performed in load/store(RISC) processors.

• Therefore, in the interests of performance—if not bynecessity—variables ought to be stored in registers.

• For performance reasons, it is useful to storevariables as long as possible, once they are loadedinto registers.

• Registers are bounded in number (say 32.)• Therefore, “register-sharing” is needed over time.

Page 5: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Goal

• Primarily to assign registers to variables.

• However, the allocator runs out of registers quiteoften.

• Decide which variables to “flush” out of registers tofree them up, so that other variables can be boughtin.

This important indirect consequence of allocation isreferred to as spilling.

Page 6: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Register Allocation and Assignment

Allocation: identifying program values (virtualregisters, live ranges) and program points at whichvalues should be stored in a physical register.

Program values that are not allocated to registers aresaid to be spilled.

Assignment: identifying which physical registershould hold an allocated value at each program point.

Page 7: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Live Ranges

Live range of virtual register a = (BB1, BB2, BB3, BB4,BB5, BB6, BB7).

Def-Use chain of virtual register a = (BB1, BB3, BB5, BB7).

a :=...

:= a

:= a

:= a

T F

BB1

BB2

BB4 BB3

BB5

BB6

BB7

Page 8: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Global Register Allocation

• Local register allocation does not store data inregisters across basic blocks.

Local allocation has poor register utilization ⇒global register allocation is essential.

• Simple global register allocation: allocate most“active” values in each inner loop.

• Full global register allocation: identify live ranges incontrol flow graph, allocate live ranges, and splitranges as needed.

Goal: select allocation so as to minimize number ofload/store instructions performed by optimizedprogram.

Page 9: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Simple Example of Global RegisterAllocation

Live range of a = {B1, B3}Live range of b = {B2, B4}No interference! a and b can be assigned to the sameregister

a =...

b = ... ..= a

.. = b

T F

B1

B3

B4

B2

Control FlowGraph

Page 10: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Another Example of Global RegisterAllocation

Live range of a = {B1, B2, B3, B4}Live range of b = {B2, B4}Live range of c = {B3}In this example, a and c interfere, and c should begiven priority because it has a higher usage count.

a =...

b = ... c = c +1

...= a +b

T F

B1

B3

B4

B2

Control FlowGraph

T

F

Page 11: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Cost and Savings

Compilation Cost: running time and space of theglobal allocation algorithm.

Execution Savings: cycles saved due to registerresidence of variables in optimized program execution.

Contrast with memory-residence which leads to longerexecution times.

Page 12: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Interference Graph

Definition: An interference graph G is an undirectedgraph with the following properties:

(a) each node x denotes exactly one distinct live rangeX, and

(b) an edge exists between nodes x and y iff X ∩ Y ≠ ∅∅,where X and Y are the live ranges corresponding tonodes x and y.

Page 13: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Interference Graph Example

Live Ranges

a := …

b := …

c := …

:= a

:= b

d := …

:= c

:= d

Interference Graph

a

b c

Live ranges overlapand hence interfere

Node modellive ranges

Page 14: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Classical Approach

“Register Allocation and Spilling via Graph Coloring”,G. Chatin, Proceedings SIGPLAN-82 Symposium onCompiler Construction, 98-105, 1982.

“Register Allocation via Coloring”, G. Chaitin, M.Auslander, A. Chandra, J. Cocke, M. Hopkins and P.Markstein, Computer Languages, vol. 6, 47-57, 1981.

more…

Page 15: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Classical Approach (Contd.)

• These works introduced the key notion of aninterference graph for encoding conflicts betweenthe live ranges.

• This notion was defined for the global control flowgraph.

• It also introduced the notion of graph coloring tomodel the idea of register allocation.

Page 16: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Execution Time and Spill-cost

Spilling: Moving a variable that is currently registerresident to memory when no more registers areavailable, and a new live-range needs to be allocatedone spill.

Minimizing Execution Cost: Given an optimisticassigment— i.e., one where all the variables areregister-resident, minimizing spilling.

Page 17: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Graph Coloring

• Given an undirected graph G and a set of k distinctcolors, compute a coloring of the nodes of the graphi.e., assign a color to each node such that no twoadjacent nodes get the same color.

Recall that two nodes are adjacent iff they have anedge between them.

• A given graph might not be k-colorable.• In general, it is a computationally hard problem to

color a given graph using a given number k ofcolors.

• The register allocation problem uses good heuristicsfor coloring.

Page 18: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Register Allocation as Coloring

• Given k registers, interpret each register as a color.• The graph G is the interference graph of the given

program.• The nodes of the interference graph are the

executable live ranges on the target platform.• A coloring of the interference graph is an

assignment of registers (colors) to live ranges(nodes).

• Running out of colors implies not enough registersand hence a need to spill in the above model.

Page 19: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Approach Discussed Here

“The Priority Based Coloring Approach to RegisterAllocation”, F. Chow and J. Hennessey, ACMTransactions on Programming Languages andSystems, vol. 12, 501-536, 1990.

Page 20: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Important Modeling Difference

• The first difference from the classical approach isthat now, we assume that the “home location” of alive range is in memory.

– Conceptually, values are always in memory unlesspromoted to a register; this is also referred to as thepessimistic approach.

– In the classical approach, the dual of this model is usedwhere values are always in registers except when spilled;recall that this is referred to as the optimistic approach.

more...

Page 21: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Important Modeling Difference (Contd.)

• A second major difference is the granularity at whichcode is modeled.– In the classical approach, individual instructions are

modeled whereas

– Now, basic blocks are the primitive units modeled as nodesin live ranges and the interference graph.

• The final major difference is the place of the registerallocation in the overall compilation process.– In the present approach, the interference graph is

considered earlier in the compilation process usingintermediate level statements; compiler generatedtemporaries are known.

– In contrast, in the previous work the allocation is done atthe level of the machine code.

Page 22: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Computing Live Ranges

Using data flow analysis, we compute for each basicblock:

• In the forward direction, the reaching attribute.

A variable is reaching block i if a definition or use ofthe variable reaches the basic block along theedges of the CFG.

• In the backward direction, the liveness attribute.

A variable is live at block i if there is a directreference to the variable at block i or at some block jthat succeeds i in the CFG, provided the variable inquestion is not redefined in the interval between iand j.

Page 23: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Computing Live Ranges (Contd.)

The live range of a variable is the intersection of basic-blocks in CFG nodes in which the variable is live, andthe set which it can reach.

Page 24: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Main Information to be Used bythe Register

• For each live range, we have a bit vector LIVE of thebasic blocks in it.

• Also we have INTERFERE which gives for the liverange, the set of all other live ranges that interferewith it.

• Recall that two live ranges interfere if they intersectin at least one (basic-block).

• If INTERFERE is smaller than the number ofavailable of registers for a node i, then i isunconstrained; it is constrained otherwise.

more...

Page 25: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Main Information to be Usedby the Register (Contd.)

• An unconstrained node can be safely assigned aregister since conflicting live ranges do not use upthe available registers.

• We associate a (possibly empty) set FORBIDDENwith each live range that represents the set of colorsthat have already been assigned to the members ofits INTERFERENCE set.

The above representation is essentially a detailedinterference graph representation.

Page 26: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Prioritizing Live Ranges

In the memory bound approach, given live ranges witha choice of assigning registers, we do the following:

• Choose a live range that is “likely” to yield greatersavings in execution time.

• This means that we need to estimate the savings ofeach basic block in a live range.

Page 27: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Estimate the Savings

Given a live range X for variable x, the estimatedsavings in a basic block i is determined as follows:

1. First compute CyclesSaved which is the number ofloads and stored of x in i scaled by the number ofcycles taken for each load/store.

2. Compensate the single load and/or store that mightbe needed to bring the variable in and/or store thevariable at the end and denote it by Setup.

Note that Setup is derived from a single load or storeor a load plus a store.

more...

Page 28: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Estimate the Savings (Contd.)

3. Savings(X,i) = {CyclesSaved-Setup}

These indicate the actual savings in cycles afteraccounting for the possible loads/stores needed tomove x at the beginning/end of i.

4. TotalSavings(X) = ΣiεX Savings(X,i) x W( i ).(a) x is the set of all basic blocks in the live range of

X. (b) W( i ) is the execution frequency of variable x in block i.

more...

Page 29: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Estimate the Savings (Contd.)

5. Note however that live regions might span a few blocks but yield a large savings due to frequent use

of the variable while others might yield the samecumulative gain over a larger number of basicblocks. We prioritize the former case and define:

{Priority(X) = TotalSavings(X)/Span(X)}

where Span(X) is the number of basic blocks in X.

Page 30: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Algorithm

For all constrained live ranges, execute the following steps:

1. Compute Priority(X) if it has not already been computed.2. For the live range X with the highest priority: (a) If its priority is negative or if no basic block i in X can be assigned a register—because every color has been assigned to a basic block that interferes with i — then delete X from the list and modify the interference graph. (b) Else, assign it a color that is not in its forbidden set.

(c) Update the forbidden sets of the members of INTERFERE for X’.

more...

Page 31: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Algorithm (Contd.)

3. For each live range X’ that is in INTERFERE for X’do:

(a) If the FORBIDDEN of X’ is the set of all colors i.e., if no colors are available, SPLIT (X’). Procedure SPLIT breaks a live range into smaller

live ranges with the intent of reducing the interference of X’ it will be described next.

4. Repeat the above steps till all constrained live ranges are colored or till there is no color left to color any basic block.

Page 32: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Idea Behind Splitting

• Splitting ensures that we break a live range up intoincreasingly smaller live ranges.

• The limit is of course when we are down to the sizeof a single basic block.

• The intuition is that we start out with coarse-grainedinterference graphs with few nodes.

• This makes the interference node degree possiblyhigh.

• We increase the problem size via splitting on aneed-to basis.

• This strategy lowers the interference.

Page 33: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Splitting Strategy

A sketch of an algorithm for splitting:1. Choose a split point.

Note that we are guaranteed that X has at least onebasic block i which can be assigned a color i.e., itsforbidden set does not include all the colors. Theearliest such in the order of control flow can be thesplit point.

2. Separate the live range X into X1 and X2 around thesplit point.

3. Update the sets INTERFERE for X1 and X2 andthose for the live ranges that interfered with X

more...

Page 34: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

The Splitting Strategy (Contd.)

4. Recompute priorities and reprioritize the list.

Other bookkeeping activities to realize a safeimplementation are also executed.

Page 35: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Live Range Splitting Example

Live Ranges:a: BB1, BB2, BB3, BB4, BB5b: BB1, BB2, BB3, BB4, BB5, BB6c: BB2, BB3, BB4, BB5Assume the number of physical registers = 2

a := b :=

c :=

:= a := b

:= b

BB1

BB2

BB4

BB5

BB6

BB3

a

b c

interference graph

Page 36: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Live Range Splitting Example (Contd.)

New live ranges:a: BB1, BB2, BB3, BB4, BB5b: BB1c: BB2, BB3, BB4, BB5b2: BB6b and b2 are logically the same program variableb2 is a renamed equivalent of b.All nodes are now unconstrained.

a :=b :=…

c :=

:= a:= b

… := b

BB1

BB2

BB4

BB5

BB6

BB3

a

b c

interference graph

b2

spill introduced

split b

T F

Page 37: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Interaction Between Allocation andScheduling

• The allocator and the scheduler are typicallypatched together heuristically.

• Leads to the “phase ordering problem: Shouldallocation be done before scheduling or vice-versa?

• Saving on spilling or “good allocation” is onlyindirectly connected to the actual execution time.

Contrast with instruction scheduling.

• Factoring in register allocation into scheduling andsolving the problem “globally” is a research issue.

Page 38: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Example Basic Block

Source Code: z = x(i) temp = x( i+1+N)

Intermediate Code:v1: VR1 ←← ADDR (X) + iv2: VR2 ←← LOAD @(VR1)v3: z ←← STORE VR2v4: VR4 ←← VR1 + 1v5: VR5 ←← LOAD Nv6: VR6 ←← LOAD @ (VR4+VR5)

v1v3

v2

v4v6

v5

100

0

1

Page 39: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Instruction Scheduling followed byRegister Allocation

v1 v2 v5 v3 v4 v6

VR2 VR5

VR1 VR1 VR4

Completion time = 6 cycles.

Maximum register width = 3.

Page 40: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Register Allocation Followed byInstruction Scheduling

v2 v3 v4 v5

VR2 VR5

VR1 VR1 VR4

Completion time = 8 cycles.

Maximum register width = 2.

v6v1

Page 41: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Combined Register Allocation andInstruction Scheduling

v2 v4 v3 v5 v6

VR2 VR5

VR1 VR1 VR4

Completion time = 7 cycles.

Maximum register width = 2.

v1

Page 42: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Register Allocation for RotatingRegisters

Page 43: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Architectural Model

• VLIW• Non-rotating registers

– Predicate Registers– General Purpose Registers

• Rotating Registers– Iteration Control Register File

– Rotating Register File

• Indexed by the Iteration Control Pointer (ICP)• ICP is automatically decremented by the brtop

instruction

Page 44: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Rotating Registers

rotating registers

iteration control registers

r

ICP

p

register specifier

predicate specifier

Page 45: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Why Rotating Registers

• Lifetimes of a value generated by an operation inone iteration can co-exist with values in otheriterations

• ICR– if-conversion

– allow fine control of filling and draining of software pipeline

– side effect: reduce size of prologues and epilogues

Page 46: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Notation

• r1 := r2[1] + r3[2]means add the version of r2 produced in the lastiteration to the version of r3 produced in 2 iterationsback

Page 47: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Example

subroutine foo(a,s)real a(10, sdo i = 1,35 s = s + a(i) a(i) = s*s*a(i)enddostopend

II=2time operation0 r34 := mem[r33[1]]13 r35 := r34 + r35[1]15 r36 := r35 * r3518 r37 := r36 * r3420 mem[r33[1]] := r370 r33 := r33[1] + 40 r39 := brtop

Page 48: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Lifetimes of Loop Variants

• Lifetimes are specified as (start,end,omega,alpha)

• Start - the issue time of a producer of the value

• End - the latest completion time of the consumer ofthe value

• Omega - number of iterations span by this value

• Alpha - number of iterations liveout from the end ofthe loop

Page 49: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Lifetimes of Loop Variants

Register Start End Omega Alphar35 (s) 13 16 1 1 r37 18 20 0 0r36 15 19 0 0r34(a(i)) 0 19 0 0r33(a) 0 22 1 0

time operation0 r34 := mem[r33[1]]13 r35 := r34 + r35[1]15 r36 := r35 * r3518 r37 := r36 * r3420 mem[r33[1]] := r370 r33 := r33[1] + 40 r39 := brtop

Page 50: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Vector Lifetime

time

registers

liveout

livein

trailing blade

leading bladediagonal wand

II

Page 51: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Register Allocation

• For loop variants only

• If a rotating register is allocated to physical register rin the first iteration, then iteration i writes to registerr-i+1

• Bin-packing problem for vector lifetimes

• Encoded using distance matrix

Page 52: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Distance Matrix

• One row and one column for each vector lifetime

• Given a matrix DIST, DIST[A,B] denotes the minimalregister distance allowable between A and B

Page 53: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Computing the Distance Matrix

• d1 = end(A) - start(B)/II• d2 = d1 if omega(B) = 0• d2 = max(d1,omega(A)) otherwise• d3 = d2 if alpha(A) = 0• d3 = max(d2,alpha(A)) otherwise

• DIST[A,B] = d3

Page 54: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Algorithm Framework

• Given a set of register lifetimes, create a feasibleschedule

procedure allocate; order by criteria; lifetimes[1].location := 0; for lt := 2 to number of lifetimes do update the set of disallowed allocations for every unallocated lifetimes; fit(selectedLT,selectedLocation); lifetimes[selectedLT].location := selectedLocation;

Page 55: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Discussion

• Criteria - order by• start time• conflict (conflict[i,j] = dist[i,j] + dist[j,i] - 1)

– choose the lifetime with the smallest total conflict

• adjacency (start[B] - end[A]) + dist[A,B] * II isminimized)– A is last allocated

– choose B such that adjacency is minimized

Page 56: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Discussion cont.

• Fit algorithm can be– best fit

– first fit

– end fit

• Best fit tries minimizes the number of registers thatis needed at each step

• First fit chooses the lowest location such that thenext select lifetime can be allocated

• End fit choose the closest location from the lastlifetime such that the next select lifetime can beallocated

Page 57: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Additional Reading:

1. “URSA: A Unified ReSource Allocator for Registersand Functional Units in VLIW Architectures”, D.Berson, R. Gupta, and M. L. Soffa, Conference onArchitectures and Compilation Techniques for Fineand Medium Grain Parallelism, IFIP Transactions

A-23, 243-254, Januaray 1993.

2. “Rematerialization”, P. Briggs, K.D. Cooper, and L.Torczon, Proceedings of the SIGPLAN-92Conference on Programming Language Design andImplementation, SIGPLAN Notices 27(7), 311-321,July 1992.

Page 58: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Additional Reading:

3. “Improving Register Allocation for SubscriptedVariables”, D. Callahan, S. Carr and K. Kennedy,Proceedings SIGPLAN-90 Conference onProgramming Language Design andImplementations, 53-65, 1990.

4. “Register Allocation via Hierarchical Graph”, D.Callahan and B. Koblens, Proceedings SIGPLAN-91Conference on Programming Language Design andImplementation, 192-203, June 1991.

5. “A Portable Machine Independent GlobalOptimizer—Design and Measurements”, F. Chow,Ph.D. Thesis, Tech Re. 83-254, StandfordUniversity, 1983.

Page 59: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Additional Reading:

6. “Register Allocation”, F. Chow, K. Knobe, A. Meltzer,R.Morgan and K. Zadeck, in Optimizing Compilers,F. Allen, B. Rosen and K. Zadeck Eds. ACM Pressand Addison-Wesley, to appear.

7. “Register Allocation via Usage Counts”, R.Freiburghouse, Communications fo the ACM, vol.17, 638-642, 1974.

8. “Code Scheduling and Register Allcoation in LargeBasic Blocks”, J. Goodman and W. Hsu,Proceedings of ACM Conference onSupercomputing, 442-452, 1998.

Page 60: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Additional Reading:

9. “Efficient Instruction Scheduling for Delayed-Load Architectures”, S. Kurlander, T. Proebsting and C. Fischer, ACM Transactions on Programming Languages and Systems, vol. 17, no 5., 740-776, 1995.

10. “Combining Register Allocation and Instruction Scheduling”, R. Matwani, K.V. Palem, V. Sarkar, S. Reyen, TR 698, Courant Institute, NYU, July 1995.

11. “A Scheduler-Sensitive Global Register Allocator”, C. Norris and L. Pollock, Supercomputing, November 1993. Protland, Oregon.

Page 61: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Additional Reading:

12. “Register allocation with instruction scheduling: a new approach”, S.S. Pinter, Proceedings

SIGPLAN-93 Conference on Programming Language Design and Implementation, June 1993.

13. “Linear-time optimal code scheduling for delayed- load architectuers”, T. Proebsting and C. Fisher, Proceedings SIGPLAN-91 Conference on Programming Language Design and Implementation, 256-267, June 1991.

14. “The generation of optimal code for arthmetic expressions”, R. Sethi and J. Ullman, Journal of the ACM, vol 17, no 4, 715-728, 1970.

Page 62: Register Allocation - George Washington Universitynarahari/cs339/compile4.pdf · Register Allocation and Assignment Allocation: identifying program values (virtual registers, live

Additional Reading:

15. ``Register Allocation for Software Pipelined Loops’’, B. R. Rau, M. Lee, P.P. Tirumalai, M.S.Schlansker, PLDI 92