Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

IBM370

.pdf
Скачиваний:
35
Добавлен:
02.06.2015
Размер:
5.21 Mб
Скачать

ся в сторону увеличения адресов до ячейки, задаваемой адресом в управляющем регистре 11

включительно.

Если используется динамическая переадресация, то область памяти задается логическими адресами; если динамическая переадресация не действует, управляющие регистры 10 и 11

содержат реальные адреса.

Группа ячеек, выделенная для регистрации событий, может продолжаться и за ячейкой с адресом 16 777 215; считается, что за ячейкой с адресом 16 777 215 следует ячейка с адресом

0. Когда начальный адрес меньше конечного, область является неразрывной. Если же началь-

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

Контроль за изменениями в памяти и выборкой команд осуществляется путем сравнения всех 24 битов адреса.

Программные события

Переход

Выполнение перехода вызывает прерывание по программному событию, если бит 0 в поле масок событий PER и маска PER в PSW равны единице.

Переход имеет место всякий раз, когда передачу управления команде, задаваемой адресом перехода, вызывает одна из следующих команд:

УСЛОВНЫЙ ПЕРЕХОД;

ПЕРЕХОД С ВОЗВРАТОМ;

ПЕРЕХОД ПО СЧЕТЧИКУ;

ПЕРЕХОД ПО ИНДЕКСУ БОЛЬШЕ;

ПЕРЕХОД ПО ИНДЕКСУ МЕНЬШЕ ИЛИ РАВНО.

Переход может также регистрироваться при выполнении некоторых специальных команд,

например команд эмуляции.

Регистрация перехода осуществляется путем установки бита 0 кода PER в единицу.

Выборка команды

Выборка первого байта команды из области основной памяти, заданной содержимым управляющих регистров 10 и 11, вызывает прерывание по программному событию, если бит 1 в

поле масок событий PER и маска PER в PSW равны единице.

Программное событие распознается всякий раз, когда процессор выполняет команду, пер-

вый байт которой принадлежит контролируемой области. Если для выполнения некоторой ко-

манды используется команда ВЫПОЛНИТЬ, то программное событие распознается в тех слу-

чаях, когда в контролируемой области находится либо первый байт команды ВЫПОЛНИТЬ, ли-

бо первый байт подчиненной команды, либо первые байты обеих команд.

Регистрация выборки команды осуществляется путем установки бита 1 кода PER в единицу.

61

Изменение содержимого памяти

Запись процессором данных в область основной памяти, заданную содержимым управляю-

щих регистров 10 и 11, вызывает прерывание по программному событию, если бит 2 в поле ма-

сок событий PER и маска PER в PSW равны единице.

Считается, что изменение содержимого основной памяти происходит всякий раз, когда про-

цессор выполняет команду, вызывающую запись всего операнда или его части в контролируе-

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

связанные с записью в память (см. раздел “Распознавание особых случаев доступа” главы 6).

Считается, что при выполнении арифметической команды или команды пересылки произво-

дится выборка операнда, а также выполнение, если это необходимо, указанной операции и за-

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

мое значение совпадает с исходным.

Контролю не подлежат такие ячейки, как интервальный таймер, PSW, CSW и области аппа-

ратной регистрации, если процессор обращается к ним неявно при продвижении таймера, пре-

рываниях, выполнении команд ввода-вывода и аппаратной регистрации по сигналам контроля машины. Однако эти ячейки контролируются, если они заданы явно в команде, при выполнении которой в них записывается информация. Аналогично контроль не выполняется при передаче данных в память каналом. Ключи памяти не считаются частью основной памяти, и поэтому из-

менения их содержимого при выполнении команд УСТАНОВИТЬ КЛЮЧ ПАМЯТИ и СБРОСИТЬ БИТ ОБРАЩЕНИЯ средствами регистрации программных событий не контролируются.

Если в команде ЗАПИСЬ В ПАМЯТЬ СИМВОЛОВ ПО МАСКЕ маска равна 0, то считается,

что при выполнении этой команды содержимое ячейки памяти не изменяется.

При выполнении команд СРАВНЕНИЕ С ОБМЕНОМ и СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ считается, что изменение содержимого ячейки второго операнда имеет место только в тех слу-

чаях, когда запись в память действительно происходит.

Для указания о событиях, состоящих в изменении содержимого памяти, бит 2 кода PER

устанавливается равным единице.

Изменение содержимого общих регистров

