Barramentos da placa de CPU - parte 2/2

Autor: Laércio Vasconcelos
Setembro/2003
  

   

Parte 1

Copyright (C)
Laércio Vasconcelos Computação

Nenhuma parte deste site pode ser reproduzida sem o consentimento do autor. Apenas usuários individuais estão autorizados a fazer download ou listar as páginas e figuras para estudo e uso próprio e individual, sem fins comerciais.

Barramento PCI

A figura 9 mostra os conectores usados no barramento PCI (Peripheral Component Interconnect). Nas placas de CPU modernas podemos encontrar 3, 4, 5 ou 6 slots PCI. Em algumas placas mais simples, tipicamente aquelas que têm “tudo onboard”, podemos encontrar apenas um ou dois slots PCI.

Figura 12.24

Slots PCI.

 

Nos slots PCI, conectamos placas de expansão PCI. Alguns exemplos típicos de placas de expansão PCI são:

Figura 12.25

Placas de expansão PCI: uma placa de video e uma controladora SCSI.

 

É importante notar que Barramento PCI não é sinônimo de Slot PCI. O Barra­mento PCI é um conjunto de sinais digitais que partem do chipset e do pro­cessador, e atingem tanto as placas de expansão, através dos slots, como circuitos da placa de CPU. Por exemplo, as interfaces para disco rígido e as interfaces USB embutidas na placa de CPU são controladas através do barramento PCI, apesar de não utilizar os slots.

Tipos de PCI

Na maioria das placas de CPU, o barramento PCI opera com 32 bits e utiliza um clock de 33 MHz. Podemos entretanto encontrar algumas variações. Em placas de CPU antigas podemos encontrar o barramento PCI operando com 25 ou 30 MHz. Em placas que operam com overclock externo, o clock do barramento PCI pode estar indevidamente programado para 37,5 MHz ou 41,6 MHz, resultando em mau funcionamento. Existem ainda as placas de CPU de alto desempenho, próprias para servidores, nos quais temos barramentos PCI de 64 bits e 66 MHz. A taxa de transferência máxima teórica do barramento PCI depende portanto das suas características. A tabela abaixo mostra as principais opções:

Clock

Número de bits

Taxa de transferência

33 MHz

32

133 MB/s

33 MHz

64

266 MB/s

66 MHz

32

266 MB/s

66 MHz

64

533 MB/s

Logo na primeira versão do PCI, apesar de operar com 32 bits, estava previsto o funcionamento com 64 bits. O slot PCI de 64 bits é diferente do 32 bits. Possui duas seções, sendo uma análoga ao de 32 bits e outra menor, com os sinais necessários ao funcionamento em 64 bits.

Figura 12.26

Slots PCI de 32 e de 64 bits.

 

 

 

Mais recentemente o barramento PCI sofreu uma revisão e agora suporta também a operação em 66 MHz, tanto em 32 como em 64 bits. Este aumento foi motivado principalmente pelas novas interfaces SCSI, capazes de operar com taxas de 320 MB/s. O barramento PCI de 66 MHz e 64 bits, com sua taxa de transferência máxima de 533 MB/s, suporta perfeitamente este tipo de interface. Obviamente só encontramos esta configuração em servidores e estações de trabalho de alto desempenho.

Além das opções usuais de 32 e 64 bits, 33 e 66 MHz, podemos encontrar em algumas placas de CPU antigas (e mesmo em algumas mais novas), alguns clocks incomuns em uso no barramento PCI. A tabela abaixo mostra algumas dessas opções e as respectivas taxas de transferência. Note que valores acima de 33 MHz são considerados overclock. Mesmo que a placa de CPU possa gerar esses valores, nem sempre as placas de expansão PCI irão suportá-los.

Clock

Número de bits

Taxa de transferência

25 MHz

32

100 MB/s

30 MHz

32

120 MB/s

33 MHz

32

133 MB/s

37,5 MHz

32

150 MB/s

41,6 MHz

32

166 MB/s

36,6 MHz

32

146,4 MB/s

38,3 MHz

32

153,2 MB/s

Nas placas de CPU Pentium antigas, o clock do barramento PCI era sempre igual à metade do clock externo do processador. Com clock externo de 66 MHz, o resultado era o barramento PCI operando a 33 MHz. No processador Pentium-75, por exemplo, o clock externo é de 50 MHz, portanto o barramento PCI passa a operar com apenas 25 MHz, já que tais placas são programadas para usar no barramento PCI, a metade do clock do processador. Da mesma forma no Pentium-90, Pentium-120 e Pentium-150, o clock externo é 60 MHz, portanto o barramento PCI opera com 30 MHz. Quando é feito overclock externo nessas antigas placas, obrigando o processador a operar com 75 ou 83 MHz externos, o barramento PCI opera com a metade desses valores, o que corresponde a 37,5 MHz e 41,6 MHz. Na maioria das placas de CPU com clock externo de 100 MHz, o barramento PCI opera com 1/3 do clock externo do processador, resultando em 33 MHz, mas pode resultar em valores maiores quando é usado overclock. Muitas placas de CPU mais recentes têm geradores de clock independentes para o processador e para o barramento PCI. Desta forma o barramento PCI pode ser mantido em 33 MHz, mesmo que o processador esteja usando overclock externo.

Voltagens do PCI

Na sua especificação original, o barramento PCI podia operar a partir de uma alimentação de +5 volts ou de +3,3 volts. Para impedir a conexão de placas incompatíveis, os slots PCI utilizam um chanfro que deve concidir com outro chanfro localizado na placa de expansão. Nos slots de 3,3 volts, este chanfro fica mais próximo da parte traseira da placa de CPU. Nos slots de 5 volts o chanfro fica no lado oposto. A figura 27 mostra os tipos de slots PCI em função da sua voltagem.

Figura 12.27

Slots de 5 volts e de 3,3 volts.

 

 

 

Os slots e placas de 5 volts são os mais usados. Praticamente não encontramos versões de 3,3 volts. Podemos entretanto encontrar algumas placas de expansão PCI que são universais, podendo funcionar tanto em slots de 5 como de 3,3 volts. Essas placas possuem dois chanfros no seu conector, como mostra a figura 28.

Figura 12.28

Placa PCI universal de 5 e 3,3 volts.

 

 

 

Master e Target

As transferências realizadas no barramento PCI são sempre feitas entre dois dispositivos. Um deles é o Bus Master ou Initiator, o outro é o Target (alvo). O Bus Master é aquele que toma a iniciativa de solicitar a transferência do Target. O Bus Master é o responsável pela geração de todos os sinais de endereços, controles e dados (no caso de escrita). Quando o computador é ligado, o processador da placa mãe é o Bus Master. Ele é o responsável por comandar a inicialização do hardware, incluindo o chipset e as placas de expansão. Outros dispositivos também podem atuar como Bus Masters, como interfaces IDE e interfaces SCSI.

Para que um dispositivo opere como Bus Master, precisa inicialmente pedir permissão ao Bus Arbitrer, que faz parte do chipset. Do Bus Arbitrer partem várias linhas REQ (request) e GNT (Grant). Cada par REQ/GNT é ligado a um dispositivo PCI diferente. No caso dos slots, cada um deles tem um sinal REQ próprio, através do qual envia ao chipset o pedido de requisição para que tome o controle do barramento. Ao receber esta requisição, o Bus Arbitrer verifica se é possível dar a permissão e envia para o dispositivo que a requereu, o sinal GNT apropriado. Cada dispositivo e cada slot possui seu próprio sinal GNT. A maioria dos chipsets atuais possuem 4, 5 ou 6 pares REQ/GNT, através dos quais podem ser conectados 4, 5 ou 6 dispositivos PCI capazes de atuar como Bus Masters. Existem entretanto algumas placas nas quais apenas alguns slots PCI são Bus Masters, enquanto outros slots atuam apenas como Target. Ao passar por problemas de funcionamento de placas PCI, experimente a troca do slot. Consulte o manual da placa de CPU para verificar se todos os slots podem operar como Bus Masters. Placas de som, placas de rede, controladoras SCSI e digitalizadores de vídeo, bem como interfaces rápidas em geral, operam em modo Bus Master. Placas de vídeo PCI e modems operam como Target, portanto podem ser remanejadas para slots que não suportam Bus Mastering.

Sinais do barramento PCI

A seguir apresentamos alguns dos sinais de maior importância no barramento PCI, juntamente com sua descrição.

Sinal

Descrição

AD0-AD31

Barramento de dados e endereços multiplexados. No início de uma transferência, este barramento indica o endereço, e na fase seguinte, os dados. Como muitas transferências são feitas em modo burst, não existe queda de desempenho perceptível pelo fato de ser usado um único barramento para dupla função.

C/BE0-C/BE3

Durante a fase de endereço, esses 4 sinais indicam o comando a ser realizado (leitura, escrita, etc.). Na fase de dados, esses 4 bits indicam quais bytes dos 32 bits do barramento de dados devem ser levados em conta. Isso permite, por exemplo, acessar bytes individuais, apesar do barramento de dados ter 32 bits.

FRAME

O Bus Master ativa este sinal para dar início a um ciclo de transferência.

IRDY

Initiator Ready. Indica que o Master está pronto para ler ou enviar dados. Quando este sinal não é ativado, o Target irá esperar tantos wait states quanto forem necessários.

TRDY

Target Ready. Indica que o Target está pronto para receber dados (escrita) ou que o dado lido já está disponível (leitura). Quando este sinal não é ativado, o Master irá gerar tantos wait states quando forem necessários.

DEVSEL

Ativado pelo Target quando reconhece o seu endereço. Desta forma o Master pode saber se o dispositivo Target está ativo ou presente no barramento.

REQ

Requisição enviada ao Bus Arbitrer, para que o dispositivo se torne Bus Master. Cada dispositivo tem seu próprio sinal REQ.

GNT

Grant. Através deste sinal o Bus Arbitrer indica ao dispositivo solicitante que o barramento está liberado, permitindo assim que se torne Bus Master. Cada dispositivo tem seu próprio sinal GNT.

INTA, INTB, INTC, INTD

São linhas de interrupção a serem usadas pelos dispositivos PCI. Cada dispositivo e cada slot é ligado a um desses sinais, que podem ser compartilhados, ou seja, uma mesma linha INT pode ser usada por mais de um slot. O padrão PCI prevê o compartilhamento de interrupções.

AD32-AD63

Continuação do barramento de dados e endereços nos slots PCI de 64 bits.

C/BE4-C/BE7

Continuação do barramento de comando e habilitação de bytes nos slots PCI de 64 bits.

REQ64

Resuisição de transferência de 64 bits.

ACK64

Indica que o Target está apto a realizar transferência de 64 bits.

Transferências

Vários tipos de transferência podem ser feitas no barramento PCI. Essas transferências podem envolver um ou múltiplos dados. São chamadas de transactions (transações), mas aqui chamaremos apenas de transferências. A figura 29 mostra o diagrama de tempo de uma operação de leitura, na qual são lidos 3 dados consecutivos.

Figura 12.29

Operação de leitura no barramento PCI.

 

 

 

Note que as operações são sincronizadas pelo clock. Durante o período em que o barramento AD traz endereços, temos a fase de endereços (address phase). Uma vez determinado o endereço, são feitas as transferências de dados, entrando então na fase de dados (data phase). Wait states podem ser gerados por solicitação do Target ou do próprio Master, através dos controles IRDY e TRDY. Os eventos que ocorrem nesta transferência são os seguintes:

a) O Bus Master inicia a transferência ativando o sinal FRAME, que permanece ativo até que o Target termine sua última fase de dados. O Master também fornece o endereço (AD0-AD31) e o comando (C/BE0-C/BE3).

b) O Target reconhece seu endereço e prepara-se para fornecer os dados.

c) O Master para de indicar o comando nas linhas C/BE e passa a indicar os controles habilitadores dos bytes desejados.

d) O Target ativa a linha DEVSEL para indicar que foi endereçado, fornece o primeiro dado e ativa a linha TRDY para indicar que o dado está pronto. Wait states podem ser gerados se necessário, bastando retardar a ativação de TRDY.

e) O Master lê o dado e altera as linhas C/BE, se necessário.

f) O Target desativa a linha TRDY enquanto busca o próximo dado, gerando mais um wait state. Isto pode ser necessário quando os circuitos do Target não são suficientemente velozes.

g) Neste exemplo o Master ainda não está pronto para ler o próximo dado, portanto ele desativa o sinal IRDY, gerando mais um wait state que fará o Target manter os dados pos mais um ciclo.

h) Após receber o último dado, o Master finaliza a transferência, desativando a linha FRAME.

i) O Target é desativado, liberando o barramento de dados e desativando os sinais TRDY e DEVSEL.

Este exemplo dá uma idéia geral de como ocorrem as transferências no barramento PCI. Outros tipos de tranferência ocorrem de forma diferente, mas a idéia básica é a mesma.

Dispositivos de alta velocidade

A maioria dos dispositivos ligados ao barramento PCI são capazes de operar como Master. O primeiro deles é o processador da placa de CPU, que através do host bridge (faz parte do chipset), comunica-se com o barramento PCI. Chamamos de bridge um circuito que faz a interface entre dois barramentos. O host bridge é portanto um circuito que faz a comunicação entre o barramento do sistema e o barramento PCI. Através deste circuito o processador pode acessar qualquer outro dispositivo PCI, ou seja, qualquer um deles pode funcionar como Target em transferências nas quais o processador é o Master.

As transferências entre o processador e dispositivos de E/S eram feitas de duas formas nos PCs com arquiteturas antigas:

Esses dois métodos estão representados na figura 30. Na E/S programada, cabe ao processador obter os dados na interface e colocá-los na memória (nas operações de entrada), e obtê-los na memória e entregá-los à interface apropriada (nas operações de saída). A vantagem desta técnica é a simplicidade de circuitos, e a desvantagem principal é que deixa o processador muito ocupado quando são transferidos muitos dados em seqüência.

Figura 12.30

E/S programada e E/S por DMA.

 

 

 

Na E/S por DMA, um circuito especial chamado controlador de DMA toma o controle do barramento do processador e realiza a transferência, gastando o mínimo tempo possível. A transferência de um dado através de DMA dura um único ciclo, sem monopolizar o barramento. Enquanto na E/S programada o processador pode ficar ocupado entre um dado e outro, testando se o próximo dado já pode ser transferido, na E/S por DMA o processador pode executar outras tarefas enquanto o controlador de DMA se encarrega da transferência. O controlador de DMA pode tomar o controle do barramento do sistema graças a dois sinais existentes nos processadores: HOLD e HLDA (Hold Acknowledge). Quando a interface tem um dado pronto para entregar, envia um comando para o controlador de DMA (DMA Request), que por sua vez ativará o sinal HOLD do processador. O processador termina a execução do ciclo em andamento e entra em tristate, “congelando” sua atividade, e envia para o controlador de DMA o sinal de HLDA, reconhecendo o estado de HOLD. A partir daí o controlador de DMA, que antes estava em tristate, passa a gerar os sinais de endereço, dados e controle, passando a ser o “mestre” do barramento. O controlador de DMA envia para a interface, um sinal de DMAACK (DMA Acknowledge, ou reconhecimento de DMA). A interface pode então entregar o dado para o barramento e enviando para a memória (nas operações de entrada), ou então obter o dado da memória (nas operações de saída).

Quanto mais lento é um periférico, mais adequada é a transferência por E/S programada, e quanto mais rápido, mais adequada é a transferência por DMA. Vejamos alguns exemplo, considerando o uso de um barramento externo de 100 MHz para o processador. Supondo que as memórias operem com temporização 2-1-1-1, teríamos cerca de 80 milhões de transferências de 64 bits por segundo. Considere alguns tipos de interface e o “tempo” entre transferências consecutivas:

Interface

Taxa de transferência

Intervalo entre transferências, medido em acessos à memória

Teclado

30 caracteres/s

2.600.000

Modem, 56k bps

5 kB/s

16.000

Placa de som

176 kB/s

1.800

Disquetes

45 kB/s

1.700

Paralela padrão

150 kB/s

533

Rede, 10 Mbits/s

1,25 MB/s

256

USB 1.1

1,5 MB/s

200

Paralela EPP/ECP

2 MB/s

40

Rede. 100 Mbits/s

12,5 MB/s

25

IDE, PIO Mode 4

16,6 MB/s

19

IDE, ATA-33

33,3 MB/s

9

Firewire

50 MB/s

6

USB 2.0

60 MB/s

5

IDE, ATA-66

66,6 MB/s

5

IDE, ATA-100

100 MB/s

3

Veja por exemplo o caso do teclado, que fornece uma taxa máxima de 30 caracteres por segundo (quando usamos o REPEAT). Entre a chegada de dois caracteres consecutivos, transcorrem cerca de 2,6 milhões de ciclos. Não teria sentido o processador ficar monopolizado entre a chegada de dois caracteres consecutivos, testando milhares de vezes se o próximo caracter já chegou. Para isso são usadas interrupções. O processador não testa se chegou o próximo caracter, ele continua executando outras tarefas, e a interface de teclado gera uma interrupção quando uma tecla é pressionada. Para atender à interrupção o processador precisa salvar o seu contexto (armazenar o conteúdo de todos os registradores internos), atender à interrupção e retornar ao processamento original, o que consome entre 50 e 100 ciclos. Como o intervalo neste caso é de 2,6 milhões de ciclos, vale a pena para o processador executar outras tarefas e ser interrompido quando chegar um caracter. Por isso podemos, por exemplo, tranqüilamente digitar um texto enquanto o processador de textos faz correção gramatical ou salva o arquivo automaticamente. Portanto a E/S programada com o uso de interrupções é um método bem adequado para a operação do teclado.

Um modem de 56k bps fornece um dado a cada 16.000 ciclos. O uso de E/S programada com interrupções também é adequado aqui. Quando chegar um caracter serão gastos entre 50 e 100 ciclos para atender à interrupção que lê o caracter (ou que o obtém da memória para transmitir). Por isso tipicamente os modems operam com E/S programada, sincronizada por interrupções.

A situação da placa de som é mais delicada. Operando com o som de qualidade máxima, transcorreriam 1800 ciclos entre duas transferências consecutivas, o que tornaria possível a operação por E/S programada, com interrupções. Entre dois dados consecutivos, descontanto 100 ciclos para atendimento da interrupção, sobrariam ainda 1700 para outros processamentos. O problema é que estamos levando em conta um barramento de 100 MHz, e quando as placas de som foram criadas, o barramento usado era o do 386, em versões tão lentas como 16 MHz e usando 2 ciclos por transferência. Nesse caso ocorriam cerca de 150 ciclos entre duas transferências consecutivas, o que tornava inviável o funcionamento por E/S programada com interrupções, já que cada atendimento de interrupção tem uma latência de cerca de 100 ciclos. Uma solução seria usar E/S programada sem interrupções, porém este método não permite que o processador realize outras tarefas. Por isso foi escolhida para as placas de som, a E/S por DMA. O processador não se envolve com a transferência, apenas a ativa no início e é informado da sua finalização, depois que todos os bytes foram transmitidos ou recebidos. Até hoje as placas de som operam com E/S por DMA, apesar dos barramentos atuais suportarem esta operação com E/S programada por interrupções.

Outro caso clássico é o da interface de disquetes. São cerca de 1800 ciclos entre bytes consecutivos, mas nos PCs originais, que faziam transferênicas lentas como 4 MB/s, o intervalo entre bytes consecutivos era de pouco mais de 100 ciclos. As interfaces de disquete da época usavam DMA ou E/S programada sem interrupções (também chamada de pooling, já que o processador passa os intervalos interrogando a interface para checar se os dados já chegaram). Para permitir maior desempenho, a IBM optou por utilizar para a sua interface de disquetes, a E/S por DMA, característica que é mantida até nos PC atuais, por questões de compatibilidade.

A interface paralela padrão opera nos PCs modernos com cerca de 500 ciclos entre bytes consecutivos, mas nos PCs antigos este período era reduzido a cerca de 20 ciclos, inviabilizando a E/S programada por interrupções. As opções viáveis eram DMA e E/S programada por pooliong, e este último foi o adotado pela IBM. A interface de impressora usa interrupções apenas para indicar condições anormais, como buffer cheio, falta de papel e outros erros. Devido à operação por pooling, o processador fica totalmente ocupado quando envia dados à impressora. Podemos inclusive notar algumas paradas no processamento normal durante a impressão. Interfaces paralelas modernas, operando nos modos EPP/ECP transmitem e recebe dados a cada intervalo de 40 ciclos, e a única opção viável de funcionamento é a E/S por DMA. A E/S programada por pooling deixaria o processador monopolizado durante a impressão.

Interfaces de rede a 10 Mbits/s oferecem 256 ciclos entre dados consecutivos (barramento de 100 MHz), ou um número menor ainda nos barrametos mais lentos. Por isso as interfaces de rede operam com E/S por DMA ou com E/S programada por pooling. Para não monopolizar o uso do processador ao operar com pooling, as interfaces de rede utilizam um buffer que armazena um bloco inteiro de dados. Assim consegue uma utilização mais eficiente. Ao transmitir dados, o processador os coloca rapidamente no buffer e dispara a transmissão, ficando assim liberado. A interface de rede vai interromper o processador quando terminar a transmissão do bloco de dados. Da mesma forma durante a chegada de dados a interface os armazena no seu buffer e interrompe o processador quando o bloco inteiro estiver pronto. O uso de buffers para acelerar o desempenho, ocupando menos o processador, e interrupções apenas para sinalizar o término da operação, é possível apenas para interfaces orientadas por blocos, ou seja, que transmitem sempre blocos de dados, como é o caso da interface de rede. Em contraste temos os disposivos orientados a bytes ou caracteres, como os modems, teclados e impressoras, que requerem atenção individual do processador para cada byte que transita. Interfaces de rede de 100 Mbits/s podem operar com os mesmos métodos usados pelas interfaces de 10 Mbits/s.

Dispositivos mais velozes não suportam a E/S programada por interrupções. Devem usar DMA ou E/S programada por pooling. Veja por exemplo o caso da interface IDE operando em PIO Mode 4. Com apenas 19 ciclos entre dados consecutivos, tem tempo suficiente para fazer um pooling: receber o dado, guardar na memória, incrementar os contadores, testar se chegou o último dado e caso não tenha chegado, voltar ao pooling para esperar o próximo dado. A seguir mostramos um trecho de programa (linguagem Assembly) no qual é feita uma leitura por pooling. O método é usado tanto para interfaces IDE como para outras que operem desta forma. As diferenças ficam por conta do número de bytes de cada bloco, dos endereços de dados e status e do bit indicador de dado pronto.

             ...
             MOV CX, 512         ; Vai ler 512 bytes
             MOV DI, BUFFER      ; DI aponta para o destino
POOLING:     IN AL, STATUS       ; Interroga a interface
             TEST AL,BIT         ; Testa o bit de dado pronto
             JZ POOLING          ; Volta se não pronto
             IN AL, DADO         ; Lê o dado
             STOSB               ; Armazena no buffer
             DEC CX              ; Decrementa contagem
             JNZ POOLING         ; Volta se não chegarm 512
FIM:         ....                ; Continua o processamento
 

A programação da E/S por DMA é um pouco mais complexa. É preciso programar o controlador de DMA indicando o canal a ser usado (cada canal é ligado a uma interface), o endereço de memória para os dados e o número de bytes. A seguir a interface recebe o comando a ser realizado. Terminados esses preparativos, o processador está livre para executar outras tarefas. O controlador de DMA e a interface farão todo o trabalho. Nos instantes em que dados estiverem prontos, o controlador de DMA coloca o processador em HOLD e faz seu acesso à memória. Terminada a transferência do bloco, a interface gera uma interrupção para avisar seu término ao processador.

Interfaces ainda mais rápidas não coseguem operar com E/S programada por pooling. Os 9 ciclos entre transferências consecutivas em uma interface ATA-33 são um período muito pequeno para fazer o pooling, mesmo operando a 100 MHz. Mais crítica seria a situação nos barramentos de 66 MHz.

A solução para o problema seria utilizar para esses dispositivos mais rápidos, a E/S por DMA. Não poderia neste caso ser usado o controlador de DMA padrão do PC. Este controlador opera nos mesmos padrões do barramento ISA, por questões de compatibilidade. No IBM PC XT operava mediante um clock de 5 MHz, e no AT, com 8 MHz. Seria possível utilizar controladores de DMA mais rápidos, mas não seriam 100% compatíveis com o padrão PC, baseado no controlador 8237A. Usando este controlador, os acessos à memória seriam feitos com os 8 MHz do barramento ISA, com ciclos extremamente longos para os padrões atuais, inviabilizando o seu uso com os dispositivos modernos.

Para usar DMA com os dispositivos de E/S mais modernos, a arquitetura do PC deveria ser modificada para incluir um novo controlador de DMA, ligado diretamente ao barramento do processador, e operando com clocks mais elevados, por exemplo, usando o mesmo clock do processador. Tecnicamente isto seria possível, porém ao invés disso foi adotada uma solução mais simples e mais elegante, que é utilizar o método Bus Mastering no barramento PCI.

Bus Mastering

O barramento PCI foi construído de tal forma que seus dispositivos podem operar como Bus Masters. Um Bus Master pode realizar o mesmo papel que um controlador de DMA, já que assume o total controle do barramento. É como se cada dispositivo PCI capaz de operar como Bus Master tivesse um controlador de DMA embutido.

Figura 12.31

DMA x Bus Mastering.

 

 

 

OBS: Na figura 31 a sincronização entre o controlador de DMA é feita pelos sinais HOLD e HLDA. Processadores modernos utilizam controles semelhantes para fazer este controle, apesar de não serem chamados de HOLD e HLDA.

OBS: O barramento PCI não utiliza operações de DMA. Entretanto operações de DMA que ocorrem no barramento ISA convertidas em transferências no barramento PCI, nas quais o Master é o PCI/ISA Bridge, e o Target é o PCI/Host bridge.

A figura 31 mostra o esquema das transferências por DMA e por Bus Mastering. Assim como ocorre com o DMA, o Bus Mastering não monopoliza o processador. A transferência de dados entre a memória e um periférico, usando o barramento PCI, tem as seguintes características:

a) A interface opera como Bus Master, enquanto o PCI/Host Bridge opera como Target. O Master pode ser uma interface de rede, uma interface IDE, uma interface SCSI, uma interface Firewire ou qualquer outra que esteja preparada para operar neste modo. O PCI/Host Bridge, atuando como Target, fará os acessos à memória através do barramento do processador, quando necessário.

b) Mesmo que o barramento PCI esteja operando com seu tráfego máximo (133 MB/s, com 32 bits e 33 MHz, por exemplo), o barramento do sistema não será exigido 100% do tempo. O PCI/Host Bridge tomará conta do barramento do processador apenas quando necessário, deixando este barramento livre na maior parte do tempo para que o processador tenha acesso à memória, realizando seus processamentos normais. Explicando de forma simples, com o barramento PCI exigindo 133 MB/s e o barramento do processador sendo capaz de operar com 66 MHz e 64 bits (533 MB/s), estaríamos ocupando apenas 25% do tráfego total do barramento do processador, que continua com 75% do tráfego para si próprio. Levando em conta que a maioria dos acessos são feitos na cache L2, o processador continua operando normalmente enquanto uma transferência da memória por Bus Mastering está em andamento.

c) Para evitar que uma transferência monopolize o barramento, o seu controlador pode suspender temporariamente uma transferência muito longa, dando chance a outros Bus Masters de terem acesso ao barramento PCI. Transferências suspensas podem continuar de onde pararam depois que outros Bus Masters foram atendidos.

Plug and Play nos barramentos PCI e ISA

Para que interfaces e placas de expansão funcionem, precisam que sejam configurados os recursos de hardware a serem usados, e que sejam instalados os drivers apropriados. Esses recursos de hardware são:

Nos PCs antigos cabia ao usuário ou ao técnico instalador, a configuração desses recursos de forma manual, através de jumpers, microchaves ou de programas de configuração específicos para cada dispositivo. Um grande esforço da Microsoft, Intel e outros fabricantes foi feito no sentido de possibilitar a configuração automática desses recursos, sem que o usuário precise intervir. As configurações são feitas de forma automática pelo BIOS da placa de CPU e/ou pelo sistema operacional. Cabe ao sistema operacional providenciar a instalação dos drivers corretos para cada dispositivo instalado.

O barramento PCI é totalmente Plug and Play (PnP). Isto significa que qualquer dispositivo PCI é beneficiado pela configuração automática oferecida pelo Plug and Play. Já o barramento ISA não possui recursos PnP nativos, ou seja, as placas de expansão ISA antigas, bem como os dispositivos das placas de CPU ligadas ao barramento ISA (interfaces seriais e paralelas, por exemplo), não possuem recursos de configuração automática.

A arquitetura Plug and Play foi criada de forma que não apenas dispositivos PCI possam usá-la. Novos dispositivos ISA puderam passar a utilizar as mesmas configurações automáticas disponíveis nas placas PCI. Placas de expansão ISA produzidas a partir de 1995, bem como interfaces existentes nas placas de CPU modernas e ligadas ao barramento ISA, também são Plug and Play.

A distribuição de recursos de hardware de forma automática depende de três fatores:

1) Que exista uma área no sistema que indique quais são os recursos de hardware disponíveis e quais estão em uso por quais interfaces. Esta área existe em todas as placas de CPU modernas, e chama-se ESCD (Extended System Configuration Data). Não existe local padrão para essas informações, mas normalmente ficam localizadas no BIOS, em Flash ROM, ou no chip CMOS.

2) Que cada dispositivo PCI ou ISA PnP informe os recursos de hardware de que necessita, e que possa ser programado para utilizar os recursos a ele destinados por um Gerenciador de Recursos.

3) Que os dispositivos não Plug and Play (Legacy Devices, ou dispositivos de legado) possam ser configurados de forma manual, porém de forma compatível com os dispositivos Plug and Play.

A arquitetura Plug and Play tem seu funcionamento dependente do BIOS e do sistema operacional. A figura 32 mostra como o BIOS e o sistema operacional interagem para acessar os recursos Plug and Play. Estamos indicando na figura como é feito o acesso a dispositivos de hardware dos tipos PCI e ISA PnP.

Figura 12.32

Arquitetura de um sistema Plug and Play.

 

 

 

Quando o computador é ligado, o Gerenciador Global de Configurações, que faz parte do BIOS PnP, ativa o Gerenciador de Configurações PCI e o Gerenciador de Configurações ISA PnP. Cada um desses módulos comandará suas funções de inicialização, que por sua vez enviarão comandos de inicialização apropriados para os dispositivos de hardware PCI e ISA. Durante esta inicialização, todos os dispositivos são interrogados para checar quais são os recursos de hardware necessários (Memória, E/S, IRQ e DMA). As funções de inicialização por sua vez pedem ao Gerenciador de Recursos do BIOS que obtenha através das informações contidas no ESCD, quais recursos podem ser destinados a esses dispositivos. Note que alguns dispositivos são inicializados e configurados nesta etapa, outros são configurados pelo sistema operacional. Tipicamente os dispositivos que precisam estar ativos antes do boot (interfaces de disco, por exemplo) são ativados e configurados pelo BIOS. Dispositivos que funcionam apenas sob o Windows ou outro sistema Plug and Play podem ser configurados posteriormente por este sistema.

O sistema operacional também tem um gerenciador de configurações que engloba as mesmas funções do gerenciador do BIOS, porém com funções mais avançadas. Uma das funções que este gerenciador executa e o BIOS não, é o carregamento dos drivers dos dispositivos. O BIOS não carrega drivers, apenas distribui os recursos de hardware. Em função dos dados existentes no ESCD, o sistema operacional também pode identificar os recursos usados por cada dispositivos. Pode ainda interrogar os dispositivos que não forma configurados pelo BIOS e distribuir recursos de hardware (Memória, E/S, IRQ e DMA) em função dos dados existentes no ESCD. O sistema operacional também pode empregar utilitários para ler e alterar as informações do ESCD, bem como reprogramar os recursos de hardware usados pelos dispositivos Plug and Play (como é o caso do bom e velho Gerenciador de Dispositivos do Windows).

Como vemos, a arquitetura Plug and Play consiste muito mais em procedimentos de software que elementos de hardware. Por isso foi fácil integrá-la às placas ISA de fabricação mais recente.

Conexões com outros barramentos

A ligação entre barramentos diferentes é feita através de circuitos chamados de bridge (ponte). Esses circuitos ficam localizados no chipset. Como sabemos, o chipset é normalmente formado por dois componentes:

No System Controller encontramos entre vários outros circuitos, a ligação entre o barramento PCI e o barramento do processador (PCI/Host Bridge). No Peripheral Controller encontramos, além de vários outros circuitos, a conexão entre o barramento PCI e outros barramentos mais lentos (como o ISA e o LPC).

Uso de interrupções no barramento PCI

O barramento PCI utiliza 4 linhas de interrupção que podem ser redirecionadas para as interrupções convencionais do PC (IRQs). Um componente do chipset chamado Redirecionador de interrupções é encarregado de fazer este redirecionamento.

Figura 12.33

Ligação do roteador de interrupções do barramento PCI.

 

 

 

A figura 33 mostra como funciona o roteador de interrupções. Chegam a ele 4 linhas de interrupção do barramento PCI: R0, R1, R2 e R3. Este roteador é programado para redirecionar essas 4 linhas para linhas de IRQ apropriadas. No exemplo da figura 33 essas interrupções estão redirecionadas para IRQ9, IRQ10, IRQ11 e IRQ12. Esta escolha de IRQs é feita de forma automática pelo BIOS, mas pode ser alterada através do CMOS Setup, na seção PCI Configuration. Nela podemos escolher entre as várias IRQs disponíveis para serem associadas às 4 linhas de interrupção que chegam do barramento PCI.

As interrupções no barramento PCI podem ser compartilhadas, ou seja, dois ou mais dispositivos podem usar a mesma interrupção. Caberá à rotina do sistema operacional que faz o atendimento a cada interrupção, determinar qual foi o dispositivo que a gerou.

Curiosa é a forma como as linhas de interrupção são ligadas aos slots PCI. Cada slot tem 4 pinos de interrupção: IRQA, IRQB, IRQC e IRQD. Entretanto a ligação com as entradas do roteador não é direta, e sim, alternada. A figura 34 mostra um método típico de ligação.

Figura 12.34

Conexões de INTA, INTB, INTC e INTD em slots PCI.

 

 

 

A forma de conexão parece confusa, mas é na verdade bastante interessante e faz com que o uso das interrupções seja distribuído uniformemente entre as disponíveis. Sempre que uma placa PCI precisa utilizar uma única interrupção, deve ser obtigatoriamente a IRQA. Se uma placa precisar ter mais de uma interrupção pode utilizar as demais linhas, mas a a IRQA sempre deverá ser usada. Aparentemente isto faria com que a linha IRQA ficasse congestionada, mas não fica graças à forma como as linhas IRQA, IRQB, IRQC e IRQD são levadas até o roteador de interrupções. Note que no esquema da figura 34, a IRQA do slot 1 está ligada em R3, que por sua vez é direcionada para IRQ12. A IRQA do slot 2 está ligada em R2, que por sua vez é direcionada para IRQ11. A IRQA do slot 3 está ligada em R1, que por sua vez é direcionada para IRQ10, e finalmente a IRQA do slot 4 está ligada em R0, que por sua vez é direcionada para IRQ9. Se cada placa utilizar a IRQA ao mesmo tempo, serão geradas interrupções diferentes IRQ9, IRQ10, IRQ11 e IRQ12.

Quando existem mais de 4 slots PCI, o roteamento obrigatoriamente faz com que uma mesma entrada do roteador esteja ligada a duas linhas INTA, de dois slots PCI diferentes. Por exemplo, em uma placa com 6 slots PCI, as IRQs poderiam estar roteadas da seguinte forma:

R0: INTA/1, INTB/2, INTC/3, INTD/4, INTA/5, INTB/6
R1: INTB/1, INTC/2, INTD/3, INTA/4, INTB/5, INTC/6
R2: INTC/1, INTD/2, INTA/3, INTB/4, INTC/5, INTD/6
R3: INTD/1, INTA/2, INTB/3, INTC/4, INTD/5, INTA/6

Neste caso é comum dizer que “os slots 1 e 5 compartilham a mesma IRQ” e “os slots 2 e 6 compartilham a mesma IRQ”. Isso estaria correto se cada slot usar uma única IRQ, mas sabemos que quando mais de uma IRQ é usada, outras IRQs também serão compartilhadas.

Vimos que a distribuição das IRQs a serem usadas pelo roteador pode ser configurada pelo CMOS Setup, de forma manual, ou ser deixada a cargo do BIOS e do sistema operacional. Podemos checar através do Gerenciador de Dispositivos, quais linhas estão sendo usadas pelo roteador de interrupções. Clicando em Computador / Propriedades / IRQs, podemos ver a lista das IRQs em uso. Aquelas indicadas com “Portador de IRQs para redirecionamento de IRQs PCI” são as que estão em uso pelo roteador.

Nem todos os dispositivos ligados ao barramento PCI utilizam as linhas IRQA, IRQB, IRQC ou IRQD. Por exemplo, as interfaces IDE primária e secundária, apesar de serem dispositivos PCI, utilizam as interrupções IRQ15 e IRQ14, respectivamente, que não passam pelo roteador, sendo ligadas diretamente ao controlador de interrupções. Da mesma forma, as interfaces USB que também são dispositivos PCI podem estar diretamente ligadas a uma interrupção, ou então usarem uma das IRQs disponíveis para os slots PCI.

Barramento VLB

Antes do surgimento do barramento PCI, alguns outros barramentos forma usados nos PCs, oferecendo taxas de transferência mais elevadas. O barramento MCA e o EISA foram dois padrões adotados entre o final dos anos 80 e o início dos anos 90. O MCA (Microchannel Architecture) era usado em PCs IBM PS/2 e teve várias versões, de 16 e 32 bits, operando a 10 e 16 MHz. O barramento EISA (Enhanced ISA) foi desenvolvido por diversas empresas que precisavam de um barramento mais rápido mas não podiam usar o MCA, que era barramento proprietário da IBM. O EISA opera com 32 bits e usa clocks entre 6 e 8,33 MHz.

Algumas placas de CPU chegaram a utilizar barramentos locais de alta velocidade para expansões de memória. Permitiam a instalação de uma placa especial de memória, mas infelizmente esses barramentos eram proprietários. Significa que uma placa de CPU com um barramento local proprietário para expansão de memória deveria obrigatoriamente usar uma placa de expansão de memória do mesmo fabricante. Como esses barramentos não eram padronizados, não foram usados em larga escala pela indústria de placas para PCs. A necessidade deste tipo de barramento cessou com a proliferação dos módulos de memória, que permitiam obter elevadas capacidades de memória em pouco espaço.

A necessidade de barramentos mais rápidos voltou a ser grande quando as placas de vídeo passaram a operar com altas resoluções e elevado número de cores. As antigas placas VGA de 16 bits operavam de forma satisfatória em modo texto, e com gráficos de 640x480 com 256 cores, quando toda a memória de vídeo ocupava apenas 300 kB. Já com a resolução de 1024x768 com 16 milhões de cores, a memória de vídeo ocupa cerca de 2 MB. Para transferir integralmente uma tela nesta resolução para uma placa de vídeo ISA, seria necessário um tempo de cerca de 0,25 a 0,5 segundo. A movimentação da tela seria extremante lenta, o que criou a necessidade de um novo barramento mais veloz, próprio para a placa de vídeo.

Foi então que surgiu o VESA Local Bus (VLB), criado pela Video Electronics Standards Association. Este barramento era representado fisicamente por um conector adicional que ficava alinhado com os slots ISA. Neste barramento era feita a reprodução quase fiel dos sinais de dados, endereço e controle do processador 486.

Figura 12.35

Placas SVGA VLB e IDEPLUS VLB.

 

 

 

Entre 1994 e 1995 eram comuns as placas SVGA VLB e IDEPLUS VLB, mostradas na figura 35. Usando uma placa SVGA VLB era conseguido um desempenho gráfico bastante superior. A placa IDEPLUS VLB tinha como vantagem a maior taxa de transferência da interface IDE, já que suas outras interfaces (seriais, pararalela, drives de disquetes e joystick) operavam com taxas de transferência bem menores. Também foram produzidas placas digitalizadoras de vídeo e controladoras SCSI no padrão VLB. Infelizmente o barramento VLB era totalmente baseado no barramento local do 486. A chegada dos processadores Pentium e suas placas de CPU equipadas com slots PCI, juntamente com a extinção dos processadores 486, fez com que o barramento VLB também caísse em desuso.

Figura 12.36

Uma placa de CPU com slots VLB.

 

 

 

Os slots VLB foram muito utilizados em placas de CPU 486 com clock externo de 33 MHz, portanto operavam também com 33 MHz. São slots de 32 bits, e a 33 MHz oferecem uma taxa de transferência teórica máxima de 133 MB/s. Esta taxa variava de acordo com o clock externo do processador. Por exemplo, o 486DX2-50 operava externamente a 25 MHz, portanto o barramento VLB acompanhava este clock, e a taxa de transferência resultante era de 100 MB/s. A tabela a seguir mostra alguns processadores e as taxas obtidas nos seus barramentos VLB.

Processador

Clock externo

e do VLB

Taxa de transferência

486DX-33, 486DX2-66, 486DX4-100, 5x86-133

33 MHz

133 MB/s

486DX2-80

40 MHz

160 MB/s

486DX-25, 486DX2-50, 486DX4-75

25 MHz

100 MB/s

Note que a maioria das placas de expansão VLB não suportava operar acima de 33 MHz. Para suportar 40 MHz era preciso utilizar wait states que eram programados através de jumpers nas placas VLB. 

O barramento VLB tinha várias desvantagens que contribuíram para que não fosse prolongado o seu uso depois da criação do PCI. As placas eram extremamente longas e maus contatos no conector eram bastante comuns. Não oferecia o recurso Plug and Play, como ocorre com o barramento PCI. O fato de não ter sido criado sob a liderança da Intel e da Microsoft também contribuiu para que não fizesse tanto sucesso no mercado.

Barramento ISA

O barramento ISA (Industry Standard Architecture) surgiu no início dos anos 80. Foi criado pela IBM para ser utilizado no IBM PC XT (8 bits) e no IBM PC AT (16 bits). Apesar de ter sido lançado há muito tempo, podemos encontrar slots ISA em praticamente todos os PCs produzidos nos últimos anos. Apenas a partir do ano 2000 tornaram-se comuns novas placas de CPU que aboliram completamente os slots ISA.

No tempo em que não existiam barramentos mais avançados, as placas de CPU possuíam 6, 7 e até 8 slots ISA. Depois da popularização do barramento PCI, as placas de CPU passaram a apresentar apenas 2 ou 3 slots ISA. As raras placas produzidas atualmente que possuem slots ISA, apresentam apenas um ou dois desses slots.

Os slots ISA são utilizados por várias placas de expansão, entre as quais:

Note que estamos falando principalmente de modelos antigos, pois a maioria dos fabricantes de placas de expansão já adotou definitivamente o padrão PCI, e não fabricam mais novos modelos ISA. De qualquer forma, a presença de slots ISA em uma placa de CPU é útil caso seja necessário aproveitar placas de expansão antigas.

As placas fax/modem e as placas de som foram as que mais demoraram para adotar o padrão PCI. O motivo desta demora é que o tráfego de dados que elas utilizam mal chega a ocupar 5% da capacidade de transferência de um slot ISA. Já as placas de vídeo, placas de rede, interfaces SCSI e digitalizadoras de vídeo operam com taxas de transferência mais elevadas, por isso foram as primeiras a serem produzidas no padrão PCI.

Figura 12.37

Placas de expansão ISA:

placa fax/modem e placa de som.

 

 

A figura 37 mostra exemplos de placas de expansão ISA. Observe que algumas de­las utilizam um conector simples (8 bits), enquanto outras utilizam um conector duplo (16 bits). Da mesma forma, os slots ISA podem apresentar um único conec­tor (ISA de 8 bits) ou dois conectores (ISA de 16 bits). Placas ISA de 8 bits podem ser encaixadas, tanto em slots ISA de 8 bits como em slots ISA de 16 bits. Placas ISA de 16 bits devem ser encaixadas obrigatoriamente em slots ISA de 16 bits (exceto em raríssimos casos de placas VGA antigas, de 16 bits, mas que se compor­tam como placas de 8 bits ao serem encaixadas em um slot de 8 bits). Os slots ISA de 8 bits eram encontrados em placas de CPU muito antigas.

Observe que Barramento ISA não é sinônimo de Slot ISA. O Barramento ISA é um conjunto de sinais digitais que partem do chipset e do processador, e atingem tanto as placas de expansão, através dos slots, como circuitos da placa de CPU. Por exemplo, as interfaces para drives de disquete, interfaces seriais e inter­face paralela embutidas na placa de CPU são controladas através do barramento ISA, apesar de não utilizarem os slots.

Sinais do barramento ISA

A seguir apresentamos os principais sinais do barramento ISA e suas descrições. A maioria deles foram originados no barramento de sistema dos processadores 8088 e 80286.

Sinal

Descrição

DATA0-DATA16

Barramento de dados, com 16 bits

Address 0 – Address 23

Barramento de endereços, com 24 bits

Reset Driver

Sinal que é enviado para todo o barramento quando o processador é resetado, provocando assim o RESET dos demais circuitos do computador.

IRQ3 – IRQ15

Linhas de requisição de interrupção. Através delas as diversas placas de expansão e demais circuitos podem interromper o processador. Algumas linhas não estão disponíveis no barramento ISA, pois são usadas internamente pela placa de CPU. É o caso da IRQ0, usada pelo alarme, IRQ1 usada pelo teclado, IRQ2 usada para conexão entre os dois controladores de interrupção e IRQ13 usada pela unidade de ponto flutuante.

DMAREQ 0 – DMAREQ7

Requisições de DMA. Através dessas linhas uma interface pode solicitar transferências por DMA. O canal DMA4 não está disponível no barramento, pois é usado para conectar os dois controladores de DMA.

DMAACK0 – DMAACK7

Sinais de reconhecimento de interrupção, um para cada canal de DMA,

Real Memory Read

Indica leituras na memória, quando o processador opera no modo real.

Real Memory Write

Indica excritas na memória, quando o processador opera no modo real.

Memory Read

Indica leituras na memória, tanto no modo real como no protegido.

Memory Write

Indica escritas na memória, tanto no modo real como no protegido.

I/O Read

Indica leitura em dispositivos de E/S

I/O Write

Indica escrita em dispositivos de E/S

Terminal Count

Indica que foi finalizada uma operação de DMA

ALE

Address Latch Enable. Indica ao barramento que os endereços são válidos e podem ser capturados pelas interfaces.

OSC

Sinal de 14,38 MHz, usado pelas placas de vídeo antigas para gerar o sinal de vídeo composto no padrão NTSC.

Memory 16-bit Select

Indica que o atual ciclo de memória deve operar com 16 bits.

I/O 16-bit Select

Indica que o atual ciclo de E/S deve operar com 16 bits.

I/O Channel Check

Indica que ocorreu um erro de paridade na memória.

I/O Channel Ready

Usado para introduzir Wait States nos ciclos em andamento.

LPC - substituto do ISA em placas modernas

As placas de CPU modernas não utilizam mais slots ISA. Ainda assim possuem circuitos internos que precisam estar disponíveis, apesar de serem originalmente ligados ao barramento ISA. São as interfaces seriais, a interface paralela, a interface para drives de disquetes, o CMOS, a interface de teclado, a interface para mouse, o PC Speaker e o BIOS. Note que nas placas modernas, com exceção do BIOS, todos esses circuitos fazem parte do chip conhecido como Super I/O. Seria preciso manter um barramento ISA interno apenas para a ligação desses dispositivos.

Outro problema é que o barramento ISA possui muitos pinos. Os slots de 16 bits têm ao todo 98 pinos. Mesmo descontando pinos que normalmente não são necessários para o funcionamento do Super I/O e do BIOS, o número total continua sendo muito grande. Para resolver esses problemas, a Intel criou o barramento LPC (Low Pin Count).

Este barramento opera com 33 MHz, mas utiliza apenas 13 pinos. Como é destinado à conexão de dispositivos lentos, não precisa utilizar barramentos independentes de dados e endereços. Na verdade nem precisa fornecer todos esses bits ao mesmo tempo. O LPC tranfere as informações no formato serial, usando um barramento de apenas 4 bits. Utilizado essas 4 linhas são fornecidos de forma serial, dados, endereços, comandos, wait states e todas as demais informações necessárias à sua operação.

Figura 12.38

Diagrama de uma placa de CPU moderna. Note o barramento LPC, no qual estão ligados o Super I/O e o BIOS.

 

 

 

A figura 38 mostra o diagrama de uma moderna placa de CPU na qual não existe barramento ISA. Observe que o chip South Bridge (no exemplo, o AMD-766) tem como uma de suas funções, gerar os sinais do barramento LPC, no qual estão conectados os chips Super I/O e o Flash BIOS. Da mesma forma existem vários chips Super I/O e várias Flash ROMs que também adotaram o padrão LPC.

Todos os dispositivos que eram tipicamente ligados ao barramento ISA operam com baixa velocidade. Sendo assim, o barramento LPC não tem necessidade de operar com alto desempenho, mas apenas o suficiente para uma comunicação eficiente com esses dispositivos. Já que os chips modernos são capazes de operar com clocks bem mais elevados que os usados antigamente no barramento ISA, o LPC tira proveito disso, operando com um número de pinos baixo, o que resulta em menor custo e menor complexidade dos seus circuitos.

O LPC tem ao todo 13 pinos, sendo 7 de uso obrigatório e 6 opcionais, usados apenas quando é preciso utilizar todos os seus recursos, o que nem sempre é o caso. Os pinos de uso obrigatório são:

Sinal

Descrição

LAD0- LAD3

Barramento serial para comandos, endereços e dados, todos multiplexados.

LFRAME

Indica o início de cada ciclo.

LRESET

Reseta os dispositivos do barramento.

LCLK

Clock de 33 MHz para os dispositivos do barramento.

Os demais 6 sinais são necessários para dispositivos que usam DMA, interrupções e gerenciamento de energia. As operações de leitura e escrita em memória e E/S no barramento LPC são feitas em 8 bits, assim como ocorre com todas as interfaces que pretende atingir. Pode ainda realizar operações de DMA com 8, 16 e 32 bits, e operações de Bus Mastering com 8, 16 e 32 bits.

Figura 12.39

Operação do barramento LPC.

 

 

 

A figura 39 mostra o diagrama de tempo de uma transferência no barramento LPC. As transferências  são comandadas pelo sinal de clock LCLK. O sinal LFRAME é ativado em nível 0, indicando o início de um ciclo. A seguir os comandos, endereços, dados e demais informações são transmitidas através de LAD0-LAD3, em seqüências de 4 bits a cada clock.

Figura 12.40

Diagrama de um chip Super I/O para barramento LPC.

 

 

 

A maioria dos fabricantes de chips Super I/O produzem modelos para o padrão LPC. A figura 40 mostra o diagrama do chip PC87360, produzido pela National Semiconductor. Possui diversas interfaces, e no seu diagrama podemos ver os sinais de conexão com o barramento LPC (Bus Interface). Note que existem ainda disponíveis os sinais PIRQ3-PIRQ7, PIRQ9-PIRQ12, PIRQ14 e PIRQ15. Partindo do Super I/O, esses sinais são enviados ao South Bridge, o chip no qual estão integrados os controladores de interrupções. Através dele as interfaces existentes no Super I/O podem interromper o processador.

Barramentos AMR, CNR e ACR

Muitas placas de CPU modernas possuem conectores para a instalação de um riser card. São os slots AMR, CNR e ACR. Um riser card é uma placa de interface especial, cujo principal objetivo é a redução de custo. A idéia básica dessas placas é dividir cada interface em duas partes. Uma parte, totalmente digital e de baixo custo, é embutida no chipset. A outra parte, mais voltada para funções analógicas, fica no riser card. A comunicação entre o chipset da placa de CPU e o Riser Card é feita em um formato serial, utilizando um reduzido número de pinos.

