Si hace unos días os hacíamos un resumen de las novedades que traen consigo las RTX 50 de NVIDIA bajo arquitectura Blackwell, esta vez le toca el turno a las AMD Radeon RX 90×0 bajo arquitectura RDNA 4. Donde, al igual que sus rivales, nos encontramos con una mejora incremental de la anterior generación, pero, al igual que ocurre con la PS5 Pro de Sony, con una mejora importante en el rendimiento de cara a la IA y el Ray Tracing. Se trata de una arquitectura de transición, antes de dar un salto a la arquitectura UDNA. La cual se usará en sistemas como PlayStation 6 y la futura Xbox, aunque ya incluye algunos elementos provenientes de CDNA, lo que la convierte en una arquitectura de transición, no por ello menos interesante.
Nota de la redacción: debido a una información erronea y a una malinterpretación por nuestra parte resulta que parte de la información de este artículo se encontraba totalmente errada. Es por ello que h
AMD vuelve a las GPU monolíticas con sus Radeon RX 90×0
En el pasado CES de enero de 2025, AMD dio un adelanto de sus próximas tarjetas gráficas, basadas en la arquitectura RDNA 4, y que se lanzarían bajo el nombre comercial de Radeon RX 90×0, siendo las primeras que saldrán al mercado las más potentes de la gama: RX 9070 XT y RX 9070. La sorpresa fue mayúscula cuando la empresa de Lisa Su confirmó los rumores en que no solo no van a competir de tú a tú frente a la gama alta de NVIDIA, sino que anunciaron que no tenían planes de superar en rendimiento bruto a la RX 7900 XTX, la tarjeta gráfica más potente de la anterior generación. No obstante, esto tiene cierta trampa, como veréis más adelante cuando tratemos las mejoras en Ray Tracing e inteligencia artificial.
En todo caso, hemos de ponernos en situación y tener en cuenta el rendimiento de la arquitectura RDNA 3 en el mercado de las tarjetas gráficas, dejando a AMD en la peor situación posible que no es otra que NVIDIA teniendo el 90 % del mercado. Esto explica el motivo por el cual no han querido continuar con el planteamiento de una GPU por chiplets o disgregada en RDNA 4 para preferir volver al modelo tradicional, ya que el rendimiento obtenido no compensa.
Organización general de las arquitectura RDNA
En principio, el diseño general de las diferentes generaciones RDNA de AMD es el mismo, con pequeñas mejoras incrementales que se han visto en el tiempo. No obstante, nos da la sensación de que, una vez terminada RDNA 2, el Radeon Technology Group tomó dos caminos distintos. El primero de ellos derivó en la arquitectura RDNA 3 usada en las tarjetas gráficas RX 7×00 y las gráficas integradas en las CPU Ryzen de la propia AMD. La segunda será la GPU principal de la serie RX 90×0 para tarjetas gráficas dedicadas, aunque no se espera su aparición en futuras iGPU, al menos por lo que se sabe hasta el momento.
No olvidemos que una de las particularidades de RDNA en todas sus versiones es el concepto del Workgroup Processor (WGP), donde los núcleos de la GPU o las Compute Units comparten elementos a pares como es la caché de instrucciones, la caché de datos para la unidad escalar, así como la memoria local. Cómo se puede ver en la diapositiva arriba de estas líneas, dicha organización se sigue manteniendo intacta y sin cambios en RDNA 4.
RDNA 4 versus GPU de PS5 Pro
Pese a compartir algunos elementos en común, hemos de recordar que la GPU de PS5 Pro no se basa en la arquitectura RDNA 4, debido a que, a nivel de núcleo de la GPU, así como del chip en general, hay una serie de diferencias importantes entre ambos. La más clara de todas es la existencia de la Infinity Cache, una memoria caché de tercer nivel de 64 MB de tamaño que es inédita por el momento en todos los chips de AMD para consola. No obstante, dicha diferencia ya existía entre PC y consolas desde RDNA 2, aunque en todo caso no es el único cambio a nivel global de la GPU.
Uno de los cambios importantes que ha hecho AMD en su nueva arquitectura y con visos a la siguiente es reemplazar la MMU integrada en el controlador de memoria de la GPU con el objetivo de poder gestionar las peticiones a memoria fuera de orden. Para que lo entendáis, en RDNA 3 y arquitecturas anteriores, dichas peticiones se hacían en orden. Es decir, si un dato no se encontraba en la caché y la unidad de gestión de memoria tenía que gestionar la búsqueda de la información en la VRAM, esta lo hacía según el orden de petición y no teniendo en cuenta el orden de obtención de los resultados en memoria o la latencia de los mismos.
¿Al fin unidades SIMT en una GPU de AMD?
Otro de los cambios que ha implementado AMD en RDNA es lo que AMD llama registros dinámicos. Ya os comentamos en el artículo sobre PlayStation 6 que uno de los cambios que esperábamos en la GPU de PlayStation 6 es la adopción de unidades SIMT en vez de SIMD con el objetivo de aprovechar mejor la disponibilidad de las diferentes unidades de ejecución existentes en el núcleo, lo que permite olas de diferentes tamaños. Pues bien, los registros dinámicos son muy importantes para la implementación de una unidad SIMT, ya que con estas las olas de instrucciones a ejecutar solo necesitan pedir lo que necesitan en cada momento, permitiendo asignar dinámicamente las unidades de ejecución o ALU no usadas a otras instrucciones en vez de dejarlas paradas.
Sin embargo, el jarro de agua fría nos viene cuando sabemos que deberemos esperar a UDNA para una implementación completa, y es que es la asignación de registros no es completamente automática en hardware, sino que el compilador o el driver tienen que gestionar cuándo y cómo se asignan o liberan registros dinámicamente. Es decir, para aprovechar esta característica se requiere compilar los shaders de una forma concreta. Si fuese un salto completo de SIMD a SIMT, la asignación sería completamente transparente al gestionarse desde el propio hardware.
Probablemente, este sea el motivo por el cual Sony decidió no apostar por RDNA 4 en su nueva consola, ya que para sacar el máximo rendimiento se volvería necesario recompilar todos los shaders de todos y cada uno de los juegos y es por ello que prefirieron la opción más cómoda.
Unidades de ejecución en RDNA 4
Cada núcleo de la GPU puede usar 2 unidades de ejecución distintas al mismo tiempo, pero tiene muchas más disponibles para ejecutar las diferentes instrucciones, aparte de la unidad escalar que trabaja con datos únicos y no por vectores y que funciona en paralelo a lo que son las unidades vectoriales. Es más, la unidad escalar dispone de su propia memoria, caché de instrucciones y set de registros, mientras que las siguientes unidades comparten sus registros asignados o VGPR.
- Cada unidad SIMD tiene dos sets de 32 ALU, uno para el cálculo de enteros de 32 bits, el otro es para el cálculo en coma flotante de 32 bits.
- La AI Accelerator Unit es el Array Sistólico o unidad Tensor que se ha añadido a RDNA 4, comparte registros con las unidades SIMD y el TLU, por lo que no puede usarse cuando una de estas unidades tienen acceso a memoria.
- Las 8 Transcendental Logic Unit son ALU especializadas en cálculos matemáticos complejos. Le permiten a la GPU realizarlo en muy pocos ciclos de reloj sin tener que sacrificar la sencillez de las ALU en la unidad SIMD. Su especialización es calcular funciones matemáticas transcendentales (de ahí su nombre) como: funciones trigonométricas, logaritmos, exponentes, y raíces.
Fuera de la nueva AI Accelerator Unit, el resto de componentes ya se encontraban disponibles en generaciones anteriores de la arquitectura RDNA. No obstante, aquí hemos de decir que una desventaja que tiene RDNA 4 respecto a las NVIDIA RTX 50 es que la unidad de aceleración para la IA comparte registros con el resto de unidades. Mientras que en la GPU de la marca verde la han separado y le han dado sus propios registros, permitiendo el uso simultáneo y en paralelo de los Tensor Core junto a las unidades SIMD y SFU/TLU.
RDNA 4 sigue sin unidades tipo Tensor
Aquí vamos con una fe de erratas por nuestra parte. AMD al igual que ocurrió en RDNA 3 ha vuelto a mentir sobre la presencia de las AI Accelerator Units como elementos comparables a los Tensor Cores de NVIDIA. Ya, que de nuevo, nos encontramos de nuevo que en RDNA 4 tenemos a las unidades SIMD funcionando como núcleos Mini-Tensor. Es decir, ha vuelto ha ocurrir como en la generación anterior donde de nuevo se mencionan unas AI Accelerator Units que no existen.
Esto nos hizo pensar que esta vez sí, que AMD sí que había colocado unidades tipo Tensor Core como las de NVIDIA. Sin embargo, un vistazo a la documentación de la ISA de RDNA 4 nos revela la verdad:
Las instrucciones de multiplicación-acumulación de matrices por ondas (Wave Matrix Multiply-Accumulate, WMMA) proporcionan aceleración para las operaciones de multiplicación de matrices. Cada instrucción WMMA o SWMMAC (WMMA dispersa) realiza una única operación de multiplicación de matrices utilizando los datos en los registros VGPR, que contienen una matriz A, B, C y D respectivamente. Una de las matrices se distribuye a lo largo de todos los carriles (lanes), es decir, no hay una matriz por carril. Las instrucciones se codifican utilizando el formato de codificación VOP3P.
Los carriles son las ALU de la unidad SIMD, precisamente una de las particularidades es que soportan SIMD sobre registro, donde cada ALU de 32 bits de las unidades SIMD puede funcionar como dos ALU de 16 bits, 4 de 8 bits, 8 de 4 bits, etc. Siempre y cuando estén realizando la misma instrucción. Pues bien, en este caso, se mapean los componentes de las diferentes matrices en las unidades SIMD, lo cual es una solución mucho menos eficiente que los Tensor Core de NVIDIA, ya que proporciona mucha menos potencia de cálculo para las operaciones con matrices que son esenciales para la IA,
¿Cómo funciona?
Todo ello significa que AMD no utiliza un array sistólico en RDNA 4, es decir, no tiene una unidad tensor. ¿Cómo lo hace entonces? Las operaciones con matrices no requieren tener todos los datos en cada momento. Hemos de partir de que cuando se multiplican dos matrices, por ejemplo de 16×16 una y deñl mismo tamaño la otra, el resultado también es una matriz de 16×16, lo cual hace un total de 256 operaciones.
Para explicarlo bien, vamos a hablar cómo se operan las matrices en álgebra, tomando como ejemplo las más sencillas, la de 2 x 2. Donde para obtener los valores de la matriz C las operaciones son las siguientes:
- c(1,1)=a(1,1)⋅b(1,1)+a(1,2)⋅b(2,1)
- c(1,2)=a(1,1)⋅b(1,2)+a(1,2)⋅b(2,2)
- c(2,1)=a(2,1)⋅b(1,1)+a(2,2)⋅b(2,1)
- c(2,2)=a(2,1)⋅b(1,2)+a(2,2)⋅b(2,2)
Dado que en un array sistólico los núcleos se conectan entre sí tanto en vertical como en horizontal, hacer dichas operaciones en vertical y horizontal es mucho más fácil. En cambio lo que se hace internamente en las instrucciones WMMA en RDNA 4 es reordenar de tal manera que cada operación simple es asignada a una ALU, no obstante, tanto RDNA 3 como RDNA 4 utilizan un truco lo que se llama una caché de reutilización de operandos para acelerar ciertas instrucciones.
La ventaja de RDNA 3 y RDNA 4 en cuanto a IA
Si bien RDNA 4 tiene el doble de rendimiento en lo que a Machine Learning y Deep Learning se refiere, la llamada operand reuse cache, pero se ha de aclarar que esta memoria no forma parte de la jerarquía de memoria caché. Sino que más bien se trata de un tipo de memoria temporal que sirve para almacenar operandos de modo que puedan reutilizarse sin volver a acceder a registros, a la caché o a la memoria principal. Curiosamente, hace ya varios años AMD patentó el concepto bajo el nombre de Super-SIMD, y cuando decimos años nos referimos a que publicaron la patente mucho antes del lanzamiento de la primera generación de RDNA, es más, por aquel entonces muchos creímos que era una de las características de la nueva arquitectura.
Para entender su utilidad, hemos de entender que a la hora de calcular el componente de una matriz nos encontramos con el hándicap de que cada ALU (hilo/lane) es independiente y no pasa datos a otras ALUs durante la ejecución. Si bien puede leer información de la caché de datos o de la memoria local en en núcleo de la GPU, esto consume ciclos de lectura y escritura, lo que hace menos eficiente la operación. Si bien la LDS es utilizada tarde o temprano, la clave se encuentra en una serie de registros adicionales donde se pueden acumular temporalmente resultados y utilizarse como operandos.
Por ejemplo, a la hora de calcular a(1,1)⋅b(1,1) esto lo haría una sola ALU, el resultado se acumularía en el registro adicional, para el cálculo de a(1,2)⋅b(2,1) se haría en una segunda ALU y se acumularía en el registro adicional. Luego, una de las dos ALU realizaría la suma correspondiente leyendo dichos registros adicionales. Sin necesidad de copiar los resultados en la memoria local del núcleo.
Ray Tracing mejorado en RDNA 4
El otro punto que AMD ha mejorado en RDNA 4 es el trazado de rayos, un aspecto en el que NVIDIA sigue teniendo una enorme ventaja respecto a AMD, especialmente tras el hecho que el salto desde RDNA 2 a RDNA 3 en lo que a la cantidad de intersecciones que pueden calcular las unidades especializadas en ello solo subieran un 50%, mientras que las de NVIDIA se han ido duplicando con cada generación, lo que aumento aún más la diferencia a favor de la marca verde. Eso sí, no podemos olvidar que lo bueno en RDNA 3 es que añadió instrucciones para que las Ray Accelerator Units tuvieran la capacidad de recorrer la estructura de datos BVH sin necesidad de un Compute Shader, algo que en las GPU de NVIDIA se podía realizar desde las primeras RTX.
Se puede decir que el único elemento de RDNA 4 que utiliza PS5 Pro es precisamente la nueva unidad de Ray Tracing, la cual puede operar en grupos de 8 cajas y 2 triángulos, duplicando la capacidad en este aspecto respecto a la generación anterior.
En realidad, la unidad sigue siendo la de RDNA 3, pero con la diferencia que ahora tenemos dos de ellas que combinadas pueden recorrer un árbol BVH8, dando la opción a los desarrolladores a escoger el tipo de estructura de datos más adecuado según el tipo de escena con Ray Tracing renderizar.
No obstante, se ha de aclarar que RDNA 4 en PC tiene una enorme ventaja respecto a la GPU de PS5 Pro pese a usar las mismas unidades para Ray Tracing por tres motivos: Infinity Cache, la nueva MMU que permite resolver peticiones a memoria fuera de orden y la caché dinámica en la Compute Units o núcleos de la GPU.