Четверг, 19.09.2024
Kober
Меню сайта
Поиск
Категории раздела
Шпоры Орг ЭВМ [42]
Шпоры ОС [22]
Главная » Статьи » Шпоры Орг ЭВМ

15. Понятие допустимого момента прерывания. Обработка прерываний на уровне команд и на уровне микрокоманд. Схемы. Способы возврата из прерыв

15. Понятие допустимого момента прерывания. Обработка прерываний на уровне команд и на уровне микрокоманд. Схемы. Способы возврата из прерываний

Допустимые моменты прерывания программ

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

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

Имеются ситуации, в которых желательно немедленное прерывание. Например, если аппаратура контроля обнаружила ошибку, то целесообразно сразу прервать операцию, пока ошибка не оказала влияние на следующие такты работы машины.

Есть два способа организации прерывания программы:

1.     Обработка на уровне команд. Конвейер сбрасывается после завершения последней команды (после завершения прерывания команда перезапускается)

2.     Обработка на уровне микрокоманд. Конвейер сбрасывается после завершения последней микрокоманды. Время реакции больше. (после завершения прерывания микрокоманда перезапускается)

Различия:

·   Внутренние прерывания можно обрабатывать только на уровне микрокоманд

·   Внешние прерывания можно прерывать обоими способами.

·   Для обработки прерывания на уровне команд требуется запомнить адрес следующей команды и регистр флагов

·   Для обработки прерывания на уровне микрокоманды необходимо запомнить, дополнительно к перечисленному выше, ещё и состояние всех регистров (и программно доступные и программно недоступные). Т.е. нужна дополнительная память.

Классификация:

·   Внешнее прерывание – interrupt – уровень команд

·   Внешняя авария – abort – уровень микрокоманд

·   Команда – trap – уровень команд

·   Внутреннее прерывание – exception – уровень микрокоманд

Реализация прерываний на уровне команд

Прерывание поступает в секвенсор следующим образом: один из признаков, подаваемых на MUX, является признаком запроса прерываний на секвенсор. На вход адреса может передаваться такое значение (за счет признака), которое будет интерпретироваться не как адрес для выборки команд, а как запрос на прерывание с конкретным номером.

 


Реализация прерываний на уровне микрокоманд


На вход секвенсора подается адрес команды. Секвенсор преобразует адрес команды в последовательность микрокоманд. По ветке 2 идут внешние прерывая, по ветке 1 идут внутренние прерывания. Секвенсор и источник синхронизированы так, что при генерации микрокомандного прерывания адрес микропрограммы от секвенсора замещается адресом обработчика прерываний от источника (адрес мк от секвенсора запоминается). После обработки прерывания, на секвенсор поступает запомненный адрес мк, с которого он должен продолжить работу. При командном прерывании (ветка 2) секвенсор сбрасывается и начинает обрабатывать прерывание; после обработки прерывания, секвенсор возвращается к недообработанной команде, адрес которой хранится в регистре команд.

 

Следует отметить, что при прерываниях не работают конвейерные структуры, все команды выполняются последовательно. При вхождении прерывания на уровне команд конвейер сбрасывается и после обработки прерывания начинает заполняться с нуля.

Способы возврата из прерываний.

Возврат зависит от того, на каком уровне обрабатывалось прерывание (INT).

-        На уровне команд. Тогда все просто: продолжить выполнение с первой невыполненной команды и восстановить содержимое всех программно доступных регистров

-        На уровне МК. Если реализовывать как предыдущее, то увеличивается кол-во инф-ии,  которую надо записывать программно,  RG не достаточно.

Способы возврата

 

Возврат с подавлением используется редко (не используется при обычных прерываниях) Если в программе пользователя есть привилегированные операции (например в машинах разделения времени – физ. I/O) то возврат с подавлением.

Intel – использует возврат с перезапуском;

Motorolla 68K – с подавлением.

В перезапуске есть одна тонкость – нужен спец анализ на вид прерывания: внешнее или внутреннее. Надо учитывать точку возврата. Если содержимое регистров не изменилось, то возврат с перезапуском возможен, если изменилось то нет.

При микро прерывании надо запомнить адрес новой МК (вых SEQ, МПП) 

Если INT на уровне команд, то нужно запомнить

