EECS 583 Class 5 Ifconversion, Hyperblocks - PowerPoint PPT Presentation

1 / 41
About This Presentation
Title:

EECS 583 Class 5 Ifconversion, Hyperblocks

Description:

'On Predicated Execution', Park and Schlansker, HPL Technical ... Running Example CDs Via Algorithm (2) BB2. BB4. BB7. BB6. BB5. BB1. BB3. BB8. b 0. b = 0 ... – PowerPoint PPT presentation

Number of Views:43
Avg rating:3.0/5.0
Slides: 42
Provided by: scottm3
Category:

less

Transcript and Presenter's Notes

Title: EECS 583 Class 5 Ifconversion, Hyperblocks


1
EECS 583 Class 5If-conversion, Hyperblocks
  • University of Michigan
  • January 25, 2006

2
Reading Material
  • Todays class
  • On Predicated Execution, Park and Schlansker,
    HPL Technical Report, 1991.
  • "Effective Compiler Support for Predicated
    Execution using the Hyperblock", S. Mahlke et
    al., MICRO-25, 1992..
  • Material for the next lecture
  • Profiled Guided Code Positioning,K. Pettis and
    R. Hansen, Proc. PLDI-90, 1990Procedure
    Placement Using Temporal Ordering
    Information,N. Gloy et al., Proc. MICRO-30,
    1997

3
From Last Time If-conversion
  • Algorithm for generating predicated code
  • Automate what weve been doing by hand
  • Handle arbitrary complex graphs
  • But, acyclic subgraph only!!
  • Need a branch to get you back to the top of a
    loop
  • Efficient
  • Roots are from Vector computer days
  • Vectorize a loop with an if-statement in the body
  • 4 steps
  • 1. Loop backedge coalescing
  • 2. Control dependence analysis
  • 3. Control flow substitution
  • 4. CMPP compaction
  • My version of Park Schlansker

4
Running Example Initial State
do b load(a) if (b lt 0) if
((c gt 0) (b gt 13)) b b 1
else c c 1 d d 1
else e e 1 if (c gt
25) continue a a 1 while (e lt 34)
BB1
b lt 0
b gt 0
BB2
BB3
e
c gt 0
c lt 0
c gt 25
BB4
c lt 25
b lt 13
b gt 13
BB6
BB5
b
c
BB7
d
BB8
a
e lt 34
e gt 34
5
Step 1 Backedge Coalescing
  • Recall Loop backedge is branch from inside the
    loop back to the loop header
  • This step only applicable for a loop body
  • If not a loop body ? skip this step
  • Process
  • Create a new basic block
  • New BB contains an unconditional branch to the
    loop header
  • Adjust all other backedges to go to new BB rather
    than header
  • Why do this?
  • Heuristic step Not essential for correctness
  • If-conversion cannot remove backedges (only
    forward edges)
  • But this allows the control logic to figure out
    which backedge you take to be eliminated
  • Generally this is a good thing to do

6
Running Example Backedge Coalescing
BB1
BB1
b lt 0
b gt 0
b lt 0
b gt 0
BB2
BB3
e
BB2
BB3
e
c gt 0
c lt 0
c gt 0
c lt 0
c lt 25
c gt 25
c gt 25
BB4
BB4
c lt 25
b lt 13
b gt 13
b lt 13
b gt 13
BB6
BB5
b
c
BB6
BB5
b
c
BB7
d
BB7
d
BB8
a
BB8
a
e lt 34
BB9
e lt 34
e gt 34
e gt 34
7
Step 2 Control Dependence Analysis (CD)
  • Control flow Execution transfer from 1 BB to
    another via a taken branch or fallthrough path
  • Dependence Ordering constraint between 2
    operations
  • Must execute in proper order to achieve the
    correct result
  • O1 a b c
  • O2 d a e
  • O2 dependent on O1
  • Control dependence One operation controls the
    execution of another
  • O1 blt a, 0, SKIP
  • O2 b c d
  • SKIP
  • O2 control dependent on O1
  • Control dependence analysis derives these
    dependences

8
Control Dependences
  • Recall
  • Post dominator BBX is post dominated by BBY if
    every path from BBX to EXIT contains BBY
  • Immediate post dominator First breadth first
    successor of a block that is a post dominator
  • Control dependence BBY is control dependent on
    BBX iff
  • 1. There exists a directed path P from BBX to BBY
    with any BBZ in P (excluding BBX and BBY) post
    dominated by BBY
  • 2. BBX is not post dominated by BBY
  • In English,
  • A BB is control dependent on the closest BB(s)
    that determine(s) its execution
  • Its actually not a BB, its a control flow edge
    coming out of a BB

