High-performance embedded computing -- Dynamic voltage and frequency scaling

João Cardoso, José Gabriel Coutinho, and Pedro Diniz

February 19, 2018

João Cardoso, José Gabriel Coutinho, and Pedro DinizFebruary 19, 2018

Editor's Note: Interest in embedded systems for the Internet of Things often focuses on physical size and power consumption. Yet, the need for tiny systems by no means precludes expectations for greater functionality and higher performance. At the same time, developers need to respond to growing interest in more powerful edge systems able to mind large stables of connected systems while running resource-intensive algorithms for sensor fusion, feedback control, and even machine learning. In this environment and embedded design in general, it's important for developers to understand the nature of embedded systems architectures and methods for extracting their full performance potential. In their book, Embedded Computing for High Performance, the authors offer a detailed look at the hardware and software used to meet growing performance requirements.

Elsevier is offering this and other engineering books at a 30% discount. To use this discount, click here and use code ENGIN318 during checkout.

Adapted from Embedded Computing for High Performance, by João Cardoso, José Gabriel Coutinho, Pedro Diniz.


By João Cardoso, José Gabriel Coutinho, and Pedro Diniz

Dynamic voltage and frequency scaling (DVFS) is a technique that aims at reducing the dynamic power consumption by dynamically adjusting voltage and frequency of a CPU [33]. This technique exploits the fact that CPUs have discrete frequency and voltage settings as previously described. These frequency/voltage settings depend on the CPU and it is common to have ten or less clock frequencies available as operating points. Changing the CPU to a frequency-voltage pair (also known as a CPU frequency/voltage state) is accomplished by sequentially stepping up or down through each adjacent pair. It is not common to allow a processor to make transitions between any two nonadjacent frequency/voltage pairs.


Power dissipation can be monitored by measuring the current drawn from the power supply to the system or to each device. There are specific boards providing this kind of measurements but this scheme requires access to the power rails for the inclusion of a shunt resistor from the Vcc supplied and the device/system under measurement (note that P = Vcc x Icc). This is typically a problem and only useful in certain conditions or environments. Another possibility is to use pass-through power meters as the ones provided for USB interfaces.

Some computing systems provide built-in current sensors and the possibility to acquire from the software side the power dissipated. Examples of this are the support provided by the ODROID- XU3,a which includes four current/voltage sensors to measure the power dissipation of the ARM Cortex big.LITTLE A15 and A7 cores, GPU and DRAM individually, and the NVIDIA Management Library (NVML)b which allows to report the current power draw in some of their GPU cards.

By measuring the average current and knowing the voltage supply we can derive the average power dissipated and the energy consumed during a specific execution period.

A software power model based on hardware sensing is used in the Running Average Power Limit (RAPL)c driver provided for Intel microprocessors since the Sandy Bridge microarchitecture.d

The measurements are collected via a model-specific microprocessor register. Recent versions of platform-independent libraries such as the performance API (PAPI)e also include support for RAPL and NVML-based power and energy readings in addition to the runtime performance measurements based on hardware counters of the microprocessors. Monitoring power in mobile devices can be done by specific support such as the one provided by PowerTutorf in the context of Android-based mobile platforms. One important aspect of monitoring power dissipation is the power sampling rate (i.e., the maximum rate possible to measure power) which can be too low in some contexts/systems. Finally, other possibilities for measuring power and energy are the use of power/energy models for a certain platform and application and/or the use of simulators with capability to report estimations of the power dissipated.

bNVIDIA Management Library (NVML)—Reference manual, NVIDIA Corporation, March 2014, TRM-06719-001 vR331.
cIntel Corp. Intel 64 and IA-32 architectures software developer’s manual, vol. 3B: System Programming Guide, Part 2, September 2016.
dIntel Corp. Intel Xeon processor., 2012.
eWeaver VM, Terpstra D, McCraw H, Johnson M, Kasichayanula K, Ralph J, et al. PAPI 5: measuring power, energy, and the cloud. In: IEEE Int’l symposium on performance analysis of systems and software; April 2013.
fPowerTutor: A power monitor for android-based mobile platforms, powertutor/.

Continue reading on page two >>


< Previous
Page 1 of 2
Next >

Loading comments...