Изменение содержимого общего регистра вызывает прерывание по программному собы-

тию, если бит 3 в поле масок событий PER, маска изменения, соответствующая этому общему регистру, и маска PER в PSW равны единице.

Содержимое общего регистра считается измененным всякий раз, когда в этот регистр зано-

сится новое значение. Для распознавания не обязательно, чтобы новое значение отличалось от предшествующего. Считается, что при выполнении арифметической команды формата “ре-

гистр-регистр” или команды загрузки формата “регистр-регистр” производится выборка содер-

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

62

командах ПЕРЕКОДИРОВАТЬ И ПРОВЕРИТЬ и ОТРЕДАКТИРОВАТЬ И ОТМЕТИТЬ, или явно,

как в командах форматов RR, RX или RS, включая команды ПЕРЕХОД С ВОЗВРАТОМ,

ПЕРЕХОД ПО СЧЕТЧИКУ, ПЕРЕХОД ПО ИНДЕКСУ БОЛЬШЕ и ПЕРЕХОД ПО ИНДЕКСУ МЕНЬШЕ ИЛИ РАВНО.

При выполнении команд ОТРЕДАКТИРОВАТЬ И ОТМЕТИТЬ и ПЕРЕКОДИРОВАТЬ И ПРОВЕРИТЬ считается, что изменение содержимого общего регистра 1 имеет место только в тех случаях, когда запись информации в этот регистр действительно происходит.

Всегда считается, что при выполнении команд ПЕРЕСЫЛКА ДЛИННА и СРАВНЕНИЕ КОДОВ ДЛИННОЕ изменяется содержимое всех четырех регистров, задающих два операнда,

включая случаи, когда используется символ-заполнитель, когда оба операнда имеют нулевую длину или когда для команды ПЕРЕСЫЛКА ДЛИННАЯ устанавливается признак результата,

равный 3.

Если в команде ПРОЧИТАТЬ СИМВОЛЫ ПО МАСКЕ маска равна нулю, то считается, что при выполнении этой команды содержимое общего регистра не изменяется.

При выполнении команд СРАВНЕНИЕ С ОБМЕНОМ и СРАВНЕНИЕ ДВОЙНОЕ С ОБМЕНОМ считается, что изменение содержимого общего регистра или пары общих регистров, заданных полем R1, имеет место только в тех случаях, когда содержимое действительно замещается,

т.е. когда первый и второй операнды не равны.

Для указания о событии, состоящем в изменении содержимого регистра, бит 3 кода PER

устанавливается равным единице.

Замечания по программированию

Ниже приводятся некоторые примеры изменения содержимого общих регистров.

1. Считается, что команды загрузки формата “регистр-регистр” изменяют содержимое реги-

стра, даже если адреса обоих операндов задают один и тот же регистр.

2.Сложение содержимого регистра с 0 или вычитание из него 0, а также умножение этого содержимого или деление на 1 рассматриваются как вызывающие изменение содержимого общего регистра.

3.Считается, что операции сдвига кодов и арифметических сдвигов изменяют содержимое регистра, даже если величина сдвига равна 0.

4.Считается, что при выполнении команд переходов BXH и BXLE первый операнд изменя-

ется, даже если к его значению прибавляется 0.

Индикация программных событий совместно с другими условиями прерывания

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

рываний производится по следующим правилам.

1. Указание о событии, заключающемся в выборке команды, не зависит от того, было ли вы-

полнение этой команды завершено, прекращено, подавлено или аннулировано. Однако указа-

63

ние о таком событии не делается, если появление какого-нибудь особого случая при обраще-

нии к памяти запрещает доступ к первому байту команды. Если к первому полуслову команды доступ возможен, а попытка выборки второго или третьего полуслова приводит к особому слу-

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

2.Если операция завершена, то указание о событии делается независимо от того, имеет ли место одновременно с ним какой-либо особый случай в программе или обращение к монитору.

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

4.Если выполнение команды прекращено, указание об изменении в общем регистре или в памяти делается в тех случаях, когда событие действительно произошло. Кроме того, на неко-

торых моделях может производиться индикация событий, которые могли бы произойти в слу-

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

5. Если при выполнении команды ЗАГРУЗКА PSW или команды ОБРАЩЕНИЕ К СУПЕРВИЗОРУ возникает условие прерывания для регистрации программного события и од-

