Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Interrupções no ARM: Conceito, Mecanismos e Implementação, Exercícios de Arquitetura

Este documento explica o conceito de interrupções no arm, diferenciar interrupções de subrotinas, conhecer os mecanismos de interrupção do arm, aprender a instalar interrupções na memória e detalhar o atendimento de uma interrupção. O texto inclui um exemplo prático e a organização dos endereços de interrupção.

O que você vai aprender

  • Quais são os mecanismos de interrupção do ARM?
  • Detalhe o atendimento de uma interrupção no ARM
  • Como instalar interrupções na memória no ARM?
  • Como diferenciar interrupções de subrotinas?
  • Qual é o conceito de interrupção no ARM?

Tipologia: Exercícios

2022

Compartilhado em 07/11/2022

Rio890
Rio890 🇧🇷

4.8

(22)

221 documentos

1 / 39

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
EA869
INTRODUÇÃO A SISTEMAS DE COMPUTAÇÃO DIGITAL
2S2017
PED Tiago Novaes Angelo
INTERRUPÇÃO
Aulas 17 , 18 e 19
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27

Pré-visualização parcial do texto

Baixe Interrupções no ARM: Conceito, Mecanismos e Implementação e outras Exercícios em PDF para Arquitetura, somente na Docsity!

EA

INTRODUÇÃO A SISTEMAS DE COMPUTAÇÃO DIGITAL

2S

PED Tiago Novaes Angelo

INTERRUPÇÃO

Aulas 17 , 18 e 19

Objetivos

  • Definir o conceito de interrupção
  • Diferenciar Interrupção de Subrotinas
    • Conhecer os mecanismos de interrupção do ARM
  • Conhecer as diversas estratégias para implementar interrupções
  • Aprender a instalar interrupções na memória

Controlador

EXEMPLO

Vamos supor que você está jogando CandyCrush no seu smartphone e alguém resolve ligar para você...

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 da instrução e desviar a execução do programa para a ROTINA DE SERVIÇO DE INTERRUPÇÃO (RSI) , a qual atenderá o evento que gerou interrupção.
RSI

EXEMPLO

INTERRUPÇÃO

É a quebra da sequência de operação de forma a atender eventos especiais, tais como:

  • Entrada de dados atendendo a solicitação de periféricos
  • Atendimento de sinal de sensor
  • Sinais internos
• DEFINIÇÃO:

Como eu informo a CPU que um evento quer interrompê-la?

Via um sinal de interrupção enviado ao GSI por linhas de interrupção

Cada linha de interrupção têm associada a ela um dispositivo (ou conjunto deles) que enviam o sinal de interrupção quando desejam ser atendidos.

GERADOR DE SINAIS DE INTERRUPÇÃO

  • O QUE É? É um dispositivo do controlador que, ao receber um sinal de interrupção, salva o estado atual do processador (Registrador de Estado ou PSW), o endereço de retorno e desvia a execução do programa para Rotina de Serviço de Interrupção (RSI).
• ARQUITETURA:

D Q

CLR Q

BUSCA EXECUÇÃO

GERADOR DE SEQUÊNCIA DE INTERRUPÇÃO

PARTIDA

 ^ ...^       ... 

   ...

sinais de controle sinais de controle sinal do fim da sequência de micro- comandos

sinal do fim da sequência de micro- comandos

sinal de^ C.O. interrupção

Flip-Flop de Interrupção sinais de controle

ATENDIMENTO DE UMA INTERRUPÇÃO
  • Relembrando os passos para o atendimento de uma interrupção:
    1. Armazenar o conteúdo do PC para posterior retorno à execução interrompida (Endereço de retorno);
    2. Armazenar o estado corrente do processador , para restaurar, no retorno, a situação no momento à interrupção;
    3. Desviar o controle de execução para Rotina de Serviço de Interrupção;

Onde iremos armazenas essas informações?

PILHA!
SINAIS DE CONTROLE DO GSI
PUSH PC
PUSH PSW
JUMP RSI

Pilha ← (PC) Pilha ← (PSW) PC ← End da RSI

End de retorno Estado corrente do processador

GERADOR DE SINAIS DE INTERRUPÇÃO

