P3 / 2004 Register Allocation. Kostis Sagonas 2 Spring 2004 Outline What is register allocation Webs Interference Graphs Graph coloring Spilling Live-Range.

Slides:



Advertisements
Similar presentations
Garbage collection David Walker CS 320. Where are we? Last time: A survey of common garbage collection techniques –Manual memory management –Reference.
Advertisements

Register Allocation COS 320 David Walker (with thanks to Andrew Myers for many of these slides)
Register Allocation Consists of two parts: Goal : minimize spills
Target Code Generation
SSA and CPS CS153: Compilers Greg Morrisett. Monadic Form vs CFGs Consider CFG available exp. analysis: statement gen's kill's x:=v 1 p v 2 x:=v 1 p v.
School of EECS, Peking University “Advanced Compiler Techniques” (Fall 2011) SSA Guo, Yao.
Instruction Set Design
Register Usage Keep as many values in registers as possible Register assignment Register allocation Popular techniques – Local vs. global – Graph coloring.
Register allocation Morgensen, Torben. "Register Allocation." Basics of Compiler Design. pp from (
Register Allocation Zach Ma.
Register Allocation CS 320 David Walker (with thanks to Andrew Myers for most of the content of these slides)
Chapter 9 Code optimization Section 0 overview 1.Position of code optimizer 2.Purpose of code optimizer to get better efficiency –Run faster –Take less.
1 CS 201 Compiler Construction Lecture 3 Data Flow Analysis.
Architecture-dependent optimizations Functional units, delay slots and dependency analysis.
Coalescing Register Allocation CS153: Compilers Greg Morrisett.
Register Allocation Mooly Sagiv Schrierber Wed 10:00-12:00 html://
COMPILERS Register Allocation hussein suleman uct csc305w 2004.
INSTRUCTION SET ARCHITECTURES
Graph-Coloring Register Allocation CS153: Compilers Greg Morrisett.
Course Outline Traditional Static Program Analysis –Theory Compiler Optimizations; Control Flow Graphs Data-flow Analysis – today’s class –Classic analyses.
CS412/413 Introduction to Compilers Radu Rugina Lecture 37: DU Chains and SSA Form 29 Apr 02.
EECC551 - Shaaban #1 Fall 2003 lec# Pipelining and Exploiting Instruction-Level Parallelism (ILP) Pipelining increases performance by overlapping.
Stanford University CS243 Winter 2006 Wei Li 1 Register Allocation.
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
Register Allocation CS 671 March 27, CS 671 – Spring Register Allocation - Motivation Consider adding two numbers together: Advantages: Fewer.
CPS3340 COMPUTER ARCHITECTURE Fall Semester, /17/2013 Lecture 12: Procedures Instructor: Ashraf Yaseen DEPARTMENT OF MATH & COMPUTER SCIENCE CENTRAL.
Carnegie Mellon Lecture 6 Register Allocation I. Introduction II. Abstraction and the Problem III. Algorithm Reading: Chapter Before next class:
1 Storage Registers vs. memory Access to registers is much faster than access to memory Goal: store as much data as possible in registers Limitations/considerations:
1 CS 201 Compiler Construction Lecture 12 Global Register Allocation.
1 Handling nested procedures Method 1 : static (access) links –Reference to the frame of the lexically enclosing procedure –Static chains of such links.
Improving code generation. Better code generation requires greater context Over expressions: optimal ordering of subtrees Over basic blocks: Common subexpression.
CS 536 Spring Intermediate Code. Local Optimizations. Lecture 22.
Register Allocation (Slides from Andrew Myers). Main idea Want to replace temporary variables with some fixed set of registers First: need to know which.
1 Intermediate representation Goals: –encode knowledge about the program –facilitate analysis –facilitate retargeting –facilitate optimization scanning.
1 Register Allocation Consists of two parts: –register allocation What will be stored in registers –Only unambiguous values –register assignment Which.
Prof. Bodik CS 164 Lecture 171 Register Allocation Lecture 19.
Register Allocation (via graph coloring)
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Emery Berger University of Massachusetts, Amherst Advanced Compilers CMPSCI 710.
Register Allocation (via graph coloring). Lecture Outline Memory Hierarchy Management Register Allocation –Register interference graph –Graph coloring.
1 Liveness analysis and Register Allocation Cheng-Chia Chen.
Improving Code Generation Honors Compilers April 16 th 2002.
Improving code generation. Better code generation requires greater context Over expressions: optimal ordering of subtrees Over basic blocks: Common subexpression.
4/29/09Prof. Hilfinger CS164 Lecture 381 Register Allocation Lecture 28 (from notes by G. Necula and R. Bodik)
CS745: Register Allocation© Seth Copen Goldstein & Todd C. Mowry Register Allocation.
Supplementary Lecture – Register Allocation EECS 483 University of Michigan.
1 Code Generation Part II Chapter 8 (1 st ed. Ch.9) COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University,
1 October 18, October 18, 2015October 18, 2015October 18, 2015 Azusa, CA Sheldon X. Liang Ph. D. Azusa Pacific University, Azusa, CA 91702, Tel:
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2009 Register Allocation John Cavazos University.
CMPE 511 Computer Architecture A Faster Optimal Register Allocator Betül Demiröz.
1 Code Generation Part II Chapter 9 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2005.
Register Usage Keep as many values in registers as possible Keep as many values in registers as possible Register assignment Register assignment Register.
Register Allocation CS 471 November 12, CS 471 – Fall 2007 Register Allocation - Motivation Consider adding two numbers together: Advantages: Fewer.
2/22/2016© Hal Perkins & UW CSEP-1 CSE P 501 – Compilers Register Allocation Hal Perkins Winter 2008.
Global Register Allocation Based on
Topic Register Allocation
Mooly Sagiv html://
The compilation process
Register Allocation Hal Perkins Autumn 2009
Register Allocation Noam Rinetzky Text book:
CSC D70: Compiler Optimization Register Allocation
Register Allocation Hal Perkins Autumn 2011
Register Allocation Hal Perkins Summer 2004
Run Time Environments 薛智文
Compiler Construction
Lecture 17: Register Allocation via Graph Colouring
COMPILERS Liveness Analysis
CSE P 501 – Compilers SSA Hal Perkins Autumn /31/2019
(via graph coloring and spilling)
CS 201 Compiler Construction
Presentation transcript:

P3 / 2004 Register Allocation

Kostis Sagonas 2 Spring 2004 Outline What is register allocation Webs Interference Graphs Graph coloring Spilling Live-Range Splitting More optimizations

Kostis Sagonas 3 Spring 2004 Storing values between defs and uses Program computes with values –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 memory at definition retrieve from memory at each use Second Option: store each value in register at definition retrieve value from register at each use

Kostis Sagonas 4 Spring 2004 Issues On a typical RISC architecture –All computation takes place in registers –Load instructions and store instructions transfer values between memory and registers Add two numbers; values in memory load r1, 4(sp) load r2, 8(sp) add r3,r1,r2 store r3, 12(sp)

Kostis Sagonas 5 Spring 2004 Issues On a typical RISC architecture –All computation takes place in registers –Load instructions and store instructions transfer values between memory and registers Add two numbers; values in registers add r3,r1,r2

Kostis Sagonas 6 Spring 2004 Issues Fewer instructions when using registers –Most instructions are register-to-register –Additional instructions for memory accesses Registers are faster than memory –wider gap in faster, newer processors –Factor of about 4 bandwidth, factor of about 3 latency –Could be bigger depending on program characteristics But only a small number of registers available –Usually 32 integer and 32 floating-point registers –Some of those registers have fixed users (r0, ra, sp, fp)

Kostis Sagonas 7 Spring 2004 Register Allocation Deciding which values to store in a limited number of registers Register allocation has a direct impact on performance –Affects almost every statement of the program –Eliminates expensive memory instructions –# of instructions goes down due to direct manipulation of registers (no need for load and store instructions) –Probably is the optimization with the most impact!

Kostis Sagonas 8 Spring 2004 What can be put in a register? 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 Issue: alias analysis Register set depends on the data-type –floating-point values in floating point registers –integer and pointer values in integer registers

Kostis Sagonas 9 Spring 2004 Outline What is register allocation Webs Interference Graphs Graph coloring Spilling Live-Range Splitting More optimizations

Kostis Sagonas 10 Spring 2004 Web-Based Register Allocation Determine live ranges for each value (web) Determine overlapping ranges (interference) Compute the benefit of keeping each web in a register (spill cost) Decide which webs get a register (allocation) Split webs if needed (spilling and splitting) Assign hard registers to webs (assignment) Generate code including spills (code gen.)

Kostis Sagonas 11 Spring 2004 Webs Starting Point: def-use chains (DU chains) –Connects definition to all reachable uses Conditions for putting defs and uses into same web –Def and all reachable uses must be in same web –All defs that reach same use must be in same web Use a union-find algorithm

Kostis Sagonas 12 Spring 2004 Example def y def x use y def x def y use x def x use x use y s1 s2 s3 s4

Kostis Sagonas 13 Spring 2004 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 definitions computed into M –All uses read from M Issue: instructions compute only from registers Reserve some registers to hold memory values

Kostis Sagonas 14 Spring 2004 Outline What is register allocation Webs Interference Graphs Graph coloring Spilling Live-Range Splitting More optimizations

Kostis Sagonas 15 Spring 2004 Convex Sets and Live Ranges 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 –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

Kostis Sagonas 16 Spring 2004 Interference Two webs interfere if their live ranges overlap (have a nonempty 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 location

Kostis Sagonas 17 Spring 2004 Example def y def x use y use x def x use x s1 s2 s3 s4 def x def y use x use y Webs s1 and s2 interfere Webs s2 and s3 interfere

Kostis Sagonas 18 Spring 2004 Interference Graph Representation of webs and their interference –Nodes are the webs –An edge exists between two nodes if they interfere s1s2 s3s4

Kostis Sagonas 19 Spring 2004 Example def y def x use y use x def x use x s1 s2 s3 s4 def x def y use x use y Webs s1 and s2 interfere Webs s2 and s3 interfere s1s2 s3s4

Kostis Sagonas 20 Spring 2004 Outline What is register allocation Webs Interference Graphs Graph coloring Spilling Live-Range Splitting More optimizations

Kostis Sagonas 21 Spring 2004 Register Allocation Using Graph Coloring Each web is allocated a register –each node gets a register (color) If two webs interfere they cannot use the same register –if two nodes have an edge between them, they cannot have the same color s1s2 s3s4

Kostis Sagonas 22 Spring 2004 Graph Coloring Assign a color to each node in graph Two nodes connected to same edge must have different colors Classic problem in graph theory NP complete –But good heuristics exist for register allocation

Kostis Sagonas 23 Spring 2004 Graph Coloring Example 1 Color

Kostis Sagonas 24 Spring 2004 Graph Coloring Example 2 Colors

Kostis Sagonas 25 Spring 2004 Graph Coloring Example Still 2 Colors

Kostis Sagonas 26 Spring 2004 Graph Coloring Example 3 Colors

Kostis Sagonas 27 Spring 2004 Heuristics for Register Coloring 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, there is at least one color left to color the current node If degree >= N –still may be colorable with N colors

Kostis Sagonas 28 Spring 2004 Heuristics for Register Coloring 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) –Push that node into the stack When empty, start to color –Pop a node from stack back –Assign it a color that is different from its connected nodes (if possible)

Kostis Sagonas 29 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3

Kostis Sagonas 30 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4

Kostis Sagonas 31 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2

Kostis Sagonas 32 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2 s1

Kostis Sagonas 33 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2 s1 s3

Kostis Sagonas 34 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2 s1 s3

Kostis Sagonas 35 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2 s1 s3

Kostis Sagonas 36 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2 s1

Kostis Sagonas 37 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2 s1

Kostis Sagonas 38 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2

Kostis Sagonas 39 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4 s2

Kostis Sagonas 40 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4

Kostis Sagonas 41 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3 s4

Kostis Sagonas 42 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3

Kostis Sagonas 43 Spring 2004 Coloring Example s1s2 s3s4 s0 N = 3

Kostis Sagonas 44 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3

Kostis Sagonas 45 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4

Kostis Sagonas 46 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1 s1: Possible Spill

Kostis Sagonas 47 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1 s3

Kostis Sagonas 48 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1 s3 s2

Kostis Sagonas 49 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1 s3 s2

Kostis Sagonas 50 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1 s3 s2

Kostis Sagonas 51 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1 s3

Kostis Sagonas 52 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1 s3

Kostis Sagonas 53 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1

Kostis Sagonas 54 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1

Kostis Sagonas 55 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3 s4 s1: Actual Spill

Kostis Sagonas 56 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3

Kostis Sagonas 57 Spring 2004 Another Coloring Example s1s2 s3s4 s0 N = 3

Kostis Sagonas 58 Spring 2004 When Coloring Heuristics Fail... 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

Kostis Sagonas 59 Spring 2004 Outline What is register allocation Webs Interference Graphs Graph coloring Spilling Live-Range Splitting More optimizations

Kostis Sagonas 60 Spring 2004 Which web to pick? 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

Kostis Sagonas 61 Spring 2004 Ideal and Useful Spill Costs Ideal spill cost - dynamic cost of extra load and store instructions. Can’t expect to compute this. –Don’t know which way branches resolve –Don’t know how many times loops execute –Actual cost may be different for different executions Solution: Use a static approximation –profiling can give instruction execution frequencies –or use heuristics based on structure of control flow graph

Kostis Sagonas 62 Spring 2004 One Way to Compute Spill Cost Goal: give priority to values used in loops So assume loops execute 10 (or 8) times Spill cost = –sum over all def sites of cost of a store instruction times 8 to the loop nesting depth power, plus –sum over all use sites of cost of a load instruction times 8 to the loop nesting depth power Choose the web with the lowest spill cost

Kostis Sagonas 63 Spring 2004 Spill Cost Example def x def y use y def y use x use y Spill Cost For x storeCost+loadCost Spill Cost For y 9*storeCost+9*loadCost With 1 Register, Which Variable Gets Spilled?

Kostis Sagonas 64 Spring 2004 Outline What is register allocation Webs Interference Graphs Graph coloring Spilling Live-Range Splitting More optimizations

Kostis Sagonas 65 Spring 2004 Splitting Rather Than Spilling 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

Kostis Sagonas 66 Spring 2004 Live-Range Splitting Example def z use z def x def y use x use y use z x y z xy z 2 colorable? NO!

Kostis Sagonas 67 Spring 2004 Live-Range Splitting Example def z use z def x def y use x use y use z x y z xy z2 z1 2 colorable? YES! r1 r2 r1

Kostis Sagonas 68 Spring 2004 Live-Range Splitting Example def z use z store z def x def y use x use y load z use z x y z r1 r2 r1 xy z2 z1 2 colorable? YES!

Kostis Sagonas 69 Spring 2004 Live-Range Splitting Heuristic Identify a program point where the graph is not N-colorable (point where # of webs > N) –Pick a web that is not used for the largest enclosing block around that point of the program –Split that web at the corresponding edge –Redo the interference graph –Try to re-color the graph

Kostis Sagonas 70 Spring 2004 Cost and Benefit of Splitting Cost of splitting a node –Proportional to number of times split edge has to be crossed dynamically –Estimate by its loop nesting Benefit –Increase colorability of the nodes the split web interferes with –Can approximate by its degree in the interference graph Greedy heuristic –pick the live-range with the highest benefit-to-cost ration to spill

Kostis Sagonas 71 Spring 2004 Outline What is register allocation Webs Interference Graphs Graph coloring Splitting Live-Range Splitting More optimizations

Kostis Sagonas 72 Spring 2004 Further Optimizations Register coalescing Register targeting (pre-coloring) Pre-splitting of webs Interprocedural register allocation

Kostis Sagonas 73 Spring 2004 Register Coalescing Find register copy instructions s j = s i If s j and s i do not interfere, combine their webs 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

Kostis Sagonas 74 Spring 2004 Register Targeting (pre-coloring) Some variables need to be in special registers at a given time –first 4 arguments to a function –return value Pre-color those webs and bind them to the right register Will eliminate unnecessary copy instructions

Kostis Sagonas 75 Spring 2004 Pre-splitting of the webs Some live ranges have very large “dead” regions –Large region where the variable is unused Break-up the live ranges –need to pay a small cost in spilling –but the graph will be very easy to color Can find strategic locations to break-up –at a call site (need to spill anyway) –around a large loop nest (reserve registers for values used in the loop)

Kostis Sagonas 76 Spring 2004 Interprocedural Register Allocation 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