Mark Cerny, «Arquitecto Jefe» de la PlayStation 5 acaba de hacer un publirreportaje de SONY publicado en WIRED de 15 minutos de duración, el cual es el siguiente:

Pues bien, soy de los que piensa que lo de Mark Cerny como «Lead System Architect» no es más que un título de decoración para ocultar como la división de hardware de PlayStation se desmanteló hace tiempo.

Soy escéptico sobre lo que dice Cerny

Perdón si soy muy crítico con el vídeo, pero hay cosas que una vez tienes los conocimientos suficientes hace que te pongas totalmente escéptico ante cualquier vídeo. No es por no creer al bueno de Mark, es por el hecho que con PlayStation 4 Pro él ya tuvo el gazapo de decir que la arquitectura de la GPU de la consola era GCN Polaris o lo que por aquel entonces era una RX 480. El problema con afirmar esto es que a nivel de PC es habitual tanto para AMD como NVIDIA de ir cambiando el set de instrucciones continuamente, algo que no puedes hacer en consolas, donde se incluyen shaders ya compilados para un conjunto en concreto dentro de los juegos. El problema es que si esas instrucciones no están o funcionan diferente entonces ya vienen los problemas.

¿Qué es lo que añadió SONY en la GPU PS4 Pro y por qué no es Polaris?

  • Paso de 2 Shader Engines con 9 Compute Units cada uno a 4, llegando a 36 Compute Units, algo para lo cual no hace falta la arquitectura Polaris.
  • Añadieron nuevas unidades RB para el soporte del Delta Color Compression, lo cual AMD había integrado en su arquitectura GCN 1.2, una generación anterior a Polaris.
  • El soporte del Rapid Packed Math es algo que AMD añadió en Vega, la generación posterior a Polaris.
  • La cantidad de caché L2 en la GPU de PS4 Pro es de 1 MB, en la RX 480 es de 2 MB.
  • 16 RBE son 64 ROPS en PS4 Pro, 32 en el caso de Polaris.

En realidad la consola con una GPU que es literalmente una AMD GCN Polaris es la Xbox One X, fue en ese momento cuando me volví escéptico respecto a lo que hablaba Cerny al hablar de las consolas de SONY. ¿El problema? La documentación del SDK le contradice y de mala manera. Aunque he de decir que no tengo a mano la de PS5 y creo que pasará un tiempo a que la podamos tener para comprobar las cosas.

En todo caso, veamos las citas del vídeo de 15 minutos que más me han llamado la atención.

El SSD

Tuvimos peticiones para un SSD desde PlayStation 4, en particular Tim Sweeney quien es el visionario fundador de Epic Games quien dijo «los discos duros están atrasando a la industria», él no los llamaba discos duros, sino «medio oxidado que gira». Los desarrolladores querían quitarse de encima los discos duros dado que es donde se almacena toda la información del juego

Esto me ha llamado la atención y nadie se va a dar cuenta del detalle, creo que en medio del desarrollo de la PS4 Pro los desarrolladores le dijeron que colocará una unidad SSD en la consola. Desgraciadamente AMD no tuvo lista la tecnología para que sus GPU pudiese interactuar con un unidad de estado sólido hasta después de terminar el desarrollo de PS4 Pro.

Los desarrolladores pidieron un SSD NVMe con una velocidad de lectura de al menos 1 GB/s, nosotros decidimos ir a 5 o 10 veces más rápido. Siempre es bueno tener un objetivo alto.

SONY ya sabía que podían utilizar el PCIe Gen 4 que les daba ese ancho de banda por si solo, echarse flores en ese sentido, como que suena raro.

Por cierto, el controlador personalizado para el SSD de PS5 no lo ha hecho ni SONY.

Por fin, memoria unificada

La mejor característica de la E/S integrada es la «compresión invisible». Los desarrolladores han de pasar una buena parte del tiempo descargando los datos desde el disco duro o el SSD. Con la E/S integrada nos hacemos cargo de ello. Los desarrolladores hacen uso de las herramientas de desarrollo y nos encargamos de la descompresión. (Mark entonces se pone a hablar de los tamaños de instalaciones reducidos en PS5 respecto a PS4).

