A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

EA869 Interrupção Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.

Apresentações semelhantes


Apresentação em tema: "EA869 Interrupção Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1."— Transcrição da apresentação:

1 EA869 Interrupção Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1

2 Objetivos Definir o conceito de interrupção. Diferenciar interrupções de subrotinas. Conhecer as diversas estratégias para implementar interrupções. Aprender a instalar interrupções na memória. 2

3 Recordando No tópico anterior, vimos como desviar a execução de um programa através de chamadas de subrotinas. Utilidades: (1) eliminar redundâncias, (2) reutilização de código para diferentes entradas de dados, (3) decompor problemas grandes em pequenas partes (modularização), entre outras. Entretanto, nem sempre a mudança do fluxo normal de execução de um programa acontece de forma programada, como ocorre no caso de subrotinas. 3 Quais condições podem acarretar a interrupção da execução de um programa? Mouse, teclado, sensores, telas touchscreen, ou sinais internos (reset) podem interromper a execução da CPU para o atendimento dos seus eventos. Atendimento de eventos externos e internos

4 Exemplo Vamos supor que você esteja jogando 2048 no seu smartphone e alguém resolve ligar para você. 4 Controlador CPU MEM PROG GSI Gerador de Sequência de interrupção: é o hardware dentro do controlador que irá receber o sinal de interrupção, interromper a execução do programa e desviar para a ROTINA DE SERVIÇO DE INTERRUPÇÃO (RSI), a qual é responsável por atender e tratar o evento que gerou a interrupção. RSI

5 Interrupção Definição: 5 INTERRUPÇÃO É a quebra da sequência normal de operação de forma a atender eventos especiais, tais como:  Entrada de dados vindos de periféricos.  Atendimento de sinal de sensor.  Sinais internos. INTERRUPÇÃO É a quebra da sequência normal de operação de forma a atender eventos especiais, tais como:  Entrada de dados vindos de periféricos.  Atendimento de sinal de sensor.  Sinais internos. Como o processador descobre que um evento quer interrompê-lo? Através de um sinal de interrupção enviado ao GSI por linhas de interrupção Cada linha de interrupção está associada a um dispositivo (ou a um conjunto deles) que envia o sinal de interrupção quando deseja ser atendido.

6 Vejamos agora o atendimento de uma interrupção: Interrupção 6 MOV R0, #200 MOV R0, #100 MOV R0, #300 MOV (R0), R3 MOV R1, (R0)+ MOV R2, (R0)+ ADD R3, R1, R2 MOV R1, (R0)+ MOV R2, (R0)+ ADD R3, R1, R2 MOV (R0), R3 RTI RSI: MOV R1, (R0)+ MOV R2, (R0)+ ADD R3, R1, R2 BUSCA EXECUÇÃO SINAL DE INTERRUPÇÃO  Ao aparecer um sinal de interrupção: 1. Controlador termina de executar a instrução corrente. 2. GSI salva o estado atual da máquina e o endereço de retorno, desviando, então, a execução do programa para a rotina de serviço de interrupção (RSI). 3. Ao terminar de executar a RSI, o controlador restaura o estado anterior à interrupção e volta a executar o programa principal. O que vai acontecer? Para que tudo isto ocorra, quais microoperações o GSI deve realizar?

7 Gerador de sinais de interrupção (GSI):  É um dispositivo do controlador que, ao receber um sinal de interrupção, salva o estado atual do processador (Registrador de Estado ou PSW), assim como o endereço de retorno, e desvia a execução do programa para a rotina de serviço de interrupção (RSI).  Arquitetura: Interrupção 7 D Q CLR Q EXECUÇÃOBUSCA GERADOR DE SEQUÊNCIA DE INTERRUPÇÃO PARTIDA...    sinais de controle sinal do fim da sequência de micro- comandos sinal do fim da sequência de micro- comandos C.O. sinal de interrupção Flip-Flop de Interrupção sinais de controle

