1 / 17

Using Loop Invariants to Detect Transient Faults in the Data Caches

Using Loop Invariants to Detect Transient Faults in the Data Caches. Seung Woo Son, Sri Hari Krishna Narayanan and Mahmut T. Kandemir Microsystems Design Lab. The Pennsylvania State University. Related Work – H/W. Hardware fault detection usually involves a combination of

efrem
Download Presentation

Using Loop Invariants to Detect Transient Faults in the Data Caches

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using Loop Invariants to Detect Transient Faults in the Data Caches Seung Woo Son, Sri Hari Krishna Narayanan and Mahmut T. Kandemir Microsystems Design Lab. The Pennsylvania State University

  2. Related Work – H/W • Hardware fault detection usually involves a combination of • Information redundancy (e.g., ECC, parity, etc.) • Temporal redundancy (e.g., executing the same instruction twice in the same functional unit, but at different times) • Spatial redundancy (e.g., executing same instruction in different functional units) MDL@PSU

  3. Related Work -S/W • Replication of the program execution and the check of the results • Recovery Blocks • N-Version Programming • Introduction of some control code into the program • ABFT • Assertions • Code Flow Checking MDL@PSU

  4. Our Approach • Use loop invariants to detect transient-faults • What is a loop invariant? • It is data or a property that does not change during execution of a loop. • Why target loops? • Loops make up 90% of the execution time. • Our usage of invariants • If invariant value has changed, then soft error has occurred, modifying the data in cache. • In that case, re-perform iterations. MDL@PSU

  5. Bubble Sort Algorithm Bubblesort(sequence): Input: sequence of integers sequence Post-condition: sequence is sorted &contains the same integers as theoriginal sequence length = length of sequence for i = 0 to length - 1 do for j = 0 to length - i -2 do if jth element of sequence >(j+1)th element of sequence then swap jth and (j+1)th elementof sequence MDL@PSU

  6. Bubble Sort-Sample Invariants • Loop Invariant – Outer Loop: • Last i elements of sequenceare sorted and are all greateror equal to the otherelements of the sequence. • Loop Invariant – Inner Loop: • Same as outer loop and thejth element of sequence isgreater or equal to the first jelements of sequence. MDL@PSU

  7. The Big Picture:How does the Project Work? • Use an Invariant Detector to detect invariants in code. • Incorporate ‘checker code’ into the source code -> hardened version • Run this code in a modified version of SimpleScalar that injects errors into memory and cache. • Calculate how our method performs MDL@PSU

  8. The Daikon Invariant Detector • Daikon - developed at the Program Analysis Group at MIT. • Dynamically detects invariants about a program’s data structures • Limitations • It only targets procedural invariants • Does not target loops • Does not consider local variables MDL@PSU

  9. Daikon Usage • Modify our Source Code such that Daikon can detect loop invariants • Instrument the Source Code • Run Test Suites on Instrumented code to create Trace Files • Detect invariants in Trace Files • Incorporate Invariant Checker code in the Source Code MDL@PSU

  10. Fault Injection Mechanism • Modified SimpleScalar v3.0d to inject faults • Randomly generate faults on memory access operation • Memory corruption routines from Angshuman’s • In our study, we randomly flip one bit of memory data during memory and cache read/write operations • Generate statistics for faults injected MDL@PSU

  11. Detected loop invariant – bubble sort … a != null -> easy a[i] > i -> easy i >= 1 -> easy n == 100 -> easy a[i..] sorted by < -> medium a[0..i] sorted by > -> medium i < size(a[])-1 -> easy i < a[i-1] -> easy … MDL@PSU

  12. Detected loop invariant – matrix multiplication … size(a[]) == size(b[]) -> easy i >= 0 -> easy b[] contains no duplicates -> difficult b[] elements != null -> medium b[] == a[] + 3120 -> useless … MDL@PSU

  13. Experiment Setup • Bubble Sort • Array size = 100 • # of iteration = 150 • Total # of instruction simulated: 68,019,732 • Matrix Multiplication • Array size = 100 x 100 • # of iteration = 1 • Total # of instruction simulated: 65,547,520 MDL@PSU

  14. Detection Rate MDL@PSU

  15. Detection overhead - code increase MDL@PSU

  16. Conclusion • Developed a soft error detection technique using loop-invariants • Detection rate varies according to the characteristics of the applications • Different programs have different loop invariants • Performance degradation due to fault-hardened code MDL@PSU

  17. Future Work • Better invariant generation mechanism that generated loop invariants directly • Automatic Classification of Invariants • Automatic Assertion generator in Source Code • More accurate fault injection MDL@PSU

More Related