Most low-power panels and presentations I've attended talk
only about hardware design techniques, like multiple supply voltages and power
shutoff. I was thus very interested in a discussion about power-aware software
that emerged at a panel at the March 25 EE Times "Designing with ARM" virtual conference.
It should be intuitively clear that if software doesn't take
advantage of nifty hardware power management features, those features won't be very
effective. For example, software needs to support power shutoff techniques by
entering power-down modes at the right times. Embedded software can also be
written in a power-efficient way - with limited memory accesses, for instance -
or it can be a power hog, with inefficiently used registers and poorly managed
I/Os. The least expensive pathway to system power optimization may actually be
through the software.
At the 2009 Embedded Systems Conference, I went around
talking to RTOS and software development companies asking one simple question
-why isn't anybody here talking about low-power design? (You can read
the answers here). At last week's panel Brian Carlson, OMAP platform
marketing manager at Texas Instruments, spoke of attending a session of mobile
OS providers at an ARM conference in 2008. "I was talking to these guys about how
they support low power, and a lot of them didn't have good answers," he said.
In the very first sentence uttered by a panelist at the ARM
conference panel, Carlson said that low-power design in the mobile world must
be "a holistic approach, all the way from the process to the SoC design and the
methodology, even to the software level." Speaking more specifically later, he
identified "energy-optimized software" as an area that has huge potential. "How
do you manage what frequency you're at, how do you balance your load?" he
asked, speaking of multicore designs. "These are huge issues, even at the
driver level. We have to look at how drivers can be more intelligent."
"We don't have compiler technology that is power aware,"
said Rick Zarr, PowerWise technologist at National Semiconductor. "When
software designers are designing blocks of code, they have no correlation to
the [hardware] knobs and dials we can turn. It's disjointed and disconnected."
Pete Hardee, solutions marketing director at Cadence, noted
that software developers in the mobile industry need to optimize their
algorithms so less data is moved from place to place. Lower-level software
should maximize cache efficiency. Moreover, he noted, software needs to have
"system mode" knowledge about how long each part of the chip is going to be
powered down. "All of that is in the software," he said.
Cary Chin, director of technical marketing at Synopsys, said
EDA vendors are considering power-aware software and are making progress. "We
have been focused on putting together a connection between the hardware and
software design worlds, so you can actually start to develop, as well as debug
and verify, software environments early," he said.
Hardee, however, noted that "if you're waiting until you've
got a prototype, it's too late." Virtual platforms make it possible to run a
lot of software and do some optimization, but they don't provide enough
accuracy for power estimation, he said. Design teams traditionally have to either
wait until they can get the accuracy, or make an early decision when they don't
have the accuracy. In the Cadence environment, he noted, many design teams are
using the Incisive
Palladium emulators to do software integration, and the Palladium Dynamic
Power Analysis option lets users run software and get accurate power
My conclusion from these discussions is that low-power
design is a hardware/software integration problem. It would be great to have a
power-aware compiler, but if software is written with no visibility into system
hardware, you won't have an optimized low-power system. Software and hardware
need to work hand-in-glove to enable cost-effective power management features.
Decisions about power management need to involve both hardware and software,
and should be made as early in the design process as possible.
To make all this possible, system design teams need to
develop software in a virtual or emulated hardware environment that is fast
enough for software developers, but also accurate enough to do some realistic
power estimation and optimization. As Carlson said, "I think there is a huge
opportunity for tools and a huge opportunity for developers to provide a
what-if analysis for power estimation."