9
Control Dependence Example
BB1
Control dependences BB1 BB2 BB3 BB4 BB5 BB6
BB7
T
F
BB2
BB3
T
F
BB4
BB5
BB6
Notation positive BB number fallthru
direction negative BB number taken direction
BB7
10
Running Example CDs
Entry
BB1
First, nuke backedge(s) Second, nuke exit
edges Then, Add pseudo entry/exit nodes -
Entry ? nodes with no predecessors - Exit ?
nodes with no successors
b lt 0
b gt 0
BB2
BB3
e
c gt 0
c lt 0
c lt 25
c gt 25
BB4
Control deps (left is taken) BB1 BB2 BB3 BB4 B
B5 BB6 BB7 BB8 BB9
b lt 13
b gt 13
BB6
BB5
b
c
BB7
d
BB8
a
e lt 34
BB9
Exit
11
Algorithm for Control Dependence Analysis
for each basic block x in region for each
outgoing control flow edge e of x y
destination basic block of e if (y not in
pdom(x)) then lub ipdom(x)
if (e corresponds to a taken branch) then
x_id -x.id else
x_id x.id endif
t y while (t ! lub) do
cd(t) x_id t ipdom(t)
endwhile endif
endfor endfor
Notes Compute cd(x) which contains those BBs
which x is control dependent on Iterate on per
edge basis, adding edge to each cd set it is a
member of
12
Running Example Post Dominators
Entry
BB1
pdom ipdom BB1 1, 9, ex 9 BB2 2, 7, 8, 9,
ex 7 BB3 3, 9, ex 9 BB4 4, 7, 8, 9,
ex 7 BB5 5, 7, 8, 9, ex 7 BB6 6, 7, 8, 9,
ex 7 BB7 7, 8, 9, ex 8 BB8 8, 9, ex 9 BB9 9,
ex ex
b lt 0
b gt 0
BB2
BB3
e
c gt 0
c lt 0
c lt 25
c gt 25
BB4
b lt 13
b gt 13
BB6
BB5
b
c
BB7
d
BB8
a
e lt 34
BB9
Exit
13
Running Example CDs Via Algorithm
1 ? 2 edge (aka 1)
Entry
BB1
x 1 e taken edge 1 ? 2 y 2 y not in
pdom(x) lub 9 x_id -1 t 2 2 ! 9 cd(2)
-1 t 7 7 ! 9 cd(7) -1 t 8 8 ! 9 cd(8)
-1 t 9 9 9
b lt 0
b gt 0
BB2
BB3
e
c gt 0
c lt 0
c lt 25
c gt 25
BB4
b lt 13
b gt 13
BB6
BB5
b
c
BB7
d
BB8
a
e lt 34
BB9
Exit
14
Running Example CDs Via Algorithm (2)
3 ? 8 edge (aka -3)
Entry
BB1
x 3 e taken edge 3 ? 8 y 8 y not in
pdom(x) lub 9 x_id -3 t 8 8 ! 9 cd(8)
-3 t 9 9 9
b lt 0
b gt 0
BB2
BB3
e
c gt 0
c lt 0
c lt 25
c gt 25
BB4
b lt 13
b gt 13
BB6
BB5
b
c
BB7
d
Class Problem 1 ? 3 edge (aka 1)
BB8
a
e lt 34
BB9
Exit
15
Running Example CDs Via Algorithm (3)
Entry
BB1
Control deps (left is taken) BB1 none BB2
-1 BB3 1 BB4 -2 BB5 -4 BB6 2, 4 BB7 -1 BB8
-1, -3 BB9 none
b lt 0
b gt 0
BB2
BB3
e
c gt 0
c lt 0
c lt 25
c gt 25
BB4
b lt 13
b gt 13
BB6
BB5
b
c
BB7
d
BB8
a
e lt 34
BB9
Exit
16
Step 3 Control Flow Substitution
  • Go from branching code ? sequential predicated
    code
  • 5 baby steps
  • 1. Create predicates
  • 2. CMPP insertion
  • 3. Guard operations
  • 4. Remove branches
  • 5. Initialize predicates

17
Predicate Creation
  • R/K calculation Mapping predicates to blocks
  • Paper more complicated than it really is
  • K unique sets of control dependences
  • Create a new predicate for each element of K
  • R(bb) predicate that represents CD set for bb,
    ie the bbs assigned predicate (all ops in that
    bb guarded by R(bb))

