Power Management for Embedded Systems
Embedded device power consumption is a major concern. There is always the need to improve battery life and/or minimise a system’s environmental effect. Previously, this was just a hardware problem, but those days are gone. Software is increasingly responsible for power management in contemporary embedded devices. This article examines how power management is accomplished while a device is in use, as well as the strategies used to reduce power consumption while the device is not in use.
While considering a device’s power consumption, there are two general scenarios to consider: when it is in use and when it is idle. In the first case, active power management is essential; in the second, the use of low-power CPU modes may be beneficial.
Software Power Management
During use, there are a couple of measures that software can take to keep power consumption to a minimum:
- Switch off peripherals when they are not in use.
- Adjust the frequency and voltage of the CPU according to the current performance requirements (this is “Dynamic Voltage and Frequency Scaling” – DVFS).
It should go without saying that the most efficient approach to save energy with any electrical or electronic equipment is to turn it off. As a result, it makes sense to design electrical systems in such a way that peripherals and subsystems may be turned on and off as needed by software.
This feature isn’t as straightforward as it seems, because some peripherals, such as network interfaces, need some time to configure after they’re turned on. If the peripheral is continually turned on and off, this latency may be intolerable. A peripheral may also continue to communicate (send or receive) data after the CPU (i.e. the software) has stopped addressing it; this is known as premature power.
Dynamic Voltage and Frequency Scaling
It is not immediately clear to a software engineer how CPU voltage and clock frequency impact power consumption. In general, the lower the frequency of operation, the less power is consumed. This may be thought of as the amount of “work” that a piece of software can perform. Consider the case where a CPU must execute 100,000 software instructions every second to complete a task. If the CPU were to run at a frequency that allowed it to execute a million instructions per second, it would be able to complete 10 times the amount of work necessary. As a result, decreasing the clock frequency by this amount [to accommodate 100K instructions per second] aligns performance with requirements while also reducing power consumption.
Low Power Modes
When a gadget is not in use, it can be completely turned off. Although certain devices may require some status information to be stored on power down, this requires nothing in the way of software support. The only issue is that a gadget that has been totally shut down may take some time to start up. Modern big programs can take several seconds to boot, even with a lightweight RTOS. Asleep mode is an alternative to turning off the computer.
Power Management Implementation
It is never a good idea to “reinvent the wheel” in any element of software development (or hardware for that matter). It’s pointless to write a problem solution or algorithm implementation if someone else has already done so. It is considerably more cost effective to reuse existing intellectual property. Because power management is well known, implementations are easy to come by.