+ All Categories
Home > Documents > Control Dependence

Control Dependence

Date post: 12-Jan-2016
Category:
Upload: alvis
View: 42 times
Download: 3 times
Share this document with a friend
Description:
Control Dependence. Control Dependence. Introduction Formal Definition Optimal Control Dependence Computation. Example. b is control dependent on a c is control dependent on a a and d are control dependent on START. START. a. c. b. d. CFG. END. Applications of CD. - PowerPoint PPT Presentation
43
Wei Li 1 Stanford University CS243 Winter 2006 Control Dependence Control Dependence
Transcript
Page 1: Control Dependence

Wei Li 1Stanford University

CS243 Winter 2006

Control Dependence Control Dependence

Page 2: Control Dependence

2CS243 Winter 2006Stanford University

Control DependenceControl Dependence

IntroductionIntroduction Formal DefinitionFormal Definition Optimal Control Dependence ComputationOptimal Control Dependence Computation

Page 3: Control Dependence

3CS243 Winter 2006Stanford University

ExampleExample

START

a

b c

d

ENDCFG

b is control dependent on a

c is control dependent on a

a and d are control dependent on START

Page 4: Control Dependence

4CS243 Winter 2006Stanford University

Applications of CDApplications of CD

Dead code eliminationDead code elimination Scheduling (hyper-block formation)Scheduling (hyper-block formation) PredicationPredication ……

Page 5: Control Dependence

5CS243 Winter 2006Stanford University

Simple Dead Code EliminationSimple Dead Code Elimination

Mark inherently live statement liveMark inherently live statement live Store to memory, print, …Store to memory, print, …

For each variable in these live statements, For each variable in these live statements, mark its definition statement live.mark its definition statement live.

For each live statement, mark it live the For each live statement, mark it live the node that it is control dependent on. node that it is control dependent on.

Remove everything that is not marked.Remove everything that is not marked.

Page 6: Control Dependence

6CS243 Winter 2006Stanford University

ExampleExample

if (x > 0) {if (x > 0) { printf(“greater than zero”);printf(“greater than zero”); }}

The printf statement is inherently live. You The printf statement is inherently live. You also need to mark the “if (x>0)” live also need to mark the “if (x>0)” live because the ‘print’ statement is control because the ‘print’ statement is control dependent on the ‘if’.dependent on the ‘if’.

Page 7: Control Dependence

7CS243 Winter 2006Stanford University

Control DependenceControl Dependence

IntroductionIntroduction Formal DefinitionFormal Definition Optimal Control Dependence ComputationOptimal Control Dependence Computation

Page 8: Control Dependence

8CS243 Winter 2006Stanford University

Post-dominator RelationPost-dominator Relation

If X appears on every path from START to If X appears on every path from START to Y, then X Y, then X dominatesdominates Y. Y.

If X appears on every path from Y to END, If X appears on every path from Y to END, then X then X postdominatespostdominates Y. Y.

Postdominator TreePostdominator Tree END is the rootEND is the root Any node Y other than END has ipdom(Y) as Any node Y other than END has ipdom(Y) as

its parentits parent Parent, child, ancestor, descendantParent, child, ancestor, descendant

Page 9: Control Dependence

9CS243 Winter 2006Stanford University

Control Dependence RelationControl Dependence Relation

There are two possible definitions.There are two possible definitions. Node w is control dependent on edge Node w is control dependent on edge

(u(u→→v) if v) if w postdominates vw postdominates v If w If w ≠ u, w does not postdominate u≠ u, w does not postdominate u

Node w is control dependent on node u if Node w is control dependent on node u if there exists an edge uthere exists an edge u→→v v w postdominates vw postdominates v If w If w ≠ u, w does not postdominate u≠ u, w does not postdominate u

Page 10: Control Dependence

10CS243 Winter 2006Stanford University

ExampleExample

S

a

b

c

d E

CFG

e

E? ?

Pdom Tree

aa bb cc dd ee