Desvia a execução para RSI

ROTINAS DE SERVIÇO DE INTERRUPÇÃO

Qual é o endereço da Rotina de Serviço de Interrupção?

  • Antes de executar os sinais de controle para o atendimento de um sinal de interrupção, o GSI deve conhecer qual o endereço da RSI
  • Existem 3 formas de informar o GSI qual é este endereç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 onde foi ligado o dispositivo
L

Mapeamento

RS
MEM
L2 RS
CPU

ROTINAS DE SERVIÇO DE INTERRUPÇÃO

Qual é o endereço da Rotina de Serviço de Interrupção?

  • Antes de executar os sinais de controle para o atendimento de um sinal de interrupção, o GSI deve conhecer qual o endereço da RSI
  • Existem 3 formas de informar o GSI qual é este endereç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;
  • Porém, antes de executar o JUMP para a RS, a CPU precisa ler este endereço enviado pelo controlador
L

end

MEM
L
CPU

Controlador de Interrupções

GSI

PUSH PC
PUSH PSW
JUMP RSI
IN CONTRL

INTERRUPÇÃO

  • Resumindo o que vimos até agora...
    • 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 : O atendimento da interrupção desvia a execução da CPU para uma Rotina de Serviço de Interrupção. Uma vez finalizado, as condições anteriores do processador são restauradas
  • 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
  • Hardware : Uma área dentro do controlador, o Gerador de Sinais de Interrupção, é responsável por atender a interrupção. O retorno é executado por uma instrução (RTI) ao final da RSI

Onde se encontram as Rotinas de Serviço de Interrupção?

Possibilidade 1: Nos endereços associadas às linhas de interrupção L1 → RS L2 → RS

L3 → RS

(1) Em posições não contíguas de memória

L
END
L2 END

Ln (^) ENDn

RS

“mouse”

MEMÓRIA
RS

“mouse”

RS

“teclado”

RS

“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 RS

“teclado” – P

RS

“teclado” – P

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

ORGANIZAÇÃO DOS ENDEREÇOS DE INTERRUPÇÃO

(2) Em vetores (interrupção vetorizada)

L
END
L2 END

Ln (^) ENDn

MEMÓRIA

Nesta forma de organização, os endereços associados à 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.

RS
RS
RS
  • 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

ORGANIZAÇÃO DOS ENDEREÇOS DE INTERRUPÇÃO

ORGANIZAÇÃO DOS ENDEREÇOS DE INTERRUPÇÃO

  • 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, 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 à linhas de interrupção. Se bit = 1, a linha correspondente ao bit pode interromper a execução. Se bit = 0, não pode interromper.

L3 L2 L

Se, antes de executar a RSI eu seto 001 no PSW, quem poderá interrompê-la?

A este valor que setamos no PSW chamamos de MÁSCARA DE INTERRUPÇÃO

Apenas a Linha 1!

Muitas vezes faz-se necessário passar uma máscara para o Registrador de Estado antes de iniciar a execução da RSI. Como faremos isso?

INTERRUPÇÃO X SUBROTINAS

INTERRUPÇÃO

ATENDIMENTO Síncrono (programa)

Assíncrono (sinal externo)

END DA
ROTINA DE SERVIÇO

Própria Instrução Vetor de Interrupções

DESVIO DA EXECUÇÃO Salva PC Salva PC e PSW

RETORNO AO Restaura PC Restaura PC e PSW PROGRAMA

QUEM EXECUTA O
DESVIO PARA RS

Controlador ao executar CALL

GSI
QUEM EXECUTA O
RETORNO

Controlador ao executar RTS

Controlador ao executar RTI

Diferença entre Interrupção e Subrotina?

INSTALANDO RSIs

  • Agora que sabemos os mecanismos de funcionamento da interrupção e onde se localizam os endereços e as rotinas de serviço, vamos aprender como se escreve um programa Assembly para implementar interrupções. Vamos começar com um exemplo prático:

Seja uma arquitetura onde 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.

L END L2 (^) END L3 (^) END

RS
RS
RS

Antes de continuar, vamos falar mais um pouco sobre pseudo-instruções ...