Os barramentos: ISA, EISA, VLB e PCI

Junto com os processadores, memória RAM e memória cache, outra classe importante são os barramentos, já que são eles os responsáveis por interligar os diferentes componentes da placa-mãe e permitir o uso de periféricos.

Acompanhando a evolução dos processadores, os primeiros anos da plataforma PC foram marcados por uma corrida em torno de barramentos mais rápidos, capazes de atender à evolução das placas de vídeo e outros periféricos. Não é tão diferente do que temos nos dias de hoje (onde as placas 3D continuam liderando a demanda por novas tecnologias), mas na época essa era uma questão realmente urgente.

O primeiro barramento de expansão usado em micros PC foi o ISA, que por incrível que pareça, foi usado do PC original (o de 1981) até a época do Pentium III. Existiram duas versões: os slots de 8 bits, que foram utilizados pelos primeiros PCs e os slots de 16 bits, introduzidos a partir dos micros 286.

Embora fossem processadores de 16 bits, os 8088 comunicavam-se com os periféricos externos utilizando um barramento de 8 bits, daí o padrão ISA original também ser um barramento de 8 bits. Inicialmente, o barramento ISA operava a apenas 4.77 MHz, a frequência de clock do PC original, mas logo foi introduzido o PC XT, onde tanto o processador quanto o barramento ISA operavam a 8.33 MHz.

Com a introdução dos micros 286, o barramento ISA foi atualizado, tornando-se o barramento de 16 bits que conhecemos. Na época, uma das prioridades foi preservar a compatibilidade com as placas antigas, de 8 bits. Justamente por isso, os pinos adicionais foram incluídos na forma de uma extensão para os já existentes.

Como você pode ver na foto, o slot ISA é dividido em duas partes. A primeira, maior, contém os pinos usados pelas placas de 8 bits, enquanto a segunda contém a extensão, que adiciona os pinos extras:

Slots ISA

Slots ISA

Uma coisa que chama a atenção nos slots ISA é o grande número de contatos, totalizando nada menos que 98. Por serem slots de 16 bits, temos apenas 16 trilhas de dados, as demais são usadas para endereçamento, alimentação elétrica, sinal de clock, refresh e assim por diante.

Este esquema mostra a função de cada um dos pinos em um slot ISA. Como você pode ver, não é exatamente uma implementação “simples e elegante”, mas enfim, funcionava e era o que estava disponível na época:

Esquema dos pinos em slot ISA

Esquema dos pinos em slot ISA

Cada um destes pinos podia ser controlado individualmente via software e muitas placas não utilizavam todos os pinos do conector. Por isso, era comum que periféricos mais simples, como placas de som e modems viessem com alguns dos contatos “faltando”. Outra curiosidade é que, justamente por serem fáceis de programar, as controladoras ISA foram as preferidas por programadores que trabalham com automatização e robótica, durante muito tempo. Quando as placas-mãe com slots ISA começaram a desaparecer do mercado, alguns chegaram a estocá-las. 🙂

Apesar de toda a complexidade, o barramento ISA é incrivelmente lento. Além de operar a apenas 8.33 MHz, são necessários tempos de espera entre uma transferência e outra, de forma que, na prática, o barramento funciona a apenas metade da frequência nominal. Dessa forma, chegamos a uma taxa de transmissão teórica de 8.33 MB/s (no ISA de 16 bits). Como existe um grande overhead causado pelo protocolo usado, na prática acaba sendo possível obter pouco mais de 5 MB/s de taxa de transferência real.

Periféricos “rápidos”, como placas de vídeo, placas de rede e interfaces IDE migraram rapidamente para barramentos mais rápidos conforme eles foram sendo introduzidos. Mas o ISA continuou sendo suficiente para periféricos lentos, como modems, placas de som e alguns outros dispositivos. Isso acabou fazendo com que o ISA tivesse uma sobrevida assustadora. Por volta do final de 2003 ainda era possível encontrar placas-mãe novas, destinadas a processadores Pentium III e K6-2, que ainda ostentavam um ou dois slots ISA e algumas delas continuam em uso até os dias de hoje.

Com relação à parte prática, uma das principais características das placas ISA era a presença de jumpers, que permitiam definir os endereços de IRQ, DMA e I/O usados pela placa. Em um PC com vários periféricos, os valores precisavam ser ajustados com cuidado, já que duas placas configuradas para utilizar o mesmo endereço entravam em conflito, fazendo com que ambas não funcionassem corretamente:

Inserindo jumper

Inserindo jumper

Mais tarde, surgiu o padrão ISA plug-and-play, onde a configuração de endereços é feita pelo BIOS durante o boot. Ele verifica quais endereços estão ocupados por outros dispositivos e tenta atribuir os endereços livres aos novos periféricos instalados, evitando conflitos.