K -1, 1, -2, -4, 2,4,
-1,-3 predicates p1, p2, p3,
p4, p5, p6 bb 1,
2, 3, 4, 5, 6,
7, 8, 9 CD(bb) none,
-1, 1, -2, -4, 2,4, -1, -1,-3,
none R(bb) T p1 p2
p3 p4 p5 p1 p6 T

18
CMPP Creation/Insertion
  • For each control dependence set
  • For each edge in the control dependence set
  • Identify branch condition that causes edge to be
    traversed
  • Create CMPP to compute corresponding branch
    condition
  • OR-type handles worst case
  • guard True
  • destination predicate assigned to that CD set
  • Insert at end of BB that is the source of the edge

K -1, 1, -2, -4, 2,4,
-1,-3 predicates p1, p2, p3,
p4, p5, p6
p1 cmpp.ON (b lt 0) if T ? BB1
19
Running Example CMPP Creation
Entry
K -1, 1, -2, -4, 2,4, -1,-3 ps
p1, p2, p3, p4, p5, p6
BB1
b lt 0
b gt 0
BB2
BB3
e
c gt 0
c lt 0
c lt 25
c gt 25
p1 cmpp.ON (b lt 0) if T ? BB1 p2 cmpp.ON (b
gt 0) if T ? BB1 p3 cmpp.ON (c gt 0) if T ?
BB2 p4 cmpp.ON (b gt 13) if T ? BB4 p5 cmpp.ON
(c lt 0) if T ? BB2 p5 cmpp.ON (b lt 13) if T ?
BB4 p6 cmpp.ON (b lt 0) if T ? BB1 p6 cmpp.ON
(c lt 25) if T ? BB3
BB4
b lt 13
b gt 13
BB6
BB5
b
c
BB7
d
BB8
a
e lt 34
BB9
Exit
20
Control Flow Substitution The Rest
  • Guard all operations in each bb by R(bb)
  • Including the newly inserted CMPPs
  • Nuke all the branches
  • Except exit edges and backedges
  • Initialize each predicate to 0 in first BB

bb 1, 2, 3,
4, 5, 6, 7, 8,
9 CD(bb) none, -1, 1, -2, -4,
2,4, -1, -1,-3, none R(bb)
T p1 p2 p3 p4 p5
p1 p6 T
21
Running Example Control Flow Substitution
Loop p1 p2 p3 p4 p5 p6 0 b
load(a) if T p1 cmpp.ON (b lt 0) if T p2
cmpp.ON (b gt 0) if T p6 cmpp.ON (b lt 0)
if T p3 cmpp.ON (c gt 0) if p1 p5
cmpp.ON (c lt 0) if p1 p4 cmpp.ON (b gt 13)
if p3 p5 cmpp.ON (b lt 13) if p3 b b
1 if p4 c c 1 if p5 d d 1 if
p1 p6 cmpp.ON (c lt 25) if p2 e e
1 if p2 a a 1 if p6 bge e, 34, Done
if p6 jump Loop if T Done
BB1
b lt 0
b gt 0
BB2
BB3
e
c gt 0
c lt 0
c lt 25
c gt 25
BB4
b lt 13
b gt 13
BB6
BB5
b
c
BB7
d
BB8
a
e lt 34
BB9
e gt 34
22
Step 4 CMPP Compaction
  • Convert ON CMPPs to UN
  • All singly defined predicates dont need to be
    OR-type
  • OR of 1 condition ? Just compute it !!!
  • Remove initialization (Unconditional dont
    require init)
  • Reduce number of CMPPs
  • Utilize 2nd destination slot
  • Combine any 2 CMPPs with
  • Same source operands
  • Same guarding predicate
  • Same or opposite compare conditions

23
Running Example - CMPP Compaction
Loop p1 p2 p3 p4 p5 p6 0 b
load(a) if T p1 cmpp.ON (b lt 0) if T p2
cmpp.ON (b gt 0) if T p6 cmpp.ON (b lt 0)
if T p3 cmpp.ON (c gt 0) if p1 p5
cmpp.ON (c lt 0) if p1 p4 cmpp.ON (b gt 13)
if p3 p5 cmpp.ON (b lt 13) if p3 b b
1 if p4 c c 1 if p5 d d 1 if
p1 p6 cmpp.ON (c lt 25) if p2 e e
1 if p2 a a 1 if p6 bge e, 34, Done
if p6 jump Loop if T Done
Loop p5 p6 0 b load(a) if T
p1,p2 cmpp.UN.UC (b lt 0) if T p6 cmpp.ON
(b lt 0) if T p3,p5 cmpp.UN.OC (c gt 0) if
p1 p4,p5 cmpp.UN.OC (b gt 13) if p3 b
b 1 if p4 c c 1 if p5 d d 1 if
p1 p6 cmpp.ON (c lt 25) if p2 e e
1 if p2 a a 1 if p6 bge e, 34, Done
if p6 jump Loop if T Done
24
Homework Problem Answer Next Class
if (a gt 0) r t s if (b gt 0 c gt
0) u v 1 else if (d gt 0)
x y 1 else z z 1
  • Draw the CFG
  • Compute CD
  • If-convert the code

