En la actualidad las tarjetas gráficas se dividen en dos tipos, las que están pensadas para jugar y aquellas que se usan para otras aplicaciones de más alto valor. Es decir, para simulaciones científicas y militares, entre otras muchas cosas. Sin embargo, hay una unidad que nos acompaña desde la primera tarjeta 3D de éxito, la unidad de rasterizado, que podría desaparecer y con ello la organización o arquitectura de las GPU del futuro. ¿Las consecuencias? El fin de la separación entre los modelos solo para gaming y los que se usan en otros ámbitos
Los juegos en 3D a tiempo real a día de hoy son el 99% de los juegos, pero en ordenador llegaron gracias a la popular en su día Voodoo Graphics y el hecho de tener un chip que se encargaba de una función común. Estamos hablando de la unidad de rasterizado, la cual se encuentra hoy en día en todos los chips gráficos, pero que con el paso del tiempo desaparecerá. ¿Qué consecuencias tendrá esto en el hardware del futuro?
Las GPU están cambiando
Las GPU son procesadores especializados en gráficos, con cierta capacidad para trabajar en propósito general. Esto se debe a que sus núcleos hace tiempo que dejaron de ser para tareas especializadas para poderse utilizar para tareas generales. De ahí a que buena parte de los grandes superordenadores del mundo las utilicen hoy en día para simulaciones científicas y militares de gran envergadura, así como otras aplicaciones en auge como la inteligencia artificial.
Sin embargo, existen todavía una serie de unidades que realizan tareas concretas, pero que son necesarias para poder generar los gráficos. Su trabajo no solo es liberar a los núcleos principales de las mismas, sino trabajar en paralelo. Su mayor ventaja es que al tener una tarea fija o concreta a hacer requieren menos transistores para construirse y, por tanto, son un coste menor y un consumo menor que hacer que de la tarea se encargue el núcleo principal.
Sin embargo, puede ocurrir que una pieza de hardware especializada quede desfasada, ya sea por no ir al compás de los avances en rendimiento de otros elementos o por el hecho que funcione de una forma que no es ideal. Pues bien, nos estamos encontrando con que en el chip principal de las tarjetas gráficas están apareciendo un tipo de unidades en concreto y desapareciendo otro tipo.
El adiós a la unidad de rasterizado
Si miráis las especificaciones de cualquier tarjeta gráfica, veréis que una que cada vez tiene menos importancia es la que habla de «triángulos por segundo». Mucha gente piensa que es la cantidad de estos que se ponen en pantalla y otros creerán que son la cantidad que se calcula. Ambas son falsas por el hecho de que esto depende de la aplicación que estemos ejecutando. Es más, se trata de una tasa fija y si nos damos cuenta es siempre la velocidad de reloj para la cantidad de unidades de rasterizado. Al menos a día de hoy.
Dichas unidades fueron avanzando en rendimiento, de pasar a requerir varios ciclos de reloj para rasterizar un triángulo, a hacerlo a la velocidad actual, pero llevan diez años sin evolucionar. ¿Su trabajo? Proyectar el mundo en 3D calculado en vértices a una superficie 2D compuesta por píxeles, la pantalla, a los que posteriormente se les calculará el color. Por lo que se trata de una unidad imprescindible, ya que cuando hacemos una escena en 3D todos y cada uno de los triángulos se acaban convirtiendo en píxeles; sin embargo, dicha unidad pronto podría decir adiós.
¿El motivo? Sus limitaciones
El problema de las unidades de rasterizado es que no están pensadas para trabajar con triángulos muy pequeños, es decir, los que se rasterizan en pocos píxeles. Es más, cuando un objeto lo componen pocos píxeles, lo que hace el rasterizador es concluir que está muy lejos y marcarlo para su eliminación. Eso sí, antes comprueba su distancia a la cámara con el búfer de profundidad para eliminarlo de escena y que no se tenga que calcular. Esto también se hace con objetos que se encuentran detrás de otro más grande, lo cual da problemas cuando el objeto más al frente es transparente en cierto grado. Lo que da problemas, pero eso es harina de otro costal.
¿El problema? Estamos avanzando a un mundo donde se está buscando usar geometría a niveles extremos para el detalle de personajes, objetos y escenarios. Lo que significan tasas de triángulos que las unidades de rasterizado actuales no pueden soportar. Lo cual es un cuello de botella, pero el problema está en que no pueden trabajar bien con triángulos pequeños. En el sentido de que si tenemos 100 triángulos de 50 píxeles, esto no se traduce en 200 de 25 píxeles. Por lo que su eficiencia va bajando a medida que los polígonos con los que se trabajan son más pequeños.
¿Cuál es la solución?
Tanto es así, que la gente de Epic Games de cara a la creación del Unreal Engine 5 ha tenido que crear una unidades de rasterizado usando shaders de computación para ello. Es decir, los núcleos de la GPU haciendo mucho mejor el trabajo de una unidad de función especializada. Lo que pone en peligro el futuro de la misma. Por el momento no se ha visto descartada, sin embargo, ya tiene la espada de Damocles encima, al igual que la unidad de teselacion o de subdivisión de superficies.
En una entrevista realizada en mayo de 2020 a Brian Karis, el programador gráfico afirmo que han desarrollado dos clases de rasterizadores de triangulos por software para el Unreal Engine 5. Este supone que el nuevo motor de Epic, que se utilizará por decenas de juegos en la industria, ya tiene la capacidad de prescindir de la unidad de rasterizado. Es decir, reemplazar uno de los núcleos de la GPU para reemplazar a cada una de dichas unidades y ganar más rendimiento con ello.
La gran mayoría de los triángulos se rasterizan por software usando shaders de computación muy especializados, y que se han diseñado para tomar ventajas de las que nos podamos beneficiar. Cómo resultado, hemos sido capaces de dejar a los rasterizadores por hardware mordiendo el polvo en esta tarea específica. La rasterización por software es un elemento principales de Nanite que nos permite conseguir lo que hace. No podemos vencer a los rasterizadores por hardware en todos los casos, por lo que los usaremos cuando determinemos que sea el camino más rápido.
Blanco y en botella, como se puede leer. Van a desaparecer por el hecho que son transistores que NVIDIA, Intel y AMD pueden aprovechar para otras cosas que tomarán más importancia en un futuro.
¿Por qué cambiará la organización de las tarjetas gráficas?
Si miráis los diagramas de cualquier GPU veréis que los núcleos se organizan en bloques alrededor de un rasterizador. Esto se debe a que estos envían tanto datos hacia dichas unidades y también los reciben, según cuál sea la etapa del pipeline 3D de la que estemos hablando. Por lo que eliminarla supone una reorganización. En la actualidad, el tamaño ideal para una eficiencia al 100% de las unidades de rasterizado 48 píxeles para NVIDIA y 64 para AMD. Esto limita además la cantidad de núcleos en los modelos pensados para gaming. Lo cual, en el caso de la marca de verde, se puede ver comparando sus chips para computación de alto rendimiento y para gaming.
Como se puede ver, el GPC de la H100 no tiene un Raster Engine, lo que le permite no tener una organización tan fija y, por tanto, limitada. Este cambio le permitirá a NVIDIA, y también a AMD, el no tener que diseñar dos diseños distintos para HPC y Gaming, sino que podrán tirar de un modelo universal de base en cuanto a diseño. Desde el cual podrán iterar. A día de hoy, independientemente de si hablamos de un procesador central o uno gráfico, nos encontramos que la intercomunicación son entre 2/3 y 3/4 del total del chip y resulta titánico el hecho de tener que trabajar en dos chips distintos.
No olvidemos que cada nuevo nodo son más transistores, esto son más piezas y más ingenieros a contratar. Se llegará al punto en que las mismas tarjetas gráficas que se ofrece para trabajos científicos sea la gama alta para gaming, por el hecho que no se hará rentable hacer dos modelos distintos y la eliminación de la unidad de rasterizado será clave en todo este proceso de unificación.