Multinúcleo heterogéneo, ¿cómo lo hacen para mejorar la eficiencia del PC?

En los últimos tiempos, la computación heterogénea está en boca de todos los aficionados al hardware porque supone una firme promesa para mejorar la eficiencia de los PCs modernos. En este artículo vamos a hablaros de un término relacionado pero mucho más concreto, el multinúcleo heterogéneo, un paradigma que cada vez está siendo más utilizado por los fabricantes de CPU y que a buen seguro veremos muy a menudo en las generaciones de CPU venideras.

Hay que reconocer que el multinúcleo heterogéneo no es un concepto nuevo ni mucho menos, ya que en el mundo de los dispositivos móviles lleva presente ya bastante tiempo, y seguro que os sonará el nombre big.LITTLE de ARM o la arquitectura Intel Lakefield, que también la utiliza. En cualquier caso, en este artículo vamos a ahondar en el concepto para que puedas entender todos sus entresijos de la manera más sencilla que podamos.

¿Qué es el multinúcleo heterogéneo?

Intel 8700K die

Ya hemos hablado en otras ocasiones de esta disposición en el diseño interno de los procesadores, que consiste en que no todos los núcleos son iguales sino que hay diferentes clústeres (grupos, por resumirlo) de distintos núcleos, motivo por el que precisamente esto se llama multinúcleo heterogéneo. Para poner esto en perspectiva, imaginad por ejemplo un procesador Intel Core i7-8700K, que tiene seis núcleos físicos; en éste, los seis núcleos son exactamente iguales, funcionan en sintonía a la misma velocidad y realizan las tareas encomendadas equitativamente, repartiendo el trabajo entre todos.

La diferencia de un procesador «normal» como los que hemos estado utilizando en PC hasta ahora un una CPU con multinúcleo heterogéneo es que en éstos últimos no todos los núcleos son iguales, sino que tiene varios grupos de núcleos que pueden ser completamente diferentes en términos de tamaño físico (y con ello, en cuanto al número de transistores), velocidad de funcionamiento y multiplicador, pero también (como vamos a explicar en seguida) en cuanto al balanceo de carga.

Así, por ejemplo podéis ver en la imagen de abajo un procesador MediaTek Helio X20 que tiene un clúster de cuatro núcleos Cortex-53 ULP de muy bajo consumo , otro clúster de cuatro núcleos más potentes pero muy eficientes Cortex-A53 y finalmente un tercer clúster con dos núcleos Cortex-A72 de alto rendimiento.

Mediatek helio deca core

Este es un procesador multinúcleo heterogéneo, y se llama así literalmente porque tiene varios núcleos (multinúcleo) que son diferentes (heterogéneo) en lugar de ser la computación homogénea donde todos los núcleos son iguales. Como hemos dicho antes, cada uno de estos clústeres es distinto físicamente y también en términos empíricos de velocidad, multiplicador e incluso voltaje, pudiendo comportarse incluso como si fueran procesadores diferentes.

¿Por qué este diseño es más eficiente?

big.LITTLE Diagram

Un ejemplo de computación heterogénea la tenemos en la arquitectura big.LITTLE de ARM, donde se usan sistemas multinúcleo heterogéneos donde todos comparten la misma ISA, es decir, todos los núcleos pueden ejecutar el mismo conjunto de instrucciones y realizar cualquier tarea que se les encomiende. Esto significa que cuando el sistema está en reposo, el procesador puede desactivar los núcleos más potentes para ahorrar energía y así reducir el consumo y la temperatura, mejorando notablemente la eficiencia.

En el momento en el que se requiere mayor potencia de la CPU, ésta activa el siguiente clúster de núcleos para que el rendimiento obtenido sea el esperado, y en caso de necesidad, puede activar los núcleos de alto rendimiento para entregar su máximo potencial. Este sistema es muy eficiente porque en el momento en el que se necesita el procesador puede entregar toda su potencia, pero dado que cada clúster puede comportarse como un procesador independiente en sí mismo, es capaz de desactivar grupos de núcleos cuando éstos no son necesarios, ahorrando mucha energía.

Seguramente muchos de vosotros diréis que en un procesador con núcleos homogéneos también se podrían desactivar núcleos, pero el «secreto» de los procesadores heterogéneos es el contar con núcleos de bajo consumo, suficientes para tareas básicas que no requieran mucha potencia y que consumirían menos que los núcleos de propósito general que equipan los procesadores hasta ahora; dicho de otra manera, teniendo núcleos específicos de bajo consumo, se consigue una eficiencia mucho mejor.

Otra cosa que hace posible la computación heterogénea es que no todos los núcleos tienen por qué compartir la misma ISA (conjunto de instrucciones), de manera que podrían por ejemplo incorporar núcleos específicos para IA que solo entren en funcionamiento cuando se necesiten realizar tareas específicas, estando desactivados el resto del tiempo. Esto permitiría tener procesadores con un recuento de núcleos ingente como sucede en las tarjetas gráficas, y que cada tipo de núcleo (o clúster de ellos) se encargue de las operaciones específicas para las que ha sido diseñado, mejorando nuevamente la eficiencia con ello.

El multinúcleo heterogéneo no está exento de problemas

Pila CPUs

Existen dos «problemas» bastante concretos de los procesadores multinúcleo heterogéneo en una plataforma como el PC. El primero de ellos tiene que ver con el Overclock, ya que si cada clúster de núcleos funciona a una velocidad y con un multiplicador diferente no podremos realizar un overclock a todo el procesador como tal, sino simplemente a un grupo concreto de núcleos (clúster), si bien es cierto que Intel y AMD todavía no han desvelado los datos técnicos al respecto de esto. En cualquier caso parece lógico pensar que a lo sumo se podrá hacer overclock solo a ciertos clúster de núcleos y no a todos al no ser éstos homogéneos.

El segundo problema de las arquitecturas heterogéneas es el soporte de software, ya que al fin y al cabo el sistema operativo debe ser capaz de soportar este tipo de implementaciones para poder asignar la carga de trabajo a los núcleos correctos. En el caso de un kernel Linux existen módulos que se encargan de gestionar las frecuencias de reloj del procesador o activar y desactivar núcleos respectivamente, pero el problema de estos módulos es que funcionan de manera independiente y pueden generar conflictos entre ellos, reduciendo la eficiencia en algunos casos o reduciendo el rendimiento en otros.

Evidentemente, este tipo de arquitecturas están destinadas a popularizarse antes o después (recordemos Intel Lakefield y que AMD ya está también «jugando» con ello), así que teniendo en cuenta que el sistema operativo más utilizado es Microsoft Windows, tendremos que esperar a que Microsoft se «ponga las pilas» para adoptar este tipo de arquitectura y ver qué tal se comporta en última instancia.

¡Sé el primero en comentar!