(Viene de la entrada anterior)

Urian: al final lo que me parece entender que esa caché L3 de gran tamaño colocada encima del SoC e interconectada con un gran ancho de banda con este no solamente sirve para paliar los problemas de Switch, sino que es también crucial de cara al Ray Tracing.

Mr. X: en todo caso he de aclarar una cosa. En el caso de las arquitecturas de NVIDIA en PC, Turing y Ampere, que corresponden a las RTX 20 y RTX 30 el hardware que atraviese el árbol BVH se encuentra en los RT Cores, pero si está atravesando la estructura de datos significa que no calcula las intersecciones y viceversa. Es por ello que muchos desarrolladores acaban adoptando la opción de AMD que no es otra cosa que utilizar los shaders para atravesar la estructura de datos, esto le quita potencia a otras tareas y por tanto empeora el rendimiento general a la hora de renderizar los gráficos.

Urian: y en un dispositivo móvil con poco tamaño en el chip estas soluciones son cruciales.

Mr. X: cuando tienes una tarea redundante y por tanto repetitiva que absorbe buena parte de los recursos, entonces la idea es hacer uso de un acelerador. Lo cual es mucho mejor que aumentar el número de núcleos de propósito general, ya que sería mucho más caro en cuanto a costes tanto de fabricación como en la energía consumida. En todo caso, esta solo es una parte de la ecuación, realmente todo viene por una pelea entre NVIDIA y Microsoft sobre como implementar el Ray Tracing a tiempo real.

Urian: eso me interesa

Mr. X: si miras el pipeline de DirectX Ray Tracing verás que el planteamiento inicial era que todo lo hiciesen los shaders, todo vía computación y eso es extremadamente lento. Tuvimos que crear los RT Cores para la intersección o los sistemas eran demasiado lentos, y esto te hablo de 2017. Pues bien, estos últimos cuatro años hemos ido creando nuevas unidades de aceleración de cara al trazado de rayos, para liberar al resto de la GPU y hacerlo más viable, pero en especial en bajo consumo.

Urian: y supongo que uno de los aceleradores es el que has comentado antes para recorrer la estructura de datos espacial, la cual almacena de forma ordenada la organización de la escena.

Mr. X: en realidad la gente de Imagination fue la que marco el camino sobre el Ray Tracing a tiempo real combinado con la rasterización. Bien que su tecnología estaba pensada para muy pequeña escala, pero sus aceleradores para diferentes partes del trazado de rayos se han demostrado cruciales.

Urian: yo escribí hace tiempo, leyendo documentación varia, un artículo en HardZone sobre el añadido de dos aceleradores para acelerar el Ray Tracing, al final del mismo mencioné lo de la memoria embebida tal y como me has comentado.

Mr. X: en el mundo de los dispositivos de bolsillo no es tan difícil de entender, me resulta gracioso cuando hay gente que te dice que la GPU del SoC tal tiene la potencia de una Xbox One. Si no recuerdo mal Apple lo dijo de su A12, lo que no dicen es que el ancho de banda que tiene es ridículo para el rendimiento que se dice que tiene. Es cierto que es un tile renderer y esto reduce el impacto sobre los accesos a memoria, pero los accesos a las texturas siguen estando ahí y estas no te caben en la caché interna del procesador.

Urian: de ahí a colocar memoria embebida encima del procesador, te permite tener el ancho de banda necesario para poder ejecutar varias operaciones, en parte recuerda al sistema de Xbox One con la ESRAM, pero es mucho más eficiente al no tener que gestionarse manualmente. Simplemente cuando un dato se descarta de la caché L2 por falta de espacio lo manda a la L3, de cara al Tile Caching es muy eficiente y además acelera el Ray Tracing por el hecho que te coloca el BVH ahí.

Mr. X: en efecto, si a esto le añades hardware que tenga unidades de aceleración con la capacidad de generar el árbol BVH a partir de la información de la escena sin necesidad de la CPU y un motor de coherencia como dices en el artículo entonces acabas teniendo un sistema eficiente de cara al Ray Tracing para un sistema de bajo consumo.

Urian: básicamente sería NVIDIA tomando el guante que Imagination dejo.

Mr. X: más bien lo dejo Apple, quienes descartaron las ideas, luego vino Microsoft con su «por computación se hace todo» y ya sabemos cuál ha sido la historia. En todo caso te has dejado un tema muy importante que es la compresión de la geometría, es una de las piezas clave de las que nadie habla.

Urian: supongo que habrá un límite en cuanto a la cantidad de datos que el árbol BVH puede llegar a almacenar en su interior y este se verá afectado por el tamaño de la caché L3 que es donde se almacenará toda la estructura de datos.

Mr. X: no solo la estructura de datos, sino también la geometría de la escena, la cual es almacenada ya en la caché L2 para ser descartada en el rasterizado. Dicha geometría baja a la caché L3 durante la etapa de rasterizado y en paralelo el acelerador correspondiente crea el árbol BVH de la escena que almacena en la propia caché L3. La cantidad de polígonos por escena es crucial y es por eso que hemos tomado a Nintendo, sus juegos tecnológicamente no son punteros y hacen uso de poca geometría e información de color, por lo que es la plataforma ideal.

Urian: y mientras tanto la gente hablando de cosas como el aumento de la resolución a los 4K y todo eso.

