Diseño e implementación de módulos básicos de las arquitecturas actuales de GPUs comerciales

¿Qué es una GPU?

[Entrada de Wikipedia] GPU es un acrónimo utilizado para abreviar Graphics Processing Unit, que significa "Unidad de Procesado de Gráficos".

Una GPU es un procesador dedicado exclusivamente al procesamiento de gráficos, para aligerar la carga de trabajo del procesador central en aplicaciones como los videojuegos y o aplicaciones 3D interactivas. De esta forma, mientras gran parte de lo relacionado con los gráficos se procesa en la GPU, la CPU puede dedicarse a otro tipo de cálculos (como la inteligencia artificial o los cálculos mecánicos en el caso de los videojuegos).

Una GPU está altamente segmentada, lo que indica que posee gran cantidad de unidades funcionales. Los distintos bloques que configuran la arquitectura de la GPU son conocidos como el pipeline gráfico.

Todas las arquitecturas GPUs que hay en el mercado están marcadas por un fuerte hermetismo que hace que los diseños sean totalmente opacos para la comunidad científica.

¿Cuál es el objetivo del proyecto?

El primer objetivo del proyecto es la familiarización del proyectando con las arquitecturas GPUs. Este tipo de procesadores, que tiene poca mención durante  la ingeniería, está incorporado en todos los ordenadores actuales, en todas las vídeo consolas y cada vez más en los dispositivos móviles que cada vez tiene un nivel más alto de exigencia gráfica. Además las GPUs se están emplezando a utilizar para procesamiento de propósito general consiguiendo unos rendimientos asombrosos. Por lo tanto el conocimiento profundo de la arquitectura GPU abrirá muchas puertas y oportunidades al futuro ingeniero de telecomunicación.

Como objetivo más electrónico, tenemos la optimización a bajo nivel de distintas etapas del pipeline gráfico en cuanto a retardo, área y potencia consumidas.

¿Cómo se va a desarrollar el proyecto?

El proyecto va a constar de dos fases:
  • Análisis: En la primera fase, se analizarán las distintas etapas del pipeline gráfico que componen las GPUs actuales con shader unificado (e.g. las GPUs de la XBOX 360 o la PS3). Al final de esta fase podremos establecer un orden de importancia entre los distintos módulos para decidir cuáles son más interesantes de optimizar.
  • Prototipado: Posteriormente, se realizará la descripción en VHDL de las etapas que se haya decidido, realizando finalmente un prototipado del diseño realizado en una placa con una FPGA de última generación (Virtex4 o Virtex5).