Внешние прерывания могут возникать во внешней по отношению к процессору среде и отмечать как аварийные ситуации (кончилась бумага на принтере, температура в реакторе превысила допустимый уровень, исполнительный орган робота дошел до предельного положения и т.п.), так и нормальные рабочие события, которые происходят в случайные моменты времени (нажатие клавиши на клавиатуре, исчерпан буфер принтера или ВЗУ и т.п.). Во всех этих случаях требуется прервать выполнение текущей программы и перейти на выполнение другой программы (подпрограммы), обслуживающей это событие.
Анализ состояния внешней среды можно осуществлять путем программного сканирования - считывания через определенные промежутки времени слов состояния всех возможных источников прерываний, выделения признаков отслеживаемых событий и переход (при необходимости) на прерывающую подпрограмму.
Однако, такой способ не обеспечивает для большинства применений приемлемого времени реакции системы на события, особенно при необходимости отслеживания большого числа событий. К тому же при коротком цикле сканирования большой процент процессорного времени тратится на проверку (чаще безрезультатную) состояния внешней среды.
Гораздо эффективней организовать взаимодействие с внешней средой таким образом, чтобы всякое изменение состояния среды, требующее реакции МПС, вызывало появление на специальном входе МП сигнала прерывания текущей программы. Организация прерываний должна быть обеспечена определенными аппаратными и программными средствами, которые мы и называем "подсистемой прерываний".
Функции подсистемы прерываний и их реализация
Подсистема прерываний должна обеспечивать выполнение следующих функций:
1) обнаружение изменения состояния внешней среды (запрос на прерывание);
2) идентификация источника прерывания;
3) разрешение конфликтной ситуации в случае одновременного возникновения нескольких запросов (приоритет запросов);
4) определение возможности прерывания текущей программы (приоритет программ);
5) фиксация состояния прерываемой (текущей) программы;
6) переход к программе, соответствующей обслуживаемому прерыванию;
7) возврат к прерванной программе после окончания работы прерывающей программы.
Рассмотрим варианты реализации в МПС перечисленных выше функций.
(1) Фиксация изменения состояния внешней среды может осуществляться различными средствами: двоичными датчиками, компараторами, схемами формирования состояний и т.п. Будем полагать, что все эти средства формируют в конечном итоге логические сигналы запроса на прерывание z, причем для определенности будем считать, что активное состояние этого сигнала передается уровнем логической единицы (H - уровень).
Количество источников запросов в МПС может быть различно, в том числе и довольно велико. Дефицит внешних выводов МП исключает возможность передачи запросов от ВУ по "собственным" линиям интерфейса. Обычно на одну линию запроса подключается несколько источников прерываний (по функции ИЛИ), а иногда и все источники системы - на единственный вход (как в i8080).
Рис. 5.1. Организация векторного прерывания
Различают два типа входов запросов на прерывания - радиальные и векторные. Процессор анализирует состояние входов запросов в конце каждого машинного цикла.
(2) Получив запрос на прерывание, процессор должен идентифицировать его источник, т.е. в конечном счете, определить начальный адрес обслуживающей это прерывание программы. Способ идентификации зависит от типа входа, на который поступил запрос.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.