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.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.Notes
The terms “software” and “program” have been used interchangeably with the same meaning in this paper.
x is a data in the program source code.
The terms “benchmarks” and “benchmark-programs” have been used interchangeably and with the same meaning in this paper.
References
Ammann P, Mason G (2008) Introduction to software testing. Cambridge University Press, New York
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
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
Austin T, Larson E, Ernst D (2002) SimpleScalar: an infrastructure for computer system modeling. IEEE Comput 35(2):59–67
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
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
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
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
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
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
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
Evers M (2000) Improving branch prediction by understanding branch behaviour. Ph.D. thesis, University of Michgan
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
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
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
IEEE Standard Glossary of Software Engineering Terminology (1990) IEEE Std 610:12
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
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
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
Kleinberg J, Tardos E (2004) Algorithm design. Addison-Wesley, Boston ISBN: 0-321-29535-8
Li X (2009) Exploiting inherent program redundancy for fault tolerance. Ph.D. thesis in University of Maryland
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
Messer A (2004) Susceptibility of commodity systems and software to memory soft-errors. IEEE Trans Comput 53(12):1557–1568
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
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
Oh N, Mccluskey EJ (2002) Error detection by selective procedure call duplication for low energy consumption. IEEE Trans Reliab 51(4):392–402
Oh N, Shirvani PP, McCluskey EJ (2002) Error detection by duplicated instructions in super-scalar processors. IEEE Trans Reliab 51(1):63–75
Pattabiraman K (2004) Automated derivation of application-aware error and attack detectors. Ph.D. thesis in University of Illinois at Urbana-Champain
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
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
Roberts MJ, Russo R (1999) A student’s guide to analysis of variance. Routledge Publication, Abingdon ISBN: 0-415-16564-2
Rotenberg E (1999) Exploiting large ineffectual instruction sequences, Technical report, North Carolina State University, November 1999
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
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
Sahoo SK (2008) Using likely program invariants to detect hardware errors. In: IEEE international conference on dependable systems and networks (DSN), June 2008
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
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
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
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
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
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
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
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
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
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
Wang F, Agrawal VD (2009) Soft-error rates with inertial and logical masking. In: 22nd International conference on VLSI design, January 2009
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
Xiong L, Tan Q, Xu J (2011) Soft-error mask analysis on program level. In: 10th International conference on network
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
Zhang M, Shanbhag N (2004) A soft-error rate analysis methodology. In: IEEE/ACM international conference on computer-aided design, November 2004
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
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
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
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
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00607-018-0592-y