8 Atendimento de uma interrupção:  Armazenar o conteúdo do PC para posterior retorno ao programa interrompido (endereço de retorno).  Armazenar o estado corrente do processador para restaurar, após o retorno, a situação (o cenário) existente no momento da interrupção.  Desviar o controle o controle de execução para a rotina de serviço de interrupção (RSI). Interrupção 8 Onde iremos armazenas essas informações? PILHA! SINAIS DE CONTROLE DO GSI PUSH PC PUSH PSW JUMP RSI Pilha ← (PC) Pilha ← (PSW) PC ← Endereço da RSI Endereço de retorno Estado corrente do processador Desvia a execução para RSI

9 Retorno de uma interrupção:  À semelhança do retorno de subrotina, temos uma instrução especial ao final da RSI. Interrupção 9 POP PSW POP PC PSW ← Estado anterior à Interrupção PC ← Endereço de retorno MOV (R0), R3 RTI RS1: MOV R1, (R0)+ MOV R2, (R0)+ ADD R3, R1, R2 Quais operações a instrução RTI deve executar? Note que o retorno deve ser programado na RSI. Ele não é automaticamente executado pelo GSI.

10 Antes de executar os sinais de controle para o atendimento de uma interrupção, o GSI deve conhecer o endereço da RSI. Existem 3 formas de informar qual é este endereço. Rotinas de Serviço de Interrupção 10 Qual é o endereço da Rotina de Serviço de Interrupção? Mapeamento Interno à CPU  Neste caso, cada linha de interrupção está associada a um endereço de memória.  O programador deve instalar a RSI no endereço de interrupção associado ao pino de interrupção no qual foi conectado o dispositivo. L1 Mapeamento RS1 MEM L2 RS2 CPU

11 Antes de executar os sinais de controle para o atendimento de uma interrupção, o GSI deve conhecer o endereço da RSI. Existem 3 formas de informar qual é este endereço. Rotinas de Serviço de Interrupção 11 Qual é o endereço da Rotina de Serviço de Interrupção? Mapeamento Externo à CPU  Neste caso, temos um hardware chamado “Controlador de Interrupções” que informa ao GSI qual é o endereço da interrupção.  Antes de executar o JUMP para a RSI, a CPU precisa ler este endereço enviado pelo controlador. L1 end MEM L2 CPU Controlador de Interrupçõe s GSI PUSH PC PUSH PSW JUMP RSI IN CONTRL

12 Antes de executar os sinais de controle para o atendimento de uma interrupção, o GSI deve conhecer o endereço da RSI. Existem 3 formas de informar qual é este endereço. Rotinas de Serviço de Interrupção 12 Qual é o endereço da Rotina de Serviço de Interrupção? Polling  Neste caso, temos uma Rotina de Serviço que lê o status de todos os dispositivos conectados à linha de interrupção.  Caso algum dispositivo tenha emitido um sinal de interrupção, acontece o desvio para RSI correspondente. LI MEM CPU GSI RS: IN STATUS2 Jcond RS1 IN STATUS2 Jcond RS1... IN STATUSn Jcond RSn

13 Definição: uma interrupção nada mais é do que a quebra da sequência de operação para o atendimento de um evento interno ou externo. Atendimento: desvio a execução da CPU para uma Rotina de Serviço de Interrupção. Uma vez finalizada, as condições anteriores do processador são restauradas. Hardware: uma área dentro do controlador, o Gerador de Sinais de Interrupção (GSI), é responsável por atender a interrupção. O retorno é executado por uma instrução (RTI) ao final da RSI. Endereço: o sinal de interrupção é enviado pelo dispositivo através de uma linha de interrupção. Cada linha de interrupção tem associada a si um endereço da memória. Resumindo 13 Onde se encontram as Rotinas de Serviço de Interrupção? Possibilidade 1: Nos endereços associados às linhas de interrupção L1 → RS1 L2 → RS2 L3 → RS3...

