Последовательность событий при прерываниях
Раздел 6. Система прерываний.
Во время выполнения ЭВМ текущей программы внутри машины и в связанной с ней внешней среде (например, в технологическом процессе, управляемом ЭВМ) могут возникать события, требующие немедленной реакции на них со стороны машины.
Реакция состоит в том, что машина прерывает обработку текущей программы и переходит к выполнению некоторой другой программы, специально предназначенной для данного события. По завершении этой программы ЭВМ возвращается к выполнению прерванной программы.
Рассматриваемый процесс называется прерыванием программ и поясняется на рис. 6.1. Принципиально важным является то, что моменты возникновения событий, требующих прерывания программ, заранее неизвестны и поэтому не могут быть учтены при программировании.
Рис.6.1 Общая реакция системы на прерывание
Каждое событие, требующее прерывания, сопровождается сигналом, оповещающим ЭВМ.
Запрос прерывания – сигнал, оповещающий ЭВМ о наличии события, требующего прерывания.
Прерывающая программа - программа, затребованная запросом прерывания.
Прерываемая программа – программа, выполняемая машиной до появления запроса прерывания.
Запросы на прерывания могут возникать внутри самой ЭВМ и в ее внешней среде.
Внутренние запросы прерываний:
· запросы при возникновении ошибки в работе аппаратуры
· переполнение разрядной сетки
· попытка деления на 0
· выход из установленной для данной программы области памяти
· затребование периферийным устройством операции ввода-вывода
· завершение операции ввода-вывода периферийным устройством
Запросы во внешней среде:
· от других ЭВМ
· от аварийных и некоторых других датчиков технологического процесса
Возможность прерывания программ — важное архитектурное свойство ЭВМ, позволяющее эффективно использовать производительность процессора при наличии нескольких протекающих параллельно во времени процессов, требующих в произвольные моменты времени управления и обслуживания со стороны процессора. В первую очередь это относится к организации параллельной во времени работы процессора и периферийных устройств машины, а также к использованию ЭВМ для управления в реальном времени технологическими процессами.
Чтобы ЭВМ могла, не требуя больших усилий от программиста, реализовывать с высоким быстродействием прерывания программ, машине необходимо придать соответствующие аппаратурные и программные средства, совокупность которых получила название системы прерыванияпрограмм или контроллера прерывания.
Основными функциями системы прерывания являются:
Ø запоминание состояния прерываемой программы и осуществление перехода к прерывающей программе
Ø восстановление состояния прерванной программы и возврат к ней
Последовательность событий при прерываниях.
Каждое периферийное устройство может посылать в процессор сигнал INT запроса прерывания или запроса на обслуживание, когда оно готово к операциям ВВ, т. е. требует немедленной реакции процессора.
Сигнал INT появляется в произвольные моменты времени, асинхронно по отношению к действиям процессора, и управлять его появлением программа не может. Следовательно, заранее неизвестно, в какой точке программы и какие периферийные устройства инициируют прерывания, поэтому непосредственно в программе команды ВВ использовать нельзя.
Кроме как увеличением времени выполнения факт обслуживания прерывания не должен влиять на прерванную программу. Следовательно, содержимое всех регистров, необходимых подпрограмме обслуживания прерывания, следует временно запоминать. Удобно и просто использовать в качестве такого временного «хранилища» стек.
Практически в каждом процессоре реализована особая структура системы прерываний, а программируемые БИС управления прерываниями еще более увеличивают число разновидностей этой структуры. Однако общая последовательность реакции процессора на сигнал прерывания примерно одинакова и содержит следующие действия:
1. периферийное устройство генерирует сигнал прерываний, который подается на вход INT процессора; на этой линии по схеме ИЛИ объединяются запросы всех устройств, работающих в режиме прерываний;
2. процессор завершает текущую команду и, если прерывания разрешены (не замаскированы), формирует сигнал INTA (или INT ACK) подтверждения прерывания; до получения этого сигнала устройство сохраняет активный уровень сигнала INT;
3. осуществляется запоминание содержимого PC и некоторых других внутренних регистров в стеке, причем содержимое PC обычно запоминается автоматически;
4. процессор идентифицирует прерывающее устройство для перехода к соответствующей подпрограмме обслуживания (наиболее распространенные способы идентификации прерывающих устройств рассмотрены ниже);
5. выполняется короткая (30—50 байт) подпрограмма обслуживания прерывания, в которой запрограммированы действия по передаче данных, модификации указателей, проверке окончания операций ВВ и др.;
6. восстанавливается состояние прерванной программы, для чего запомненное содержимое регистров извлекается из стека;
7. возобновляется выполнение прерванной программы; это действие инициируется командой возврата из прерывания RTI, являющейся последней командой подпрограммы обслуживания прерывания.
Системы прерываний можно классифицировать по объему перечисленных действий, которые реализуются аппаратно или программно. Разумеется, чем большее их число реализовано аппаратно, тем быстрее реакция процессора на прерывание.
После окончания каждой команды программный счетчик адресует ту команду программы, которая выполнялась бы при отсутствии прерывания, поэтому после обслуживания прерывания программа продолжается обычным образом.
Из анализа действий процессора при восприятии сигнала прерывания следует, что они очень похожи на действия при вызове подпрограммы. Однако вызов подпрограммы запрограммирован и полностью предсказуем, а переход к обслуживанию прерывания инициируется внешним сигналом, момент появления которого предсказать невозможно. Тем не менее, внешняя аналогия реакции на прерывание и вызова подпрограммы позволяет считать прерывание аппаратным вызовом подпрограммы. Выполняемые при этом вызове действия процессора, связанные с вводом-выводом, ограничиваются только его программными возможностями.
Система приоритетов
При наличии нескольких источников запросов прерывания должен быть установлен определенный порядок (дисциплина) в обслуживании поступающих запросов. Другими словами, между запросами (и соответствующими прерывающими программами) должны быть установлены приоритетные соотношения, определяющие, какой из нескольких поступивших запросов подлежит обработке в первую очередь, и устанавливающие, имеет право или не имеет данный запрос (прерывающая программа) прерывать ту или иную программу. Приоритетный выбор запроса для исполнения входит в процедуру перехода к прерывающей программе.
Различают абсолютный и относительный приоритеты.