Buscar en este blog

Mostrando entradas con la etiqueta tarjetas gráficas. Mostrar todas las entradas
Mostrando entradas con la etiqueta tarjetas gráficas. Mostrar todas las entradas

Tema 2.h: Análisis de una arquitectura de GPU; GTX 560Ti


En este artículo vamos a analizar la tarjeta que tengo instalada en mi propio ordenador: Gigabyte NVIDIA GeForce GTX 560 Ti Super OverClock Rev 2 (GV-N560SO-1GI-950), actualmente con los drivers 301.42 de Nvidia.

Las especificaciones completas de mi sistema han cambiado ligeramente respecto al artículo1.d y son ahora: placa base tipo Asus M2N32-SLI Deluxe, procesador AMD Athlon 64 X2 Dual Core 6400+, 8 GB de memoria RAM (4X2 GB) DDR2 800 Corsair Dual Channel y sistema operativo Windows 7 Ultimate Service Pack 1 (64 bits).

Y la puntuación que me otorga Windows 7 en su propia herramienta de diagnóstico es:


A primera vista parece confirmar lo que ya sospechaba: que el cuello de botella de mi sistema se encuentra en el procesador, ya que a los discos duros no les doy tanta importancia para la tarea que más hago en mi ordenador: jugar y programar. Así mismo, parece que mi tarjeta gráfica está muy bien puntuada con un 7,7 sobre 7,9 (aproximadamente un 9,7 en una escala del 1 al 10).

Vayamos ahora con las características de la tarjeta según la información del bundle y la página web del fabricante:

Chipset GeForce GTX 560 Ti
Frecuencia del Core 950 MHz
Shader Clock 1900 MHz
Frecuencia de la Memoria 4580 MHz
Process Technology 40 nm
Memoria 1GB
Bus de Memoria 256 bit
Tipo de Bus PCI-E 2.0
Tipo de Memoria GDDR5
DirectX 11
OpenGL 4.1
PCB Form ATX
Multi View 2
E/S HDMI*1 (by cable), D-sub*1 (by adapter), DVI-I*2, mini HDMI*1
Maximum Digital Resolution 2560x1600
Maximum VGA Resolution 2048x1536
Card size H43mm x L255mm x W139mm
Power requirement Minimum 550W or greater system power supply with one 8-pin and one 6-pin external power connectors

Comentarios adicionales del fabricante:

  1. GIGABYTE WindForce™ 2X cooling design
  2. Support NVIDIA 3D Vision™ and SLI technologies
  3. Features Dual link DVI-I*2 / mini HDMI with HDCP protection

Las diferencias entre la versión básica (derecha), la de este artículo (centro) y otra nueva versión con 448 núcleos CUDA se pueden ver en la siguiente comparativa:


Como siempre, la información que nos da el fabricante de la tarjeta es muy justa y se limita a su implementación sin hablar casi del chip Nvidia, con lo que apenas nos sirve a la hora de elegir un modelo para nuestro sistema. Tendremos que ir a la página de Nvidia o a otras páginas especializadas donde al hacer los análisis nos digan qué se esconde de verdad dentro de la GPU. Y como viene siendo habitual también, en español encontraremos menos información que en las versiones en inglés de las páginas de los fabricantes.

De la web de Nvidia se extrae la siguiente información sobre el chip GTX 560 Ti:

Especificaciones de la GPU:
CUDA Cores 384
Reloj de gráficos (MHz) 822
Reloj del procesador (MHz) 1645
Tasa de relleno de texturas (miles de millones/s) 52.5
Especificaciones de la memoria:
Reloj de la memoria (MHz) 4008
Config. de memoria estándar 1024 MB GDDR5
Interfaz de memoria 256-bit
Ancho de banda de memoria (GB/s) 128.0
Funciones disponibles:
NVIDIA SLI® Ready* 
NVIDIA 3D Vision Surround Ready **
Tecnología NVIDIA PureVideo®***
HD Tecnología NVIDIA PhysX™ 
Tecnología NVIDIA CUDA™ 
Soporte de bus PCIe 2.0 x16
Certificado para Windows 7 
NVIDIA 3D Vision Ready 
Especificaciones térmicas y potencia:
Temperatura máxima de la GPU (en ºC) 99 C
Consumo máximo de la tarjeta gráfica (W) 170 W
Requisitos mínimos de potencia del sistema (W) 500 W
Conectores de alimentación suplementarios 22,86 cm