новременно устанавливается новое PSW с ошибкой формата, которая обнаруживается сразу же после того, как PSW становится активным, то код прерывания будет отражать обе причины прерывания: регистрацию программного события и ошибочную спецификацию. Если же в ре-

зультате выполнения этих команд устанавливается PSW с ошибкой формата, которая обнару-

живается во время выполнения следующей команды, это PSW записывается в память в каче-

стве старого PSW без указания особого случая.

Сведения об индикации программных событий одновременно с другими причинами про-

граммных прерываний приведены в табл. 4.3.

Таблица 4.3. Индикация программных событий

Особый случай

Тип

Программное событие

 

 

окон-

 

 

 

 

 

чания

 

 

 

 

 

 

 

 

 

 

 

 

Пере-

Вы-

Измене-

Изменение в

 

 

ход

борка

ние в

общем реги-

 

 

 

коман-

памяти

стре

 

 

 

ды

 

 

 

 

 

 

 

 

Код операции

S

-

X1

-

-

 

 

 

 

 

 

Привилегированная операция

S

-

X1

-

-

64

Особый случай

Тип

Программное событие

 

 

окон-

 

 

 

 

 

чания

 

 

 

 

 

 

 

 

 

 

 

 

Пере-

Вы-

Измене-

Изменение в

 

 

ход

борка

ние в

общем реги-

 

 

 

коман-

памяти

стре

 

 

 

ды

 

 

 

 

 

 

 

 

Команда ВЫПОЛНИТЬ

S

-

X1

-

-

 

 

 

 

 

 

Защита

 

 

 

 

 

При выборке команды

S

-

–1

-

-

При обращении к операнду

S или T

–2

X

X3

X3

 

 

 

 

 

 

Адресация

 

 

 

 

 

Динамическое преобразование адре-

S

-

–1

-

-

са команды

 

 

 

 

 

Адрес команды

S

-

–1

-

-

Динамическое преобразование адре-

S

–2

X

X4

X4

са операнда

 

 

 

 

 

Адрес операнда

S или T

–2

X

X3

X3

 

 

 

 

 

 

Спецификация

 

 

 

 

 

Нечетный адрес команды

S

-

-

-

-

Неправильный адрес PSW

C

-

X

-

-

Другие особые случаи

S

-

X

-

-

 

 

 

 

 

 

Данные

 

 

 

 

 

Неправильный код знака

S

-

X

-

-

Другие особые случаи

T

-

X

X3

X3

 

 

 

 

 

 

Переполнение с фиксированной точ-

C

-

X

-

X

кой

 

 

 

 

 

 

 

 

 

 

 

Деление с фиксированной точкой

 

 

 

 

 

При делении

S

-

X

-

-

При преобразовании

C

-

X

-

X

 

 

 

 

 

 

Десятичное переполнение

C

-

X

X

-

 

 

 

 

 

 

Десятичное деление

S

-

X

-

-

 

 

 

 

 

 

Переполнение порядка

C

-

X

-

-

 

 

 

 

 

 

Исчезновение порядка

C

-

X

-

-

 

 

 

 

 

 

Потеря значимости

C

-

X

-

-

 

 

 

 

 

 

Деление с плавающей точкой

S

-

X

-

-

 

 

 

 

 

 

Использование сегмента

 

 

 

 

 

 

 

 

 

 

 

65

Особый случай

Тип

Программное событие

 

 

окон-

 

 

 

 

 

чания

 

 

 

 

 

 

 

 

 

 

 

 

Пере-

Вы-

Измене-

Изменение в

 

 

ход

борка

ние в

общем реги-

 

 

 

коман-

памяти

стре

 

 

 

ды

 

 

 

 

 

 

 

 

Динамическое преобразование адре-

N

-

–1

-

-

са команды

 

 

 

 

 

Динамическое преобразование адре-

N

–2

X

X4

X4

са операнда

 

 

 

 

 

 

 

 

 

 

 

Использование страницы

 

 

 

 

 

Динамическое преобразование адре-

N

-

–1

-

-

са команды

 

 

 

 

 

Динамическое преобразование адре-

N

–2

X

X4

X4

са операнда

 

 

 

 

 

 

 

 

 

 

 

Спецификация переадресации

 

 

 

 

 

Динамическое преобразование адре-

S

-

–1

-

-

са команды

 

 

 

 

 

Динамическое преобразование адре-

S

–2

X

X4

X4

са операнда

 

 

 

 

 

 

 

 

 

 

 

