AGP - Porta de Gráficos Acelerados

O que é o AGP?

O interface da porta de gráficos acelerados (AGP) é uma nova especificação de barramento que possibilita grandes desempenhos gráficos em Pcs. Este novo barramento troca as exigências de memória para porções 3D de um subsistema de gráficos da memória local para a memória do sistema principal.

 

Os benefícios do AGP incluem:

- Um pico de largura de banda 4 vezes superior ao barramento PCI e mais transferências de dados por relógio.

- Possibilita às placas gráficas a execução de texturas directamente da memória do sistema em vez de forçar o pré-carregamento dos dados para a memória local das placas gráficas. Esta técnica é chamada de Direct Memory Execute of textures.

- Reduz a contenção com o CPU, dispositivos de I/O para barramentos e acesso à memória. O barramento PCI serve os controladores de disco, chips LAN e possível captura de vídeo. o AGP opera concorrente e independentemente da maioria das transações em PCI.

- Possui uma ''porta extra'' para o chip gráfico de acesso à memória para que possa ler texturas da memória AGP enquanto lê/escreve valores e pixels da memória local. Permite ao CPU a escrita directa para a memória AGP partilhada quando precisa de ler dados de gráficos, como comandos ou texturas animadas. Geralmente o CPU pode ter acesso à memória principal mais depressa do que a memória gráfica local por AGP, e certamente mais rápido do que pelo barramento PCI.

- Habilita novos tipos de aplicações no PC como 3d CAD/CAM, visualização de dados e interfaces de usuária em 3D.

 

Implementação do AGP

O aspecto mais crítico dos gráficos em 3D é o processamento de texturas cujos bitmaps descrevem as superfícies tridimensionais dos objectos. O processamento de texturas consiste em ir buscar um, dois, quatro ou oito texels (elementos de textura) a um bitmap, fazendo a média entre eles através de uma aproximação matemática da localização do bitmap (ou bitmaps múltiplos) necessário para a imagem final e só então escreve o pixel resultante no ''frame buffer''.

Em sistemas pre-AGP e PCI há cinco passos básicos envolvidos no processamento de texturas:

1- Para que possam ser usados, as texturas são lidas do disco duro e carregadas para a memória do sistema. Os dados deslocam-se através do barramento IDE para o chipset antes de serem lidos para a memória.

2- Quando uma textura é necessária para um cenário ou objecto, esta é lida da memória do sistema para o processador. O processador efectua algumas alterações nas texturas para depois apresentar o resultado.

3- As transformações na luz e nas perspectivas são então aplicadas aos dados armazenados na cache.

4- O controlador de gráficos lê então da memória do sistema as texturas transformadas e escreve-as na memória local de vídeo (também chamada de memória de controlo de gráficos, frame buffer ou off-screen RAM). Nos sistemas actuais, estes dados ''deslocam-se'' para o controlador de gráficos através do barramento PCI.

5- A seguir o controlador de gráficos lê as texturas e informação sobre as cores do frame buffer. Estes dados são usados para criar uma imagem em 3D num ecrã a 2D. O resultado desta operação é novamente escrito no frame buffer onde o conversor do sistema converte o sinal de digital para analógico pare ser depois enviado para o ecrã.

O dispositivo leitor pode ter alguns problemas com as texturas na maneira como elas são manuseadas.

Em primeiro lugar as texturas são armazenadas na memória e no frame buffer. Guardar as texturas, mesmo que temporariamente no frame buffer, impõe um limite ao tamanho das texturas. Os fabricantes de hardware estão constantemente a serem pressionados para que ponham mais frame buffer nos seus sistemas pois cada vez mais se requer texturas como maior detalhe. Porém este tipo de memória é caro, o que não é uma óptima solução. Finalmente, os 132 MBytes/s de largura de banda dos barramentos PCI limitam as taxas de transferência de texturas para o sistema gráfico. Além disso, em sistemas típicos vários dispositivos de I/O têm que partilhar essa largura de banda.

 