Del análisis hecho en The Guru of 3D podemos obtener las siguientes características:


El corazón de todas las GTX 560 Ti es el núcleo Fermi GF114 que se compone de 2 GPC (Graphic Processing Clusters), cada uno de ellos con 4 SM (Streaming Multiprocessors) compuestos a su vez de 48 Streaming Processors para hacer un total de 2x4x48=384 “núcleos CUDA”.

En esta imagen vemos la disposición general de la tarjeta, con 8 núcleos de memoria para hacer un total de 1 Gb.


En la siguiente podemos ver el esquema del núcleo GF114:

Y en esta el esquema de cada SM y ampliado el núcleo CUDA:

En cuanto al rendimiento hay numerosas pruebas que se pueden ver en los enlaces de la bibliografía, si bien mi impresión en general es que es una tarjeta que puede con todo, con un consumo de potencia ajustado (que no bajo…) y extremadamente silenciosa.

Como curiosidad incluyo los benchmarks hechos con varias tarjetas en la página Tom's Hardware para el Crysis 2:


Y el valor que saco yo en mi sistema con esos mismos ajustes y habiendo descargado el pack de mejora de DirectX11 y las texturas avanzados, todo al máximo y a 1680x1050:

2012-06-02 22:00:15 - Crysis2
Frames: 2286 - Time: 60000ms - Avg: 38.100 - Min: 29 - Max: 60

2012-06-02 22:02:35 - Crysis2
Frames: 3139 - Time: 60000ms - Avg: 52.317 - Min: 29 - Max: 61

2012-06-02 22:06:42 - Crysis2
Frames: 1618 - Time: 60000ms - Avg: 26.967 - Min: 15 - Max: 34

2012-06-02 22:10:54 - Crysis2
Frames: 1546 - Time: 60000ms - Avg: 25.767 - Min: 13 - Max: 31

En la última prueba bajé el Overclock de la tarjeta a los siguientes valores:
GPU Clock                  855 MHz
Memory Clock                       1031 MHz
Mientras que en el resto eran:
GPU Clock                  950 MHz
Memory Clock                       1145 MHz

Pero me producían corrupción gráfica. En este y en otros juegos he detectado errores, ralentizaciones y corrupción gráfica cuando estoy en valores cercanos a los 900 MHz, así que el Overclock de fábrica no es tan fiable como parecía en la documentación comercial.

Bibliografía:


 

Tema 3.d: Tecnologías de memoria DRAM utilizadas en tarjetas gráficas y videoconsolas


DRAM (Dynamic Random Access Memory) es un tipo de memoria dinámica de acceso aleatorio que se usa principalmente en los módulos de memoria RAM y en otros dispositivos, como memoria principal del sistema. Se denomina dinámica, ya que para mantener almacenado un dato, se requiere revisar el mismo y recargarlo, cada cierto período, en un ciclo de refresco. Su principal ventaja es la posibilidad de construir memorias con una gran densidad de posiciones y que todavía funcionen a una velocidad alta. En la actualidad se fabrican integrados con millones de posiciones y velocidades de acceso medidos en millones de bit por segundo. Es una memoria volátil, es decir cuando no hay alimentación eléctrica, la memoria no guarda la información. Inventada a finales de los sesenta, es una de las memorias más usadas en la actualidad.

"Random Access" indica que cada posición de memoria puede ser leída o escrita en cualquier orden. Lo contrario sería el acceso secuencial, en el cual los datos tienen que ser leídos o escritos en un orden predeterminado. Por ejemplo, un disco usa el acceso aleatorio, mientras que una cinta de ‘cassette’ usa un acceso secuencial.