SS→a→a

bb→c→c

Control Dep Relation

Page 11: Control Dependence

11CS243 Winter 2006Stanford University

ExampleExample

S

a

b

c

d E

CFG

e

Ee

d

Sb

c

Pdom Treea

aa bb cc dd ee

SS→a→a

bb→c→c

Control Dep Relation

Page 12: Control Dependence

12CS243 Winter 2006Stanford University

ExampleExample

S

a

b

c

d E

CFG

e

Ee

d

Sb

c

Pdom Treea

aa bb cc dd ee

SS→a→a √√ √√ √√

bb→c→c √√ √√ √√

Control Dep Relation

Page 13: Control Dependence

13CS243 Winter 2006Stanford University

Control Dependence QueriesControl Dependence Queries

CD(e): set of nodes control dependent on CD(e): set of nodes control dependent on edge eedge e

CONDS(v): set of edges that node v is CONDS(v): set of edges that node v is control dependent oncontrol dependent on

Page 14: Control Dependence

14CS243 Winter 2006Stanford University

Dominance FrontierDominance Frontier

Reverse control flow graph (RCFG)Reverse control flow graph (RCFG) Let X and Y be nodes in CFG. X in DF(Y) Let X and Y be nodes in CFG. X in DF(Y)

in CFG iff Y is control dependent on X in in CFG iff Y is control dependent on X in RCFG.RCFG.

DF(Y) in CFG = conds(Y) in RCFG, where DF(Y) in CFG = conds(Y) in RCFG, where conds(Y) is the set of nodes that Y is conds(Y) is the set of nodes that Y is control dependent on. control dependent on.

Page 15: Control Dependence

15CS243 Winter 2006Stanford University

Worst-case Size of CDRWorst-case Size of CDR

CFG aa bb cc dd

SS→a→a

dd→a→a

cc→b→b

Control Dependence Relation

S

a

b

c

E

d

Page 16: Control Dependence

16CS243 Winter 2006Stanford University

Worst-case Size of CDRWorst-case Size of CDR

CFG aa bb cc dd

SS→a→a √√ √√ √√ √√

dd→a→a √√ √√ √√ √√

cc→b→b √√ √√

Control Dependence RelationSize = O(n2)

S

a

b

c

E

d

Page 17: Control Dependence

17CS243 Winter 2006Stanford University

Control DependenceControl Dependence

IntroductionIntroduction Formal DefinitionFormal Definition Optimal Linear Control Dependence Optimal Linear Control Dependence

ComputationComputation

Page 18: Control Dependence

18CS243 Winter 2006Stanford University

APTAPT

APT: Augmented Postdominator TreeAPT: Augmented Postdominator Tree which can be built in O(|E|) space and timewhich can be built in O(|E|) space and time which can be used to answer CD and CONDS which can be used to answer CD and CONDS

queries in time proportional to output sizequeries in time proportional to output size Optimal control dependence computationOptimal control dependence computation Solution: reduced control computation to a Solution: reduced control computation to a

graph problem called graph problem called Roman Chariots Roman Chariots ProblemProblem

Page 19: Control Dependence

19CS243 Winter 2006Stanford University

Key Idea (I): Exploit StructureKey Idea (I): Exploit Structure

How to avoid building the entire control How to avoid building the entire control dependence relation (O(ndependence relation (O(n22))?))? Nodes that are control dependent on an edge e Nodes that are control dependent on an edge e

form a simple path in the postdominator tree form a simple path in the postdominator tree In a tree, a simple path is uniquely specified by In a tree, a simple path is uniquely specified by

its endpoints.its endpoints. Pdom tree + endpoints of each control Pdom tree + endpoints of each control

dependence path can be built in O(|E|) dependence path can be built in O(|E|) space and timespace and time

Page 20: Control Dependence

20CS243 Winter 2006Stanford University

ExampleExample

EE pathpath

SS→a→a ??

bb→c→c ??

S

a

b

c

d E

CFG

e