Com a introdução das placas ISA plug-and-play, as placas antigas, configuradas via jumper passaram a ser chamadas de placas “legacy ISA”. É relativamente incomum encontrar alguma em uso hoje em dia, mesmo ao trabalhar com micros antigos. Os mais comuns são modems discados, já que os antigos modems ISA trabalham via hardware e por isso oferecem vantagens sobre os softmodems atuais. Como costumo dizer, os modems discados são a única classe de periféricos que regrediu da época do 486 para cá.

Com o surgimento dos processadores 386, que trabalhavam usando palavras binárias de 32 bits, tornou-se necessária a criação de um barramento mais rápido que o ISA para o uso de periféricos como placas de vídeo e HDs, que logo passaram a ter seu desempenho severamente limitado por ele.

A primeira resposta veio por parte da IBM, que desenvolveu o barramento MCA. Ele era bastante avançado para a época: além de ser um barramento de 32 bits, ele operava a 10 MHz, o que resultava em uma taxa de transferência teórica de 32 MB/s (existiu também uma versão de 16 bits do MCA, mas ela foi pouco usada). Ele também foi o primeiro barramento a suportar plug-and-play (oito anos antes do lançamento do Windows 95) e a suportar bus mastering, o que permitia que o HD e outros periféricos transferissem dados diretamente para a memória RAM (ao carregar um programa, por exemplo), reduzindo a carga sobre o processador. Isso tornava o sistema bem mais responsível em relação às máquinas equipadas com placas ISA.

O sistema de plug-and-play do MCA funcionava com o uso de dois disquetes. O “reference disk” continha um programa de configuração, que alterava a distribuição dos endereços e outras configurações do BIOS e era fornecido junto com o micro. Ao comprar qualquer periférico MCA, você recebia um “option disk”, que era carregado com a ajuda do primeiro disquete, configurando a placa. Uma vez feita, a configuração se tornava permanente e você não precisava mais se preocupar. Embora rudimentar, este sistema já seguia a mesma lógica da instalação de drivers que temos nos dias de hoje.

O grande problema é que o MCA era um padrão proprietário, de forma que tanto outros fabricantes de PCs quanto fabricantes de periféricos precisariam licenciar a tecnologia e pagar royalties para produzir produtos compatíveis.

A IBM tentou usar o barramento como uma arma estratégica para recuperar o terreno perdido para outros fabricantes, usando-o na linha PS/2, que além do MCA incorporava várias outras inovações importantes (eles foram os primeiros a usarem disquetes de 1.44 MB, módulos de memória de 72 vias e assim por diante) e usava o OS/2 da IBM como sistema operacional.

Como era de se esperar, os demais fabricantes não gostaram da ideia e a IBM acabou isolada, tendo que arcar sozinha com o desenvolvimento e a produção das placas de expansão. Embora possuíssem diversas vantagens, o fato dos IBM PS/2 possuírem apenas slots MCA acabou se tornando mais um problema do que uma vantagem, já que isso os tornava incompatíveis com as placas ISA, que eram mais baratas e populares. No final, o MCA acabou sendo abandonado, compartilhando do fracasso da linha PS/2.

Inicialmente, os demais fabricantes continuaram produzindo micros 386 e 486 utilizando apenas periféricos ISA, o que resultava em limitações óbvias, sobretudo com relação ao desempenho do HD e vídeo, o que os tornava praticamente inutilizáveis para edição de imagens e vídeo, por exemplo, áreas onde os Macs dominavam. Por utilizarem o mesmo barramento dos micros 286 (também chamados de PC-AT), eles eram chamados de “AT 386” ou “AT 486”. Como pode imaginar, o “AT” nesse caso indica uma limitação e não um recurso extra.

Não demorou para que a Compaq desenvolvesse o EISA e abrisse as especificações para os demais fabricantes, criando uma entidade sem fins lucrativos para impulsionar seu desenvolvimento.

O EISA é um barramento peculiar. As dimensões são as mesmas de um slot ISA de 16 bits, porém o slot é mais alto e possui duas linhas de contatos. A linha superior mantém a mesma pinagem de um slot ISA de 16 bits, de forma a manter a compatibilidade com todos os periféricos, enquanto a linha inferior inclui 90 novos contatos, utilizados pelas placas de 32 bits.

As placas ISA atingiam apenas os contatos superficiais do conector, enquanto as placas EISA utilizavam todos os contatos. Embora o uso de tantos contatos esteja longe de ser uma solução elegante, é preciso admitir que o EISA foi uma solução engenhosa para o problema da compatibilidade. Aqui temos os contatos de uma placa de vídeo EISA, que mostra a organização na prática:

Placa de vídeo EISA

Placa de vídeo EISA

Os slots EISA eram tipicamente marrons, por isso lembram um pouco um slot AGP, embora bem maiores:

Slot EISA

Slot EISA

Assim como o ISA, o barramento EISA operava a 8.33 MHz. Entretanto, a transferência de 32 bits por ciclo e a eliminação dos tempos de espera entre um ciclo e outro faziam com que ele fosse até 4 vezes mais rápido.

Apesar disso, o EISA acabou tendo uma vida curta, pois em 1993 surgiu o VLB (VESA Local Bus), outro padrão aberto de barramento de 32 bits, que conseguia ser muito mais rápido, trabalhando a uma frequência nominal de 33 MHz e oferecendo taxas de transferência teóricas de até 133 MB/s.

Inicialmente o VLB (ou VESA, como é chamado por muitos) surgiu como barramento próprio para a conexão da placa de vídeo. Nesta época, o Windows 3.11 e os aplicativos gráficos já eram populares, de forma que existia uma grande demanda por placas de vídeo mais rápidas.

O “rápido” que menciono aqui é a simples capacidade de atualizar a tela em tempo real enquanto edita uma imagem no Photoshop, não tem nada a ver com aceleração 3D ou exibição de vídeo em alta resolução, como temos hoje em dia. Além de serem muito lentas, as placas de vídeo ISA eram limitadas à exibição de apenas 256 cores, o que fez com que elas fossem rapidamente substituídas pelas VLB.

Graças à boa velocidade, o VLB acabou tornando-se o padrão também para outros periféricos, como controladoras IDE e SCSI. Novamente, existiu a preocupação de manter compatibilidade com as placas ISA, de forma que os slots VLB são na verdade uma expansão, onde temos um slot ISA tradicional, seguido por um segundo conector, que inclui os pinos adicionais:

Slots VLB

Slots VLB

Isso rendeu o apelido de “Very Long Bus” (barramento muito comprido) e trouxe uma série de problemas de mal contato, já que se a placa-mãe não estivesse muito bem presa ao gabinete, a pressão necessária para encaixar as placas fazia com que a placa envergasse, comprometendo o encaixe. O grande stress mecânico ao instalar e remover as placas acabava danificando os contatos com o tempo, o que, combinado com a oxidação natural, acabava fazendo com que muitas placas realmente deixassem de funcionar depois de removidas e reinstaladas algumas vezes.

Como o nome sugere, o VLB é um barramento local, onde os contatos são ligados diretamente aos pinos do processador. Esse design simples barateava a produção das placas-mãe, mas fazia com que a utilização do processador fosse alta e tornava inviável a utilização de mais de 3 placas VLB no mesmo micro.

O VLB se tornou rapidamente o padrão de barramento para placas para micros 486, mas acabou desaparecendo com a introdução do barramento PCI. Uma curiosidade é que as placas soquete 4 (a primeira geração de placas-mãe para micros Pentium 1, que suportavam apenas as versões de 60 e 66 MHz) chegaram a incluir slots VLB, utilizando uma versão adaptada do barramento.

Chegamos então ao PCI, que embora tenha sido introduzido em 1992, continua em uso até os dias de hoje, resistindo aos avanços do PCI Express.

O PCI opera nativamente a 33 MHz, o que resulta em uma taxa de transmissão teórica de 133 MB/s. Entretanto, assim como em outros barramentos, a frequência do PCI está vinculada à frequência de operação da placa-mãe, de forma que, ao fazer overclock (ou underclock) a frequência do PCI acaba também sendo alterada.

Em uma placa-mãe soquete 7 antiga, que opera a 66 MHz, o PCI opera à metade da frequência da placa-mãe. Ao fazer overclock para 75 ou 83 MHz, o PCI e todas as placas conectadas a ele passam a operar a respectivamente 37.5 MHz e 41.5 MHz. Isto acabava resultando em um ganho adicional de desempenho, já que, além do aumento de clock do processador, temos ganhos de desempenho também em outros componentes.

Conforme a frequência das placas foi subindo, passaram a ser utilizados divisores cada vez maiores para manter o PCI operando à sua frequência original. Em uma placa-mãe operando a 133 MHz, a frequência é dividida por 4 e em uma de 200 MHz, é dividida por 6.

Como você pode notar, o barramento PCI tem se tornado cada vez mais lento com relação ao processador e outros componentes, de forma que, com o passar do tempo, os periféricos mais rápidos migraram para outros barramentos, como o AGP e o PCI-Express. Ou seja, a história se repete, com o PCI lentamente se tornando obsoleto, assim como aconteceu com o ISA há mais de uma década atrás.

Slots PCI (no centro) e PCI Express

Slots PCI (no centro) e PCI Express

