Todos los secretos del AMD Instinct MI300, su acelerador más grande hasta la fecha
No se puede decir que AMD tenga músculo en el mundo de la computación de alto rendimiento y la IA, ya que es un mercado dominado por NVIDIA y sus librerías CUDA. Sin embargo, no parece que los de Lisa Su se quieran quedar atrás y el AMD Instinct MI300 es probablemente uno de sus diseños más interesantes, no solo por su capacidad técnica, sino también por el hecho de inaugurar por primera vez tecnologías que veremos en futuros productos de la marca. ¿Qué secretos esconde el diseño más mastodóntico de AMD?
Durante la presentación de los AMD EPYC basados en Zen 4c y Zen 4 con V-Cache, Lisa Su dejo caer que el mercado de la IA es uno en expansión del que piensan formar parte tomando un porcentaje importante de un mercado dominado por la empresa de Jensen Huang. El primer diseño clave en todo esto es el AMD Instinct MI300 que llega para desafiar al todopoderoso H100 de NVIDIA. ¿Qué secretos oculta?
¿Por qué el AMD Instinct MI300 nos marca al futuro de AMD?
Hemos de partir del hecho de que el MI300 no es un diseño comercial en origen, pese a que AMD lo venderá a varios clientes distintos como producto final, la realidad es que se diseñó para una solución en concreto, el superordenador El Capitan.
Al mismo tiempo esto les ha permitido desplegar y desarrollar una serie de técnicas por primera vez en un hardware físico. Por lo que lo interesante en el diseño no son realmente sus especificaciones técnicas, sino el hecho que es un adelanto a futuras generaciones de productos de AMD junto a su socio, TSMC.
Bueno, en realidad, es un despliegue de las tecnologías que permiten diseños basados disgregados (chiplets) con un alto ancho de banda. Donde la clave de todo ello no solo es la velocidad de transferencia, sino el coste energético por transferencia, por lo que la industria en general ha decidido de forma unánime dejar de usar conexiones en paralelo a usarlas en matriz.
Para ello se necesita colocar los diferentes chips encima de otro chip, al que se suele llamar interposer y que se encarga de la intercomunicación interna de los que van montados encima. AMD, en sus diseños, hasta el momento ha utilizado conexiones en horizontal, pero no en vertical y, por tanto, no tiene ninguna implementación que funcione a través de vías de silicio. En esto, Intel con Foveros y su implementación en Meteor Lake está un nivel por encima. No obstante, el objetivo de la marca de Lisa Su es otro.
Un conector universal para futuros chips de AMD
La novedad principal del MI300 no es el propio diseño en sí mismo, sino que introduce precisamente dicha conexión vertical de forma estandarizada para futuros diseños de la marca. Lo mismo que ocurrió en su día con el llamado Infinity Fabric, que se convirtió, y sigue siendo, en el pegamento de las diversas unidades en los diseños de AMD y que les permite realizar diferentes diseños a medida para sus clientes o desplegar nuevos chips muy rápidamente.
La gran novedad del MI300 y que se ha implementado tanto a CDNA3 como a la versión modificada de los núcleos Zen 4, disponibles en el MI300A, es precisamente dicho conector en vertical. El cual permite comunicar estos con el interposer que tienen debajo a un porcentaje del coste por bit transmitido. Gracias a ello se soluciona el problema del ancho de banda necesario para la comunicación sin disparar el consumo energético.
La idea es simple, tener, para futuros diseños, una interfaz que les permite crear configuraciones basadas en diversos chiplets de forma fácil. Sin embargo, si nos permitís, vamos a hacer una parada en el camino, ya que antes debemos explicar el motivo por el cual el MI300 tiene que usar un interposer y se ha de disgregar en diversos chips distintos.
AMD Instinct MI300, una GPU masiva para HPC e IA
Sobre el papel las especificaciones del AMD Instinct MI300 son superiores a las del H100 de NVIDIA, al menos en lo que al número de núcleos se refiere, ya que físicamente tenemos ni más ni menos que las siguientes configuraciones:
- El MI300A está compuesto:
- 6 XCD.
- 228 CU CDNA3.
- 3 CCD.
- 24 núcleos Zen.
- 8 pilas HBM3 con una capacidad total de 128 GB.
- 6 XCD.
- El MI300X, en cambio:
- 8 XCD.
- 304 CU CDNA 3.
- 8 pilas HBM3 con una capacidad total de 192 GB.
- 8 XCD.
Por lo que el MI300A realmente se puede considerar una APU, carece de los elementos de gestión de periféricos para ser considerado un SoC, al englobar CPU y GPU en único sistema. En cambio, el MI300X es una GPU para HPC e IA pura y dura, por lo que se puede implementar en un sistema, ya sea un servidor o en una estación de trabajo.
El H100 de NVIDIA tiene asignadas 6 pilas HBM3 y alcanza el límite de la retícula, lo cual es el tamaño máximo que puede alcanzar un chip.
En cambio, el MI300 está pensado para albergar un mayor número de núcleos y ancho de banda, lo que obliga a dividir la GPU para HPC, pero con la diferencia de que la comunicación convencional sería imposible, es aquí donde lo que os hemos explicado en la sección anterior cobra toda la importancia y donde se hace necesario el interposer, sin embargo, antes de nada, haremos un repaso a la arquitectura de la GPU.
La filosofía detrás de las “GPU” CDNA de AMD
En la actualidad AMD tiene dos arquitecturas dispares, que sobre todo se diferencian por el tipo de Compute Unit que utilizan, y es que en todas las GPU de arquitectura CDNA como es el caso que nos ocupa, el objetivo principal es acelerar algoritmos diseñados disciplinas de la IA como Machine y Deep Learning, y todo tipo de redes neuronales, como por ejemplo las convolucionales.
Al mismo tiempo, su objetivo es la computación de alto rendimiento, donde se opera con precisiones matemáticas mucho más altas que las necesarias que una aplicación comercial.
CDNA no es una GPU para 3D
La Compute Unit de CDNA se basa en la de la vieja arquitectura GCN, siendo esta una evolución del diseño de su última iteración, Vega, pero con dos cambios:
- La unidad de texturas se mantiene, pero solo su capacidad de captar datos desde la caché de datos local dentro de la propia Compute Unit. Todo lo relativo a filtraje de texturas, usado en videojuegos, ha sido cancelado.
- Al igual que ocurre con RDNA 3, las unidades SIMD tienen la capacidad de ejecutar instrucciones del tipo WMMA para realizar operaciones entre matrices. En todo caso, AMD nunca ha aclarado con CDNA si este es el escenario o estamos hablando de arrays sistólicos o unidades tensoriales.
Al igual que ocurre en una GPU convencional, CDNA reúne sus Compute Units en grupos llamados diferentes por cada marca comercial. El caso es que una GPU pensada para gráficos en 3D en el siguiente nivel solemos ver unidades de función fija que en CDNA no están por el hecho de que no son necesarias para lo que ha sido diseñada.
Es más, a nivel del procesador de comandos, el anillo 0, el cual es el encargado de manejar la lista de pantalla en una GPU, y que es de mayor tamaño que los otros, ha sido eliminado para dejar solo a los de Computación. En todo caso, no olvidemos que el MI300 no se ha diseñado para colocarlo en tu PC para juegos.
La salsa secreta del AMD Instinct MI300: el interposer
Y aquí llegamos al punto más importante, a lo que es el interposer o el chip que va en la base y que comunica los diferentes chips entre ellos y con la memoria HBM 3. Sin embargo, AMD no se ha limitado a crear uno que se limite a transmitir datos, sino que movido una serie de funciones al mismo, las cuales son:
- El controlador de memoria común para todas las unidades del MI300.
- Contiene en su interior 64 MB de caché L3, la cual es común para CPU y GPU, permitiendo acceso totalmente coherente a la memoria.
- Integra una serie de aceleradores de uso común para todas las unidades, lo que evita duplicidades.
Sin embargo, tanto AMD como TSMC se han visto obligadas a dividir el interposer en cuatro unidades distintas totalmente simétricas, más que nada por el hecho que una sola pieza hubiese sido imposible de fabricar, al superar el límite de la retícula de la oblea.
Y es que la AMD Instinct MI300 mide un total de 1462,35 mm², muy por encima del límite máximo para fabricar un chip de una pieza. Para solucionar este problema han usado puentes de silicio, que permiten la interconexión entre los diferentes interposers que forman parte del MI300. Todo ello sirve para poder crear diferentes variantes que combinen diferentes CCD y XCD, según las necesidades de clientes específicos. Sin embargo, los dos modelos estándar son el MI300X y el MI300A.
¿Cómo combinar centenares de núcleos entre sí?
Uno de los mayores desafíos a la hora de crear un chip multinúcleo, ya sea una CPU o una GPU, es la intercomunicación entre los diferentes elementos, el problema es que a medida que estos aumentan también lo hace la complejidad del cableado interno. Una solución muy común es usar una topología en anillo, pero el problema es que a medida que este se va haciendo más ancho más aumenta la latencia entre núcleos, por lo que a la escala del MI300 no es lo mejor.
La solución de AMD para el MI300 se basa en implementar un NoC o red en un chip en el interposer, donde cada elemento tiene una pequeña tarjeta de red y hay un enrutador central encargándose de todas las gestiones. Sin embargo, no es a lo máximo que puede llegar AMD por el momento, y nos preguntamos que verán nuestros ojos como consecuencia de la compra de “Pensando”, análoga a la de Mellanox por parte de NVIDIA.
La base para futuros productos de la marca
El hecho de tener un interposer que reúna en su interior el controlador de memoria integrado y la caché L3 es clave de cara al futuro, especialmente por el hecho que son elementos tanto para CPU, GPU como para combinaciones de ambos. El hecho de mover esos elementos al interposer en el MI300 ha dado espacio para que los chiplets principales que se montan encima.
Un futuro hipotético AMD Ryzen basado en Zen 6 y un supuesto socket AM6 puede mover el IOD al interposer y añadir un nivel de caché adicional para paliar la latencia inter-CCD, y lo mismo se puede aplicar también a futuras GPU, por ejemplo, esto permitirá mover la función de los MCD en un futuro modelo al interposer.