Aceleradoras de vídeo: 2D

Gastando memória e engarrafando o barramento
Tínhamos aí dois problemas.
O primeiro era a carga de trabalho sobre a UCP, ou microprocessador. Que, além de todas as demais tarefas exigidas pelos programas, ainda tinha que empregar grande parte de sua capacidade de processamento “desenhando” telas.
O segundo era a possibilidade de transportar tantos bytes em um intervalo de tempo tão curto entre UCP e controladora de vídeo usando o lento barramento de Entrada/Saída de então (barramento é o nome que se dá aos condutores elétricos e seus circuitos de controle que comunicam os elementos internos da placa-mãe; os que ligam a UCP à controladora de vídeo, que fica “espetada” em um dos “slots”, constituem o barramento de E/S).
E isto para o padrão VGA de 64K cores. Porque logo depois apareceram padrões de vídeo com maior resolução (número de pixels) e número de cores. Só para que se tenha uma ideia, logo depois de aparecerem as interfaces gráficas o padrão XVGA (eXtended VGA) começou a se popularizar com suas 768 linhas de 1024 pixels cada, capaz de exibir o inacreditável número de 16 milhões de cores (ou seja: eram precisos 4 bytes para armazenar um único pixel). O resultado disto é que apenas uma tela ocupava mais de 3 MB de memória (faça as contas) e, só para renovar as telas, o tráfego sobre o barramento de E/S era da ordem de 180 MB/s.
Não dava.
Alguma coisa precisava ser feita.
Para suportar o aumento do tráfego de dados sobre o barramento a solução foi criar novos padrões de barramento. A primeira tentativa foi o VESA, depois veio o PCI seguido do AGP até, finalmente, chegarmos ao PCI-E (PCI eXpress) usado atualmente pelas controladoras gráficas de alto desempenho, que na versão atual (PCI-E 2.1) é capaz de suportar a extraordinária taxa de transferência de 16 GB/s (Gigabytes por segundo).
E para dar conta do armazenamento das telas, com todos os seus pontos e cores exigidos pelos novos padrões de vídeo (o padrão WQXGA, ou Wide Quad eXtended Graphics Array exibe uma tela de 1600 linhas de 2650 pixels, cada uma ocupando 4,1 MB; e não é o de maior resolução possível: veja a relação no tópico “Graphic display resolutions” da Wikipedia) foi preciso aumentar a capacidade de memória das controladoras de vídeo, que passou dos 16 KB (para quem estranhou, confirmando por extenso: dezesseis quilobytes) das primeiras controladoras CGA para a espantosa casa dos GB (GigaBytes !!!) de memória instalada nas placas modernas.
Talvez um dia falemos sobre uma coisa ou outra. Mas hoje, o que nos interessa é descobrir como os fabricantes resolveram o terceiro aspecto do problema: reduzir a imensa carga de processamento sobre a UCP representada pela necessidade de “desenhar” as telas gráficas das novas interfaces.
Pois foi da maneira mais simples e direta possível: se a UCP não dá conta do trabalho, então vamos arranjar quem a ajude, ou seja, faça o “trabalho braçal” de desenhar as telas em seu lugar, liberando-a para tarefas mais nobres.
E foi assim que surgiram as primeiras “placas aceleradoras”.
