Though the Samsung Exynos 5 featured in the Galaxy S4 is technically an octa-core processor, Android kernel developer AndreiLux has reported that only four of its cores work at any given point in time. The developer attributes this to a remarkably poor implementation of the big.LITTLE driver, whereby the Linux kernel doesn’t differentiate between the various architecture based cores, and the following takes place:
- Cluster migration: When load rises, just like when a phone increases its frequency per DVFS, all the cores will jump from the LITTLE processor to the big one. You either have four A7 cores or four A15 cores online.
- Core migration: When load rises, it will only jump those cores from the LITTLE processor whose load exceeds the capacity of the A7 cores; you can have a single A15 online with three A7′s on, or any other combination of a total of four processors.
- HMP (Heterogeneous Multi-Processing): This is a vastly more complex working mechanism, and its implementation is also an order of more sophisticated magnitude. It requires the kernel scheduler to actually be aware of the differentiation between the A7 and A15 cores. Currently, the Linux kernel is not capable of doing this and treats all CPUs as equals. This is a problem since we do not want to use the A15 cores when a task can simply be processed on an A7 core with a much lower power cost.
Thankfully, this problem can be resolved by simply updating the kernel so the Exynos 5’s eight physical cores operate in tandem and allocate more demanding tasks to the chip’s more powerful cores. Doing so should result in significant performance gains and improvements to battery life which were not, coincidentally, Samsung’s stated reasons for using an octa-core processor in the first place.