graphics processing units (gpus) - iuma - ulpgcnunez/clases-micros-para-com/mpc1011... ·...
TRANSCRIPT
E T S I T - U L P G C
2 0 1 0 / 1 1
Omar Espino Santana
Breve descripción del funcionamiento básico de las
GPUs. Además se abordarán las APIs básicas para la
programación de estos dispositivos. Por último se
analizarán algunos Benchmarks de los últimos
modelos de las dos principales empresas del mercado
Nvidia y AMD (ATI).
Graphics Processing Units (GPUs)
2 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
Índice
1. Introducción .......................................................................................................................... 3
2. Historia .................................................................................................................................. 4
3. Pipeline gráfico ...................................................................................................................... 5
3.1 Vertex Shading .............................................................................................................. 5
3.2 Geometry Shading ......................................................................................................... 7
3.3 Rasterization .................................................................................................................. 8
3.4 Píxel Shading ................................................................................................................. 9
4. Arquitectura ........................................................................................................................ 10
5. Programación de la GPU ..................................................................................................... 11
5.1 DirectX ......................................................................................................................... 12
5.2 OpenGL ........................................................................................................................ 12
6. GPGPU ................................................................................................................................. 13
7. Nvidia................................................................................................................................... 14
8. AMD ..................................................................................................................................... 16
9. Benchmarks ......................................................................................................................... 17
10. Bibliografía............................................................................................................................ 20
3 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
1. Introducción
Las GPUs (Graphics Processing Units) son procesadores diseñados especialmente para
instrucciones de procesado de gráficos y operaciones en coma flotante. Tienen como fin
liberar carga de la CPU para que esta pueda dedicarse a otros fines.
Las aplicaciones que más críticas son en este aspecto son normalmente videojuegos y las
de diseño asistido por ordenador (CAD).
En la actualidad, cualquier ordenador de sobremesa que vaya a ser usado para estos fines
requiere de una buena tarjeta gráfica (tarjeta donde el principal componente es la GPU,
acompañada de memoria RAM dedicada y un puerto de comunicaciones, normalmente
PCIExpress), la cuál además puede llegar a ser el componente más caro de la computadora.
Con la creciente demanda de mejora en calidad y realismo de los modelos 3D ha ido
creciendo también la potencia gráfica de las GPUs y por consiguiente su consumo, siendo
importante así disponer de una fuente de alimentación que sea capaz de alimentar a la vez
toda la estación de trabajo/ocio.
En el mercado de procesadores gráficos nos encontramos con tres importantes
fabricantes: Intel, Nvidia y AMD. Aunque Intel controle algo más del 50% de GPUs en el
mercado, si descartamos las soluciones integradas (de bajo rendimiento) nos queda que el
mercado se lo dividen las otras dos empresas. En el tercer trimestre de 2010 Nvidia lidera el
mercado de sobremesa (58.80% contra 41%) mientras que en los portátiles es AMD quien
destaca (61.90% contra 38.10%). En el mercado global están muy igualadas (Nvidia 49.60%,
AMD 50.30%).
4 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
2. Historia
En los años 70 aparecieron los primeros procesadores gráficos. Prácticamente no tenían
posibilidad de procesado gráfico más allá de posicionar imágenes en el espacio de la pantalla y
control de modo texto y gráfico. El nombre de los primeros chips eran ANTIC y CTIA en las
computadores de 8-bit de Atari.
Durante los 80s, el Commodore Amiga fue el primer ordenador (de amplio mercado) en
incluir blitter (coprocesador que es capaz de hacer transferencias de bloques de datos con el
fin de simular movimientos de imágenes) en su hardware de video. Por otro lado el 8514 de
IBM fue la primera tarjeta gráfica en incluir primitivas 2D en hardware.
A lo largo de los 90s aparecieron nuevas APIs para variedad de tareas para ejecutar en las
GPUs, como WinG para Windows 3.X y luego DirectDraw para los juegos en 2D de Windows
95. A mediado de los 90s comenzaron a aparecer tarjetas aceleradoras 3D. Al principio las que
aparecían eran tarjetas sólo para dicha aceleración lo cual hacía desaparecer las mejoras 2D de
las antiguas tarjetas. Luego comenzaron a aparecer chips donde integraban 2D, 3D y video en
un único dado. También apareció en esta década OpenGL, una de las principales APIs usadas
en la actualidad para programar funciones sobre la GPU. Pasado un tiempo Microsoft se
acercó a los desarrolladores de hardware y comenzó a enfocarse en la publicación de versiones
de DirectX, la otra API más usada hoy en día. También apareció en esta década la primera
tarjeta en implementar T&L, una tarea que consiste en transformar un objeto tridimensional
en una imagen 2D dibujando solo aquellos vértices visibles desde el punto del observador y el
cálculo del color de cada píxel según la luz, la GeForce 256 (NV10) de Nvidia.
Desde el 2000 hasta la actualidad, con la mejora de OpenGL y DirextX, las GPUs han ido
añadiendo funcionalidad a sus capacidades. Ahora cada píxel puede procesarse con un
pequeño programa e incluso pintarlo con texturas, así como cada vértice puede modificarse
con pequeñas tareas antes de proyectarse sobre la pantalla. La Nvidia GeForce 3 (NV20) fue la
primera GPU en introducir funcionalidad programable. La ATI Radeon 9700 fue la primera en
introducir soporte para bucles y operaciones en coma flotante complejas.
En la actualidad, el paralelismo de las GPUs está consiguiendo que para muchas
aplicaciones se comience a usar a dichos coprocesadores en lugar de la CPU. Esta tendencia se
conoce como GPGPU (General Purpose Computing on GPU) y se usa mucho para tratamiento
digital de imágenes, álgebra lineal y estadística.
5 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
3. Pipeline gráfico
La acción básica que realiza la GPU consiste en un conjunto de tareas que va desde la
entrada de un modelo 3D hasta la generación de la imagen que se muestra en la pantalla. En
general, esto es lo que hará la GPU siempre, por lo que es lógico que debido a su
especialización, es un dispositivo optimizado para ello y por lo tanto llega a ser mucho más
rápido que una CPU.
3.1 Vertex Shading
Comprenden el conjunto de funciones y tareas que tienen como fin modificar (y no
crear) las propiedades de los Vertex (vértices) de los polígonos del modelo 3D. En general,
modificará su posición y su luminosidad en función de la fuente de luz.
A continuación vamos a observar algunos efectos que se pueden conseguir en este
punto del procesado.
a) Supongamos que tenemos como entrada, un cuadrado dibujado en el plano XY, y con
un grosor (plano Z) despreciable, con la textura de la bandera de la UE.
Vertex
Shading
Geometry
Shading Rasterization
Pixel/Fragment
Shading
6 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
b) Como primer procesado de vértices, para simular el viento, haremos que la posición de
la bandera en el eje Z, forme un seno respecto a su posición en el eje X, formando
como olas. (Pos.z = sin( Pos.x+angle);).
c) Como vemos, esta simple operación, escrita en una línea, ya implica una gran cantidad
de operaciones en coma flotante, ya que en realidad se realiza sobre cada uno de los
vértices del modelo. Aunque ha quedado un efecto curioso, sería ideal que también
ondulase en función del eje Y con otra frecuencia, por ejemplo la mitad. (Pos.z +=
sin( Pos.y/2+angle);).
7 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
d) Esta nueva modificación hace la bandera algo más realista. Por otro lado, da la
sensación de estar suelta, pues se mueve igual por todo el cuerpo. Para arreglarlo,
vamos a reducir los movimientos por el eje izquierdo, haciendo parecer que está
amarrada a un mástil. (Pos.z *= Pos.x *0.09f;).
Si además, en las instrucciones vistas anteriormente, pusiésemos una dependencia
temporal, podríamos generar movimiento.
3.2 Geometry Shading
Tiene como finalidad generar nuevos vértices para darle un orden más de realismo a la
escena, sin necesidad de sobrecargar demasiado el procesado. La función más común que
se usa es el Tessellation. En resumen, se trata de simplificar el modelo 3D, de forma que el
proceso de Vertex Shading se haga ligero, por ejemplo, simplificando un camino
empedrado, por un simple rectángulo en el suelo con una textura de piedras mapeado,
para luego en el Geometry Shading generar su relieve.
8 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
Si se intentase conseguir este mismo efecto, sin el Tessellation, la solución
sería usar como modelo 3D directamente el suelo empedrado con todos los vértices
que vemos en la imagen superior. Esto conllevaría a que el procesado de Vertex se
hiciera más complejo, ya que se incrementaría (y mucho) su número. Es importante
hacer notar, que solo sirve para dar relieve estático, ya que se lleva a cabo después del
Vertex Shading (que es donde se pueden mover los vértices).
Supongamos que tenemos una cuerda colgando y balanceándose. Se podría
generar los movimientos, suponiendo que la cuerda se comporta como un cilindro
(pocos vértices), para luego darle el relieve de la trenza (que multiplicaría el cómputo).
Un ejemplo en vivo, alternando el tessellation podemos verlo en:
http://www.youtube.com/watch?v=bkKtY2G3FbU.
3.3 Rasterization
Consiste en transformar el modelo 3D en una imagen mapeada sobre píxeles. En
general este proceso se divide en dos partes:
Clipping (recorte)
Una vez que los vértices son transformados a sus localizaciones 2D previstas, algunas
de esas localizaciones pueden quedar fuera de la ventana de visualización, o del área de la
pantalla en la cual los pixeles pueden ser representados. Clipping es el proceso de cortar
los polígonos de manera que ocupen el área visible.
9 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
Conversión de escaneo
El paso final en el proceso de rasterización tradicional es rellenar los polígonos 2D que
ahora están en el plano de imagen. El primer problema a considerar es si dibujar o no un
determinado píxel. Para que un píxel sea renderizado, este debe estar dentro de un
triángulo y no debe estar oculto, o bloqueado por otro píxel. Hay varios algoritmos para
rellenar los píxeles dentro de un triángulo, el más popular de ellos es el algoritmo de línea
de escaneo. Al ser difícil saber si el motor de rasterización dibujará todos los píxeles de
adelante hacia atrás tiene que haber alguna manera de asegurarse que los píxeles cerca
del observador no están siendo superpuestos por píxeles más lejanos. Un z-buffer es la
solución más común. El z-buffer es una disposición 2D que corresponde al plano de imagen
que almacena un valor de profundidad para cada píxel. Cada vez que un píxel es dibujado,
este actualiza el z-buffer con su valor de profundidad. Cada nuevo píxel debe verificar su
valor de profundidad con el valor de z buffer antes de ser dibujado. Los píxeles más
cercanos son dibujados mientras que los más lejanos son descartados.
3.4 Píxel Shading
La función de este último proceso es modificar el color de cada píxel. Para que esto sea
útil, es importante conocer información que nos aportarán el Vertex Shader y Geometry
Shader, como por ejemplo información de luminosidad y su dirección, o de texturas.
El píxel shader básicamente lo que hará es mapear una textura sobre la proyección 2D
del modelo, y a su vez modificar dicho valor de color en función de su luminosidad, entre
otros posibles efectos.
10 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
4. Arquitectura
Atendiendo al pipeline seguido en el proceso de renderizado (proceso de
transformación del modelo 3D hasta conseguir la imagen representada en la pantalla) se
pueden sacar varias conclusiones:
a) Segmentación: Existen diferentes etapas claramente diferenciadas en el proceso,
por lo que es lógico que a nivel hardware también sean visibles en la arquitectura.
b) Paralelismo: Cada instrucción a ejecutar debe realizarse numerosas veces, para
cada vértice o píxel, sin dependencia entre ellos, lo cual permite directamente
paralelizar entre ellos. Este tipo de procesado se conoce como SIMD (Single
Instruction Multiple Data), es decir, ejecutar una instrucción a un conjunto más o
menos grande.
c) Coma flotante: En el procesado de vértices, existen transformaciones entre el
modelo 3D y su proyección sobre el plano de visión. Recordando trigonometría
esto implica multiplicación por senos y cosenos, los cuales trabajan con muchos
decimales siendo necesario el uso de este tipo de operaciones. En el caso de
píxeles ocurre igual con los efectos de luminosidad.
Antiguamente existían físicamente Vertex Processors y Pixel Processors, de forma que
los valores entraban en la primera fase, y cuando se terminaban de ejecutar pasaban a la
segunda, etc, formándose una ejecución lineal. Sin embargo en los “últimos tiempos” se
ha visto que esto puede llegar a ser muy poco eficiente, debido a que existen casos en los
que el proceso es muy exigente en el proceso de Vertex Shading (cuando hay una gran
cantidad de vértices) y otras en los que lo es en Pixel Shading. Es por esto que
actualmente todas las GPUs hacen uso de bloques que ejecutan operaciones en coma
flotante y son programables (en concreto realizan “a*b + c”, es decir, multiplicación y
acumulación, en doble precisión), haciéndose llamar Unified Shaders. Estos bloques son
reutilizables, y pueden ser usados para todos los anteriores shaders, generándose una
ejecución circular.
11 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
Esta tendencia puede observarse en la serie GeForce de Nvidia, observando la
evolución desde la GF6800 a la GF8800:
5. Programación de la GPU
En sus comienzos, al igual que ocurría con las CPUs, las GPUs se programaban en
lenguaje ensamblador. Aunque para las primeras aplicaciones de entorno gráfico esto era
aceptable, con la modernización de los entornos gráficos y por supuesto de los
videojuegos, esta opción se hace inviable. Es por ello que a lo largo del tiempo han ido
apareciendo APIs para facilitar el trabajo a los desarrolladores. Este proceso ha ido en
Ejecución lineal en la GeForce 6800
Ejecución circular en la GeForce 8800
12 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
conjunto entre fabricantes y programadores, ya que tanto Nvidia como AMD (en su
momento ATI) han ido mejorando sus productos con el fin de compatibilizar sus chips con
las APIs usadas en el mercado.
Las librerías más usadas en este entorno son DirectX (en concreto una parte llamada
Direct3D) y Open GL.
5.1 DirectX
Es la librería de funciones que Microsoft proporciona para facilitar la programación de
videojuegos para la plataforma de Microsoft Windows. Está compuesta de diferentes APIs
como por ejemplo:
Direct3D: utilizado para el procesamiento y la programación de gráficos en tres
dimensiones (una de las más utilizadas de DirectX).
Direct Graphics: para dibujar imágenes en dos dimensiones y para representar
imágenes en tres dimensiones.
DirectInput: para procesar datos del teclado, mouse, joystick y otros controles para
juegos.
La más importante es Direct3D, la cual está disponible tanto en sistemas Windows de
32 y 64 bits como en Xbox y Xbox360.
En noviembre de 2008 se presentó la versión Direct3D 11 (correspondiente a DirectX
11), aunque llegó a los usuarios en 2009 con Windows 7. Su principal innovación fue una
mejora en el tessellation. En su anterior versión, Direct3D 10, se añadieron los Geometry
Shaders, y una función Stream Out, que permitía guardar los resultados de estos, para poder
realizar tareas de varias pasadas. En Direct 3D 9, entre otras mejoras, se añadió una nueva
versión del HLSL (High Level Shader Language), un lenguaje de alto nivel para la programación
de shaders, muy similar a Cg (C for graphics) de Nvidia, ya que fueron desarrollados en
conjunto.
5.2 OpenGL
Esta otra API (Open Graphics Library) es un estándar abierto y multiplataforma. Fue
desarrollado por Silicon Graphics Inc (SGI) en 1992, y se usa ampliamente en ámbitos
profesionales como pueden ser CAD, películas de animación, simulación de vuelo, etc. En
el ámbito de los videojuegos también compite con Direct3D, aunque es la clara perdedora
en este aspecto. En este aspecto se puede afirmar que Microsoft ha hecho todo lo posible
para divulgar Direct3D, donde la salida de Xbox y Xbox360 haciendo uso de esta API y
facilitando por ello la portabilidad a PC ha sido un duro golpe a OpenGL.
13 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
Por otro lado, OpenGL tiene la ventaja de ser multiplataforma, es decir, que cualquier
código hecho con esta API podrá ser portada de Windows a sistemas basados en Unix
como pueden ser GNU/Linux, Open Solaris o Mac OS X.
Otra ventaja es su mecanismo de extensiones, permitiendo a cada driver añadir
funcionalidades que periódicamente son estandarizadas por la ARB (OpenGL Architecture
Review Board). Direct3D sin embargo es un sistema más cerrado y también más estable.
OpenGL también tiene su propio lenguaje estándar de alto nivel para la programación
de shaders, llamado GLSL (OpenGL Shadin Language). Además el lenguaje Cg de Nvidia
puede compilarse sobre OpenGL.
6. GPGPU
Una de las nuevas tendencias en el mundillo de las GPUs es lo que se conoce como
General Purpose Computing on GPU, es decir, hacer uso de la relativamente nueva
programabilidad que permiten los shaders de los nuevos chips para realizar procesos que
no tienen por qué ser procesado gráfico. Para aplicaciones científicas o de simulación, este
tipo de programación es de mucha utilidad gracias al paralelismo de las GPUs.
Antiguamente, este tipo de usos se hacía en lenguaje ensamblador, o en programas de
alto nivel diseñados para procesado gráfico como son HLSL, GLSL o Cg. Sin embargo,
recientemente han aparecido herramientas específicas para la programación de GPUs para
propósito general, alejando al programador de detalles relacionados con los gráficos y
presentando una interfaz de más alto nivel.
Una de las herramientas más utilizadas es BrookGPU, desarrollada por la Universidad
de Stanford, que consiste en una extensión de ANSI C.
Aunque es posible que cualquier aplicación ejecutada en una CPU puede ejecutarse en
una GPU, debido a sus grandes diferencias arquitecturales, no todas van a aprovecharse de
las ventajas de los chips gráficos. Las CPUs están hechos para poder acceder a memoria en
cualquier dirección, facilitando así la declaración de estructuras de datos complejas y el
uso intensivo de punteros. En las GPUs, se aprovechan los recursos hardware de forma
que los Unified Shaders se usan como bloques para ejecutar las operaciones, las Texture
Unit de donde se leen las texturas se usarán para leer los datos a procesar y el Framebuffer
como interfaz de salida.
Con el creciendo uso de este tipo de aplicaciones los fabricantes no se han quedado
esperando y Nvidia ha desarrollado no solo un compilador, sino un conjunto de
herramientas bajo el nombre de CUDA (Compute Unified Device Architecture) para este
fin. Aunque está preparado para la programación en C, con el uso de ciertos adaptadores,
se pueden compilar aplicaciones escritas en Python, Perl, Fortran, Java, Ruby, Lua, MATLAB
y IDL.
14 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
En el otro lado, AMD también tiene su herramienta ATI Stream. Sin embargo su
lanzamiento fue acompañado de varios errores y retrasos, viendo la luz en diciembre de
2008, dando casi dos años de ventaja a sus competidores, que ya tenía su SDK preparado
en febrero de 2007.
Está claro que es muy importante el soporte que están dando a este tipo de
implementaciones ambos fabricantes, ya que cada vez más, todo tipo de aplicaciones hace
uso de las GPUs para pequeñas tareas para las que le es rentable. Sin ir más lejos, los
navegadores web ya han hecho oficial que en sus nuevas publicaciones (Google Chrome 7,
Mozilla Firefox 4 y Internet Explorer 9) harán uso de aceleración GPU.
7. Nvidia
Existen varias series de gráficas de Nvidia (Tesla, Quadro, GoForce,…), sin embargo la
más utilizada, la de uso doméstico para PCs de sobremesa es la GeForce. Sus últimos
modelos en el mercado son la GeForce GTX 570 y la GeForce GTX 580. La diferencia entre
ellas radica en la velocidad, el número de cores y el ancho de banda de memoria, ya que
las tecnologías que usa son la misma al haber salido a la vez.
Como puede observarse, con la nueva política de la GPGPU, ya no se hace alusión al
número de Unified Shaders de la GPU, sino que directamente se habla de CUDA Cores, ya
que pueden usarse para otros fines que el procesado gráfico.
Además de las especificaciones técnicas, Nvidia también ha ido añadiendo diferentes
tecnologías a sus tarjetas gráficas. Algunas de las que podemos encontrar en las últimas
son:
GeForce GTX 570 GeForce GTX 580
15 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
Soporte para DirectX11: No hay nada que explicar, más que es capaz de ejecutar
programas escritos con la última librería de Microsoft que fue lanzada junto a
Windows 7.
Tecnología NVIDIA PhysX: Es un kit de desarrollo para llevar a cabo cálculos físicos
complejos como explosiones, polvo, movimientos de personajes, etc.
NVIDIA 3D Vision Ready: Como se puede suponer del nombre, trae la visión
estereoscópica al PC. Puesto que el procesado gráfico parte de un modelo 3D, es
posible generar dos imágenes al rasterizar en lugar de una, usando dos
observadores y poder así generar el efecto de profundidad.
NVIDIA Surround: Tecnología que permite conectar varias pantallas y hacerlas
funcionar como una única de resolución mayor.
Tecnología NVIDIA SLI: Permite usar varias tarjetas en paralelo, conectadas entre sí
por su puerto SLI aumentando el rendimiento.
Tecnología NVIDIA CUDA: La tecnología de Nvidia para la GPGPU gracias a la
reciente programabilidad de los shaders.
Tecnología antialiasing 32x: Se trata de una tecnología avanzada para evitar los
bordes dentados que suelen aparecer en el renderizado de 3D.
Tecnología NVIDIA PureVideo HD: Para descargar aún más el coste computacional
sobre la CPU, los fabricantes de tarjetas gráficas han añadido decodificadores
hardware en sus dispositivos de una gran cantidad de códecs de vídeo. Esto
sumado a funciones de postprocesado incluido en sus drivers permiten tener un
auténtico reproductor multimedia casi sin que la CPU se dé cuenta.
Soporte de PCI Express 2.0: Es algo básico que un gran cuello de botella se produce
en cada comunicación que la GPU tenga que hacer con algo que esté fuera de la su
placa, por lo que cualquier mejora en el bus de interconexionado es bien recibida
en este aspecto.
Doble conexión DVI Dual Link: Para poder conectar a las pantallas de mayor
resolución del mercado es necesaria una conexión DVI Dual Link.
Compatibilidad con HDMI 1.4a: Es la interfaz de audio y vídeo digital que más se
utiliza hoy en día para la conexión con cualquier aparato multimedia (reproductor
Blu-Ray, sintonizador TDT, etc.).
16 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
8. AMD
Hasta octubre de 2006, el principal competidor de Nvidia era ATI, sin embargo fue
comprada ese mes por AMD. Aunque hasta ahora todos los nuevos modelos de GPUs
seguían guardando el nombre de ATI, su comprador ya lo ha eliminado en sus dos últimos
modelos.
Entre las distintas series de tarjetas gráficas (ATI Radeon E, ATI FirePro, etc.) la
destinada al mercado doméstico es la serie Radeon HD. Los dos últimos modelos que han
presentado son la AMD Radeon HD 6850 y la AMD Radeon HD 6870.
Puede observarse que el número de cores es muchísimo mayor (el doble) en las
tarjetas de AMD que en las de Nvidia, sin embargo, esta ventaja en número no se traduce
directamente en una ventaja en la eficiencia, debido a la diferencia en las arquitecturas.
Al igual que hace Nvidia, AMD también introduce un gran número de tecnologías en
sus tarjetas para ofrecer un mayor número de servicios. Algunos son:
Gráficos Eye-Definition: Incluye el soporte para la librería DirectX 11, siendo
estas la segunda serie de tarjetas gráficas que lo soporta.
Tecnología de varias pantallas Eyefinity de AMD: El equivalente a NVIDIA
Surround para conectar varias pantallas.
Aceleración visual EyeSpeed de AMD: El equivalente a NVIDIA PureVideo, para
decodificar en hardware la mayoría de códecs de vídeo.
Tecnología HD3D de AMD: Equivalente al NVIDIA 3D Vision, permitiendo
generar imágenes estereoscópicas.
Tecnología para varias GPUs CrossFireX de AMD: Equivalente al NVIDIA SLI,
para unir varias tarjetas gráficas para hacerlas trabajar en paralelo.
Compatible con pantallas integradas de última tecnología: Salidas HDMI 1.4a y
DVI Dual Link.
Teconlogía de gestión de energía PowerPlay de AMD: Uso eficiente de la
energía para un menor consumo. Aunque es verdad que Nvidia tiene su propia
17 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
tecnología equivalente ATI es famosa por consumir, en general, menos energía
que las tarjetas de Nvidia.
9. Benchmarks
Para comparar GPUs también hay diferentes formas de hacerlo. Una forma, es calcular
el máximo número teórico de operaciones en coma flotante que puede realizar cada una.
Esta medida describe directamente la potencia computacional de cada tarjeta, pero no
tiene en cuenta todas las condiciones arquitecturales como pueden ser los retardos en la
lectura/escritura o los cores desaprovechados que no llegan a usarse eficientemente. Esta
medida se mide en FLOPS (Floating Operations per Second):
GPU GTX 580 GTX 570 HD 6870 HD 6850 Intel Core i7 920
GFLOPS 1581 1405 2016 1488 70
Estas medidas sin embargo se alejan de la realidad, ya que es un máximo ideal que no
se alcanza en el uso corriente de la GPU. Es por esto que aparecen los Benchmarks que ya
nos encontrábamos en las CPUs. En general hay dos tipos, los que se hacen expresamente
para medir la potencia de las tarjetas gráficas, y las que miden su capacidad usándolas
sobre aplicaciones reales, en general, videojuegos.
Uno de los Benchmarks sintéticos más utilizados es el 3DMark Vantage (3DMark para
DirectX 10), que da una puntuación proporcional a su rendimiento. Sin embargo, como
todos los Benchmarks sintéticos, es un valor orientativo y que en algunos casos no se
acerca a la realidad. Aquí podemos ver una gráfica comparando los cuatro modelos que se
han presentado.
18 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
3DMark Vantage
Los otros Benchmarks más usados son básicamente los videojuegos del mercado.
Como medida de rendimiento se usa el número de cuadros (imágenes) que son capaces
de generar por segundo (FPS). Es importante para todas estas medidas usar el mismo
“banco de pruebas”, es decir, que se use la misma placa base, procesador, memoria, etc.
Un primer ejemplo se ha realizado para el juego Resident Evil 5, que trabaja con
DirectX 10:
Resident Evil 5 (FPS)
29605
26175
18372
15174
13334
11372
7794
6186
GTX 580
GTX 570
RADEON HD 6870
RADEON HD 6850
Performance
Extreme
124,9
112,8
94,7
83
151,3
137,8
104,6
90,7
146,9
134,5
107,8
94,3
152,1
150,4
119,7
104,1
151,2
150,3
123
108,9
152,1
152,4
135,9
119,9
GTX 580
GTX 570
RADEON HD 6870
RADEON HD 6850
1920x1200 (8x AA)
1920x1200
1680x1050 (8xAA)
1680x1050
1440x900 (8xAA)
1440x900
19 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
En general puede observarse que las nuevas tarjetas de Nvidia superan con creces a las
de AMD. Sin embargo, también puede observarse que incluso la peor de las GPUs, supera
con creces los 30 FPS necesarios para jugar con normalidad. En general podemos decir
que las tarjetas están sobredimensionadas para este juego.
Ahora haremos el mismo estudio para un videojuego de este año (febrero de 2010), y
que usa DirectX 11: Aliens vs. Predator.
Aliens vs. Predator (FPS)
Como puede observarse, sigue observándose la diferencia de rendimiento entre las
tarjetas de Nvidia y las de AMD. Además, en este caso, vemos que a la máxima resolución,
con los filtros de Anti-aliasing y Anisotrópico, los FPS alcanzan puntos en los que no se
podrá jugar. Hay que tener en cuenta que aquí se muestra el valor medio, pero en función
de lo que se esté procesando en cada momento, ese valor puede reducirse o
incrementarse (no es lo mismo una escena en una calle, que en una selva, o donde algo
explote).
En conclusión podemos ver que claramente las tarjetas de Nvidia son superiores en
todos los sentidos a las nuevas de AMD. Por otro lado, cabe destacar que de la serie
RADEON HD 6XXX aún quedan por salir varios modelos de gama superior y que podrán
igualar o superar a las GTX 5XX.
108,9
94,1
74,4
61,6
86,9
74,9
58,8
48,5
70,6
60,8
47,4
38,9
63,3
55,8
43,6
35,4
52,7
44,3
33,2
28,2
43
35,9
27,1
23,1
GTX 580
GTX 570
RADEON HD 6870
RADEON HD 6850
1440x900
1680x1050
1920x1200
1440x900 (4xAA y 16x AF)
1680x1050 (4xAA y 16x AF)
1920x1200 (4x AA y 16x AF)
20 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
10. Bibliografía
[1] Nvidia (n.d.). GeForce GTX 580. Obtenida en diciembre de 2010,
http://www.nvidia.es/object/product-geforce-gtx-580-es.html
[2] Nvidia (n. d.). GeForce GTX 570. Obtenida en diciembre de 2010,
http://www.nvidia.es/object/product-geforce-gtx-570-es.html
[3] AMD (n. d.). Tarjeta Gráfica ATI Radeon HD 6870. Obtenida en diciembre de 2010,
http://www.amd.com/es/products/desktop/graphics/amd-radeon-hd-6000/hd-6870/Pages/amd-
radeon-hd-6870-overview.aspx
[4] AMD (n. d.). Tarjeta Gráfica ATI Radeon HD 6850. Obtenida en diciembre de 2010,
http://www.amd.com/es/products/desktop/graphics/amd-radeon-hd-6000/hd-6850/Pages/amd-
radeon-hd-6850-overview.aspx
[5] X-bit labs (n. d.). “ATI Maintains Lead on Discrete GPU Market”. Obtenida en diciembre de 2010,
http://www.xbitlabs.com/news/video/display/20101027211059_ATI_Maintains_Lead_on_Discrete_GP
U_Market_Mercury_Research.html
[6] Ditchburn, K. (n. d.). “Vertex Shaders”. Obtenida en diciembre de 2010,
http://www.toymaker.info/Games/html/vertex_shaders.html
[7] Ditchburn, K. (n. d.). “Pixel Shaders”. Obtenida en diciembre de 2010,
http://www.toymaker.info/Games/html/pixel_shaders.html
[8] Medvedev, A. (n. d.). “Matrox Parhelia-512”. Obtenida en diciembre de 2010,
http://ixbtlabs.com/articles/matroxparhelia512/
[9] WhisKiTo (abril de 2010). “Tessellation o teselado, una nueva tecnología para aportar realismo al
mundo 3D digital”. Obtenida en diciembre de 2010, http://www.xataka.com/otros/tessellation-o-
teselado-una-nueva-tecnologia-para-aportar-realismo-al-mundo-3d-digital
*10+ Triolet, D. (noviembre de 2010). “Dossier: Nvidia GeForce GTX 580 & SLI”. Obtenida en diciembre de
2010, http://www.hardware.fr/articles/806-2/dossier-nvidia-geforce-gtx-580-sli.html
*11+ Triolet, D. (diciembre de 2010). “Dossier: Nvidia GeForce GTX 570”. Obtenida en diciembre de 2010,
http://www.hardware.fr/articles/811-2/dossier-nvidia-geforce-gtx-570.html
*12+ Veciana, F (noviembre de 2010). “Artículo: NVIDIA GeForce GTX 580”. Obtenida en diciembre de
2010, http://www.noticias3d.com/articulo.asp?idarticulo=1348&pag=1
*13+ Veciana, F (diciembre de 2010). “Artículo: NVIDIA GeForce GTX 570”. Obtenida en diciembre de
2010, http://www.noticias3d.com/articulo.asp?idarticulo=1361&pag=1
*14+ Veciana, F (octubre de 2010). “Artículo: HIS AMD Radeon HD 6870 en CrossFireX”. Obtenida en
diciembre de 2010, http://www.noticias3d.com/articulo.asp?idarticulo=1343&pag=1
*15+ Veciana, F (octubre de 2010). “Artículo: HD 6850 Vs HD 5770, HD 5830 y GTX 460 1GB”. Obtenida
en diciembre de 2010, http://www.noticias3d.com/articulo.asp?idarticulo=1341&pag=1
[16] Wikipedia (n. d.). “Graphics processing unit”. Obtenida en diciembre de 2010,
http://en.wikipedia.org/wiki/Graphics_processing_unit
21 Graphics Processing Units (GPUs) – Microprocesadores para Comunicaciones - ULPGC
[17] Wikipedia (n. d.). “Rendering (computer graphics)”. Obtenida en diciembre de 2010,
http://en.wikipedia.org/wiki/Rendering_(computer_graphics)
*18+ Wikipedia (n. d.). “Graphics pipeline”. Obtenida en diciembre de 2010,
http://en.wikipedia.org/wiki/Graphics_pipeline
*19+ Wikipedia (n. d.). “Rasterisation”. Obtenida en diciembre de 2010,
http://en.wikipedia.org/wiki/Rasterisation