¿Soy el único que a esta parte le ha parecido que Mark explicaba una cosa que no tiene nada que ver co la descompresión al vuelo? El gran problema cuando tú tienes una cantidad enorme de datos comprimidos que se transmiten del punto A al punto B es que si los tienes que descomprimir la velocidad de descompresión ha de ser muy rápida y eso puede llegar a matar el rendimiento de varios núcleos de la CPU, de ahí el motor de descompresión.

El sistema de E/S integrado en cambio me parece que describe otra cosa distinta y más compleja, pero hay que entender la historia de las consolas PlayStation para entenderlo. Desde la primera PlayStation a la tercera el mayor desafió para programar estas consolas eran las unidades DMA, las cuales se encargan de gestionar los envíos a las diferentes partes del sistema. La política de SONY para ganar rendimiento es que en vez de hacer que los procesadores fueran a los datos estos fueran llevados a los procesadores a través de una potente unidad DMA.

Una de las cosas que se busca con la memoria de direccionamiento unificado es que todos los componentes vean la RAM como un pozo en común a la hora de acceder a ella, que no tengan que utilizar unidades DMA para copiar de un lado a otro. ¿A qué me refiero con esto? Cerny en el caso de PS4 estuvo mucho tiempo hablando del HSA, lo cual no era más que el plan de AMD para unificar el acceso a la memoria como si fuese una característica de PS4, no lo era y al final lo ha sido de PS5, pero por motivos de compatibilidad supongo que en los modos PS4 y PS4 Pro no se encuentra activo.

No, no estoy siendo irónico, algo que Mark Cerny les pidió a los de AMD para PS4 van y lo reciben por parte de los de Lisa Su siete años más tarde y no es la única petición que han tenido que esperar una generación entera, la otra son los llamados Primitive Shaders. Los cuales nacieron de la necesidad de poder emular el Pre-Culling del CBEA de PS3 en la GPU vía computación.

La CPU

Sigamos con las palabras de Cerny:

Idealmente prefiero utilizar una única CPU muy rápida, pero esa tecnología no existe. Practicamente cualquier dispositivo que utilizas: tu PC, tu teléfono, tu consola. Generan la potencia necesaria utilizando múltiples núcleos.

Yo me apuntaría esto para más adelante, por el hecho que me veo a una futura PlayStation adquiriendo la estrategia de núcleos heterogéneos de diferentes rendimientos, pero asignando a los núcleos de menos rendimiento los trabajos en segundo plano o que piden menos potencia para ejecutarse. Es una estrategia que tiene sentido cuando necesitas ampliar el número de núcleos y te ves limitado por el espacio en el chip.

Hay muchas opciones para la cantidad de núcleos, la pregunta es: cuantos quieres que vayan a la CPU y cuantos quieres que vayan a la GPU. Algunos de los desarrolladores querían 16 núcleos, pero los videojuegos están tan centrados en los gráficos que tuvimos que explicar que podíamos hacer eso, pero la GPU se haría más pequeña e inmediatamente se retractaron.

Lo dicho, apuntaros lo de los 16 núcleos, me veo a una PS5 Pro con 8 núcleos Zen 4 y 8 núcleos Zen 2 compartiendo espacio en el mismo SoC. Con el paso a los 5 nm ese espacio que Mark dice que no existía al desarrollarse PS5 se va a ganar para una PS5 Pro.

La GPU

Las GPU son complejas en cuanto a características, las cuales son añadidas año tras año y esto ha sido así durante dos o tres décadas. Cuando hablamos de con los desarrolladores la mayoría de conversaciones son sobre la GPU, sobre esa sopa de letras de características que son increíblemente importantes para los programadores de los motores gráficos. Ellos buscan más rendimiento, más flexibilidad a la hora de usar dicho rendimiento, nuevas características y modificaciones en las que ya existen.

Aquí Cerny lo hace ver como si SONY hubiese sido la que ha incluido esa lista de características tras preguntarle a los desarrolladores. Más bien ha sido trabajo de AMD que en el presupuesto y espacio que SONY ha acotado en el desarrollo del chip.