Las posiciones de memoria están organizadas en filas y columnas. Cuando accedemos a la RAM empezamos especificando la fila, después la columna y por último decimos si deseamos escribir o leer en esa posición. En ese momento la RAM pone los datos de esa posición en la salida si el acceso es de lectura, o coge los datos y los almacena en la posición seleccionada si el acceso es de escritura.


Gráficas con memoria dedicada en RAM: 

Es el tipo de memoria utilizada por las gráficas integradas en placa base, de por ejemplo, ordenadores portátiles. En este tipo de gráfica la propia BIOS aparta la RAM que va a ser utilizada como memoria gráfica, siendo posible en muchos casos definir el tamaño de esta, aunque siempre dentro de unos parámetros mínimos y máximos. Este es el motivo por el que, si tenemos una placa base con una gráfica integrada de 128MB y una memoria RAM instalada de 1024MB el sistema nos va a indicar que tenemos 896MB de memoria RAM, si bien la BIOS nos va a reconocer 1024MB (que es el total de memoria RAM que tenemos instalada).

Gráficas con memoria propia: 

Se trata de gráficas que incorporan toda su memoria en la propia tarjeta. Este sistema es el utilizado por casi todas las tarjetas gráficas ISA, VESA, PCI, AGP y PCIe. En este tipo de tarjetas gráficas la totalidad de la memoria está en la propia tarjeta. 

Memorias DRAM en Tarjetas Gráficas:

- DRAM EDO: Este tipo de memoria introduce datos mientras los de salida aún no están colocados en el BUS del sistema, usando una especie de buffer. La máxima velocidad de lectura de la memoria EDO RAM es de 5-2-2-2 ciclos y es difícil crear memorias de este tipo que funcionen a velocidades de reloj superiores a 66Mhz.

- VRAM: Esta memoria es exclusiva de vídeo. Esta memoria era muy similar a la EDO, la principal característica es que se podía acceder a memoria desde dos dispositivos a la vez, tenía un puerto dual, o leer y escribir al mismo tiempo.

- WRAM: Es una VRAM optimizada. Funciona del mismo modo, con puerto dual, pero tiene un tiempo de acceso más rápido y es más barato.

- SGRAM: Es un tipo de especialización de la memoria SDRAM (de ámbito general). Añade mejoras a la hora de escribir en un solo bit sin afectar a otros y utiliza la escritura de línea entera de un mismo "color". Tiene un único puerto de entrada y salida pero puede simular un doble puerto creando dos páginas de memoria.

- MDRAM: Esta arquitectura define la memoria como un conjunto de bloques pequeños (32 KB) en paralelo conectados a un bus. Esto conlleva poder trabajar con accesos a memoria en paralelo.

- 3DRAM: Memoria optimizada para 3D, que integra en la memoria una unida ALU para poder llevar a cabo operaciones (Z-Buffer, por ejemplo) en la misma memoria.

- GDDR (1, 2, 3, 4, 5): Son memorias basadas en la tecnología DDR (dos transferencias por ciclo, en bajada y subida) pero optimizadas para tarjetas gráficas. Los distintos tipos son sucesivas mejoras en rendimiento, velocidad y amplitud de ancho de banda, pero la arquitectura sigue siendo la misma. Las tarjetas gráficas de altas prestaciones actuales usan GDDR5 y las de baja GDDR3. Por poner un ejemplo las tarjetas de memoria GDDR5 tienen velocidades en torno a los 900MHz - 1GHz, con acceso directo al procesador gráfico y un ancho de banda enorme (en el caso de la NVidia 8800GTS es de 62GB/s). 


Chips de memoria, en este caso GDDR4.


Según podemos observar los avances en memoria se dan de manera paralela entre memoria para PC y para gráficos, siempre siendo la de gráficos optimizada. Aunque es evidente que las potentes aplicaciones de diseño gráfico, arquitectura y modelado 3D, así como el entretenimiento de los videojuegos, han hecho que las tarjetas gráficas crecieran a pasos acelerados. Después de catalogar los diferentes tipos de Memorias DRAM en Tarjetas Gráficas pasaremos a analizar qué tipos de memoria utilizan las consolas de la actual generación:

- XBOX 360: GDDR3 RAM a 700 Mhz, es una arquitectura convencional, no es que la tarjeta gráfica sea de baja gamma, simplemente es que no les hace falta más.

