VarEMU: An emulation testbed for variability-aware software
Lucas Wanner, Salma Elmalaki, Liangzhen Lai, Puneet Gupta, Mani B. Srivastava · 2015
Modern integrated circuits, fabricated in nanometer tech-nologies, suffer from significant power/performance varia-tion across-chip, chip-to-chip and over time due to aging and ambient fluctuations. Furthermore, several existing and emerging reliability loss mechanisms have caused increased transient, intermittent and permanent failure rates. While this variability has been typically addressed by process, de-vice and circuit designers, there has been a recent push towards sensing and adapting to variability in the various layers of software. Current hardware platforms, however, typically lack variability sensing capabilities. Even if sens-ing capabilities were available, evaluating variability-aware software techniques across a significant number of hardware samples would prove exceedingly costly and time consuming. We introduce VarEMU, an extension to the QEMU virtual machine monitor that serves as a framework for the evalua-tion of variability-aware software techniques. VarEMU pro-vides users with the means to emulate variations in power consumption and in fault characteristics and to sense and adapt to these variations in software. Through the use (and dynamic change) of parameters in a power model, users can create virtual machines that feature both static and dynamic variations in power consumption. Faults may be injected before or after, or completely replace the execution of any instruction. Power consumption and susceptibility to faults are also subject to dynamic change according to an aging model. A software stack for VarEMU features precise con-trol over faults and provides virtual energy monitors to the operating system and processes. This allows users to pre-cisely quantify and evaluate the effects of variations on in-dividual applications. We show how VarEMU tracks energy consumption according to variation-aware power and aging models and give examples of how it may be used to quantify how faults in instruction execution affect applications. 1.