Skip to main content
Log in

Programming guidelines for improving software resiliency against soft-errors without performance overhead

  • Published:
Computing Aims and scope Submit manuscript

Abstract

A large percentage of soft-errors which alters a computer system are inherently derated (masked) due to the structural features of software. The higher usage of error-derating structures in a computer program leads to the higher resiliency. Computer programming style, as a principle phase of software development, has inherent and hidden effects on the program resiliency. Hence, improving the resiliency of a computer system without using external redundancy and hardware modification and only by making a simple modification in the program source-code and structure is one of the main issues in this field of study. This paper investigates the inherent side effects of a subset of programming structures and styles on the rate of error-deration and consequently program resiliency; To attain this goal, four different benchmark programs were implemented by different programming structures. Profiling experiments were performed to identify the inherent effects of the programming structures on the rate of program vulnerability against soft-errors and the error-deration; then, in order to examine the effects of the programming structures on the program resiliency, about 10,080,000 faults were injected into the benchmark programs. The results reveal that using \(x{{++}}\) operator (rather than \(x=x+1\) and \(x+=1)\), do-while structure (rather than for structure) and inline functions (rather than normal and recursive functions) improves the program resiliency about 8%. This finding can enable software programmers to develop highly resilient programs without using external redundancy.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20
Fig. 21
Fig. 22

Similar content being viewed by others

Notes

  1.   The terms “software” and “program” have been used interchangeably with the same meaning in this paper.

  2. x is a data in the program source code.

  3. The terms “benchmarks” and “benchmark-programs” have been used interchangeably and with the same meaning in this paper.