Xenos - La consola Microsoft Xbox 360 contiene un chip de gráficos personalizado producido por ATI, conocido como "R500", "C1", o más a menudo como Xenos. Entre sus características se incluye DRAM incrustada en el chip (eDRAM). El Xenos también es la primera gráfica con la "Verdadera Arquitectura de Shader Unificada", que carga y distribuye dinámicamente el proceso de píxeles y vértices en unidades de igual procesamiento. Esto difiere mucho de las anteriores generaciones de chips gráficos para PC que tienen bancos separados de procesadores diseñados para una tarea individual específica (vértice/fragmento). Otra característica presentada en Xenos es la transformación de superficies en mosaicos para dividir una superficie en triángulos pequeños, similares a TRUFORM en términos de funcionalidad, que es una característica avanzada que ya no se incluye en la especificación DirectX 10 actual. La última generación de GPU Radeon R600 básico hereda la mayoría de las características presentes en Xenos, excepto eDRAM.

- PS3: Tiene dos módulos de memoria. Uno GDDR3 para la GPU ( con características similares a la XBOX) y otra XDRRAM, memoria de tipo Rambus RAM que se basa en una comunicación serie de alta velocidad y prestaciones.

- Nintendo Wii: GDDR3 para trabajar con gráficos y una ARAM (memoria de bajas prestaciones) dedicada exclusivamente al audio, para liberar la GDDR3 de datos de audio, aunque por ejemplo ‘El Nintendo GameCube’ (que  es una consola de videojuegos en formato cúbico que lleva un procesador especialmente optimizado de 485 MHz con alta tecnología de semiconductores de cobre) utiliza ‘Flipper’ que contiene un acelerador 3D desarrollado por ArtX, Inc, una compañía adquirida por ATI durante el desarrollo de la GPU. ‘Flipper’ tiene una capacidad similar a un chip acelerador de vídeo de Direct3D 7. Consta de 4 canales de renderizado, T&L por hardware, y un soporte limitado para Pixel Shader. El chip contiene una innovadora memoria 1T-SRAM de 3 MiB para el uso como almacenamiento ultra-rápido de baja latencia (6,2 ns) para texturas y el framebuffer/Z-buffer, que permite 10,4 GB/segundo de ancho de banda. Flipper fue diseñado por miembros del equipo de diseño del Nintendo 64 Reality coprocessor, quienes venían de SGI. El equipo de Flipper pasó a tener mucha influencia en el desarrollo de la Radeon 9700. El sucesor de ‘Flipper’ fue ‘Hollywood’, que es un componente de la última consola de juegos de Nintendo; Wii.

Tema 5.b: Coprocesadores para gráficos


Los coprocesadores son microprocesadores que realizan tareas específicas para liberar de carga los procesadores de propósito general. Una CPU “normal” (Central Processing Unit) puede realizar multitud de operaciones distintas y se intenta optimizar para que las haga en el menor tiempo posible, pero en general habrá determinadas tareas para las que si diseñamos un pequeño procesador específico para ellas le saque más rendimiento con menos recursos. En los procesadores antiguos había ejemplos de este tipo de componentes auxiliares en los coprocesadores matemáticos, para gestión de memoria (DMA), para gestión de gráficos, etc.

Coprocesador matemático
Actualmente se descarga a la CPU de las tareas más recurrentes e intensivas del procesado de gráficos a través de una tarjeta que lleva un procesador específico para ello: las tarjetas gráficas con su Graphics Processing Unit (GPU). Las GPUs están diseñadas para tratar grandes cantidades de datos, del mismo tipo, con una cantidad muy pequeña de instrucciones. Lo que se conoce como el pipeline gráfico es una serie de primitivas que manda el procesador central a la tarjeta gráfica donde se hacen todas las operaciones necesarias sobre dichos datos hasta llegar a la rasterización (proyección de los datos 3D en 2D para su salida por un dispositivo como la pantalla).

