Thought Leadership

Low power modes

Power management is a hot topic – or maybe that should read “a cool topic” – among embedded developers of late. In the course of a recent conversation on the subject, I realized that there are, in effect, three kinds of power saving procedure that embedded software might effect:

  1. Use dynamic voltage and frequency scaling [DVFS] to tune the CPU performance to the needs of the moment.
  2. Disable [power down] currently unused peripheral circuitry.
  3. Make use of the CPUs low power modes.

In the conversation, my interlocutor seemed to latch on to (3), which caused me to start thinking about how these modes should be used …

Superficially, it would seem obvious that, if the silicon vendor has provided a processor with low power modes and your design needs to be power efficient, you should make extensive use of them. Right? Well, maybe, but it all depends on the kind of application that you are developing.

Although many CPUs have multiple low-power modes, which have subtle nuances, there are broadly two possibilities [where the terminology is not standardized]:

  • Suspend – The entire system is powered down, except the memory, which is kept alive to retain the data/code. This mode reduces power consumption very substantially.
  • Hibernate – Everything is powered down, including the memory, the contents of which have been saved to flash memory. This mode cuts power consumption to almost zero.

Both of these modes can be very useful, but that usefulness comes at a cost. The nature and impact of that cost depends on the specific application, but it is manifest in two ways:

  • Responsiveness – It takes time to enter/exit these modes. Hibernate is the slower, but Suspend requires a finite time. This lag might affect the responsiveness of a device from a user’s perspective; this might motivate the user to take steps to avoid the device going into a power saving state and, thus, render much of the power management design redundant. For a hard real time application, a device being in Suspend may result in it being unable to respond to an external event in a timely fashion.
  • Power – Surprisingly, the use of these modes can result in more power being consumed! This can occur if the frequency with which the modes are used is too great. Some code is used to effect the entry/exit and that code execution uses energy. Utilizing these modes for short periods of time is a problem because the power saved while in the mode may not offset that used to enter/exit.

Embedded device power management is a big subject, which I have only scratched the surface of here. Broadly, the best way to approach low power design is to use an operating system, like Nucleus RTOS, that has a power management framework. This video explains how to manage a project requiring low power design. For more details on using an RTOS for power management, this Web seminar recording is interesting.

Colin Walls

I have over thirty years experience in the electronics industry, largely dedicated to embedded software. A frequent presenter at conferences and seminars and author of numerous technical articles and two books on embedded software, I am a member of the marketing team of the Mentor Graphics Embedded Systems Division, and am based in the UK. Away from work, I have a wide range of interests including photography and trying to point my two daughters in the right direction in life. Learn more about Colin, including his go-to karaoke song and the best parts of being British: http://go.mentor.com/3_acv

More from this author

Leave a Reply

This article first appeared on the Siemens Digital Industries Software blog at https://blogs.sw.siemens.com/embedded-software/2014/01/20/low-power-modes/