¿Se han estancado el número de núcleos por CPU?

¿Se han estancado el número de núcleos por CPU?

Josep Roca

En el mercado nos encontramos con una gran cantidad de CPUs de todas las familias, tipos y tamaños, pero si hay algo en común desde el smartphone menos potente hasta el superordenador militar más avanzado es que nos encontramos en la era de las CPUs con múltiples núcleos. ¿Pero qué es lo que impide que los diseños tengan una mayor cantidad de núcleos? ¿Qué influye en dicho limite?

Han pasado ya más de 15 años desde el lanzamiento de las primeras CPUs para PC con múltiples núcleos y una pregunta que nos viene normalmente a la mente es: ¿hasta dónde se puede escalar una CPU en lo que a número de núcleos se refiere? A esta pregunta vamos a intentar responderos, seguid leyendo y entenderéis los motivos por los cuales los procesadores se diseñan con un límite de núcleos en mente.

¿Qué es lo que limita el número de núcleos en una CPU?

ConceptArt MultiCPU

La era de las CPUs con varios núcleos llegó cuando se rompió por completo el escalado de Dennard, una ley en el diseño de los microprocesadores que predecía el aumento de las velocidades de reloj y que se rompió por completo tan pronto como se llegó a los 6 nm, lo que forzó a los diseñadores de CPUs a tomar el camino de las configuraciones de varios núcleos en vez de tener un solo núcleo en solitario.

Así pues, ¿cuáles son los motivos por los que el número de núcleos de un procesador está limitado? Vamos a verlo.

Límites físicos a la inclusión de un mayor número de núcleos

Núcleos de un procesador en oblea

El primer limite obvio es el tamaño del chip y la cantidad de transistores que se pueden colocar en dicho espacio, que tienen relación directa con el nodo de fabricación que se utiliza, mientras que el segundo limite es el consumo energético que tenemos disponible para dicho procesador. Por otro lado, no todas las arquitecturas tienen la misma eficiencia energética por lo que dependiendo de cuál sea el propósito para el cual se ha construido una CPU nos podemos encontrar con algunas muy complejas con pocos núcleos o mucho más simples con gran cantidad de núcleos.

Dependiendo de cuál sea el uso que se le va a dar a la CPU tendrá más o menos sentido un número determinado de núcleos; por ejemplo, si vamos a montar un centro de datos local que va a ser utilizado por varios usuarios tiene sentido como mínimo asignar un núcleo por usuario o por sistema operativo virtualizado.

La comunicación también es un límite a los núcleos en una CPU

límite núcleos comunicación

Colocar un gran número de CPUs en un chip parece fácil, pero necesitamos que todos ellos se puedan comunicar entre sí y con los elementos exteriores al procesador.

En primer lugar, deberemos darles una caché de primer nivel a cada uno de los núcleos y luego una caché compartida de último nivel, podemos integrar cachés de niveles intermedios pero la de último nivel va a ser siempre importante para la comunicación de los diferentes núcleos sin tener que ir a consultar a memoria, por lo que si esta caché de último nivel no se encuentra presente se añadiría latencia adicional cuando un núcleo se tiene que comunicar con otro.

Pero una cantidad de núcleos mayor significa que todo el cableado e interfaces de comunicación también crecen exponencialmente y no solo entre los procesadores dentro del núcleo sino de estos con la caché de último nivel, con los periféricos e incluso con la memoria RAM.

A medida que la CPU va creciendo en núcleos nos encontramos que la infraestructura de comunicación de dentro del procesador crece ocupando espacio y también consume energéticamente.

Paralelización en el software y su relación con el límite de núcleos

Ley de Amdahl

No todos los procesos que se ejecutan en una CPU pueden hacerlo en paralelo, ya que todos tienen un límite acerca de cómo podemos subdividirlos en más tareas. En algunos casos concretos es imposible y nos podemos encontrar con partes de ciertos procesos que no se pueden paralelizar y por tanto hacer que funcionen con varios núcleos.

La paradoja es que a medida que vayamos aumentando la cantidad de núcleos nos encontraremos que las partes del código que pueden funcionar en paralelo y están optimizadas para funcionar con varios núcleos aumentarán su rendimiento y esa parte del código se resolverá en menos tiempo, pero la contrapartida es que la parte serial no aumenta su rendimiento con el número de núcleos sino que necesitamos núcleos más potentes, según la Ley de Amdahl.

Es por todo esto que el camino que habitualmente se hace es el de mejorar las arquitecturas o crear de nuevas con un mejor rendimiento en un solo núcleo, ya que no todos los procesos que se ejecutan en una CPU aumentan su rendimiento con un mayor número de núcleos. En algunos entornos en cambio el número de núcleos utilizado en el sistema está directamente relacionado con la forma en la que el software es paralelizable.

Aceleradores o procesadores de dominio especifico

limite núcleos Aceleradores

Un acelerador o procesador de dominio especifico es una pieza de hardware que realiza una tarea concreta, este tipo de procesadores se basan en tres premisas:

  • Ocupa una porción muy pequeña en comparación con el núcleo de una CPU u otro tipo de procesador complejo.
  • Realiza su trabajo con una porción minúscula de la energía en comparación a si lo hiciera una CPU u otro tipo de procesador complejo.
  • Puede trabajar en paralelo al procesador principal al que sirven como apoyo, liberando con ello parte del trabajo y el tiempo del procesador que están acelerando.

Lo normal es que por ejemplo si tenemos la tarea de descomprimir un archivo en formato ZIP o en decodificar una imagen en JPEG para mostrarla en pantalla que le asignemos estas tareas a un núcleo de la CPU, pero con la implementación de los aceleradores o procesadores de dominio específico esta necesidad de utilizar los núcleos de la CPU disminuye y con ello no son necesarias configuraciones con gran cantidad de núcleos, dado que estos aceleradores descargan del trabajo a la CPU de ciertas tareas específicas y repetitivas que realizan a diario.

Con todo esto tenéis enumerados los motivos por los cuales la cantidad de núcleos se ha «estancado», aunque obviamente dependerá del uso que haga el software de la CPU lo que hará evolucionar la cantidad de núcleos que tengan los procesadores en nuestros PC. No olvidéis que hemos pasado de configuraciones de 4 núcleos y en poco tiempo las de 8 núcleos serán completamente estándar, por lo que el límite de núcleos irá aumentando con el tiempo.

Todos estos son los motivos por los cuales los fabricantes de CPUs no añaden cantidades ingentes de núcleos en las actuales CPUs que hay en el mercado, lo que por otro lado significa que no es que haya un límite de núcleos en los procesadores, sino que hay motivos por los que su implementación va más despacio.