Guía Hardware

¿Cuántos más núcleos tenga un procesador es mejor?

Actualizado a: 22 de enero de 2024

Una idea que está muy implantada en la actualidad es que si unos cuantos núcleos son buenos, tener más núcleos es aún mejor. Esto se puede extrapolar tanto a la CPU, en cuanto a núcleos del procesador como también en el lado de la GPU, donde también tenemos núcleos de procesamiento gráfico en mayor o menor media. Incluso se podría hablar igual de otros tipos de procesadores o aceleradores, como pueden ser las NPU, DSP, etc.

Multinúcleo: un poco de historia

Los procesadores a lo largo de la historia han sido single-core, es decir, con un único núcleo. Sin embargo, conforme se necesitaba más potencia de procesamiento y mayor paralelismo, seguir avanzando simplemente mejorando la microarquitectura fue todo un reto. Cada vez era más difícil dar pasos adelante.

Por este motivo, algunos diseñadores empezaron a pensar en duplicar unidades, algo que no era extraño, ya que se venía haciendo en las unidades superescalares donde se multiplicaban las unidades de ejecución. Pero algunos comenzaron a pensar en algo más complejo, duplicando algo más que simplemente algunas unidades.

La idea tras de esto es muy elemental, es decir, en vez de tener un «cerebro» tener dos, en vez de usar una mano para hacer cosas, usar dos manos. Siempre más se supone que es mejor, aunque en esto entraremos más adelante.

El primer microprocesador multinúcleo, aunque no muchos lo saben, es el IBM POWER4. Esta arquitectura que apareció en 2001, usado en estaciones de trabajo, servidores y HPC en general. Más tarde llegaría otro diseño, el PA-8800 diseñado por HP también par el mismo sector de alto rendimiento. Esta CPU denominada Mako era dual-core también, y aparecería en 2004. Este chip era básicamente un PA-8700+ modificado para unir dos núcleos en un solo chip.

En el terreno del PC, tanto Intel como AMD no lanzarían sus primeros procesadores de varios núcleos hasta 2005. Fue el Intel Pentium D y el AMD Athlon64 X2, que implementaban un doble núcleo. Estos son los que muchos consideran los primeros dual-core, pero no es cierto.

A partir de aquí, los procesadores multinúcleo fueron más y más populares, extendiéndose por otras muchas CPUs de diferentes arquitecturas.

Una historia curiosa con Apple de por medio

Me gustaría hacer una pausa para introducir otra historia relacionada que considero también muy interesante. Y es que a mediados de 2000, la compañía Sony Computer Entertainment, Toshiba Corporation y la IBM, forman una alianza denominada STI para diseñar y fabricar un procesador.

El proyecto de STI se basó en una versión mejorada del POWER4 del que he hablado antes, el primer procesador multi-núcleo. Unos 400 ingenieros se implicaron en este proyecto, provinientes de las tres compañías, en el laboratorio de Austin.

Tras cuatro años de trabajo, se anuncia el resultado, el Cell. Uno de los primeros diseños en ver la luz fue el Cell Broadband Engine, que fue una versión temprana con cuatro elementos de procesamiento en el mismo núcleo. Estos elementos se denominaron PPE (Power Processing Element), y cada uno de estos PPE contiene 8 SPEs, es decir, Synergistic Processing Elements. El resultado era un chip con 4 Ghz y 32 SPEs en total que eran capaces de desarrollar 32 GFLOPS en FP8. El Cell Broadband Engine o Cell BE fue fabricado con tecnología de 90nm SOI de IBM, aunque en 2007 se anunciaría una versión de 65nm fabricado en GlobalFoundries, las ex-fábricas de AMD.

Este procesador fue usado en algunas tarjetas de red de altas prestaciones, además de para la videoconsola Sony PlayStation 3 en el caso de las unidades que tenían algunos de esos núcleos capados, mientras los chips íntegros para aplicaciones militares y de HPC.

Y, por aquella época, en la que existía otra alianza denominada AIM (Apple IBM Motorola), para proveer a los Mac de Apple, con CPUs PowerPC. Sin embargo, IBM estaba centrado en los diseños single-core, y el único intento de multinúcleo había sido el Cell, donde esos elementos no eran núcleos como tal, sino simplemente una especie de co-procesadores matemáticos que ayudaban en los cálculos a un núcleo único PowerPC. Eso era básicamente el Cell.

En 2008 también hubo una versión de alto rendimiento con unidades de coma flotante de doble precisión de IBM denominada PowerXCell 8i.

