



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
funcionamento INTERRUPÇÕES 8259
Tipologia: Notas de estudo
1 / 5
Esta página não é visível na pré-visualização
Não perca as partes importantes!
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
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