Определение момента выполнения процедуры прерывания

Сигнал прерывания, в общем случае, не является сигналом немедленного действия. Обычно сигнал прерывания (от внешних устройств) или ловушки (от схем контроля выполнения операций) просто фиксируется в соответствующем разряде регистра прерывания.

Выполнение перехода на программу обработки ситуации всегда происходит с определенной задержкой (время реакции системы прерывания).

Здесь возможны несколько вариантов в выборе момента начала процедуры прерывания:

· Программы состоят из последовательностей автономных участков (процедур) с минимальным набором передаваемой информации. Обычно это содержимое памяти или РОН. Это точки с минимумом контекста. Программист может отмечать эти точки особыми командами для использования их в качестве команд прерывания. Но это решение значительно увеличивает среднее время реакции системы прерывания.

· Среднее время реакции системы прерывания значительно (в разы) сокращается, если процедуру прерывания производить сразу после окончания текущей команды.

· Имеется еще возможность уменьшения времени реакции системы прерывания, если процедуру прерывания начинать сразу после окончания не команды, а текущей части команды (микрооперации), во время которой появился запрос прерывания. Но при этом приходится дополнительно сохранять результат текущей микрооперации.

В подавляющем большинстве архитектур ЭВМ процедура прерывания производится по окончании текущей команды.

На рис. 5.2 представлена упрощенная схема цикла выполнения команды с фиксацией ловушки (внештатной ситуации) и проверкой сигнала прерывания.

Выполнение команд в процессоре является циклическим. Начинаем рассмотрение с процедуры выборки команды. Это начало цикла. Результатом этого этапа является выборка и анализ полей команды, адресов операндов и результата. Следующим этапом является этап выборки операндов. Последующие этапы производят дешифрацию кода операции и передачу команды в блоки выполнения. Последним этапом является этап сохранения результата и записи признака результата в регистр состояния.

На всех этапах этой микропрограммы работает встроенная аппаратная система непрерывного контроля безошибочности работы аппаратуры. При обнаружении ошибок (сбоев) на любом этапе выполнения команды система производит фиксацию ошибки. Перед началом каждого следующего этапа производится проверка корректности выполнения предыдущего этапа. В случае обнаружения ошибки, она фиксируется в специальном регистре как исключительная ситуация (ловушка), и управление передается (в обход всех последующих этапов) на блок проверки наличия сигналов прерывания или ловушки (см. рис 4.1).

В случае обнаружения прерывания или ловушки производится соответствующая процедура прерывания или ловушки.