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

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

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

Apresentações semelhantes


Apresentação em tema: "Arquitectura de Computadores II 9 de Janeiro de 2009 32223 – Paulo Pires16807 – José Serrano Apresentação PCI - Interrupções."— Transcrição da apresentação:

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

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 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: 1.Interrupções internas 1.interrupção 0 à interrupção 4 NMI Excepções 2.Interrupções externas 1.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 software 1.São meras instruções assembly ao CPU - INT n 2.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

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

20 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:IPmem(0000:vetor*4) desvia para rotina de tratamento de interrupção retorno através da instrução IRET Processador x86.


Carregar ppt "Arquitectura de Computadores II 9 de Janeiro de 2009 32223 – Paulo Pires16807 – José Serrano Apresentação PCI - Interrupções."

Apresentações semelhantes


Anúncios Google