Anda di halaman 1dari 6

5.2.

Interrupções

5.2.1 Introdução
A transferência de dados do periférico para o microprocessador, que é inicializado pelo
microprocessador, terá lugar quando
• O periférico tiver activado o bit de estado que indica que o dado já está pronto
para ser transferido, e
• O microprocessador tiver descoberto que o bit de estado do periférico foi
activado.

Isso significa que o microprocessador deve continuamente amostrar a linha de dados


prontos em antecipação à activação do bit de estado, e consequentemente se estiver
activo abstêm-se de realizar qualquer outra tarefa para atender ao periférico. Este
procedimento é denominado Polling. O polling consome muito espaço de memória e
tempo do microprocessador; e pode-se verificar a linha de dados à cada poucos
microsegundos, quando a entrada só ocorre uma vez em cada seis mêses.

Outra situação é o processador activar um sinal que indica ao exterior o momento de


manipulação dos dados. O mundo real nem sempre adequa-se à esta situação ideal.
Por exemplo, se a entrada representa uma condição perigosa que ocorre
repentinamente, então o microprocessador não a detectará até o programa voltar ao
ponto de leitura, resultando em problemas graves.

Um método eficaz para a inicialização do processo de transferência é permitir que o


periférico indique directamente ao microprocessador que está pronto transferir dados,
activando uma interrupção.
O microprocessador pode então temporariamente suspender a operação presente,
confirmar a interrupção e aceitar a transferência de dados. No fim da transferência o
microprocessador retornará ao programa ao original no ponto da interrupção e
continuará com a sua execução.

A interrupção pode também ser gerada internamente ao sistema em caso de erro de


operação ou single step. As interrupções geradas internamente ao sistema são
denominadas Traps.

5.2.2 O processo da Interrupção


Para inicializar a transferência de dados, o periférico activará o seu flip-flop de serviço
de interrupção, que possuí a saída conectada directamnte ao terminal de interrupção
do microprocessador. O flip-flop armazena o sinal de interrupção na sua saída até o
tempo em que o microprocessador confirmará e efectuará o clear do flip-flop. Um
sistema simples de interrupção operando nos princípios descritos é mostrado na fig 1.1.

Uma vez que a requesição da interrupção pode ocorrer em qualquer instante é


assíncrona.
Ao receber o sinal de interrupção, o microprocessador completa a execução da
instrução corrente, confirma a interrupção e e automaticamente grava o conteúdo do

Página 1 de 6
program counter no stack. O microprocessador entra agora na routina de serviço à
interrupção, que pode ser vista como uma subrotina iniciada externamente.

Fig 1.1. Sistema simples de Interrupção

5.2.3 Interrupções Mascarável e Não-mascarável


Existem dois tipos de interrupção:
a) A Interrupção Não-Mascarável (NMI), e
b) A Interrupção Mascarável (INT).

Os dois tipos de interrupção são alimentados à uma porta OR, como mostra a figura
1.2, onde são combinados para gerar um único sinal de interrupção mestre. A
interrupção não-mascarável é alimentada directamente para esta porta enquanto que a
interrupção mascarável atravéz de uma porta AND habilitadora cuja saída é controlada
pelo flip-flop 1 habilitador da interrupção INT.

Fig 1.2. Interrupções mascarável e não-mascarável

Página 2 de 6
Este flip-flop 1 é controlado por sinais inicializados pelo programa. O sinal enable
interrupt é gerado por escrever a instrução EI no programa e disable interrupt é gerado
por DI.

Ambas interrupções são normalmente activas em Low. A NMI é activa no flanco


descendente, enquanto que INT é activa no nível Low.

5.2.3.1. A Interrupção Não-Mascarável (NMI)


Quando ocorre a NMI de qualquer fonte o processador responde do seguinte modo:

1. Disactiva o flip-flop 1 de controle da interrupção INT, e guarda o estado num


Flip-Flop 2, para que possa restaura-lo quando retornar da routina de serviço à
NMI.

2. Carrega o program counter com o endereço 0066, que corresponde à área do


programa de monitoramento.
O programa de monitoramento executado tem a função de identificar se a
interrupção foi originada por um sinal interno ao sistema ou por um sinal do usuário
e realizar a acção requerida pela interrrupção do sistema ou pelo usuário.

No caso da interrupção gerada pelo usuário, este deve providenciar a routina de


serviço à interrupção não mascarável que satisfaz às suas necessidades.
O endereço do início da routina de serviço à interrupção deve ser armazenado em um
par especial de locais de memória. Estes são chamados de Vectores.
Os vectores permitem ao programa de monitoramento transferir o controle para a
routina de serviço à interrupção.

No caso específico do Kit Laboraorial MAT980, os vectores são:


• Byte menos significativo na localidade 414D
• Byte mais significativo na localidade 415E

Para retornar da routina de serviço à interrupção, usa-se a instrução RETN. Esta


instrução irá restaurar o estado anterior do flip-flop 1 de controle da interrupção
mascarável.

5.2.3.2. A Interrupção Mascarável (INT)


