Fault injection‐based assessment of aspect‐oriented fault tolerance
Rapport, 2010
Aspect‐oriented programming provides an interesting approach for implementing software‐based fault tolerance as it allows the core functionality of a program and its fault tolerance features to be coded separately. This paper
presents a comprehensive fault injection study that estimates the fault coverage of several software implemented fault tolerance mechanisms designed to detect or mask transient hardware faults. We compare their fault
coverage for two target programs and for three implementation techniques: manual programming in C and two variants of aspect‐oriented programming. We also compare the impact of different compiler optimization levels on the
fault coverage. The software‐implemented fault tolerance mechanisms investigated are: i) triple time‐redundant execution with voting and forward recovery, ii) a novel dual signature control flow checking mechanism, and iii) a
novel combination of several mechanisms that are shown to achieve perfect fault detection coverage for some of our target programs. The faults injected were single bit‐flips in memory words and instructions set architecture registers holding live data. The study shows that the variations in fault coverage among the implementation techniques generally are small, while it varies significantly (from 88% to 100%) for the different fault tolerance mechanisms.
Time‐redundant Execution
Aspect Oriented Programming
Fault Injection
Control Flow Checking
Fault Tolerance