Esto no gustó a Apple, que veía que los diseños de AMD e Intel sí que tenían núcleos enteros, es decir, réplicas exactas y enteras. Algo que haría a Apple tomar la decisión de dejar esta arquitectura para pasar a los chips Intel, aunque luego la historia terminó como terminó…

¿Cuántos más núcleos tenga un procesador es mejor?

CPU Cores

Con la llegada de las unidades con varios núcleos, mientras más se avanzaba, más núcleos se fueron integrando para ganar rendimiento, con los Dual-Core, Quad-Core, Six-Core, Octa-Core, etc. Pero no siempre más y más núcleos es mejor. Por ejemplo, para algún software que no está optimizado para aprovechar todos los núcleos servirá de poco que una unidad tenga tantos núcleos, como puede ser el caso de los videojuegos, que más allá de los 4 núcleos no suele haber ganancias tan grandes, y es preferible una CPU con mayor rendimiento single-core.

Por otro lado, tenemos que para otras cargas de trabajo donde el paralelismo sea más importante, y donde se pueda aprovechar mejor todos los núcleos, más suele ser mejor. Por ejemplo, la lista Top500 con las computadoras más potentes del mundo, parece que está desmintiendo que más y más núcleos no siempre es mejor, ya que podemos ver máquinas como la Leonardo, que ocupa el puesto número 4 a nivel mundial de rendimiento, y que está basada en Intel Xeon Platinum 8358 con hasta 1463616 núcleos de procesamiento, mientras que el que está en un quinto puesto, el Summit, usa IBM POWER9 con 2414592 núcleos.

Además, si se sabe algo de HPC, o de lo que los clientes piden a los proveedores de supercomputadores, lo cierto es que no muchos buscan máquinas con más núcleos. Las necesidades suelen ser otras, como un mayor ancho de banda, E/S más poderoso, y frecuencias de reloj más rápidas. Aunque hay algunas excepciones donde es mejor tener más núcleos, como para los VPS (Virtual Private Server), donde más núcleos físicos puede terminar usándose como una vCPU durante la virtualización de las máquinas virtuales.

Existen algunos casos donde más núcleos no siempre es mejor, ya que implica también pagar más por las licencias, ya que implicará pagar más por las licencias de ciertos software, como las bases de datos, soporte técnico de sistemas operativos como RHEL o SLES, que pagas en función de los núcleos, etc.

Evidentemente, los diseñadores de de CPUs cada vez crean diseños con mayor cantidad de núcleos para ir ganando rendimiento, esto es lógico. Pero también es verdad que cada vez se busca más la forma de procesar de forma más eficiente los datos con la computación heterogénea, como pueden ser usando aceleradores como las GPGPUs, DSAs, etc.

Núcleos vs ancho de banda

modulos memoria ram

El ancho de banda de la memoria es una gran preocupación. Esto es así tanto en la computación personal como también en el ámbito del HPC. Por supuesto, en la computación de alto rendimiento es aún más vital.

Ten en cuenta que las cargas de trabajo de HPC, como pueden ser los cálculos matemáticos, la dinámica de fluidos o CFD, etc., suelen ser muy sensibles al ancho de banda, ya que se hace uso de instrucciones SIMD en las que necesitan múltiples datos por cada instrucción, lo que satura el ancho de banda de la memoria RAM. Esto hace que el ancho que conecta la RAM y la CPU pueda marcar una gran diferencia. Por otro lado, las cargas de trabajo actuales, como las de inteligencia artificial, machine learning, etc., necesitan también de un enorme ancho de banda, ya que también manejan muchos datos FP o de coma flotante.

En el caso de la GPU usada como GPGPU será el ancho de banda entre la VRAM GDDR o la HBM de la tarjeta gráfica es la que actuará como limitante.

Los clientes de máquinas HPC están muy preocupados por el ancho de banda de la memoria principal, que es la que realmente abastece de datos e instrucciones a los núcleos de la CPU. Pero, aunque parezca contradictorio, más núcleos pueden empeorar le rendimiento en algunos casos, ya que el ancho de banda que enlaza la CPU y la memoria RAM se repartirá entre mayor cantidad de núcleos.

Con la llegada de la nueva generación de RAM, como la DDR5, ha supuesto un pequeño salto de rendimiento en el aspecto del ancho de banda también. Esto se ha hecho especialmente importante en el HPC, ya que se gana en torno al 50% de ancho de banda en comparación con la DDR4. Por supuesto, los QuadChannel o los Octa-Channel también son muy codiciados en el HPC, aunque no tendrían mucho sentido en un PC, ya que don Dual-Channel suele ser suficiente.

