IBM370
.pdfВЫЧИТАНИЕ БЕЗ НОРМАЛИЗАЦИИ |
|
|
||||||||
SUR |
R1,R2 |
|
[RR, ???????? ????????] |
|
||||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
3F |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
SU |
R1,D2(X2,B2) |
[RX, ???????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
¦ |
7F |
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
31 |
|
SWR |
R1,R2 |
|
[RR, ??????? ????????] |
|
||||||
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
¦ |
2F |
¦ |
R1 |
¦ |
R2 |
¦ |
|
|
|
|
+-------------------- |
|
|
|
|
|
+ |
|
|
|
|
0 |
7 |
8 |
11 |
12 |
15 |
|
|
|
|
|
SW |
R1,D2(X2,B2) |
[RX, ??????? ????????] |
||||||||
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
¦ |
6F |
¦ |
R1 |
¦ |
X2 |
¦ |
B2 |
¦ |
D2 |
¦ |
+-------------------------------------- |
|
|
|
|
|
|
|
|
|
+ |
0 |
7 |
8 |
11 |
12 |
15 |
16 |
19 |
20 |
31 |
|
Второй операнд вычитается из первого операнда, и ненормализованная разность помеща-
ется на место первого операнда.
Команда ВЫЧИТАНИЕ БЕЗ НОРМАЛИЗАЦИИ выполняется аналогично команде СЛОЖЕНИЕ БЕЗ НОРМАЛИЗАЦИИ и отличается от последней лишь тем, что пере сложением знак второго операнда изменяется на противоположный.
Поля R1 и R2 должны задавать номера регистров 0, 2, 4 или 6. В противном случае фикси-
руется особый случай спецификации.
Признак результата:
0 – мантисса результата равна нулю;
1 – результат меньше нуля;
2 – результат больше нуля;
3 – не бывает.
Программные прерывания:
операция (если в данной установке отсутствуют средства обработки чисел с плавающей точкой);
301
доступ (выборка второго операнда в командах SU и SW);
спецификация;
переполнение порядка;
потеря значимости.
302
_лава 12. Средства обработки машинных ошибок
Средства обработки машинных ошибок в Системе 370 обеспечивают широкие возможности обнаружения сбоев машины, что позволяет гарантировать целостность рабочего процесса, вы-
полняемого системой. Эти средства обеспечивают также автоматическое восстановление по-
сле некоторых сбоев и предоставление необходимой информации посредством прерывания от схем контроля с целью обслуживания и ремонта, а также с целью определения масштабов нарушения и восстановления работоспособности системы программными средствами.
12.1.Обнаружение машинных ошибок
Механизмы обнаружения машинных ошибок отличаются разнообразием, что особенно ха-
рактерно для схем управления арифметической и логической обработкой, адресацией, после-
довательностью и выполнением операций. Для программно адресуемой информации обнару-
жение ошибки обычно достигается путем добавления избыточной информации, определяемой таким образом, что большинство нарушений при хранении или передаче информации будет приводить к недопустимому коду. Обычно один или несколько избыточных битов присоединя-
ются к группе информационных битов. Такие избыточные биты называются контрольными би-
тами. Группа битов данных вместе с контрольными битами называется контролируемым бло-
ком.
Включение одного контрольного бита в контролируемый блок позволяет обнаружить любую одиночную ошибку в этом блоке. При такой организации контрольный бит иногда называют би-
том четности. В других случаях вводят несколько контрольных битов, в результате чего уве-
личиваются возможности контроля и в некоторых случаях обеспечивается избыточность, до-
статочная не только для обнаружения, но и для исправления ошибки. полное содержимое кон-
тролируемого блока, включая избыточные биты, будем называть кодом контролируемого бло-
ка или контролируемым кодом (CBC). Говорят, что CBC является допустимым, если он пол-
ностью удовлетворяет требованиям контроля (т.е. ошибки не обнаруживаются). Если преду-
сматривается как обнаружение, так и исправление ошибок и если контролируемый код хотя и не является допустимым, но удовлетворяет требованиям контроля, подразумевающим исправ-
ление (обнаруженная ошибка может быть исправлена), то будем говорить, что CBC является
корректируемым. Наконец, в том случае, когда CBC не удовлетворяет требованиям контроля
(неисправимая ошибка), его называют недопустимым.
12.2.Механизмы восстановления
Могут быть применены следующие три способа восстановления после сбоев, обнаруженных в машине: исправление по избыточности, повторение операции и отключение блока системы.
Исправление по избыточности
Если обеспечена достаточная избыточность в аппаратных схемах или в контролируемом блоке, то ошибки могут быть исправлены. Например, троирование схемы и выбор двух из трех одинаково работающих схем обеспечивают исправление любой одиночной ошибки. Способ ор-
ганизации, позволяющий с помощью избыточности исправлять ошибки определенного порядка
303
и обнаруживать ошибки более высокого порядка, называется контролем с исправлением оши-
бок. Обычно этот способ позволяет обнаруживать двойные ошибки и исправлять одиночные.
Аппаратное повторение операции в процессоре
В моделях с возможностью повторения операции в процессоре информация о состоянии машины периодически запоминается. Логическая точка в ходе обработки, к которой относится сохраненная информация, называется аппаратной контрольной точкой. Когда обнаружива-
ется сбой, предпринимается попытка восстановления путем возврата к тому состоянию маши-
ны, которое она имела в последней аппаратной контрольной точке, и продолжения обработки,
начиная с этой точки. Интервал между контрольными точками зависит от модели. В некоторых случаях в одной команде может быть предусмотрено несколько контрольных точек, в других случаях контрольные точки устанавливаются только в начале команд или еще реже.
Отключение блока системы
В некоторых моделях можно обойти сбои, происшедшие в определенных вспомогательных блоках системы, прекратив их дальнейшее использование. Примером может служить частич-
ное или полное отключение буферной памяти или буфера быстрой переадресации (TLB).
12.3.Обработка машинных ошибок
Машинная ошибка может явиться только результатом сбоя машины, и ее никогда не могут вызывать данные или команды. Это обеспечивается тем, что в процессе включения питания средства управления машиной устанавливаются в допустимое состояние и допустимые кон-
тролируемые коды формируются в программно адресуемых регистрах, в ключах памяти, а так-
же в основной памяти, если последняя является энергозависимой.
Обращение к недоступному компоненту системы, такому, как блок памяти, канал или внеш-
нее устройство, не вызывает индикации машинной ошибки. Вместо этого подобная ситуация указывается посредством соответствующего программного прерывания, прерывания ввода-
вывода или же с помощью установки признака результата.
Указание о машинной ошибке делается всякий раз, когда информация с недопустимым кон-
тролируемым кодом может повлиять на результат операции или когда в результате любого другого сбоя становится невозможным точно установить, может ли операция быть выполнена правильно или была ли она выполнена правильно.
Если информация с недопустимым контролируемым кодом выбирается, но не используется,
указание об ошибочной ситуации может быть сделано или опущено. Однако для гарантии це-
лостности системы недопустимый контролируемый код в этом случае сохраняется при условии,
что в результате данной операции не происходит замещения всего содержимого контролируе-
мого блока.
Сбой машины, обнаруженный во время выполнения операции ввода-вывода, может приво-
дить к условию прерывания от схем контроля, или вызвать условие ошибки ввода-вывода, или же будет происходить то и другое одновременно. Это зависит как от модели, так и от типа сбоя. Условия ошибок ввода-вывода фиксируются с помощью прерывания ввода-вывода или
304
путем установки соответствующего признака результата во время выполнения команды ввода-
вывода. Если CCW или данные с недопустимым контролируемым кодом выбираются из памя-
ти, но не используются в операции ввода-вывода, условие ошибки фиксируется в зависимости от модели.
Если обнаружен машинный сбой, то предпринимаемые действия зависят от характера сбоя и от ситуации, в которой он произошел. В некоторых случаях выполняется автоматическое ап-
паратное восстановление. Если попытка восстановления не удалась или механизм восстанов-
ления в данной модели отсутствует, то говорят, что имеет место нарушение. Условия машин-
ной ошибки могут вызывать прерывания от схем контроля, прерывания ввода-вывода или пе-
реход процессора в состояние “стоп при сбое”.
Обработка недопустимого CBC в памяти
Если контролируемый блок содержит недопустимый CBC и предпринята попытка записи в этот блок без замещения блока целиком, то прежние данные в блоке (включая контрольные би-
ты) остаются без изменения, а новые данные в него не заносятся. Обычно содержимое такого блока можно изменить только путем введения полного блока данных в пределах одного цикла обращения к памяти.
Размер контролируемого блока основной памяти зависит от модели. Если контролируемый блок основной памяти состоит более чем из одного байта и содержит недопустимый код, необ-
ходимы специальные процедуры для восстановления или помещения новой информации в этот блок. Восстановление допустимого CBC в ячейке памяти называется коррекцией памяти.
Коррекция памяти осуществляется программным путем, а также обеспечивается во время опе-
рации очистки системы, задаваемой вручную.
Коррекцию контролируемого блока с недопустимым CBC можно осуществить программными средствами только в том случае, когда содержимое блока замещается целиком. Будет ли вы-
полнена коррекция или нет, зависит от операции и модели даже тогда, когда машинная коман-
да или операция ввода-вывода по передаче данных в память подразумевает замещение всего контролируемого блока.
Коррекция памяти для случая операции ввода в процедуре начальной загрузки программы
(IPL) выполняется по тем же правилам, что и для обычных операций ввода.
Программная коррекция памяти
Выполнение команды ПЕРЕСЫЛКА или ПЕРЕСЫЛКА ДЛИННАЯ вызывает коррекцию обла-
сти основной памяти, содержащей первый операнд, если удовлетворяются следующие усло-
вия:
1.Поля первого и второго операндов, участвующих в операции, не перекрываются.
2.Поле первого операнда начинается на границе контролируемого блока и содержит целое число контролируемых блоков.
305
3. В команде ПЕРЕСЫЛКА ДЛИННАЯ поле второго операнда с длиной, отличной от нуля,
начинается на границе контролируемого блока и, если оно короче поля первого операнда, со-
держит целое число контролируемых блоков.
Прерывание или переход процессора в состояние “стоп” во время выполнения команды ПЕРЕСЫЛКА ДЛИННАЯ на коррекцию не влияет.
Обработка недопустимого CBC в ключах памяти
В зависимости от модели каждый ключ памяти может состоять из одного контролируемого блока или же биты защиты и биты изменения и обращения могут находиться в отдельных кон-
тролируемых блоках. При записи в память или при выборке с ключом защиты, равным нулю,
недопустимый CBC в ключе памяти не принимается во внимание. Обращения к основной памя-
ти, для которых защита не действует, рассматриваются как обращения с ключом защиты, рав-
ным нулю. Это относится к таким обращениям, как обращения канала во время процедуры начальной загрузки программы, неявные обращения для продвижения таймера и при прерыва-
ниях, а также обращения для доступа к таблицам динамической переадресации. Коррекция ключа памяти осуществляется командой УСТАНОВИТЬ КЛЮЧ ПАМЯТИ. В таблице 12.1 описы-
ваются действия, которые выполняются в том случае, когда ключ памяти содержит недопусти-
мый контролируемый код.
Таблица 12.1
Обработка недопустимого CBC в ключах памяти
Вид обраще- |
Действия по обработке недопустимого CBC |
||
ния |
|
|
|
|
|
|
|
|
для битов за- |
для битов обраще- |
для битов защи- |
|
щиты |
ния и изменения |
ты и битов обра- |
|
|
|
щения и изменения |
|
|
|
|
Установка |
Завершение; |
Завершение; коррек- |
Завершение; |
ключа памяти |
коррекция |
ция |
коррекция |
|
|
|
|
Чтение ключа |
Нарушение; |
Нарушение в режиме |
Нарушение; со- |
памяти |
сохранение |
EC, нарушение или за- |
хранение |
|
|
вершение в режиме BC; |
|
|
|
сохранение |
|
|
|
|
|
Сброс бита |
Нарушение |
Нарушение; сохране- |
Нарушение; со- |
обращения |
или завершение; |
ние |
хранение |
|
сохранение |
|
|
|
|
|
|
Выборка, |
Контроль; со- |
Контроль или завер- |
Контроль; сохра- |
ключ защиты не |
хранение |
шение; сохранение |
нение |
равен нулю |
|
|
|
|
|
|
|
Запись в па- |
Контроль 1; со- |
Контроль или завер- |
Контроль 1; со- |
|
|
|
|
306
Вид обраще- |
Действия по обработке недопустимого CBC |
||
ния |
|
|
|
|
|
|
|
|
для битов за- |
для битов обраще- |
для битов защи- |
|
щиты |
ния и изменения |
ты и битов обра- |
|
|
|
щения и изменения |
|
|
|
|
мять, ключ защи- |
хранение |
шение; сохранение |
хранение |
ты не равен нулю |
|
|
|
|
|
|
|
Выборка, |
Завершение; |
Завершение; сохране- |
Завершение; со- |
ключ защиты ра- |
сохранение |
ние |
хранение |
вен нулю |
|
|
|
|
|
|
|
Запись в па- |
Завершение; |
Завершение; сохране- |
Завершение; со- |
мять, ключ защи- |
сохранение |
ние или установка |
хранение 2 |
ты равен нулю |
|
|
|
|
|
|
|
307
Вид обраще- |
Действия по обработке недопустимого CBC |
||
ния |
|
|
|
|
|
|
|
|
для битов за- |
для битов обраще- |
для битов защи- |
|
щиты |
ния и изменения |
ты и битов обра- |
|
|
|
щения и изменения |
|
|
|
|
1Содержимое ячейки основной памяти не изменяется.
2Относится к моделям с отдельными контролируемыми блоками для битов защиты и для битов обращения и изменения; биты защиты сохраняются, а биты обращения и из-
менения могут корректироваться или сохраняться.
Примечания.
Завершение – ошибочная ситуация не вызывает прекращения выполнения команды.
Если нет других условий, не связанных с данной ошибкой, которые могут запретить вы-
полнение, то данное условие не принимается во внимание и выполнение команды за-
вершается. Не возникает никаких условий нарушения из-за машинной ошибки, однако могут возникнуть условия сообщения о восстановлении.
Нарушение – Возникает условие нарушения обработки из-за машинной ошибки или нарушения в системе.
Контроль – Если к памяти обращается процессор, это равносильно нарушению, ко-
торое описано выше. Если обращение к памяти происходит в операции ввода-вывода,
могут возникнуть следующие комбинации прерывания ввода-вывода и прерывания от схем контроля машины:
а) сбой управления каналом при отсутствии прерывания от схем контроля;
б) сбой управления каналом и сообщение о восстановлении после машинной ошибки;
в) внешнее нарушение при отсутствии прерывания ввода-вывода;
г) нарушение в системе при отсутствии прерывания ввода-вывода.
Коррекция – новое значение с допустимым CBC устанавливается для всего ключа
памяти.
Сохранение – содержимое всего контролируемого блока с недопустимым CBC оста-
ется без изменения.
Установка – биты обращения и изменения устанавливаются равными единице с од-
новременным образованием допустимого CBC.
Обработка недопустимого CBC в регистрах
Во время прерывания от схем контроля машины содержимое общих регистров, регистров с плавающей точкой и управляющих регистров, а также таймера CPU и компаратора, если по-
следние имеются, запоминается в фиксированных ячейках основной памяти. Недопустимый
CBC, обнаруженный во время этой операции, не приводит к возникновению дополнительного
308
условия прерывания от схем контроля машины. Вместо этого правильность сохранения ин-
формации указывается путем соответствующей установки битов достоверности в коде преры-
вания от схем контроля. В некоторых моделях во время прерывания производится автоматиче-
ская коррекция содержимого регистров с недопустимым кодом. В других моделях требуется программная коррекция. Содержимое часов и регистра префикса во время прерывания от схем контроля машины не запоминается и не корректируется.
В тех моделях, в которых отсутствует автоматическая коррекция регистров во время преры-
вания от схем контроля машины, регистр с недопустимым CBC не будет вызывать появления условия прерывания от схем контроля до тех пор, пока не начнется его реальное использова-
ние. В таких моделях каждый регистр может состоять из одного или более контролируемых блоков, однако несколько регистров никогда не объединяются в один контролируемый блок.
Если обращение производится только к части регистра, то недопустимый CBC в неиспользуе-
мой части этого регистра может вызвать появление условия прерывания от схем контроля.
Например, недопустимый код в правой половине длинного операнда в регистре с плавающей точкой может вызвать условие прерывания от схем контроля, если с помощью команды ЗАГРУЗКА (короткие операнды) делается попытка заместить содержимое левой половины ре-
гистра.
Появление недопустимого CBC, связанного с управляющим битом “стоп при сбое” (управ-
ляющий регистр 14, разряд 0) и с управляющим битом асинхронной фиксированной регистра-
ции (управляющий регистр 14, разряд 9), приведет к тому, что процессор либо немедленно пе-
рейдет в состояние “стоп при сбое”, либо будет продолжать работу в предположении, что биты
0 и 9 имеют исходные значения, равные 1 и 0 соответственно.
Недопустимый CBC, связанный с регистром префикса, невозможно с гарантией зарегистри-
ровать без искажений во время прерывания от схем контроля, так как значение префикса ис-
пользуется в самом процессе прерывания для преобразования реальных адресов в соответ-
ствующие абсолютные. Если бит “стоп при сбое” (управляющий регистр 14, разряд 0) равен единице, то недопустимый CBC в регистре префикса вызывает немедленный переход процес-
сора в состояние “стоп при сбое”. Если этот бит равен нулю, то недопустимый CBC в регистре префикса в зависимости от модели может либо вызвать переход процессора в состояние “стоп при сбое”, либо привести к формированию условия нарушения в системе.
Коррекция регистров
В моделях, которые не обеспечивают коррекции регистров во время прерывания от схем контроля машины, последняя достигается с помощью команд, перечисленных ниже, при усло-
вии, что до коррекции информация в регистре не используется. Хотя при выполнении других команд также происходит всего содержимого регистра, коррекция не обязательно будет иметь место.
Общие регистры корректируются с помощью команд: ПЕРЕХОД С ВОЗВРАТОМ (BAL, BALR), ЗАГРУЗКА (LR) и ЗАГРУЗКА АДРЕСА (LA). Команды ЗАГРУЗКА (L) и ЗАГРУЗКА
309
ГРУППОВАЯ (LM) обеспечивают коррекцию в том случае, когда операнд находится на границе слова, а команда ЗАГРУЗКА ПОЛУСЛОВА (LH) – в том случае, когда операнд находится на границе полуслова.
Регистры с плавающей точкой корректируются с помощью команды ЗАГРУЗКА (LDR). Для этой цели может использоваться также команда ЗАГРУЗКА (LD) при условии, что операнд рас-
положен на границе двойного слова.
Коррекция управляющих регистров по отдельности или группой осуществляется с помощью команды ЗАГРУЗКА УПРАВЛЕНИЯ (LCTL).
Таймер CPU и компаратор корректируются командами УСТАНОВИТЬ ТАЙМЕР CPU и
УСТАНОВИТЬ КОМПАРАТОР соответственно.
Коррекция часов выполняется с помощью команды ВЫСТАВИТЬ ЧАСЫ при условии, что переключатель часов находится в положении, разрешающем установку.
Замечания по программированию
Для того чтобы программа обработки прерываний от схем контроля машины первого уровня не зависела от модели, необходимо, чтобы коррекция регистров обеспечивалась до того, как они будут использоваться. например, не следует выполнять команды НАЧАТЬ ВВОД-ВЫВОД,
УСТАНОВИТЬ МАСКУ СИСТЕМЫ и ВЫСТАВИТЬ ЧАСЫ до тех пор, пока не выполнена коррек-
ция управляющего регистра 0 (этот регистр содержит бит блок-мультиплексного режима, бит блокировки выполнения команды УСТАНОВИТЬ МАСКУ СИСТЕМЫ и бит синхронизации ча-
сов). Не следует выполнять команду ОБРАЩЕНИЕ К МОНИТОРУ до тех пор, пока не произве-
дена коррекция управляющего регистра 8, который содержит маски классов монитора. Прежде чем разрешить соответствующие прерывания, необходимо осуществить коррекцию расширен-
ных масок прерываний от каналов, масок прерываний от внешних источников и управляющей информации, используемой при обработке машинных ошибок. Прежде чем разрешить преры-
вания от компаратора и от таймера CPU, в них необходимо произвести коррекцию.
12.4.Состояние “стоп при сбое”
В некоторых ситуациях невозможно или нежелательно продолжать работу после появления машинной ошибки. В таких случаях процессор может перейти в состояние “стоп при сбое”.
Это состояние указывается с помощью лампочки машинной ошибки, или звукового сигнала,
или того и другого вместе в зависимости от модели. Лампочка системы выключена, а состоя-
ние лампочки ручного управления зависит от модели.
Машина переходит в состояние “стоп при сбое” только в результате появления неотложных условий. Она может быть выведена из этого состояния с помощью сброса процессора.
Когда процессор находится в состоянии “стоп при сбое”, команды и прерывания не выпол-
няются. Интервальный таймер не продвигается, а работа каналов может быть приостановлена.
Состояние “стоп при сбое” обычно не влияет на часы. В зависимости от ошибки и от модели показания таймера CPU могут как изменяться, так и не изменяться. Счетчик процессора не ра-
310