14 Endereços de Interrupção 14 (1) Em posições não-contíguas de memória L1 END1 L2 END2 Ln ENDn RS1 “mouse” RS1 “mouse” MEMÓRIA RS1 “mouse” RS1 “mouse” RS2 “teclado” RS2 “teclado” RS2 “teclado” RS2 “teclado” Invadiu a área reservada para a RSI de outra linha de interrupção! Solução? Desviar a execução para uma área livre da memória ENDX RS2 “teclado” – P2 RS2 “teclado” – P2 RS2 “teclado” – P1... JUMP ENDX RS2 “teclado” – P1... JUMP ENDX Nesta forma de organização, cada endereço associado à linha de interrupção possui um conjunto de palavras para instalação das RSIs. SINAIS DO GSI PUSH PC PUSH PSW JUMP ENDi PC ← ENDi Existe uma solução mais elegante para instalar as RSIs? VETORES DE INTERRUPÇÃO!

15 Endereços de Interrupção 15 (2) Em vetores (interrupção vetorizada) L1 END1 L2 END2 Ln ENDn MEMÓRIA Nesta forma de organização, os endereços associados a cada linha de interrupção estão em posições contíguas da memória...... Desta forma, os endereços de interrupção conterão apenas os endereços das RSI apropriadas. RS1 RS2 RS3  Processadores mais modernos (por exemplo, ARM) possuem uma área da memória reservada para os endereços das RSIs. Essa área é chamada de “Vetor de Interrupções” e geralmente localiza-se no início do espaço de memória, a partir do endereço 0.  A vantagem desta estratégia é que as RSIs podem ser instaladas em qualquer área livre da memória sem restrição de tamanho. Isto implica não haver espaço para a instalação da RSI... SINAIS DO GSI PUSH PC PUSH PSW JUMP (ENDi) PC ← (ENDi) = RSIi VETOR DE INTERRUPÇÕES

16 Endereços de Interrupção 16 Em algumas circunstâncias, para que a Rotina de Serviço de Interrupção seja executada corretamente, podem ser necessárias algumas condições especiais. Por exemplo, considere o evento “reiniciar”:  Ao pressionar o botão “reiniciar”, o programa corrente é interrompido e a execução é desviada para uma RSI que inicializa o Sistema Operacional.  Durante esta inicialização, nenhum sinal de interrupção pode interromper a RSI.  Para que nenhuma interrupção aconteça, precisamos desabilitá-las no Registrador de Estado (PSW); REGISTRADOR DE ESTADO (PSW)  Uma forma de implementação é associar bits do PSW às linhas de interrupção. Se bit = 1, a linha correspondente ao bit pode interromper a execução. Se bit = 0, não pode interromper. L1 L2 L3 Se, antes de executar a RSI eu coloco 001 no PSW, quem poderá interrompê-la? 0 0 1 O valor colocado no registrador PSW é chamado de máscara de interrupção. Apenas a Linha 1! Muitas vezes, é necessário passar uma máscara para o Registrador de Estado antes de iniciar a execução da RSI. Como faremos isso?

17 Endereços de Interrupção 17 (3) Em vetores (interrupção vetorizada) com PSW (estado) L1 END1 L2 END2 Li ENDi MEMÓRIA Uma forma de alterar o estado do processador, adequando-o para a execução da RSI, é enviando-lhe uma máscara de interrupção. PUSH PC PUSH PSW JUMP (ENDi + 1) PSW ← (ENDi) = pswi... Esta máscara pode ser alocada no Vetor de Interrupções, em uma posição antes do endereço da RSI. mask1 RS1 RS2 mask2 maski RSi MOV ENDi, PSW PC ← (ENDi + 1) = RSIi Qual outra forma de enviar a máscara para o PSW? VETOR DE INTERRUPÇÕES (com PSW) Através da primeira linha da RSI: RS1: MOVE mask1, PSW... RTI SINAIS DO GSI Qual a diferença entre a Interrupção e Subrotina?

18 Interrupções versus Subrotinas 18 SUBROTINAS INTERRUPÇÃO ATENDIMENTO Síncrono (programa) Assíncrono (sinal externo) ENDEREÇO DA ROTINA DE SERVIÇO Própria Instrução Vetor de Interrupções DESVIO DA EXECUÇÃO Salva PC e PSWSalva PC Restaura PC e PSWRestaura PC RETORNO AO PROGRAMA QUEM EXECUTA O DESVIO PARA RS Controlador ao executar CALL GSI QUEM EXECUTA O RETORNO Controlador ao executar RTS Controlador ao executar RTI

