Mutant Components: Efficiently Managing Multiple Implementations - Reis, João Gabriel; Fröhlich, Antônio Augusto (Anais do Simpósio Brasileiro de Engenharia de Sistemas Computacionais (SBESC), 2016)
The development of embedded system applications is driven by the usage of models of computation and their interaction with the underlying programming language and the interfaces of system components. Behind each interface there is a series of software and hardware operations with different shapes according to the availability of implementations, hardware accelerators, or processor cores, and the environmental conditions faced by the embedded system such as the power consumption or even the chip's temperature. For example, when running out of battery, a mobile device can decide to reconfigure the implementation of critical components for one that consumes less energy by delivering a functionality with a lower quality-of-service without depleting the battery. To cope with such adaptive systems without breaking the interface each component provide to the application, we propose a framework for mutant components whose implementation can be reconfigured during runtime. The system synthesis delivers a tailored wrapper for each component according to the number of implementations it has. We evaluate our proposal by profiling the execution time of methods from three components (AES, ADPCM, and DTMF) with a hardware and a software implementation to evaluate the overhead incurred to the resulting architecture regarding its the execution time.