MEMORIAS DE VIDEO

------------- buffers de video -------------

Pagina hecha por Paolo Arancibia


Introduccion

Uno de los principales cuellos de botella al trabajar con entornos gráficos es la presentación en pantalla de las imágenes. Con cualquiera de los productos analizados en esta Prueba Comparativa podrá acelerar, notablemente, el rendimiento gráfico de su ordenador.

Las tarjetas de vídeo o adaptadores gráficos SuperVGA son extensiones al estándar VGA definido hace tiempo por IBM al presentar sus ordenadores PS/2. Como cualquier usuario avanzado de PCs sabe, dentro del espacio de direcciones al cual es capaz de acceder el procesador del ordenador, se ha definido una región destinada a albergar, entre otras cosas, memorias ROM de tarjetas de expansión y la memoria de vídeo de la tarjeta gráfica, ya sea ésta Hercules, MDA, CGA, EGA o VGA.

La memoria de vídeo es, fundamentalmente, memoria RAM situada en el adaptador gráfico del sistema. Dicha memoria contiene un mapa de bits que representa, de forma digital, la imagen que se muestra en el monitor. Ya que los monitores no aceptan, generalmente, una señal digital el contenido del buffer de vídeo debe ser convertido a formato analógico, para lo cual se emplea un chip DAC (Digital to Analog Converter, convertidor de digital a analógico).

En el caso que nos ocupa, las tarjetas VGA convencionales, sitúan su memoria de vídeo en dos posiciones diferentes dependiendo del modo que se encuentra activo en cada momento. De forma general podemos decir que, cuando usamos un modo de texto en color, la memoria de vídeo comienza en la dirección B8000 (con una extensión de 32 KB) mientras que al usar un modo gráfico la dirección de inicio es la A0000 (con una extensión de 64 KB).

Para acceder a los 256 KB de la memoria de la VGA estándar disponiendo de una ventana en la memoria del sistema de, como mucho, 64 KB IBM definió un sistema de acceso al buffer de vídeo mediante planos. De esta forma nos encontramos con que cuatro bytes de la memoria de vídeo comparten la misma dirección de memoria física, accediéndose a cada uno de ellos especificando mediante un puerto de entrada/salida a que plano en concreto vamos a acceder

En las tarjetas SuperVGA se utiliza un sistema, denominado conmutación de bancos de memoria, mediante el cual es posible tener acceso a cualquier bloque de memoria de la SuperVGA a través de la ventana situada en la dirección A0000 de la memoria del sistema. La longitud de los bancos a los que se tiene acceso depende de la implementación hardware realizada por cada fabricante, siendo típicos los siguientes valores: 64 KB, 32 KB, 16 KB y 4 KB.

Aquellos lectores con conocimientos de programación en lenguaje Ensamblador saben que las instrucciones de entrada/salida de la familia 80x86 de Intel (IN, OUT, INSB, OUTSB, INSW, OUTSW) son lentas, consumiendo cada una alrededor de siete ciclos de CPU, por lo que el cambio frecuente de banco de la SuperVGA suponía un retardo apreciable al utilizar aplicaciones gráficas.

Un remedio para el retardo que implica la conmutación de bancos de la tarjeta gráfica es el uso de un buffer de vídeo lineal. Sin embargo, el bus ISA, tan sólo es capaz de dar acceso a 16 MB de memoria RAM por lo que la implementación de esta técnica no es aconsejable ya que plantearía problemas de incompatibilidad con aquellas máquinas con 16 MB de memoria o más.

La solución a este problema vino de la mano de los buses locales, tanto VESA como PCI. Estos buses, al disponer en su patillaje de los 32 bits del bus de direcciones del procesador, hacen posible mapear la memoria de vídeo en cualquier zona de la memoria RAM física a la que el procesador tiene acceso. De esta forma, si trabajamos con una tarjeta gráfica con 2 MB de RAM, el procesador puede acceder a dicha cantidad de memoria sin necesidad de ejecutar ninguna instrucción de entrada/salida a través de un bloque de memoria contiguo de 2 MB de longitud.