1.       указатель команд (IP)

2.       Длина команды (той кот была прервана)  нужна , при  «возврате с перезапуском», т.к. адрес след МК операции генерир. 1, 2 такта.

3.       Триггер работа-остановка (остановка – выполнение пустой программы)

4.       Маска прерывания

5.       Информация о распределении и защите памяти

Это все оформляется как слово состояния процессора (ССП, PSW). В начале прерывания запомним ССП, а обработчик запоминает всю остальную инф-ию, которая нужна.

1.1Если ССП запоминается в ОП, то в ячейке с фиксированными адресами.

VECT à адрес à CCП

             àадрес обработчика

0……..0

V ect

- адрес, где ССП

0……..1

V ect

- адрес обработчика

                                1 байт

Недостаток: повторное прерывание от одного обработчика запрещено, т.к. ССП будет потеряно

  2.1 Адреса обработчика и ССП не связаны между собой, ССП помещается в стек, vect à адрес обработчика

Достоинство: Может рассматриваться и повторное прерывание по одному и тому же вектору.

Запоминание PSW.

1.2 В ОП памяти. Для формирования адресов используется вектор прерывания.

Существует таблица PSW «старых» и «новых» программ.

Недостатки:

-   Нет возможности вложенных прерываний по одному вектору.

-   Неперемещаемость таблиц (можно исправить).

2.2 Использование стека.

Вход в прерывающую программу

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

1) Размещение прерывающих программ по фиксированным адресам. В некоторой постоянно распределенной области основной памяти по фиксированным адресам размещаются прерывающие программы, это размещение не меняется. Вход реализуется аппаратно, то есть адрес формируется аппаратно – это самый быстрый способ. Но у данного способа существуют серьезные ограничения:

a) привязка к адресам

b) количество причин прерывания должно быть достаточно малым

Этот способ применяется при малых системах прерывания и для тех причин, которые требуют немедленной реакции.

2) вход на основании слов состояния программы (PSW). Типичная структура слова состояния программы:

Маска прерывания

Ключ защиты памяти

Код состояния CPU

Адрес команды (пр-мы)

 

Схема входа в прерывающую программу. В некоторой постоянно распределенной области основной памяти формируется два массива: массив старых PSW и массив новых PSW. Любая пара слов состояния соответствует определенному запросу на прерывание. После выполнения активного запроса по соответствующему адресу в массив старых PSW загружается PSW текущей (прерываемой) программы. Характеристика программы в виде PSW записывается по определенному адресу. Из второго массива загружается новое (соответствующее прерывающей программе) PSW. Адрес записан в памяти – из PSW. Массив новых PSW всегда формируется при загрузке ОС. Массив старых PSW формируется в процессе работы. В отличие от предыдущего способа, использование PSW позволяет обслуживать и вложенные прерывания, если их приоритет выше текущей программы. Все это позволяет прерывать прерывающую программу. Недостаток: Вход в прерывающую программу требует загрузки достаточно больших слов (большого процессорного времени), следовательно, данный способ не очень быстрый. Этот вариант используется в универсальных компьютерах (для решения расчетных задач, т.е. не критичных ко времени)

3) Векторное прерывание – самый распространенный способ. Данный способ является программно-аппартным, т.е. для любого запроса (для любого выделенного запроса) аппаратно формируется адрес вектора прерывания. Чаще всего эти адреса фиксированы. Адреса векторных прерываний хранятся в системной области памяти. На основе адреса вектора из таблицы векторов прерывания извлекается начальный адрес прерывающей программы. Это приводит к тому, что код запроса может быть малобитным, но таблица векторов прерывания должна хранится в начальной области памяти. В качестве вектора прерывания используются:

a) адрес начала прерывающей программы (применяется в PC)

b) команда безусловного перехода к программе

Способ a) оказывается универсальным и допускает любую глубину прерывающих программ. Если таблица векторов является загружаемой, то это дает возможность пользователю изменять прерывающие программы даже в процессе решения задачи, которые обрабатывают один и тот же запрос.

 

Категория: Шпоры Орг ЭВМ | Добавил: Kober (10.06.2013)
Просмотров: 1923
Архив записей
Copyright MyCorp © 2024
Бесплатный хостинг uCoz