  To improve power efficiency, researchers are experimenting with dynamically
adjusting the supply voltage of systems below the nominal operating points.
However, production systems are typically not allowed to function on voltage
settings that is below the reliable limit. Consequently, existing software
fault tolerance studies are based on fault models, which inject faults on
random fault locations using fault injection techniques. In this work we study
whether random fault injection is accurate to simulate the behavior of
undervolted SRAMs.
  Our study extends the Gem5 simulator to support fault injection on the caches
of the simulated system. The fault injection framework uses fault maps, which
describe the faulty bits of SRAMs, as inputs. To compare random fault injection
and hardware guided fault injection, we use two types of fault maps. The first
type of maps are created through undervolting real SRAMs and observing the
location of the erroneous bits, whereas the second type of maps are created by
corrupting random bits of the SRAMs. During our study we corrupt the L1-Dcache
of the simulated system and we monitor the behavior of the two types of fault
maps on the resiliency of six benchmarks. The difference among the resiliency
of a benchmark when tested with the different fault maps can be up to 24%.
