You are on page 1of 10

Mecanismos de Interrupo do CPU

Interrupes
Uma interrupo equivalente a uma chamada de procedimento. A
chamada equivalente a um CALL gerado pela execuo de uma
instruo.
As interrupes so casos especiais de chamadas de procedimentos.
Em ambos os casos o procedimento que executado designa-se rotina de
servio interrupo ou interrupt handler.
O retorno do procedimento ou rotina de servio interrupo feito com a
instruo IRET.
109
As interrupes possveis numa CPU so normalmente pr-definidas numa
TABELA DE VECTORES DE INTERRUPO.
Um VECTOR DE INTERRUPO um nmero de 4 bytes. A tabela de
vectores de interrupo est armazenada nos primeiros 1K de memria
(endereos de 0 a 3FFh).
Existem 256 vectores diferentes de interrupo.
Cada vector contem o endereo do procedimento de servio interrupo
(valores para IP e CS). Primeiros 2 bytes tm o IP e os 2 ltimos bytes o
CS.
Mecanismos de Interrupo do CPU
110
Os primeiros 32 VECTORES DE INTERRUPO so RESERVADOS e
utilizados presentemente pelo fabricante Intel e sistemas de operao (ou
explorao).
Os restantes vectores de 32-255 esto disponveis para o utilizador.
Alguns vectores reservados so para condies de excepo que
ocorrem na execuo das instrues: diviso por zero, overflow, ...
Mecanismos de Interrupo do CPU
111
Mecanismos de Interrupo do CPU
O manuseamento correcto de interrupes requer:
desactivao prvia de interrupes
iniciao do vector de interrupo para o handler apropriado
activao das interrupes
O gestor (handler) de uma interrupo deve:
verificar o estado da flag de interrupes
guardar o contexto (registos, flags e tudo o mais que for manipulado)
bloquear as interrupes que possam interferir com o processamento do gestor
permitir as interrupes que no causam interferncias (ex. relgio do sistema)
determinar a causa da interrupo e tomar as aces apropriadas
restaurar o contexto previamente guardado
desbloquear as interrupes previamente inibidas
retornar ao processo interrompido
112
Mecanismos de Interrupo do CPU
Aquando de uma interrupo:
Para alm do tempo da chamada e
execuo da rotina de servio
interrupo, o programa no foi afectado
pelo funcionamento desta.
A comunicao entre a rotina e o
programa no pode ser feita por registos,
pois estes pertencem ao estado do
processador, que deve ser preservado.
113
Mecanismos de Interrupo do CPU
As interrupes so tipicamente causadas por eventos externos
CPU, tais como:
operaes de entrada/sada
deteco de faltas de hardware
situaes catastrficas (falha de energia)
As interrupes podem estar associadas a 3 tipos de eventos:
interrupes internas
interrupes externas
interrupes de software
114
Interrupes internas (da interrupo 0 interrupo 4)
NMI (Interrupes no mascarveis)
Excepes
Interrupes externas ou de hardware:
desencadeadas por perifricos ou coprocessadores
ligadas ao NMI ou INTR:
NMI
reservado para catstrofes (falha de energia, erro de memria)
INTR
CPU procura o vector
PIC coloca-o no barramento; multiplexa fontes (XT - 1 PIC: 8 fontes)
(AT - 2 PIC: 16 fontes)
Mecanismos de Interrupo do CPU
115
Interrupes de software:
so meras instrues assembly do CPU - INT n
geram um apontador para uma posio da tabela de vectores de interrupo tal
como uma interrupo de hardware.
Exemplo:
IRQ0 - salta para a posio 08h da tabela de vectores de interrupo
INT 8 - emula o IRQ0, saltando para a mesma posio da tabela
O MS-DOS utiliza as interrupes de software 20h a 3Fh para comunicao com
os seus mdulos e com as aplicaes
Mecanismos de Interrupo do CPU
116
Interrupes de software (continuao):
Cada instruo INT tem associado um nmero de 0 a 255. Por exemplo INT
100, corresponde ao vector de interrupo 100 e encontra-se nos endereos de
memria 190H - 193H.
As interrupes de software so utilizadas para chamar procedimentos do
sistema, dado que no necessrio conhecer o endereo da funo do sistema.
Estes procedimentos so comuns a todos os sistemas e aplicaes de software.
A instruo IRET permite o retorno ao programa principal. O mesmo que um
POPF seguido de um RET.
O IRET carrega da stack o estado anterior das flags IF e TF.
A instruo STI permite receber interrupes. A instruo CLI desabilita as
interrupes.
Mecanismos de Interrupo do CPU
117
Interrupes por hardware
O pino INTR utilizado para desencadear, atravs de um sinal externo, um dos
256 tipos de interrupo (geralmente entre 20H - 0FFH).
Estas interrupes podem ser mascaradas, atravs da colocao a zero da flag
IF pela instruo CLI. Pode ser habilitada atravs da instruo STI.
Mecanismos de Interrupo do CPU
118
Mecanismos de Interrupo do CPU
Se a entrada NMI estiver activa, ocorre uma interrupo do tipo 2.
O sinal INTA , tambm, um pino de interrupo, no entanto, utilizado como sada
para responder ao pedido efectuado em INTR de modo a ser colocado, pelo perifrico,
o nmero do tipo de vector de interrupo no barramento de dados D7 - D0.
119
Prioridade das Interrupes:
O que acontece se ocorrerem duas interrupes simultaneamente?
Nesse caso ser atendida a interrupo de mais alta prioridade.
Mais Elevada
Mais Baixa
Prioridade
Diviso por Zero
NMI
INTR
Passo a Passo
Interrupo
Supondo que o pino INTR se encontra habilitado, e que recebe um sinal de
interrupo durante uma operao de diviso que resulta numa diviso por
zero. Como a interrupo gerada internamente (interrupo tipo 0) tem maior
prioridade que a interrupo gerada pelo pino INTR, ser atendida a interrupo
interna.
Mecanismos de Interrupo do CPU
120
Mecanismos de Interrupo do CPU
Controlador de Prioridades de Interrupes (PIC)
Se colocarmos o NMI a detectar as interrupes originadas por falhas de
energia, apenas sobra o pino INTR para receber todas as outras interrupes
(teclado, impressora, rato, etc.).
De modo a evitar este problema recorre-se utilizao de um controlador de
prioridades de interrupes (PIC) o 8259A.
121
Mecanismos de Interrupo do CPU
Controlador de Prioridades de Interrupes (PIC)
Quando o 8259A recebe um sinal de interrupo num dos seus pinos de IR#,
envia para o pino INTR do processador um sinal de interrupo. Se IF = 1, o
processador responde interrupo:
1 - efectua um ciclo de reconhecimento de interrupo no pino INTA e
prepara o bus de dados para receber informao;
2 - efectua um segundo ciclo para informar o 8259A que pode enviar o
informao sobre o tipo de interrupo. Este valor colocado nas 8 linhas
menos significativas do barramento de dados;
3 - efectua o procedimento normal de resposta a uma interrupo.
A vantagem da utilizao do PIC a possibilidade de converter vrias linhas
de pedido de interrupo para uma s, sem lgica adicional.
122
Mecanismos de Interrupo do CPU
Controlador de Prioridades de Interrupes (PIC)
PIC 8259A
123
Mecanismos de Interrupo do CPU
Controlador de Prioridades de Interrupes (PIC)
Podemos interrogar-nos sobre o que acontece se ocorrerem dois pedidos
simultneos de interrupo nas linhas IR#.
Se o PIC estiver a operar no modo de prioridades fixas, a prioridade mais
elevada dos pedidos de interrupo ordenada de IR0 para IR7.
O registo interrupt mask tem como funo habilitar ou desabilitar entradas de
interrupo. Cada bit deste registo corresponde a uma entrada.
O registo interrupt request verifica qual a linha de entrada que pede uma
interrupo. Cada bit deste registo corresponde a uma entrada.
O registo in-service indica qual a linha de interrupo que est a ser servida.
O priority resolver define se, e quando que, uma das entrada IR#
servida.
124
Mecanismos de Interrupo do CPU
Controladores de Prioridades de Interrupes Master e Slave - Modo
de funcionamento:
Se o slave receber um pedido de interrupo, e se estiver habilitado, envia
um sinal para uma entrada IR# do master.
Se o sinal tiver maior prioridade que qualquer outro, o master envia um sinal
para a entrada INTR do processador.
O processador envia dois sinais de INTA para os dois PIC. O slave ignora o
primeiro sinal e o master coloca nos pinos CAS# a identificao do slave,
habilitando o PIC slave.
Quando o slave recebe o segundo pulso do INTA coloca no barramento de
dados o nmero da interrupo pedida.
125
Mecanismos de Interrupo do CPU
Controladores de Prioridades de Interrupes Master e Slave - Modo de
funcionamento:
A interface com os PICs conseguida atravs das portas 20h/0A0h e 21h/0A1h.
O primeiro endereo em cada par o endereo do PIC master (IRQ 0 - 7); O
segundo endereo de cada par corresponde ao PIC slave (IRQ 8 - 15).
A porta 20h/0A0h refere-se a uma localizao de escrita / leitura a partir da qual
possvel escrever comandos no PIC e ler o estado dos seus registos.
A porta 21h/0A1h refere-se a uma localizao de escrita / leitura que contm o registo
da mscara de interrupes.
No registo da mscara de interrupes, um 0 activa a linha e um 1 desactiva a linha de
interrupo.
Cuidado! Quando se alteram os bits do registo da mscara de interrupes, no se
deve escrever o valor directamente na porta 21h/0A1h; deve-se comear por ler o valor
actual e depois efectuar operaes AND e OR para alterar os bits desejados e s
depois escrever o valor em 21h/0A1h.
126
Mecanismos de Interrupo do CPU
Controladores de Prioridades de Interrupes Master e Slave - Modo
de funcionamento:
Registo da mscara de interrupes
Tabela de IRQs
127

You might also like