Blog personal sobre tecnología

Disruptive Ludens

ADA

Rumores Banner

Este artículo es alto secreto, no lo distribuya ni hable de él, las penas son que le tomaran por loco y su reputación quedará destruida. Queda usted avisado.

#1 Cambios en la organización de los SM

SM TPC

Hasta el momento cada SM, Stream Multiprocessors, había sido organizado en 4 Sub-Cores, y cada 2 SM se encontraban agrupados en un solo TPC. Sí hacemos zoom entonces veíamos como cada Sub-Core esta compuesto por un planificador, los registros, las ALUs de enteros, coma flotante y las unidades Tensor.

Pues bien, empezando por el Sub-Core, NVIDIA ha realizado los siguientes cambios:

  • El número de unidades LD/ST (Load Store) ha pasado de 4 unidades a 2.
  • La cantidad de unidades SFU, FP32 e Int32 por Sub-Core se mantienen.
  • Los Tensor Cores son ahora el de la A100, por lo en vez de tener 4 Tensor Cores por SM ahora tenemos 8.

Si combinamos el aumento en la cantidad de Sub-Cores y la cantidad de Tensor Cores entonces tenemos un salto de x4 en cuanto a la capacidad de cálculo de los Tensor Cores y es que NVIDIA quiere llegar con Lovelace a los 1 PetaFLOP en FP16 haciendo uso de un chip monolítico.

DLSS NVIDIA Cost

De esta tabla, coged los tiempos de la RTX 3090 y dividirlos por 4 para haceros una idea aproximada de lo que supone este aumento de potencia de cálculo en los Tensor Cores.

Pero, no es lo único que NVIDIA añadirá a la ecuación, sino que hay otro elemento relacionado con el Ray Tracing y que también es ideal para este tipo de unidades.

Me estoy refiriendo al algoritmo de Denoising, que permite renderizar una escena en Full Ray Tracing, sin rasterización previa, con pocas muestras y obtener una mejor calidad de imagen.

NVIDIA tiene un Denoiser en su software OptiX para los Tensor Cores desde 2018 y es compatible con Volta, Turing y los dos tipos de Ampere. Pero hasta ahora no era lo suficientemente rápida para aplicar el Denoising a tiempo real en los juegos. Creedme que esta va a ser la espada de batalla de NVIDIA de cara al marketing en las RTX 4000.

Ya si nos vamos a lo que es el SM al completo la organización ya que no es de 4 Sub-Cores sino de 8. La caché de primer nivel ahora ha duplicado su ancho de banda por ello y el tamaño de la L1 + memoria compartida de cada SM es de 256 KB por SM. La nueva organización significan 256 ALUs en FP32 y 128 ALUs de enteros.

¿Las unidades de textura? Siguen siendo las mismas de siempre por SM, NVIDIA no las ha mejorado en lo más mínimo y por tanto solo hay 4 en total.

#2 Cambios a nivel de TPC

El ratio de SM:TPC sigue siendo el mismo y no ha cambiado. pero el polymorph engine si que lo ha hecho y esta vez NVIDIA va a apostar por la teselación y el culling a través de la IA.

De la misma manera que podemos entrenar una IA para generar o destruir píxeles, para así aumentar o disminuir el detalle en una imagen en 2D, también podemos entrenarla para que sea capaz de ver la geometría superflua de una escena y la elimine de manera directa sin que se tenga que hacer el Preculling.

¿Cómo? Pues utilizando las mismas técnicas que se utilizan para entrenar a una IA para conducción automática, reconocimiento de caracteres y demás elementos de la visión por computador, pero esta vez entrenando a la IA para que sea capaz de visualizar toda la geometría superflua y eliminarla en el proceso.

Otra aplicación es la creación de modelos con mayor o menor detalle con la distancia, ya que en el desarrollo de videojuegos se suelen crear varios modelos de un mismo objeto según la distancia, gracias al uso de la Inteligencia Artificial esta puede generar de manera dinámica versiones con menos detalle a partir de un solo modelado, el más detallado, como referencia.

La unidad que reemplaza al Polymorph Engine es esta unidad en combinación con una unidad del tipo Tensor, pero carece del mismo nivel de versatilidad, aparte de que no es programable excepto por la propia NVIDIA a través del firmware. Esta ideada para mejorar las capacidades del Culling y la Teselación dinámicas de cara al Mesh Shading.

#3 Cambios a nivel de GPC

Los ROPS y las unidades de Rasterizado se mantienen tal cual como están en las actuales RTX 3000, quizás con alguna mejora leve, pero NVIDIA hace tiempo que dejo de mejorar las partes relativas a la rasterización para centrarse en la IA y el Ray Tracing.

Lo que si que ha hecho NVIDIA es «copiarle» una idea a AMD que no es otra que el hecho de añadir una caché intermedia entre la cache global de la GPU y la cache local de cada Compute Unit, SM, en el caso de NVIDIA. Así pues cada GPC ahora tiene asignada una caché L2 o L1.5, dependiendo de como NVIDIA la quiera llamar.

No obstante funciona algo distinta que la caché intermedia, GL1, de las RDNA en los siguientes puntos:

  • Al igual que la GL1 permite la lectura a varios clientes en el GPC sin tener que pasar por la L2 de ciertos datos.
  • Ninguna unidad puede escribir en ella, pero actúa de Victim Cache para la L1 de los SM, esto significa que las líneas de caché descartadas por esta no van a parar a la L2 de manera directa o incluso a la VRAM, sino que se quedan en esta cache intermedia.

La idea no es otra que la de reducir la cantidad de transferencias desde la L2 a los SM, para así reducir el consumo energético de estas. No obstante los movimientos de escritura desde los SM y el resto de unidades de función fija se seguirán haciendo de la misma manera.