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

2114
rubixibuc

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

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

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

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

РЕДАКТИРОВАТЬ 4. Глядя на эту картинку, вы видите, что много IRQ и что они отображаются в памяти. Каковы последствия этого? Есть более 16 IRQ. Я знаю, что APIC позволяет больше, но это много?

enter image description here

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

2

1 ответ на вопрос

2
psusi

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

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

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

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

Круто :-), но где PCI Express вписывается во все это? Когда-то на материнской плате когда-то смешивались шины ISA и PCI, как их объединить? Также происходит увеличение векторов прерываний с APIC, где выделяются новые. Я предполагаю, что ISA остается тем же самым, PCI, остается тем же самым, или любой получает увеличение? rubixibuc 12 лет назад 0
Означает ли это, что APIC демультиплексирует 256 векторов на 16 (как я догадался из ваших 8-F, 70-77, которые я не понимаю) физических проводов, которые входят в микросхему ЦП как ввод-вывод? Является ли это число постоянным для всей архитектуры x86? PPC 12 лет назад 0
@PPC, нет, APIC напрямую поддерживает 256 векторов прерываний, которые передаются ему через последовательный протокол через iirc, двухпроводную шину, соединяющую все процессоры, северный мост и любые APIC ввода-вывода. Старые 16 IRQ были физическими линиями на шине ISA, подключенными к PIC 8259A, которые отображали их на векторы программных прерываний 8-F и 70-77. psusi 12 лет назад 0

Похожие вопросы