




Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
The concept of whole execution trace and its applications, including execution histories, control flow, dependencies, exercised addresses, referenced values, compiler optimizations, processor architectures, debugging, and testing. Topics covered include hot path specialization, value-based specialization, locality improving transformations, branch prediction, value prediction, code and data prefetching, load-store disambiguation, frequent values, delta debugging, dynamic slicing, and likely invariants.
Typology: Study notes
1 / 8
This page cannot be seen from the preview
Don't miss anything!
2 Execution Histories Control Flow Dependences Exercised Addresses Referenced Values Computed Compiler Optimizations Hot Path Specialization Value-based Specialization Locality Improving Transformations Data Speculation etc. Profile-Guided Redundant and Dead Code Elimination Branches [ PLDI’97a ] Assignments [ PLDI’97b ] Expressions [ MICRO’97,PLDI’ 98 ] Loads/Stores [ PLDI’99,IJPP’ 96 ] Bounds Checks [ PLDI’ 00 ] 3 Execution Histories Control Flow Dependences Exercised Addresses Referenced Values Computed Processor Architectures Branch Prediction Value Prediction Code & Data Prefetching Load-Store Disambiguation Power Frequent Values [ ASPLOS’00,ACM TECS’ 02 ] Compression Caches [ MICRO’02&’ 00 ] Off-Chip Buses [ ACM TODAES’ 04 ] Performance Value Prediction [ HPCA’99,ISCA’ 99 ] Load-Store Disambiguation [ MICRO’ 99 ] 4 Execution Histories Control Flow Dependences Exercised Addresses Referenced Values Computed Debugging & Testing Delta Debugging Dynamic Slicing Likely Invariants Test Suite Coverage Dynamic Matching Comparing executions of two versions [ ESEC/FSE -05 ] Efficient - space and time [ ICSE-03, TOPLAS 2005, ICSE-04, PLDI-04 ] Effective in locating faults [ AADEBUG-05, ASE-05, ICSE-06, PLDI-06 ] Dynamic Slicing 5 Whole Execution Trace Representation Static Program Representation
7 5:for i=1 to N 6:if (i%2==0) then 7: p=&a 8: a=a+ 9: z=2(p) 10: print(z) T** (^) F 1: z= 2: a= 3: b= 4: p=&b T Input: N= 11 : z= 21 : a= 31 : b= 41 : p=&b 51 : for i = 1 to N do 61 : if ( i %2 == 0) then 81 : a=a+ 91 : z=2(p) 52 : for i = 1 to N do 62 : if ( i %2 == 0) then 71 : p=&a 82 : a=a+ 92 : z=2(p) 101 : print(z)
10 11 12 13 14 Annotating Static Rep. With Dynamic Info. (2,7) (3,8) (7,12) (11,13) (13,14) (4,8) (12,13) (5,6)(9,10) (10,11) (5,7)(9,12) (5,8)(9,13) 1 2 3 4 5, 6, 11 7, 8, 14 F &b &a 0 0 2 1, F,T 1, 4, 4 8 WET Representation < tn > Block n^ Basic S 1 S 2 ... < v 1 > < v 2 > … < (ts, tn) > <^ (ts,^ tn) > 9 WET Sizes 10, 11, 8, 8, 10, 9, 10, 5, 10, 9,
300.twolf 256.bzip 255.vortex 197.parser 181.mcf 164.gzip 130.li 126.gcc 099.go Average
Representation Size (MB) Statements Executed (Millions) Program 10 Compaction of WET Representation
Node o Timestamps o Values/Addresses Dependence Edges o Timestamp pairs
All sequences Context-based method 11 Node Timestamps 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 2
3 (^46) 7 9 3 (^56) 7 9 3 (^46) 8 9 3 (^56) 8 9 1 2 3
3 (^46) 7 9 1 2 3 3 4 5 6 7 8 9 12 Infer: Local Dependence Labels: Full Elimination X = Y= X
(10,10) (20,20) (30,30)
10,20, =Y 21 (20,21) ... (...,20) ...
19 Node Values Pattern = 010121 ababcb dedefe mnmnon pqpqrq ghghih jkjklk abc (^) def mno pqr ghi jkl 20 Generic Compression 1 X Y Z 1 X Y Z A X Y Z B AA X Y ZX Y Z B
300.twolf 256.bzip 255.vortex 197.parser 181.mcf 164.gzip 130.li 126.gcc 099.go Average Before / After WET Size (MB) Program 22 Customized vs. Generic Customized x Generic = Total = 16. = 54. = 83. = 46. = 25. = 18. = 51. = 58. = 18. = 41. x 2. x 5. x 6. x 6. x 4. x 3. x 5. x 5. x 2. x 4.
300.twolf 256.bzip 255.vortex 197.parser 181.mcf 164.gzip 130.li 126.gcc 099.go Average Program 23 Scalability 0 10 2030 40 5060 70 80 Execution length Compaction factor 099.go 126.gcc 130.li 164.gzip 181.mcf 197.parser 255.vortex 256.bzip2 300.twolf 1 Gigabyte ⇔ 2 Billion Statements **0 1020 3040 50 60 7080 90 Execution length Compaction factor 099.go 126.gcc 130.li 164.gzip 181.mcf 197.parser 255.vortex 256.bzip2 300.twolf (billion)
24** Dependences Eliminated
25 Architecture Specific Information
300.twolf 256.bzip 255.vortex 197.parser 181.mcf 164.gzip 130.li 126.gcc 099.go Cache Hit/Miss History (MB) Branch Outcomes (MB) Program 26 Response Time: Control Flow Query
300.twolf 256.bzip 255.vortex 197.parser 181.mcf 164.gzip 130.li 126.gcc 099.go Program Time (seconds) 27 Response Time: Load Value/Address Query
300.twolf 256.bzip 255.vortex 197.parser 181.mcf 164.gzip 130.li 126.gcc 099.go Program Load Values
Addresses 28 Dynamic Slicing
37 Matching Program Versions
Bug in the optimizer; or Bug exposed by the optimizer. 38 Comparison Checking [ESEC/FSE 1999]
trace trace Report 39 Matching Overview
li.U li.O m88ksim.U m88ksim.O twolf.U twolf.O go.U go.O parser.U parser.O Dynamic Program Static (millions) 41 Matches Generated 302 289 362 387 265 Time (sec) 97.0 % 95.1 % 94.2 % 91.0 % 96.1 % li m88ksim twolf go parser Program Optimized 42 Matching Accuracy 0 4 0 0 0 Missed 35 72 123 27 29 False 112 823 1067 1362 243 li m88ksim twolf go parser Program Actual
43 Comparison Checking 44 Applications of Version Matching
45 Whole Execution Trace Representation