Después de la guerra del número de núcleos en los procesadores, ¿vendrá la guerra de la computación heterogénea o manycores?

Escrito por picodotdev el , actualizado el .
hardware opnion planeta-codigo
Comentarios

Intel
AMD

Hace alguna década los procesadores eran de un solo núcleo y hasta la aparición de Windows NT y GNU/Linux los sistemas operativos no se aprovechaban plenamente las capacidades de multiprogramación de los procesadores que ya se incluían desde los Intel 386.

La mejora de rendimiento en los procesadores se conseguía a base de mejores diseños en los procesadores como la segmentación, superescalaridad, caches de datos e caches de instrucciones más grandes que era posible debido también en parte al mayor número de transistores que permitían incluir los procesos de litografía de tamaño más reducidos para los transistores, también por la adición de nuevas instrucciones en el conjunto de la arquitectura o ISA, o mayor número de registros y de mayor tamaño entre otras cosas.

Un menor tamaño de los transistores permite menor consumo de energía con menor calor a disipar al mismo tiempo que alcanzar mayores velocidades de funcionamiento para el procesador. Desde unas decenas de Khz, luego decenas Mhz, más tarde varios cientos de Mhz hasta alcanzar el hito del 1 Ghz en el año 2000, cada uno se atribuye ser el primero en alcanzarlo por pate de Intel con el Pentium III y por AMD con una de sus buenas épocas con los Athlon, o hasta el punto actual límite de entre 2 y 4 Ghz.

Aumentar más la velocidad de funcionamiento en herzios de los procesadores en los niveles actuales provoca que el calor disipado aumente drásticamente y reducir el tamaño de los transistores está empezando a ser costoso (como le está costando ya a Intel pasar de los 14nm a los 10nm, 5 años ya empleando en diferentes generaciones los mismos 14nm) y dentro de no tanto se alcanzará el límite atómico de los materiales que se usan actualmente previsiblemente en los 2-3 nm. Mejores diseños en los procesadores permite aumentar el número de instrucciones por ciclo de reloj o IPC pero entre cada generación no suele estar más de un 3 y 10%. De modo que para aumentar el rendimiento más significativamente al no poder aumentar la velocidad y las mejoras de diseño no proporcionan aumentos tan significativos como en anterioridad la estrategia actual ha sido incluir más núcleos, desde los Intel Core 2 Duo y los AMD Athlon x2 lo normal ha sido que tengan dos núcleos y ahora están empezando a estar disponibles para el consumidor personal procesadores de 4, 8, 16 e incluso 32 núcleos que con SMT como Intel lo denomina en su implementación Hyper Threading son capaces de manejar el doble de hilos, con multiprocesamiento real en vez de simulado como los procesadores de un único núcleo.

Por un tiempo el aumento de núcleos permitirá aumentar en mayor medida el rendimiento en aquellas tareas paralelizables o permitiendo manejar más tareas que con otras técnicas. Si empleando 12 nanómetros AMD ha sido capaz de empaquetar 32 núcleos en los Threadripper de la serie 2000 con 7 nanómetros por que no iba ha ser capaz de empaquetar 64. Sin embargo, aumentar el número de núcleos indefinidamente no es escalable manteniendo la coherencia de las caches (que todos los procesadores vean el mismo valor de una posición de memoria) dada la carga que suponer mantener esa coherencia en todas las caches de un gran número de núcleos. Tampoco por los fallos de fabricación que se producen lo que obliga a desactivar núcleos y venderlos con menos núcleos activos, a mayor número de núcleos mayor probabilidad de que algunos contengan fallos.

Me pregunto si llegado el límite de no poder incluir más transistores en el mismo espacio sin el espacio que dejaba la reducción de nanómetros llegará un punto en el que no se podrán incluir más núcleos o una gran cantidad de núcleos iguales no es lo más eficiente cuando solo unos pocos está siendo utilizados o hay diversidad de tareas, unas que requieren alto rendimiento por usar de forma intensiva la CPU y otras que no por estar restringidas por operaciones de entrada y salida mucho más lentas que la capacidad de la CPU. En sus diseños de procesadores ARM permite una arquitectura big.LITTLE donde no todos los núcleos son iguales, posee núcleos de diferente tipo unos pocos como los Cortex-A75 ofrecen gran rendimiento a base de mayor consumo siendo más grandes y otros pocos como los Cortex-A55 con menor rendimiento pero más eficientes energéticamente y pequeños utilizando el sistema en cada momento los más adecuados para las tareas en ejecución.

