graphics processing units (gpus) - iuma - ulpgcnunez/clases-micros-para-com/mpc1011... ·...

21
ETSIT - ULPGC 2010/11 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)

Upload: others

Post on 28-Mar-2020

1 views

Category:

Documents


0 download

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