IRQ e tabela de vetores de interrupção

IRQ e tabela de vetores de interrupção

Tenho lido muito sobre IRQs e parece que há informações conflitantes e desatualizadas. Algumas delas remontam ao Windows 95. Aqui está o que estou confuso.

  1. As interrupções de software e de hardware são gerenciadas e despachadas pela tabela de vetores de interrupção. Se não, como são controlados de forma diferente.

  2. Eu li que há uma diferença entre IRQs no modo PCI e IRQs no modo ISA, isso é verdade? Em caso afirmativo, como você define o modo e como eles funcionam de maneira diferente?

  3. Agora que temos o PCI Express, eles usam IRQs no modo PCI (se existirem), como funcionam (em termos de interrupção).

EDIT 4. Olhando para esta imagem, parece que há muitos IRQs e que estão mapeados na memória. Quais são as implicações disto? Existem muito mais de 16 IRQs. Eu sei que o APIC permite mais, mas tantos?

insira a descrição da imagem aqui

Desde já, obrigado :-)

Responder1

Não existem modos diferentes, há hardware diferente no antigo barramento ISA e no barramento PCI. O barramento ISA fornecia 16 linhas IRQ no barramento que os dispositivos poderiam usar para sinalizar atenção. O controlador de interrupção programável (na verdade, um par de chips 8259A em cascata) respondeu a essas linhas priorizando-as e sinalizando à CPU quando uma delas estava ativa. Isso fez com que a CPU invocasse uma rotina de serviço de interrupção. Os IRQs 0-7 acionaram o int 8-F e os IRQs 8-15 acionaram o int 70-77. As interrupções também podem ser acionadas por meio da instrução int do software e fazer com que a CPU chame uma rotina apontada pelo slot correspondente na tabela de vetores de interrupção.

Em vez de 16 linhas de IRQ compartilhadas por todos os dispositivos no barramento, o PCI forneceu 4 linhas de IRQ diferentes para cada slot do barramento denominado INTA-INTD, permitindo que cada dispositivo tivesse até 4 IRQs diferentes para seu próprio uso. Na prática, os dispositivos usam apenas INTA, que o hardware roteia para IRQs específicos.

Os números que você vê na imagem não são endereços de memória, são simplesmente a representação hexadecimal do número IRQ.

O APIC suporta 256 vetores de interrupção.

informação relacionada