|
No embedded design is complete without a thorough analysis of power. This goes without saying for battery-operated devices, but it also holds true for wired systems. Power has thermal, volumetric, and financial impacts in all systems—wired or wireless.
In this article, we will consider different areas that impact power dissipation and show you how to save power. We will focus on the processor and its surrounding hardware ecosystem because these components usually consume a significant share of power. In addition to helping you save power, this knowledge will also aid in processor selection.
What is "low power?"
Before we go any further, a discussion of terminology is in order. "Energy" relates to the total amount of work performed, whereas "power" measures the rate at which the work is performed (energy per unit time). In electronics, energy = power × time and power = voltage × current.
System designers usually are concerned with both total energy dissipation and peak power dissipation. In other words, energy use is what drains a battery, but the battery needs to provide enough instantaneous power to meet peak demands. Our convention will be to focus on power dissipation, since this is prevalent terminology in the industry. However, we're really referring to both energy and power when we use the term "power."
So what does "low power" mean? In embedded systems, the term is relative. At the extreme low end of the power scale, we have applications that run from a watch battery. At the other extreme, we have line-powered systems that need to minimize power to avoid the cost of heat sinks, fans, regulators, and so on.
Many of today's designs—from automotive radios to instrumentation boards in a "card cage"—are built from specs handed to OEMs. These specs often describe a strict power budget allocation in order to ensure compliance across vendors. The point is that a system does not have to be battery-powered or mobile to care about lowering power consumption.
There are a number of ways to tune the power profile of a system to meet an application's requirements. They include:
- Dynamically changing frequency and voltage
- Understanding a processor's separate power domains
- Profiling code to optimize for power in a targeted fashion
- Using a processor's power modes
- Considering system-level contributions to power consumption
Below, we'll focus on the last two bullets. The source listed in the References section provides more detail on the other topics.
Power Modes
Many applications involve a set of operating modes that differ markedly with respect to their processing needs. Consider a battery-powered sensor that contains an embedded processor. One of the processor's peripherals might sample parameters of the surrounding environment. The processor might have nothing to do until the peripheral collects a certain amount of data. Therefore, the processor might be able to "sleep" during data collection. When the peripheral reads in enough data, the processor enters a fully-on mode where the processor is awake and running at maximum speed. The processor could also enter an ultra-low-power mode when no sensor data is expected and no processing is required.
To emerge from its various power-down modes, the processor receives some type of wakeup event. This could be triggered by an external stimulus, like a flag pin toggle, or by internal processor activities, like a DMA transfer completion or timer expiration.
Processors differ in the exact power modes they implement, but there are usually some commonalities among platforms. These typically include:
- A "full on" operating mode,
- A "sleep" or "standby" mode where on-chip memory stays powered for quick recovery, even as unused parts of the processor are deactivated for power savings, and
- A "hibernate" mode in which even on-chip memory may be unpowered for maximum power savings.
For convenience, we can separate low-power embedded systems into three different categories. The first category of low-power embedded systems consists of devices that are always powered on. In these systems, the power requirements are most likely in the sub-milliamp range, which directly limits achievable processing performance. Application examples include watches and some portable or implanted medical devices.
In the second category, the system is either on or in a standby mode. For these systems, both active and standby current consumption are important. The processor's active current may range from tens of milliamps to a few hundred milliamps, depending on the application. The standby current typically ranges from hundreds of microAmps to a few milliamps. Products in this category include mobile phones and voice-activated accessories.
In the third category, the system is either fully on or fully off. Examples of these systems include portable media players, GPS devices, and digital still cameras. For these applications, battery life is determined entirely by active-mode power consumption. The standby current is a "don't care" because no current is drawn when the device is off (except for a few microamps if a real-time clock is used). As in the second category, active current may range from tens of milliamps to a few hundred milliamps, depending on the application.
Standby mode
Standby modes include a variety of low-power modes that trade off current consumption for the recovery time to full on mode. That is, the lower the current, the longer it takes to return to full-on operation. In this article, we use the term "standby mode" to refer to all of these low-power modes collectively.
Why would we want to bring the processor in and out of a standby mode on a regular basis? Very simply, to reduce energy dissipation and extend battery life. In many standby modes, the processor can retain all of its internal states and memory contents because it still powered on, but at a greatly reduced current draw. Additionally, it can wake up in a fraction of a microsecond. This is much faster than a typical processor boot time from cold start.
|