Прерывание. Контроллер прерываний. Устройство, функции, работа.

В этой статье рассмотрим устройство работу функции контроллера прерываний, который является важным узлом не только «южного моста», но и всего компьютера в целом.

Итак, что же такое—контроллер прерываний?

Прежде всего, выясним, что такое прерывание.

Прерывание—это сигнал, которое вырабатывает переферийное устройство, для информирования центрального процессора, чтобы он начал процесс выполнения определённой программы для переферийного устройства, вызвавшего это прерывание. При этом процессор останавливает выполнение прежней программы.

Контроллер прерываний предназначен для обработки и арбитража поступающих запросов на обслуживание к центральному процессору от переферийных устройств. По аналогии функции контроллера прерываний можно сравнить с секретарём какого‐нибудь начальника. Секретарь должен решить, кого из посетителей допустить к боссу в первую очередь, а кого и потом, исходя из приорететов, отдаваемых боссом и статуса самого посетителя.

Так и в компьютерной системе, возможна такая ситуация, когда несколько переферийных устройств послали сигнал прерывания или запрос на прерывание. В компьютерной литературе этот сигнал обозначается IRQ(Interrupt Request).

Как уже выше говорилось, прерывания имеют определённый приоритет, который позволяет контроллеру прерываний отдавать предпочтение в данный момент времени одному устройству, а не другому. В современном компьютере существует до 16 внешних и переферийных устройств, генерирующие прерывания. Вот эти устройства:

IRQ 0, системный таймер;

IRQ 1, клавиатура;

IRQ 2, исползуется для запросов устройств, подключенных каскадом;

IRQ 8, часы реального времени;

IRQ 9, зарезервировано;

IRQ 10, зарезервировано;

IRQ 11, зарезервировано;

IRQ 12, ps/2‐мышь;

IRQ 13, сопроцессор;

IRQ 14, контроллер «жёсткого» диска;

IRQ 15, зарезервировано;

IRQ 3, порты COM2,COM4;

IRQ 4, порты COM1,COM3;

IRQ 5, порт LPT2;

IRQ 6, контроллер дисковода;

IRQ 7, порт LPT1,принтер;

Здесь сигналы приведены в порядке убывания приоритетов. Можно заметить, что после IRQ 2, следует IRQ 8. Дело в том, что в своё время контроллер прерываний состоял из двух микросхем, одна была подключена к другой. Вот эта вторая микросхема и подключается к линии IRQ 2, образуя каскад. Она обслуживает линии IRQ8‐IRQ 15. А затем следуют линии первой микросхемы.

Работу контроллера прерывания мы рассмотрим на основе микросхем фирмы Intel 8259A, которые применялись в теперь уже очень старых компьютерах с процессорами до 386 серии. В этих компьютерах обычно было 2 микросхемы 8259A, подключенных каскадно, то‐есть одна к другой. Одна из микросхем, подключенная по линии запроса на прерывание непосредственно к процессору является ведущей или мастером. Остальные,подключаются к ведущей через аналогичные выводы, называются ведомыми.

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

На рисунке изображена схема подключения контроллеров прерываний и их взаимодействие с центральным процессором. Сигналы на прерывание от переферийных устройств или ведомых контроллеров поступают на входы IR0‐IR7 ведущего контроллера. Внутренняя логика ведущего контроллера обрабатывает поступившие запросы с точки зрения приоритета. Если приоритет запроса устройства достаточен, то на выходе INT контроллера вырабатывается сигнал, поступающий на вход INTR процессора. В противном случае, запрос блокируется.

Если процессор разрешает прерывания, то после завершения выполнения текущей команды, он вырабатывает по линии INTA последовательность сигналов, которая переводит ведомый контроллер в состояние невосприимчивости к поступающим новым запросам на прерывание, а кроме того, на линию данных выводится информация из внутренних регистров контроллера по которой процессор распознаёт тип прерывания.

Разрешение на прерывание процессор передаёт контроллеру прерываний через контроллер шины. Сигнал RD предназначен для того, чтобы контроллер прерываний поместил на шину данных содержимое внутренних регистров. По сигналу WR контроллер прерываний, наоборот, принимает данные с одноимённой шины и записывает их во внутренние регистры. Соответственно, это влияет на режим работы контроллера прерываний.

Вход CS подключается к шине адреса и по этому сигналу происходит идентификация конкретного контролллера прерываний. Вход A0 указывает на порт контроллера прерываний в пространстве ввода‐вывода. Входы IR0‐IR7 предназначены для приёма запросов на прерывание от переферийных устройств и ведомых контроллеров. Выходы CAS0‐CAS2 предназначены для идентификации конкретного ведомого контроллера.

Мы рассмотрели устройство функции работу контроллера прерываний. Полностью вопрос работы контроллера прерываний в данной статье рассматривать не будем. Но добавить можно следующее. Данный контроллер прерываний появился ещё в первых PC‐совместимых компьютерах. С тех пор, и процессоры, и сам компьютер во многом изменились, хотя некоторые моменты остались. Поэтому, для того, чтобы было понятней и была рассмотрена организация контроллера прерываний 8295A.

На приведенной выше схеме показаны сигналов приходящие не только на ведомый и ведущий контроллеры прерываний, но и на остальные ведомые. Однако на вашем компьютере или ноутбуке на самом деле 2 контроллера прерываний, как выше указывалось: ведущий и ведомый. Но можно создавать свои компьютерные системы, используя таким образом до 64 ведомых контроллеров прерываний.

В современных компьютерах уже давно функции контроллера прерываний выполняют не микросхемы 8259A, а «южный» мост. Однако, для всех программ и устройств всё остаётся по‐прежнему. Более того, контроллер прерываний можно программировать, и обращаться к внутренним регистрам и портам необходимо точно также, как и к контроллеру 8259A.

Наверх