Аппаратные прерывания. Контроллер прерываний

Аппаратное прерывание – прерывание, выполняемое в результате запроса, поступающего от периферийного оборудования.

Контроллер прерываний – устройство, которое обрабатывает сигналы аппаратных прерываний.

В отличие от программных прерываний аппаратные всегда возникают асинхронно от выполняющейся программы. Запросы на прерывания передаются по специальным сигнальным линиям, которые называются IRQ-линиями (Interrupt Request – запрос на прерывание).

Программируемый контроллер прерываний 8259, используемый в машинах IBM AT, предназначен для обработки до 8 приоритетных уровней прерываний. Возможно каскадирование микросхем, при этом общее число уровней прерывания будет достигать 64.

В машинах IBM AT имеется 15 линий сигналов прерывания, для обслуживания которых используются ведущая и одна ведомая микросхемы. Для каскадирования используется линия IRQ2 ведущей микросхемы. Ведомой микросхеме программным методом при­сваивается код, равный номеру входа IRQ ведущей микросхемы, с которым соединен выход запроса прерывания INT ведомой микросхемы. Внутри микросхемы приоритет зависит от номера IRQ и задается программно.

Для идентификации прерываний различных устройств им присваивают номера от 0 до 15. По этим номерам процессор узна­ет, какое устройство выдает запрос на прерывание. Естественно, что при этом все будет функционировать безупречно, если с каж­дым конкретным устройством будет связано определенное преры­вание. Действует стандартное правило: каждому компоненту ПК-системы должно быть назначено свое собственное прерывание.

Исключением являются системы, которые могут работать по методу разделения прерываний. К ним относятся шина EISA, a также системы, соответствующие спецификации Plug and Play фирмы Intel. Разумеется, трудно найти программное обеспечение, которое могло бы управлять разделением прерываний, поэтому стандартное правило «каждому устройству – свое собственное прерывание» должно выполняться (рис. 13).

 

 

Рис. 13. Распределение линий сигналов прерывания в машинах IBM AT

 

Приоритеты прерываний распределены в следующем порядке (по убыванию приоритета):

IRQ0 - прерывание таймера;

IRQ1 - прерывание от клавиатуры;

IRQ8 - прерывание от часов реального времени;

IRQ9 - прерывание от контроллера графической платы;

IRQ10 - зарезервированная линия;

IRQ11 - зарезервированная линия;

IRQ12 - зарезервированная линия;

IRQ13 - прерывание от математического сопроцессора;

IRQ14 - прерывание от контроллера жестких дисков;

IRQ15 - прерывание от IDE-контроллера (CD-ROM);

IRQ3 - прерывание от последовательного порта COM2;

IRQ4 - прерывание от последовательного порта COM1;

IRQ5 - зарезервированная линия;

IRQ6 - прерывание от контроллера гибких дисков;

IRQ7 - прерывание от параллельного порта (от принтера).

 

Часть линий прерываний жестко закреплена за устройствами определенных типов, а другая часть находится в полном распоряжении пользователя.

Даже стандартная ПК-система с самым распространенным набором компонентов предоставляет весьма ограниченный выбор свободных прерываний. С учетом звуковой, сетевой плат и дополнительного хост-адаптера SCSI спи­сок свободных прерываний исчерпы­вается.

Возможность свободного использования зарезервированных линий создает определенные проблемы, называемые конфликтами прерываний. Такой конфликт может возникнуть в результате ошибки пользователя в процессе установки контроллера какого-либо нового устройства: может возникнуть ситуация, когда два контроллера посылают запросы прерываний на одну и ту же линию, и процессор не знает, какое из устройств послало сигнал. Для предотвращения конфликта перед установкой нового устройства необходимо использовать специальную программу, которая определяет, какие из линий прерываний в системе свободны, а затем настроить новый контроллер на одну из свободных линий путем соответствующей установки переключателей на контрол­лере.