Você está na página 1de 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

Mecanismos de Interrupo do CPU

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.

110

Mecanismos de Interrupo do CPU


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, ...

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

Mecanismos de Interrupo do CPU


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)

115

Mecanismos de Interrupo do CPU

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

116

Mecanismos de Interrupo do CPU


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.

117

Mecanismos de Interrupo do CPU

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.

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

Mecanismos de Interrupo do CPU


Prioridade das Interrupes:
O que acontece se ocorrerem duas interrupes simultaneamente? Nesse caso ser atendida a interrupo de mais alta prioridade.

Interrupo
Diviso por Zero NMI INTR Passo a Passo

Prioridade
Mais Elevada

Mais Baixa

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

Você também pode gostar