Таблица IRQ и векторов прерываний

Таблица IRQ и векторов прерываний

Я много читал о IRQ, и, похоже, там есть противоречивая и устаревшая информация. Часть из нее относится к Windows 95. Вот что меня смущает.

  1. Управляются ли и диспетчеризируются ли как программные прерывания, так и аппаратные прерывания таблицей векторов прерываний. Если нет, то как, то контролируются ли они по-разному.

  2. Я читал, что есть разница между режимами PCI IRQ и ISA IRQ, это правда? Если да, то как установить режим и как они функционируют по-разному?

  3. Теперь, когда у нас есть PCI Express, используют ли они прерывания режима PCI (если они существуют), как они работают (с точки зрения прерываний)?

EDIT 4. Глядя на эту картинку, кажется, что есть много IRQ и что они сопоставлены с памятью. Каковы последствия этого? Существует гораздо больше, чем 16 IRQ. Я знаю, что APIC допускает больше, но так много?

введите описание изображения здесь

Заранее спасибо :-)

решение1

Нет никаких разных режимов, есть разное оборудование на старой шине ISA и шине PCI. Шина ISA предоставляла 16 линий IRQ на шине, которые устройства могли использовать для подачи сигнала о внимании. Программируемый контроллер прерываний (фактически пара каскадных микросхем 8259A) реагировал на эти линии, назначая им приоритет и сигнализируя ЦП, когда одна из них была активна. Это заставляло ЦП вызывать процедуру обслуживания прерываний. IRQ 0-7 запускали int 8-F, а IRQ 8-15 запускали int 70-77. Прерывания также могли быть запущены с помощью программной инструкции int и заставляли ЦП вызывать процедуру, на которую указывал соответствующий слот в таблице векторов прерываний.

Вместо 16 линий IRQ, общих для всех устройств на шине, PCI предоставила 4 разные линии IRQ для каждого слота на шине с именем INTA-INTD, что позволяет каждому устройству иметь до 4 разных IRQ для собственного использования. На практике устройства используют только INTA, которую оборудование направляет на определенные IRQ.

Цифры, которые вы видите на изображении, не являются адресами памяти, это просто шестнадцатеричное представление номера IRQ.

APIC поддерживает 256 векторов прерываний.

Связанный контент