Hemos terminado con un AMD RDNA 2 personalizado que puede funcionar hasta a 2.3 GHz y alcanza más de 10 TFLOPS de potencia

Mejor no alimentar a los troles ni crear polémicas, digamos que AMD es muy laxa sobre lo que se considera RDNA 2, es más, Xbox tampoco tiene el set completo de las RX 6000 en PC.

Compatibilidad hacia atrás

Algunas de estas personalizaciones son gigantescas como la compatibilidad hacia atrás con PlayStation 4. Esta es difícil por los cientos de características en la GPU de PS4 en las que los desarrolladores confían. Para que sus juegos funcionen correctamente en PS5 cada una de estas características ha de ser apropiadamente incluida. Necesitamos a veces incluso aislar los juegos de las capacidades de PS5.

Si miramos el White Paper de la arquitectura RDNA nos encontramos que AMD es clara en que RDNA es compatible hacia atrás con GCN:

Por lo que estamos con que si PS4 Pro utiliza un superconjunto de instrucciones de PS4, entonces PS5 utiliza un superconjunto del de PS4 Pro. La diferencia esta en que RDNA ejecuta las instrucciones de manera más eficiente consiguiendo un mayor rendimiento con menos recursos. Por lo que eso de tarea gigantesca como que no, Cerny lo dibuja como la gran odisea para conseguirlo cuando AMD ya lo tenía más que planeado para ofrecerlo tanto a SONY como a Microsoft en bandeja de plata.

Ray Tracing

Sin duda alguna, la característica más ilusionante de la nueva GPU es el trazado de rayos. (A continuación Cerny se pone a hablar de las bondades del Ray Tracing y como se llega a una tercera era nunca vista).

¿De verdad Mark nos vienes a hablar que la característica más ilusionante de PS5 es el Ray Tracing cuando fue el añadido de última hora? En serio, todo el mundo que ha seguido el diseño de la nueva consola sabe que la GPU integrada en el SoC original no tenía Ray Tracing y lo añadisteis a última hora.

El Ray Tracing no fue una de las características clave que pidieron los desarrolladores. La mayoría porque tenían la dificultad de creer que tuviésemos la suficiente potencia para el Ray Tracing para hacer cualquier cosa interesante con este.

No es una característica clave para los desarrolladores, pero al mismo tiempo inicia una tercera era en los gráficos. ¿Está confesando Mark Cerny lo que ya sabíamos, que la potencia para tener un Ray Tracing que marque diferencia no es suficiente en la GPU de PS5? Y sí, sé que hay juegos que lo utilizan para ciertos efectos, pero la potencia es cuanto menos limitada. Incluso en PC se necesita al menos una generación adicional de tarjetas gráficas.

El Ray Tracing es un problema de computación

Para que la gente lo entienda, el Ray Tracing utiliza el pipeline de computación y no el gráfico, el cual funciona al mismo tiempo que el gráfico. No utiliza unidades aparte, sino las mismas de cálculo que para generar gráficos, pero con una diferencia, no hace uso de las unidades de función fija como las que se utilizan para el texturizado, el rasterizado, el teselado, etc.

Cuando Mark Cerny hizo el Road to PS5 dijo lo siguiente respecto a las especificaciones de PS5:

Si tú calculas solo los TeraFLOPS obtienes el mismo número, pero en la actualidad el rendimiento es notablemente diferente debido a que los TeraFLOPS se definen como la capacidad computaciones de las ALU vectoriales

Esta es solo una parte de la GPU y hay un montón de otras unidades, las cuales funcionan más rápido cuando la frecuencia de la GPU es un 33% más alta la rasterización van un 33% más rápido, el búfer de comandos va más rápido, las otras cachés tienen más ancho de banda, etcétera.

La única contrapartida es que la memoria del sistema este un 33% más lejana en término de ciclos. Pero el número de beneficios contrarresta esto.

En esto Mark tiene razón, la unidades de función fija aumentan su velocidad si subimos la velocidad de reloj de la GPU, el problema es que de cara al Ray Tracing estas unidades no se utilizan y la mejor estrategia es aumentar la capacidad de cálculo de la GPU. Algo que es lo que ha hecho NVIDIA con sus RTX 30 al duplicar el ratio unidades FP32, AMD con RDNA 3 hará lo mismo y sabemos que Intel ha seguido el camino con Intel ARC, el Ray Tracing necesita una gran potencia de cálculo.

