¿Por qué las GPU todavía tienen rasterizadores?

14

A pesar de los avances, las GPU modernas todavía tienen rasterizadores fijos. Altamente personalizable, con sombreadores programables pero no totalmente programables.

¿Porqué es eso?

¿Por qué las GPU no pueden ser simplemente dispositivos masivamente paralelos con unidades informáticas universales donde el rasterizador es solo un software para ese dispositivo proporcionado por el usuario?

¿Tener hardware de función fija es tan beneficioso en términos de rendimiento que tal enfoque es inviable?

mrpyo
fuente
1
"¿Por qué una unidad de procesamiento de gráficos no está en la unidad de procesamiento universal", es esa su pregunta?
Andreas
1
@Andreas No, mi pregunta es como se dice en la publicación. ¿Por qué los rasterizadores siguen siendo una parte del hardware, cuando podrían hacerse en software (de hecho, ya podrían hacerse con OpenCL, o sombreadores de cómputo)? La pregunta es por qué no es común ... tal vez es simplemente el rendimiento, no sé, es por eso que estoy pidiendo ...
mrpyo
Puede omitir la rasterización e implementar su propio rasterizador con unidades de cómputo en las GPU modernas y, de hecho, conozco personas que hacen esto para fines específicos.
JarkkoL
Los rasterizadores convierten los polys vectoriales en un montón de píxeles que podemos iluminar. Cuando ya no tengamos píxeles, o dejemos de usar geometría vectorial, ya no necesitaremos rasterizadores. No importa cómo se vea el resto de su canalización, al final del día (o marco), necesita píxeles. El rasterizador solo nos dice qué píxeles nos preocupan para un triángulo dado. Todo eso es programable: si desea una salida diferente del rasterizador, envíe diferentes triángulos a su manera. O simplemente dibuje todo en una textura de renderizado en un sombreador de cálculo y deslícelo a la pantalla con un quad alineado con la vista.
3Dave

Respuestas:

15

En resumen, las razones de rendimiento son las razones por las que no son programables.

Historia y mercado

En el pasado, solía haber núcleos separados para procesadores de vértices y fragmentos para evitar diseños de FPU hinchados. Hubo algunas operaciones matemáticas que solo podía hacer en el código de sombreador de fragmentos, por ejemplo (porque en su mayoría solo eran relevantes para sombreadores de fragmentos). Esto produciría graves cuellos de botella de hardware para aplicaciones que no maximizaran el potencial de cada tipo de núcleo.

A medida que los sombreadores programables se hicieron más populares, se introdujeron unidades universales. Se implementaron más y más etapas de la tubería de gráficos en hardware para ayudar con el escalado. Durante este tiempo, GPGPU también se hizo más popular, por lo que los proveedores tuvieron que incorporar parte de esta funcionalidad. Sin embargo, es importante tener en cuenta que la mayoría de los ingresos de las GPU todavía eran videojuegos, por lo que esto no podría interferir con el rendimiento.

Finalmente, un gran jugador, Intel, decidió invertir en rasterizadores programables con su arquitectura Larrabee . Se suponía que este proyecto era innovador, pero el rendimiento fue aparentemente menor al deseado . Fue cerrado, y partes de él fueron rescatados para procesadores Xeon Phi. Sin embargo, vale la pena señalar que los otros proveedores no han implementado esto.

Intentos de rasterizadores de software

Ha habido algunos intentos de rasterización a través del software, pero todos parecen tener problemas con el rendimiento.

Un esfuerzo notable fue un intento de Nvidia en 2011 en este artículo . Esto se lanzó cerca de cuando Larrabee fue terminado, por lo que es muy posible que esto fuera una respuesta a eso. De todos modos, hay algunas cifras de rendimiento en esto, y la mayoría de ellas muestran un rendimiento varias veces más lento que los rasterizadores de hardware.

Problemas técnicos con la rasterización de software

Hay muchos problemas que se enfrentaron en el documento de Nvidia. Estos son algunos de los problemas más importantes con los rasterizadores de software:

Problemas mayores

  • Interpolación: la implementación de hardware genera ecuaciones de interpolación en hardware especializado. Esto es lento para el procesador de software, ya que tenía que hacerse en el sombreador de fragmentos.

  • Anti-aliasing: También hubo problemas de rendimiento con el anti-aliasing (específicamente con la memoria). La información sobre las muestras de subpíxeles debe almacenarse en la memoria del chip, lo que no es suficiente para mantener esto. Julien Guertault señaló que el caché de textura / caché puede ser más lento con el software. MSAA ciertamente tiene problemas aquí porque desborda el caché (los cachés sin textura) y se va a la memoria fuera del chip. Los rasterizadores comprimen los datos almacenados en esa memoria, lo que también ayuda con el rendimiento aquí.

  • Consumo de energía: Simon F señaló que el consumo de energía sería menor. El documento mencionó que las ALU personalizadas están en rasterizadores (lo que reduciría el consumo de energía), y esto tendría sentido ya que las unidades de procesamiento de fragmentos y vértices en el pasado solían tener conjuntos de instrucciones personalizadas (probablemente también ALU personalizadas). Ciertamente sería un cuello de botella en muchos sistemas (por ejemplo, móvil), aunque esto tiene implicaciones más allá del rendimiento.

Resumen

TL; DR: hay demasiadas ineficiencias que el renderizado de software no puede pasar, y estas cosas se suman. También hay muchas limitaciones mayores, especialmente cuando se trata de ancho de banda VRAM, problemas de sincronización y cálculos adicionales.

ases
fuente
No creo que necesite almacenar las muestras de subpíxeles si el filtrado de cajas es suficiente, entonces solo puede hacer promedios.
joojaa
2
Sospecho que el muestreo de textura y el caché probablemente también sean áreas donde las implementaciones de hardware permiten un rendimiento que de otro modo sería imposible de lograr con implementaciones de software.
Julien Guertault
3
@aces Otro elemento que vale la pena mencionar es el poder. El hardware dedicado hará el mismo trabajo normalmente con una fracción del presupuesto de energía y, dado que la limitación de energía ya es un problema, especialmente en dispositivos móviles, si se programa por completo, sería mucho peor.
Simon F
@JulienGuertault Fair point, pero creo que esto se aplica principalmente a MSAA. Los resultados de las pruebas parecen indicar que este no es un gran problema cuando todo cabe en la memoria en el chip (aunque esto podría tener algún impacto en el rendimiento independientemente).
Ases
@SimonF Creo que también es un gran punto. Lo incluí en la respuesta.
ases