ARM is well known for many things, not only does it design extraordinary processors and microprocessors (hint: you probably have a chip based on one of its designs in your phone), but it is also the champion of low power consumption, and heterogeneous computing (with big.LITTLE). To further enhance the power efficiency of big.LITTLE processors, ARM has started to release patches for the Linux kernel (which is used by Android at its core) for a new piece of tech called Intelligent Power Allocation (IPA).
Keeping a SoC within a defined temperature range is essential for fanless designs (like your smartphone or tablet). The busier a processor gets, the more heat it generates. At the moment the Linux kernel has a simple thermal algorithm which basically throttles the processor when it gets too hot. However a modern ARM processor is a complex beast. It has high performance “big” cores (like the Cortex-A15 or the Cortex-A57), it has energy efficient “LITTLE” cores (like the Cortex-A7 or the Cortex-A53), and it has a GPU. These three different components can be controlled independently and by controlling them in unison a better power allocation scheme can be created.
ARM’s new thermal framework deals with the Soc as a whole, but understands that different parts of the SoC produce different amounts of heat. If the CPU part is generating too much heat then the processor can be forced to favor the LITTLE cores and hence reduce the power used. If the GPU is being used a lot, but the CPU is just ticking over, then there is room in the thermal budget to let the GPU run at full speed, since the CPU isn’t using all of its allocation. Likewise when the CPU is running hot, but the GPU isn’t being used much, then the CPU can be allowed to continue as the overall thermal budget hasn’t been exceeded. In other words the power control is dynamic and is updated in real time.
According to ARM's tests, IPA can increase the performance of a SoC by as much as 36%.
ARM is merging IPA into the mainstream Linux kernel.
To manage the processor in such a fine grained way requires a clever bit of technology, which ARM has dubbed IPA. It works by measuring the current temperature of the SoC and using it together with performance level requests from the big cores, the LITTLE cores, and the GPU (all known as “actors”) to dynamically allocate the performance levels for each of them. As part of the decision making process, IPA’s algorithms estimate the power consumption of each actor, if it were allowed to run at the requested performance level. It then trims those performance levels to keep the SoC within its thermal budget.
According to ARM’s test, IPA can increase the performance of a SoC by as much as 36%. The reason the performance increases is because the SoC is tuned dynamically and every bit of the thermal budget is used. This means that the CPU or the GPU is able to run at maximum speed whenever the thermal budget allows.
To see the effectiveness of IPA, ARM ran the TRex test of the popular GL benchmark using the traditional thermal framework and the new IPA framework. TRex was run three times consecutively on each framework to measure the performance as the SoC heated up. On the first run, when the SoC is relatively cold, IPA showed a 13% improvement over the current thermal management system. This is an impressive number, but the real effectiveness of IPA is seen in the next two runs. With the SoC running at close to its thermal limit the IPA algorithm is able to squeeze out the last drop of performance. Runs two and three show a 34% and 36% increase in overall performance when compared to the traditional thermal framework. IPA manages all this while keeping the SoC at the predefined temperature.
ARM is merging IPA into the mainstream Linux kernel. At the moment the code has been published so that other kernel coders can examine it and make comments. ARM’s partners also have access to the code and are free to implement it in their devices whenever they want. According to some posts over at XDA, the octa-core version of the Samsung Galaxy S5 is already using IPA.