20
Arquitectura de Computadores II 9 de Janeiro de 2009 32223 – Paulo Pires 16807 – José Serrano Apresentação PCI - Interrupções

Arquitectura de Computadores II

  • Upload
    zandra

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

Arquitectura de Computadores II. 9 de Janeiro de 2009. Apresentação PCI - Interrupções. 32223 – Paulo Pires. 16807 – José Serrano. Arquitectura de Computadores II. Sumário. Interrupção noção geral Tipos de interrupções, noção geral Ciclo de interrupção por hardware - PowerPoint PPT Presentation

Citation preview

Page 1: Arquitectura de Computadores II

Arquitectura de Computadores II

9 de Janeiro de 2009

32223 – Paulo Pires 16807 – José Serrano

Apresentação

PCI - Interrupções

Page 2: Arquitectura de Computadores II

Arquitectura de Computadores II

Sumário• Interrupção noção geral

• Tipos de interrupções, noção geral

• Ciclo de interrupção por hardware

• O barramento PCI, noção geral

• Gestor de interrupções

• Prioridades nas interrupções

• MSI - 252

• Tabela de vectores

• Exemplo de um ciclo de interrupção

Page 3: Arquitectura de Computadores II

Interrupção noção geral

• Uma interrupção é equivalente a uma chamada a um procedimento. A chamada é equivalente a um CALL gerado pela execução de uma instrução.

• As interrupções são casos especiais das chamadas a procedimentos.

• Em ambos os casos o procedimento que é executado designa-se “rotina de serviço à interrupção” ou “interrupt handler”.

• O retorno do procedimento ou rotina de serviço à interrupção é feito com a instrução IRET.

Page 4: Arquitectura de Computadores II

Tipos de interrupções, noção geral

As interrupções podem estar associadas a 3 tipos de eventos:

1. Interrupções internas1. interrupção 0 à interrupção 4

NMI Excepções

2. Interrupções externas1. Interrupções externas ou de hardware:

desencadeadas por periféricos ou coprocessadores ligadas ao sinal NMI ou INTR:

NMI, reservado para “catástrofes” (falha de energia, erro de memória) INTR, CPU procura o vector

3. Interrupções de software1. São meras instruções assembly ao CPU - INT n2. Geram um apontador para uma posição da tabela de vectores de interrupção tal

como uma interrupção de hardware. Exemplo: IRQ0 - salta para a posição 08h da tabela de vectores de interrupção INT 8 - “emula” o IRQ0, saltando para a mesma posição da tabela

Page 5: Arquitectura de Computadores II

Ciclo de interrupção por hardware

O pino INTR é utilizado para desencadear, através de um sinal externo, um dos 256 tipos de interrupção (geralmente entre 20H - 0FFH).

Se a entrada NMI estiver activa, ocorre uma interrupção do tipo 2.

O sinal INTA é, também, um pino de interrupção, no entanto, é utilizado como saída para responder ao pedido efectuado em INTR de modo a ser colocado, pelo periférico, o número do tipo de vector de interrupção no barramento de dados D7 - D0.

Page 6: Arquitectura de Computadores II

O barramento PCI, noção geral

• Criado pela INTEL em 1992

• Independente do processador

• Versão 2.0 : 33 MHz, 32 bits por ciclo (tx transf. 132MB/s)

• Versão 2.1 : 66 MHz, 64 bits por ciclo (tx transf. 528MB/s)

• Funciona a 5 V ou 3,3 V

• Slot de 120 pinos, para placas de 32 bits, ou 184 pinos (120+64) para placas de 64 bits

• Recurso ao BUS MASTERING

• Compatibilidade com o recurso PnP

• Utilizados por diversos tipos de periféricos (placas de rede, som, video, modem e adaptadores USB

Page 7: Arquitectura de Computadores II

O barramento PCI, noção geral – cont.

Page 8: Arquitectura de Computadores II

Gestor de interrupções

• Se colocarmos o NMI a detectar as interrupções originadas por falhas de energia, apenas sobra o pino INTR para receber todas as outras interrupções (teclado, impressora, rato, etc.).• De modo a evitar este problema recorre-se à utilização de um controlador de prioridades de interrupções (PIC) o 8259A.

Quando o 8259A recebe um sinal de interrupção num dos seus pinos de IR#, envia para o pino INTR do processador um sinal de interrupção. Caso a flag IF seja igual a 1, o processador responde à interrupção:

1 - efectua um ciclo de reconhecimento de interrupção no pino INTA e prepara o bus de dados para receber informação;

Page 9: Arquitectura de Computadores II

Gestor de interrupções – cont.

2 - efectua um segundo ciclo para informar o 8259A que pode enviar a informação sobre o tipo de interrupção. Este valor é colocado nas 8 linhas menos significativas do barramento de dados;

3 - efectua o procedimento normal de resposta a uma interrupção.

A vantagem da utilização do PIC é a possibilidade de converter várias linhas de pedido de interrupção para uma só, sem lógica adicional.

Page 10: Arquitectura de Computadores II

Gestor de interrupções – cont.

Page 11: Arquitectura de Computadores II

MSI

• Os fabricantes podem usar um pino do dispositivo para sinalizar uma interrupção, ou em alternativa implementar o MSI e usá-lo para sinalizar uma interrupção, o que tornaria desnecessária a utilização do pino.

• Mas a especificação recomenda que qualquer dispositivo que implemente o MSI também sinalize no pino as interrupções, isto porque existem sistemas que não suportam o MSI.

• Implementação :

• No “startup” o software de configuração faz uma verificação do bus PCI e faz uma detecção dos dispositivos

• Quando é detectado um dispositivo PCI, o software de configuração verifica se possui alguma das compatibilidades descritas numa lista

• Verifica se nessa compatibilidades está presente a compatibilidade com MSI (ID – 05h)

Page 12: Arquitectura de Computadores II

MSI – cont.

• o software atribui um endereço de memória ao dispositivo para registo dos pedidos de interrupção

• Verifica a múltiplas mensagens de interrupção possíveis do dispositivo para determinar quantos eventos ficaram adjacentes a esse registo

• o software disponibiliza ao dispositivo um numero de mensagens igual ou menor às solicitadas pelo dispositivo mas no mínimo uma.

• escreve a mensagem base no registo de mensagens do dispositivo

• finalmente coloca o bit MSI “enable” no registo de controlo de mensagens do dispositivo, ficando este assim habilitado a gerar interrupções utilizando o MSI.

Page 13: Arquitectura de Computadores II

MSI – cont.

Resumindo

Quando um dispositivo PCI suporta MSI e está activo, ele gera um pedido de interrupção ao processador escrevendo uma mensagem pré-definida num endereço de memória pré-definido

O Processador possui uma rotina de varrimento desses endereços atribuídos para registo das mensagens de interrupção e quando elas surgem, ele identifica qual o dispositivo que solicitou a interrupção

Page 14: Arquitectura de Computadores II

Prioridades nas interrupções

• O que acontece se ocorrerem duas interrupções simultaneamente? Nesse caso será atendida a interrupção de mais alta prioridade.

Supondo que o pino INTR se encontra activo e que recebe um sinal de interrupção durante uma operação de divisão que resulta numa divisão por zero. Como a interrupção gerada internamente (interrupção tipo 0) tem maior prioridade que a interrupção gerada pelo pino INTR, será a interrupção interna atendida.

Page 15: Arquitectura de Computadores II

Prioridades nas interrupções, (cont …)

O que acontece se ocorrerem dois pedidos simultâneos de interrupção nas linhas IR#.

Se o PIC estiver a operar no modo de prioridades fixas, a prioridade mais elevada dos pedidos de interrupção é ordenada de IR0 para IR7.

Page 16: Arquitectura de Computadores II

Tabela de vectores

• As interrupções possíveis numa CPU são normalmente pré-definidas numa TABELA DE VECTORES DE INTERRUPÇÃO.

• Um VECTOR DE INTERRUPÇÃO é um inteiro de 4 bytes. A tabela de vectores de interrupção está armazenada nos primeiros 1K de memória (endereços de 0 a 3FFh).

• Existem 256 vectores diferentes de interrupção.

• Cada vector contem o endereço do procedimento de serviço à interrupção (valores para IP e CS). Primeiros 2 bytes têm o IP e os 2 últimos bytes o CS.

Page 17: Arquitectura de Computadores II

Tabela de vectores (Cont …)

• Os primeiros 32 VECTORES DE INTERRUPÇÃO são RESERVADOS e utilizados presentemente pelo fabricante Intel e pelo sistemas operativos.

• Os restantes vectores de 32-255 estão disponíveis para o utilizador.

• Alguns vectores reservados são para condições de excepção que ocorrem na execução das instruções: divisão por zero, overflow, ...

Page 18: Arquitectura de Computadores II

Exemplo de um ciclo de interrupção

PIC 8259A

Page 19: Arquitectura de Computadores II

Exemplo de um ciclo de interrupção

Quando o 8259A recebe um sinal de interrupção num dos seus pinos de IR#, envia para o pino INTR do processador um sinal de interrupção. Caso a flag IF seja igual

a 1, o processador responde à interrupção:

1. efectua um ciclo de reconhecimento de interrupção no pino INTA e prepara o bus de dados para receber informação;

2. efectua um segundo ciclo para informar o 8259A que pode enviar o informação sobre o tipo de interrupção. Este valor é colocado nas 8 linhas menos significativas do barramento de dados;

3. efectua o procedimento normal de resposta a uma interrupção.

Page 20: Arquitectura de Computadores II

Exemplo de um ciclo de interrupção

Interrupção externa

termina o processamento da instrução atual

salva na pilha o registo com as flags

iguala a zero as flags IF e TF

salva na pilha os reg. CS e IP (endereço de retorno)

obtém os novos valores de CS e IP a partir da tabela de vetores de interrupção:CS:IP←mem(0000:vetor*4)

desvia para rotina de tratamento de interrupção

retorno através da instrução IRET

Processador x86.