Sobre el tema de la memoria, las GPU a la hora de ejecutar los shaders tienen formas de enmascarar la latencia, pero no en otras cosas. ¿Dijo Mark en el Road to PS5 que la consola está limitada en ancho de banda?

También es más fácil utilizar al completo 36 CU en paralelo que utilizar 48 CU cuando los triángulos son pequeños es mucho más difícil llenar a las CU con trabajo útil.

El motivo por el cual existe la capacidad de ejecutar el pipeline de computación y el gráfico al mismo tiempo es para que cuando las Compute Units estén paradas por no tener nada que hacer puedan utilizar esos periodos para hacer otras tareas. El Ray Tracing es una de esas tareas, pero según Mark es difícil llenar 48 Compute Units. Más bien el problema es que no tenían espacio en la APU o SoC de la consola y tiraron por la solución de última hora de subir la velocidad de reloj o más bien añadir una velocidad de Boost, la cual se alcanza en momentos puntuales.

Aunque todo esto que os he explicado muchos ya lo sabíais, sorprende mucho que Mark Cerny empiece a hablar del Ray Tracing cuando era una característica a la que él y su equipo no le dieron importancia.

3D Audio

El audio estéreo convencional se siente como si el sonido viniese de dentro de la cabeza, con el audio en 3D se siente como si viniese del mundo que te rodea. Queríamos que el audio en 3D fuese algo que todo el mundo pudiese experimentar. Algo que funcionará con los auriculares ordinarios que ya tienes o con los altavoces del televisor. También nos quisimos asegurar que no haya contraprestaciones para los desarrolladores de videojuegos. Cosas como tener que escoger más enemigos en el campo de batalla o utilizar 3D Audio.

Nuestra solución para todo eso fue una unidad dedicada para el Audio en 3D en nuestro chip principal personalizado. El motor personalizado que maneja la tecnología Tempest 3D Audio soporta cientos de fuentes de sonido y cada una de ellas pueden ser una cantidad inmensa de cálculos en coma flotante. Por suerte tenemos una forma de hacerlo, las GPU son extraordinariamente buenas en cálculos en coma flotante, así que lo que hemos acabado utilizando para el audio en 3D es una Compute Unit, justo como las de la GPU, pero esta vez personalizada para el audio en 3D.

Cuando en el Road to PS5 Mark nos habló del Tempest Engine nos dijo que era una Compute Unit para qué funcionará como los SPE del CBEA, ambos tipos de unidades son muy parecidas, pero los SPE tienen una serie de diferencias:

  • Obviamente no tienen unidad de texturas.
  • Carecen de un sistema de cachés.
  • Solo tienen acceso a la memoria local y los datos han de ser traidos desde el exterior por una unidad que es una especie de DMA avanzado llamado MFC.

Cuando se empezó a mirar la litografía del SoC de PS5 muchos se pusieron a buscar el Tempest Engine como unidad aparte y este no se encuentra por ningún lado. ¿Está mintiendo Mark? En absoluto, pero es importante tener en cuenta una tecnología que AMD llama TrueAudio Next. ¿En qué consiste? En aislar o más bien reservar un grupo de Compute Units para que se encarguen del audio en 3D, realmente no es una tecnologia de hardware.

¿Qué es lo que yo pienso? Las 4 Compute inactivas en el chip no lo están, sino que se encargan del TrueAudio Next, tecnología de AMD que SONY ha rebautizado como Tempest Engine. ¿Es algo malo? No, pero habrá que ver si esa perdida del 10% de la potencia de la GPU para gráficos para dedicarlo al audio 3D merece la pena o no.

¿A dónde quiero llegar con esto? Cerny le dio a AMD una lista de cosas a implementar dentro de unas limitaciones y la empresa de Lisa Su lo ha hecho. Para Mark existe una unidad personalizada para el audio en 3D, en AMD han aislado algunas Compute Units de la GPU para hacer ese trabajo. El resultado final es el mismo.