El Mundo de Las Tarjetas Gráficas: Laura Raya González
El Mundo de Las Tarjetas Gráficas: Laura Raya González
El Mundo de Las Tarjetas Gráficas: Laura Raya González
El mundo de
las tarjetas gráficas
Laura Raya González
31
ACTA
El mundo de las tarjetas gráficas
à
marlos en información comprensible y representable
en un dispositivo de salida, como un monitor o tele-
visor. Está formada por múltiples componentes; entre ¿Qué es una GPU?
ellos se encuentran:
Al igual que nuestro ordenador tiene un cerebro,
n La GPU: como veremos en la siguiente sección conocido como CPU3, que realiza el control de todo
es el componente clave de la tarjeta. el ordenador, la tarjeta gráfica posee su propia unidad
especial, llamada GPU4. No es más que un procesa-
n La memoria de vídeo: es una memoria rápi- dor dedicado exclusivamente al procesamiento de
da que ha evolucionado mucho durante los últi- gráficos tridimensionales para aliviar la carga de tra-
mos años. Permite a la tarjeta manejar toda la bajo del procesador de propósito general en aplica-
información visual que le manda la CPU del sis- ciones como los videojuegos o las simulaciones. De
tema. Su tamaño varía con el modelo de tarje- esta manera, la CPU se puede dedicar a otro tipo de
ta. La memoria empleada en los últimos años cálculos (como la inteligencia artificial o los cálculos
está basada en tecnología DDR, destacando físicos en el caso de los videojuegos).
DDR2, GDDR3 y GDDR4.
Las principales compañías creadoras de GPUs son
n RAMDAC: es un conversor de señal digital a ATI (recientemente comprada por AMD) y Nvidia,
analógica. Se encarga de transformar las seña- por lo que los ejemplos expuestos a lo largo del traba-
les digitales producidas en el ordenador en una jo serán en su mayoría de ambas. Aunque también
señal analógica que sea interpretable por el existen modalidades de Intel, como, por ejemplo,
monitor. algunas de las integradas en placa.
n Disipador: conocido como dispositivo pasivo2 Mientras que una CPU se basa en la archiconoci-
compuesto de material conductor del calor, que da arquitectura Von Neumann, una GPU tiene un
extrae éste de la tarjeta. Su eficiencia va en fun- diseño totalmente diferente conocido como arquitec-
ción de la estructura y la superficie total, por lo tura streaming. El diseño de las CPU hace que, para
que son bastante voluminosos. reducir el número de accesos a la memoria principal
(debido a que es muy lento), el área del chip esté
n Ventilador: corresponde a un dispositivo acti- cubierta principalmente por una gran jerarquía de
vo que aleja el calor emanado de la tarjeta al memoria. El objetivo de dicha jerarquía es conseguir
mover el aire cercano. Es menos eficiente que una memoria de gran velocidad, pero provoca la limi-
un disipador y produce ruido al tener partes tación en el uso de un mayor número de transistores
móviles. como unidades aritmético lógicas (ALU) y unidades
n Alimentación: hasta hace unos años, la ali- de coma flotante (FPU) [1].
mentación eléctrica de las tarjetas gráficas no
había supuesto un gran problema, sin embargo,
la tendencia actual de las nuevas tarjetas es con-
sumir cada vez más energía. Aunque las fuentes
de alimentación son cada día más potentes, el
cuello de botella se encuentra en el puerto PCIe.
Por este motivo, las tarjetas gráficas con un con-
sumo superior al que puede suministrar el PCIe Figura 2. Fotografía de una GPU de la compañía ATI (izquierda)
incluyen un conector (PCIe power connector) y de Nvidia (derecha).
que permite una conexión directa entre la fuen-
te de alimentación y la tarjeta, sin tener que Sin embargo, en la mayoría de GPUs tenemos un
pasar por la placa base. modelo circulante que hace que su arquitectura
reduzca considerablemente el gasto energético nece-
Además, no es de extrañar que algunas de las tar- sario para que unas etapas y otras accedan a la infor-
jetas de última generación requieran fuente de ali- mación y, como consecuencia, el porcentaje dedica-
mentación propia. do a la computación aritmética aumenta.
32
El mundo de las
tarjetas gráficas
Hoy en día, la complejidad de una GPU es tal que se encuentran relacionadas con el atributo de posi-
puede rivalizar sin complejos con la de un procesador ción del vértice y finalizan con las que son más cerca-
genérico. De hecho, se dice que la GPU crece en el nas al atributo de color del píxel [1].
volumen de cálculo que pueden procesar, a un ritmo
tres veces más rápido que los procesadores generales.
Basta decir que el chip G80 de Nvidia, utilizado en la
familia de tarjetas gráficas de la serie 8, integra 681
millones de transistores. Figura 3. Esquema del cauce gráfico en la generación
de imágenes sobre una GPU.
Esta evolución es debida a que es un hardware
gráfico de bajo coste, ya que, el crecimiento de la La CPU coge una lista precalculada con los vérti-
industria de los videojuegos ejerce una presión muy ces de todos los polígonos de la escena y la envía a la
fuerte en el mercado, con muchos usuarios muy exi- GPU. Así, inicialmente, a la GPU le llega la informa-
gentes pero pequeños bolsillos. ción de la CPU en forma de vértices, lo que evita
enviar toda la información de la imagen, por lo que el
De esta manera, se han conseguido altas presta- tráfico en el bus (PCI o AGP) es mucho menor, en la
ciones y que, desde hace unos años, puedan ser pro- mayoría de las veces, enviando únicamente los vérti-
gramadas con lenguajes de medio nivel al igual que ces, que si tuviéramos que enviar todas las caracterís-
las CPUs. ticas de la escena.
33
ACTA
El mundo de las tarjetas gráficas
rotación de las figuras. El procesador cambia la polígono 3D en una matriz 2D de puntos, donde se
posición de los vértices, lo que afectará a la posi- guarda información acerca del color, profundidad
,
ción en donde será dibujado el objeto al final. Una realizando una interpolación de cada uno de los pun-
GPU puede tener varios procesadores de vértices; tos que lo conforman.
por ejemplo, la Nvidia Geforce 7800GTX tiene 8 y
la Nvidia GeForce 7950 contiene hasta 16 procesa-
dores de vértices. Cuando en la caja de su tarjeta
gráfica ve que le venden un número de vertex sha-
der determinado, se refiere a este tipo de procesa-
dores. Cuantos más procesadores disponga de este
tipo, mayor trabajo en paralelo puede realizar su
tarjeta gráfica, por lo que conseguirá un mayor ren-
dimiento [3].
Esta etapa del cauce es programable desde los Figura 5. Proceso del rasterizado.
años 2000 y 2001, conocidos como vertex shaders
los programas con dicho objetivo. Es decir, se trata de
hardware programable6. Antes de disfrutar de las Procesado de fragmentos
ventajas del hardware gráfico programable, en un
código que usara alguna librería gráfica para el rende- El resultado de la etapa de rasterización es lo que
rizado, había unas pautas muy fijas. Los datos le llega al procesador de fragmentos. Un fragmento es
seguían siempre el mismo camino, pasaban por los el conjunto de datos que se produce tras la rasteriza-
mismos sitios, se transformaban de la misma manera ción de las primitivas (triángulos, puntos, cuadrados,
y los resultados que se obtenían, por lo tanto, tenían etc.), como, por ejemplo, el color, la profundidad (Z),
poca variedad (a pesar de que la API ofrece muchas el dato del stencil buffer, etc.
posibilidades de configuración). En este hardware se realizan las transformacio-
Con la introducción de los vertex shaders, se nes referentes a los fragmentos, tales como la apli-
modifica el procesador de vértices de la tarjeta gráfi- cación de texturas o transformaciones sobre los
ca, de tal manera que el programa se convierte en un fragmentos que, finalmente, constituyen el píxel a
microcódigo que configura una serie de etapas. De visualizar.
esta manera, se puede utilizar la GPU para operacio- Esta etapa también es programable por medio de
nes como morphing, waves y otras transformaciones fragment shaders8 que se convierten en el microcó-
procedurales a nivel de vértices. Es decir, se pueden digo correspondiente. Si bien es interesante poder
conseguir los gráficos que hoy en día estamos acos- manipular los vértices en la GPU, como se comentó
tumbrados a ver en películas y videojuegos. anteriormente, lo que los programadores también
querían era poder manipular los fragmentos (píxeles)
a su antojo.
Rasterizado
Las GPU actuales también cuentan con varias
Tras la manipulación de los vértices, se define la unidades, disponiendo más que de procesadores de
parte de ellos que se va a visualizar (técnica llamada vértices (la mayoría de los casos). Esto se debe a
clipping7) y se eliminan los triángulos cuya cara no que en el cauce aumenta el volumen de datos a
está orientada hacia la cámara (técnica denominada medida que lo recorremos (y recordemos que los
culling). Así, no se trabajará con aquellos objetos o procesadores de fragmentos se encuentran al final
partes de un objeto que en la escena final no vayan a del mismo) y necesitamos más unidades en este
ser visibles. Esto sucede en la etapa de rasteriza- punto para que haya un equilibrio y no se produzca
ción, donde cada polígono es convertido a una serie un cuello de botella9. Por ejemplo, la Nvidia
de fragmentos del tamaño de un pixel. Este paso del 7800GTX tiene 24 y la Nvidia 7950 posee 48 pro-
cauce se encarga de convertir cada punto, línea o cesadores de píxeles.
34
El mundo de las
tarjetas gráficas
Finalmente, están las etapas de ROP y de blen- Un fragment shader no interviene en el proceso
ding que van componiendo la escena. También se de la definición del esqueleto de la escena. Aplica
pasan múltiples tests para eliminar aquellas cosas que las texturas y se tratan los píxeles que forman parte de
queden ocultas por otros objetos, que no queden ellas. Básicamente, un fragment shader especifica el
dentro del punto de vista de la cámara
color de un píxel. Este tratamiento individual de los
Si resumimos todo el proceso en un simple esque- píxeles permite que se realicen cálculos principalmen-
ma, éste quedaría como en la figura 6: te relacionados con la textura del elemento y en tiem-
po real.
Existen diferentes lenguajes para poder programar
una GPU. Desde el más bajo nivel, como puede ser
el ensamblador, como distintos lenguajes de alto nivel
como son Cg de Nvidia, GLSL, HLSL (High Level
Shading Language) de Microsoft, OpenGL Shader,
CUDA de Nvidia
CG
Su nombre viene de C for Graphics y fue desa-
rrollado por Nvidia. Cg está definido sobre lenguaje
C, por lo que su sintaxis resulta muy parecida, a pesar
de ser un lenguaje de propósito específico. Sin
embargo, la manera de programar es completamente
diferente a lo que un programador de CPU estaría
Figura 6. Resumen cauce gráfico en la GPU.
acostumbrado. Esto es debido a que se está progra-
mando sobre una arquitectura completamente dife-
rente (como vimos en los apartados anteriores) y es
à
necesario su conocimiento para poder empezar a
programar sobre ella [5].
Programación en la GPU
Cg ofrece la posibilidad de programar sombras,
geometrías, animaciones
sobre el hardware gráfico,
Las GPUs han evolucionado tanto que se pueden por lo que es un shading language. La manera de
programar10 sobre ellas ciertos efectos, aumentando el programar en Cg es muy parecida a la estructura de
rendimiento de nuestro proceso. Se llamarán shaders una GPU que se vio anteriormente. Se trabaja con
(también conocidos como sombreadores) a los progra- vértices y con fragmentos, creando vertex shaders y
mas que permiten crear código ejecutado en la GPU, fragment shaders.
pero hay que tener en cuenta que no todas las etapas
del pipeline11 son programables. Existen shaders para Además del lenguaje, se debe utilizar una API
vértices (que se ejecutarán en el procesador de vértices (Application Programing Interface) gráfica para
anteriormente estudiado) y shaders para fragmentos comunicar el procesador central con el gráfico. Hay
(que lo harán en el procesador de fragmentos). dos APIs principales: por un lado OpenGL (Open
Un vertex shader es una función que recibe Graphics Language), que es una especificación están-
como parámetro un vértice. Sólo trabaja con un vér- dar que define una API multilenguaje y multiplatafor-
tice a la vez, y no puede eliminarlo, sólo transformar- ma para escribir aplicaciones que produzcan gráficos
lo. Para ello, modifica propiedades del mismo para 2D y 3D. Fue creada por Silicon Graphics a principios
que repercutan en la geometría del objeto al que per- de los años 1990 y es gratuita, libre. Se utiliza princi-
tenece. Con esto se pueden lograr ciertos efectos palmente en aplicaciones de CAD, realidad virtual o
específicos, como los que tienen que ver con la defor- simulación de vuelo.
mación en tiempo real de un elemento; por ejemplo, Su principal competidor es DirectX, creado por
el movimiento de una ola. Microsoft, que sólo funciona para Windows. Es utili-
10 Los lenguajes de programación como C, Java, Pascal, C++ son lenguajes para la CPU.
11 Otra forma de llamar al cauce gráfico.
35
ACTA
El mundo de las tarjetas gráficas
CUDA
CUDA es una implementación tecnológica de
Nvidia nacida en noviembre de 2006. Se compone
de una arquitectura hardware y de un SDK de alto
nivel para compilar los programas que vayan a hacer
uso de la misma (todas las GeForce a partir de la serie
8 incluyen la tecnología Nvidia CUDA) trabajando en Figura 7. Fotografía de una tarjeta gráfica 8800GTX de Nvidia.
conjunto. Mediante un grupo de extensiones sencillas
del lenguaje permite al programador hacer uso de la
tarjeta para funciones de cálculos masivos y paralelos, Como con el cauce gráfico clásico12 había un núme-
es decir, para propósitos generales. De esta manera, ro definido de procesadores de vértices y otro de frag-
la GPU puede ser utilizada para cualquier tipo de mento, con mucha probabilidad los procesadores de
operaciones matemáticas que involucren procesa- fragmentos no harían nada, mientras que los de vér-
miento en paralelo [2]. tices serían insuficientes.
Contiene una síntesis muy parecida a C para crear Lo mismo ocurriría en una aplicación que hiciera
programas que se ejecuten en diferentes threads. uso de un gran número de texturas. Los procesadores
Esto quiere decir que la tecnología CUDA procesará de fragmentos estarían saturados mientras que los de
miles de tareas simultáneamente, habilitando así una vértices no harían nada. Por ello, al crear un procesa-
gran capacidad de flujo de datos. Permite a cientos de dor unificado13, estos problemas desaparecerían, ya
núcleos de procesador comunicarse simultáneamente que es posible utilizar un cierto número variable de
y cooperar para resolver problemas complejos de recursos dependiendo de la carga en cada etapa y en
cómputo. cada momento.
A diferencia de Cg, no requiere del uso de una En este tipo de arquitecturas, se puede conseguir
API para comunicarse con la CPU. un mejor rendimiento. Por otro lado, las FPUs (donde
se realizan todos los cálculos necesarios) están mejor
à
diseñadas que en series anteriores, por lo que consi-
La nueva arquitectura unificada guen mayor precisión en sus cálculos.
Hoy en día, si se va a una tienda de informática y
Con el nacimiento de CUDA, cambió la manera se desea comprar una de las últimas tarjetas de Nvi-
de diseñar y programar las GPUs. Mientras que, dia, dicho hardware tendrá arquitectura unificada,
como vimos anteriormente, hasta la serie 8 de Nvidia por lo que los conocimientos aquí explicados pueden
las tarjetas tenían procesador de vértices y procesador resultarle de mucha ayuda a la hora de elegir uno u
de fragmentos, la arquitectura unificada lo que reali- otro modelo. O si tiene alguna duda, por ejemplo,
zó fue la unión de ambos procesadores. De tal mane- entre comprar una serie 7 de Nvidia o una serie 8, sea
ra, que en las tarjetas nuevas de Nvidia todos sus pro- consciente de que la arquitectura entre una y otra es
cesadores pueden comportarse como procesadores completamente diferente, por lo que, posiblemente,
de vértices o procesadores de fragmentos. Por ejem- su rendimiento también lo sea.
à
plo, la tarjeta 8800GTX de Nvidia cuenta con 128
procesadores unificados, capaces de realizar opera-
ciones sobre vértices, primitivas geométricas o frag- Capacidad de cómputo
mentos.
Esto se inició porque existen algunas aplicaciones Como indicamos al inicio de este artículo, las
gráficas que utilizan mucha geometría o iluminación, GPUs han evolucionado tanto que han conseguido
que requieren de un mayor número de procesadores ser una herramienta más potente a lo que a cálculos
de vértices y apenas algún procesador de fragmentos. se refiere. Podemos ver en la figura 8 cómo el núme-
12 Con este término nos referiremos al diseño de las GPUs que se describieron en secciones anteriores.
13 Conocido como scalar stream processor.
36
El mundo de las
tarjetas gráficas
ro de GFLOPs14 es considerablemente más elevado Sin embargo, una de las grandes ventajas de las
en el caso de la GPU [4]. GPUs es que poseen una gran capacidad computa-
cional frente a otro tipo de arquitecturas con sus
En los últimos años, muchos países y empresas FPUs capaces de generar gráficos en tiempo real. Si
grandes han invertido miles de millones en crear cen- fuéramos capaces de aprovechar la capacidad de
tros de supercomputación (como el Marenostrum en cálculo de un procesador gráfico (una única tarjeta
Barcelona) capaces de calcular 42144 GFLOPs en Nvidia 8800GTX llega a 500 GFLOPS de pico) y
pico. Este tipo de arquitecturas pueden resultar dema- formar un clúster con varias, podríamos tener un
siado costosas (no sólo su creación, sino también su mayor número de GFLOPs a un precio mucho más
mantenimiento), por lo que su número es aún peque- barato. Si, por ejemplo, creáramos un clúster con
ño en todo el mundo. nueve tarjetas 8800GTX por, aproximadamente, un
precio de 1808 e conseguiríamos alrededor de 4,5
TeraFLOPS.
à Comparativa de tarjetas
gráficas
Figura 8. Gráfico que muestra la evolución de las GPUs Tras la lectura del presente artículo, espero que el
frente a las CPUs. Es importante recalcar que se está entendimiento de la tabla sea mayor y ayude al lector
comparando únicamente la capacidad de ejecutar a tomar algunas cifras reales de las tarjetas gráficas de
instrucciones en coma flotante [3]. última generación.
GPU HD 3870 X2 9800 GX2 8800 ULTRA GTX 260 GTX 280
Frecuencia GPU 825 MHz 600 MHz 612 MHz 576 MHz 602 MHz
Frecuencia ALU 825 MHz 1500 Mhz 1512 MHz 1242 MHz 1296 MHz
Frecuencia memoria 900 MHz 1000 MHz 1080 MHz 999 MHz 1107 MHz
Ancho del bus de memoria 2x256 bits 2x256 bits 384 bits 448 bits 512 bits
Tipo de memoria GDRR3 GDRR3 GDRR3 GDRR3 GDRR3
Capacidad de memoria 2x512 MB 2x512 MB 768 MB 896 MB 1024 MB
Número de ALUs 640 256 128 192 240
Número de unidades de textura 32 128 32 64 80
Número de ROPs 32 32 24 28 32
Potencia de shaders 1 TFLOPs 1152 GFLOPs 581 GFLOPs 715 GFLOPs 933 GFLOPs
Ancho de banda de la memoria 115,2 GB/s 128 GB/s 103,7 GB/s 111,9 GB/s 141,8 GB/s
Número de transistores 1334 millones 1010 millones 754 millones 1400 millones 1400 millones
Generación 2008 2008 2007 2008 2008
Shader model que soporta 4.1 4.0 4.0 4.0 4.0
14En informática, FLOPS es el acrónimo de Floating point Operations Per Second (operaciones en coma flotante por segundo). Se
usa como una medida del rendimiento de una computadora, especialmente en cálculos científicos que requieren de un gran uso de
operaciones de coma flotante.
37
ACTA
El mundo de las tarjetas gráficas
à
casos no somos conscientes de la herramienta tan
potente que se encuentra pinchada en la placa base
Conclusión de nuestro PC. Resulta un tema fascinante y compli-
cado, que asegura aumentar más su importancia en
Como se ha podido ver, tras una tarjeta gráfica se el mundo de la informática (debido al auge de efec-
esconde un millón de conceptos y funciones claves tos especiales, películas de animación y videojuegos
para la generación de películas animadas, videojue- que está sufriendo la sociedad en los últimos años). Y
gos, simuladores de vuelo o agencias espaciales. Aun- este breve artículo, no es más que una ínfima intro-
que todo ordenador posee una, en la mayoría de los ducción a todo lo que esconde.
à Referencias destacadas
[1] Manuel Ujaldón Martínez. Procesadores gráficos para PC. Ed. Ciencias-3, septiembre 2005.
[2] Guía de programación de CUDA. www.nvidia.com/cuda
[3] David Miraut. Introducción a las tarjetas y Procesadores Gráficos.
[4] GPU Gems2. General-Purpose. Computaction on GPUS: A Primer. Nvidia. 2005.
[5] The Cg Tutorial - The Definitive Guide To Programmable Real-Time Graphics. Nvidia. 2003.
38