Pero en la arquitectura x86/x64 de Intel y AMD aún no hay todavía una implementación de algo similar a lo empleado por ARM. Las restricciones y límites impuestos de ser cada vez más difícil reducir los nanómetros y no poder incluir más transistores en el mismo tamaño quizá haga que los que se puedan incluir deban ser mejor aprovechados y haga que Intel o AMD desarrollen una nueva arquitectura x86 con soporte de big.LITTLE similar a la de ARM. Cuando se llege al límite de 2 nanómetros ya la litografía ya no será lo que permita aumentar el rendimiento o se necesitarán nuevos materiales o procesos de fabricación, seguramente se requerirán nuevos diseños de arquitectura.

Bueno, la posible arquitectura big.LITTLE para x86 es una conjetura mía, muy posiblemente los ingenieros de Intel y AMD encuentren otras soluciones para seguir haciendo que cada generación de procesadores tenga un aumento de rendimiento significativo. La que hice sobre la convergencia que sería la siguiente disrupción tecnológica aún no se ha producido.

Una de las soluciones previsibles es que se empleen otros materiales distintos a los que desde hace décadas con el silicio se ha estado empleado: grafeno, siliceno, molibdenita o interconexiones ópticas. Permitiendo mayores frecuencias y con menor calor disipado lo que equivaldrá a poder seguir aumentando la capacidad de cómputo.

Otra es aprovechar más la computación heterogénea para delegar tareas que son más eficientes realizarlas en un procesador especializado en vez de uno de propósito general como la CPU, un ejemplo de este caso es la GPU para los gráficos pero empleando la capacidad de estas también para tareas de propósito general de cálculos, una API como OpenCL permite realizar cálculos en la GPU para procesamiento de audio, vídeo, imagen, criptografía, … Otro serían los DSP para procesamiento de señales como audio o vídeo. Una forma de computación heterogénea hace en el caso de la CPU y GPU que compartan la misma memoria del sistema evitando tener que hacer copias de los datos entre memorias al tenerlas dedicadas en exclusiva a cada una de los procesadores.

Finalmente, pueden estar los procesadores manycore que a diferencia de los multicore actuales integran un número de núcleos más grande en varios órdenes de magnitud (100, 1000) e independientes que palía el problema de los multicore y su escalabilidad en número de núcleos por mantener la coherencia de las caches. Y para estos casos es más adecuado la arquitectura de procesadores ARM mucho más simple que la arquitectura x86, con procesadores más pequeños y más eficientes pero mayor número de ellos. Unido a si Qualcomm consigue trauducir las instrucciones x86 sobre las de ARM manteniendo la compatibilidad con todo el software puede poner en serios aprietos la arquitectura x86 y hacer una realidad la citada convergencia entre móvil y PC. Siempre y cuando Intel lo permita, al vez amenazado su hegemonía como recurso podrá defenderse de forma legal con juicios de patentes.

Y en esa guerra de computación heterogénea y manycore, aunque eso es mucho decir, puede que salga vencedora ARM y la actual guerra de núcleos entre Intel y AMD quede como una anécdota en la historia como ya hay muchas otras.

Si quieres conocer más en detalle los procesadores tanto de su historia, evolución y funcionamiento más minucioso la enciclopedia El mundo de Bitman de @iandatux recoge en varios volúmenes una ingente cantidad de información que leyendo el indice de contenidos de cada libro se presenta muy interesate, diría que la obra disponible más completa sobre los procesadores, además en español. Si te interesa el tema me parece imprescincdible, en la descripción de los libros en Amazon están los índices completos. Por ejemplo, concretamente el volumen V cubre los materiales candidatos a emplearse en el futuro, los límites de los semiconductores actuales y el futuro en los procesadores que comento brevemente en este artículo:

Dentro de unos años, lustros o alguna década revisaré estos artículos de predicción a ver cuanto hay de acierto en la evolución de la tecnología que se produzca finalmente.