It must be recognized that the heterogeneous multicore is not a new concept, far from it, since in the world of mobile devices it has been around for quite some time, and surely the name will sound familiar. big.LITTLE ARM or Intel Lakefield architecture, which also uses it. In any case, in this article we are going to delve into the concept so that you can understand all its ins and outs in the simplest way that we can.
What is Heterogeneous Multicore?
We have already spoken on other occasions about this arrangement in the internal design of the processors, which consists in that not all the cores are the same but that there are different clusters (groups, to summarize it) of different cores, which is precisely why this is called heterogeneous multicore. To put this in perspective, imagine for example an Intel Core i7-8700K processor, which has six physical cores; in this, the six cores are exactly the same, they work in tune at the same speed and carry out the assigned tasks equally, dividing the work among all.
The difference from a “normal” processor like the ones we have been using in PCs until now, a CPU with a heterogeneous multicore, is that in the latter not all cores are the same, but it has several groups of cores that can be completely different in terms of physical size (and with it, in terms of the number of transistors), velocity operating and multiplier, but also (as we will explain next) in terms of load balancing.
Thus, for example, you can see in the image below a MediaTek Helio X20 processor that has a very low consumption quad-core Cortex-53 ULP cluster, another more powerful but very efficient quad-core Cortex-A53 cluster and finally a third cluster with two high-performance Cortex-A72 cores.
This is a heterogeneous multicore processor, and it is so called literally because it has multiple cores (multicore) that are different (heterogeneous) rather than being homogeneous computing where all cores are the same. As we have said before, each of these clusters is different physically and also in empirical terms of speed, multiplier and even voltage, and can even behave as if they were different processors.
Why is this design more efficient?
An example of heterogeneous computing is in ARM’s big.LITTLE architecture, where heterogeneous multicore systems are used where they all share the same ISA, that is, all cores can execute the same set of instructions and perform any task that is entrusted to them. . This means that when the system is idle, the processor can deactivate the most powerful cores to save energy and thus reduce consumption and temperature, significantly improving efficiency.
At the time when more power is required from the CPU, it activates the next cluster of cores so that the performance obtained is as expected, and if necessary, it can activate the high-performance cores to deliver their full potential. This system is very efficient because at the moment the processor is needed it can deliver all its power, but since each cluster can behave as an independent processor in itself, it is capable of disable core groups when these are not necessary, saving a lot of energy.
Surely many of you will say that in a processor with homogeneous cores, cores could also be deactivated, but the “secret” of heterogeneous processors is to have low-power cores, enough for basic tasks that do not require much power and that would consume less than the general-purpose cores that have been equipped with processors so far; In other words, having specific cores of low consumption, a much better efficiency is achieved.
Another thing that makes heterogeneous computing possible is that not all cores have to share the same ISA (instruction set), so they could, for example, incorporate specific cores for AI that only come into operation when they need to perform specific tasks, being deactivated the rest of the time. This would allow processors with a huge core count as happens in graphics cards, and that each type of core (or cluster of them) takes care of the specific operations for which it has been designed, again improving efficiency with it.
Heterogeneous multicore is not without its problems
There are two fairly specific “problems” with heterogeneous multicore processors on a platform like the PC. The first of them has to do with the Overclock, since if each cluster of cores works at a speed and with a different multiplier, we will not be able to overclock the entire processor as such, but simply a specific group of cores (cluster), although it is true that Intel and AMD still They have not disclosed the technical data regarding this. In any case, it seems logical to think that at most it will be possible to overclock only certain clusters of cores and not all of them as they are not homogeneous.
The second problem with heterogeneous architectures is the software support, since after all the operating system must be able to support this type of implementations in order to assign the workload to the correct cores. In the case of a Linux kernel There are modules that are responsible for managing the processor clock frequencies or activating and deactivating cores respectively, but the problem with these modules is that they work independently and can generate conflicts between them, reducing efficiency in some cases or reducing performance in others.
Obviously, this type of architecture is destined to become popular sooner or later (remember Intel Lakefield and that AMD is already “playing” with it), so considering that the most used operating system is Microsoft Windows, we will have to wait for Microsoft will “put the batteries” to adopt this type of architecture and see how it ultimately performs.