19 Instalando RSIs 19 Agora que sabemos os mecanismos de funcionamento da interrupção e onde se localizam os endereços e as rotinas de serviço, vamos analisar como se escreve um programa Assembly para implementar interrupções. Exemplo: Considere uma arquitetura na qual as linhas de interrupção L1, L2 e L3 estão associadas a um Vetor de Interrupções de endereços contíguos e sem PSW. O Vetor de Interrupções começa na posição 0 de memória e as RSIs estão, respectivamente, nas posições 300, 400 e 500. Escreva um programa que implemente estas condições. L1 END1 L2 END2 L3 END3 RS1 RS2 RS3 0 1 2 300 400 500 Antes de continuar, vamos falar mais um pouco sobre pseudo-instruções...

20 Instalando RSIs 20 Pseudo-instruções É um tipo especial de instrução não executável, que insere valores em posições de memória, reserva espaço e organiza na memória o local de instalação das instruções. Quem lê e “executa” as pseudo-instruções é o montador ao alocar o programa Assembly na memória. Em resumo, pseudo-instruções são regras que ajudam o montador a definir o conteúdo de cada posição da memória ao instalar um programa. DS X Reserva X palavras da memória a partir da posição da pseudo-instrução. DW V Posição de memória desta pseudo- instrução recebe o valor V. ORG Y A próxima instrução é alocada na posição Y de memória. ADR rótulo Posição recebe o endereço de “rótulo”.

21 Instalando RSIs 21 Agora que sabemos os mecanismos de funcionamento da interrupção e onde se localizam os endereços e as rotinas de serviço, vamos analisar como se escreve um programa Assembly para implementar interrupções. Exemplo: Considere uma arquitetura na qual as linhas de interrupção L1, L2 e L3 estão associadas a um Vetor de Interrupções de endereços contíguos e sem PSW. O Vetor de Interrupções começa na posição 0 de memória e as RSIs estão, respectivamente, nas posições 300, 400 e 500. Escreva um programa que implemente estas condições. L1 END1 L2 END2 L3 END3 RS1 RS2 RS3 0 1 2 300 400 500 Definindo o vetor de interrupções: ORG 0 ADR RS1ou DW 300 ADR RS2 ADR RS3 ou DW 400 ou DW 500 Instalando as RSIs: ORG 300 RS1:... RTI ORG 400 RS2:... RTI ORG 500 RS3:... RTI

22 Considere agora uma arquitetura na qual as linhas L1, L2 e L3 estão associadas a um vetor de interrupções de endereços contíguos e com PSW. O vetor de interrupções começa na posição 0 da memória e as RSIs estão, respectivamente, nas posições 150, 350 e 400. Cada linha pode ser interrompida pelas outras, exceto por si mesma. Os 3 bits menos significativos do PSW habilitam e desabilitam as interrupções nas linhas. Vamos, então, escrever um programa Assembly que implemente esta situação, lembrando que os sinais de controle gerados pelo GSI correspondem às operações: Instalando RSIs 22 PUSH PC PUSH PSW JUMP (ENDi + 1) MOV ENDi, PSW

23 Solução: Instalando RSIs 23 Instalando o vetor de interrupções: ORG 0 ADR RS1ou DW 150 Instalando as RSIs:ORG 150 RS1:...... RTI ORG 350 RS2:...... RTI ORG 400 RS3:... RTI Definindo as máscaras: psw1: PSW L3 L2 L1 psw2: psw3: 110 2 101 2 011 2 DW 110 ADR RS2ou DW 350 DW 101 ADR RS3 ou DW 400 DW 011

24 Créditos 24  Este material está baseado nas notas de aula elaboradas pelo Prof. Léo Pini e pelo aluno de doutorado Tiago Novaes.


Carregar ppt "EA869 Interrupção Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1."

Apresentações semelhantes


Anúncios Google