Si habéis seguido la serie de articulos especulatorios sobre el potencial hardware de PS5, el cual se esta haciendo utilizando información como patente de la propia Sony, recordaréis que hablamos de un mecanismo de IA por hardware para la realización de ciertas funciones en concreto como es por ejemplo la interpretación de la captura de imagen desde la cámara, pero no sabíamos que tipo de mecanismo iba a colocar Sony para ello.

De cara a aplicar hardware para la IA tenemos varias soluciones posibles que son las siguientes:

La diapositiva es del Project Brainwave de Microsoft pero me sirve para ilustrar lo que vamos a tratar en esta entrada.

Actualmente los mecanismos más utilizados para IA son los chips dedicados como los Neural Engine/Neural Processing que hay en los SoC de los smartphones…

Estas unidades tambien son conocidas como Tensor Processor Units e incluso Tensor Cores. En cambio cuando se refiere a una GPU nos estamos refiriendo a que una GPU sin cambios ni añadidos en el hardware se encargue de ello, un ejemplo reciente es la AMD Vega de 7nm presentada hace unas semanas.

La otra solución fuera de utilizar una CPU es la implementación de una unidad FPGA… ¿Pero que es un FPGA?

Una FPGA o matriz de puertas programables (del inglés field-programmable gate array) es un dispositivo programable que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada en el momento mediante un lenguaje de descripción especializado. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.

Las FPGA se utilizan en aplicaciones similares a los ASIC sin embargo son más lentas, tienen un mayor consumo de energía y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGA tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus costes de desarrollo y adquisición son mucho menores para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también menor.

Y esta es precisamente la solución que Sony va a implementar en PS5 y lo sabemos por una patente reciente, cuyo diagrama principal es el el siguiente:

La unidad FPGA se encontraría conectada no a Data Fabric/Uncore principal sino al IO Hub, lo cual tiene sentido porque la cámara estará conectada directamente al IO Hub para transmitir los datos y si el FPGA ha de procesar la imagen para su interpretación o ambas cosas tiene sentido que el camino de dato de las imagenes capturadas por la cámara pasen primero por dicha unidad FPGA.

Esto significa que el FPGA se encuentra en el Southbridge, no sabemos si integrado en el chipset principal, dentro del Southbridge pero separado del chipset principal o simplemente en un subsistema aparte tanto del Southbridge como del chipset principal… Yo personalmente pienso y puede que erre al 100% que dicha unidad FPGA se encuentra en un chip aparte con su memoria y su NAND Flash asociadas.

Pero su trabajo no se va a limitar a la nueva PlayStation Camera, también va a servir para lo que es la salida de imagen y esto nos lleva a un video que hice hace unas semanas en lo que a este aspecto se refiere y es importante para entender todo el contexto.

Sony en sus televisores más avanzados tiene integrado un FPGA al que llaman X1 el cual se encarga de escalar de resolución la imagen y limpiarla. Sony podría llevar a cabo la misma idea en el FPGA de PS5 pero es que además se puede trasladas (siempre y cuando el FPGA sea lo suficientemente rápido) cualquier función de IA sin problemas como es el Denoising del Raytracing por ejemplo como punto operación final sobre la imagen, aunque sinceramente pienso que tiene más que ver con el escalado y limpieza de imagen, más que nada porque el Denoising pide mucha potencia.

¿Y cual es el motivo de ello? En uno años aparecerá el estandar ATSC 3.0 que hace que la distribución del contenido televisivo se haga a través de fibra optica y por tanto a través de internet. Pero ninguno de los televisores y decodificadores actuales lo soporta pero es el formato de televisión estandar que vamos a ver en un futuro.

Esto significa que los sistemas de distribución en la nube como el PlayStation Now se pueden ampliar y no ofrecerse solo para el juego en la nube sino para el contenido televisivo a través de streaming. Pero con ello hay un problema adicional, la enorme cantidad de peliculas y series en formatos de resolución muy antiguos donde un reescalado simple acabaría por ofrecer una calidad de imagen que sinceramente…

Es aqui donde la unidad FPGA entraría en acción y realizaría el escalado en resolución y la limpieza de imagen y si, lo habéis adivinado, es el mismo concepto que el Deep Learning Supersampling que Nvidia ha integrado en las Turing, en realidad el concepto no es otro que coger un fotograma final y escalarla intentando adivinar los valores de los pixeles faltantes utilizando una red de Deep Learning, esto le permite a la GPU poder renderizar la escena sin tener que calcular el pixel/fragment shader ni los efectos de post-procesado a tantos pixeles ahorrando potencia y permitiendo una mayor cantidad de operaciones por pixel dando una mayor calidad de imagen que los 4K nativos.

No obstante se ha de aclarar que este método no es el Checkerboard Rendering aunque al igual que este utiliza una serie de fotogramas para predecir. No se cual es el rendimiento de esto en la FPGA que Sony puede implementar pero si es un X1 Ultimate entonces estamos hablando de que puede escalar de 4K a 8K a una velocidad de 33.3ms (30hz) dado que los 8K son 4X la resolución de los 4K.

