| Artículos | 01 DIC 1996

Bus AGP

Tags: Histórico
Accelerated Graphics Port
Susana Galán.

Con la generalización durante el próximo año de las aceleradoras 3D, los usuarios demandarán una mayor velocidad de los subsistemas gráficos y mayor capacidad para almacenar texturas. El bus AGP, desarrollado por Intel, da respuesta a estas necesidades.

Cuando tenga entre sus manos este ejemplar de Dealer World diversos fabricantes de chips aceleradores gráficos habrán lanzado ya al mercado diferentes modelos de procesadores gráficos con capacidad de render, mediante hardware, de gráficos en tres dimensiones. Al mismo tiempo, los fabricantes más importantes de tarjetas gráficas habrán puesto a la venta modelos basados en dichos chips. Para el usuario final la ventaja más importante de esta nueva ola de productos es que va a disponer de tarjetas gráficas con aceleración 3D por el mismo precio por el cual, hace unos meses, podía adquirir una tarjeta que sólo disponía de aceleración 2D.

Sin embargo, todas las soluciones actualmente disponibles tienen limitaciones en cuanto al número y calidad de las texturas que son capaces de manejar, limitaciones que vienen dadas, en la mayoría de los casos, por la cantidad de memoria de vídeo de que dispone la tarjeta aceleradora.

Limitaciones de los productos actuales

Casi todos los chips aceleradores 2D y 3D actualmente disponibles almacenan toda la información que manipulan en un espacio de memoria contenido en la RAM presente en la tarjeta donde van montados. Hasta hace poco tiempo, lo normal era que las tarjetas gráficas dispusieran de 1 MB de RAM. Sin embargo, debido entre otras cosas a la bajada de precio de la RAM, hoy en día es normal disponer de tarjetas con 2 MB de RAM y, en poco tiempo, será común tener aceleradoras gráficas con 4 MB de RAM a precios asequibles.

Cuando se trata de realizar el render de gráficos en tres dimensiones, es necesario manejar estructuras de datos adicionales al propio buffer de vídeo. Casi todo el hardware acelerador 3D disponible realiza la eliminación de superficies ocultas mediante el denominado buffer Z. Este se encarga de almacenar la coordenada Z, relativa a la posición del observador, de cada pixel de la pantalla. Cuando se va a dibujar un pixel en el buffer de vídeo se compara su coordenada Z con la del pixel que ya se encuentra en el mismo. Si la coordenada Z del nuevo pixel indica que se encuentra más cerca del observador que el pixel que ya está dibujado, se dibuja el nuevo pixel y se actualiza su coordenada Z en el buffer Z.

Como el lector puede deducir para dibujar un pixel mediante este método son necesarias, en el peor de los casos, realizar una lectura del valor almacenado en el buffer Z, comparar con el valor leído con la coordenada Z del pixel que se desea dibujar y, finalmente, realizar dos escrituras en la memoria de la tarjeta gráfica: una para dibujar el pixel y otra para modificar su coordenada Z. Todas estas operaciones de lectura y escritura consumen ancho de banda del bus que comunica al acelerador gráfico con el buffer de vídeo.

Hasta ahora, hemos supuesto que estamos creando polígonos en tres dimensiones con sombreado plano o sombreado de Gouraud. Pero si deseamos aplicar texturas sobre estos polígonos ejerceremos aún una mayor demanda de ancho de banda.

Si, por ejemplo, deseamos que el hardware realice el render de gráficos tridimensionales con mapeado de texturas, y que se produzca el filtrado bilineal de dichas texturas, será necesario realizar cuatro accesos de lectura adicionales antes de dibujar un pixel. Esto se debe a que el filtrado bilineal de texturas implica acceder a los cuatro pixeles vecinos al que deseamos leer y realizar una media de sus valores, para posteriormente usar dicha media para dibujar en la pantalla el pixel definitivo.