La demanda actual de gráficos más realistas e impresionantes ha multiplicado el interés en el desarrollo de nuevas GPUs y la demanda de potencia de cálculo es cada vez mayor. Para liberar a su vez a estos procesadores específicos de determinadas tareas recurrentes se recurre a los coprocesadores para gráficos, que son como el ayudante del ayudante. Con dos niveles de especialización se intenta conseguir resultados muy optimizados.

GPU de nVidia de la serie 6600 GT
Las GPUs actuales tratan de forma muy eficiente los cálculos necesarios para:

  1. Sombreado
  2. Texturización
  3. Renderizado
  4. Muestro múltiple (multisampling)
  5. Antialiasing

Actualmente las GPUs vienen en una tarjeta gráfica separada de la placa madre, conectada a la CPU y memoria RAM a través de bus AGP o PCI Express. Tiene acceso a una memoria RAM en la tarjeta que es normalmente más rápida pero de menor capacidad que la memoria RAM principal. Por otro lado, muchas placas madres tienen una GPU integrada en el chipset Northbridge (encargado de controlar la memoria RAM y la ranura AGP) que usa la memoria principal como frame buffer.

Al ver las características de las tarjetas gráficas actuales, algunos científicos vieron que se podían utilizar de forma muy eficiente para realizar determinados cálculos muy intensivos que eran de aplicación en el ámbito científico. Esto se ha llamado GPGPU: General Processing on a GPU. Es una idea muy similar al proyecto Folding@home que hay en PS3 para ayuda a la investigación contra el cáncer, sólo que en vez de correr sobre la GPU utiliza todos las unidades del Cell de todas las PS3 que estén conectadas en ese momento para desarrollo de modelos de proteínas.

Dentro de los microprocesadores que se han diseñado para las GPUs he podido encontrar información de dos tipos: los PPUS y los RTPU.

-        PPU: significa literalmente Physics Processing Unit y se encarga de gestionar los cálculos de físicas relacionados con efectos adicionales en la escena. Por ejemplo se pueden usar para mover pequeños objetos por el escenario a causa del viento de forma realista y físicamente correcta (aunque en el cálculo se suelen usar métodos de aproximación para resolver las ecuaciones, los modelos en que se basan sí son coherentes). Esto se podría hacer con una animación tradicional pero no sería igual de realista ni sería modificable ni reusable. Otro ejemplo es el tratamiento de partículas y fluidos  como humo, fuego, metralla, etc. 
Ejemplo de físicas aplicado en el juego Brothers in Arms
     La física general de la escena la sigue llevando el procesador principal, es en los “efectos especiales” donde se emplea la PPU.El primer coprocesador que salió al mercado fue el PhysX de Ageia y se le dio mucha publicidad gracias a juegos que lo usaban de forma espectacular como el Mirror’s Edge. Antes de este existieron proyectos como SPARTA y HELLAS que eran el resultado de proyectos de investigación.
     Posteriormente nVidia adquirió Ageia e incorporó su API en sus tarjetas, así pues no usó su tecnología como un coprocesador dedicado sino usando los recursos ya existentes en la tarjeta. Hoy en día no sería difícil tener dos tarjetas iguales conectadas en SLI o Xfire y asignar los cálculos de físicas a una de ellas, haciendo innecesario implementar otro hardware específico que tendría un coste muy similar y no sería muy atractivo para el usuario medio.

-        RTPU: Ray Tracing Processing Unit en inglés, hace referencia a la técnica de generación de imágenes 3D híper realista conocida como Traza de Rayos que intenta emular en un entorno digital el comportamiento real de la luz, dando como resultado imágenes espectaculares. El problema de esta técnica es que consume muchos recursos y de ahí el desarrollo de coprocesadores específicos que ayuden en esta tarea. Actualmente hay prototipos funcionales de esta tecnología como el CausticOne de Caustic Graphics que permiten representar estas escenas a una velocidad de 5 frames por segundo, lo que las deja prácticamente fuera del campo de imágenes interactivas. Sin embargo se espera que en el futuro cercano se desarrolle esta tecnología hasta alcanzar tasas de frames que permitan mostrar juegos comerciales que hagan uso de esta técnica.

Imagen renderizada con tecnología propia de Caustic Graphics