1 / 20

Arquitectura de Computadores II

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

zandra
Download Presentation

Arquitectura de Computadores II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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 Tipos de interrupções, noção geral

  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

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

  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;

  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.

  10. Gestor de interrupções – cont.

  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)

  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.

  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

  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.

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

  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

More Related