Comparación entre Nvidia y ATI

Anuncio
GPUs
Comparación entre Nvidia y ATI
Raúl Rodríguez del Rosario
Índice
Introducción ................................................................................................. 3
¿Qué es una GPU? ....................................................................................... 4
Nvidia .......................................................................................................... 5
ATI .............................................................................................................. 7
Benchmarks ..........................................................................................….. 9
Programación de la GPU ………………………………………………... 11
OpenGL …………………………………………………………………. 12
Direct3D ………………………………………………………………… 13
Mesa3D ..................................................................................................... 14
Conclusiones ............................................................................................. 15
Bibliografía ............................................................................................... 16
Introducción
Desde hace unos años la popularidad de las tarjetas gráficas ha ido en aumento,
debido al gran avance de la electrónica en este apartado y la demanda del mercado de
consumo. Hoy en día nos podemos referir indistintamente a lo que son las tarjetas
gráficas y las GPU, aunque habrá que matizar que la tarjeta gráfica en sí es una tarjeta
de expansión para un ordenador, PC o no, la cual tiene entre sus componentes: memoria
de vídeo, RAMDAC, sistemas de conexión, interfaces con la placa base y como
elemento principal, la GPU.
El objetivo de este trabajo es aclarar que es una GPU, ver la comparación de los
últimos modelos de tarjetas gráficas de la gama para el hogar de los dos grandes
fabricantes, Nvidia y ATI, los métodos actuales de programación más usados para GPU
y sacar unas conclusiones a la hora de adquirir, lo que es hoy en día, el componente más
caro de un ordenador de sobremesa.
¿Qué es una GPU?
Una GPU – Graphics Processing Unit o Unidad de Procesamiento de Gráficos –
es un dispositivo específicamente dedicado para “dibujar” gráficos, se usa en
computadoras personales y también en consolas de juegos.
Las GPUs modernas tienen una estructura paralela que resulta más efectiva que un
procesador normal para algoritmos complejos, típicos del procesamiento de gráficos,
tales como transformaciones matriciales, dibujado de polígonos, transformación de
vértices en distintos sistemas de coordenadas, etc.
Una GPU implementa ciertas operaciones
gráficas llamadas primitivas optimizadas para el
procesamiento gráfico. Una de las primitivas
más comunes para el procesamiento gráfico en
3D es el antialiasing, que suaviza los bordes de
las figuras para darles un aspecto más realista.
Adicionalmente existen primitivas para dibujar
rectángulos, triángulos, círculos y arcos. Las
GPU actualmente disponen de gran cantidad de
primitivas, buscando mayor realismo en los
efectos.
figura1: GPU de ATI
Actualmente se investigan los llamados “programmable shaders” como una manera
de emplear las propiedades de una GPU para procesar cálculos sin que necesariamente
se traten de gráficos, produciendo los llamados GPGPU – General Purpose Computing
on Graphics Processing Units.
Nvidia
nVidia Corporation es una empresa multinacional especializada en el desarrollo
de unidades de procesamiento gráfico y tecnologías de circuitos integrados para
estaciones de trabajo, ordenadores personales y dispositivos móviles. Con sede en Santa
Clara, California, la compañía se ha convertido en uno de los principales proveedores de
circuitos integrados (CI), como unidades de procesamiento gráfico (GPU) y conjuntos
de chips usados en tarjetas de gráficos en videoconsolas y placa base de computadora
personal.
NVidia divide sus productos en la gama baja o de sobremesa con el nombre de
Geforce que es donde nos centraremos, gama media como los Quadro para
profesionales dedicados a diseño asistido por ordenador (CAD) y Tesla como gama alta
llegando sus precios a superar los 10.000$.
El último modelo de tarjeta presentado en diciembre de 2009 fue la Geforce 310
presentando las siguientes características:
ESPECIFICACIONES DE MOTOR DE GPU:
SOPORTE DE PANTALLA:
CUDA cores
Reloj de Gráficos(MHz)
Reloj de Procesador(MHz)
Máxima resolución digital
Máxima resolución VGA
Conectores de pantalla estandar
16
589
1402
ESPECIFICACIONES DE MEMORIA:
Reloj de Memoria(MHz)
Config. de memoria estandar
Interfaz de memoria
Ancho de banda de memoria
500
512MB
64bit-DDR2
8.0 Gb/s
Multimonitor
HDCP
HDMI
Entrada de audio para HDMI
2560x1600x32bpp
2048x1536x32bpp
DVI +
DisplayPort +
VGA (opcional)
A través de
adaptador (DVIHDMI o DPHDMI)
interno
Además hay que tener en cuenta las distintas tecnologías propias que nVidia
incluye en esta tarjeta gráfica como son:
CUDA: (Compute Unified Device Architecture) es una arquitectura de cómputo
paralelo para fines generales que aprovecha el motor de cómputo paralelo de las (GPU)
de NVIDIA para resolver muchos de los problemas de cómputo más complejos en una
fracción del tiempo requerido por la CPU.
ESA: (Enthusiast System Architecture) es un protocolo de monitorización de PC
estándar creado para controlar y comunicar en tiempo real las condiciones operativas,
acústicas, eléctricas y térmicas de los sistemas. Si el usuario lo cree preciso podrá
modificar cualquier parámetro de configuración para adaptar el sistema a un
rendimiento óptimo.
Physx: aceleración por hardware para crear efectos de explosiones, tejidos que se
pliegan y rasgan, grandes humaredas, niebla, etc.
Además de otros tantos algoritmos y primitivas propios de Nvidia que tratan de
sacar el máximo partido a la arquitectura de sus GPUs.
NVidia muestra esta tarjeta como algo novedoso, pero realmente si miramos sus
características y las comparamos con el modelo anterior GT210 vemos que no hay
grandes diferencias, haciendo un simple renombrado del mismo producto e intentando
venderlo como lo último en tarjetas gráficas. Tras la tremenda decepción que ha
supuesto para los usuarios esta tarjeta, todas las expectativas están puestas ahora en su
nueva arquitectura Fermi, de la que poco han desvelado y que se espera sea un punto y
aparte con todo lo visto hasta ahora, cuya fecha de lanzamiento está prevista para marzo
de 2010.
figura2: Geforce GT310 de Nvidia
ATI Technologies
ATI Technologies Inc. era una de las mayores empresas de hardware que diseñaba
procesadores gráficos, tarjetas de video y procesadores, fue comprada por AMD en el
año 2006 pero mantuvo su nombre para algunos productos. Su mercado acapara todo
tipo de productos para el procesamiento gráfico y multimedia, tanto para computadoras
personales, como para dispositivos portátiles, videoconsolas, teléfonos móviles y
televisión digital. Su fundación data del 20 de agosto de 1985 (ATI). A la empresa se le
ha conocido por varios nombres. Se fundó llamándose Array Technology Inc., pero
durante los primeros 5 meses se le cambió a Array Technologies Inc., el 18 de
diciembre de 1985 pasó a llamarse ATI Technologies Inc., y definitivamente pasó a ser
parte de AMD el 25 de octubre de 2006.
Al igual que nVidia, ATI también posee varias gamas de productos como los
Radeon para equipos de sobremesa, Mobility Radeon para notebooks y para
profesionales como es FireGL. En nuestro caso el estudio será sobre su gama de
sobremesa Radeon.
Su último modelo de tarjeta presentado en noviembre de 2009, la ATI Radeon HD
5970, posee las siguientes características:
· Doble GPU con un total de 4.3 billones de transistores (tecnología de 40nm)
· TeraScale 2 Arquitectura Unificada de Procesamiento
3200 Unidades de Procesamiento Stream
160 Unidades de Textura
256 Unidades Z/Stencil ROP
64 Unidades de Color ROP
· Interface de memoria GDDR5
· Interface de bus PCI Express 2.1 x16
· Soporte DirectX 11
Shader Model 5.0
DirectCompute 11
Unidad de Hardware programmable de teselación
Aceleración multi-threading
Compresión de texturas HDR
Transparencias en orden independiente
Al igual que su competidor directo, ATI también presenta una serie de prestaciones
que incluye en esta tarjeta, siendo las principales:
Eyefinity: tecnología avanzada de múltiples pantallas, compatibles con la última
generación de DirectX 11, posee conectividad DisplayPort que hace posible que una
sola GPU admita hasta seis salidas de pantalla independientes al mismo tiempo. Impulsa
la productividad diaria y facilita la multitarea con una enorme ampliación del espacio de
trabajo visual. Utiliza hasta seis pantallas de alta resolución independientes de forma
simultánea e independiente, configuradas de manera flexible en varias combinaciones
de orientaciones horizontales y verticales.
CrossfireX: es el nombre dado al sistema de doble GPU de ATI/AMD que fue
diseñado como contrapartida al SLI de nVidia, pionera en los sistemas de GPU
múltiples. Este sistema permite, utilizando una placa certificada Crossfire, acoplar hasta
cuatro tarjetas gráficas que soporten dicha tecnología en ranuras PCIe x16.
ATI Stream: es un conjunto de tecnologías avanzadas de hardware y software que
permiten a los procesadores gráficos (GPU) de AMD, trabajando en conjunto con las
unidades centrales del sistema (CPU), acelerar las aplicaciones más allá de los gráficos
tradicionales y de procesamiento de vídeo. Esto permite a las plataformas ejecutar las
tareas computacionalmente intensivas de manera más eficiente. Es el equivalente a
CUDA en Nvidia.
El cerebro de esta tarjeta gráfica son los chips RV870 con unas características, tales
como un total de 1200 SPUs (Stream Processors Units), dividido en 12 unidades SIMD,
cada unidad SIMD trae 100 SPUs, ( 12 Núcleos SIMD, 20 SP, 5 SPU), a diferencia del
RV770 que contaba con 10 SIMD, cada uno con 80 SPUs, (10 Nucleos SIMD, 16 SP, 5
SPU). Entonces se puede concluir que los ingenieros de ATI solo aumentaron la
cantidad de SPUs aumentando las unidades SIMD, y están dando soporte a DX11 y
Shader Model 5.0. El RV870 presentaría 48 TMUs a diferencia del RV770 que tiene 32
TMUs.
Hay que aclarar que las TMU son unos componentes de las actuales GPU que hacen
posible rotar y redimensionar un bitmap y recolocarlo en un plano arbitrario de un
objeto 3D como una textura. En las tarjetas actuales está implementada como una etapa
más del pipeline del procesador gráfico.
Con esta tarjeta ATI se ha puesto a la cabeza del mercado de tarjetas gráficas,
aplaudida por muchos foros de usuarios y páginas especializadas en electrónica e
informática y asignándole el puesto de mejor tarjeta gráfica del mundo.
figura3: ATI Radeon HD 5970
Benchmarks
Un benchmark es el resultado de la ejecución de un programa informático o un
conjunto de programas en una máquina, con el objetivo de estimar el rendimiento de un
elemento concreto o la totalidad de la misma, y poder comparar los resultados con
máquinas similares. Un benchmark puede ser utilizado en cualquiera de sus
componentes, y en nuestro caso será para la tarjeta gráfica.
Como es sabido, los tipos de benchmarks son sintéticos, es decir, especialmente
diseñadas para medir el rendimiento de un componente individual de un ordenador, y
los de aplicaciones (Dhrystone por ejemplo) que están basados en aplicaciones reales.
En el caso de las tarjetas gráficas, los benchmarks de aplicaciones más comunes van a
ser videojuegos, que exijan a la tarjeta grandes prestaciones debido al realismo y la
cantidad de efectos especiales que despliegan en pantalla.
Para la tarjeta HD Radeon 5970 de ATI hay multitud de benchmarks en la red,
haciendo comparaciones con modelos anteriores de la misma casa y también con el
modelo Geforce GTX295 de Nvidia, pero todavía no con el último modelo de este
fabricante que es la tarjeta GT310 (primera de la serie 300). A continuación se muestran
diferentes benchmarks:
figura4: benchmark Jane Nash de 3Dmark Vantage
A 3Dmark Vantage se le considera por muchos un test sintético pero se ha
terminado por imponer en el mundo del hardware para PC. Dispone de 2 pruebas
principales que simulan una situación de juego, en ellas se basa principalmente la
puntuación de GPU que da el programa. La primera de ellas “Jane Nash” comprueba
aspectos fundamentales como la iluminación compleja de superficies con refracción y
reflexión de la luz, física simulada en la propia GPU y colisión de mapas de renderizado
mediante técnicas de física.
Además en la página de Tom´s Hardware podemos encontrar diferentes tests para
esta tarjeta usando diferentes juegos, usando como medida principal las imágenes por
segundo mostradas en pantalla. Debajo se muetra el test hecho con el juego Grand Theft
Auto 4 con un nivel de detalles muy alto, sin usar antialliasing:
figura5: test para ATI Radeon HD 5970 con el juego GTA-IV
Programación de la GPU
En las primeras tarjetas gráficas, la programación de la GPU se realizaba con
llamadas a servicios de interrupción de la BIOS. Tras esto, la programación de la GPU
se empezó a hacer en el lenguaje ensamblador específico a cada modelo.
Posteriormente, se situó un nivel más entre el hardware y el software, diseñando las API
(Application Program Interface), que proporcionaban un lenguaje más homogéneo para
los modelos existentes en el mercado. El primer API usado ampliamente fue estándar
abierto OpenGL (Open Graphics Language), tras el cuál Microsoft desarrolló DirectX.
Tras el desarrollo de APIs, se decidió crear un lenguaje más natural y cercano al
programador, es decir, desarrollar un lenguajes de alto nivel para gráficos. Por ello, de
OpenGL y DirectX surgieron estas propuestas. El lenguaje estándar de alto nivel,
asociado a la biblioteca OpenGL es el "OpenGL Shading Language", GLSL,
implementado en principio por todos los fabricantes. La empresa californiana NVIDIA
creó un lenguage propietario llamado Cg (del inglés, "C for graphics"), con mejores
resultados que GLSL en las pruebas de eficiencia. En colaboración con NVIDIA,
Microsoft desarrolló su "High Level Shading Language", HLSL, prácticamente idéntico
a Cg, pero con ciertas incompatibilidades menores.
DP3
RSQ
MUL
DP3
RSQ
MUL
DP3
MAX
MUL
TEX
MUL
r0.x, f[TEX0], f[TEX0];
r0.x, r0.x;
r0, r0.x, f[TEX0];
r1.x, f[TEX1], f[TEX1];
r1.x, r1.x;
r1, r1.x, f[TEX1];
r0, r0, r1;
r0.x, r0.x, 1.0;
r0, r0.x, DIFFUSE;
r1, f[TEX1], 0, 2D;
r0, r0, r1;
figura6: ejemplo de código ensamblador de GPU
OpenGL
Desde el punto de vista del programador OpenGL es una API para interactuar con
dispositivos gráficos y aceleradoras 3D. La interfaz consiste en más de 250 funciones
diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de
primitivas geométricas simples, tales como puntos, líneas y triángulos. Tambien hay
que tener claro que OpenGL es una librería gráfica, no posee funciones para el control
de Audio, Red o Control de Entrada. Fue desarrollada originalmente por Silicon
Graphics Inc. (SGI) en 1992 y se usa ampliamente en CAD, realidad virtual,
representación científica, visualización de información y simulación de vuelo. También
se usa en desarrollo de videojuegos, donde compite con Direct3D en plataformas
Microsoft Windows.
Las principales posibilidades que nos ofrece son:
· Primitivas geométricas y raster: Nos permite utilizar todas las primitivas
geométricas básicas: puntos, lineas, polígonos. Y del raster: un bitmap, imagen.
· Â-splines: Las B-splines son usadas para dibujar lineas curvas.
· Transformaciones de vista y modelo: Gracias a estas transformaciones podemos
facilmente transladar, rotar y escalar los objetos dentro de la escena y a su vez mover la
cámara.
· Trabajar con el color: OpenGL nos permite operar con colores en modo RGBA (redgreen-blue-alpha) o usando Modo Indexado, donde los colores se seleccionan desde una
paleta.
· Eliminación de lineas y superficies ocultas: Por medio del algoritmo Z-Buffer
· Doble buffer: OpenGL nos permite utilizar un buffer o dos. El buffer doble es usado
para eliminar el parpadeo de las animaciones. Cuando se está mostrando un frame en el
buffer primario el siguiente se dibuja en el double buffer y cuando está terminado se
copia al buffer primario, así se eliminan esos parpadeos.
· Mapeado de textura: Algo vital en cualquier API gráfica 3D
· Antialiasing: Nos permite suavizar los bordes de polígonos y lineas. Este suavizado
se realiza cambiando la intensidad de los pixels adyacentes a la linea que procesamos
consiguiendo un efecto de "difuminación" con la consiguiente eliminación de esos zigzag tan desagradables
· Luces: Nos permite establecer la fuente de la luz, su posición, su intensidad, color...
· Efectos atmosféricos: Por ejemplo niebla o humo.
· Transparencia.
· Display List.
Direct3D
Direct3D es uno de los múltiples componentes que contiene la API DirectX de
Windows. Se le podría situar al nivel del GDI de Windows, presentando un nivel de
abstracción entre una aplicación de gráficos 3D y los drivers de la tarjeta gráfica (véase
gráfico adjunto). Con arquitectura basada en el COM de Microsoft, la mayor ventaja
que presenta Direct3D frente al GDI es que Direct3D se comunica directamente con los
drivers de pantalla, consiguiendo mejores resultados en la representación de los gráficos
por pantalla que aquel.
Direct3D está compuesto por dos grandes APIs. El modo retenido y el modo
inmediato. El modo inmediato da soporte a todas las primitivas de procesamiento 3D
que permiten las tarjetas gráficas (luces, materiales, transformaciones, control de
profundidad, etc). El modo retenido, construido sobre el anterior, presenta una
abstracción de nivel superior ofreciendo funcionalidades preconstruidas de gráficos
como jerarquías o animaciones. El modo retenido ofrece muy poca libertad a los
desarrolladores, siendo el modo inmediato el que más se usa.
Direct3D define un proceso en
diferentes etapas, o rendering
pipeline. Como entrada a dicho
proceso tenemos los datos del
modelo de la escena: Vértices,
Primitivas y Texturas. Como
resultado obtenemos la imagen
renderizada o frame. Como se
muestra a continuación el pipeline
de este API es:
Mesa 3D
Mesa es una implementación de código abierto de la especificación OpenGL - un
sistema para la prestación de gráficos 3D interactivos. Mesa no puede ser llamada una
implementación de OpenGL porque no se ha podido obtener la licencia de OpenGL de
SGI. Aparte de este problema, se puede encontrar en Mesa una alternativa totalmente
válida para OpenGL.
Una variedad de controladores de dispositivo permiten a Mesa ser usado en muchos
entornos diferentes que van desde la emulación de software para completar la
aceleración de hardware para las GPU modernas.
Mesa también está vinculado a varias proyectos de código abierto como: Direct
Rendering Infrastructure y X.org para proporcionar soporte de OpenGL a los usuarios
de X en Linux, FreeBSD y otros sistemas operativos.
Conclusiones
La tarjeta gráfica es hoy en día el componente más caro de un PC y es también el
que más rápidamente se queda obsoleto. Un lector de DVD, un disco duro o la memoria
RAM, además de comparativamente más baratos pueden mantenerse en nuestro equipo
durante años. Sin embargo una tarjeta gráfica difícilmente podrá durarnos más de dos, al
menos si lo que queremos es disfrutar de los últimos juegos en su máximo esplendor.
Cualquier tarjeta es capaz de manejar aplicaciones ofimáticas con soltura, son
únicamente los videojuegos los que exigen mayor rendimiento gráfico y mantener
siempre actualizado este componente.
Elegir tarjeta es un compromiso entre velocidad, calidad de imagen y precio. No
conviene entusiasmarse en un principio por la potencia y sí ser realistas. De nada sirve
una tarjeta capaz de mover con soltura resoluciones panorámicas de 1600x1050 píxeles
si nuestro monitor de 17 pulgadas no sobrepasa una resolución de 1280x1024. Tampoco
resultan útiles velocidades de actualización de imagen de 80 fps (imágenes por segundo)
cuando podemos engañar al ojo con 24 (como el cine nos enseña). La convención suele
ser recomendar los 35 fps como el ideal para jugar.
Dada la constante evolución del mercado tanto a nivel de hardware como de
software, en cualquier caso se hace necesario actualizar la tarjeta periódicamente. Mejor
gastar 200 euros cada dos años que 400 cada tres.
Bibliografía
http://www.nvidia.es/page/home.html
http://www.amd.com/es/Pages/AMDHomePage.aspx
http://www.opengl.org/
http://usuarios.lycos.es/andromeda_studios/paginas/tutoriales/tutgl001.htm
http://www.mesa3d.org/
http://www.tomshardware.com/us/#redir
http://www.wikipedia.org/
http://www.futuremark.com/
Descargar