Aceleradores gráficos. Su impacto en el bus del sistema.
Conceptos básicos
Controladora de video tradicional en modo gráfico
Buffer de video en placas ISA se ubica en el rango de posiciones de memoria comprendido entre 0xA0000 y 0xBFFFF, su tamaño máximo es 128 KB.
Aceleradores gráficos
Los aceleradores gráficos son la evolución de las tarjetas gráficas, se trata de hardware que incorpora microchips a medida (o ASIC) el cual posee la capacidad de realizar operaciones matemáticas especiales generalmente utilizadas en el procesamiento de imágenes.
Lo que antes se hacía por software ahora se hace por software con ayuda de hardware dedicado. Y cada vez más ayuda. Podríamos hablar de un microcódigo para las placas aceleradoras.
La evolución de los aceleradores gráficos es tal que su capacidad de procesamiento incluso supera a la capacidad del propio procesador central del sistema.
Aceleración 2D
Llenado de figuras
Trazado de líneas
Transparencia (canal alfa)
Sprites
Texturas
Fuentes de texto
Mover y rotar imágenes
Glosario 3D
Mapas de textura: Mapas de bits que se pueden transformar para dotar a la imagen de realismo.
Manejo de la Iluminación (Lighting): Cálculo del color del elemento a partir de la luz disponible en la escena elemento por elemento.
Buffer de profundidad: Almacena las coordenadas de los vertices y su relación con el observador.
Coordenadas proyectivas: Representación de elementos tridimensionales en cuatro coordenadas para evitar el uso de divisiones.
GPU: Graphics processing unit.
Rendering: Proceso de aplicación de un relieve a un cuerpo de tres dimensiones, considerando la textura, la iluminación, la posición del observador.
Pipeline input: La mayoría de los sistemas asume que todo se puede construir a partir de elementos básicos (triángulos). Procesándolos por medio de transformaciones simples como: Rotación, traslación, escala. Son varios procesos en paralelo.
Camera simulation: Llevar los elementos de la escena (3D) al plano de la pantalla
Rasterization: Ubicar el elemento en la pantalla, asociarlo a un pixel.
Texture mapping: Técnica para agregar realismo a la imagen, imágenes que ajustan el color de cada pixel.
Evolución
Las GPU’s han evolucionado desde implementaciones de hardware específico a hardware programable.
Las funciones fijas que hacían transformaciones de modelos en vértices (vertex) y/o texturado de pixels han sido reemplazadas por arreglos de procesadores, denominados shaders, en forma optimizada.
Los programadores utilizan estos shaders para realizar multiplicación de matrices, exponenciación, cálculos de raíz cuadrada, transformaciones y cálculos de iluminación.
Los shaders son programados en lenguajes como por ejemplo: Assembler, Cg, GLSL, HLSL.
Procesamiento 3D: Modelado de escenas
Consiste en representar todos los objetos mediante conjuntos de triángulos, formados por “vértices” (vertex)
Uso de algoritmos matemáticos
Se comienza agregando triángulos hasta representar superficies muy complejas.
Traslación
Rotación
Multiplicación
Cálculo de la Iluminación y punto del observador
Y continúa con Rasterización (determinación de superposiciones de píxeles de diferentes polígonos en la imagen), luego Texturado (aplicar texturas mediante mapas de bits) y el Calculo de superficies ocultas.
Originalmente llevado a cabo mediante un pipeline de Hardware que implementaba en forma secuencial todos estos procesos tomando como entrada un “stream” o “flujo continuo” de vertex
Nuevo enfoque, Multiprocesamiento
Se utiliza una “grilla” de Unidades de Procesamiento multipropósito (UPs) agrupados en “clusters”
Cualquiera de ellos puede implementar cualquiera de las antes mencionadas “etapas” del “pipeline” gráfico
Cada uno de ellos cuenta con memoria cache propia, unidades de punto flotante y de Captura de Texturas (Texture Fetch)
GeForce 9800 GX2: Acelerador gráfico ejemplo
256 Stream Processors
Core Clock: 600 Mhz
Shader Clock: 1500 Mhz
Memory Clock: 1000 Mhz
Memory Amount: 1GB
Memory Interface: 512 bits
Memory Bandwidth: 128 GB/sec
Texture Fill Rate: 76,8 billion/sec
Conclusión: Necesidad de ancho de banda con la memoria y storage.
Presentado el GPU nos queda una pregunta, cómo impacta la alta capacidad de procesamiento de los aceleradores gráficos en la arquitectura de la PC. Analicemos el impacto en el sistema.
El impacto del acelerador gráfico en el bus PCI Peripheral Component Interconnect
Paralelo
Arbitraje por interrupción
LoadStore Architecture (via PCI Configuration Space)
Memory, I/O, Config
PCI Power Management
Parity and ECC
Evolución del bus PCI
Inicialmente propuesto por Intel, PCI v1.0 en 1991
Special Interest Group (PCISIG) presenta PCI 2.0 en 1993
32 bits Throughput @ 33 MHz: 133 MB/sec
Versión 2.1 fue aprobada en 1995
PCI Dual 3.3V y 5V
64 Bit slots y 66 MHz
32Bit throughput @ 66 MHz: 266 MB/sec
64Bit throughput @ 66 MHz: 532 MB/sec
Versión 2.3 fue aprobada en 2002
Abandona 5V, pero las PCI Duales siguen válidas
Arquitectura PCI
Identificación de slots PCI
PCI: estructura y señales
Se configura como bus de 32 ó 64 bits
49 líneas de señal obligatorias
Sistema: reloj y reset
32 líneas multiplexadas (datos y direcciones)
Líneas para interpretar y validar
Control de interfaz: coordinan envío y recepción
Arbitraje: pares de líneas dedicadas maestrosárbitro
Señales de error (ej: paridad).
PCI 64 bits: Aparecen 51 señales opcionales
Interrupción: líneas dedicadas para cada dispositivo
Soporte de caché para que se conecten al PCI
32 líneas multiplexadas (datos y direcciones) (adicionales)
Líneas de interpretación y validación
2 líneas que permiten que 2 dispositivos PCI utilicen 64 bits.
Terminales de test: estándar IEEE 1149.1
Procesamiento de Video 3D en PCI
El impacto del acelerador gráfico en el bus AGP Bus de alto rendimiento para controlador gráfico. (1998)
AGP reduce cuellos de botella ya que es un bus dedicado de alta velocidad.
Responde a las necesidades de las aplicaciones gráficas: Permite visibilidad directa VideoMemoria del sistema
32 líneas multiplexadas
Alta velocidad (reloj del bus de la CPU)
AGP en el flanco ascendente como en el descendente de la señal de clock
Transmisión: 528 MB/s ó 1 GB/s
Procesamiento de Video 3D en AGP
Plataforma PCI: Arquitectura y Performance
A medida que aumentan los requerimientos de ancho de banda de bus por parte de los dispositivos, las plataformas PCI evolucionaron en una arquitectura compuesta por dos puentes:
Norte: representado por el Hub de Memoria. (North Bridge)
Sur: representado por el Hub de E/S. (South Bridge)
Los recursos de alta performance se conectan al N.B.
Los de baja performance al S.B.
Dentro de los recursos de baja performance del Hub Controlador de E/S, algunos requieren conexión de alta performance (p.ej. un CD) y otros se pueden utilizar como un segmento compartido del bus PCI (p.ej. Ethernet y SCSI)
Arquitectura PCIX
PCIX fue desarrollado para extender la performance de PCI.
El Bridge HOST/PCIX representa una consolidación de los controladores de Hub en una estructura de Bridge único.
Inicialmente PCIX simplemente incrementa la frecuencia de la línea de la señal CLK respecto de PCI con el objeto de incrementar el ancho de banda del segmento del bus.
Eventualmente PCIX DDR y QDR proveen una fuente de sincronismo para mejorar el ancho de banda del segmento. “D” y “Q” se refieren a dual y quad como múltiplos respectivamente de la señal de strobe, dentro de un mismo período de la señal CLK.
El incremento en el ancho de banda del segmento del bus reduce ampliamente el número de slots de conexión de placas por cada segmento de bus.
El aumento en la performance de los PCIX DDR y QDR resulta en interconexiones punto a punto.
Otro enfoque al problema
Los datos tienen que estar marcados, de esa forma el sistema de I/O reconocerá el tipo de tráfico
Simplificar y Homogeneizar las arquitecturas
Mantener la compatibilidad con modelo de software de PCI
Mas ancho de banda
QoS
Hot Swap
El impacto del acelerador gráfico en el bus PCIe
Diferencias entre PCI y PCIe
PCI
Paralelo Arbitraje por Interrupción Ancho de banda definido No QoS
PCIe
Serie Arbitraje por Mensajes Ancho de banda gestionable QoS
Justificación del uso del bus PCIe para 3D Video, según NVIDIA
“... Simply bandwidth. The fastest version of AGP supported up to 1 GB/s transfers, I believe, and it was asymmetric CPU > GPU was full speed, but GPU > CPU was much, much slower. PCIe supports up to 4 GB/s bidirectional, and PCIe Gen 2 supports up to 8 GB/s bidirectional. The bandwidth directly affects the complexity of the scene that can be limited, since bandwidth limits the speed with which the host CPU can send geometry (vertices) and images (texture maps) to the GPU for processing.”
Dave Luebke, NVIDIA Research
Otras aplicación es de un acelerador gráficoTodo lo visto sugiere que la capacidad de procesamiento disponible, sobre todo en operaciones de punto flotante, bien puede utilizarse para otros fines además de la producción de imágenes en pantalla; tal es el caso del procesamiento de señales o la computación de propósito general.
Hay varios trabajos al respecto. GPGPU
Así algunas aplicaciones son:
Problemas de computación distribuida
Simulaciones de modelos físicos
Transformadas rápidas de Fourier
Procesamiento de señales de Audio
Procesamiento digital de imágenes
Decodificación y procesamiento de video
UTNFRBA, Noviembre de 2008
Top Related