Dicho de otro modo, para comprenderlo, puedes tener Y núcleos de CPU que se reparten un ancho de banda X, teniendo que cada núcleo tiene X/Y parte del ancho de banda. Mientras mayor es Y, menor será la proporción de ancho de banda que tendrá cada núcleo. Y esto puede incluso ser contraproducente en algunos casos.

HBM al rescate

Para seguir aumentando el paralelismo y rendimiento en el sector HPC, se ha optado por usar memoria HBM, es decir, una memoria aleatoria de alto ancho de banda para poder seguir alimentando a los núcleos que van en aumento. Es el caso de los Intel Xeon Max «Sapphire Rapids», con chips de memoria HBM2E alrededor de la CPU, para conseguir alimentar todos los núcleos con una buena proporción de ancho y que no se estrangule o actúe como un cuello de botella.

En cambio, el movimiento hacia esta HBM dependerá del ISV y del firmware de la plataforma, que deberá modificarse para soportar que todo esto funcione. Es decir, hay que implementar la forma de aprovechar esta memoria mediante los Independent Software Vendor. Esto implica modificar el software que se empleará para estas máquinas. Y lo ideal, sería mejorar el ancho de banda entre la RAM principal y la CPU con algunas tecnologías que están en desarrollo:

Sin embargo, por el momento, dada la naturaleza actual de la memoria RAM DDR, esto no es posible, por lo que se intentan buscar mejoras que puedan resultar intermedias entre la actual memoria RAM y la CPU, como es el caso de la HBM, entre otras.

Balance de carga

hosting

Cuando se habla del balance de carga en HPC o servidores, se refiere a la forma en la que se reparten los procesos entre los distintos sockets o procesadores presentes en la máquina. Entendiendo todo esto que he comentado anteriormente, también se entiende que ya puedes tener muchas unidades de procesamiento en la máquina, si el sistema operativo a través del scheduler o planificador va cargando los procesos en la memoria RAM para que sean accedidos por la CPU, si el ancho de banda no es suficiente, habrá problemas de rendimiento.

Nuevas formas de memoria

FRAM FeRam

Mientras algunos como Fujitsu A64FX, Ampere, Anapurna, Intel Xeon Max, etc., están empleando diseños con HBM alrededor del chip de procesamiento. Lo mismo ocurre con algunas tarjetas gráficas destinadas al HPC, que también usan HBM alrededor de la GPU para mejorar el ancho de banda. Otros han optado por aumentar la cantidad de SRAM o memoria caché como es el caso de los AMD EPYC X Series que emplean 3D V-Cache para ampliar la L3. También hemos visto unidades de Intel que han empleado caché L4 fuera del chip, con memoria tipo eDRAM.

Es decir, vemos muchas variantes que se están usando para tratar de paliar el problema del ancho de banda limitado entre la memoria RAM y la CPU. Desde el uso de HBM, que tiene como limitante la necesidad de modificar el software y sus limitaciones en capacidad, como las tecnologías de empaquetado 3D usando TSV para interconectar varios chips apilados como es el caso de la 3D V-Cache, pasando por el uso de una memoria eDRAM. En estos dos últimos casos, sin necesidad de modificar el software, tan solo el kernel del sistema operativo para poder aprovechar esta caché. Pero todas ellas con el mismo objetivo, mejorar el ancho de banda y mejorar la latencia.

Cuál será la tecnología que se impone, esto está aún por ver, pero desde luego que si se mejorase el rendimiento de la RAM para que no haya tanto gap con la CPU, podría dejar a un lado todas estas tecnologías intermedias.

Frecuencia de reloj vs núcleos

CPU

Como ya insinué anteriormente, a veces, para algunas cargas de trabajo, como pueden ser los videojuegos y otras apps que no aprovechan bien el multinúcleo, es mejor mejorar el rendimiento single-core, como puede ser un amento de la frecuencia de reloj (OC), u optar por la microarquitectura que más puntos saque en los benchmarks single-core.

Por otro lado, ten en cuenta que con la llegada de los múltiples núcleos también llegó otro problema denominado dark silicon, es decir, que con tantos transistores en un mismo chip, esto hace que no todas las partes o núcleos del chip puedan trabajar siempre y mucho menos hacerlo de forma constante a la máxima frecuencia. Es decir, se necesita gestionar el consumo y la temperatura para evitar generar otros problemas.

Ahora ves cosas como el DVFS donde la frecuencia y el voltaje se controlan de forma dinámica, según la carga de trabajo y las condiciones de temperatura y consumo. Esto también implica las técnicas como los modos Turbo, que solo permiten alcanzar una frecuencia máxima en algunos núcleos o solo por un momento puntual.

