Hello my friends! 🙂
In the previous post I introduced a little the idea about low power techniques in multicore systems based in ARM architecture but, what are those techniques? Well, we can divide them in two groups, those techniques from general Linux power management (and working in actual embedded devices) and those developed and implemented for recent multicore embedded devices.
As Linux Power Management techniques the most relevant are:
- Suspend and Resume
- Runtime Power Management
- CPU Idle
- Dynamic Frequency and Voltage Scaling
- Power Management QoS
Most of them, are really good for classical embedded devices, where there’s only one processor or core, but what would happen with those techniques with multicore embedded devices like Pandaboard and its OMAP4 chip?
The OMAP4 chip is based in two ARM Cortex A9 Processors, so it can balance the use of both CPU to achieve the best performance / power saving ratio:
As you can imagine, power management using two cores in embedded devices is very different from the usual power management on laptops or pcs: here you usually have a big constraint to your product, battery life.
So some months ago, there was an important development activity looking for differents power management techniques for multicore ARM systems, and most of them were developed and supported by Linaro Power Management Group, who is doing such a great job trying to simplify one of the most common problems for all kind of embedded devices.
The most interesting power management techniques developed for multicore systems are:
I’d based my studies in CPUHotplug, a cool technique that gives you the possibility of switching of one of the cores of the processor by a simple echo command from the terminal like this
$ echo 1 > /sys/devices/system/cpu/cpu1/online
The most important advantages of this techniques are the lower consumption obtained using only one of the cores, and an easier condition to enter in processors low power modes. Of course there are some performance issue, but we are looking for a good low power environments and techniques, so we would look to performance effects later on.
In the next post, we’ll see the testing environment and several tests done with the pandaboard using CPU Hotplug, so stay tuned 😉