Случай нескольких ВУ.
Если предполагается, что несколько ВУ может работать в режиме прерывания, то возникают дополнительные проблемы:
· у МП не хватает входов "ЗПР";
· требуется несколько подпрограмм обслуживания прерывания с организацией механизма передачи им управления;
· необходимо определить, какое ВУ выдает сигнал "ЗПР";
· при одновременном запросе прерывания от нескольких ВУ нужно выяснить, какое ВУ обслужить в первую очередь.
Обычно эти проблемы решаются двумя путями.
1. На аппаратном уровне выделяется отдельный блок сопряжения, называемый блоком приоритетных прерываний (БПП), на который возлагаются следующие функции (см. рис.23):
· объединение всех выходов "Запрос прерывания" от ВУ в один для соединения с входом "Запрос прерывания" МП;
· маскирование несущественных в текущий момент "Запросов прерывания" от ВУ;
· ранжирование ВУ по приоритетам (при их одновременных запросах);
· передача МП информации о том, какой подпрограмме обслуживания передать управление для обработки запроса прерывания.
2. На программном уровне в основной программе программист должен выполнить предварительную настройку БПП на текущие потребности; создать столько подпрограмм обработки прерываний, сколько имеется активных ВУ; организовать передачу им управления при получении соответствующей информации от БПП.
Рис.23 |
Совокупность всех выходов "Запрос прерывания", подсоединенных к МПС, называется вектором прерывания. В МП предусматривается несколько команд передачи управления на определенные адреса – ровно столько, какой размерности допустим вектор прерывания. Такие команды - однословные, длиной, соответствующей разрядности шин данных в МП. При обработке прерывания МП после выдачи сигнала "Разрешение прерывания" принимает с ШД код такой команды, выставленный БПП, и тем самым "узнает", на какой адрес передать управление для обработки данного прерывания. Так в персональных ЭВМ клона РС такие прерывания называются "Int" (interrupt, прерывание).
Протокол обмена между БПП и МП в момент поступления запроса на прерывания от ВУ выглядит следующим образом:
1. БПП выставляет сигнал "ЗПР" на МП.
2. МП завершает выполнение текущей команды, сохраняет в стеке адрес возврата и выдает на БПП сигнал "РПР", освобождая магистраль.
3. При получении "Разрешение прерывания" БПП выставляет на магистраль код команды безусловного перехода на фиксированную область памяти, соответствующую активированному входу "ЗПР" БПП.
4. МП принимает код этой команды с магистрали и исполняет ее.
Если количество ВУ больше, чем имеет входов "ЗПР" у БПП, применяется каскадное подключение нескольких БПП. В этом случае на программу возлагается либо опрос состояния БПП (аппаратный полинг), либо опрос состояния ВУ (программный полинг).
Дата добавления: 2017-02-13; просмотров: 1304;