Sítio do Piropo

B. Piropo

< Trilha Zero >
Volte de onde veio
01/12/2003

< AGP >


Na última coluna mencionei que um dos grandes “consumidores” de fluxo de dados é o vídeo. Hoje veremos por que. Nos computadores modernos, a tela é “desenhada” ponto a ponto, cada ponto podendo assumir uma cor de uma “paleta” com um determinado número de cores. Tomemos o exemplo mais simples: o chamado “padrão VGA”, lançado há mais de uma década. Nele, a tela é composta por 480 linhas horizontais de 640 pontos cada. Portanto, uma tela contém 480 x 640 = 307.200 pontos. Cada um desses pontos pode assumir uma das 256 cores da paleta.
Para exibir a tela no vídeo, ela é antes “composta” e armazenada em um trecho de memória especial, denominada “memória de vídeo”. “Compor” a tela significa definir a cor e a ordem de cada um de seus pontos. A ordem, é fácil: começa-se pelo canto superior esquerdo, anda-se para a direita como quem está lendo um texto e após os primeiros 640 pontos da primeira linha, entram os 640 da segunda e assim por diante. Não é necessário separar as linhas: o controlador de vídeo se encarrega de “arrumar os pontos” na tela linha à linha. O número de pontos da tela determina a “resolução” do vídeo.
Resta o problema das cores. O que também não é difícil: no caso do VGA, divide-se o arco-íris em 254 pedaços, faz-se cada um corresponder a uma cor e acrescenta-se o branco e o preto. Como eu posso exprimir valores de zero a 255 (correspondentes às 256 cores) em um número binário de oito dígitos (ou seja, em um byte, de oito bits), vou precisar de um byte para armazenar cada ponto desta tela na memória de vídeo. Portanto, vou gastar exatamente 307.200 bytes para “compor” uma tela de 640 x 480 pontos e 256 cores e armazená-la na memória de vídeo.
Agora, é preciso enviar esses dados para o monitor. Eles têm que ser enviados no mínimo sessenta vezes por segundo, pois se o micro estiver exibindo uma animação e a renovação da tela for feita em um ritmo menor que esta, a animação se fará aos “saltos”. Então o fluxo de dados deve ser igual a 60 (vezes por segundo) x 307.200 (bytes que compõem uma tela). Multiplique, e encontrará um fluxo de 18,432 MB/s.
Pelo que vimos, para calcular o fluxo de dados necessário para alimentar o vídeo basta multiplicar o número de linhas pelo de pontos por linha (para determinar o número de pontos da tela), multiplicar esse resultado pelo número de bytes necessários para armazenar todas as cores da paleta (além da de 256 cores, há paletas de 65.535 cores, que usam dois bytes por ponto, e de 16 milhões de cores, que usam três bytes por ponto – ou quatro, em certas configurações). E finalmente, multiplicar esse produto pela taxa de renovação da tela, que pode ser superior a 70 Hz (setenta telas por segundo). Para dar um exemplo muito usado em monitores de 15”: telas com resolução de 1024 x 768 pontos e paleta de 16 milhões de cores (em uma configuração que usa três bytes por ponto) renovada 60 vezes por segundo exigem um fluxo de dados no barramento (onde se encaixa a controladora de vídeo) de 141,5 MB/s, mais do que pode suportar o PCI original (cujo fluxo máximo é de 133 MB/s). E se usarmos uma resolução mais elevada (popular nos monitores de 21”) como 1280 x 1024 pontos com paleta de 16 milhões de cores (em uma configuração que usa quatro bytes por ponto) e taxa de renovação de 75 Hz, chegamos a um fluxo de 393 MB/s, muito mais do que o barramento PCI original pode suportar. É por isso que o vídeo é sempre o vilão dos barramentos.
Para atender a essa demanda, a Intel desenvolveu uma evolução do barramento PCI especialmente para vídeos. Denominou-a AGP (de Advanced Graphics Port). Tecnicamente, a AGP não é um barramento, já que somente atende a um periférico, o vídeo. Sua implementação inicial usava as mesmas 32 linhas (4 bytes) do barramento PCI, porém operando no dobro da freqüência (66 MHz). Isso dobrava o fluxo para 266 MB/s, suficiente para a maioria das resoluções usadas em monitores pequenos. Evoluções posteriores (aumentando o número de linhas para 64 e a freqüência para 133 MHz) chegam a atingir um fluxo de 1,07 GB/s (Gigabytes por segundo), suficiente não apenas para atender as exigências das maiores resoluções e paletas em monitores gigantes mas também para atender a demanda de gráficos tridimensionais texturizados permitidos pelo padrão AGP.
Isso resolveu o problema do vídeo. Mas os demais periféricos que exigem alto fluxo de dados continuam esbarrando no gargalo do PCI. É preciso encontrar um sucessor.

B. Piropo