O AGP alivia a transferência de dados adicionando um barramento de alta velocidade entre o controlador gráfico e o chipset. Isto faz diminuir a largura de banda e tráfego de vídeo dos constrangimentos do barramento PCI. Mas o AGP permite que as texturas sejam acedidas directamente do sistema de memória à medida que vão sendo necessárias em vez de ser feito o pré-carregamento para a memória gráfica. Segmentos da memória do sistema podem ser dinamicamente reservados pelo sistema operativo para serem usados pelo controlador gráfico; esta memória é denominada de ''AGP memory'' ou ''non-local video memory'' (memória AGP ou memória de vídeo não local). O resultado reside no facto de o controlador gráfico requerer menos texturas na memória local. Exigências em termos de memória local menores significam custos menores. Esta inovação também elimina o constrangimento no tamanho que a memória local gráfica impõe às texturas e permite também a aplicações um maior uso de texturas, realismo e uma melhor qualidade de imagem.

O AGP é implementado com um conector semelhante com o que é usado no PCI, com 32 linhas para endereços de dados e descodificadores. Há também 8 linhas adicionais para sideband.

 

A memória de vídeo local é normalmente mais cara que os sistemas de memória generalizados e não pode ser usada para outros fins pelos sistemas operativos quando as aplicações gráficas já não as usam. O controlador gráfico precisa de uma acesso rápido à memória de vídeo local para um refrescamento do ecrã. Por estas razões, os programadores podem sempre esperar ter mais memória para texturas disponível por AGP. Manter as texturas fora do frame buffer permite uma maior resolução de ecrã.

Enquanto o PCI suporta um máximo de 132 MBytes/s, o AGP a 66 MHz corre até um máximo de 533 MBytes/s. Esta velocidade pode ser aumentada através da transferência de dados nos sentidos ascendentes e descendentes de um relógio a 66 MHz e através e pelo uso de transferências de dados mais eficientes.

 

O AGP dispõe de dois modos para que o controlador gráfico aceda às texturas na memória do sistema: pipelining e endereçamento sideband.

Em pipelining, o AGP sobrepõe a memória ou períodos de acesso ao barramento para um pedido (''n'') com o emitir de pedidos (''n+1''...''n+2''...etc.). No barramento PCI, o pedido ''n+1'' não começa até que a transferência de dados do pedido ''n'' acabe. Enquanto que o AGP e PCI podem ''estourar'' (transferir artigos de dados múltiplos continuamente em resposta a um único pedido). A profundidade do pipelining AGP depende da implementação e permanece transparente a software de aplicações.

Com o endereçamento por sideband, o AGP utiliza 8 linhas endereços de ''sideband'' o que permite ao controlador gráfico emitir novos endereços e pedidos simultâneos enquanto que os dados dos pedidos anteriores continuam a mover-se.

A chamada memória AGP não é mais do que áreas do sistemas de memória dinamicamente alocadas, que o controlador gráfico pode aceder rapidamente. Apesar do controlador gráfico poder aceder a grandes estruturas de dados como bitmaps (tipicamente de 1KByte até 128 KBytes) como uma única entidade. O chipset embutido no hardware é chamado de GART (Graphics Address Remapping Table), e o seu funcionamento é semelhante ao do hardware no CPU.

 

Comparação entre PCI (Peripheral Component Interconnect) e AGP (Accelerated Graphics Port)

O AGP tem uma largura de banda que é 4 vezes superior ao barramento PCI mesmo usando pipelining, endereçamento por sideband e maior transferência de dados por ciclo de relógio.

Também permite às placas gráficas a execução de texturas directamente do sistema de memória em vez de forçar o pré-carregamento dos dados das texturas para a memória local da placa gráfica.

Diferenças entre AGP e PCI

- Provavelmente a característica mais importante do AGP é o DIME (direct memory execute). Isto dá aos chips do AGP a capacidade de aceder directamente à memória principal para operações complexas relacionadas com o manuseamento de texturas.

- O AGP dispõe de dois métodos para que as placas gráficas tenham acesso directo às texturas no sistema de memória: pipelining e endereçamento por sideband.

- O AGP faz pedidos múltiplos para dados durante um acesso à memória ou ao barramento, enquanto que o PCI faz um pedido e não volta a fazer até que os dados pedidos sejam transferidos.

- O AGP não partilha a sua largura de banda com outros dispositivos enquanto que o PCI partilha.

- O AGP não substitui o barramento PCI pois é uma conexão que apenas pode ser usada pelo sistema gráfico.

- O AGP e o PCI também diferem no comprimento mínimo requerido para transferências de dados. As transferências APG são em múltiplas de 8 bytes enquanto que as transferências PCI são múltiplas de 4 bytes.

AGP
PCI
Pedidos em pipeline Pedidos Non-Pipeline
Endereços/dados descodificados Endereços/dados codificados
Máximo de 533 MB/s a 32 bits Máximo de 133 MB/s a 32 bits
Apenas lê e escreve na memória sem efectuar outras operações input/output Usa todo o sistema
Prioridade para certo tipo de informação Sem prioridade

 

 

Análise de Benchmark

Benchmark - Programas individuais ou misturas de programas que são corridos num computador designado para medir o desempenho global do sistema ou medir aspectos mais específicos do desempenho, como aplicações gráficas, processamento I/O, etc.

Para saber se o AGP tem um desempenho melhor, é necessário usar duas placas idênticas.

Unreal Demo, por GT Interactive Software - usado uma demonstração de tempo para medir os frames por segundo (FPS) em uma aplicação 3D: Resultado: AGP=18.36 FPS e PCI=18.1 FPS

Resultados

- O barramento PCI actual suporta uma taxa de transferência de 133 MB/s, enquanto que o AGP (a 66 MHz) suporta uma taxa de transferência de 533 MB/S, o que torna o barramento AGP substancialmente mais rápido.

- O resultado do AGP é uma frame rate mais suave e que habilita gráficos em 3D e vídeos muito realistas e com uma qualidade como nunca se viu antes num PC.

 

AGP e AGP Pro

Assim como quase tudo na Informática, o AGP também teve o seu processo de evolução. O primeiro modelo de AGP, chamado de AGP 1x, permitia transferir até 266 MBytes de dados por segundo. O padrão seguinte foi o AGP 2x, que é duas vezes mais rápido, permitindo que a placa de vídeo receba ou transmita até 533 MB de dados por segundo.

Como se não bastasse, as placas mãe atuais trazem slots AGP 4x, que permitem transferências de dados de até 1066 MB por segundo. Para entender o potencial, imagine que encaixada num slot AGP 4x, a placa de vídeo poderá transmitir uma quantidade de dados equivalente a um CD inteiro em apenas 0.61 segundos! Dependendo do chipset utilizado, o slot AGP da placa mãe pode comportar apenas um certo tipo de placas AGP. Pode ser que sejam suportadas apenas placas AGP 1x ou 2x, apenas placas 4x, ou então que seja suportado qualquer um dos três padrões.

Para se ver que tipos de placas AGP são suportadas pela placa mãe basta apenas observar a posição do pino central do slot AGP, como mostrado na figura 8. Se o pino estiver próximo do fundo do gabinete, do lado da fonte, então são suportadas apenas placas de vídeo AGP 1x ou 2x, (esta é a configuração mais comum em placas mãe antigas); se o pino estiver na posição contrária, mais próximo da frente do gabinete (como na ilustração central), então são suportadas apenas placas de vídeo AGP 4x.

Mas, se não existir pino algum (como na ilustração de baixo) então temos um slot AGP universal, onde podem ser encaixadas placas de vídeo de qualquer um dos três padrões. Esta é a configuração mais comum nas placas mãe atuais.

 

Naturalmente, assim como muda o encaixe na placa mãe, também muda o formato do conector da placa de vídeo. Veja nas figuras a seguir a diferença entre os conectores de uma placa de vídeo AGP 2x e de outra AGP 4x. Na primeira figura pode-se ver os conectores AGP 1x/2x e na segunda figura vê-se um conector universal (que pode ser usada em qualquer placa mãe com slot AGP).

Apesar de permitir um barramento de dados largo o suficiente para saciar mesmo as placas de vídeo 3D mais poderosas, os slots AGP 4x possuem um grave problema, que dificulta a produção de placas de vídeo mais parrudas.

O problema é que, como no caso dos processadores, quanto mais poder de processamento um chipset de vídeo possuir, mais transístores ele deverá ter. Quanto mais transístores, maior é o consumo eléctrico.

Um slot AGP 4x comum, não é capaz de suprir estavelmente mais de 20 ou 25 Watts de corrente, o que limita bastante o potencial das placas de vídeo. Para você ter uma ideia, a Voodoo 5 6000, a placa topo de linha da 3DFx actualmente, consome mais de 70 Watts. Neste caso, a solução encontrada pelos projectistas da 3DFx foi usar uma fonte externa. Sim, parece ridículo, mas é preciso ligar a placa na tomada para que ela possa funcionar.

O AGP Pro é na verdade um slot AGP 4x com 48 contactos a mais, 20 de um lado e mais 28 do outro. Estes contactos adicionais são usados para aumentar a capacidade de fornecimento eléctrico do slot.

Existem dois tipos de slots AGP Pro: o AGP Pro50 e o AGP Pro110. O nome indica a capacidade de fornecimento eléctrico de ambos os padrões: o AGP Pro50 é certificado para fornecer até 50 Watts, enquanto o AGP Pro110 pode fornecer até 110 Watts. O formato do encaixe não diz se o slot é Pro50 ou Pro110, apenas mostra quais tipos de placas são suportadas. O que muda do Pro50 para o Pro110 são os capacitadores de alimentação da placa mãe, que devem ser capazes de manter uma corrente maior, e não o formato do encaixe.

Os slots AGP Pro ainda não são muito comuns, mas devem tornar-se padrão dentro de pouco tempo, já que muitas placas de vídeo virão apenas neste formato e não poderão ser usadas em placas mãe com slots AGP comuns.

Veja nas figuras a seguir a diferença de tamanho entre um Slot AGP tradicional e um slot AGP Pro.

AGP tradicional

AGP Pro

 

 

Glossário

AGP (Accelerated Graphics Port ) - Porta de gráficos acelerados. Uma nova especificação de barramento que proporciona uma melhor capacidade gráfica, especialmente tridimensional.

Largura de banda - Quantidade de dados que podem ser transportados num período de tempo.

Barramento - Um "caminho" para a transmissão de dados em que os sinais são "largados" ou "apanhados" por qualquer dispositivo ligado a esse "caminho".

Direct Memory Execute (DIME) - Permite à placa de vídeo usar alguma da memória principal para gráficos tridimensionais. Normalmente as placas de vídeo têm 4 MB de RAM e algumas têm 8 MB, mas a DIME permite 12, 16 ou ainda mais memória.

Graphics Address Remapping Table (GART) - Chipset embutido no hardware que traduz endereços, permitindo ao controlador gráfico e ao seu software "ver" um único espaço na memória quando na realidade são vários.

Integrated Drive Electronics (IDE) - Interface electrónico usado entre as placas mãe ou barramentos e dispositivos de armazenamento de dados.

Peripheral Component Interconnect (PCI) - Sistema de interconexão entre os microprocessadores e dispositivos a ele anexados e em que os slots de expansão estão próximos uns dos outros para uma operação mais rápida.

Pipelining - Técnica de implementação onde múltiplas instruções são "empilhadas" em excução.

Sideband Addressing - Técnica que permite que informação de endereços "viaje" junto com a transferência de dados.

 

 

Referências

http://www.intel.com/

http://www.guiadohardware.net/

http://www.agpforum.org/

 

 

 

Trabalho realizado por:

Mauro Fontoura e Paulo Ferreira