References

  1. Ammann P, Mason G (2008) Introduction to software testing. Cambridge University Press, New York

    Book  MATH  Google Scholar 

  2. Arasteh B, Miremadi SG, Rahmani AM (2014) Developing inherently resilient software against soft-errors based on algorithm level inherent features. J Electron Test 30(2):193–212

    Article  Google Scholar 

  3. Arasteh B, Bouyer A, Pirahesh S (2015) An efficient vulnerability-driven method for hardening a program against soft-error using genetic algorithm. Comput Electr Eng 48:25–43

    Article  Google Scholar 

  4. Austin T, Larson E, Ernst D (2002) SimpleScalar: an infrastructure for computer system modeling. IEEE Comput 35(2):59–67

    Article  Google Scholar 

  5. Benso A, Di Carlo S, Di Natale G, Prinetto P, Tagliaferri L (2003) Data criticality estimation in software application. In: International test conference, pp 802–810, October 2003

  6. Borodin D., Juurlink BHH (2010) Protective redundancy overhead reduction using instruction vulnerability factor. In: ACM international conference on computing frontiers, Italy, pp 319–326, May 2010

  7. Butts JA, Sohi G (2002) Dynamic dead-instruction detection and elimination. In: 10th International conference on architectural support for programming languages and operating systems (ASPLOS X), pp 199–210, October, 2002

  8. Carlo SD, Gambardella G, Prinetto P, Reichenbach F, Lokstad T, Rafiq G (2014) On enhancing fault injection’s capabilities and performances for safety critical systems. In: 17th Euromicro conference on digital system design, Verona, pp 583–590

  9. Casagrande LG, Kastensmidt FL (2016) Soft-error analysis in embedded software developed with without operating system. In: 17th Latin-American test symposium (LATS), pp 147–152

  10. Cook JJ, Zilles C (2008) A characterization of instruction-level error derating and its implications for error detection. In: IEEE international conference on dependable systems and networks (DSN), June 2008

  11. Dixit A, Wood A (2011) The impact of new technology on soft-error rates. In: Proceedings of the IEEE workshop on silicon errors in logic system, March 2011

  12. Evers M (2000) Improving branch prediction by understanding branch behaviour. Ph.D. thesis, University of Michgan

  13. Fazeli M, Farivar R, Miremadi SG (2005) A software-based concurrent error detection technique for PowerPC processor-based embedded systems. In: 20th IEEE international symposium on defect and fault tolerance in VLSI systems, pp 266–274, October 2005

  14. Hari SKS (2012) Low-cost program level detectors for reducing silent data corruptions. In: IEEE international conference on dependable systems and networks (DSN), June 2012

  15. Hiller M, Jhumka A, Suri N (2001) An approach for analyzing the propagation of data errors in software. In: IEEE international conference on dependable systems and networks (DSN), July 2001

  16. https://www.spec.org/

  17. IEEE Standard Glossary of Software Engineering Terminology (1990) IEEE Std 610:12

  18. Jantz MJ, Kulkarni PA (2012) Understand and categorize dynamically dead instructions for contemporary architectures. In: International conference on interaction between compilers and computer architectures (INTERACT), pp 25–32

  19. Jiesheng W, Rashid L, Pattabiraman K, Gopalakrishnan S (2011) Comparing the effects of intermittent and transient hardware faults on programs. In: International conference on dependable systems and networks (DSN), pp. 53–58, June 2011

  20. Karnik T, Hazucha P, Patel J (2004) Characterization of soft-errors caused by single event upsets in CMOS process. IEEE Trans Dependable Secure Comput 1(2):128–143

    Article  Google Scholar 

  21. Kleinberg J, Tardos E (2004) Algorithm design. Addison-Wesley, Boston ISBN: 0-321-29535-8

    Google Scholar 

  22. Li X (2009) Exploiting inherent program redundancy for fault tolerance. Ph.D. thesis in University of Maryland

  23. Lu JS, Li F, Degalahal V, Kandemir M, Vijaykrishnan N, Irwin MJ (2005) Compiler-directed instruction duplication for soft-error detection. In: Design, automation and test in Europe conference, pp 1056–1057

  24. Messer A (2004) Susceptibility of commodity systems and software to memory soft-errors. IEEE Trans Comput 53(12):1557–1568

    Article  Google Scholar 

  25. Mukherjee SS, Weaver C, Emer J, Reinhardt SK, Austin T (2003) A systematic methodology to compute the architectural vulnerability factors for a high-performance microprocessor. In: 36th Annual IEEE/ACM international symposium on micro architecture, pp 29–40, December 2003

  26. Nair A, John LK, Eeckhout L (2010) AVF stressmark: towards an automated methodology for bounding the worst-case vulnerability to soft-errors. In: 43rd Annual IEEE/ACM international symposium on microarchitecture (MICRO), pp 125–136, December 2010

  27. Oh N, Mccluskey EJ (2002) Error detection by selective procedure call duplication for low energy consumption. IEEE Trans Reliab 51(4):392–402

    Article  Google Scholar 

  28. Oh N, Shirvani PP, McCluskey EJ (2002) Error detection by duplicated instructions in super-scalar processors. IEEE Trans Reliab 51(1):63–75

    Article  Google Scholar 

  29. Pattabiraman K (2004) Automated derivation of application-aware error and attack detectors. Ph.D. thesis in University of Illinois at Urbana-Champain

  30. Rebaudengo M, Sonza Reorda M, Torchiano M, Iolante M (2001) A source-to-source compiler for generating dependable software. In: IEEE international workshop on source code analysis and manipulation, pp 33–42, November 2001

  31. Rebaudengo M, Sonza Reorda M, Torchiano M, Violante M (1999) Soft-error detection through software fault-tolerance techniques. In: IEEE international symposium on defect and fault tolerance in VLSI systems, pp 210–218

  32. Roberts MJ, Russo R (1999) A student’s guide to analysis of variance. Routledge Publication, Abingdon ISBN: 0-415-16564-2

    Google Scholar 

  33. Rotenberg E (1999) Exploiting large ineffectual instruction sequences, Technical report, North Carolina State University, November 1999

  34. Saggese GP, Vetteth A, Kalbarczyk Z, Iyer R (2005) Microprocessor sensitivity to failures: control vs. execution and combinational vs. sequential logic. In: International conference on dependable systems and networks (DSN), pp 760–769, July 2005

  35. Saggese GP, Wang NJ, Kalbarczyk ZT, Patel SJ, Iyer RK (2005) An experimental study of soft-errors in microprocessors. IEEE Micro 25(6):30–39

    Article  Google Scholar 

  36. Sahoo SK (2008) Using likely program invariants to detect hardware errors. In: IEEE international conference on dependable systems and networks (DSN), June 2008

  37. Sangchoolei B, Ayatolahi F, Barbosa R, Karlson J (2013) Benchmarking the hardware error sensitivity of machine instructions. In: IEEE workshop on slicon errors in logic-system effects (SELSE), March 2013

  38. Savino A, Carlo SD, Politano G, Benso A, Dnatale G (2012) Statistical reliability estimation of microprocessor-based systems. IEEE Trans Comput 61(11):1521–1534

    Article  MathSciNet  MATH  Google Scholar 

  39. Shivakumar P, Kistler M, Keckler S, Burger D, Alvisi L (2002) Modeling the effect of technology trends on soft-error rate of combinational logic. In: International conference on dependable systems and networks (DSN), June 2002

  40. Shuguang F, Shantanu G, Ansari A, Mahlke S (2010) Shoestring: probabilistic soft-error resilience on the cheap. In: 15th International conference on architectural support for programming languages and operating systems, March 2010

  41. Skarin D, Karlson J (2008) Software implemented detection and recovery of soft-errors in a brake-by-wire system. In: IEEE international European dependable computing conference (EDCC), May 2008

  42. Slegel TJ, Averill RM, Check MA, Giamei BC, Krumm BW, Krygowski CA, Li WH, Liptay JS, MacDougall JD, McPherson TJ, Navarro JA, Schwarz EM, Shum K, Webb CF (1999) IBM’s S/390 G5 microprocessor design. IEEE Micro 19(2):12–23

    Article  Google Scholar 

  43. Sridharan V, Kaeli DR (2010) Using PVF traces to accelerate AVF modeling. In: Proceedings of the IEEE workshop on silicon errors in logic-system effects, Stanford, California, March 2010

  44. Tang L, Huang Z (2016) A method for issue queue soft-error vulnerability mitigation. In: 7th IEEE/ACIS international conference on software engineering. Artificial intelligence, networking and parallel/distributed computing (SNPD), pp 443–450

  45. Thaker D, Franklin D, Oliver J, Biswas S, Lockhart D, Metodi T, Chong FT (2006) Characterization of error-tolerant applications when protecting control data. In: IEEE international symposium on workload characterization, October 2006

  46. Vijayan A, Koneru A, Ebrahimit M, Chakrabarty K, Tahoori MB (2016) Online soft-error vulnerability estimation for memory arrays. In: IEEE 34th VLSI test symposium (VTS), Las Vegas, pp 1–6

  47. Wang F, Agrawal VD (2009) Soft-error rates with inertial and logical masking. In: 22nd International conference on VLSI design, January 2009

  48. Wang N, Fertig M, Patel S (2003) Y-branches: when you come to a fork in the road, take it. In: International conference on parallel architectures and compilation techniques

  49. Xiong L, Tan Q, Xu J (2011) Soft-error mask analysis on program level. In: 10th International conference on network

  50. Xu X, Li M (2012) Understanding soft-error propagation using efficient vulnerability-driven fault injection. In: IEEE international conference on dependable systems and networks (DSN), June 2012

  51. Zhang M, Shanbhag N (2004) A soft-error rate analysis methodology. In: IEEE/ACM international conference on computer-aided design, November 2004

  52. Zhang B, Wang WS, Orshansky M (2006) FASER: fast analysis of soft-error susceptibility for cell-based designs. In: 7th International symposium on quality electronic design, March 2006

  53. Zheng B, Gao Y, Zhu Q, Gupta S (2015) Analysis and optimization of soft-error tolerance strategies for real-time systems. In: IEEE international conference on hardware/software codesign and system synthesis (CODES + ISSS), pp 55–64

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Bahman Arasteh.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Arasteh, B., Najafi, J. Programming guidelines for improving software resiliency against soft-errors without performance overhead. Computing 100, 971–1003 (2018). https://doi.org/10.1007/s00607-018-0592-y

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00607-018-0592-y

Keywords

Mathematics Subject Classification

Navigation