Conferencia: Radeon HD 2900 y generación de geometría

Esta semana tuve la oportunidad de asistir a una pequeña charla impartida por Michael Dogget, ingeniero de ATi, acerca del diseño de la tarjeta gráfica Radeon HD 2900 y la generación de geometría 3D, cortesía del Departamento de Electrónica y Computación de la Universidad de Santiago de Compostela.

Michael inició su charla con una breve introducción al mundo 3D, tan breve que como no tuvieses algún conocimiento previo quedabas como estabas. Nos explicó que las tarjetas gráficas estaban centradas en renderizar triángulos. Que cada triángulo está definido por tres vértices y en cada vértice, aparte de sus coordenadas, se almacenan datos como el color de vértice, las coordenadas de textura, el vector normal y otros atributos personalizables.

Definió términos como rasterization (operación de dibujo de cada polígono-triángulo en pantalla) y pixel processing (o procesado de píxeles, que incluyen operaciones de iluminación, texturización y añadir detalles más complejos). Finalmente, terminó la introducción insistiendo en que la texturización es la manera más sencilla de añadir detalles a una escena 3D.

A continuación, venía el tema principal de la charla, la Radeon 2900, que si no entendí mal es la última generación de tarjetas gráficas de ATi. Básicamente, el objetivo de los ingenieros era combinar lo mejor de las GPUs existentes:
  • De la serie R5xx, es decir, la línea de procesadores gráficos para ordenadores, se tomaron las siguientes características:
    • Soporte para cientos de hilos.
    • Vec4+1 vertex y Vec3+1 pixel shaders.
    • Bus de memoria en anillo (ringbus memory).
  • De la GPU de la Xbox 360:
    • Shaders unificados: es decir, un mismo hardware preparado para hacer operaciones de vértices y de píxeles indistintamente.
    • Caché de nivel 1 unificada.
    • 1 tesellator: creo que esta unidad trabaja con las texturas, pero no sé exactamente qué hace.
Uno de los requisitos que se imponen los ingenieros de ATi es crear chips que sean lo más escalables posibles. De esta manera, pueden crear una amplia familia de procesadores gráficos basados en el mismo diseño y establecer gamas alta, media y baja (cada una con su nicho de mercado). Porque a pesar del exorbitante precio de las tarjetas de gama alta, donde de verdad hace dinero ATi es con la gama media y baja, que compra casi todo el mundo.

A continuación, Michael nos mostró un diseño esquemático del chip de la Radeon 2900, y lo primero que llama la atención (aparte de su extrema complejidad) es la multitud de memorias caché que hay en su interior, cada una especializada en una etapa específica del procesado de imagen 3D.

En la primera etapa de procesado, una serie de procesadores establece la carga de trabajo entre los shaders, decidiendo qué operaciones se van a ejecutar en los hilos de la GPU. La política por defecto favorece en caso de duda las operaciones de píxeles, pero si no entendí mal esto puede cambiarse.

El corazón del procesador contiene 4 unidades SIMD, donde cada una ejecuta una instrucción de tipo VLIW (instrucción de gran tamaño) en paralelo con las demás. Cada unidad descompone la instrucción en instrucciones más pequeñas. A destacar que el hardware está especialmente orientado a operaciones enteras y de tipo MAD (multiplicación y suma). En cuanto a números en coma flotante, me sorprendió saber que no cumplen con la totalidad del estándar IEEE 32.

Las últimas etapas de procesador se encargan de la texturización y filtrado de texturas, aplicación de transparencias y recorte de la escena 3D (es decir, decidir qué triángulos de la escena serán renderizados). Todo el esquema está rodeado por un bus de memoria de doble anillo, con 512 bits de anchura para lectura/escritura. Y en relación a esto, me pareció entender que el encapsulado del chip llevaba dos capas de pines (!!).

La última parte de la charla estaba dedicada a Direct3D 10, la última API de Microsoft para acceder a las funcionalidades 3D. Nos hizo un resumen rápido, del que quizás lo más destacable era el nuevo modelo de memoria unificada así como el soporte a geometry shaders (que aún no termino de entender para qué sirven exactamente, pero parece que permiten cosas tan interesantes como el per-pixel displacement mapping).

Por último, Michael Dogget terminó hablando del futuro de los desarrollos de ATi. Entre las motivaciones de ATi están mejorar la programabilidad y reducir el tamaño mientras se mantiene el rendimiento. También pretenden aumentar la precisión del chip para cálculos en coma flotante (acercándose en lo posible al IEEE) para la computación científica. Este tema interesa a ATi en tanto que la física se está convirtiendo en uno de los caballos de batalla dentro de los videojuegos.

Para terminar, Michael accedió a contestar a unas preguntas. Cómo no, se le preguntó sobre la reciente adquisición de ATi por parte de AMD. La pretensión de ambas compañías es construir una CPU y una GPU en un único chip, lo cual podría suponer un nuevo boom en el mundo de los portátiles.

En un entorno universitario, tampoco podía faltar la pregunta sobre la apertura de los drivers. Aunque ATi es reacia a abrir su hardware para protegerse de problemas con patentes, Michael Dogget cree que de todas maneras es el camino correcto.

NOTA: Corregido error semántico.

No hay comentarios: