University of Colorado at Boulder Core Research Lab ZDDs for Dynamic Trace Analysis Graham Price...
-
Upload
nelson-purks -
Category
Documents
-
view
218 -
download
1
Transcript of University of Colorado at Boulder Core Research Lab ZDDs for Dynamic Trace Analysis Graham Price...
University of Colorado at Boulder
Core Research Lab
ZDDs for Dynamic Trace Analysis
Graham Price Manish Vachharajani
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Motivation
• Tools can be useful
Representation take days to create!
• ParaMeter
Fabrel Studio
• Are they useable?
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
DIN vs. Ready Time
li r1, &fibarr
mov r2, 8
mov r4, 1
mov r3, 1
add r5,r3,r4
st 0(r1),r5
mov r3,r4
mov r4,r5
addi r2,r2,-1
addi r1,r1,4
bnz r2, loop
add r5,r3,r4
st 0(r1),r5
mov r3,r4
…
0xbee0
0xbee4
Instruction Mem Addr
0
1
2
3
4
5
6
7
8
9
10
11
12
13
DIN
0
1
2
3
4
5
6
7
8
9
10
11
12
13
DIN Ready Time
0 1 2 3 4 5 6 7 8 9 10 11 12 13
0
1
2
3
12
4
6
8
9
5
7
10
13
11
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Video
Details: Price, Giacomoni, and Vachharajani PACT 2008
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace BDD Construction
fd0 = (0,0)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
DIN Ready Time
0 1 2 3 4 5 6 7 8 9 10 11 12 13
fd1 = (0,1)
fd2 = (0,2)
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace BDD Construction
(X’ * Y’ * Z’ * W)
(X’ * Y’ * Z’ * W’)
ftrace = (X’ * Y’ * Z’ * W’) + (X’ * Y’ * Z’ * W) + (X’ * Y’ * Z * W’)
(0,0) (00,00)
(0,1) (00,01)
(X’ * Y’ * Z * W’)(0,2) (00,10)
Data Tuple Binary Tuple Boolean Function
{{X’ * Y’ * Z’ * W’}, {X’ * Y’ * Z’ * W}, {X’ * Y’ * Z’ * W}}
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
The BDD Data StructureFalse ArcInvertingFalse ArcTrue Arc
F(X,Y,Z,W) = X*Y*Z*W
0
Y
W
Z
W
ZZ Z
0 00 00 00 0
Y
W
Z
W
ZZ Z
0 0 00 100
X
0
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
The BDD Data StructureFalse ArcInvertingFalse ArcTrue Arc
F(X,Y,Z,W) = X*Y*Z*W
Y
W
Z
W
ZZ Z
Y
W
Z
W
ZZ Z
1
X
Z
0
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
The BDD Data StructureFalse ArcInvertingFalse ArcTrue Arc
F(X,Y,Z,W) = X*Y*Z*W
Y
WW
Y
WW
Z
1
X
Z
0
W
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
The BDD Data StructureFalse ArcInvertingFalse ArcTrue Arc
F(X,Y,Z,W) = X*Y*Z*W
Y Y
W
Z
1
X
Z
0
W
0
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
The BDD Data StructureFalse ArcInvertingFalse ArcTrue Arc
F(X,Y,Z,W) = X*Y*Z*W
Y
W
Z
1
X
0 1
X
Y
W
Z
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace BDD Construction
fd1 = (X’ * Y’ * Z’ * W)fd0 = (X’ * Y’ * Z’ * W’)
= +
ftrace = (X * Y * Z * W) + (X’ * Y’ * Z’ * W’)
1
X
Y
Z
1
X
Y
W
Z
1
X
Y
W
Z
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace BDD Construction Cont..
Unique Table
fd1 = (X’ * Y’ * Z’ * W)
1
X
Y
W
Z
fd0 = (X’ * Y’ * Z’ * W’)
= +
ftrace = (X’ * Y’ * Z’ * W’) + (X’ * Y’ * Z’ * W)
1
X
Y
W
Z
ftrace = (X’ * Y’ * Z’ * W’)
11
Itrace = 0
1
X
Y
W
Z
1
X
Y
Z
Compute Cache
Dead Nodes
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace BDD Construction Cont..
1
X
Y
W
Z= +
ftrace
1
X
Y
Z
1
X
Y
W
Z
fd3 = (X’ * Y’ * Z * W’)
Unique Table
Compute Cache
Dead Nodes
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
BDD Garbage Collection Time
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
ZDDsBDDs
1. Remove isomorpic graphs2. Skip and remove nodes whose pointers
point to the same child
ZDDs1. Remove isomorpic graphs2. Remove nodes whose “then” arc
points to the constant 0
64641100 ... yxyxyx
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace ZDD Construction
fd1 = (X’ * Y’ * Z’ * W)fd0 = (X’ * Y’ * Z’ * W’)
=+
ftrace = (X’ * Y’ * Z’ * W’) + (X’ * Y’ * Z’ * W)
1 0 1
W
01
W
0
Compute Cache
Dead Nodes
Unique Table
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace ZDD Construction
fd3 = (X’ * Y’ * Z * W’)
=+
ftrace
1
Z
01
W
0
ftrace (new)
1
W
0
Z
Unique Table
Compute Cache
Dead Nodes
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace ZDD Gains
~ 20% Reduction
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace ZDD Losses
3x Slower!
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace ZDD Construction
fd3 = (X’ * Y’ * Z * W’)
=+
ftrace
1
Z
01
W
0
ftrace (new)
1
W
0
Z
Unique Table
Compute Cache
Death Row
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Trace ZDD Construction
DIN x RDY Tuples
Over 9 times faster!
University of Colorado at Boulder
Core Research LabUniversity of Colorado at Boulder
Core Research Lab
Questions?