Software Program-Level Reliability Optimization for Dependable Code Generation

State-of-the-art has primarily exploited the compiler-level techniques for improving the performance and energy. This chapter aims at enabling reliability-driven compilation enabled by the instruction-level reliability models of Chap. 4 that quantify the reliability-wise importance of different instructions and the impact of their interdependencies on the vulnerability variations. This chapter presents several novel techniques for reliable code generation in order to increase software program’s reliability under user-provided tolerable performance overhead constraints. Improved software reliability can be achieved in two orthogonal and equally important ways: (1) Reducing the error probabilities by reducing the vulnerabilities to soft errors and critical instruction executions; and (2) Error detection and recovery through instruction duplication or triplication, where selective redundancy can be applied to reduce the performance overhead.

[1]  Paul Lokuciejewski,et al.  Combining Worst-Case Timing Models, Loop Unrolling, and Static Loop Analysis for WCET Minimization , 2009, 2009 21st Euromicro Conference on Real-Time Systems.

[2]  John P. Hayes,et al.  Low-cost on-line fault detection using control flow assertions , 2003, 9th IEEE On-Line Testing Symposium, 2003. IOLTS 2003..

[3]  Mahmut T. Kandemir,et al.  Compiler-directed instruction duplication for soft error detection , 2005, Design, Automation and Test in Europe.

[4]  Edward J. McCluskey,et al.  Control-flow checking by software signatures , 2002, IEEE Trans. Reliab..

[5]  James R. Larus,et al.  Branch prediction for free , 1993, PLDI '93.

[6]  Ben H. H. Juurlink,et al.  Protective redundancy overhead reduction using instruction vulnerability factor , 2010, Conf. Computing Frontiers.

[7]  Wei Zhang,et al.  Compiler-guided register reliability improvement against soft errors , 2005, EMSOFT.

[8]  Jason Cong,et al.  Assuring application-level correctness against soft errors , 2011, 2011 IEEE/ACM International Conference on Computer-Aided Design (ICCAD).

[9]  Shuai Wang,et al.  In-Register Duplication: Exploiting Narrow-Width Value for Improving Register File Reliability , 2006, International Conference on Dependable Systems and Networks (DSN'06).

[10]  David I. August,et al.  Software-controlled fault tolerance , 2005, TACO.

[11]  Rui Shen,et al.  The Instruction Scheduling for Soft Errors Based on Data Flow Analysis , 2009, 2009 15th IEEE Pacific Rim International Symposium on Dependable Computing.

[12]  Edward J. McCluskey,et al.  Error detection by duplicated instructions in super-scalar processors , 2002, IEEE Trans. Reliab..

[13]  David I. August,et al.  Software modulated fault tolerance , 2008 .

[14]  Mahmut T. Kandemir,et al.  Instruction Scheduling for Low Power , 2004, J. VLSI Signal Process..