De volta à história, uma das principais vantagens do PCI sobre os barramentos anteriores foi o suporte a bus mastering. Tanto o EISA quanto o VLB ofereciam um sistema de bus mastering rudimentar, mas o recurso acabou não sendo muito utilizado por um conjunto de fatores, incluindo as dificuldades no desenvolvimento dos drivers. Apenas com o PCI foi criado um padrão realmente confiável, que foi adotado em massa pelos fabricantes.

O bus mastering é um sistema avançado de acesso direto à memória, que permite que HDs, placas de vídeo e outros periféricos leiam e gravem dados diretamente na memória RAM, mantendo o processador livre para executar outras tarefas durante a transferência.

Um dos melhores exemplos é quando o sistema está ocupado inicializando vários programas simultaneamente. O HD precisa transferir vários de arquivos e bibliotecas para a memória, a placa de vídeo precisa exibir as telas de progresso e atualizar a tela, enquanto o processador fica ocupado processando as configurações e outras informações necessárias ao carregamento dos programas. Graças ao bus mastering, um micro atual ainda continua respondendo aos movimentos do mouse e às teclas digitadas no teclado, os downloads e transferências de arquivos através da rede não são interrompidos e assim por diante; muito diferente do que tínhamos na época do 486, quando os micros antigos literalmente “paravam” durante transferências de arquivos e carregamento dos programas.

Complementando, temos a questão do plug-and-play. Atualmente, estamos acostumados a instalar o dispositivo, instalar os drivers e ver tudo funcionar, mas antigamente as coisas não eram assim tão simples, de forma que o plug-and-play foi tema de grande destaque.

Tudo começa durante a inicialização do micro. O BIOS envia um sinal de requisição para todos os periféricos instalados no micro. Um periférico PnP é capaz de responder ao chamado, permitindo ao BIOS reconhecer os periféricos instalados. O passo seguinte é criar uma tabela com todas as interrupções disponíveis e atribuir cada uma a um dispositivo. O sistema operacional entra em cena logo em seguida, lendo as informações disponibilizadas pelo BIOS e inicializando os periféricos de acordo.

As informações sobre a configuração atual da distribuição dos recursos entre os periféricos são gravadas em uma área do CMOS chamada de ESCD. Tanto o BIOS (durante o POST) quanto o sistema operacional (durante a inicialização) leem essa lista e, caso não haja nenhuma mudança no hardware instalado, mantêm suas configurações. Isso permite que o sistema operacional possa alterar as configurações caso necessário. Embora hoje isso não seja muito usado, é possível alterar as configurações dos endereços no Windows, através do gerenciador de dispositivos, encontrado no Painel de Controle > Sistema.

Na maioria das placas-mãe, você encontra a opção “Reset ESCD” ou “Reset Configuration Data” que, quando ativada, força o BIOS a atualizar os dados da tabela, descartando as informações anteriores. Em muitos casos, isso soluciona problemas relacionados à detecção de periféricos, como, por exemplo, ao substituir a placa de som e perceber que a nova não foi detectada pelo sistema.

Nos micros atuais, os conflitos de endereços são uma ocorrência rara. Na maioria dos casos, problemas de detecção de periféricos, sobretudo no Linux, estão mais relacionados a problemas no ACPI, à falta de drivers ou à falta de suporte por parte dos drivers existentes.

O ACPI é o responsável não apenas pelo suporte a economia de energia (incluindo o ajuste dinâmico da frequência do processador), mas também pela inicialização de vários periféricos. É comum, por exemplo, que a placa wireless não seja detectada, ou que você não consiga ativar o transmissor usando os botões até que instale o driver ou utilitário fornecido pelo fabricante. No Acer 5043 (e outros modelos similares), por exemplo, você só consegue ativar o transmissor da placa wireless depois de instalar o Acer Launch Manager.

Em placas antigas, que ainda possuem slots ISA, existe um complicador adicional, já que placas legacy ISA (as configuradas via jumper) não são detectadas pelo BIOS e por isso não entram na tabela de endereços, o que pode fazer com que os endereços usados por elas sejam atribuídos a outras placas, causando conflitos, como nos velhos tempos.

Para evitar esse problema, é preciso reservar manualmente os endereços de IRQ e DMA ocupados por periféricos ISA de legado através da sessão “PNP/PCI Setup”. Se, por exemplo, você tiver uma placa de som não PnP, que esteja configurada para utilizar o IRQ 5 e os canais de DMA 1 e 5, você deverá reservar os três canais, para que o BIOS não os atribua a nenhum outro periférico.

Os sistemas operacionais atuais incluem rotinas de identificação indireta para esses periféricos antigos, o que diminui muito os conflitos gerados por ele. No caso do Windows por exemplo, as verificações fazem parte dos testes executados pelo “Adicionar novo Hardware”.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X