Blog Personal.

AMD, PlayStation 5, PS5, Radeon, Xbox Series S, Xbox Series X, XSS, XSX

Dejaos de FUD, tanto XSX como PS5 son RDNA 2

En el Discord me habéis pedido de manera indirecta que comente la siguiente afirmación en twitter acerca de Xbox Series X.

Lo mejor es aclarar las cosas de una vez por todas, con una entrada y por cierto, no vais a poder comentarla, si queréis algo para eso tenemos el Discord del blog.

Por otro lado esta entrada os va a parecer un Deja Vu enorme sobre lo que he dicho no hace mucho, pero es una forma mucho más ordenada de explicar las cosas. Más que nada busco que la gente se deje de mierdas de ese tipo de una vez por todas que no aportan nada de nada.

¿Qué se considera RDNA 2?

RDNA Roadmap

RDNA 2 no es más que una evolución de RDNA, en realidad hablamos de la misma arquitectura de base pero RDNA 2 es toda aquella GPU que incorpora los siguientes elementos:

  • Unidades de interseccion para el Ray Tracing
  • Soporte a través de hardware del Variable Rate Shading

En cambio hay elementos que AMD no los considera dentro de la definición de lo que es RDNA 2 como la rumoreada y casi confirmada Infinity Cache. Pero en general lo que tenéis que entender que RDNA 2 no es más que una RDNA vitaminada y que más de la mitad de la GPU recicla elementos de su antecesora.

¿En que consistiría la Infinity Cache en las RDNA 2 de PC?

Esta es una buena pregunta, no sabemos casi nada de la misma pero por lo visto es uno de los elementos heredados de las arquitectura de CPUs Zen, el uso de una cache de último nivel funcionando como Victim Cache.

Como ya sabréis independientemente de si hablamos de una CPU, una GPU u otro tipo de procesador, las caches no son memoria adicional dentro del espacio de la misma sino que funcionan independientemente a esta, en realidad lo que hacen es copiar bloques de la RAM para que la CPU o la GPU tarde menos en acceder a los datos.

Funciona de tal manera que las caches de más bajo nivel pero más cercanas al procesador copian fragmentos de las caches de más nivel, y la cache de último nivel copia un fragmento de la RAM, normalmente una página de memoria.

Pero mientras una memoria necesita ser manejada manualmente, ya sea por el programa, la máquina virtual o cualquier otro elemento por software que libere y reserve memoria. En una cache esto no funciona así y cuando se necesita espacio para nuevas copias de la memoria en el último nivel de la cache entonces esos datos se acaban borrando de la cache, lo que implica que el procesador ha de viajar hasta la memoria para conseguir el dato.

El concepto de Victim Cache es que es la caché de penúltimo nivel la que funciona como si fuese la cache de último nivel de cara a los datos y la Victim Cache lo que hace es recoger los datos recién descartados a memoria. Esto en una GPU contemporánea tiene una utilidad bastante grande, especialmente porque todas funcionan ahora utilizando lo que se llama Tile Caching.

Tile Caching e Infinity Cache

El concepto del Tile Caching, DSBR en AMD, no es más que rasterizar la escena por tiles, no es un Tile Renderer porque no aplica todo el pipeline del tile rendering y en vez de utilizar una memoria especifica para almacenar el búfer de imagen de cada tile lo que hacen es hacerlo sobre la cache.

La ventaja de tener los datos en la cache significa que tienes los datos del búfer de dicho búfer de imagen en una memoria cercana al procesador, esto es ideal para los efectos de post-procesado que para operar acceder directamente al búfer o a los búferes de imagen.

El ejemplo más claro es el de la iluminación por diferido donde el tener todo el G-Buffer de cada tile en la memoria interna resulta en una enorme ventaja al no tener que acceder a memoria.

Deferred Rendering Pipeline

El problema viene es que al utilizar la cache para ello entonces puede que sin previsión alguna estos datos se acaben eliminando, es aquí donde es importante colocar una Victim Cache para que así de esta manera los tiles descartados y que a la hora de acceder a los datos no se tenga que viajar hacía la RAM.

La velocidad de reloj depende del consumo

Cuanto más lejos esta un dato del procesador más parte de este están activos y por tanto se consume mucho más.

Esto lo he hablado multitud de veces, el planteamiento tradicional de los procesadores es que su velocidad de reloj estándar va a depender de la instrucción con peor consumo energético y aunque las otras instrucciones tengan un consumo más bajo y puedan aumentar la velocidad de reloj no podrán hacerlo.

Una de las cosas que no forman parte de la especificación de RDNA 2 es el llamado Smartshift, la idea del Smartshift es aprovechar el poco consumo energético que tienen ciertas instrucciones para que en ese punto subir la velocidad de reloj del procesador, de esta manera con estos pequeños acelerones en instrucciones energéticamente más ligeras se consigue acelerar todo el conjunto.

Relación entre el Smartshift y la Infinity Cache

Con todo esto ya podemos unir las dos premisas y sacar como conclusión que la Infinity Cache reduce el consumo energético de una gran cantidad de instrucciones por el hecho que la mayoría de los datos acaban en dicha cache. Esto le permite al mecanismo del Smartshift poner la GPU a >2 GHz que es lo que ocurre en PlayStation 5 (no confirmado que tenga dicha cache) y RDNA 2 en PC (Navi 22 y Navi 21).

¿Infinity Cache en PlayStation 5?

¿Y como es que me atrevo a decir que PlayStation 5 tiene dicha cache? Bueno, por un detalle muy concreto, el SoC es extrañamente mucho más alargado de lo habitual:

La Infinity Cache es una cache para la GPU y no para la CPU, tiene sentido que se encuentre en el extremo y no en la parte central del chip, pero hay otro motivo que me hace pensar así y es la imagen que se filtro de Navi 21 hace unas semanas de la mano de Coreteks.

La conclusión es que de cara al diseño, Sony podría haber sacrificado espacio que podía ir a un mayor número de Compute Units para colocar la Infinity Cache, lo que le permite alcanzar mayores velocidades de reloj.

Esto NO significa que el diseño de Sony sea peor o mejor que el de Microsoft. Tampoco significa que sea más RDNA 2 que el de Microsoft ya que para ser RDNA 2 solamente es necesario que se cumplan los dos requisitos que he dicho al principio para que una GPU sea considerada RDNA 2 por parte de AMD.

¿Qué la Infinity Cache no se considere parte de RDNA 2 no es favorecer a Microsoft?

Esa es la pregunta del siglo, si al final se confirma que PlayStation 5 tiene Infinity Cache entonces podemos caer en la conclusión de que AMD la habría dejado fuera de los requisitos mínimos para ser considerada una GPU RDNA 2, lo cual sería irónico, especialmente para los del «pantano» que han ido dejando FUD con que PlayStation 5 no tiene una GPU con RDNA 2.

En realidad no es favorecer a nadie, Xbox Series X tiene una GPU que es más potente por el hecho que a día de hoy la mayoría de etapas del pipeline gráfico dependen del rendimiento de las Compute Units, pero es una diferencia realmente menor y la más pequeña que ha habido en los últimos años.

Simplemente los ingenieros de Microsoft no han tenido interés alguno en añadir la Infinity Cache en su diseño, su objetivo era llegar a los 12 TFLOPS con un die de 360mm^2 ya desde el principio.