Chiplet y diseños multi-chip: qué son y por qué son tan importantes
El chiplet está de moda, tanto que para muchos constituye no solo el presente sino también el futuro de sectores tan importantes como el de las CPUs x86, y la verdad es que lleva ya un tiempo jugando un rol cada vez más relevante en el sector GPU, aunque aquí todavía no ha terminado de despegar en todos los niveles, y es probable que dicho despegue no se complete hasta dentro de unos años, siempre que se mantenga el ritmo actual.
Podríamos pensar que la historia del chiplet es reciente, que estamos ante algo nuevo e innovador que solo lleva unos pocos años funcionando en el sector tecnológico, pero la verdad es que nos estaríamos equivocando por completo, sin ir más lejos podemos encontrar un ejemplo muy temprano en los Intel Pentium II, que venían con caché L2 externalizada, y compartían empaquetado.
No obstante, sí que es cierto que dentro del mercado tecnológico de consumo general los chiplets no se empezaron a adoptar a gran escala hasta hace unos pocos años, y también es verdad que nunca han gozado de una popularidad tan grande como la que tienen hoy en día.
A título personal debo decir que estoy totalmente de acuerdo en que el chiplet ha marcado un importante punto de inflexión, y que ha hecho méritos más que suficientes para abrirse camino en un mundo que estaba dominado por los diseños de núcleo monolítico, demostrando que al final AMD tenía razón cuando apostó por él con Zen, y que la complejidad de los diseños CPU y GPU acabará siendo tan grande que solo será posible seguir creciendo, y avanzando, gracias al chiplet.
Qué es un chiplet y para qué sirve
Puede que nuestros lectores más avanzados lo tengan muy claro y sepan responder a esta pregunta de una manera clara y precisa, pero estoy convencido de que la mayoría tendrá algunas dudas al respecto. Teniendo en cuenta el peso que tiene a día de hoy en el sector, y que su peso no hará más que crecer en los próximos años, creo que es importante ayudaros a resolver todas esas dudas y dejaros claras todas las cosas que debéis saber sobre él.
Un chiplet es, en sentido amplio, un chip que puede albergar diferentes elementos y que está diseñado para trabajar de forma conjunta con otros chips, ya sea integrado dentro de un mismo encapsulado o en un encapsulado independiente, y con una distribución 2D (en horizontal) o en 3D (apilado en vertical). Pueden contener desde los núcleos de un procesador y las memorias caché de este hasta una GPU, y también existen chiplets que solo contienen memoria caché y memoria HBM.
El concepto chiplet no se limita al de un procesador o un núcleo gráfico segmentado, es mucho más amplio y se extiende a una gran cantidad de componentes que al final tienen un objetivo muy claro: crear soluciones complejas partiendo de la unión de piezas más sencillas, que estarán interconectadas para funcionar como si fuesen una sola.
Es muy fácil de entender, piensa, por ejemplo, en la complejidad que tendría diseñar y llevar a la oblea de silicio un procesador x86 con 16 núcleos. Dicho procesador debe contener, bajo un diseño de núcleo monolítico, todos sus elementos en una única pastilla de silicio. Sin embargo, con un diseño basado en chiplets podríamos dividir esos 16 núcleos en dos pastillas de silicio e interconectarlas, reduciendo con ello la complejidad y el impacto a nivel de oblea, un tema sobre el que hablaremos más adelante.
Un chiplet es, por tanto, una unidad de silicio, un semiconductor más simple que puede contener desde núcleos CPU hasta cachés, núcleos gráficos y otros elementos, y sirve para crear componentes más complejos partiendo de la interconexión de estas unidades. Como ya os he dicho, el chiplet, entendido en sentido amplio, puede compartir encapsulado o tener el suyo propio.
Por ejemplo, los Ryzen 1000 de AMD, lanzados en 2017, utilizan dos chips interconectados. Cada chip tiene una configuración de 4 núcleos y suma 8 MB de memoria caché L3. Un Ryzen 7 1800X tiene todos los núcleos activos, así que suma 8 núcleos y 16 hilos, mientras que un Ryzen 5 1600X tiene esas dos chips pero solo cuenta con 6 núcleos activos y 12 hilos. Todos los elementos de la CPU están en el mismo encapsulado.
Sin embargo, a partir de los Ryzen 3000 de AMD se produjo una externalización y una apuesta total a favor del chiplet en sentido estricto. Cada chiplet pasa a tener su propio encapsulado, suma 8 núcleos y 32 MB de caché L3, y todo el sistema I/O se externaliza a otro chiplet, que tiene un diseño más sencillo y utiliza un nodo más económico. Este enfoque se ha mantenido en los Ryzen 5000 y en los Ryzen 7000.
Con este nuevo diseño ya no tenemos dos chips que contienen todos los elementos de la CPU compartiendo encapsulado, vamos a verlo con un ejemplo. Para crear un procesador como el Ryzen 7 5800X, AMD utiliza un chiplet en nodo de 7 nm que tiene 8 núcleos y 16 hilos y lo interconecta con un chiplet I/O, donde va todo el subsistema de entrada y salida y las controladoras de memoria. Este último está fabricado en el nodo de 12 nm.
Gracias a esos dos chiplets ha sido posible crear un procesador de alto rendimiento con 8 núcleos y 16 hilos de una manera más sencilla, recurriendo a la interconexión de chiplets que contienen distintos componentes y que, además, se han fabricado en procesos muy diferentes, algo que sería imposible con un diseño de núcleo monolítico. También podríamos crear un procesador de 16 núcleos y 32 hilos de una manera muy simple, añadiendo un segundo chiplet de 8 núcleos.
No obstante, hay que tener en cuenta que el uso de chiplets también plantea desafíos importantes, sobre todo a nivel de integración y de interconexión, ya que es necesario crear un sistema para que estos puedan compartir recursos y trabajar de forma eficiente, evitar problemas de sincronización y de acceso a esos recursos y alimentar adecuadamente cada chiplet.
Tenemos muchos ejemplos de lo complejo que puede resultar esto en el camino que tuvo que recorrer AMD con los Ryzen. En la primera y segunda generación (Zen y Zen+) la compatibilidad con memorias de alta velocidad no era todo lo buena que debería porque, al final, el sistema de interconexión Infinity Fabric y el Memory Controller Clock tenían unas limitaciones importantes, y sus frecuencias de trabajo eran relativamente bajas comparadas con las CPUs de núcleo monolítico de Intel.
Con Zen 2 la cosa mejoró notablemente, pero con Zen 4 hemos vuelto a ver las limitaciones que presenta un diseño tipo chiplet, ya que los Ryzen 7000 han mejorado mucho en frecuencias de reloj, pero siguen sin alcanzar el nivel de los diseños de núcleo monolítico, y solo pueden mantener una relación 1:1 con memorias que trabajen a un máximo de 6.000 MHz. Es normal, y es que al final no basta con pegar chiplets, hay que hacerlo siguiendo un patrón adecuado y dándoles a estos el sistema de comunicación que mejor se ajuste al componente que queramos crear.
Por qué es tan importante el chiplet
Es importante porque permite superar las limitaciones de que impone el diseño de núcleo monolítico, tanto a nivel tecnológico como de diseño, de costes y de traspaso a la oblea. No es complicado de entender, piensa en lo que supondría diseñar una CPU de 16 núcleos y 32 hilos bajo un modelo de núcleo monolítico, sin recurrir al chiplet.
Todos los elementos deben ir en una única pastilla de silicio, incluyendo las memorias caché L1, L2 y L3 de esos núcleos, las controladoras de memoria y el sistema I/O. En los últimos años la caché L3 ha aumentado mucho de tamaño, y por ello ocupa cada vez más espacio a nivel de silicio, así que en este caso tendríamos, como resultado, un chip muy complejo que además ocuparía una superficie enorme, y todos sus elementos deberían estar fabricados en un mismo nodo.
Bien, ahora vamos a trasladarlo a la oblea de silicio. Este chip de núcleo monolítico ocuparía mucho espacio en la oblea, y además al tener una complejidad tan grande las posibilidades de que salgan chips defectuosos, ya sea de forma total o parcial, son mucho mayores. Al final todo esto implica que son más costosos de fabricar y que por tanto tendrán un precio de venta muy elevado.
En amarillo están los dos chiplets con ocho núcleos que forman un Ryzen 9 7950X, y en azul el chiplet I/O. Los Ryzen 3000 y Ryzen 5000 siguen este mismo esquema.
Con un diseño de tipo chiplet podríamos dividir ese procesador de 16 núcleos en tres chips de pequeño tamaño que, como hemos dicho, estarían interconectados, y no tendrían que utilizar necesariamente el mismo nodo. Es evidente que esto reducirá enormemente la complejidad tanto a nivel de diseño como de ejecución en la oblea, y podemos poner un ejemplo que fue muy popular en su momento, el Ryzen 9 3950X, un chip que fue el primero de consumo general en contar con 16 núcleos y 32 hilos.
Ese procesador está formado por dos chiplets que contienen 8 núcleos y 32 MB de caché L3 cada uno, y por un tercer chiplet que contiene todo el subsistema I/O. Los dos primeros chiplets están fabricados en el nodo de 7 nm de TSMC, y el tercero utiliza el nodo de 12 nm de GlobalFoundries. Esto ya nos permite entender que AMD pudo ahorrar dinero de una manera clara, puesto que los chiplets que contienen los núcleos de la CPU utilizan un nodo más caro, mientras que el chiplet I/O utiliza un nodo más económico.
A la hora de fabricar esos chiplets el coste a nivel de oblea es menor porque son más pequeños, lo que significa que ocupan menos espacio a nivel de silicio, y además tienen una mayor tasa de éxito porque son menos complejos, es decir, hay menos riesgo de que algo salga mal y de que obtengamos chips defectuosos, ya sea de forma parcial o total. Sí, es cierto que para diseñar un Ryzen 9 3950X necesitamos tres chiplets, pero estos son mucho más sencillos y baratos de producir.
Siguiendo con este ejemplo, piensa que un Ryzen 9 3950X tiene un total de 7.600 millones de transistores, y que cada chiplet de 8 núcleos apenas ocupa una superficie de apenas 74 mm2, mientras que el chiplet I/O ocupa 124 mm2. En total los encapsulados sumarían 272 mm2.
El chiplet también ofrece un valor importante en términos de escalabilidad, ya que podemos utilizarlo para crear procesadores con un enorme conteo de núcleos e hilos sin tener que entrar en diseños extremadamente complicados, y nos da la posibilidad de alcanzar configuraciones que serían imposibles bajo un diseño de núcleo monolítico.
Piensa, por ejemplo, en los AMD EPYC de cuarta generación, que tienen hasta 96 núcleos y 192 hilos. Ese procesador ha sido posible gracias a la interconexión de un total de 12 chiplets de 8 núcleos cada uno, y obviamente habría sido imposible bajo un diseño monolítico. Piensa en todo el espacio que habría ocupado a nivel de silicio, en la cantidad de posibilidades que hay de que un chip tan complejo acabe presentando algún fallo durante el proceso de litografía, y en el coste que esto supondría.
Ahora añade a lo anterior los desafíos inherentes a los saltos de proceso de fabricación, que reducen el tamaño de los transistores y de las puertas lógicas, lo que hace que el riesgo de fugas eléctricas sea cada vez mayor, pero al mismo tiempo se produce un incremento de la densidad de transistores. Sí, esto nos deja un cóctel perfecto para que la tasa de fallo aumente en diseños de chips especialmente complejos, y hace que al final unir chiplets para crear «súper chips» sea el camino a seguir.
Aquí podemos ver, en el centro, el núcleo gráfico de Navi 31 y a su alrededor los seis chiplets de caché L3.
Esta fórmula también la ha aplicado AMD en sus aceleradoras gráficas Instinct de última generación, como por ejemplo la MI250X, que combina dos GPUs Aldebaran XT con 7.040 shaders cada una y tiene un total de 128 GB de memoria HBM2E. He hecho referencia a esta memoria porque está integrada en un total de ocho chiplets que están repartidos en una proporción de cuatro por cada GPU (16 GB cada uno).
Precisamente ese es otro valor de los chiplets, que no solo permiten crear súper chips de una manera más sencilla, con un coste menor y un alto grado de escalabilidad, sino que además nos permiten externalizar e integrar elementos que antes habrían sido imposibles.
Podemos poner otro ejemplo actual y muy fácil de entender, la GPU Radeon Navi 31 utilizada en las Radeon RX 7900 XT y Radeon RX 7900 XTX, que consta de un encapsulado GCD, donde está integrado el núcleo gráfico, y de seis chiplets MCD, que suman un total de 96 MB de caché L3.
Al externalizar la caché L3 en chiplets interconectados a la GPU, AMD ha conseguido liberar una parte importante de espacio a nivel de silicio en la GPU y reducir tanto la complejidad con el coste de fabricación de Navi 31. Si esa caché L3 se hubiera integrado en un diseño de núcleo monolítico Navi 31 sería un chip enorme, más complejo y caro de producir.
Sapphire Rapids «a vista de tile». Cada uno de los cuatro bloques tiene una configuración impresionante.
Por último, aunque no por ello menos importante, debemos tener en cuenta que el chiplet puede escalar e integrarse de muchas maneras. Intel ha sabido ver su potencial, y por eso no ha dudado en utilizarlo en Sapphire Rapids, una generación de procesadores que son, sin duda, un excelente ejemplo de lo que puede dar de sí el concepto de chiplet, aunque el gigante del chip lo ha llevado más allá al agruparlo alrededor del concepto «tile», que podemos traducir como bloque o mosaico.
En una «tile» de Sapphire Rapids tenemos no solo los núcleos y el sistema de cachés, también nos encontramos con las controladoras de memoria, el subsistema PCIe y los aceleradores especializados. La imagen que encontraréis un par de párrafos más arriba es muy clara, y muestra al detalle todos los elementos de cada bloque.
Intel ha diseñado, además, versiones con memoria HBM2, y esta cuenta con sus propios encapsulados. Gracias al chiplet es posible crear soluciones heterogéneas que integran una enorme cantidad de elementos en diferentes encapsulados, pero que comparten un mismo empaquetado, y que están interconectados mediante la tecnología EMIB 2,5D.
No hay duda de que el futuro del sector tecnológico pasa por interconectar chiplets, pero también por el apilado de chips en 3D, un terreno en el que Intel ya movió ficha en su momento con la tecnología Foveros, y donde AMD también ha dado sus primeros pasos con la caché apilada en 3D.
Apilar chips es muy complejo y muy caro, sobre todo por los desafíos que se presentan a la hora de interconectarlos y de alimentarlos utilizando vías a través del silicio, pero es el siguiente paso en la computación heterogénea y resulta clave para crear sistemas multichip en un mismo empaquetado.