УКНЦ журнал 1994-01 прерывания

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

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

СИСТЕМА ПРЕРЫВАНИЙ ПРОЦЕССОРА К1801ВМ2

Статья из журнала «Персональный компьютер УКНЦ» №1 1994 год

Терминология

  • ВЕКТОР СОСТОЯНИЯ ПРОЦЕССА — значения счетчика команд и слова состояния
  • ВЕКТОР ПРЕРЫВАНИЯ — вектор состояния прерывающего процесса.
  • АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ — адрес ячейки памяти, содержащей значение СК прерывающего процесса. В следующей ячейке хранится значение ССП прерывающего процесса.
  • ПРОСЛЕЖИВАЕМАЯ КОМАНДА — команда, выполняемая при установленном Т-разряде в ССП.

Источники прерываний и их АВП

Прерывания, обусловленные применением процессора К1801ВМ2 и регистрируемые на магистралях ЦП и ПП, приведены в табл. 1.

Таблица 1
АВП Очередность Описание
4 2 Прерывание по запрещенной команде возникает при попытке выполнить команду с неправильно заданным методом адресации. К таким командам относятся команды JMP и JSR с регистровыми методами адресации
4 1 Прерывание по зависанию в канале возникает при попытке обращения по адресу несуществующей ячейки памяти или регистра ВУ
10 2 Прерывание по резервной команде возникает при попытке выполнить команду, код которой в данном процессоре не используется
14 4 Прерывание по Т-разряду вызывается после выполнения команды при установленном 4-м разряде ССП. Установка и очистка 4-го разряда возможна только при выполнении команд RTT, RTI, ШАГ, ПУСК и при загрузке вектора прерывания
24 5 Прерывание по сбою питания происходит при снижении сетевого питания за пределы допустимого уровня. По завершении выполнения текущей команды процессор переходит на выполнение программы обработки прерывания...
100 7 Прерывания от «сетевого таймера» возникают в момент достижения лучом кинескопа монитора конца кадра кадровый синхросигнал монитора.)
250 3 Прерывание по сигналу WIR. В ЦП УКНЦ используется только для работы внешних расширений магистрали ЦП (например, обработка ошибок обмена с дополнительными магистралями)
****** 8 Сигнал VIRQ (от устройств ЭВМ, см. след. главу)
160000 Прерывание по включении питания
160004 4 Зависание в режиме HALT
160170 6 Сигнал (команда) HALT
160174 6 Двойное зависание возникает в случае зависания в канале во время выполнения микропрограммной процедуры прерывания, вызванной зависанием при передаче данных по каналу (т.е. если при загрузке ВП процесса обработки прерывания по зависанию в СК попадает адрес несуществующей ячейки)
160274 6 Зависание при приеме адреса вектора прерывания фиксируется в случае, если внешнее устройство выставило запрос на прерывание и не формирует АВП. Это, в частности, происходит при возникновении требования прерывания внешним устройством во время выполнения команды маскирования прерывания в регистре состояния этого же устройства. Отсюда рекомендация запрещать прерывания конкретных устройств только при высоком приоритете процессора (ССП(7)-1)
160010 По этому вектору возникает прерывание в случае попытки выполнить команду арифметики с плавающей запятой *

Особые случаи прерывания по Т-разряду

  1. Если прослеживаемая команда RTI или RTT очищает Т-разяд, то после ее выполнения все же происходит прерывание по Т-разряду. Однако в стеке сохранится ССП с очищенным Т-разрядом.
  2. Если прослеживаемая команда ШАГ, ПУСК, HALT или команда прерывания очищает Т-разряд, то после ее выполнения прерывания по Т-разряду не происходит.
  3. Если прослеживаемая команда ШАГ или RTT устанавливает Т-разряд, то прерывание по Т-разряду произойдет после выполнения следующей за ШАГ или RTT командой.
  4. После выполнения остальных команд, устанавливающих Т-разряд, прерывание происходит сразу за ними.
  5. Если во время выполнения прослеживаемой команды произошло зависание и при загрузке ВП Т-разряд очищается, то прерывание по Т-разряду не происходит.
  6. Во время выполнения прослеживаемой команды WAIT Т-разряд игнорируется. При возврате из прерывания условия возникновения прерывания стандартны (см. пункты 4.1 и 4.3).

Алгоритм обработки прерываний

Прерывание текущего процесса обычно допускается лишь в конце выполнения команды. Только зависание в канале может прервать выполнение команды на любой фазе ее выполнения.

При возникновении условий прерывания процессор последовательно выполняет следующие действия:

  1. Микропрограммное сохранение вектора состояния прерываемого процесса либо в стеке, либо в КРСК и КРСП.
  2. Формирование значения АВП. Микропрограммная загрузка вектора прерывания из пары ячеек ОЗУ или ПЗУ.
  3. Анализируется состояние запросов на прерывание. Если незамаскированных запросов нет, то производится чтение первой команды нового процесса и ее выполнение. Иначе снова происходит процедура прерывания.

В ситуации включения питания, фатальных состояний или выполнения команды HALT (обработки сигнала HALT) процедура прерывания отличается от обычной:

  1. по процедуре безадресного чтения читается внешний регистр (SEL);
  2. формируется значение адреса вектора прерывания;
  3. разряды 15-8 берутся из соответствующих разрядов внешнего регистра, разряды 7-0 устанавливаются в зависимости от причины прерывания**;
  4. происходит принудительная установка режима «HALT», для загрузки ВП из адресного пространства этого режима;
  5. загружаются СК и ССП процесса обработки прерывания;
  6. если разряд 8 загруженного ССП очищен, то происходит возврат в режим «USER».
Примечания.

(*) Вообще говоря, процессор К1801ВМ2 фиксирует данное прерывание только в том случае, если 7 бит внешнего регистра (флаг наличия программной эмуляции команд арифметики с плавающей запятой) установлен. Но в УКНЦ возможность изменения этого регистра отсутствует, и по этому прерывание возникает всегда при прочтении вышеобозначенных команд.

(**) Биты 15-8 внешнего регистра служат для указания старших адресов рассматриваемых векторов прерываний, поэтому данные векторы могут размещаться в любом 256-байтном сегменте памяти. Это актуально для машин с отсутствующим или проецирующимся по другим адресам системном (SEL) ОЗУ. Как уже отмечено, в УКНЦ, изменить эти биты нельзя.