Using drowsy cores to lower power in multicore SoCs

Multicore processing has enabled higher and higher levels of processing capability, but with a price: higher levels of power consumption. Cascading power management is a technique that steers tasks to a smaller number of cores during non-peak activity periods so that the idle cores can enter a minimal-power or “drowsy” state.

When packet traffic increases again, the technique allows a rapid return to fully loaded conditions. Cascading power management is not simply a power-saving technique; it is also a workload management technique that distributes packet processing in a more efficient way.

Figure 1 below shows how packets are queued and distributed under the cascading power management technique. In a typical network system, the cores take data/packets in from a network, process them, then send them back out to the network.

A multicore SoC has multiple cores that are all doing the same thing, in parallel, but to different packets. The incoming traffic is kept in queues, then removed from the queues and distributed to the cores. When the cores are finished processing, they transmit the packets back to network interfaces.

The key concept behind cascading power management is how that work is distributed. In the non-cascading power management illustration, all the cores have some non-zero amount of traffic allocated to them.

They all need to be functional. Under a traffic load that can be dealt with by a smaller number of cores, all of the cores do not need to be involved in packet processing. Work is distributed to a smaller number of cores. This allows the idle cores to go into the drowsy power-saving mode and not wake up until they are needed.

Reduced Energy Consumption under Light Loads

Cascading power management provides the mechanisms to enable a drowsy core, reducing power per core. This technique works in a dynamic way that matches energy consumption to current workloads. Drowsy core provides a very large power savings and fast wakeup time.

If network traffic is slow, the cores are not burning a lot of power while they are not doing anything useful. If network traffic increases suddenly, the system can return to fully loaded conditions quickly. This technique could apply to any network system processes such as IP forwarding or firewall management.

How do you determine that traffic is light enough so that cores can go into this low-power mode? The approach we developed is very easy for software to use and can be implemented in any network system.

To monitor changing amounts of traffic on the network, for example during times of day when network traffic is light, it’s not ideal to have complex software monitoring or complex logic in the SoC performing this job. Ideally there would be a way to recognize relatively simply that traffic has dropped off.

Using drowsy cores to lower power in multicore SoCs

Figure 1. Cascading Power Management

We’ve have developed a self-balancing mechanism that can distribute the traffic under heavy and light workloads according to the diagram in Figure 1 above. When traffic is lighter, packets will be distributed using the cascading power management technique, as shown in the bottom half of Figure 1. As traffic becomes heavier, packets will be distributed more like top half of the diagram, in a more traditional manner.