Pdom Treec

Ee

d

Sb

a

Control Dep Relation

aa bb cc dd ee

SS→a→a √√ √√ √√

bb→c→c √√ √√ √√

Path Array

Page 21: Control Dependence

21CS243 Winter 2006Stanford University

ExampleExample

EE pathpath

SS→a→a [a,e][a,e]

bb→c→c [c,b][c,b]

S

a

b

c

d E

CFG

e

Pdom Treec

Ee

d

Sb

a

Control Dep Relation

aa bb cc dd ee

SS→a→a √√ √√ √√

bb→c→c √√ √√ √√

Path Array

Page 22: Control Dependence

22CS243 Winter 2006Stanford University

CD QueriesCD Queries

How can we use the compact How can we use the compact representation of the CDR (Control representation of the CDR (Control Dependence Relation) to answer queries Dependence Relation) to answer queries for CD and CONDS sets in time for CD and CONDS sets in time proportional to output size? proportional to output size?

Page 23: Control Dependence

23CS243 Winter 2006Stanford University

Roman Chariots ProblemRoman Chariots Problem

CD(n): which cities are served by chariot n?CD(n): which cities are served by chariot n? CONDS(w): which chariots serve city w?CONDS(w): which chariots serve city w?

Route Route ##

pathpath

II [Milano,Roma][Milano,Roma]

IIII [Pompeii,Bologna][Pompeii,Bologna]

IIIIII [Venezia,Roma][Venezia,Roma]

Napoli

Roma

Milano

Venezia

Bologna

Pompeii

Verona

Corleone

Page 24: Control Dependence

24CS243 Winter 2006Stanford University

CD(n): which cities are served by CD(n): which cities are served by chariot n?chariot n?

Look up entry for chariot n in Route Array Look up entry for chariot n in Route Array (say [x,y])(say [x,y])

Traverse nodes in tree T, starting at x and Traverse nodes in tree T, starting at x and ending at yending at y

Output all nodes encountered in traversalOutput all nodes encountered in traversal Query time is proportional to output sizeQuery time is proportional to output size

Page 25: Control Dependence

25CS243 Winter 2006Stanford University

CONDS(w): which chariots serve city w?CONDS(w): which chariots serve city w?

For each chariot c in Route Array doFor each chariot c in Route Array do Let route of c be [x,y];Let route of c be [x,y]; If w is an ancestor of x and w is a descendant If w is an ancestor of x and w is a descendant

of y thenof y then Output c;Output c;

Can we avoid examining all routes?Can we avoid examining all routes?

Page 26: Control Dependence

26CS243 Winter 2006Stanford University

Key Idea (II): CachingKey Idea (II): Caching

At each node in the tree, keep a list of At each node in the tree, keep a list of chariot #’s whose bottom node is n.chariot #’s whose bottom node is n.

Chariot #Chariot # routeroute

II [a,e][a,e]

IIII [c,b][c,b]c

Ee

d

Sb

a{?}

{?}

Page 27: Control Dependence

27CS243 Winter 2006Stanford University

Key Idea (II): CachingKey Idea (II): Caching

At each node in the tree, keep a list of At each node in the tree, keep a list of chariot #’s whose bottom node is n.chariot #’s whose bottom node is n.

Chariot #Chariot # routeroute

II [a,e][a,e]

IIII [c,b][c,b]c

Ee

d

Sb

a{I}

{II}

Page 28: Control Dependence

28CS243 Winter 2006Stanford University

CONDS(w): which chariots serve city w?CONDS(w): which chariots serve city w?

For each descendant d of w doFor each descendant d of w do For each route c = [x,y] in list at d doFor each route c = [x,y] in list at d do

If w is a descendant of y thenIf w is a descendant of y then Output c;Output c;

Query time is proportional to # of Query time is proportional to # of descendants + size of all lists at ddescendants + size of all lists at d

Page 29: Control Dependence

29CS243 Winter 2006Stanford University

