Runtime Configuration of Hardware Platform for Dynamic Applications
MetadataShow full item record
The use of embedded systems is increasing fast, and the applications running on them are becoming more dynamic. The energy consumption is one of the main constraints in today's embedded systems. Traditionally, embedded platforms are optimized to account for the worst case situation, resulting in a low resource utilization and high energy consumption. By using runtime configurations, embedded systems can exploit the dynamic behavior of applications and adapt to the changing resource utilization, to improve energy efficiency. In this thesis we investigate the use of two energy-saving runtime configurations, dynamic voltage and frequency scaling (DVFS), and copying program code from flash memory to static random access memory (SRAM) for more energy efficient code execution. The use of these runtime configurations are investigated on a low-power hardware platform from Nordic Semiconductor, the nRF52. The nRF52 can execute code from flash memory, which can use an instruction cache, and from SRAM. The goal is to find out if and how the runtime configurations can be used efficiently on nRF52 to improve energy efficiency. To investigate the use of DVFS, the available voltage and clock frequency ranges on nRF52 are identified. Internal test modes, allowing a variable power supply and a variable clock, are used to identify the available ranges. The voltage and frequency ranges are used to test the efficiency of using DVFS on the nRF52. The investigations show that these ranges are limited by the voltage regulator and clock control circuitry, and the available voltage range is 0.9 V-1.2 V, and clock frequency range is 24 MHz-38 MHz. When using DVFS on nRF52, there are trade-offs to be made between frequency levels. However, the optimal voltage level is always 0.9 V. Consequently, using DVFS on the nRF52 is not effective. To investigate copying code from flash memory to SRAM at runtime, for more energy efficient code execution, we measure the energy consumption of executing specific parts of code from the different memories on the nRF52. We also measure the energy consumption of moving code. These energy consumptions are measured separately due to the limitation of only copying executable code to SRAM at boot-time. Using this runtime configuration, reduced the energy consumption of the test application by 8.0\%. For this to be more effective, the specific parts of code to copy has to be chosen wisely. The results showed that low cache efficiency, and long execution time compared to size, are good indications that specific parts of code will execute more energy efficient, when using this runtime configuration.