53
леры прерываний небольших микроЭВМ часто строятся на логических микросхемах
общего назначения.
Основными функциями системы прерывания являются:
• запоминание состояния прерываемой программы и осуществление перехода
к прерывающей программе;
• восстановление состояния прерванной программы и возврат к ней.
Под термином
состояние программы (процессора), строго говоря, следует по-
нимать совокупность состояний всех запоминающих элементов (триггеров, регист-
ров, ячеек памяти) в соответствующий момент времени (например, после выполне-
ния микрокоманды, команды, программы). Однако не вся эта информация искажает-
ся при переходе к другой команде или программе, поэтому из всего многообразия
информации о состоянии программы (процессора)
отбирают наиболее существен-
ные ее элементы, изменяющиеся при переходе к другой команде или программе.
Вектор состояния в каждый момент времени должен содержать информацию,
достаточную для запуска программы с точки, соответствующей моменту формиро-
вания данного вектора состояния. При этом предполагается, что другая информация
о состоянии узлов процессора либо не существенна, либо может быть восстановле-
на программным путем.
Вектор состояния формируется в соответствующих регистрах процессора, из-
меняясь после
выполнения каждой команды. Наборы информационных элементов,
образующих вектор состояния, отличаются у ЭВМ разных типов и зависят от слож-
ности процессора. В простейших процессорах эти наборы невелики. Например, в
процессоре КР580ВМ80 (
I8080) вектор состояния состоит из содержимого счетчика
адреса команд (16 бит), содержимого регистра признаков (8 бит) и содержимого ак-
кумулятора (8 бит). В более сложных процессорах вектор состояния может содер-
жать существенно большее количество элементов.
Аналогично,
вектор начального состояния должен содержать всю необходи-
мую информацию для начального запуска программы. Во многих случаях вектор на-
чального состояния содержит только один элемент – начальный адрес запускаемой
программы.
При рассмотрении систем прерывания очень широко используется также тер-
мин
вектор прерывания, который является ничем иным, как вектором начального
состояния прерывающей программы (обработчика). Вектор прерывания содержит
всю необходимую информацию для перехода к обработчику, в том числе его на-
чальный адрес. Каждому уровню прерываний (см. п. 6.1), а в простых ЭВМ каждому
входу прерывания (периферийному устройству) соответствует свой вектор прерыва-
ния, который инициализирует выполнение
соответствующего обработчика. Обычно
векторы прерывания хранятся в специально выделенных фиксированных ячейках
памяти с короткими адресами. Таким образом, для перехода к соответствующей
прерывающей программе процессор должен располагать не только вектором преры-
вания, но и адресом этого вектора.
Следует иметь в виду, что понятие вектор прерывания достаточно условно, по-
скольку в абсолютном большинстве
случаев вектор прерывания состоит только из
одного элемента – начального адреса прерывающей программы (обработчика).
При наличии нескольких источников запросов должен быть установлен опреде-
ленный порядок обслуживания поступающих запросов, т.е. должны быть установле-
ны
приоритетные соотношения (дисциплина обслуживания). Они определяют, ка-
кой из нескольких запросов, поступивших одновременно, подлежит обработке в пер-
вую очередь, имеет ли право данный запрос прерывать ту или иную программу и т.д.
Все это входит в процедуру перехода к прерывающей программе.