Sorting ListsSorting Lists

Sort each list by decreasing lengthSort each list by decreasing length

Chariot #Chariot # routeroute

II [e,d][e,d]

IIII [e,c][e,c]

IIIIII [e,b][e,b]

IVIV [e,a][e,a]

c

E

a

d

Sb

{IV,III,II,I}e

Page 30: Control Dependence

30CS243 Winter 2006Stanford University

CONDS(w): which chariots serve city w?CONDS(w): which chariots serve city w?

For each descendant d of w doFor each descendant d of w do For each route c = [x,y] in list at d doFor each route c = [x,y] in list at d do

If w is a descendant of y If w is a descendant of y thenthen

Output c;Output c;

elseelse breakbreak

Query time is proportional to size of Query time is proportional to size of output + # of descendantsoutput + # of descendants

Page 31: Control Dependence

31CS243 Winter 2006Stanford University

Caching at All Nodes on RouteCaching at All Nodes on Route

Sort each list by decreasing lengthSort each list by decreasing length

c

E

a

d

b

{IV,III,II,I}e

c

E

a

d

b

{IV,III,II,I}e{IV,III,II,I}

{IV,III,II}

{IV,III}

{IV}

Page 32: Control Dependence

32CS243 Winter 2006Stanford University

Space Time TradeoffSpace Time Tradeoff

Chariot # stored only at bottom node of the Chariot # stored only at bottom node of the routeroute Space: O(|V| + |A|)Space: O(|V| + |A|) Query Time: O(|V| + |Output|)Query Time: O(|V| + |Output|)

Chariot # stored at all nodes on routeChariot # stored at all nodes on route Space: O(|V| * |A|)Space: O(|V| * |A|) Query Time: O(|Output|) Query Time: O(|Output|)

V is the set of tree nodes, and A is the Route V is the set of tree nodes, and A is the Route Array.Array.

Page 33: Control Dependence

33CS243 Winter 2006Stanford University

Key idea (III): Caching ZonesKey idea (III): Caching Zones

Divide tree into ZONESDivide tree into ZONES Nodes in Zone:Nodes in Zone:

Boundary nodes: lowest nodes in zoneBoundary nodes: lowest nodes in zone Interior nodes: all other nodesInterior nodes: all other nodes

Query procedure: Query procedure: Visit only nodes below query node and in Visit only nodes below query node and in

the same zone as query nodethe same zone as query node

Page 34: Control Dependence

34CS243 Winter 2006Stanford University

Caching RuleCaching Rule

Boundary node: store all chariots serving Boundary node: store all chariots serving nodenode

Interior node: store all chariots whose Interior node: store all chariots whose bottom node is that nodebottom node is that node

Algorithm: bottom-up, greedy zone Algorithm: bottom-up, greedy zone constructionconstruction Query time: |AQuery time: |Avv| + |Z| + |Zvv| | ≤ ≤ ((αα + 1) + 1) |A|Avv| | Space requirements Space requirements ≤ ≤ |A| + |V| / |A| + |V| / αα

Page 35: Control Dependence

35CS243 Winter 2006Stanford University

Constructing Zones (I)Constructing Zones (I)

Invariant: for any node v, |ZInvariant: for any node v, |Zvv| | ≤ ≤ αα |A|Avv| + 1, | + 1, where where αα is a design parameter. is a design parameter.

Query time for CONDS(v) Query time for CONDS(v) = O(= O(|A|Avv| + |Z| + |Zvv|) |)

= = O((O((αα + 1) + 1)|A|Avv| + 1) | + 1)

= O(= O(|A|Avv|) |)

Page 36: Control Dependence

36CS243 Winter 2006Stanford University

Constructing Zones (II)Constructing Zones (II)

Build zones bottom-up, making them as Build zones bottom-up, making them as large as possible without violating invariantlarge as possible without violating invariant

V is a leaf node, then make v a boundary V is a leaf node, then make v a boundary nodenode

