Обслуживание прерываний, корректировка таймера

Система прерываний позволяет процессору изменять свое состояние при возникновении определенных условий как внутри ЦП, так и вне его (п. 3.3). Прерывания происходят только в том случае, если они разрешены, т. е. не замаскированы (прил. 7), и принимаются к обработке после завершения выполнения текущей команды, но до начала выполнения следующей. Однако при возникновении некоторых программных прерываний н прерываниях от схем контроля становится нецелесообразным или даже невозможным продолжение выполнения текущей команды. В этих случаях осуществляется переход на обработку прерываний до ее завершения.
После выполнения какойлибо команды в начале выборки следующей проводится анализ 38 (п. 4.4). Составной частью этого анализа является проверка состояния разрядов регистра фиксации прерываний РФПД . При РФПД =0 происходит переход на подпрограмму обработки прерываний (вх. 3, п. 4.4).
Вначале по микроприказу АНЗ (1) (см. смотреть статью под номером 18, п. 3.5) анализируется состояние триггера интервалов времени (ТИВ). Если ТИВ = 1, то происходит переход на обработку таймера (смотреть статью под номером 66). Если же ТИВ = 0, то в данный момент обработки таймера не требуется, и анализируется состояние следующих разрядов РФПД для определения класса прерываний, запросы которых в нем зафиксированы.
Класс прерываний определяется по микроприказу АН42 (3). Кодирующая схема выдает на МАН код класса прерывания, который модифицирует базовый адрес 5.F.0100 (см. смотреть статью под номером 15) следующей микрокоманды. Модифицированный адрес определяет начальный адрес микропрограммы обработки соответствующего прерывания. При входе в микропрограмму обслуживания прерывания любого класса в начале всегда выполняются действия по формированию фиксированного адреса старого ССП (прил. 10), который засылается в регистр адреса процессора РАП, а также запоминается для дальнейшего использования во втором операционном регистре РОП2. Установленный в единичное состояние триггер ТФАП блокирует ошибки, которые могут возникнуть при обращении к ОПв момент записи старых ССП. При обслуживании прерываний от вводавывола блокировка ошибок обращения к ОП произволится триггером ТФАК, входящего в состав каналов ввода-вывода. В этом случае для сообщения каналу о начале обслуживания прерывания устанавливается в «1* триггер блокировки ТВ. Он блокирует продвижение микропрограммы ЦП на промежуток времени, в течение которого канал записывает в ОП слово состояния канала. По окончании записи ССК канал передает в ЦП код прерывания и сбрасывает триггер блокировки, разрешая тем самым дальнейшее продвижение микропрограммы. Центральный процессор записывает полученный из канала код прерывания в разряды [16/31 ] текущего ССП, после чего происходит выход на общую для всех классов прерываний часть микропрограммы. По ней осуществляется запись текущего ССП в качестве старого, формирование адресов новых ССП, чтение их из ОП и запись в РССП в качестве текущего слова состояния. При обслуживании прерываний от внешнего источника РФП [3] сбрасывается по отдельному микроприказу РФП [31 : = 0. Это объясняется тем, «то запросы внешних прерываний аппаратно не гасятся (п. 3.2). Микропрограмма обработки прерывания завершается подпрограммой ожидания.
Если в ходе выполнения команды возникают ошибки защиты памяти, адресации, спецификации (п. 3.4), данных и переполнение в операциях с фиксированной запятой (ППФЗ) (п. 2.4), то аппаратурно вырабатывается сигнал, по которому шифратор пульта управления формирует один из фиксированных адресов 0.А.8, 0.А.9, О.А.А, О.А.В или О.А.С соответственно. При этом возникает немедленное прерывание программы (п. 3.2), а названные адреса являются начальными адресами соответствующей подпрограммы обработки прерываний.
В ходе выполнения микропрограммы команды возможно возникновение условия программного прерывания. В этом случае микропрограмма формирует адрес БОП 0.0.С, который обеспечивает вход в микропрограмму обработки прерывания. Например, при выполнении операции в команде ЗАГРУЗКА ССП (п. 5.2) в ее начале анализируется состояние процессора ЗАДАЧА/СУПЕРВИЗОР), поскольку эта команда является привилегированной и может выполняться только в состоянии СУПЕРВИЗОР. Если процессор находится в состоянии ЗАДАЧА, то следует переход на микрокоманду 1.6.А, по которой устанавливается в единичное состояние РФП [1 ] (РФП [1] := 1), в РОШО заносится код 2 (Ml := 0000 0002, РОП10 : = Ml), означающий прерывание по привилегированной операции (прил. 8), и происходит переход по адресу 0.0.С на подпрограмму обработки прерывания.
Таймер служит для измерения интервалов времени. Код текущего времени представляет полное слово, хранящееся в ОП по фиксированному адресу 50,8. Слово таймера по указанному адресу записывается операционной системой. Во время работы процессора периодически, с частотой 50 Гц, происходит корректировка (обработка) содержимого слова таймера по специаль ной микропрограмме. Это происходит в промежутках между выполнением команд.Таймерныйтриггер интервалов времени устанавливается в состояние «1» с частотой 50 Гц специальным генератором. Перед началом очередной команды, когда анализируется РФПД для проверки наличия необработанных запросов прерываний (см. выше), единичное состояние этого триггера вызывает переход на микропрограмму обработки таймера (смотреть статью под номером 67). В начале микропрограммы происходит сброс ТИВ := 0, формируется и записывается в РАП адрес слова таймера, устанавливается в единичное состояние ТФАП. Затем слово таймера выбирается из ОП. Оно рассматривается как целое число со знаком, разряды [24/31 ] которого не используются. По правилам операций с фиксированной запятой производится вычитание из этого числа единиц в 21м и 22м разрядах. Иными словами, из 32разрядного слова таймера вычитается операнд 0000 0600. При переходе значения
слова таймера от положительного к отрицательному (переполнение таймера) формируется внешнее прерывание, которое фиксируется в РФП по микроприказу РФП [3] := 1, и происходит переход к микропрограмме обслуживания прерывания. Если переполнение отсутствует, то происходит переход к подпрограмме ожидания.
Подпрограмма ожидания исследует значение РССП [14], определяющее состояние процессора: ОЖИДАНИЕ или СЧЕТ (прил. 7). Если РССП [14] = 0, то процессор находится в состоянии СЧЕТ и поэтому производится выборка очередной команды. В противном случае организуется цикл ожидания с анализом РССП [14] и анализом появления запроса на прерывание, которое может возникнуть. В состоянии ОЖИДАНИЕ команды не выполняются и обращения к ОП со стороны процессора отсутствуют.
Состояние ОЖИДАНИЕ может быть изменено внешним прерыванием или прерыванием от ввода-вывода.
Подпрограммой ожидания оканчиваются микропрограммы тех операций или пультовых процедур, в которых возможна смена текущего ССП или его части, ведущая к изменению состояния РССП [14].

Желательно оставить комментарий, также можно поставить трэкбек со своего блога или сайта.

Написать сообщение

Яндекс.Метрика