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

Controlador de interrupções 8259, Notas de estudo de Informática

funcionamento INTERRUPÇÕES 8259

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 21/04/2009

edilson-neto-10
edilson-neto-10 🇧🇷

4

(2)

3 documentos

1 / 5

Toggle sidebar

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

Não perca as partes importantes!

bg1
Nenhum computador pode atender as solicitações dos dispositivos de entrada e saída
sem implementar um conjunto de interrupções de hardware. Um modo simples de
compreender o funcionamento das interrupções de hardware é fazer a analogia com
recepção de uma chamada telefónica. Assim quando se pretende comunicar com uma
pessoa podemos faze-lo por telefone, pensando nas linhas telefónicas como sendo as
linhas que ligam os dispositivos de entrada e saída ao processador, um computador sem
interrupções é pois como um telefone sem campainha, pois assim nunca se sabe quando
o telefone toca, e teríamos que estar sempre a atender o telefone para verificarmos se
alguém quer falar connosco, do mesmo modo se o computador não possuir interrupções
o CPU tem estar sempre a verificar se algum dispositivo pretende comunicar com ele.
No telefone com campainha podemos estar a fazer varias coisas e atendemos o
telefone quando ele toca, nessa altura falamos com a outra pessoa, no caso do CPU, este
realiza outras tarefas sem se preocupar com os dispositivos. Estes só vão ser atendidos
quando solicitarem um pedido de interrupção
Ainda continuando com a mesma analogia com o telefone, suponhamos que estamos a
ler um livro e o telefone toca, marcamos a página do livro e vamos atender o telefone,
falamos com o nosso interlocutor, depois voltamos a continuar a leitura do livro na
posição em que estávamos quando o telefone tocou. O CPU responde às interrupções da
mesma maneira, quando está a executar um programa e é solicitado um pedido de
interrupção, guarda o endereço da posição de memória que está a executar na pilha e
vai executar a interrupção, quando acaba de executar a interrupção vai buscar da pilha
o endereço da instrução seguinte à que estava a executar quando aconteceu o pedido da
interrupção.
O CPU para o pedido de interrupções externo tem uma linha para todos os
dispositivos. Existindo então um controlador de interrupções, este faz a interface com o
processador dos pedidos de interrupção feitos pelos diferentes dispositivos de entrada/
saída. Quando o CPU recebe o pedido de interrupção, verifica com o controlador de
interrupções que dispositivo causou o pedido de interrupções e então efectua o
atendimento apropriado à interrupção
1.CONTROLADOR DE INTERRUPÇÕES 8259
O controlador de interrupções usado no original IBM PC, era um 8259 ( Programmable
Interrupt Control - PIC) da Intel, só assim é possível o atendimento de várias fontes de
interrupções. Quando do surgimento do PC-AT, a capacidade de atendimento de
interrupções foram estendidas, tendo sido incorporado mais um 8259, duplicando a
capacidade de atendimento das interrupções.
De modo a manter a compatibilidade com o PC-AT, os construtores de computadores
foram incorporando no Chiptset da motherboard o equivalente a um par de 8259. O que
interessa de facto é que o modo de efectuar a configuração é como se efectivamente
existissem os dois 8259.
Figura 1- Registos do controlador de interrupções 8259.
Figura 2- Controlador de interrupções 8259.
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Controlador de interrupções 8259 e outras Notas de estudo em PDF para Informática, somente na Docsity!

Nenhum computador pode atender as solicitações dos dispositivos de entrada e saída sem implementar um conjunto de interrupções de hardware. Um modo simples de compreender o funcionamento das interrupções de hardware é fazer a analogia com recepção de uma chamada telefónica. Assim quando se pretende comunicar com uma pessoa podemos faze-lo por telefone, pensando nas linhas telefónicas como sendo as linhas que ligam os dispositivos de entrada e saída ao processador, um computador sem interrupções é pois como um telefone sem campainha, pois assim nunca se sabe quando o telefone toca, e teríamos que estar sempre a atender o telefone para verificarmos se alguém quer falar connosco, do mesmo modo se o computador não possuir interrupções o CPU tem estar sempre a verificar se algum dispositivo pretende comunicar com ele. No telefone com campainha podemos estar a fazer varias coisas e só atendemos o telefone quando ele toca, nessa altura falamos com a outra pessoa, no caso do CPU, este realiza outras tarefas sem se preocupar com os dispositivos. Estes só vão ser atendidos quando solicitarem um pedido de interrupção Ainda continuando com a mesma analogia com o telefone, suponhamos que estamos a ler um livro e o telefone toca, marcamos a página do livro e vamos atender o telefone, falamos com o nosso interlocutor, depois voltamos a continuar a leitura do livro na posição em que estávamos quando o telefone tocou. O CPU responde às interrupções da mesma maneira, quando está a executar um programa e é solicitado um pedido de interrupção, guarda o endereço da posição de memória que está a executar na pilha e vai executar a interrupção, quando acaba de executar a interrupção vai buscar da pilha o endereço da instrução seguinte à que estava a executar quando aconteceu o pedido da interrupção.

