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

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

Arquitectura de Computadores II

Apresentações semelhantes


Apresentação em tema: "Arquitectura de Computadores II"— Transcrição da apresentação:

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

2 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

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

4 Tipos de interrupções, noção geral
As interrupções podem estar associadas a 3 tipos de eventos: Interrupções internas interrupção 0 à interrupção 4 NMI Excepções Interrupções externas 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 Interrupções de software São meras instruções assembly ao CPU - INT n 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

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

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

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

8 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; 8

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

10 Gestor de interrupções – cont.
10

11 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) 11

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

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

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

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

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

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

18 Exemplo de um ciclo de interrupção
PIC 8259A

19 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: efectua um ciclo de reconhecimento de interrupção no pino INTA e prepara o bus de dados para receber informação; 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; efectua o procedimento normal de resposta a uma interrupção.

20 Exemplo de um ciclo de interrupção
Processador x86. 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


Carregar ppt "Arquitectura de Computadores II"

Apresentações semelhantes


Anúncios Google