66

Особый случай

Тип

Программное событие

 

 

окон-

 

 

 

 

 

чания

 

 

 

 

 

 

 

 

 

 

 

 

Пере-

Вы-

Измене-

Изменение в

 

 

ход

борка

ние в

общем реги-

 

 

 

коман-

памяти

стре

 

 

 

ды

 

 

 

 

 

 

 

 

Специальная операция

S

-

X

-

-

 

 

 

 

 

 

Обращение к монитору

C

-

X

-

-

 

 

 

 

 

 

1 Если к первому полуслову команды доступ возможен, а попытка выборки второго или третьего полуслова приводит к особому случаю при обращении, то нельзя сказать зара-

нее, будет ли сделано уведомление о программном событии выборки команды.

2 Такая ситуация может возникнуть при выполнении некоторых специальных команд,

например команд, предназначенных для эмуляции.

3 В некоторых моделях указание о данном событии может быть сделано (но не обяза-

тельно), если это событие хотя и не произошло из-за прекращения выполнения команды,

но могло бы произойти, если бы операция была завершена.

4 Такая ситуация может возникнуть в случае прерываемых команд, когда событие зафик-

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

Обозначения:

C – операция или элемент операции (в случае прерываемой команды) завершается; N – операция или элемент операции (в случае прерываемой команды) аннулируется.

Адрес команды в старом PSW не изменяется;

S – операция или элемент операции (в случае прерываемой команды) подавляется;

T – выполнение команды прекращается;

X – индикация события имеет место одновременно с индикацией особого случая, если событие действительно произошло, т.е. было изменено содержимое ячейки памяти в контролируемой области или содержимое контролируемого общего регистра, была сде-

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

Замечания по программированию

Выполнение прерываемых команд ПЕРЕСЫЛКА ДЛИННАЯ и СРАВНЕНИЕ КОДОВ ДЛИННОЕ может вызывать события, заключающиеся в изменении содержимого общих реги-

стров или в выборке команды. Кроме того, при выполнении команды ПЕРЕСЫЛКА ДЛИННАЯ может иметь место событие, состоящее в изменении содержимого памяти.

67

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

гистрации программных событий. Каким образом производится индикация возможных про-

граммных событий при выполнении этих двух команд, определяют следующие правила:

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

указание об изменении в общем регистре делается на начальном этапе выполнения, а

также при каждом возобновлении и не зависит от того, изменяется в действительности содер-

жимое регистра или нет;

— указание об изменении содержимого памяти делается только в тех случаях, когда дан-

ные были записаны в контролируемую область во время выполнения элемента операции,

начинающегося с последнего возобновления (или с самого начала выполнения команды) и

оканчивающегося байтом, который передан в память последним до прерывания. Не преду-

смотрено специального предварительного указания о том, произойдет ли событие вновь после возобновления операции. При выполнении команды ПЕРЕСЫЛКА ДЛИННАЯ событие, связан-

ное с записью в память одного байта, может быть зафиксировано только один раз.

Далее в общих чертах описано, что должно быть предусмотрено в программе, чтобы исклю-

чить избыточные элементы информации, относящейся к регистрации программных событий,

которые могли образоваться при выполнении команд ПЕРЕСЫЛКА ДЛИННАЯ и СРАВНЕНИЕ КОДОВ ДЛИННОЕ, и получить только один элемент информации при каждом завершении вы-

полнения команды.

1. Необходимо проверить, совпадает ли адрес PER, указывающий команду, которая вызва-

ла программное событие, с адресом команды в старом PSW, и выяснить, выполнялась ли по-

следней одна из команд ПЕРЕСЫЛКА ДЛИННАЯ или СРАВНЕНИЕ КОДОВ ДЛИННОЕ.

2.Если оба условия выполняются, необходимо исключить информацию о событиях выборки команды и изменения в регистре.

3.Если оба условия выполняются и событие состоит в изменении содержимого памяти,

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

лается результат операции, принадлежит контролируемой области и значение счетчика для этого операнда не равно нулю.

4.9.Средства прямого управления

К средствам прямого управления относятся две команды – ПРЯМОЕ ЧТЕНИЕ и ПРЯМАЯ ЗАПИСЬ – и шесть сигнальных линий внешних прерываний. Средства прямого управления функционируют независимо от средств выполнения операций ввода-вывода. Команды прямого чтения и записи обеспечивают передачу отдельных байтов информации, используемых обычно для управления и синхронизации работы двух связанных между собой (с помощью кабельного

68

соединения) процессоров или процессора и внешнего объекта. Каждая из шести внешних сиг-