Los productos actualmente disponibles disponen tan sólo, en muchos casos, de 2 MB de memoria de vídeo, lo cual limita enormemente la cantidad de texturas que es posible almacenar. Por otra parte, muchos aceleradores 3D de bajo precio no proporcionan el ancho de banda necesario para generar un elevado número de polígonos con texturas por segundo. Es necesario, por lo tanto, una solución que, a bajo precio, haga posible el diseño de aceleradores 3D que proporcionen una elevada velocidad de render con texturas filtradas bilinealmente y que, al mismo tiempo, tengan acceso a una elevada cantidad de memoria RAM donde almacenar dichas texturas.

Requerimientos de un acelerador 3D

La principal exigencia que se le presenta al diseñador, a la hora de crear la arquitectura de un acelerador 3D, es cómo disponer del suficiente ancho de banda en el acceso a la memoria local del acelerador para que el sistema sea capaz de generar un render de calidad a una elevada velocidad.

Debemos recordar que en un sistema de este tipo diversos elementos compiten para conseguir acceder a la memoria local del acelerador, en la cual, normalmente, se almacena la imagen que se mostrará en el monitor, las texturas que se aplican a los polígonos para que éstos presenten un aspecto real y el buffer Z.

También se debe tener en cuenta que el DAC (Digital to Analog Converter, Conversor de Digital a Analógico) tiene prioridad en el acceso a la memoria local del acelerador sobre el resto de elementos de éste, ya que es el encargado de transformar el contenido de la memoria de vídeo en una señal analógica que sea aceptada por el monitor, así como de generar las correspondientes señales de sincronismo.

Para solucionar estos problemas se han ideado diversas soluciones. Una de las más usadas es que el acelerador 3D disponga de dos espacios de memoria separados. En uno de ellos se mantiene la imagen que está siendo generada por el acelerador 3D, es decir, la que se envía al monitor. En el espacio de memoria restante se almacenan las texturas y el buffer Z. Con esta arquitectura es posible diseñar un sistema que utilice VRAM, EDO VRAM, SGRAM o RDRAM para el espacio de memoria encargado de contener la imagen, mientras que el espacio de memoria donde se almacenan las texturas y el buffer Z se construye con DRAM o con EDO DRAM convencional. Ejemplos de este tipo de diseño son, en el mercado doméstico, los aceleradores basados en el juego de chips Voodoo Graphics de 3dfx Interactive y, en el mercado profesional, las tarjetas basadas en los chips Glint 300SX y 500TX de la firma 3D Labs.

Sin embargo, en los sistemas de bajo precio, la práctica más común es utilizar un espacio de direcciones único en el cual se almacena la imagen, las texturas y el buffer Z. Este tipo de diseño es el utilizado por los chips Virge de S3, Vérité de Rendition, Rage de ATI Technologies, Permedia de 3D Labs y Laguna 3D de Cirrus Logic.

Relación entre AGP y PCI

El bus AGP utiliza como base la especificación de bus PCI a 66 MHz definida en la versión 2.1 del bus PCI pero, al mismo tiempo, añade mejoras y extensiones que están orientadas para hacer posible el diseño de sistemas gráficos en tres dimensiones de alto rendimiento. Dichas extensiones no están definidas ni las requiere el bus PCI y son las siguientes:

- Las operaciones de lectura y escritura se realizan a través de buffers, generalmente presentes en el chipset de la placa base, para obtener una latencia nula en los accesos a memoria.

- Las líneas de datos y de direcciones del bus AGP están demultiplexadas.

- Capacidad para realizar transferencias a 133 MHz, lo cual hace posible una velocidad de transferencia superior a los 500 MB por segundo.

El lector debe tener en cuenta que el bus AGP no es un sustituto del bus PCI, ya que se trata de un tipo de conexión especialmente diseñado para la conexión de tarjetas gráficas. Además, el conector AGP es incompatible con los conectores PCI, ya que física, eléctrica y lógicamente es independiente del bus PCI.

Diferencias entre el bus AGP y PCI

Aunque el dis

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios