Arquitetura de PCs
Laércio Vasconcelos
Janeiro/2003
Este artigo apresenta alguns conceitos importantes para quem quer entender o funcionamento interno de um micro. São explicados os mapas de memória e de E/S, o funcionamento das interrupções, DMA e Bus Mastering. Apresentamos ainda o funcionamento dos circuitos de CLOCK e RESET.
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.
O hardware é uma área onde nos preocupamos com todos os aspectos de um computador, chegando até o nível de portas lógicas e componentes eletrônicos em geral, correntes e tensões, glitches, overshoot e outros efeitos elétricos. Na arquitetura, nosso objeto de estudo está um nível acima. Não importa saber de forma detalhada como os circuitos são construídos, e sim, como se conectam e como funcionam. Na arquitetura de computadores apresentamos conceitos como CPU, memória, dispositivos de entrada e saída. Sempre que possível exemplificamos os conceitos usando PCs.
Neste capítulo vamos estudar a arquitetura de forma mais profunda, entretanto voltada exclusivamente para PCs. Para trabalhar com montagem, manutenção e expansão de PCs não é preciso conhecer hardware de forma tão detalhada, chegando ao nível de portas lógicas, chips, correntes e tensões, mas é preciso conhecer a fundo a arquitetura dos PCs. Falaremos neste capítulo sobre processadores, memórias, chipsets, dispositivos de entrada e saída, interfaces, canais de DMA, interrupções e outros conceitos importantes.
Um bom conhecedor de hardware deve entender não apenas o que se passa dentro de um processador, mas também a forma como ele se comunica com o seu exterior. É preciso entender como o processador envia e recebe dados para a memória e para os dispositivos a ele ligados. Vamos então começar estudando a forma como o processador “vê” a memória e os demais dispositivos.
Um processador é capaz de realizar operações como:
Ler um dado da memória
Escrever um dado na memória
Receber um dado de dispositivos de E/S
Enviar dados para dispositivos de E/S
De um modo geral podemos dizer que o processador é capaz de ler e escrever dados em duas categorias de circuitos:
a) Memória: São as ROMs e RAMs localizadas na placa de CPU e nas placas de expansão.
b) Entrada e saída: Em inglês “Input/Output” (I/O). São circuitos representados pelas interfaces de diversos dispositivos como drives, disco rígido, teclado, impressora, monitor, mouse, etc.
Nas operações de acesso à memória, o processador escreve e lê dados, praticamente sem intermediários. Nos acessos a dispositivos de E/S, existem circuitos intermediários, que são as interfaces. Por exemplo, quando é feita a leitura de um caracter proveniente do teclado, não existe uma ligação direta entre o processador e o teclado. Esta ligação é feita por um circuito chamado Interface de Teclado (esta interface fica localizada na placa de CPU). O código do caracter proveniente do teclado é transferido para esta interface, que por sua vez, avisa ao processador que existe um código para ser lido. O processador pode então fazer a leitura do caracter ou comando de teclado recebido. Da mesma forma, quando é feita a impressão de um caracter na impressora, o processador não envia dados diretamente para a impressora. Os dados são colocados em um circuito chamado Interface Paralela, que por sua vez, encarrega-se de transmitir os dados para a impressora.
Cada dispositivo de E/S possui a sua própria interface, como mostram os exemplos da tabela a seguir:
|
Dispositivo |
Interface |
|
Monitor |
Placa
de vídeo |
|
Teclado |
Interface
de teclado |
|
Alto
falante |
Interface
de alto falante |
|
Impressora |
Interface
paralela ou USB |
|
Mouse |
Interface
serial, PS/2 ou USB |
|
Drive
de disquete |
Interface
para drives de disquete |
|
Disco
rígido IDE |
Interface
IDE |
|
Disco
rígido SCSI |
Interface
SCSI |
|
Joystick |
Interface
para jogos ou USB |
|
Scanner |
Placa
de interface de scanner, paralela ou USB |
|
Câmera
digital |
Interface
serial, paralela ou USB |
|
ZIP
Drive |
Existem
modelos SCSI, paralelos, USB e IDE. |
Para controlar um dispositivo de E/S, o processador precisa realizar acessos de leitura e escrita na sua interface. Observe que quando o processador escreve dados na memória, nada acontece fisicamente. Apenas o valor escrito fica armazenado na posição de memória que o processador indicou. Por outro lado, quando o processador escreve no circuito de uma interface, ações físicas ocorrem.
Para realizar a leitura e escrita de dados na memória e nas interfaces, o processador possui diversos sinais digitais, como mostra a figura 11:
|
|
Figura
4.11
|
a)
Barramento de endereços
Em inglês, Address BUS. Nos processadores 386DX e no 486 este barramento é um conjunto de 32 sinais digitais, representados por 32 terminais do processador. Na maioria dos processadores mais avançados este barramento opera com 36 bits. Através desses sinais o processador especifica o endereço de memória ou de E/S que deseja ter acesso. Este barramento é do tipo unidirecional, ou seja, os valores que representa trafegam em uma única direção, que é a indicada pela seta.
b)
Barramento de dados
Em inglês, Data BUS. Nos processadores 386DX e 486, este barramento possui 32 bits, e é representado também por 32 terminais do processador. No Pentium e superiores, possui 64 bits. É através deste barramento que trafegam os dados que o processador lê e escreve na memória e nas interfaces. Este barramento é do tipo bidirecional, ou seja, seus dados podem trafegar em duas direções: para dentro do processador (nas operações de leitura) e para fora do processador (nas operações de escrita).
c)
IO/M
Significa Input-Output/Memory, ou seja, Entrada e Saída / Memória. Com este sinal digital o processador indica se está acessando uma posição de memória ou uma posição de E/S.
d)
R/W
Significa Read/Write, ou seja, Leitura/Escrita. Este é um sinal digital através do qual o processador informa se está realizando uma operação de leitura ou de escrita.
Através dos sinais IO/M e R/W, o processador define uma das 4 operações de transferência de dados possíveis:
Leitura da memória
Leitura de E/S
Escrita na memória
Escrita em E/S
Um exemplo de leitura de E/S é a recepção do código de uma tecla pressionada pelo usuário no teclado. Um exemplo de escrita em E/S é a transmissão de um caracter para a impressora.
Observe bem a figura 11 e veja como existe uma grande similaridade (pelo menos do ponto de vista do processador) entre as operações de acesso à memória e as operações de acesso a E/S. Em ambos os tipos de operação o processador precisa fornecer o endereço desejado. Em ambos os tipos podem ser feitas leituras e escritas através do barramento de dados. O sinal R/W indica se a operação é de leitura ou escrita, tanto no caso do acesso à memória como no acesso a E/S. O sinal IO/M é o único diferenciador que o processador fornece para distinguir entre as operações de acesso à memória e as de acesso a E/S.
O processador “enxerga” a memória como uma grande seqüência de bytes. Esta seqüência, quanto representada em um gráfico, é chamada de mapa de memória. Da mesma forma, o processador “enxerga” os dispositivos de E/S como uma seqüência de bytes, que ao serem representados graficamente, formam o que chamamos de “mapa de E/S”. O mapa de memória é uma representação gráfica de todos os bytes presentes em todos os chips de memória do computador. O mapa de E/S é uma representação gráfica de todos os bytes existentes nos diversos chips que formam as diversas interfaces existentes no computador. A figura 12 mostra o mapa de memória e o mapa de E/S de um PC equipado com 256 MB de RAM.
|
|
Figura
4.12 |
Observe o mapa de memória da figura 12. Vemos que neste mapa existem vários "finais de memória".
1. Memória instalada. Na figura está sendo usado um limite de 256 MB, mas poderia ser qualquer quantidade suportada pela placa de CPU. Esta é a memória que os programas poderão acessar.
2. Limite da placa de CPU. Este limite é imposto pelo projetista da placa de CPU, que possui previsão para a instalação futura de novos módulos de memória. Muitas placas de CPU modernas possuem 3 soquetes para instalação de módulos de até 512 MB, portanto seu limite máximo é 1536 MB. Outras placas poderão ter limites ainda maiores, assim como placas um pouco mais antigas têm limites menores.
3. Limite do processador. Com um barramento de endereços de 36 bits, o máximo endereço que pode ser utilizado é 64 GB de memória.
A figura 12 mostra também o mapa de E/S e dois limites:
1. Limite da placa de CPU. Este limite foi imposto pela IBM quando projetou o IBM PC, e era seguido pelas placas de CPU até poucos anos atrás. Nessas placas são usados apenas 1024 endereços de E/S (1k), apesar do processador poder chegar até 64k. Na figura, chamamos este limite de “Tradicional Limite da Placa de CPU”, pois nas modernas placas de CPU, este limite é maior, ou seja, é usado um espaço de endereçamento maior que 1 kB.
2. Limite do processador. Nas operações de E/S, os processadores usados na família PC usam apenas 16 bits do seu barramento de endereços, limitando o endereço máximo de E/S em 64k. As placas de CPU modernas utilizam todos os 16 bits para especificar endereços de E/S, portanto seu limite máximo é o próprio limite de endereçamento do processador, ou seja, 64 kB.
Os bytes do mapa de E/S ficam localizados em diversos chips existentes nas diversas interfaces instaladas no PC. Quando o processador escreve valores nesses bytes, os dispositivos conectados às interfaces recebem automaticamente os comandos correspondentes a esses valores.
Através do Gerenciador de Dispositivos do Windows, podemos visualizar o mapa de E/S, com as indicações das faixas de endereços ocupadas por cada interface. No Gerenciador de Dispositivos, clique em Computador, depois em Propriedades. No quadro apresentado (figura 13), marque a opção “Entrada/saída (E/S)”.
|
|
Figura
4.13 |
No mapa apresentado, vemos por exemplo que a porta COM2 ocupa os endereços entre 2F8 e 2FF, e que a porta paralela está ocupando os endereços entre 378 e 37F. Usando a barra de rolamento deste quadro podemos visualizar todos os endereços de E/S usados pelo computador.
Você certamente já ouviu falar em drivers de dispositivos de E/S. Temos por exemplo o driver da placa de som, o driver da placa de vídeo, o driver do modem, e assim por diante. Uma das coisas que o driver faz é ler e escrever valores apropriados nos endereços apropriados do mapa de E/S correspondentes ao dispositivos que está controlando.
Ao projetar o IBM PC, a IBM definiu diretrizes para o uso do mapa de E/S. Esta definição é uma reserva de faixas de endereços específicos para interfaces específicas. Todos os fabricantes de hardware para PCs devem obedecer este padrão. Por exemplo, em qualquer placa que tenha uma interface serial COM1, esta interface deve ocupar os endereços entre 3F8 e 3FF. A tabela que se segue mostra como a IBM definiu esses endereços de E/S. Até os dias atuais as interfaces mantém esses endereços, por questões de compatibilidade.
| Endereços | Interface que os utiliza |
|
Controlador
de DMA (placa de CPU) |
|
|
020-03F |
Controlador
de interrupções (placa de CPU) |
|
040-05F |
Timer
(placa de CPU) |
|
060-06F |
Controlador
de teclado do AT |
|
070-07F |
Chip
CMOS |
|
080-09F |
Registro
de página de DMA (placa de CPU) |
|
0A0-0BF |
Segundo
controlador de interrupções (CPU) |
|
0C0-0DF |
Segundo
controlador de DMA (placa de CPU) |
|
0F0-0F1 |
CLEAR
e RESET do coprocessador |
|
170-177 |
Controladora
IDE secundária |
|
1F0-1F7 |
Controladora
IDE primária |
|
200-207 |
Interface
de joystick |
|
278-27F |
Porta
paralela |
|
2E8-2EF |
Porta
serial COM4 |
|
2F8-2FF |
Porta
serial COM2 |
|
370-377 |
Interface
de drives secundária |
|
378-37F |
Porta
paralela |
|
3B0-3BF |
Placa
de vídeo MDA e HÉRCULES |
|
3C0-3CF |
Placa
VGA |
|
3D0-3DF |
Placas
CGA e VGA |
|
3E8-3EF |
Porta
serial COM3 |
|
3F0-3F7 |
Interface
de drives primária |
|
3F8-3FF |
Porta
serial COM1 |
As interrupções são um método bastante eficiente para realizar operações de entrada e saída. Imagine uma situação da vida real em que uma secretária fica o tempo todo ao lado do chefe, esperando que ele solicite um serviço. Ela não pode executar outras tarefas porque está “monitorando” o seu chefe. Imagine agora que a secretária está realizando normalmente o seu trabalho, sem se preocupar com o chefe. Quando o chefe deseja algum serviço, chama a secretária, que irá interromper o que estava fazendo para atender o chefe. Da mesma forma, um processador não precisa ficar constantemente monitorando os seus dispositivos de E/S. Pode fazer o seu trabalho normalmente, e quando um dispositivo necessitar de atenção do processador, irá interrompê-lo para que a operação de E/S seja realizada.
A interrupção é uma operação de hardware na qual o processador suspende provisoriamente a execução de um programa para o atendimento de um determinado evento. Essa suspensão dura tão pouco que o usuário não chega a perceber que o programa parou. Na maioria dos casos este tempo é inferior a alguns milésimos de segundo. Entre os diversos pinos do processador, um deles é chamado de INT, e serve para que os diversos circuitos existentes no computador possam requisitar interrupções. Assim que o processador recebe um sinal INT, guarda na memória informações que permitem mais tarde saber exatamente onde parou. A seguir, determina qual foi o dispositivo que gerou a interrupção e faz o seu atendimento. Ao terminar de atender a interrupção, volta a processar o programa original exatamente do ponto de onde parou. Existem diversos dispositivos que necessitam interromper o processador. Alguns exemplos são:
A interface de teclado, para avisar que o usuário pressionou uma tecla
A interface paralela, para avisar que ocorreu algum problema com a impressora
A interface serial, para indicar que recebeu um byte, ou que terminou de transmitir um byte
A interface de drives de disquetes, para avisar que já terminou a leitura ou gravação solicitada
Idem para a interface de disco rígido
Sem as interrupções, o funcionamento do computador seria muito mais complicado. Além de processar o programa principal, o processador precisaria periodicamente checar todos os dispositivos para verificar se existem eventos pendentes. Por exemplo, precisaria checar se alguma tecla foi pressionada, se a impressora está pronta para receber dados, se existe algum dado chegando das interfaces seriais, etc. Alguns computadores muito antigos operavam desta forma, uma técnica chamada de pooling. Era o caso da maioria dos micros de 8 bits. O uso de interrupções faz com que o computador opere de forma muito mais eficiente, podendo se ocupar do processamento do programa principal, e sendo interrompido apenas quando necessário.
Vários dispositivos, através das suas interfaces, precisam freqüentemente enviar um comando de interrupção para que o processador lhes dedique a atenção necessária, normalmente relacionada com a transmissão e recepção de dados. Como o processador possui apenas uma entrada de interrupção e existem vários dispositivos que necessitam interrompê-lo, a placa de CPU utiliza um circuito chamado de controlador de interrupções. Uma das funções deste circuito é receber requisições de interrupções de vários dispositivos e interromper o processador através do sinal INT. Outra função é informar ao processador qual foi o dispositivo que gerou a interrupção.
A figura 14 mostra de forma muito simplificada, a estrutura de interrupções no IBM PC XT. A figura 15 mostra a estrutura de interrupções usada nos PC mais modernos. Por simplicidade, comecemos a analisar como eram as interrupções no XT.
|
|
Figura
4.14 |
Os vários circuitos que precisam gerar interrupções enviam as requisições ao chip controlador de interrupções, que por sua vez, interrompe o processador e o informa qual foi o dispositivo que requisitou a interrupção.
Observe na figura 14 os seguintes sinais digitais:
|
INT |
Sinal
que serve para interromper o processador. |
|
IRQ0
a IRQ7 |
Essas
são as oito entradas de interrupções, ligadas a diversos
dispositivos. A sigla IRQ significa "Interrupt Request" (Requisição
de interrupção). Quando o controlador de interrupções recebe um IRQ
de algum dispositivo, gera um sinal INT para o processador. Além disso,
o controlador de interrupções informa ao processador qual dos oito
sinais IRQ foi ativado. Este controlador também é capaz de gerenciar
prioridades entre as interrupções (qual interrupção é atendida em
primeiro lugar quando duas ou mais ocorrem no mesmo instante), e também
leva em conta interrupções aninhadas
(quando uma nova interrupção ocorre antes do final do atendimento de uma
prévia interrupção). Entre os diversos chips controladores de
interrupções existentes no mercado, a IBM optou pelo 8259A, fabricado
pela Intel. |
Para que todos esses dispositivos possam gerar interrupções, é preciso que suas interfaces tenham acesso físico aos respectivos sinais IRQ. Observe que tanto o processador como os controladores de interrupções ficam localizados na placa de CPU. Por outro lado, a maioria das interfaces ficam localizadas em placas de expansão. Portanto, os sinais IRQs são originados em placas de expansão e precisam chegar até a placa de CPU. Por esta razão, os sinais IRQ estão presentes nos slots, que são a ligação física entre a placa de CPU e as placas de expansão.
As oito entradas de interrupções disponíveis são descritas na tabela que se segue:
|
IRQ0 |
Timer.
Trata-se de um circuito que gera uma interrupção a cada 55 milésimos de
segundo. Esta interrupção é usada para manter a data e a hora. Nos
XTs, o usuário precisava fornecer a data e a hora durante o boot.
Depois disso, o timer fazia a contagem do tempo a partir da data e hora
iniciais, e das suas interrupções. Nos PCs modernos, apesar da existência
do relógio permanente localizado no chip CMOS, o timer continua sendo
usado pelos programas que necessitam saber a data e a hora. A única
diferença é que nas operações de boot o timer não precisa mais ser
acertado pelo usuário, pois este acerto é feito automaticamente pelo
BIOS a partir da data e hora existentes no chip CMOS. |
|
IRQ1 |
Teclado.
É gerada pelo chip de interface de teclado sempre que o usuário
pressiona alguma tecla. |
|
IRQ2 |
Reservado.
Inicialmente a IBM deixou esta interrupção reservada para uso futuro, e
não fez nela nenhuma conexão. Entretanto, diversas placas de interface
passaram a usá-la, já que estava disponível, apesar da recomendação
da IBM de reservá-la para uso futuro. |
|
IRQ3 |
COM2.
É usada pela segunda interface serial, para sinalizar o final da
transmissão e da recepção de dados. A cada byte recebido pela interface
serial, uma interrupção é gerada. Ocorre também no final da
transmissão
de cada byte, indicando ao processador que o próximo byte já pode ser
transmitido. |
|
IRQ4 |
COM1.
Tem o mesmo uso da IRQ3, porém é usada pela interface serial COM1. |
|
IRQ5 |
Disco
rígido. As placas controladoras de disco rígido para XT usavam esta
interrupção para indicar a finalização de operações de acesso ao
disco rígido. Assim o processador saberia que é hora de enviar o próximo
comando. Entre essas operações podemos citar: Leitura de setor, gravação
de setor, posicionamento sobre uma trilha, formatação de trilha, etc. |
|
IRQ6 |
Drive
de disquetes. Esta interrupção era, e ainda é usada pela interface de
drives de disquetes. Serve para sinalizar o término de operações de
acesso ao disquete, como leitura, gravação, posicionamento, formatação,
etc. |
|
IRQ7 |
Impressora.
Através desta interrupção, a impressora pode informar a ocorrência
de erros (falta de papel, carro de impressão preso, etc). É também
usada para controlar o fluxo de dados entre o computador e a impressora.
Quando a impressora está com o seu buffer cheio, gera esta interrupção
para informar esta condição, fazendo com que o computador suspenda a
transmissão de dados. Quando o buffer fica parcialmente descarregado,
gera outra interrupção para informar que o computador já pode enviar
mais dados. |
Com o lançamento do IBM PC AT, equipado com o processador 80286, a IBM passou a utilizar dois controladores de interrupções ligados em cascata, como mostra a figura 15. Este arranjo continua sendo utilizado da mesma forma, com mínimas modificações, nos PCs atuais.
|
|
Figura
4.15 |
As interrupções passaram a ser usadas da seguinte forma:
|
IRQ0 |
Timer.
Mesmo uso que tinha no XT. |
|
IRQ1 |
Teclado.
Mesmo uso que tinha no XT. |
|
IRQ2 |
CASCADE.
Ligação com o segundo controlador de interrupções (ligação em
cascata). |
|
IRQ3 |
COM2
/ COM4. A IBM aumentou o número de portas seriais para um máximo de quatro,
mas não reservou interrupções exclusivas para a COM3 e a COM4. A COM4
deve usar a mesma interrupção que a COM2, enquanto a COM3 deve usar a
mesma interrupção que a COM1. Esta é uma das principais razões de
conflitos de hardware envolvendo as interfaces seriais. |
|
IRQ4 |
COM1
/ COM3. |
|
IRQ5 |
Paralela.
A IBM reservou esta interrupção para a segunda interface paralela. |
|
IRQ6 |
Interface
de drives. Mesmo uso do XT. |
|
IRQ7 |
Paralela.
Mesmo uso do XT. Normalmente esta interrupção é usada pela primeira
interface paralela (LPT1), ficando a IRQ5 para a LPT2. Entretanto, nem
sempre esta regra é seguida. Existem placas em que a LPT1 está ligada na
IRQ5. |
|
IRQ8 |
Alarm
clock. Esta interrupção está ligada ao chip CMOS, que pode ser
programado para gerar uma interrupção após um período pré-programado.
|
|
IRQ9 |
EGA
/ VGA. Originalmente esta interrupção era utilizada pela placa de vídeo
EGA, que deu lugar às placas VGA. As placas VGA podem opcionalmente, por
questão de compatibilidade com a EGA, usar também esta interrupção. |
|
IRQ10 |
Reservado.
A IBM nunca diz "livre", e sim, "reservado".
Normalmente esta interrupção está livre, e pode ser usada por novas
placas, como por exemplo, placas de rede e placas de som. |
|
IRQ11 |
Reservado.
Mesmo caso da IRQ10. |
|
IRQ12 |
Reservado.
Mesmo caso da IRQ10. |
|
IRQ13 |
Coprocessador
matemático. Esta interrupção é reservada para uso exclusivo do
coprocessador matemático. Através dela o processador pode ser informado
sobre condições anormais do cálculo, como por exemplo, a divisão por
zero e a raiz quadrada de um número negativo. |
|
IRQ14 |
Disco
rígido. No IBM PC XT, a interface do disco rígido usava o IRQ5. Nos ATs,
esta foi substituída pelo IRQ14, ficando a IRQ5 destinada à segunda
interface paralela. |
|
IRQ15 |
Reservado.
Mesmo caso da IRQ10. |
Ao lançar o IBM PC AT, a IBM passou a utilizar não apenas um número maior de interrupções, mas também um número maior de bits de dados e de endereços. Veja algumas diferenças entre os modelos XT e AT:
|
|
XT |
AT |
|
Bits
de dados |
8 |
16 |
|
Bits
de endereços |
20 |
24 |
|
Número
de IRQs |
8 |
15 |
|
Canais
de DMA |
4 |
7 |
Os bits de dados, endereços, linhas de IRQ e canais de DMA (mais adiante estudaremos o DMA) são ligados às placas de expansão através dos slots. Como o AT possuía mais bits de endereços, dados, sinais de IRQ e DMA que o XT, a IBM teve que aumentar os seus slots. O XT usava os slots “ISA de 8 bits”, e o AT passou a usar os slots “ISA de 16 bits”.
|
|
Figura
4.16 |
A figura 16 mostra um slot ISA de 8 bits. Seus sinais são numerados como A1, A2... A32 (parte direita) e B1, B2, ... B31 (parte esquerda). Com exceção do IRQ0 e IRQ1, todos os outros sinais de interrupção estão presentes neste slot. O IRQ0, como sabemos, está ligado ao Timer, um circuito localizado na placa de CPU e que não é usado por placas de expansão. O IRQ1 está ligado na interface de teclado, também localizada na placa de CPU. Como esses dois circuitos nunca ficam localizados em placas de expansão, não há necessidade da sua presença nos slots. As linhas de IRQs ficam localizadas nos pinos B4, B21, B22, B23, B24 e B25.
|
|
Figura
4.17 |
Observe a figura 17, que mostra um slot de 16 bits, típico de micros 286 e superiores, e a descrição de todos os seus sinais. Note que mesmo placas de CPU de fabricação recente, equipadas com processadores de última geração, mas que tenham slots ISA de 16 bits, seguem este mesmo padrão, herdado do IBM PC AT. A figura mostra que no conector maior estão presentes os mesmos IRQs encontrados no XT, exceto o IRQ2. No XT, o IRQ2 era ligado no pino B4 do slot (veja a figura 17). Nos PCs 286 e superiores, o IRQ2 passou a ser usado internamente pela placa de CPU, realizando a ligação em cascata dos dois controladores de interrupções (figura 15). Para que as antigas placas de expansão que usavam o IRQ2 pudessem continuar funcionando, a IBM colocou exatamente no seu lugar (pino B4) o IRQ9. Em outras palavras, o IRQ9 faz nos PCs 286 e superiores o mesmo papel que fazia o IRQ2 nos antigos micros XT. Por isso, muitos manuais costumam usar os termos "IRQ2" e "IRQ9" como sinônimos.
Cabe aqui chamar a atenção para um detalhe muito importante a respeito do uso da IRQ9. Originalmente esta interrupção era utilizada por placas de vídeo EGA, sinalizando um evento chamado retraço vertical. Esta sinalização era necessária para evitar um efeito indesejável na tela chamado “snow”.
As placas de vídeo antigas eram muito lentas. Tão lentas que sua memória de vídeo não podia ser simultaneamente acessada pelo processador e pelos circuitos que enviam os sinais para o monitor. Se este acesso fosse feito de forma simultânea, fazia com que surgissem momentaneamente pequenos traços pretos horizontais na tela sempre que o processador precisava colocar dados na memória de vídeo. Este efeito indesejável é chamado de snow. Para evitar este problema, os programas faziam acesso à memória de vídeo apenas durante o retraço vertical, que é o período no qual o feixe eletrônico do monitor atinge a parte inferior da tela e é reposicionado na sua parte superior. Como neste período o feixe eletrônico do monitor é apagado, não ocorre o snow. A placa de vídeo EGA gerava interrupções através do IRQ9 para indicar o início e o fim do retraço vertical, e muitos programas utilizavam este recurso. As modernas placas SVGA são bem mais velozes, e podem ao mesmo tempo enviar sinais de vídeo para o monitor e serem acessadas pelo processador, sem a ocorrência de snow. Por isso os programas atuais não precisam mais esperar pelo retraço vertical para acessá-la.
Por questões de compatibilidade com as placas EGA, as placas VGA e SVGA podem opcionalmente utilizar o IRQ9. Entretanto, a esmagadora maioria dos softwares modernos não necessita desta interrupção. Podemos tranqüilamente deixar o IRQ9 na placa VGA desabilitado. Assim esta interrupção ficará livre para ser usada por novas placas que desejemos instalar. A única desvantagem de desativar o IRQ9 na placa VGA é que programas gráficos bem antigos (criados entre 1985 e 1990, em geral), escritos para a placa EGA, deixarão de funcionar, e o micro "travará" sempre que forem executados. Como é pouco provável que você utilize algum programa desta época, a melhor coisa a fazer é realmente desabilitar o uso da IRQ9 na sua placa VGA. Nas placas VGA antigas, esta desabilitação era feita através de um jumper. Nos PCs modernos, podemos encontrar no CMOS Setup, um comando para ativar ou desativar o uso da IRQ9 para a placa de vídeo.
Nos PCs modernos, sejam eles equipados com slots ISA ou não, o uso das interrupções é muito parecido com o que ocorria no IBM PC AT. Por exemplo, o teclado continua usando a IRQ1, o timer continua usando a IRQ0, a IRQ13 continua sendo usada para indicar a ocorrência de cálculos inválidos pela unidade de ponto flutuante. Vejamos quais são as diferenças presentes nos PCs atuais:
|
IRQ5
e IRQ7 |
Essas
duas interrupções são reservadas para interfaces paralelas. Como na
configuração básica existe apenas uma interface paralela, apenas uma
dessas interrupções, normalmente a IRQ7, estará sendo usada. A outra,
normalmente a IRQ5, estará livre. Tome cuidado, pois em certos casos
ocorre exatamente o contrário, ou seja, a IRQ5 está em uso e a IRQ7 está
livre. Outro dado interessante é que muitas impressoras podem funcionar
sem o uso de interrupções. Portanto em caso de necessidade, podemos
configurar o Windows para que não use uma IRQ para a porta paralela,
deixando assim mais uma IRQ livre para ser usada por novas placas de
expansão. |
|
IRQ9 |
Esta
interrupção poderá estar sendo usada pela placa de vídeo. Podemos
desabilitar seu uso através de um jumper (nas placas antigas), de acordo
com as instruções existentes no manual da placa de vídeo. Em PCs
modernos, pode ser possível desabilitar o uso de interrupções pela
placa de vídeo, através de um comando do CMOS Setup. |
|
IRQ10,
IRQ11, IRQ12 |
Essas
interrupções estarão livres, já que não são usadas pelos
dispositivos que fazem parte da configuração básica de um PC. Poderão
ser usadas por placas de expansão, como modems, placas de som, placas de
rede, etc. Nos PCs atuais essas interrupções são normalmente destinadas
às placas de expansão que estão ligadas ao barramento PCI. |
|
IRQ15 |
Esta
interrupção normalmente é usada pela interface IDE secundária,
enquanto a IRQ14 é usada pela interface IDE primária. |
Podemos facilmente visualizar o uso das interrupções usando o Gerenciador de Dispositivos do Windows. Para chegar a ele basta clicar em Meu Computador com o botão direito do mouse e no menu apresentado escolher a opção Propriedades. No quadro apresentado clicamos na guia Gerenciador de Dispositivos. Clicamos em Meu Computador e Propriedades, e finalmente marcamos a opção Pedido de interrupção (IRQ). O quadro assumirá o aspecto mostrado na figura 18.
|
|
Figura
4.18 |
Este relatório informa como as IRQs estão sendo utilizadas, e indica também quais IRQs ainda estão livres para serem usadas em novas placas a serem instaladas.
A
princípio não podemos ter dois dispositivos usando o mesmo recurso de
hardware. Quando isto ocorrer, o Gerenciador
de Dispositivos colocará um ponto de exclamação sobre os dispositivos em
conflito. É o caso da IRQ5 e IRQ10, indicadas na figura 19. O ponto de
exclamação indica que pode existir um conflito de hardware, ou então que o
dispositivo não está corretamente instalado. Note que este conflito de
hardware pode ser devido a IRQ (ambos usariam a mesma IRQ), ou de DMA, ou de
endereços de memória, ou de endereços de E/S.
|
|
Figura
4.19 |
Note
entretanto que existem casos de dispositivos usarem a mesma IRQ, e mesmo assim não
estar ocorrendo conflito. Observe na figura 20 que existem três dispositivos
usando a IRQ11, e mesmo assim não existe indicação de conflito. O que isso
significa?
|
|
Figura
4.20 |
Dois
dispositivos podem usar a mesma IRQ (pelo menos se considerarmos as IRQs como
sendo de IRQ0 a IRQ15) desde que seja usado um “controlador de interrupções
terciário”. Os chipsets modernos possuem este terceiro controlador, que em
geral é diferente dos dois primeiros. Seu uso é mostrado na figura 21. Este
controlador terciário é na verdade chamado de roteador de interrupções do
barramento PCI.
|
|
Figura
4.21 |
Assim
como o controlador de interrupções secundário usa a entrada IRQ2 para gerar
novas interrupções (8 a 15), um controlador terciário existente nos chipsets
modernos e permite a geração de 4 novas linhas de interrupção, chamadas
IRQA, IRQB, IRQC e IRQD. Essas linhas são ligadas nos slots do barramento PCI.
Cada uma dessas novas IRQs pode estar conectada diretamente em outras IRQs
convencionais, mas podemos ter mais de um deles usando a mesma IRQ. No exemplo
da figura 21 temos IRQA, IRQB e IRQC ligadas em IRQ11. Para o Windows, todas
essas três entradas estão ligadas em IRQ11, porém isto não é considerado um
conflito de hardware, já que o Windows sabe que esses três dispositivos estão
conectados neste controlador terciário. Além disso existe mais um fato
importante: as interrupções no barramento PCI podem ser compartilhadas, coisa
que não era permitida no barramento ISA.
Apesar
do Gerenciador de dispositivos não indicar explicitamente os recursos IRQA,
IRQB, IRQC e IRQD, não indicará conflitos quando mais de uma dessas IRQs
estiver associada à mesma IRQ dos controladores primário e secundário. Fica
então caracterizado que não existe conflito de hardware, mesmo que no
Gerenciador
de Dispositivos estiver indicado que mais de um dispositivo usa a mesma IRQ.
Vejamos agora outro ponto importante no funcionamento de um PC, que é o DMA (Acesso direto à memória, ou Direct Memory Access). Para entender o funcionamento do DMA, observe inicialmente a figura 22. Estão sendo representadas operações de E/S feitas através do processador, ou seja, sem usar DMA. Em uma operação de saída, o processador obtém da memória o dado a ser transmitido e logo a seguir o envia para a interface, que por sua vez faz com que chegue ao dispositivo de saída. Este é o caso, por exemplo, do funcionamento da interface de impressora. Nas operações de entrada, o dispositivo envia o dado para a sua interface. A seguir o processador lê o dado da interface (a interface poderá usar uma IRQ para avisar o processador que existe um dado pronto para ser lido) e o coloca na memória para que seja posteriormente processado. Este é o caso, por exemplo, do funcionamento da interface de teclado. As operações de entrada e saída nas quais existe um envolvimento direto do processador são chamadas de Entrada e Saída Programada.
|
|
Figura
4.22 |
As operações de entrada e saída programada são usadas pela maioria dos dispositivos, mas sua eficiência não é boa quando é necessário transmitir uma grande quantidade de dados em alta velocidade. Nessas condições, o processador precisa ficar exclusivamente dedicado a esta transferência, o que impede que possa realizar qualquer outro processamento e também de realizar E/S em outros dispositivos. Por exemplo, durante a leitura de um setor de um disco rígido IDE, o processador não pode sofrer interrupções e nem transmitir ou receber dados de outros dispositivos que operem com E/S programada. Isto não chega a ser um problema na maioria das vezes, pois normalmente os programas não têm o que processar enquanto não estiverem disponíveis os dados provenientes do disco. Por outro lado, imagine o caso da reprodução de um arquivo sonoro através da placa de som. Se a placa de som operasse também com E/S programada, não poderia ser usada em conjunto com o disco IDE. Para ouvir um arquivo sonoro seria preciso transferi-lo integralmente para a memória (o que nem sempre é possível no caso de arquivos muito grandes) para depois transferi-lo para a placa de som. Esta operação poderia ser inviabilizada pela limitação no tamanho da memória. O arquivo também não poderia ser lido por partes, pois seu som ficaria com diversas pausas.
Devido às limitações da E/S programada, os PCs podem operar também com um outro tipo de operação de E/S. Trata-se da entrada e saída por DMA. Nessas operações, um circuito especial chamado de controlador de DMA faz o controle dos barramentos do processador. Para receber um dado por DMA, este controlador faz o seguinte:
1.
Desabilita momentaneamente o processador, colocando-o em tristate
2. Faz a leitura do dado da
interface que requisitou a transferência
3. Grava este dado na posição
de memória pré-programada
4. Habilita o processador para
funcionamento normal
|
|
Figura
4.23 |
Nas operações de saída, o controlador de DMA faz o seguinte:
1.
Desabilita momentaneamente o processador, colocando-o em tristate
2. Faz a leitura do dado da
memória
3.
Transmite o dado para a interface apropriada
4. Habilita o processador para
funcionamento normal
As operações de DMA são sempre feitas em blocos. Por exemplo a leitura de um setor vindo do disquete é feita desta forma. O controlador de DMA é antes programado com o número de bytes a serem recebidos (que neste caso é 512) e com o endereço de memória a partir do qual os dados serão armazenados. O controlador de DMA automaticamente conta o número de bytes recebidos e gera os endereços consecutivos onde os 512 bytes serão armazenados. Podemos ver as operações de E/S por DMA ilustradas na figura 23.
A grande vantagem do DMA é que o processador não precisa se ocupar diretamente da operação de recepção e transmissão de cada byte, ficando livre para executar outros processamentos. Normalmente as interfaces que utilizam DMA, utilizam também uma interrupção para avisar o processador sobre o término da transferência do número de bytes pré-programado.
Entre as interfaces que utilizam DMA podemos citar:
Interface de drives de disquetes
Placas controladoras SCSI
Placas de som
Placas de interface de scanner
Placas digitalizadoras de vídeo
Interface paralela operando no modo ECP
Entre as interfaces que NÃO usam DMA, podemos citar:
Interfaces seriais
Interfaces paralelas (exceto quando operam no modo ECP)
Interfaces para joystick
Interfaces de teclado
Durante as transferências de DMA, o processador não fica o tempo todo desabilitado. Entre a chegada de dois dados consecutivos de uma transferência, o processador opera normalmente. Suponha que uma determinada interface transmita dados de 1000 em 1000 ns, e que a recepção de cada um desses dados leve 100 ns. Após receber um dado, o processador tem mais 900 ns para processamento normal antes da chegada do próximo dado. Por isso o processador pode realizar, por exemplo, a leitura de um arquivo sonoro do disco rígido e ao mesmo tempo enviá-lo para a placa de som. Ao mesmo tempo em que um trecho do som está sendo tocado, o trecho seguinte estará sendo lido do disco. Isto só é possível porque as placas de som operam com DMA.
Os PCs derivados do IBM PC AT (baseados no 286, 386, 486, Pentium e superiores) podem operar com até 7 dispositivos utilizando DMA. Dizemos então que o circuito controlador de DMA implementa 7 canais de DMA. Na verdade, este circuito é formado por dois controladores de DMA, cada um sendo capaz de gerenciar 4 canais. Esses dois controladores estão ligados em cascata, e um dos canais é utilizado nesta ligação, sobrando apenas 7. Os oito canais e seus usos são os seguintes:
DMA0:
Livre
DMA1: Livre
DMA2: Interface de drives de disquete
DMA3: Livre
DMA4: [CASCADE]
DMA5: Livre
DMA6: Livre
DMA7: Livre
Um PC que ainda está com a sua configuração básica, possui os canais 0, 1, 3, 5, 6 e 7 livres. À medida que placas de expansão vão sendo instaladas, é preciso escolher canais de tal forma que não ocorram conflitos, ou seja, nunca devemos deixar que duas placas utilizem o mesmo canal de DMA. Placas Plug-and-Play (PnP), quando usam DMA, têm seus canais escolhidos de forma automática pelo Windows, durante o processo de instalação. No caso de placas que não são PnP (modelos antigos), cabe ao usuário fazer a escolha dos canais.
No Windows podemos visualizar os canais de DMA que estão em uso, através do Gerenciador de Dispositivos, como mostra a figura 24. Neste exemplo, além dos canais DMA2 e DMA4, que estão sempre ocupados em qualquer PC, temos ainda os canais DMA1 e DMA5 sendo utilizados pela placa de som.
|
|
Figura
4.24 |
O barramento PCI não opera com DMA. Ao invés disso, utiliza um outro método de transferência de dados com características parecidas com o DMA, porém com velocidade muito mais elevada. Este método é o Bus Mastering. Várias interfaces ligadas ao barramento PCI utilizam este recurso, por exemplo:
Placas de rede
Placas de som
Placas de vídeo AGP
Interfaces IDE
Interfaces USB
Controladoras SCSI
Digitalizadoras de vídeo
Na técnica de Bus Mastering, uma interface qualquer assume o controle do barramento, passando a operar como Master, e envia ou recebe os dados diretamente de uma outra interface ou dispositivo que opera como Target, que pode ser por exemplo, a memória. Enquanto uma transferência está sendo realizada desta forma, o processador fica com o barramento que o liga à memória livre na maior parte do tempo, podendo assim continuar trabalhando ao mesmo tempo em que a transferência é feita. Apresentaremos essas informações em detalhes quando estudarmos o barramento PCI.
Para efeitos de detecção e eliminação de conflitos de hardware, aqui está uma notícia boa: o Bus Mastering não gera conflitos de hardware, como pode ocorrer com o DMA.
Aproveitando nossos conhecimentos de eletrônica, mostraremos agora como funcionam dois circuitos importantes de uma placa de CPU. São os circuitos de clock e reset. O circuito gerador de clock fornece em sua saída uma onda quadrada com uma freqüência específica. Nas placas de CPU, o processador deve receber uma onda quadrada que representa o seu clock externo. Internamente esta freqüência será multiplicada, resultando no seu clock externo. O circuito de RESET gera um pulso que é enviado para a entrada RESET do processador. Este pulso deve ser ativado quando pressionamos a tecla Reset do gabinete, e também quando ligamos o computador (Power on Reset).
O cristal de quartzo é o principal componente usado na geração de um clock. Ele tem a capacidade de entrar em ressonância em determinadas freqüências, quando ligado a amplificadores apropriados. A freqüência de ressonância pode ser determinada a partir das dimensões do cristal. Quanto mais fino, mais elevada é a freqüência. A figura 25 mostra um circuito gerador de clock simples, que utiliza um cristal, dois inversores, dois capacitores e um resistor. O sinal de clock gerado por este circuito terá freqüência igual à freqüência de ressonância do cristal. Está fora do escopo deste livro analisar este circuito e provar que ele realmente oscila. Isto exigiria conhecimentos de eletrônica e matemática ainda mais profundos que os propostos neste livro.
|
|
Figura
4.25 |
O circuito da figura 25 é capaz de oscilar em uma única freqüência. Ele não pode ser usado em casos nos quais é preciso ter um clock variável. Por exemplo, as placas de CPU modernas, para processadores Celeron e Pentium III, devem ser capazes de operar com clocks externos de 66, 100 e 133 MHz. Um oscilador para esta placa deveria ser capaz de gerar essas três freqüências, de acordo com o processador utilizado. Um método para fazer isso seria utilizar 3 osciladores independentes, um para 66, outro para 100 e outro para 133 MHz. Um método ainda melhor, e que é realmente aplicado na prática, é utilizar um gerador de clock programável.
|
|
Figura
4.26 |
A figura 26 mostra um chip gerador de clock. Esses chips sempre trabalham ligados a um cristal que é usado como referência para as freqüências que serão geradas. Eles geram clocks independentes para o processador e para os diversos barramentos usados na placa de CPU.
|
|
Figura
4.27 |
A figura 27 mostra o funcionamento de um gerador de clock. Ele usa um oscilador a cristal como referência. Normalmente o cristal é de 14,31818 MHz, por razões históricas. Este era o cristal usado na geração da freqüência de 4,77 MHz do IBM PC original, e dos 3,58 MHz usados na geração de vídeo composto NTSC, pelas antigas placas de vídeo que eram ligadas a TVs. O clock desejado é gerado por um VCO (oscilador controlado por voltagem). O clock gerado é dividido digitalmente por um número programável n, e o resultado é comparado com a freqüência gerada pelo oscilador a cristal. O resultado da comparação é usado para controlar o VCO. Quando a freqüência do cristal e a freqüência gerada, dividida por n, estão em fase, o VCO ficará estável e manterá a freqüência fixa. Portanto o circuito ficará estável quando:
F/n = fcristal
Ou seja:
F = n x fcristal
Programando o valor de n podemos fazer com que o circuito gere qualquer freqüência, múltipla de 14,31818 MHz. Por exemplo, com n=7 temos
F=100,22726 MHz
O circuito mostrado tem um pequeno inconveniente. Como o valor de n só pode ser um número inteiro, a freqüência gerada será sempre múltipla de 14,31818 MHz. Não seria possível desta forma gerar freqüências como 66 MHz, por exemplo (na verdade os “66 MHz” são 66,666 MHz). Isso pode ser resolvido facilmente, adicionando um divisor na saída do oscilador a cristal. O valor enviado para o comparador de fase não seria 14,31818 MHz, e sim um valor bem menor. Por exemplo, se usamos na saída do oscilador a cristal um divisor 256, teremos:
F/n = fcristal/256
F = n x fcristal/256
Se fizermos n=1788 teremos F=100,0035 MHz, valor bem mais próximo dos 100 MHz ideais. Se fizermos n=1192 teremos F=66,669 MHz, valor bem próximo dos 66,666 MHz ideais.
Em um chip gerador de clock existem vários circuitos como o da figura 27, sendo um para cada freqüência gerada. Apenas o oscilador a cristal é comum a todos esses circuitos.
Todas as placas de CPU possuem um circuito de RESET. Este circuito tem como finalidade enviar um sinal RESET para o processador em duas situações:
1)
Quando o usuário pressiona o botão RESET do gabinete
2) No instante em que o computador é ligado
É necessário gerar um RESET automático quando o computador é ligado (Power on Reset) porque neste instante os bits armazenados no interior do processador e dos demais circuitos têm valores aleatórios. O Reset faz com que todos esses bits sejam preenchidos com valores conhecidos, assim o processador não fica “perdido”.
Quando o computador está em uso normal, o capacitor C1 estará carregado com uma tensão igual a Vcc. Seu carregamento foi feito pela corrente que passa pelo resistor R1. O ponto X estará representando um bit 1, e este mesmo bit 1 será enviado ao ponto de saída do circuito. O componente em forma de triângulo é um buffer. Trata-se de um operador lógico que gera na saída um bit igual ao da entrada. Portanto em uso normal o sinal RESET estará com o valor 1. Normalmente o comando de RESET ocorre quando o processador recebe na sua entrada RESET, um bit 0.
|
|
Figura
4.28 |
Digamos que o usuário pressiona o botão RESET do gabinete. Isto fará com que o capacitor C1 seja imediatamente descarregado, e a tensão no ponto X será zero volts, o que corresponde a um bit 0. Este bit 0 será transmitido pela saída do circuito, resetando o processador e os demais componentes do computador. Quando o usuário solta o botão Reset, o capacitor C1 será carregado através do resistor R1. O tempo de carregamento do capacitor depende dos valores de R1 e C1. Quanto maiores forem seus valores, maior será o tempo de carga. Durante o carregamento do capacitor, sua tensão atinge um valor que passa a ser considerado como um bit 1, o que irá colocar a saída RESET também em 1. Este é o fim do período de Reset, que dura cerca de 1 segundo, mas pode variar um pouco de uma placa para outra.
Quando o computador é desligado, a tensão Vcc passa a assumir um valor de 0 volts. Isto fará com que o capacitor C1 seja rapidamente descarregado através do diodo D1. Este capacitor passará a ter uma voltagem de 0 volts.
Digamos que agora o computador é ligado. Neste exato instante o capacitor está descarregado, o que representa um bit 0. O sinal RESET na saída do circuito será um bit 0, o que vai resetar o processador e demais circuitos do computador. Como o resitor R1 está ligado a Vcc, passará por ele uma corrente que irá aos poucos carregar o capacitor C1, elevando o valor da sua tensão. Quando esta tensão ultrapassa o valor mínimo para um bit 1, o sinal RESET passará a fornecer também um bit 1, e estará terminado o pulso de RESET. A duração deste pulso depende dos valores de R1 e C1.
Você já deve ter visto computadores que não resetam corretamente quando são ligados, obrigando o usuário a pressionar o botão Reset logo assim que o PC é ligado. O motivo da falha é que o pulso de Reset não tem duração suficiente para resetar o processador e os demais circuitos do computador. Uma solução para este problema é descobrir na placa de CPU onde estão localizados os componentes R1 e C1, e trocar um deles por outro de valor maior. Por exemplo, se usamos ao invés de R1 um resistor duas vezes maior, o pulso de Reset terá uma duração também duas vezes maior, aproximadamente, o que pode resolver o problema. Para encontrar os componentes R1 e C1 é preciso seguir o circuito a partir do conector de Reset da placa de CPU, com o auxílio de um multímetro.
/// FIM ///
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.