A interrupção mascarável pode operrar em três modos, que são escolhidos usando as
instruções IM0, IM1, ou IM2 respectivamente.
No modo 1 a operação é similar à de NMI, deferindo nos vectores usados.
• Byte menos significativo na localidade 416C
• Byte mais significativo na localidade 416D

No modo 0, o dispositivo periférico, deve colocar uma instrução no barramento de


dados para o microprocessador executar.

Página 3 de 6
No modo 2, um vector deve ser formado apartir do conteúdo do registo I e do dado que
o periférico coloca no barramento de dados.

5.2.4. Examinação da linha de Interrupção pelo processador


A política geral observada quando ocorre uma interrupção é completar a instrução
corrente antes de transferir o controle para a routina serviço à interrupção. Um
fluxograma descrevendo a técnica de transferência é fornecido na fig 1.3.

O microprocessador deve efectuar duas decisões antes de servir à interrupção.


Primeiro deve decidir se o presente ciclo de máquina é o último associado à presente
instrução, e em segundo ponto deve decidir se existe uma interrupção válida presente
na linha de interrupção. Se a reposta fôr afirmativa em ambos casos, o
microprocessador pode entrar no ciclo de máquina de confirmação de interrupção, e
transferir o controle para a routina de serviço à interrupção. O ciclo de máquina de
confirmação de interrupção permite a busca do vector do dispositivo periférico e o
número destes ciclos depende do modo de interrupção em uso.

Inicio

Fetch de instrução e
descodificação

Execução da
instrução

Últim Não
o
c/m

Sim

Existe Não
Interrupçã
o

Sim
c/m: ciclo de máquina
Serviço de
Interrupção

Fig 1.3.Fluxograma para a examinação de uma instrução

5.2.5. Transferência do controle para a routina de serviço à interrupção


Existem várias maneiras de transferir o controle do programa principal para a routina de
serviço à interrupção. Três métodos comuns são:

Página 4 de 6
1. Carregar o program counter com um valor predefinido e transferir o conteúdo
original para o stack pointer.

2. Introduzir uma instrução CALL apartir de um hardware externo. O segundo e o


terceiro Bytes da instrução fornecem o endereço inicial da routina de serviço à
interrupção. Este endereço é inicialmente colocado em memória temporária no
microprocessador até o conteúdo do program counter ser transferido para o
stack pointer. Posteriormente o endereço inicial da routina de serviço à
interrupção é transferido para o program counter.

3. Buscar o endereço inicial da routina de serviço à interrupção de um local


específico da memória e inserir este endereço no program counter. Este local de
memória é acessado quando um sinal de interrupção é recebido, como no ponto
anterior, o conteúdo corrente do program counter é transferido para o stack
pointer.

5.2.6. Preservação e Restauração do estado da máquina


No momento da interrução, o acumulador, registos e o program counter podem conter
informação que será requerida no fim da routina de serviço à interrupção. A informação
especificada acima é camada de Estado da máquina. No início da da interrupção o
estado da máquina deve ser gravado, e no fim da interrupção deve ser restaurado. A
técnica comumente usada na preservação do estado da máquina é colocar
temporiarmente o conteúdos dos registos numa área do stack.
Um método alternativo na preservação do estado da máquina é gravar os conteúdos
nos registos nos registos alternativos. Este método possuí a vantagem de uma rápida
restauração do estado; portanto, uma vez usados os registos alternativos, não mais
estão disponíveis para atender à interrupções subsequentes.

5.2.7. Identificação da fonte de interrupção


Quando o microprocessador é usado em conjução com um número de periféricos, uma
das suas funções é identificar a fonte de interrupção. Alguns processadores não tem
mais que uma linha de interrupção; o Z80 possuí duas linhas.
Nesse casos várias interrupções são combinadas em uma porta OR para formar uma
interrupção mestre que subsequencialmente é alimenteda ao pino de interrupção do
processador.

Existem duas técnicas comumente usadas na identificação da fonte de interrupção


mestre, nomeadamente Polling e Vectoring.
Polling é um método de identificação usando software, enquanto que vectoring
corresponde à aproximação correspondente em hardware.

Na técnica Polling, o periférico, ao requerer a interrupção, deve colocar em simultâneo


um código no barramento de dados que será usado pelo processador na identificação
da fonte.
É necessário estabelecer prioridade, e essa depende da ordem em que serão testados
os códigos no programa.

Página 5 de 6
Na técnica Vectoring, a identificação da fonte de interrupção pode ser feita usando a
ligação Daisy-Chain, na qual o sinal de confirmação da interrupção é propagado do
periférico mais prioritário ao menos, parando no primeiro que encontrar activo,
servindo-o e desactivando-o.

5.2. Bibliografia
• B. Holdsworth-Microprocessor Engineering, Butterworths.
• John P. Hayes – Computer Architecture and Organization, second edition,
McGRAW-HILL.
• Zilog – Z80 Family CPU User Manual.

Página 6 de 6

Anda mungkin juga menyukai