Mr. X: Nintendo está muy enamorada del mundo de la animación generada por ordenador, Pixar para que nos entendamos, y a ellos les parece más interesante poder aplicar esta técnicas de visualización a sus juegos que poner más píxeles en pantalla. Es más, las limitaciones en el ancho de banda nos impiden aumentar la resolución y hacerlo no mejora la calidad visual.

Urian: y dado que Nintendo no es muy dada a ampliar sus estudios de desarrollo en cuanto a personal para tener un mayor control sobre ellos supongo que la idea es continuar con los mismos assets y motores que en la actual generación, pero añadiendo el Ray Tracing en la ecuación.

Mr. X: BINGO

Urian: la parte final que quiero discutir en cuanto a gráficos es el DLSS, tengo la sensación de que es un parche que nace como falta de potencia para el Ray Tracing.

Mr. X: en efecto, el motivo de ello es como aumenta la potencia necesaria a medida que la escena se hace más compleja. Mientras que en la rasterización esta aumente en un factor de O( N* log(P)) donde N es la cantidad de polígonos y P la cantidad de píxeles en pantalla, el Ray Tracing tiene la fórmula invertida y es O( P* log(N)).

Urian: es decir, que se llega a un punto en que la cantidad de geometría no afecta al rendimiento en el Ray Tracing, en cambio en la rasterización lo hace siempre. En cambio la cantidad de píxeles serán siempre un problema en el trazado de rayos y de ahí a que sea preferible renderizar a menos resolución y de ahí el DLSS.

Mr. X: en efecto, en todo caso el punto en que el rasterizado no es útil aún no hemos llegado. Antes daremos el salto a los micropolígonos y por tanto a escenas con alta densidad como las que se han visto en el Unreal Engine 5. Obviamente este tipo de complejidad no la vas a ver Switch 2 o como Nintendo la quiera llamar.

Urian: si, pero esto no es lo que yo quiero discutir. Lo que se es que el DLSS requiere un aprendizaje que está atado a los servidores de NVIDIA y una de las armas que tienen para vender sus tarjetas gráficas en PC. De lo que tengo dudas realmente es si NVIDIA tiene interés en promocionar tecnologías como el G-SYNC, DLSS, Reflex u otras tecnologías en producto para un ecosistema cerrado que ellos no controlan como es el de Switch 2. Entiendo que hayáis añadido el tema del Ray Tracing en un dispositivo de bolsillo, pero es que lo pregunto por el tema de la IA.

Mr. X: en primer lugar los Tensor Cores no los podemos sacar de la ecuación por el hecho que vienen con el diseño de cada SM, y sale mucho más caro en tiempo de desarrollo eliminarlos. Reorganizar internamente cada uno de ellos para reorganizar la GPU internamente y luego todo el SoC. Lo que muchos no saben es que eliminar dichas unidades supone cambiar por completo toda la estructura de la unidad shader y no es solo desconectar y listo. Si lo haces es por el hecho que necesitas ese espacio que ganas para otro elemento. En segundo lugar, unidades como los CVA y el NVDLA que están pensadas para el mundo de la visión por computador se han eliminado, pero no por falta de interés, sino por falta de espacio en el chip, ya se sabe, preferencias.

Urian: es decir, que los Tensor Cores siguen estando ahí y no los habéis eliminado, pero mi pregunta no iba a nivel de hardware realmente.

Mr. X: buena parte de las nuevas tecnologías de NVIDIA están pensadas para aprovechar los Tensor Cores que incluimos a partir de Volta, algunas de ellas no requieren el uso de dichas unidades para funcionar, pero a ciertos niveles de potencia ayudan. El problema viene cuando miras las gráficas de utilización de los Tensor Cores en los juegos y ves que es nula, esto es debido a que los núcleos Tensor y CUDA no son concurrentes, se encuentran en el mismo subcore y comparten registros, por lo que cuando utilizas unos los otros están inactivos.

Urian: por lo que tendría sentido desactivar los Tensor Cores, ganar espacio y añadir cosas como SM extra.

Mr. X: ¿sabes cuál es el contraargumento? Ocupan tan poco espacio que eliminarlos en un hardware como el de la Switch 2 apenas te daría 2 SM más en total y la relación entre lo que se requiere para implementar los Tensor y lo que dan es mucho más beneficiosa que añadir SM adicionales.

Urian: vale, entiendo que están ahí por el hecho que aporta más su presencia que eliminarlos. Lo que no me veo es a Nintendo hablar de DLSS en el marketing de la consola, tampoco veo a NVIDIA metiendo el morro en el ecosistema entre Nintendo y los desarrolladores. Por eso me choca buena parte de la parafernalia en los foros acerca de hacer una consola 4K a través del DLSS.

Mr. X: el DLSS es un sistema de postprocesado, el cual toma la imagen original del búfer de imagen final, ¿no has pensado que posiblemente esto ocurra, pero fuera de la unidad principal de la consola?

Urian: a ver si lo entiendo, estáis hablando de añadir un procesador en el Dock que tome el búfer de imagen y lo escale a tiempo real. Entiendo que no sería una GPU completa, sino algo más sencillo, en todo caso, esto encarecería el dock enormemente.

Mr. X: ¿no has pensado que quizás Nintendo lance dos modelos con el mismo hardware base pero con dos docks distintos? Uno sería para 1080p y el otro para 4K. Además, sobre el tema del DLSS en la propia Switch 2, no hay suficiente potencia para escalar en altas resoluciones.

Urian: ¿puedes contar algo más?

Mr. X: si, pero no debería hacerlo, piensa que no puedo dar especificaciones técnicas ni nada por el estilo.