Лекции по Вычислительным машинам, системам и сетям   

2. Микропроцессорный комплект К1810

2.14. Обработка прерываний

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

Все прерывания в системе можно разделить на внутренние и внешние. Внешние прерывания вызываются событиями, внешними по отношению к МП, а внутренние – событиями, происходящими внутри МП.

Конечно, обработка прерываний в МП различных типов имеет свои особенности, однако общая схема действий для любых МП остается одной и той же.

При обработке внутреннего прерывания МП «известна» его причина, а следовательно, известен источник запроса. Поэтому укрупненно, при внутреннем прерывании МП выполняет следующие действия:

- запоминает в стеке адрес возврата в прерываемую программу;

- определяет начальный адрес обработчика для известного источника запроса и передает управление этому обработчику;

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

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

Существуют два метода определения внешнего источника запроса ‑ метод опроса и векторные прерывания.

Метод опроса. Этот метод можно реализовать, например, следующим образом. В систему вводится специальный порт (или несколько портов, при большом числе внешних источников прерываний). Все внешние запросы заводятся на входы этого порта, причем для каждого запроса отводится один бит порта. Одновременно все запросы через схему ИЛИ заводятся на вход INTR МП. На рис. 2.15 приводится подобная схема для восьми внешних источников прерываний (IR7IR0).

Восприняв запрос на входе INTR, МП выполняет следующий фрагмент программы:

in al, port_int

shl al, 1

jc obr7

shl al, 1

jc obr6

;читаем port_int

;сдвигаем содержимое al на один ;разряд влево

;если флаг cf установлен в единицу, ;это запрос по линии IR7, и переходим ;к обработчику этого прерывания

;сдвигаем al еще на разряд влево, если ;cf установлен, это запрос по IR6 и.т.д.

Рис. 2.15

Возможна ситуация, когда МП получает сразу несколько запросов на прерывание от разных внешних источников. Чтобы МП мог в такой ситуации функционировать, всем источникам запросов присваиваются приоритеты. При одновременном поступлении нескольких запросов, обслужен будет запрос с наивысшим приоритетом. В примере старший приоритет будет у IR7, а младший ‑ у IR0. Чтобы изменить приоритеты на противоположные, достаточно использовать команду сдвига вправо.

Достоинством метода опроса являются небольшие аппаратурные затраты, а недостатком – медленная реакция МП на запросы с низким приоритетом.

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



*****
© Банк лекций Siblec.ru
Формальные, технические, естественные, общественные, гуманитарные, и другие науки.