Para mejorar aún más el rendimiento de las SuperVGA, muchos fabricantes han optado por abandonar el uso de direcciones de entrada/salida, utilizando en su lugar un bloque de direcciones de memoria que dan acceso a los registros del chip SuperVGA (esta técnica es idéntica a la utilizada por los procesadores 68000, de Motorola, y se denomina entrada/salida mapeada por direcciones de memoria). Algunos fabricantes de chips SuperVGA que usan las técnicas anteriormente comentadas son S3, Cirrus Logic, ATI Technologies, Trident, Headland Technologies, Matrox y Tseng Labs.

Memorias RAM y VRAM

Actualmente es posible encontrar en el mercado tarjetas gráficas que usan dos tipos de memoria: RAM y VRAM. Para explicar las características que diferencian estos dos tipos de memoria vamos a explicar, de forma breve, como se genera la imagen en el monitor de un ordenador

Como todos nuestros lectores saben, la imagen que aparece en el monitor es generada por la tarjeta gráfica a una velocidad que oscila entre 50 y 100 imágenes por segundo, dependiendo del tipo de monitor y tarjeta gráfica que usemos. Para generar cada una de estas imágenes, el DAC de la tarjeta gráfica, debe acceder, igual número de veces, a la memoria de la tarjeta gráfica, leyéndola completamente, para convertir los datos en ella almacenada a una señal analógica capaz de atacar la entrada de vídeo del monitor.

Si mientras el DAC está accediendo a la memoria de vídeo, el procesador del ordenador o el chip SuperVGA, desean acceder a dicho recurso serán detenidos, brevemente, hasta que el DAC haya finalizado su acceso. Esto es así ya que, si tuvieran preferencia sobre el DAC la CPU o el chip SuperVGA, el conversor digital-analógico no sería capaz de enviar al monitor la imagen a la velocidad necesaria para producir una imagen estable y sin interferencias.

Como se deduce del párrafo anterior esta situación produce retardos en el funcionamiento de la tarjeta gráfica al usar chips de memoria RAM convencionales. Para subsanar este problema se desarrollaron los chips de memoria VRAM, también denominados de doble puerto. Mediante el uso de estos componentes es posible que, tanto el DAC como el procesador del ordenador o el chip SuperVGA, accedan simultáneamente al buffer de vídeo ya que, cada uno de estos componentes, lo hará mediante un puerto diferente del chip de memoria VRAM no produciéndose, por lo tanto, interferencias entre ambos accesos.

El estandar VESA

Uno de los principales problemas de las tarjetas SuperVGA es que los modos extendidos que soportan, no contemplados por la especificación original de IBM, no son compatibles entre los distintos fabricantes que existen. Estos problemas de incompatibilidad cubren todos los aspectos de la programación de tarjetas gráficas, comenzando por los códigos de los modos de vídeo que hay que utilizar para activar dichos modos mediante la BIOS, hasta la forma en que se accede al buffer de vídeo completo y a la organización de dicho buffer.

Para solucionar todos estos problemas se creó el comité VESA (Video Electronics Standars Association), el cual fue encargado de realizar la especificación de una extensión para la BIOS de los PC que hiciera posible ejecutar cualquier programa, que utilizase los servicios de dicha extensión, sobre cualquier tipo de tarjeta SuperVGA. Hoy en día se encuentra disponible la versión 2.0 de la especificación, la cual incluye soporte para buffers de vídeo lineales y llamadas a las extensiones VESA desde programas ejecutándose en modo protegido

El comité VESA está trabajando, actualmente, en una extensión a la especificación 2.0 mediante la cual, los fabricantes de hardware, podrán añadir el soporte de funciones específicas de cada chip como, por ejemplo, dibujo de líneas, relleno de zonas de pantalla, copia de bloques de memoria, etc. Se deduce, por tanto, que la compatibilidad con el estándar VESA es una cuestión software más que hardware. Esto es así ya que, para que una VGA sea compatible VESA, tan sólo debe disponer de las extensiones de la BIOS que el comité VESA ha definido. Dichas extensiones pueden encontrarse implementadas directamente en la BIOS de la VGA o, por el contrario, cargarse mediante un programa residente.

Como se ha metido la velocidad

