Типы прерываний и источники возникновения запросов. Принципы обработки прерываний и флаговая логика микропроцессоров, страница 9

ВС за счет распараллеливания работы периферийных устройств с

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

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

Логика работы программируемого контроллера прерываний построенного на БИС Intel 8259 принята за основу при создании более современных устройств подобного типа. Это обеспечивает совместимость выпускаемых сегодня компьютеров с более ранними модификациями.

Программируемый контроллер прерываний Intel 8259 поддерживает восемь уровней приоритетов. Это достаточно для конфигурации персонального компьютера типа XT. Для AT с шестнадцатью уровнями приоритетов используются две такие БИС, соединенные каскадно. Таким образом, ведущий контроллер обрабатывает первые восемь аппаратных прерываний от IRQ0 до IRQ7 включительно, а ведомый следующие прерывания от IRQ8 до IRQ15. Приоритеты между ними распределены так, что уровни приоритетов ведомого контроллера находятся между вторым и третьим уровнями ведущего.

________________________________________________________________

Номер              Номер  IRQ                       Функция прерывания    прерывания  ведущий ведомый

hex         КП     КП

_______________________________________________________________

08             0              запрос от таймера

09           1             запрос от контроллера клавиатуры

0A            2              подчиненный (ведомый) Intel 8259А или вертикальный обратный ход луча

EGA/VGA

70                 8     часы реального времени     

71                     9     программно переводятся в IRQ2

72                  10     зарезервировано

73        11     зарезервировано

74                  12     мышь

75                13     ошибка операции математического сопроцессора

76                  14     КНЖМД

77                  15     зарезервировано

0B           3             COM2 ( COM4 )

0C           4             COM1 ( COM3 )

0D           5             КНЖМД ( XT ) или LPT2 ( AT )

0E           6             КНГМД

0F           7             LPT1

_________________________________________________________________

КП на основе БИС 8259 имеет три однобайтовых регистра, которые управляют восемью линиями аппаратных прерываний:

- IRR - регистр запроса на прерывание, устанавливает соответствующий бит, когда линия прерывания сигнализирует о запросе;

- ISR - регистр обслуживания прерывания, содержит информацию о том, обрабатывается ли в данный момент другое прерывание и контролирует цепь приоритетов;

- IMR - регистр маски прерывания служит для хранения, разрешения и запрета ( маскирования ) прерываний.

Назначение битов регистров контроллера приведено на рис.1. 

Как правило, программисты  обращаются только к регистру

IMR через порт 21h  и к командному  регистру или регистру обслуживания прерывания ISR через порт 20h.

                    Маскирование аппаратных прерываний

Регистр IMR позволяет программно запретить или разрешить прерывания от периферийных устройств ( поэтому их иначе называют маскируемыми ). Маскирование может быть полным, когда блокируются все прерывания, и частичным, когда маскируются только определенные аппаратные прерывания.

Полное маскирование необходимо в случаях, когда критический участок программы должен быть выполнен целиком прежде, чем компьютер выполнит какое-либо другое действие. Например, при изменении вектора аппаратного прерывания, чтобы избежать выполнения прерывания по неполностью измененному вектору.

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