PS “Neo” no es sobre los 4K ni sobre la VR

La calificación 4K para la altamente rumoreada PS “Neo” es algo que sinceramente no entiendo conociendo cuales son las supuestas especificaciones del dispositivo por un lado y por el otro la imposibilidad en estos momentos de realizar una consola 4K con las capacidades visuales de PS4… ¿y como lo se? Solo hay que mirar dichas especificaciones y tener un poco de conocimientos para darse cuenta de cual es el problema que subyace en el upgrade de PS4, incluso para realizar un upgrade a 1440P.

tumblr_numbhwQkHE1sn9lg7o1_1280

¿El motivo? La GPUs son unos sistemas altamente complejos compuestos por dispositivos, algunos programables y otros de función fija conectados entre si y todos ellos tienen una importancia enorme y pese a que es posible trasladar las funciones de las máquinas de estado no programables a la parte programable la potencia necesaria para ejecutar dicho código resulta enorme y hay que tener en cuenta que los shaders en mucho casos son altamente dependientes de dichas unidades para funcionar. ¿Por qué digo esto? El tipo de Shader más utilizado y más dependiente de la resolución es el Pixel/Fragment Shader, el cual esta altamente ligado a los ROPS y las TMUs, en el siguiente diagrama del OpenGL 4.3 se puede ver dicha dependencia:

e532be3fb9eaf4989d47342f5ea31f71

El Fragment Shader esta directamente conectado al Texture Fetch… ¿Que es? En realidad es un nombre para una de las funciones de las unidades de texturas… ¿recordáis el diagrama de las Compute Unit de las arquitecturas GCN? Cada una de ellas tiene 4 Textura Fetch en su interior.

Compute Unit

¿En que se basa el Texture Fetch? Simple…

Captura de pantalla 2016-05-05 a las 8.42.39

Captura de pantalla 2016-05-05 a las 8.43.10

Captura de pantalla 2016-05-05 a las 8.43.37

Las unidades de texturas acceden a la memoria global de la GPU… ¿Pero como lo hacen? Simple y llanamente haciendo peticiones al controlador de memoria para que les traiga los datos, esto significa que el aumento de número de TMUs significa que tiene que haber un aumento del ancho de banda. ¿Os acordáis como ayer comente que en el caso del RSX de PS3 su bus de 128 bits resultaba un cuello de botella? Esto era porque su configuración de 24 Pixel Shaders a 500 Mhz estaba pensada para un bus el doble de rápido que el de la consola, en la actual PS4 tenemos un bus de 176 GB/seg que por lo visto es correcto para la configuración… Pues bien, ¿recordáis que antes he puesto el diagrama de las CUs? Pues bien, esa es la parte que ha sufrido el upgrade más grande en PS “Neo”.

Captura de pantalla 2016-05-05 a las 8.53.29

No obstante el ancho de banda no ha aumentado… ¿Esto a que es debido? La explicación es sencilla, cuando tienes poco ancho de banda respecto a los recursos de potencia lo que buscas con el aumento de la potencia no es subir la resolución sino las operaciones por pixel. El subir la resolución de 1080P a 4K supondría de entrada un aumento de las TMUs de cuatro veces y en este caso estar hablando de una GPU con 72 CUs, además de un ancho de banda que fuese unas cuatro veces superior. Pero no es así y parece que todo se centra en el tema de la computación como apoyo gráfico y si… Esto no es algo nuevo si hablamos de las consolas de Sony, es algo que ya vimos en PS3 con los SPE haciendo de apoyo al RSX, solo que aquí la parte de computación y la parte gráfica se ejecutan sobre el mismo dispositivo.

PS4_SDK_2_34

La parte de computación no tiene ninguna dependencia de la función fija y en el tema gráficos se utiliza principalmente para el cálculo de dos cosas:

  1. Efectos de Post-Procesado de la imagen.
  2. Cálculo de la Iluminación de la imagen.

Muchos juegos de hoy en día siguen utilizando los Fragment/Pixel Shaders para iluminación y post-procesado pero esto esta cambiando actualmente de cara a los nuevos motores que hacen servir los Compute Shaders, pero en este caso nos toca hablar de otra elemento que son los ROPS, representados en el diagrama del OpenGL como Per-Fragment Operations. Los ROPS se encargan principalmente de escribir los búfers de imagen y realizar ciertos efectos de post-procesado si tienen las máquinas de estado integradas, por ejemplo los RBE de la arquitectura GCN disponen de máquinas de estado para el MSAA.