Con los empaquetados 3D, donde se apilan varios chips interconectados entre sí de forma vertical, el problema de la temperatura y el consumo aumenta aún más, por lo que los problemas de los chips monolíticos crece en este caso. Por este motivo, se necesita gestionar aún mejor estos parámetros. Por tanto, los problemas en el futuro van a ir en crecimiento.

Con esto quiero decir que seguir aumentando la frecuencia de reloj más y más supone cada vez un reto mayor. En el pasado se hacían predicciones en las que hace décadas ya se deberían haber alcanzado los 10 Ghz, y esto no ha sucedido, ya que estamos ahora sobre los 4 o 5 Ghz. Es posible que para el próximo año se pueda alcanzar 6 Ghz, pero no vamos a ver incrementos tan rápidamente como en el pasado.

¿Y la APU?

APU
Vista del empaquetado

Actualmente, también están apareciendo algunas soluciones que no tienen tanto en cuenta las soluciones aplicadas a memoria sino a mejorar la eficiencia de las transferencias de datos y de las unidades de procesamiento. Es el caso de tarjetas que están apareciendo en el mercado como es el caso de la AMD Instinct MI300 que es un híbrido entre CPU y GPU (APU), y no una tarjeta gráfica pura.

Esta tarjeta usa núcleos de CPU Zen 4, concretamente 24 de ellos basados en un proceso de fabricación de 5nm. Y por otro lado tenemos núcleos de GPU basados en la arquitectura RDNA 3, además de chips HBM3 de 128 GB de capacidad y un ancho de bus de 8192-bit para alimentar estos chips.

Sin embargo, esta tarjeta no sustituye a la CPU principal, que puede combinarse con un AMD EPYC a la perfección. Pero sí que permite acelerar muchas cargas de trabajo, especialmente de IA, en hasta x8, y x5 en cuanto a eficiencia energética, sin necesidad de modificar demasiado el software, más allá de lo que ya se hace para los aceleradores o GPGPU.

Intel ha seguido los mismos pasos con sus Falcon Shores. Estas unidades también usarán un híbrido entre CPU y GPU, concretamente usando núcleos x86 y núcleos gráficos Xe, que son el corazón de la Ponte Vecchio para sus futuras tarjetas Rialto Bridge. Por supuesto, en este producto se incluirá también HBM3. En este caso, Intel no lo denomina APU, sino XPU.

En el caso de NVIDIA, está haciendo algo similar a AMD, con sus Grace-Hopper. En estas tarjetas aceleradores de propósito general se emplea una matriz de CPUs Grace basados en ARM, y una matriz de núcleos GPU Hopper. La primera matriz con 512 GB de memoria LPDDR5X integrada y la segunda con 80 GB de HBM, ambos interconectados por un bus NVLink.

A pesar de las ventajas, estas unidades híbridas también pueden tener sus desafíos que solucionar, y no todo es perfecto. Pero es lo mejor que se puede hacer con la tecnología actual para el alto rendimiento. Además, podríamos ver unidades de este tipo que alcancen TDPs de hasta 1 KW, es decir, 1000W, que es una auténtica barbaridad tanto para alimentarlas como para disipar toda esa temperatura.

Por otro lado está el tema del software, que también tendría que estar compilado para aprovechar este hardware. No implica tantos cambios como otras soluciones, pero sí que hay que crear un ecosistema de software.

En definitiva, el futuro de la computación de alto rendimiento es muy incierto, y vamos a ver muchas soluciones, todas ellas con sus ventajas y desventajas. Así que, veremos qué será lo que nos depara en un futuro próximo… Pero, mientras el ancho de banda entre la memoria RAM y la CPU no memore, así como la velocidad de la RAM crezca al mismo ritmo de la CPU, habrá que tratar de buscar soluciones. Y no se espera que la velocidad de las celdas de memoria mejoren tan rápidamente a no ser que se encuentre una tecnología semiconductora que sea la gallina de los huevos de oro…

Jaime Herrera

Jaime Herrera

Técnico electrónico y experto en el sector de los semiconductores y el hardware. Con una amplia y sólida trayectoria en el campo de la electrónica, he acumulado una extensa experiencia. Mi pasión por la tecnología y la informática me ha impulsado a dedicar décadas de mi vida al estudio y desarrollo de soluciones en este fascinante sector. Como técnico electrónico, he tenido el privilegio de trabajar en una variedad de proyectos y desafíos, lo que me ha permitido adquirir un profundo conocimiento y experiencia en la creación, diseño y mantenimiento de dispositivos electrónicos.

>
Guía Hardware
Logo