Home » Artigos arquivados » 2003 – Arquitetura de PCs

2003 – 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.

O que é a arquitetura de PCs

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.
Mapas de memória e de E/S

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:

HARD-061

Figura 4.11
Barramentos e sinais de controle envolvidos nas operações de leitura e escrita do processador.

 

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 valo­res 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.

HARD-062

Figura 4.12
Mapa de memória e mapa de E/S.

 

 

 

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)”.

0413

Figura 4.13
Mapa de E/S apresentado pelo Gerenciador de Dispositivos do Windows.

 

 

 

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
000-01F 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

Interrupções

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.

HARD-063

Figura 4.14
Uso das interrupções no IBM PC XT.

 

 

 

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.

HARD-064

Figura 4.15
Uso de interrupções nos PCs modernos.

 

 

 

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 inter­rupções (ligação em cascata).
IRQ3 COM2 / COM4. A IBM aumentou o número de portas seriais para um máximo de qua­tro, 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”.

0416

Figura 4.16
Sinais de um slot ISA de 8 bits.

 

 

 

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.

0417

Figura 4.17
Sinais de um slot ISA de 16 bits. Observe que as novas linhas de interrupção (IRQ10-IRQ15) ficam localizados no conector menor. Observe ainda que no lugar da IRQ2, no pino B4, temos a IRQ9.

 

 

 

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ôni­mos.
O uso da IRQ9

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 en­viar 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 mai­oria 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.
Uso das IRQs nos PCs atuais

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.

0418

Figura 4.18
Relatório de uso das IRQs.

 

 

 

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.
Compartilhamento de interrupções

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.

0419

Figura 4.19
Dispositivos em conflito de hardware.

 

 

 

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?

0420

Figura 4.20
Interrupções compartilhadas.

 

 

 

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.

HARD-065

Figura 4.21
Interrupções nos PCs atuais, equipados com controlador terciário.

 

 

 

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.
Acesso direto à memória

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.

HARD-066

Figura 4.22
E/S programada. O processador controla o “transporte” dos dados entre a memória e a interface.

 

 

 

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

HARD-067

Figura 4.23
E/S por DMA. O processador fica em tristate enquanto o controlador de DMA assume o controle dos barramentos e faz as transferências.

 

 

 

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 dire­tamente 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.

0424

Figura 4.24
Visualizando o uso dos canais de DMA com a ajuda do Gerenciador de Dispositivos.

 
Bus Mastering

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.
Circuitos de clock e reset

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).
Como funciona um gerador de clock

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.

HARD-068

Figura 4.25
Circuito gerador de clock.

 

 

 

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.

HARD-069

Figura 4.26
Gerador de clock e cristal de referência.

 

 

 

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.

HARD-070

Figura 4.27
Gerador de clock programável.

 

 

 

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.
Como funciona o Reset

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.

HARD-071

Figura 4.28
Circuito de RESET.

 

 

 

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.