O CPU para o pedido de interrupções externo só tem uma linha para todos os dispositivos. Existindo então um controlador de interrupções, este faz a interface com o processador dos pedidos de interrupção feitos pelos diferentes dispositivos de entrada/ saída. Quando o CPU recebe o pedido de interrupção, verifica com o controlador de interrupções que dispositivo causou o pedido de interrupções e então efectua o atendimento apropriado à interrupção

1.CONTROLADOR DE INTERRUPÇÕES 8259

O controlador de interrupções usado no original IBM PC, era um 8259 ( Programmable Interrupt Control - PIC) da Intel, só assim é possível o atendimento de várias fontes de interrupções. Quando do surgimento do PC-AT, a capacidade de atendimento de interrupções foram estendidas, tendo sido incorporado mais um 8259, duplicando a capacidade de atendimento das interrupções.

De modo a manter a compatibilidade com o PC-AT, os construtores de computadores foram incorporando no Chiptset da motherboard o equivalente a um par de 8259. O que interessa de facto é que o modo de efectuar a configuração é como se efectivamente existissem os dois 8259.

Figura 1- Registos do controlador de interrupções 8259.

Figura 2- Co ntrolador de interrupções 8259.

O bloco básico da constituição da PIC é mostrado na figura 1. Possui 8 linhas de pedidos de interrupções de dispositivos externos, referenciadas como IR0, IR1 a IR que passam em primeiro lugar por um registo denominado IMR ( Interrupt Mask Register ), que verifica se a interrupção em causa está ou não mascarada i.e. inibida. Se a interrupção está mascarada esta não executada, não existindo mais nenhum procedimento. Se a interrupção em causa não estiver mascarada vai ser processada no IRR ( Interrupt Request Register ). O IRR guarda os pedidos de interrupção até que estes sejam efectivamente atendidos pelo processador, existindo um outro registo denominado Priority Resolver , que vai seleccionar qual a interrupção de maior prioridade isto no caso de existirem vários pedidos em simultâneo. A interrupção de maior prioridade é a linha de IR0, seguido pela linha IR1, sucessivamente até IRQ7, este de menor prioridade. Depois de o PIC determinar qual a IRQ a processar, tem de comunicar ao processador para que seja executada a correspondente rotina d serviço à interrupção. Este processo é feito enviando um INT para o processador, é feito pela linha de INT-linha é activada pelo PIC o que é interpretado pelo processador como um pedido de interrupção, O processador termina a instrução corrente que está a executar, e responde ao PIC com um sinal de confirmação ( Acknowledge ) pela linha de INTA - é um pulso negativo. Após a confirmação pela linha de INTA, o IRQ que o PIC está a processar é guardado no ISR ( In Service Rotine ) , indica qual a interrupção que está a ser processada. Um outro pulso negativo é enviado pelo processador para indicar ao PIC para colocar no barramento de dados (8 linhas menos significativas) o numero da interrupção, no caso de existirem dois PIC, sendo neste caso um configurado como MASTER e o outro configurado como SLAVE, e se o pedido de IRQ for do slave , então neste caso o master indica ao slave para enviar o vector da interrupção.

O envio do numero da interrupção faz com que o processador executa a correspondente rotina de serviço à interrupção, que no fim da sua execução deverá enviar uma indicacão de fim de interrupção EOI ( End of Interrupt ) para o PIC, que tem como função fazer o reset ao registo ISR, se neste momento não tem mais nenhuma interrupção pendente, fica em espera até que seja solicitado uma nova interrupção.

Redireccionamento de IRQ2/IRQ

