Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСС-всё(ЭКЗАМЕН).docx
Скачиваний:
37
Добавлен:
09.12.2018
Размер:
8.84 Mб
Скачать

3.3.3.2. Последовательность событий при прерываниях.

Каждое ПерУ, подключенное к процессору через систему прерывания, может посылать в процессор сигнал запроса прерывания (ЗПр). Это просьба об обслуживании, требование реакции процессора, иногда – немедленной.

Сигнал ЗПр появляется асинхронно к действиям процессора, управлять фактом его появления программа, выполняемая процессором не может. Выхода только два:

  1. игнорировать ЗПр;

  2. временно приостановить текущую программу, перейти к другой программе (подпрограмме) обслуживания ЗПр, обслужить и вновь вернуться к выполнению прерванной программы.

Остановимся пока на втором варианте действий.

Итак, запрос принят не проигнорирован. Программе обслуживания ПерУ почти наверняка потребуются внутренние регистры АУ, СОЗУ, а значит их содержимое будет изменено. (Конечно, возможна ситуация, когда обмен с ПерУ не задевает ход текущего процесса в АУ, а касается только некоторой зоны памяти. Здесь не совсем прерывание, а кроме того, возможен непрограммный путь!). Итак, «..изменено…» Но прерываемая программа ничем не провинилась и должна по окончании обслуживания ПерУ выполняться так, будто никакого прерывания ее не было. Она уже пострадала тем, что мы удлинили время ее выполнения. Следовательно, перед обслуживанием прерывания содержимое всех регистров, которые потребуются ему, надо временно запомнить, например - в ОЗУ, а еще удобнее в стековой памяти, с последующим возвратом.

Теперь о возможном игнорировании ЗПр. ЗПр только и означает, что процессор должен делать нечто иное, очень важное. Но ведь и выполняемая программа полностью или в какой-либо своей части может быть очень важна, не допускает промедления. Выход, возможно, – на время исключить ЗПр из рассмотрения, игнорировать.

<145>

Строго рассуждая, в момент «рассмотрения заявления» на прерывание может возникнуть ещё одна проблема: а если периферийных устройств несколько и все они способны послать свой ЗПр? Надо выяснить, кто обращается и по ходу работы установить, насколько это срочно.

Вырисовывается такая картина:

Рис. 3.3.3.4.

Существуют нюансы:

а) все операции по организации прерываний могут быть реализованы только командами, в том числе возможны и команды запрета/разрешения прерывания;

б) в зависимости от того, какое ПерУ стало источником ЗПр, может быть наложена или не наложена блокировка;

в) как определить, когда прерывание обслужено? нужна специальная команда окончания?

Видимо некоторые операции необходимо рассмотреть подробнее.

Процессы запоминания состояния процессора после восприятия ЗПр и его восстановления называют иногда контекстным переключениями. Их скорость существенно влияет на производительность ЭВМ. Поэтому-то и используются стеки.

<146>

3.3.3.3. Идентификация прерывающего устройства.

Способы решения проблемы идентификации различаются скоростью реакции процессора и объемом дополнительных аппаратных затрат.

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

Рис. 3.3.3.5.

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

Недостаток программного полинга – необходимость проверки всех устройств увеличение времени опроса.

<147>

Аппаратный поллинг. (Дейзи – цепь, приоритетная цепочка, гирляндное включение ПерУ и пр.) Он заключается в организации специальной линии распространения сигнала подтверждения прерывания, проходящей через все устройства. Устройство, запросившее прерывание, блокирует (аппаратно!) дальнейшее распространение сигнала. Приоритеты расставляются в соответствии с «географической» близостью к процессору. Затем ПерУ передает в процессор свой адрес с сопровождающим его обычно стробом.

Рис. 3.3.3.6. Схема аппаратного поллинга.

– это стробирующе-синхронизирующий импульс, сопровождающий передачу в процессор адреса идентифицированного устройства.

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

<148>

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

«Векторного» в этом адресе лишь то, что он указывает, направляет.

Обычно формирование векторов прерываний возлагается на специальную схему выбора приоритетов (другое название – БПП ).

Контроллеры прерывания. Основные функции:

  • аппаратный полинг;

  • смена системы приоритетов (круговой простой и по обработке запросов);

Рис. 3.3.3.8.

(возможен и случайный приоритет и многие другие)

  • аппаратный запрет прерываний;

  • организация многоуровневых прерываний.

Процессорная реализация функций контроллера:

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

<149>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]