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.