O redireccionamento de IRQ 2 causa por vezes alguma confusão, no original XT, só existia um PIC, então como tal eram atendidas 8 pedidos de interrupções. Com o surgimento do PC-AT, acrescentaram mais um controlador. Como houve a necessidade de manter a compatibilidade com o hardware mais antigo , a nova configuração foi implementada utilizando a IRQ 2 como entrada da linha de INT do PIC slave. O CPU só tem uma linha de interrupção INT, pelo que o segundo controlador tem de ser ligado ao primeiro, numa configuração master/slave. A linha de IRQ 2, foi a seleccionada, utilizando a IRQ 2 para o segundo dispositivo, mais nenhum dispositivo a pode utilizar. Os dispositivos que utilizavam a IRQ2 foram desviados para a IRQ 9.

Figura 2- Dois PICs ligado em modo Master/Slave

Inicialização do PIC

O passo inicial de qualquer operação com o 8259 é pelo envio das palavras de controlo enviadas para os portos de localização endereço base+0 e endereço base+1. Estas

Os processadores da família do x86 permitem 256 interrupções, muitas destas são apenas de utilização por software, que não vão ser referidas neste capítulo. A tabela de vectores de interrupção, contem o endereço da correspondente rotina de serviço à interrupção, em que cada interrupção ocupa nesta tabela 4 bytes, pois a representação dos endereços é de forma segmentada (CS:IP). Com cada vector de interrupção a ocupar 4 bytes, com 256 tipos de interrupção, significa que o tamanho da tabela é de 1024 bytes, o que corresponde às primeiras 1,024 posições de memória. Os PC’s disponibilizam 15 linhas de interrupção por hardware, referenciadas como IRQ0 a IRQ15, sendo implementado por dois controladores de interrupção. Um atende as IRQ’s de 0 a 7 e o outro as IRQ’s de 8 a 15. O segundo PIC é ligado em cascata ao primeiro utilizando a IRQ 2

O microprocessador 8086 tem duas entradas de interrupção: uma entrada de interrupção Não Mascarada (NMI) e uma entrada de interrupção Mascarada (INTR). Como NMI é uma interrupção sem máscara, é usada uma lógica externa para gerar uma máscara para esta interrupção. Nos primeiros PC,um controlador de interrupção (8259) é ligado à entrada de interrupção mascarada. O controlador de interrupção 8259 permite aumentar as interrupções mascaradas para 8 entradas de interrupção. Nos micros mais modernos, dois 8259 fornecem 15 linhas de interrupção. O 8086 tem uma Tabela de Vetor de Interrupção situada em 0000:0000 até 0000:0400, isto é num total de 1024 bytes. A tabela de vetor de interrupção guarda o endereço da Rotina atendimento da Interrupção (ISR), em 4 bytes. Isto possibilita Ter 256 vetores de interrupção. O PC tem 15 interrupções mascaradas e mais uma interrupção não mascarada usadas pelo Hardware. O resto dos vetores de interrupção são usados por interrupção de software e atendimento a exceções. Atendimento a exceções são rotinas de atendimento a interrupções que são chamadas quando ocorre um erro em algum um resultado. Por exemplo, o primeiro vetor de interrupção guarda o endereço da rotina que irá atender à divisão por zero. Quando uma divisão por zero ocorre o microprocessador irá no endereço 0000:0000, buscará os 4 bytes localizados a partir deste endereço e irá executar a rotina definida por este endereço

Tabela 1– Tabela dos vectores de interrupção no x

259 MESTRE

8259 ESCRAVO

SINAL INTR PARA O PROCESSADOR

... ... ... ... ... ...

DISPOSITIVO EXTERNO 63

DISPOSITIVO EXTERNO 57

DISPOSITIVO EXTERNO 56

DISPOSITIVO EXTERNO 15

IRQ2IRQ3 INTR

  • DISPOSITIVO EXTERNO
  • DISPOSITIVO EXTERNO
  • DISPOSITIVO EXTERNO
  • DISPOSITIVO EXTERNO
  • DISPOSITIVO EXTERNO
  • DISPOSITIVO EXTERNO
    • IRQ0IRQ
    • IRQ4IRQ
    • IRQ6IRQ
    • IRQ0IRQ
    • IRQ4IRQ IRQ2IRQ3 INTR
    • IRQ6IRQ
    • IRQ0IRQ
    • IRQ4IRQ IRQ2IRQ3 INTR
    • IRQ6IRQ
    • IRQ0IRQ
    • IRQ4IRQ IRQ2IRQ3 INTR
    • IRQ6IRQ