Para evaluar la velocidad de los productos analizados se han realizado dos tipos de pruebas: una para medir el rendimiento bajo DOS y otra bajo Windows 3.1. Como programa de test para DOS se ha utilizado la aplicación 3DBench. Se trata de un programa que produce una animación tridimensional, en tiempo real, durante aproximadamente 100 segundos. Una vez transcurrido dicho período se indica el número de cuadros por segundo que el sistema ha sido capaz de generar. El modo de vídeo utilizado por 3DBench es el 13h, el cual dispone de una resolución de 320 por 200 pixeles con 256 colores simultáneos. Prácticamente todas las aplicaciones para DOS que usan gráficos de forma intensiva (juegos sobre todo) utilizan dicho modo, por lo que el test es un buen indicativo de la velocidad de acceso al buffer de vídeo de la tarjeta.

Para medir la velocidad bajo Windows se ha utilizado el programa Wintach, de la firma Texas Instruments. Mediante esta aplicación se obtiene un índice de velocidad relativo a un ordenador 386DX a 20 MHz utilizando una SuperVGA basada en un chip ET4000 de Tseng Labs. El índice de velocidad final se ha obtenido sumando los índices procedentes de los dos tests, tanto DOS como Windows.

Caracteristicas Evaluadas

Todas las tarjetas que han sido analizadas disponían de, al menos, 2 MB de memoria de vídeo. La prueba comparativa ha sido dividida, por razones obvias, en tarjetas que usan memoria DRAM y en tarjetas que usan memoria VRAM.

Dentro de la tabla que detalla las características de los productos analizados se ha incluido un apartado que indica si la tarjeta dispone de aceleración hardware para realizar render en tres dimensiones. Si bien en la actualidad no existen demasiados productos que dispongan de dicha función, diversos fabricantes importantes han anunciado su intención de poner en el mercado, en breve plazo de tiempo, equipos que incorporaran funciones de este tipo.

Las noticias de que disponemos es que esta nueva generación de tarjetas tendrán precios asequibles, ya que hay varios fabricantes importantes (3D Labs, Creative Labs, Nvidia Corporation, Video Logic, S-MOS, SGS-Thomson) trabajando en chipsets de bajo coste.

Para evaluar las tarjetas hemos utilizado como referencia los siguientes parámetros:

- Conectores VAFC (Vesa Advanced Feature Connector), VMM (Vesa Media Channel), SFBI (Shared Frame Buffer Interconnect) o feature connector compatible VESA. Los tres primeros tipos de conectores tratan de resolver los problemas de compatibilidad que presenta el feature connector tradicional. Todos ellos proporcionan un bus de datos de 32 bits que permite, según los casos, conectar entre sí distintas tarjetas multimedia para, de esta forma, no cargar el bus (ISA, PCI o VESA) del sistema. El feature connector tradicional puede plantear problemas al trabajar en algunos modos gráficos (con más de 8 bits por pixel o con frecuencias de refresco vertical altas), de forma conjunta con digitalizadoras de vídeo y tarjetas decodificadoras MPEG.

- Aceleración de vídeo digital. Algunos chips SuperVGA disponen de funciones implementadas mediante hardware que aceleran la presentación de secuencias de vídeo digital. En la mayoría de las ocasiones, dicha aceleración, se limita a realizar procesos de interpolación para realizar el escalado de la imagen o a la conversión de color RGB a YUV, o viceversa.

- Anchura del bus de datos interno. El procesador gráfico de las SuperVGA utiliza un bus de datos independiente para comunicarse con la memoria de vídeo y para que el DAC produzca la imagen. La anchura de este bus es fundamental para realizar una aceleración hardware lo más efectiva posible. Un bus más ancho implica, normalmente, un mejor rendimiento de la tarjeta gráfica.

- Memoria de vídeo instalada y cantidad máxima permitida. Con una memoria de vídeo más grande, es posible obtener resoluciones más elevadas o con un número de colores más elevado. Aquí se evalúa, por tanto, la memoria de vídeo instalada y la cantidad máxima a la que puede ser ampliada

- Velocidad. Al trabajar con ordenadores rápidos (Pentium a 90 MHz o más) es fundamental que la tarjeta gráfica no sea un cuello de botella que degrade el rendimiento general del sistema.

- Precio. Un precio acorde con las prestaciones del equipo es lo que hace, en muchas ocasiones, que el usuario se decante por uno u otro producto, por lo que esta característica es fundamental.