V is an interior node thenV is an interior node then If (1 + ∑If (1 + ∑u u єє children(v) children(v) |Z |Zuu|) > |) > αα |A|Avv| + 1| + 1

then make v a boundary nodethen make v a boundary node else make v an interior node else make v an interior node

Page 37: Control Dependence

37CS243 Winter 2006Stanford University

αα = 1 (some caching)= 1 (some caching)

Zones: Zones: {a,b,c,d,e}{a,b,c,d,e}, {f,g,h}, , {f,g,h}, {E}, {S}{E}, {S}

Boundary Boundary nodes: a, nodes: a, f, E, Sf, E, S

f

c

e

b

d

{S→a, h→a}a

g

EhS 3

4

56

6

54

3

α |Av| + 1

{g→b}{f→c}

{e→d}

{}{S→a, h→a, g→a, f→c}

{}{}

Page 38: Control Dependence

38CS243 Winter 2006Stanford University

αα = >>(no caching)= >>(no caching)

Zones: Zones: {a,b,c,d,e,f{a,b,c,d,e,f,g,h}, {E}, ,g,h}, {E}, {S}{S}

Boundary Boundary nodes: a, nodes: a, E, SE, S

{}

{}

f

c

e

b

d

{S→a, h→a}a

g

EhS

α |Av| + 1

{g→b}{f→c}

{e→d}

{}{}

∞∞

∞∞

Page 39: Control Dependence

39CS243 Winter 2006Stanford University

αα = << (full caching)= << (full caching)

Zones: Zones: every every nodenode

Boundary Boundary nodes: nodes: every every nodenode

f

c

e

b

d

{S→a, h→a}a

g

EhS 1

1

11

1

11

1

α |Av| + 1

{S→a, h→a, g→b}{S→a, h→a, g→b, f→c}

{S→a, h→a, g→b, f→c, e→d}

{S→a, h→a, g→b, f→c, e→d}

{S→a, h→a, g→a, f→c}

{S→a, h→a, g→a}

{S→a, h→a}

Page 40: Control Dependence

40CS243 Winter 2006Stanford University

APT (I)APT (I)

Postdominator tree with bidirectional edgesPostdominator tree with bidirectional edges dfs-number[v]: integerdfs-number[v]: integer

Used for ancestorship determination in Used for ancestorship determination in CONDS queryCONDS query

Boundary?[v]: booleanBoundary?[v]: boolean True if v is a boundary node, false otherwiseTrue if v is a boundary node, false otherwise Used in CONDS queryUsed in CONDS query

Page 41: Control Dependence

41CS243 Winter 2006Stanford University

APT (II)APT (II)

L[v]: list pf chariots #’s/control L[v]: list pf chariots #’s/control dependencesdependences Boundary node: all chariots serving v (all Boundary node: all chariots serving v (all

control dependences of v)control dependences of v) Interior node: all chariots whose bottom node Interior node: all chariots whose bottom node

is v (all immediate control dependences of v)is v (all immediate control dependences of v) Used in CONDS queryUsed in CONDS query

Page 42: Control Dependence

42CS243 Winter 2006Stanford University

Computational ComplexityComputational Complexity

Query time: (Query time: (αα + 1) + 1) * * output-sizeoutput-size Space: Space: |E| + |V||E| + |V|//αα

Page 43: Control Dependence

43CS243 Winter 2006Stanford University

ReferenceReference

““Optimal Control Dependence Optimal Control Dependence Computation and the Roman Chariots Computation and the Roman Chariots Problem”, Keshav Pingali, Gianfranco Problem”, Keshav Pingali, Gianfranco Bilardi, ACM Transactions on Bilardi, ACM Transactions on Programming Languages and Systems Programming Languages and Systems (TOPLAS), May 1997. (TOPLAS), May 1997. http://iss.cs.cornell.edu/Publications/Paphttp://iss.cs.cornell.edu/Publications/Papers/TOPLAS1997.pdfers/TOPLAS1997.pdf


Recommended