Los núcleos tipo performance-core y efficient-core pueden ser una buena solución para aportar rendimiento y eficiencia a las nuevas microarquitecturas, aunque no todo son ventajas en este tipo de arquitecturas de núcleos heterogéneos. Además, esto no solo implica al lado del hardware, también es imprescindible que el kernel del sistema operativo sepa cómo gestionar este tipo de núcleos para sacar el máximo provecho de ellos.
Aquí tienes todas las claves sobre este tipo de núcleos heterogéneos que se están apreciando en diseños como el Intel Alder Lake, o en muchos otros Arm Cortex para dispositivos móviles, así como su funcionamiento.
Índice de contenidos
Las CPUs x86-64, desde que se han implementado como multinúcleo, han venido siendo homogéneas. Sin embargo, en las GPUs o en los procesadores destinados para dispositivos móviles, como los Arm, sí que se lleva años empleando una topología de núcleos heterogéneos. Con la misma ISA, pero con diferencias notables en la microarquitectura, velocidad, etc. El setup de estos sistemas es similar al multiprocesador simétrico, aunque con algunas diferencias, como los roles de cada tipo de núcleo.
En las CPUs con núcleos heterogéneos suele haber 2 tipos de núcleos: los de alto rendimiento o P-cores (performance-core) y los eficientes energéticamente o E-core (efficient-core). Los primeros son de mayor tamaño por su complejidad, y mayor consumo, pero son capaces de rendir más. Los segundos son más simples, pequeños, y consumen menos, pero también rinden menos.
Algunas implementaciones conocidas de este tipo de arquitectura heterogénea son:
DynamIQ aportará mayor flexibilidad y escalabilidad que big.LITTLE. Por un lado se incrementan los núcleos máximos por cluster a 8, y hasta 32 clusters. Además, es importante destacar que también admite variedad de núcleos dentro de un mismo cluster. También está pensado para acelerar la L2 y tener un control más fino del voltaje de los núcleos. Los primeros en soportar esta tecnología son los Cortex-A55 y Cortex-A75.
El concepto es bastante bueno, sin embargo, para hacerlo funcionar de forma eficiente se necesita que el sistema operativo sea capaz de gestionar todos estos grupos de forma adecuada. Para ello, el kernel debe tener un planificador capaz de reconocer las cargas o procesos y determinar qué núcleos deben encargarse de ello, empleando los diferentes funciones que provee ACPI. Y lo cierto es que esto no es tan sencillo como puede parecer. Algunos sistemas operativos están teniendo problemas con ello.
En esta imagen, que no es más que un dieshot del Intel Alder Lake, se puede apreciar varias cosas interesantes. Por un lado he marcado con dos rectángulos negros los núcleos tipo performance-core de esta microarquitectura. Cuatro arriba y cuatro abajo, separados por la caché. También he marcado en un tono amarillento el espacio ocupado por un solo núcleo de alto rendimiento.
A la derecha, justo al lado de la zona de la GPU se pueden apreciar muy bien los otros 8 núcleos tipo efficient-core que he rodeado con un recuadro azul. Nuevamente cuatro arriba y cuatro abajo, separados por la zona de caché. En amarillo también está marcado el espacio ocupado por uno de estos E-core, que comparado con un P-core, se aprecia que es bastante más pequeño.
Ahora bien, hecha esta comparación visual, vamos a ver algo más sobre qué son estos núcleos empleando dos ejemplos:
En el caso de big.LITTLE de Arm, a pesar de cambiar la microarquitectura de los núcleos y la frecuencia de reloj, lo que no cambia aquí es las instrucciones que puede manejar cada uno, que son las mismas (ARMv8-A para este ejemplo).
A nivel de software, no se pueden usar todos los clusters de forma simultánea, actualmente sí que se permite. Según la carga de trabajo, el scheduler del kernel podrá elegir usar uno, varios o todos los núcleos. Además, se mejora aún más la eficiencia combinando esto con otras prácticas como escalado dinámico de voltaje y escalado dinámico de frecuencia (throttling), es decir, a través de los gobernadores del kernel se pueden seleccionar varios estados según las necesidades en cada momento o de la temperatura.
Intel Alder Lake ha optado por una solución algo diferente para sus unidades heterogéneas. Por un lado tiene los núcleos tipo performance-core o P-core, que soportan la ISA completa y todas las extensiones. Y por otro lado tenemos los núcleos E-core que no soportan todas las extensiones. Es decir, los P-core son EM64T + AVX-512 (entre otras extensiones) y los E-core son EM64T sin soporte para AVX-512.
Según para qué vaya destinado Alder Lake, puede tener varios tipos de configuración en sus módulos. Por ejemplo, para el escritorio se emplean 8 P-cores + 8 E-cores. Mientras que para portátiles se 6 P-cores + 8 E-cores. Y para equipos ultrabooks 2 P-cores y 6 E-cores.
AMD también parece apuntar a este tipo de arquitectura, pero llegará con Zen 5 (Ryzen 8000 Series), donde se emplearán núcleos tipo performance-core basados en Zen 5 y núcleos tipo efficient-core basados en Zen 4D (también denominado Zen 4 Dense).
En el sistema operativo Windows 10 y 11, Alder Lake cuenta con un buen soporte. El kernel Windows NT hace bien su trabajo, aunque en Windows 11 se ha mejorado respecto a la anterior versión del sistema operativo de Microsoft. Windows 10 se centra más en el poder de los núcleos, mientras que Windows 11 también se centra en la eficiencia. El planificador de Windows 11 sabe incluso cómo se va a comportar cada núcleo a una frecuencia determinada para una carga de trabajo establecida, así puede asignarlo al que mejor lo haga.
Todo eso es gracias al Thread Director implementado en el kernel Windows NT para Windows 11, un algoritmo capaz de identificar el IPC efectivo de un flujo de trabajo y aplicará métricas de rendimiento/eficiencia, moviendo el hilo hacia donde sea mejor. Para esto el algoritmo usa cuatro clases de cargas de trabajo:
Para cualquier cosa de Clase 3 se empleará preferentemente E-cores, mientras que Clase 0, 1 y 2 es para P-cores. Sin embargo, el sistema operativo no es rígido en este sentido, y podría forzar cualquier tipo de carga de trabajo a cualquier núcleo tipo performance-core o efficient-core según las necesidades del usuario.
Como suele ocurrir con todos las tecnologías, tiene sus ventajas y desventajas:
Te recomendamos la lectura de los mejores procesadores.
Con esto terminamos nuestro artículo sobre Performance-core y Efficient-core. ¿Os parece más interesante estos procesador de alta gama con esta tecnología o preferís los clásicos i3 e i5 que tan buen rendimiento están dando?
NVIDIA no solo da razones teóricas, sino fundamentos en forma de ofertas de todo GeForce…
Hace algunos meses salió una información que indicaba que las aceleradoras de IA Nvidia Blackwell…
Intel revela sus próximas aceleradoras Jaguar Shores, que van a llegar después del lanzamiento de…