Sítio do Piropo

B. Piropo

< Trilha Zero >
Volte de onde veio
17/11/2003

< PCI >


Como vimos na última coluna, na medida que as CPUs foram se tornando mais rápidas, mais óbvia se tornava a lentidão do barramento que as comunicava com os periféricos. É verdade que muitos destes eram ainda mais lentos, portanto, na maior parte dos casos, não havia problema. Mas dois gargalos eram evidentes: o vídeo, que com as altas resoluções e o grande número de cores exigidos pelas interfaces gráficas que começavam a surgir no início dos anos noventa solicitava um fluxo de dados muito acima do suportado pelo velho barramento ISA, e as controladoras de rede de alto desempenho que então estavam se disseminando. Algo teria que ser feito para acelerar o fluxo de dados no barramento de E/S. E para isso ou se aumenta sua “largura” (número de condutores elétricos paralelos, que corresponde ao número de bits transportados simultaneamente), sua freqüência de operação, ou ambos. Como os registradores (posições de memória internas que, entre outras coisas, recebem os dados que entram na CPU) usados pelas CPUs de então eram de 32 bits, era natural que a largura do barramento fosse aumentada para 32 linhas.
Tentativas não faltaram. A IBM lançou seu barramento MCA (na verdade toda uma nova arquitetura, denominada Micro Channel Architecture adotada na linha PS/2) mas fez a tolice de patenteá-lo. A idéia não foi bem aceita pelo restante da indústria e isso acabou por fazer a IBM perder a liderança tecnológica na liça dos computadores pessoais. Os demais fabricantes fizeram uma tentativa canhestra de aproveitar o formato dos conectores ISA e desenvolveram o barramento EISA (Enhanced ISA), mas o resultado foi pífio. O mais próximo que se chegou de um barramento rápido e funcional foi fruto da iniciativa da associação dos fabricantes de equipamentos de vídeo (Vídeo Electronics Standard Association, ou VESA), que criou uma extensão do barramento ISA com 16 linhas adicionais operando na mesma freqüência do barramento frontal da CPU (e por isso era conhecido por “barrramento local”, ou VESA Local Bus). Em um 486 rodando a 25 MHz isso correspondia a um fluxo de 100 MB/s (quem não lembra como calcular fluxo de dados, consulte a coluna passada, ainda disponível na seção “Escritos” de meu sítio em <www.bpiropo.com.br>), muitas vezes mais rápido que o do barramento ISA e bastante razoável para a época. O problema é que o barramento local, como o próprio nome indica, estava “amarrado” à CPU. Caso se “pendurassem” muitos periféricos nele, a CPU acabava por sofrer uma sobrecarga inaceitável (por isso as placas mãe vinham com no máximo dois “slots” VESA, o resto era ISA). E, pior: cada nova CPU exigiria adaptações no barramento.
No início da década de noventa a Intel se preparava para lançar o Pentium e, portanto, tinha o maior interesse em um barramento de E/S padrão que atendesse a qualquer CPU (ou pelo menos às que fossem desenvolvidas daí em diante). E como ninguém se mexia, resolveu ela mesma meter a mão na massa e desenvolver um barramento rápido que servisse não só ao novo Pentium quanto aos futuros modelos. Assim nasceu o PCI.
PCI significa “Peripheral Component Interconnect”, ou interconexão de componentes periféricos. Foi desenvolvido pela Intel e oferecido gratuitamente a quem o quisesse adotar em 1993. Não era um barramento local, ou seja, era independente da CPU. Sua primeira implementação vinha com 32 linhas (mas podia ser estendida até 64) e operava a 33 MHz, o que corresponde a um fluxo de dados de 133 MB/s.
Tecnicamente o PCI não é um barramento, mas uma “ponte” ou “mezanino”: não se conecta diretamente à CPU, mas deriva do FSB (que liga CPU à memória), cuja freqüência é sempre um múltiplo da do PCI. O PCI pode receber até cinco “slots” e foi o primeiro barramento a adotar o “Plug and Play”, que permite simplesmente encaixar a placa controladora no “slot” e deixar que o sistema operacional e o hardware se entendam para atribuir os recursos necessários (endereços de E/S, interrupções e coisas que tais). Além disso o PCI admite o recurso de “bus mastering”, no qual um periférico de alto desempenho pode solicitar e, se autorizado, assumir o controle do barramento, comandando a transferência de dados sem necessidade da interferência da CPU, o que melhora consideravelmente o desempenho do sistema.
O PCI representou um progresso tão grande que se firmou como barramento dominante por uma década. Aceitou todo tipo de periférico, de controladores de discos até placas de som e vídeo. Mas dispositivos mais exigentes começaram a aparecer. Além das placas de vídeo de altíssimo desempenho, as placas de rede tipo Gigabit Ethernet e conjuntos de discos rígidos ligados em RAID fizeram com que os 133 MB/s do PCI parecessem pouco. Na próxima coluna, veremos como resolver isso.

B. Piropo