Los Compute Shaders tienen acceso directo a la memoria haciendo bypass a las TMUs y los ROPS para leer y escribir en memoria. Pero lo mejor es que puedes almacenar un dato en el LDS, no re-escribir en memoria y recuperarlo desde la propia LDS sin tener que hacer el proceso de escribir en memoria y recuperarlo. Este proceso es muy similar al de copiar los tiles del búfer trasero en la memoria local de los SPE del CBEA en PS3 solo que con la ventaja es mucho mayor porque hay una menor latencia al hacerse en la propia CU de la GPU. Lo importante es que haciendo esto para el post-procesado no se utilizan los ROPS por lo que la tasa de relleno de estos no se ve afectada.
Sin salir de los ROPS hay que tener en cuenta que estos también aumentan con la resolución y estos se encuentran asociados a la memoria. Un sistema con dicho ancho de banda supondría un sobrecoste enorme sobre el sistema y este es otro de los motivos por los cuales pienso que enfocar “Neo” con los 4K en mente es erroneo.
El otro tema es la iluminación por computación… Aquí entramos en un tema concreto: Iluminación Global compleja, en el caso de Sony recomiendan el uso de Sparse Cone Tracing, una versión menos precisa del Sparse Voxel Octree pero que sustituye la compleja estructura de datos por una más simple que se pueda almacenar en la LDS.
PRT 2 PRT APP Lighting Voxels Building Mipmaps PSSL & PRT Results
Lo he dicho muchas veces y muy pero que muy posible que me equivoque pero la función más importante que le veo al aumento de las operaciones por pixel es la aplicación de modelos de iluminación más compleja, en especial iluminación de tres rebotes, algo que mejora enormemente la calidad visual y sobretodo la representación de los materiales al representar de manera más precisa la luz sobre estos. En la presentación que hizo años Tim Sweeney, arquitecto del UE4, predijo que la potencia necesaria para 1080P  con luz de 3 rebotes son 2.5 TFLOPS (PS4 tiene una potencia de 1.84 TFLOPS), esto lo hizo durante una presentación hace unos años de la demo Samaritan y hay que recordar que Samaritan no hacía uso del SVOGI, por tanto en ese caso no hablamos de una escena realizada con dicha técnica sino simplemente una escena con un modelo de iluminación más complejo.
Samaritan2 samaritan_2011_technox4fh5
 En el caso de PS4 “Neo” hablaríamos de 4 TFLOPS si las especificaciones que han aparecido son ciertas por lo que hay margen de sobras para una iluminación mucho más compleja en los juegos que aumente la calidad visual de los mismos.
Pe… Pero Urian… ¿No significa esto tener que cambiar el código de los juegos y que hayan versiones específicas de Neo de algunos juegos o incluso exclusivos?
Por supuesto, eso dadlo por seguro pero no creo que Sony y sus editores independientes lo anuncien de entrada, primero veremos mejoras de juegos existentes que tendrán mejoras via parche, ya sea resolución y/o tasa de fotogramas o simplemente aplicando ciertos efectos de postprocesado adicionales. Pero tened en cuenta que tienen que haber juegos o versiones avanzadas de los mismos para PS Neo que justifiquen la compra del supuesto modelo avanzado de PS4… ¿Para que se va a comprar la gente la PS “Neo” si con PS4 estándar los juegos son plenamente funcionales? No tiene sentido alguno.
La otra parte que interesa es el PS VR, no olvidemos que la resolución del HMD de Sony es de 1080P por lo que no hablamos de un aumento de resolución pero si de la tasa de fotogramas.
psvr-beauty-angled-imageblock-us-15mar16
¿Pero en que pueden ayudar los Compute Shaders en el VR? Más que nada porque son el tipo de Shaders más beneficiados en esta mejora de las especificaciones y se comenta continuamente en los medios que el hardware sobretodo estaría pensado de cara a la VR. No olvidemos que pese a que el aumento de resolución no existe si que existe el de la tasa de fotogramas por segundo y por tanto la tasa de relleno se duplica en este caso y ya hemos visto como ese detalle no ocurre en las especificaciones de PS Neo, lo único que he podido encontrar es propaganda de AMD sobre el tema pero dado que la arquitectura es de la GPU es de AMD pues:
Async_VR
No podemos olvidar que no son las APIs las que crean funcionalidad para las GPUs sino que las GPUs son las que crean dicha funcionalidad que luego se ve plasmada en las APIs, el hecho de procesar la imagen de la escena no de manera intercalada sino simultánea tiene una importancia muy grande en el rendimiento.
Direct-x-12-split-frame-rendering
Aunque sinceramente sobre esto he de profundizar más y tenemos que tener en cuenta que la VR esta muy pero que muy verde, aunque al final he llegado a una conclusión de porque PS Neo existe y tiene que ver con el tamaño del chip.
PS4-SoC1
La APU/SoC de PS4 mide unos 348mm^2 a 28nm, buena parte de sus tecnologías no se van a trasladar a los 14nm FinFet pero si derivadas 100% compatibles con las mismas. El salto de los 28nm a los 14nm FinFet, lo cual supondría un salto de la densidad de 4X utilizando transistores MOSfet pero en el caso del FinFET es de 2X por lo que podemos colocar un chip de 348mm^2 en 172mm^2, una disminución importante pero hay que tener en cuenta el cableado externo, el pin-out, el cual no se puede reducir de la misma manera. Es decir, el ancho de banda con la memoria RAM asignada al mismo marca el tamaño del chip, dado que es un bus de 256 bits lo más seguro es que quedará un espacio lo suficientemente grande como para colocar una GPU más capaz y Sony ha decidido jugársela por lo que es posible que detrás de PS Neo no haya un tema estratégico.
No sabemos cual será el tamaño del nuevo chip, actualmente el coste por oblea de los 14nm FinFet es más alto (casi $5000) mientras que el coste por oblea de los 28nm es más bajo ($3500), el precio del chip va en consonancia al número de chips por oblea y el ratio de chips defectuosos y este ratio crece a medida que el chip es más grande. Si os habéis fijado en esta entrada no he hablado del HDR y por tanto no he hablado de Polaris, dado que este es una iteración de la arquitectura GCN y lo que comente el otro día no se si Sony va a adoptar cosas como una GPU Polaris y un uncore Onion3 o simplemente va a ser una reducción de tamaño del SoC de PS4… Perdonad si hago tantos tumbos con esto pero sin una referencia clara no se hacía donde tirar, en todo caso cuando se concrete la informacion esta duda quedará despejada.
Anuncios