25
Region Formation If-conversion
10
  • Control flow representation
  • branches
  • predicated operations
  • If-conversion not all all or nothing deal
  • Often bad to apply in blanket mode
  • Selectively apply
  • Regions
  • Extend a superblock to contain if-converted code
  • Convert off-trace transitions to on-trace
  • A hyperblock is born
  • Superblock is a special case HB where all
    guarding predicates are True

BB1
20
80
BB2
BB3
80
20
BB4
BB4
8
20
72
BB5
28
BB6
BB6
7.2
25.2
64.8
2.8
26
When to Apply If-conversion
  • Positives
  • Remove branch
  • No disruption to sequential fetch
  • No prediction or mispredict
  • No use of branch resource
  • Increase potential for operation overlap
  • Enable more aggressive compiler xforms
  • Software pipelining
  • Height reduction
  • Negatives
  • Max or Sum function applied when overlap
  • Resource usage
  • Dependence height
  • Hazard presence
  • Executing useless operations

10
BB1
80
90
20
BB2
BB3
80
20
BB4
10
BB5
90
10
BB6
10
27
Negative 1 Resource Usage
Case 1 Each BB requires 3 resources Assume
processor has 2 resources No IC 13 .63
.43 13 9 9 / 2 4.5 5 cycles IC 1(3
3 3 3) 12 12 / 2 6 cycles
Resource usage is additive for all BBs that are
if-converted
100
BB1
BB1
60
40
BB2 if p1
BB2
BB3
Case 2 Each BB requires 3 resources Assume
processor has 6 resources No IC 13 .63
.43 13 9 9 / 6 1.5 2 cycles IC
1(3333) 12 12 / 6 2 cycles
BB3 if p2
60
40
BB4
BB4
100
28
Negative 2 Dependence Height
Case 1 height(bb1) 1, height(bb2)
3 Height(bb3) 9, height(bb4) 2 No IC 11
.63 .49 12 8.4 IC 11 1MAX(3,9)
13 13
Dependence height is max of for all BBs that are
if-converted (dep height schedule length with
infinite resources)
100
BB1
BB1
Case 2 height(bb1) 1, height(bb2)
3 Height(bb3) 3, height(bb4) 2 No IC 11
.63 .43 12 6 IC 11 1MAX(3,3)
12 6
60
40
BB2 if p1
BB2
BB3
BB3 if p2
60
40
BB4
BB4
100
29
Negative 3 Hazard Presence
Case 1 Hazard in BB3 No IC SB out of BB1, 2,
4, operations In BB4 free to overlap with those
in BB1 and BB2 IC operations in BB4 cannot
overlap With those in BB1 (BB2 ok)
Hazard operation that forces the compiler to be
conservative, so limited reordering or
optimization, e.g., subroutine call, pointer
store,
100
BB1
BB1
60
40
BB2 if p1
BB2
BB3
BB3 if p2
60
40
BB4
BB4
100
30
When To If-convert
  • Resources
  • Small resource usage ideal for less important
    paths
  • Dependence height
  • Matched heights are ideal
  • Close to same heights is ok
  • Remember everything is relative for resources
    and dependence height !
  • Hazards
  • Avoid hazards unless on most important path
  • Estimate of benefit
  • Branches/Mispredicts removed
  • Fudge factor

100
BB1
BB1
60
40
BB2 if p1
BB2
BB3
BB3 if p2
60
40
BB4
BB4
100
31
The Hyperblock
  • Hyperblock - Collection of basic blocks in which
    control flow may only enter at the first BB. All
    internal control flow is eliminated via
    if-conversion
  • Likely control flow paths
  • Acyclic (outer backedge ok)
  • Multiple intersecting traces with no side
    entrances
  • Side exits still exist
  • Hyperblock formation
  • 1. Block selection
  • 2. Tail duplication
  • 3. If-conversion

10
BB1
80
90
20
BB2
BB3
80
20
BB4
10
BB5
90
10
BB6
10
32
Block Selection
  • Block selection
  • Select subset of BBs for inclusion in HB
  • Difficult problem
  • Weighted cost/benefit function
  • Height overhead
  • Resource overhead
  • Hazard overhead
  • Branch elimination benefit
  • Weighted by frequency

