Для сокращения непроизводительных потерь времени процессора за счет циклов ожидания при программном обмене, т.е. когда процессор не может заниматься ничем, кроме программы ВВ, используют обмен по прерыванию.
При готовности к обмену ПУ посылает в процессор запрос на обслуживание – сигнал INT (запрос прерывания). Этот сигнал появляется в произвольные моменты времени, а следовательно, и в произвольной точке текущей программы. Поскольку заранее неизвестно, в какой точке программы и какие ПУ инициируют прерывания, непосредственно в программе команды ВВ использовать нельзя.
Общие вопросы организации системы прерываний в ЭВМ рассмотрены ранее
в гл. 6. Некоторые вопросы, связанные с обслуживанием прерываний, рассмотрены при изучении команд RST и RET. Между тем использование конкретного процессора вносит свои особенности в последовательность операций по обслуживанию прерывания. Для микроЭВМ, построенной на базе МП комплекта КР580, эта последовательность выглядит следующим образом:
|
|
1. Контроллер ПУ или адаптер промежуточного интерфейса генерирует сигнал запроса прерывания, который подается на вход INT процессора непосредственно (если ПУ одно) или через контроллер прерываний (если ПУ много) в виде общего сигнала прерывания.
2. При наличии нескольких ПУ в контроллере прерывания осуществляется идентификация прерывающего устройства (т.е. выясняется, откуда поступил сигнал INT, и его приоритет).
3. Процессор завершает текущую команду и, если прерывание разрешено, формирует сигнал INTA (подтверждение прерывания), который выдается во внешнюю цепь (в частности, в системный контроллер), а также сбрасывает внутренний триггер разрешения прерываний, состояние которого идентифицируется сигналом INTE.
4. Содержимое PC (счетчик команд) автоматически запоминается в стеке.
5. Происходит переход к подпрограмме обслуживания данного ПУ (обработчику), при этом выполняются следующие операции:
- запоминание состояния прерванной программы, которое должно быть предусмотрено пользователем, т.е. составителем подпрограммы (это слово состояния процессора PSW º (A) (РгП), а также содержимое РОН, используемых в подпрограмме обслуживания прерывания); обычно для запоминания используют стек. В ряде современных процессоров PSW автоматически сохраняется в стеке, как и содержимое счетчика PC;
- выполнение собственно программы обслуживания процесса ВВ;
- восстановление состояния прерванной программы (т.е. извлечение и загрузка в соответствующие регистры PSW и содержимого РОН из стека).
6. Возобновляется выполнение прерванной программы по команде RET, являющейся обязательной последней командой обработчика.
|
|
Следует отметить, что реакция процессора на прерывание очень похожа на вызов подпрограммы, несмотря на то, что обращение к подпрограмме происходит в фиксированных точках программы, а прерывания возникают в случайных точках программы. Однако внешняя аналогия реакции на прерывание и вызов подпрограммы позволяют считать прерывание аппаратным вызовом подпрограммы (с помощью сигнала INT).
Поскольку сигнал на вход INT может поступить в произвольной точке программы, процессору необходимо проверять наличие сигнала запроса прерывания до перехода к следующей команде.
Следует отметить, что внутренний триггер разрешения прерываний INTE называется также маской прерывания. Состояние этого триггера идентифицирует сигнал с такой же мнемоникой. Если INTE = 0, то прерывания запрещены (замаскированы) и процессор не реагирует на сигнал INT = 1. Этот триггер управляется программно с помощью команд EI (разрешение прерывания) и DI (запрещение прерывания).