Unidade D - Sistema de Entrada e Saída

Endereços de IRQ

Os dispositivos de E/S podem gerar eventos em intervalos de tempo que o processador não pode prever, como, por exemplo, quando que o usuário irá pressionar uma tecla do teclado ou movimentar o cursor do mouse, bem como não é possível determinar quando será iniciada uma transferência de dados através de uma placa de rede, dentre outras situações.

Para que o processador possa executar suas atividades sem a necessidade de ficar monitorando quando que um determinado dispositivo irá realizar uma operação de E/S, são utilizados endereços de IRQ para gerar interrupções de hardware quando for necessário. Eles servem como canais através dos quais dispositivos podem chamar a atenção do processador para si, sendo que enquanto isso não ocorre o processador fica livre para realizar outras operações.

Dessa maneira, ao receber um sinal proveniente de um canal de IRQ, o processador interrompe o que está fazendo e dá atenção ao dispositivo que o solicitou, sendo que cada endereço de IRQ funciona como se fosse uma campainha utilizada por um determinado dispositivo para chamar a atenção do processador para si.

No primórdio dos PCs, existiam 8 endereços de IRQ, sendo numerados da posição 0 até a 7, da seguinte forma:

IRQ 0 - Sinal de clock da placa-mãe
IRQ 1 - Teclado
IRQ 2 - Livre
IRQ 3 - COM 2
IRQ 4 - COM 1
IRQ 5 - Disco Rígido
IRQ 6 - Drive de disquetes
IRQ 7 - Porta paralela

Nessa organização apresentada, o número do endereço de IRQ ocupado por um dispositivo indica também a sua prioridade. Logo, o endereço de IRQ 0 possui prioridade sobre um pedido que venha do IRQ 1, bem como o endereço de IRQ 1 tem prioridade sobre o IRQ 2 e assim sucessivamente. O inconveniente dessa organização era a pouca quantidade de endereços disponíveis para que novos dispositivos pudessem ser integrados ao computador.

A forma encontrada para solucionar a falta de endereços IRQ foi manter o controlador de IRQs original, de forma a manter a compatibilidade com a estrutura antiga, e adicionar um segundo controlador com 8 novos endereços a serem utilizados. Este segundo controlador foi ligado no IRQ 2, que estava livre na estrutura original, resultando em um cascateamento de IRQs.

Nessa nova estrutura, a organização dos endereços de IRQ fica estabelecida da seguinte forma:

IRQ 0 - Sinal de clock da placa-mãe (fixo)
IRQ 1 - Teclado (fixo)
IRQ 2 - Cascateador de IRQs (fixo)
IRQ 3 - Porta serial 2
IRQ 4 - Porta serial 1
IRQ 5 - Livre
IRQ 6 - Drive de disquetes
IRQ 7 - Porta paralela (impressora)
IRQ 8 - Relógio do CMOS (fixo)
IRQ 9 - Placa de vídeo
IRQ 10 - Livre
IRQ 11 - Controlador USB
IRQ 12 - Porta PS/2
IRQ 13 - Coprocessador aritmético (fixo)
IRQ 14 - IDE Primária
IRQ 15 - IDE Secundária

Com o desenvolvimento dos barramentos do computador, juntamente com o barramento PCI surge o recurso de PCI Steering. Através dele, é possível que dois ou mais periféricos PCI compartilhem um mesmo endereço de IRQ. O controlador PCI passa a desempenhar um importante papel, que é o de estabelecer uma ligação entre os periféricos e o processador, sendo que é ele quem recebe todos os pedidos de interrupção dos dispositivos conectados ao barramento PCI e os encaminha para o processador e, ao receber as respostas, os encaminha de volta para o respectivo dispositivo. Com essa técnica se tornou possível utilizar menos endereços de IRQ para uma quantidade maior de dispositivos.

O controlador USB também se utiliza dessa mesma lógica de funcionamento, ocupando um único endereço IRQ e o compartilhando entre todos os dispositivos conectados às portas USB, sendo responsável por receber as solicitações, as repassar para o processador e direcionar os resultados novamente para cada dispositivo que realizou o pedido de interrupção.

Atualmente, os controladores de IRQ foram substituídos por um único controlador, de interrupção, mais aprimorado, denominado APIC (Advanced Programmable Interrupt Controller). O seu objetivo é o de melhorar a forma como se trabalha com interrupções em sistemas que possuam dois ou mais processadores. Além disso, foram adicionados novos endereços, sendo agora do IRQ 0 até o IRQ 23, preservando a compatibilidade com sistemas antigos e mantendo a possibilidade de que vários dispositivos compartilhem um mesmo endereço, o que resulta em uma maior quantidade de endereços livres para novos elementos.