10
BB1
80
90
20
BB2
BB3
80
20
BB4
10
BB5
90
10
BB6
10
33
Block Selection
  • Create a trace ?main path
  • Use a heuristic function to select other blocks
    that are compatible with the main path
  • Consider each BB by itself for simplicity
  • Compute priority for other BBs
  • Normalize against main path.
  • BSVi (K x (weight_bbi / size_bbi) x
    (size_main_path / weight_main_path) x bb_chari)
  • weight execution frequency
  • size number of operations
  • bb_char characteristic value of each BB
  • Max value 1, Hazardous instructions reduce
    this to 0.5, 0.25, ...
  • K constant to represent processor issue rate
  • Include BB when BSVi gt Threshold

34
Example - Step 1 - Block Selection
main path 1,2,4,6 num_ops 5 8 3 2
18 weight 80 Calculate the BSVs for BB3,
BB5 assuming no hazards, K 4 BSV3 4 x (20 /
2) x (18 / 80) 9 BSV5 4 x (10 / 5) x (18 /
80) 1.8 If Threshold 2.0, select BB3 along
with main path
10
BB1 - 5
80
90
20
BB2 - 8
BB3 2
80
20
BB4 - 3
10
BB5 - 5
90
10
BB6 - 2
10
35
Example - Step 2 - Tail Duplication
Tail duplication same as with Superblock formation
10
10
BB1
BB1
80
20
80
20
BB2
BB3
BB2
BB3
80
20
80
20
BB4
BB4
10
10
BB5
90
BB5
90
10
10
BB6
BB6
BB6
90
81
9
10
9
1
36
Example - Step 3 If-conversion
If-convert intra-HB branches only!!
10
10
BB1
80
20
BB1 p1,p2 CMPP
BB2
BB3
80
20
BB2 if p1
BB4
BB3 if p2
10
BB4
BB5
90
BB6
BB5
10
10
BB6
81
BB6
9
81
BB6
9
9
1
1
9
37
Class Problem
Form the HB for this subgraph Assume K 4, BSV
Threshold 2
100
BB1- 3
20
80
BB2 - 8
BB3 - 2
80
20
BB4 - 2
45
55
BB5 - 3
BB6 - 2
10
35
55
BB7 -1
BB8 -2
35
10
BB9 -1
38
Block Selection Try 2
  • Problems with BSV formula
  • Ignore dependence height
  • Blocks considered independently (control flow
    ignored)
  • Enumerate all paths of execution through region
    of interest
  • Consider a path execution from entry to some
    exit
  • Give priority to path as a whole
  • Path priority
  • dep_ratioi 1.0 (dep_heighti / max dep_height)
  • op_ratioi 1.0 (num_opsi / max num_ops)
  • priorityi (probabilityi x hazardi) x
    (dep_ratioi op_ratioi K)
  • Hazard multiplier was 0.25 for paths containing
    subroutine call or unresolvable memory store
  • K base contribution for a path (0.1 used)

39
Block Selection Try 2 (continued)
  • Path selection
  • Rank paths from highest to lowest priority
  • Include paths until either
  • Estimated available resources full
  • Priority drops too low
  • Exclude any paths with excessive resource util or
    dep height
  • Use union of selected paths to form Hyperblock
  • Causes some lower priority paths to be included

40
Block Selection - Try 2 - Example
Enumerate all paths, rank by priority
1. A-B-D-E-F-H-N 2. A-B-D-E-F-H-K-N 3.
A-B-D-E-G-J-M-N 4. A-B-D-E-G-J-L-M-N 5.
A-B-D-E-G-I-M-N 6. A-B-D-E-G-J-L-N 7. A-B-D 8.
A-C-D-E-F-H-N 9. A-C-D-E-F-H-K-N 10.
A-C-D-E-G-J-M-N 11. A-C-D-E-G-J-L-M-N 12.
A-C-D-E-G-I-M-N 13. A-C-D-E-G-J-L-N 14. A-C-D
15. A-B-D-E-F-G-I-M-N 16. A-B-D-E-F-G-J-M-N 17.
A-B-D-E-F-G-J-L-M-N 18. A-B-D-E-F-G-J-L-N 19.
A-B-C-E-F-G-I-M-N 20. A-B-C-E-F-G-J-M-N 21.
A-B-C-E-F-G-J-L-M-N 22. A-B-C-E-F-G-J-L-N
41
Block Selection Try 2 Example continued
Write a Comment
User Comments (0)
About PowerShow.com