Los 30hz lo se porque el cable más avanzado disponible a corto plazo es el HDMI 2.1 que permite 4K120hz que es lo mismo que 8K30hz. Dado que en televisión y video son imagenes estáticas ya renderizadas que no se han de formar se tiene todo un tiempo de fotograma para escalar el siguiente, pero en el caso de los juego la cosa es más complicada y se ha de tener en cuenta el input lag de la pantalla.

En resoluciones más bajas el tiempo de cuadriplicar la resolución en pixeles sería más bajo, por ejemplo de los 1080P a los 4K el tiempo sería de 8.33 ms de tiempo, esto haría a este escalador una mala idea para ser utilizado para enviar la imagen al HMD pero en un televisor normal, especialmente si reesscalamos desde resoluciones como los 1440P como ocurre con el DLSS de Nvidia que recordemos funciona bajo el mismo principio. ¿Y como puede saber el FPGA cuales son los colores? Pues es muy simple, porque tenemos varios fotogramas de la escena a menos resolución como muestras que ayudan al mecanismo Deep Learning.

En general tanto el DLSS en los Tensor Cores de Turing como lo que os estoy comentando en la hipotetica FPGA de PS5 parten del mismo principio general que si quereis ver bien explicado en apenas 12 minutos aquí tenéis el video.

El otro tema relacionado con esto y lo recordaréis de cuando trate recientemente el tema del HMD y de la cámara de seguimiento es el tema de la velocidad de la cámara y la resolución, aquí se aplicaria el mismo principio, la cámara enviaria a poca resolución la imagen y la FPGA escalaría la imagen, para ello tomaria antes de nada varias fotos a toda resolución del entorno en su memoria para realizar el escalado y obtener una resolución lo suficientemente buena. para la intepretación de la imagen sin tener que recortar la tasa de captura de imagenes. De esto ya hable de pasada en una entrada reciente.Tened en cuenta que en el modo VR como he comentado antes el escalado de imagen es una tonteria por el tiempo de fotón pero no es una tontería utilizar el FPGA para mejorar el tracking.

Pe… pero Urian… La patente a la que has referenciado no habla de todo eso… ¿De que estas hablando?

Es cierto, pero estoy hablando de las ventajas que de entrada tendremos con la inclusión del FPGA en el hardware y para que veais que mi especulación de cara a futuro tiena una base viable y posible, nada más. Pero la otra parte de la patente me gustaría comentarla y de paso me servirá para responder al siguiente comentario:

Urian a mi me gustaría que profundizaras más en la retrocompatibilidad de PS5 sobre todo con las anteriores PlayStation (1,2 y 3) En cierta ocasión lei un rumor de que PS5 sería compatible via hardware con PS3. ¿Que podría haber de cierto en ello? ¿Y PS2 y PSOne)
Gracias

El problema de PS3 son los SPE, un tipo de unidad dentro del CBEA que era la clave de muchas funciones en la consola y que eran altamente utilizados en los juegos.

La CPU de PS3 que era el PPE no es problema emularla a través de un interpete, pero los SPE es imposible emularlos con la suficiente velocidad hoy en día… ¿La solución?

  • Incluir los SPE a nivel de hardware en el Chipset de la consola, lo que supondría re-diseñarlos desde cero para nodos mucho más avanzados.
  • Utilizar la unidad FPGA para emular su funcionamiento.

¿Y porque no hacerlo via GPU? Pues porque las referencias a los SPE en los juegos de PS3 no son a través de una lista FIFO, los SPE son núcleos programables como una CPU convencional aunque no hagan de esta y tendríamos que cambiar el código de los juegos y eso va en contra del concepto de retrocompatibilidad, por otro lado no podemos olvidar que en PS3 el sonido es generado por los SPE por lo que se quiera o no hasta que los sistemas no sean lo suficientemente rápidos como para emular por software por lo que necesitamos hacerlo por hardware ya sea añadiendo el hardware nativo como otras vias como la que estoy comentando.

Para que la gente lo entienda, via inteprete podemos emular el codigo del PPE (CPU principal) y del RSX a través de un interprete pero es muy dificil llevar a cabo el de los SPE. En teoría a través de los núcleos adicionales aparte del primero y teniendo en cuenta que es Ryzen deberíamos poder ejecutar los juegos de PS3 sin necesidad del FPGA… Pero siendo realistas no me extrañaría que Sony utilizara la unidad FPGA para emular el SPE porque es ahora lo que en «Modo PS3» le daría a PS5 la suficiente velocidad y garantia para ejecutar los juegos sin problemas de compatibilidad. En todo caso no deis como hecho que la consola va a poder ejecutar nativamente los juegos de PS3, es una hipotesis lejana y no olvidemos que para eso Sony tiene el PlayStation Now.

Pero recordemos que Sony ha empezado a implementar la descarga de juegos en el PSnow de PS4 y existe la posibilidad lejana de que esto se pueda hacer con los juegos de PS3 y en ese caso sería necesario que el hardware de la consola fuese capaz de ejecutar los juegos sin problemas pero esto es una posibilidad muy remota.

Lo que quiero que se entienda es que la unidad FPGA la podemos utilizar para emular a cualquier tipo de procesador que necesitemos en cada tipo de aplicación sin tener que desarrollar el hardware dedicado a ello y tenerlo que integrar.

Y con esto termino, como siempre tenéis los comentarios en esta entrada y el Discord del blog para comentar.