How power–friendly is your software?

Rising consumer demand for power-efficient products has driven computer manufacturers to develop and build ever-sophisticated power-management technologies into their devices. In the case of PCs, several hardware and software components must function in harmony if significant power savings are to be realised. This article examines the often overlooked and significant role played by application software in reducing PC power usage.

It is difficult to open a newspaper or web browser these days without reading about the growing impact of power consumption on the environment and on our wallets. Whether the conversation is focused on greenhouse gas emissions, automobile energy efficiency, compact fluorescent light bulbs, or the rapid proliferation of consumer electronics devices, the worldwide trend is clear: power-friendly products are in demand and becoming the norm.

The impact of PC usage alone has a significant impact on our global energy footprint, especially when you consider that the number of PCs worldwide reached 1.4 billion in 2010 and is projected to increase to 2.3 billion by 2015. Despite the release of competing mobile device categories (e-readers, media tablets, and smartphones), it is predicted that the number of mobile PCs in the home will grow by an average of 23.1% between 2010 and 2015 . Hardware vendors continue to make tremendous strides in reducing the PC power footprint by incorporating power-saving technologies into key components such as CPUs, GPUs, displays, power supplies, hard disk drives, and so forth. However, in spite of all these significant gains in PC hardware power efficiency, when was the last time you heard anyone talk about the power-friendliness of their software?

Perhaps surprisingly, it turns out that application software design has an awful lot to do with the overall power usage of a modern PC. In the case of mobile PCs, lower power consumption also translates to longer battery life, which plays a huge role in creating a positive end-user experience. “Wait a minute”, you say. “Isn’t it the role of the operating system to manage power?” (by determining when to enter into a low-power standby state, for example). This is true, but the catch is that although the average PC spends most of its time in an idle (or low CPU utilisation) state, all it takes is one misbehaving application to defeat some of the latest system and CPU power management technologies.

In particular, applications that perform unnecessary activities such as event polling or graphics display animation when supposedly ‘idle’ can effectively defeat power-management technology designed to maximise the amount of time spent by the CPU in low power-states. As another example, a multi-media, VOIP, or anti-virus application may change the operating system timer tick resolution to a smaller value while active and ‘forget’ to reset the timer back to its larger default value when idle, resulting in unnecessary waking of the CPU from a low-power state. Ideally, a well-behaved idle application requires only a minimal power increase (if any) over the system idle baseline to ensure lowest possible power usage and, in the case of a mobile system, maximum battery life.

In addition to the behaviour of idle applications, active application workloads are also worthy of scrutiny from a power-efficiency standpoint. Using CPU instruction, set extensions such as Streaming SIMD Extensions (SSE) or Intel® Advanced Vector Extensions (Intel® AVX) can improve both performance and power efficiency for certain compute-intensive applications. Minimising the use of tight polling loops in favour of event-driven design can often have a positive effect on the application performance/power relationship. Efficient data handling is another approach to lowering the amount of energy required for a given task, such as pre-fetching and buffering data to and from storage devices to avoid frequent reads/writes, giving the device more time to idle. Finally, balanced threading of an application allows it to take advantage of multiple processor cores for faster execution and enables the system to spend more time in Idle.

Although the above examples are not an exhaustive summary by any means, these common software design techniques can make a significant difference in lowering system power usage and maximising battery life. With an installed base of over 2 billion PCs fast approaching, the ability of software to make a positive impact in reducing our energy footprint has never been greater. Throw in the fact that extended battery life is a ‘must-have’ feature for most mobile device users and it becomes clear that ‘green’ software is not only better for our planet- it’s good business!

ISVs who develop software on Intel technology can get development support from The Intel Software Partner Program (ISPP). Members of ISPP can access great tools and resources, e.g. Software Assessment Tools (SATs), to shorten the development time for their applications. Please visit here for more details.

Software Systems Architecture, Second Edition is a highly regarded, practitioner-oriented guide to designing and implementing effective architectures for information systems. It is both a readily accessible introduction to software architecture and a...