нальных линий при наличии в ней сигнала вызывает формирование условия внешнего преры-

вания.

4.10.Часы

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

В системах, где имеется более одного процессора, в зависимости от модели каждый про-

цессор может иметь собственные часы либо несколько процессоров могут совместно пользо-

ваться одними часами. В любом случае каждый процессор имеет доступ только к одним часам.

Часы представляют собой двоичный счетчик, имеющий следующий формат:

+

--------------------------------------------

 

+

¦

 

¦

¦

+--------------------------------------------

 

 

+

0

51

52

63

Позиции битов в этих часах нумеруются с 0 до 63 и соответствуют битам числа с фиксиро-

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

сированной точкой без знака.

Обычно показание часов увеличивается путем прибавления единицы к содержимому бита

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

Когда в мультипроцессорной системе имеется несколько часов, работа их синхронизирует-

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

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

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

стоянии “ожидание” или “стоп” или когда работа ведется в покомандном режиме, в режиме вы-

полнения по тактам или в режиме контроля. На работу часов не влияют сброс процессора,

начальный сброс процессора, программный сброс, начальный программный сброс с очисткой,

а также выполнение процедуры начальной загрузки. В некоторым моделях часы могут также идти при выключенном питании процессора.

69

Различаются следующие состояния часов: выставлены, не выставлены, стоп, неисправны и отключены. В зависимости от состояния часов устанавливается тот или иной признак результа-

та при выполнении команды ЗАПИСЬ В ПАМЯТЬ ПОКАЗАНИЯ ЧАСОВ. О часах говорят, что они идут, когда они выставлены и когда они не выставлены.

Часы отключены, если выключено их питание или они переведены в состояние, необходи-

мое для технического обслуживания. Возможность отключения часов определяется моделью.

При включении питания часов их показание устанавливается равным 0 и они переходят в состояние “не выставлены”. Если часы не выставлены, то при выполнении команды ЗАПИСЬ В ПАМЯТЬ ПОКАЗАНИЯ ЧАСОВ устанавливается признак результата, равный 1.

Часы останавливаются (переходят в состояние “стоп”), если в результате выполнения ко-

манды ВЫСТАВИТЬ ЧАСЫ устанавливается какое-либо значение показаний часов. Это проис-

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

шающем выставить часы. Часы могут перейти в состояние “стоп” из состояний “выставлены”, “не выставлены” или “неисправны”. Если часы стоят, их показание не изменяется, при этом в результате выполнения команды ЗАПИСЬ В ПАМЯТЬ ПОКАЗАНИЯ ЧАСОВ записывается пока-

зание остановленных часов и устанавливается признак результата, равный 3. Эта операция отличается от аналогичной операции для отключенного состояния, при которой признак ре-

зультата также устанавливается равным 3, тем, что в отключенном состоянии в память записы-

вается нулевое значение.

Часы переходят в состояние “выставлены” только из состояния “стоп”. Этим переходом управляет бит синхронизации часов, а именно бит 2 управляющего регистра 0. Исходное зна-

чение этого бита равно нулю. Если значение этого бита равно нулю или средства синхрониза-

ции часов в данной установке не установлены, часы переходят в состояние “выставлены” после завершения выполнения команды ВЫСТАВИТЬ ЧАСЫ. Если же этот бит установлен в единицу,

часы остаются в состоянии “стоп” до тех пор, пока этот бит не будет установлен в нуль или пока показание каких-нибудь других идущих часов в мультипроцессорной системе не примет значе-

ние, при котором в битах 32–63 будут содержаться одни нули. Изменение показания часов начинается с момента поступления первого импульса после того, как часы переведены в со-

стояние “выставлены”. Если в битах 32–63 установлены все нули и часы перешли в состояние

“выставлены” по сигналу других часов, то биты 32–63 этих двух часов начинают изменяться синхронно. При выполнении команды ВЫСТАВИТЬ ЧАСЫ признак результата получает значе-

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

Часы переходят в неисправное состояние, если обнаружен сбой, который, по всей вероят-

ности, повлиял на правильность показания часов. Всякий раз, когда часы переходят в это со-

стояние, возникает условие прерывания от схем контроля машины, связанное с неисправно-

70

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