O primeiro padrão de riser card foi o AMR (Audio Modem Riser). Destinava-se a ser usado apenas com circuitos de som e modem. Para utilizar essas placas é preciso ter no chipset, os circuitos de áudio AC’97 e de modem MC’97. Muitos chipsets modernos possuem tais circuitos. Os circuitos de som AC’97 são relativamente simples, mas com boa qualidade. Os circuitos MC’97 são similares aos existentes nos soft modems. Toda a parte digital desses dispositivos fica localizada no chipset, e a parte analógica fica em uma placa de expansão AMR, que deve ser instalada no slot apropriado. A figura 41 mostra um slot AMR.

Figura 12.41

Slot AMR em uma placa de CPU.

 

 

 

Depois do AMR, a Intel criou um novo padrão, o CNR (Communications Network Riser). O tipo de slot é idêntico ao usado pelo padrão AMR. Neste slot podemos instalar riser cards com funções de áudio, modem e rede. As placas AMR e CNR têm formatos semelhantes, como a que vemos na figura 42.

Figura 12.42

Uma placa de Rede/Áudio CNR.

 

 

 

Portanto o CNR é um padrão similar ao AMR, porém suporta funções de rede. Existe uma diferença entre as localizações dos slots AMR e CNR. Normalmente as placas de CPU possuem um ou outro tipo, mas não ambas. O slot à esquerda de todos os slots PCI é o CNR (olhando a placa de CPU pela frente do gabinete). O slot localizado à direita é um AMR.

Figura 12.43

Localização dos slots AMR e CNR.

 

Podemos então considerar que usar uma placa AMR ou CNR é o mesmo que utilizar uma placa de som simples, ou um soft modem, ou uma interface de rede comum. A diferença é que parte dos circuitos ficam no chipset (SouthBridge e Super I/O) e parte fica no riser card. Existem vários tipos de riser card no mercado: modem, áudio, áudio+modem, áudio+rede, modem+rede, modem+áudio+USB, etc.

O padrão ACR, promovido pela AMD e outros fabricantes de modems e produtos de comunicação, é compatível com o AMR, e também oferece funções de rede, USB e comunicação em banda larga. Seu slot possui mais pinos, e é similar ao slot PCI, porém com uma fixação mecânica diferente.

Na figura 44 vemos uma placa ACR. É bem parecida com uma placa PCI, entretanto não pode ser encaixada em um slot PCI. Note que o chanfro existente no conector da placa fica na posição simétrica em relação à dos slots PCI de 5 volts comuns nas placas de CPU. O conector ACR existente na placa de CPU é do mesmo tipo usado pelos slots PCI, mas além da posição ser invertida, o conector é ligeiramente deslocado para a parte traseira do gabinete, o que impede o encaixe de placas ACR em slots PCI, e vice-versa. A localização do conector ACR na placa de CPU é a mesma do conector CNR, ou seja, à esquerda dos slots PCI.

Figura 12.44

Uma placa ACR.

 

 

 

A idéia básica do ACR é a mesma do AMR e do CNR: produzir interfaces simples, com a parte digital localizada no chipset e a parte analógica localizada no riser card.

Muitos fabricantes estão produzindo riser card dos tipos AMR/CNR e ACR. Diversos chipsets da Intel, VIA e SiS estão embutindo circuitos como o áudio AC’97 e modem MC’97, restanto apenas instalar o riser card apropriado para ter acesso a esses recursos. As interfaces USB também já estão presentes nos chipsets, faltando apenas rotaar seus dados para o riser card. A tendência é que os chipsets passem a utilizar embutidos também os circuitos de rede e de comunicação em geral. Mesmo quando os circuitos não estão embutidos no chipset, os barramentos AMR, CNR e ACR podem ser usados, pois existem diversos chips independentes, de baixo custo, que podem ser utilizados pelos fabricantes de placas de CPU.

Note ainda que a maioria das placas de CPU com som onboard, utilizam os circuitos de áudio AC’97. Ao invés de utilizarem um riser card, os fabricantes acrescentam na própria placa de CPU os circuitos que estariam no riser card de áudio, e usam os tradicionais conectores de áudio na parte traseira da placa de CPU. Desta forma o áudio AC’97 pode ser utilizado, sem que seja preciso instalar um riser card.

Ainda é muito difícil encontrar riser cards no comércio, porém seus fabricantes apostam que nos próximos anos serão as opções mais comuns para soft modems e outras interfaces de baixo custo.

Velocidadesdos principais barramentos

O desempenho de uma placa conectada a um barramento depende de vários fatores, entre os quais, a taxa de transferência. Esta por sua vez, depende do nú­mero de bits, do clock e do número de transferências feitas a cada ciclo. A tabela que se segue mostra as características dos barra­mentos ISA, PCI e AGP.

Barramento

Bits

Clock

Transferências por ciclo

Taxa de transferência

ISA

16

8 MHz

1/2

8 MB/s

PCI 33 MHz 32 bits

32

33 MHz

1

133 MB/s

PCI 33 MHz 64 bits

64

33 MHz

1

266 MB/s

PCI 66 MHz 32 bits

32

66 MHz

1

266 MB/s

PCI 66 MHz 64 bits

64

66 MHz

1

533 MB/s

AGP 1x

32

66 MHz

1

266 MB/s

AGP 2x

32

66 MHz

2

533 MB/s

AGP 4x

32

66 MHz

4

1066 MB/s

AGP 8x

32

66 MHz

8

2133 MB/s

O barramento ISA utiliza um clock de 8 MHz, e realiza transferências de 8 ou 16 bits. Usando 16 bits, teoricamente poderia transferir 16 MB/s (8 MHz x 2 bytes), mas cada transferência utiliza 2 ciclos de clock, como era exigido pelas placas de expansão do início dos anos 80, que eram muito lentas. Portanto realiza em média, meia transferência a cada ciclo. Desta forma, a taxa de transferência obtida com o ISA é de apenas 8 MB/s.

O barramento PCI mais simples utiliza um clock de no máximo 33 MHz, com transferências de 32 bits. Isto resulta em uma taxa de transferência igual a 132 MB/s (33 MHz x 4 bytes). As versões de 64 bits e 66 MHz resultam em taxas mais elevadas, chegando até 533 MB/s.

O barramento AGP não está ligado ao PCI, e sim, ao barramento externo do processador, apesar de ter muitas características similares às do PCI. No chamado modo AGP 1x, em cada ciclo AGP é feita uma transferência, resultando em uma taxa de 266 MB/s. Como já mostramos, os modos AGP 2x, AGP 4x e AGP 8x fornecem 533 MB/s, 1066 MB/s e 2133 MB/s, respectivamente.

Essas comparações mostram como uma placa de vídeo PCI simples opera com taxa de transferência mais lenta (133 MB/s) que um modelo AGP. Muitos modelos de placas de vídeo são atualmente produzidos nas versões AGP e PCI, sendo que as versões PCI destinam-se a upgrades, ou seja, melhorar o sistema de vídeo de PCs antigos. Com o passar do tempo, serão cada vez mais raras as placas de vídeo PCI.

Note que todas essas taxas de transferências são limites máximos teóricos, que na prática não são atingidos. Devemos levar em conta as latências dos barramentos, que necessitam do fornecimento inicial de endereço e comando, uso de wait states e outros eventos que causam overhead, resultando em taxas de transferência efetivas bem menores. De qualquer forma, os limites máximos teóricos mostrados na tabela servem como comparação do potencial de cada um desses barramentos.

 

Parte 1