Архитектура платформ IBM eServer zSeries

Архитектура zSeries

Разбить на страницы
Показывать лекцию целиком

Базовая архитектура zSeries

Основными компонентами z/Architecture [2.1, 2.2] серверов zSeries на уровне программистской модели являются (рис. 2.1):

  • один или несколько центральных процессоров (Central Processor - CP);
  • основная память (Main Storage - MS);
  • расширенная память (Expanded Storage - ES);
  • внешний таймер (External Time Reference - ETR);
  • канальная подсистема (Channel Subsystem - CSS);
  • контроллеры (Control Unit - CU) периферийных устройств (I/O Device - D)
  • канальные пути или каналы, соединяющие канальную подсистему с CU периферийных устройств, и средства их коммутации (S).
  • Различные генерации моделей z/Architecture отличаются качественными и количественными характеристиками перечисленных компонентов. Основными направлениями развития архитектуры являлись: увеличение производительности, распараллеливание вычислительного процесса, расширение адресного пространства памяти, увеличение пропускной способности подсистемы ввода-вывода, повышение надежности и др. При этом на всем протяжении развития z/Architecture сохранялась полная программная совместимость "снизу-вверх".

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

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

    (рис 2.1) Базовая модель систем zSeries

    Взаимодействие процессоров и памяти с периферийными устройствами осуществляется через канальную подсистему ввода-вывода, включающую канальные пути разного типа. Основными типами канальных путей являются различные последовательные каналы, параллельный канал, аналогичный использовавшимся в системах S/360, S/370, а также универсальный интерфейс PCI (Peripheral Component Interconnect) [2.3]. К канальным путям подключаются контроллеры CU, через которые осуществляется связь с периферийными устройствами. Последовательные каналы могут быть подключены к устройствам через коммутаторы (S) каналов, что позволяет создавать множественные канальные пути к устройствам. В зависимости от требований пользователя в подсистеме ввода-вывода может быть использовано разное количество канальных путей и CU с различными способами их подключения.

    Архитектура центральных процессоров

    Регистровая модель

    Регистровая модель процессора z/Architecture на современном этапе развития [2.1] включает следующие группы регистров (рис. 2.2):

  • 16 64-разрядных регистров общего назначения (General Registers GR);
  • 16 64-разрядных регистров с плавающей точкой (Floating Point Register - FPR);
  • 32-разрядный регистр управления операциями с плавающей точкой (Floating Point Control Register - FPC);
  • 16 32-разрядных регистров доступа (Access Registers - AR);
  • 16 64-разрядных управляющих регистров (Control Register - CR);
  • 128-разрядный регистр слова состояния программы (Program Status Word - PSW);
  • 64-разрядный регистр префикса (Prefix Register - PR);
  • 32-разрядный программируемый регистр часов (Time-of-Day (TOD) Programmable Register);
  • 64-разрядный регистр таймера;
  • 64-разрядный регистр компаратора времени (Clock Comparator).
  • Регистры GR предназначены для хранения операндов и адресов основных арифметических, логических и других операций. Каждый из регистров имеет разрядность 64 бита и адресуется в командах 4-разрядным полем R. В зависимости от реализуемой модели используются 32 (биты 32-63) или 64 разряда регистров. На рис. 2.2 показан пример использования модели для архитектуры System/370. Два регистра GR с соседними адресами могут служить для хранения операндов удвоенной длины 64 или 128 бит (см. дуги на рис. 2.2). В первом случае объединяются биты 32 $$\div$$ 63, а во втором - биты 0 $$\div$$ 63 соседних регистров. Удвоенный операнд начинается с четного адреса, по которому размещается старшая половина операнда. Часть команд со сложными способами адресации используют регистры GR в качестве базовых и индексных регистров. Четырехразрядные поля B и Х в командах определяют, соответственно, один из 15 базовых или индексных регистров (при В=0 базирование, а при Х=0 индексация не используются). В некоторых командах применение регистров GR подразумевается без явного указания их адресов в полях команды.

    Регистры FPR предназначены для хранения 32- или 64-разрядных чисел в форматах с плавающей точкой: двоичном (Binary Floating Point - BFP) или шестнадцатеричном (Hexadecimal Floating Point - HFP). Как и GR, регистры FPR адресуются в командах 4-разрядными полями R и могут быть попарно объединены для хранения расширенных до 128 бит операндов, адресуемых младшим из адресов объединенных регистров. Для задания параметров операций с плавающей точкой используется дополнительный управляющий регистр FPC.

    (рис 2.2) Регистровая модель z/Architecture

    Шестнадцать регистров доступа AR применяются в механизме динамического преобразования адресов для хранения косвенной ссылки на используемое адресное пространство. В режиме адресации с использованием AR (Access Register Mode) поле В (или R) команд задает номер AR, содержимое которого используется как ссылка на адресное пространство. Указание в команде на регистр доступа с номером 0 подтверждает использование текущего адресного пространства, а AR1/AR 15 задают новое адресное пространство.

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

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

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

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

    Система команд процессора

    Команда, исполняемая процессором, в общем случае включает код операции (code of operation - COP), определяющий тип выполняемой операции, и адресную часть, задающую используемые в операции операнды. Операнды команд относятся к одному из трех типов:

  • непосредственные, заданные в командах;
  • регистровые, расположенные в регистрах процессора;
  • операнды, хранящиеся в памяти.
  • Разрядности операндов, используемых в командах z/Architecture, определяются кодом операции и дополнительными управляющими кодами в регистрах процессора. Для использования в одной команде операндов разной разрядности в список команд z/Architecture включены дополнительные команды. Биты и байты в операндах нумеруются слева направо от 0. Бит 0 соответствует старшему разряду.

    Непосредственные операнды являются 8-, 16- или 32-разрядными константами, задаваемыми полем I в адресной части команды.

    Регистровые операнды могут находиться в одном из программно доступных регистров процессора и либо прямо адресуются четырехразрядным адресом в команде (поле R), либо подразумеваются неявно кодом операции. Форматы регистровых операндов определяются типом операции и разрядностью используемых регистров.

    Операнды в памяти могут включать один или более байт, адресуемых целыми неотрицательными числами 0, 1, 2... Байты из группы соседних ячеек образуют многобайтные поля или операнды, адресуемые младшим из адресов. В архитектуре zSeries используются операнды фиксированной и переменной длины. Для представления операндов фиксированной длины используются форматы байта, полуслова (2 байта), слова (4 байта), двойного слова (8 байт) и учетверенного слова (16 байт), которые целесообразно с точки зрения производительности размещать в полях ОП, имеющих определенные граничные адреса, кратные степени 2 (табл. 2.1). Операнды переменной длины адресуются младшим из группы занимаемых адресов с указанием длины (числа байт) в команде либо непосредственно (4- или 8-разрядное поле L), либо в виде ссылки на регистр GR, содержащий код длины.

    Адресация операндов фиксированной длины
    Операнды Адреса памяти $$\to$$
    Байт 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    Полуслово (2 байта) 0 2 4 6 8 10 12 14 16
    Слово (4 байта) 0 4 8 12 16
    Двойное слово (8 байт) 0 8 16
    Учетверенное слово (16 байт) 0 16

    В командах z/Architecture допускается использование 24-, 31-разрядных адресов, размещаемых в формате слова, и 24-, 31-, 64-разрядных адресов - в формате двойного слова (табл. 2.2). Разрядность адреса определяется битами 31,32 в слове состояния программы PSW. Такой способ управления разрядностью позволяет в рамках одной архитектуры применять различные комбинации разрядностей адресов и операндов, используемых в z/Architecture и более ранних архитектурах. Ранее разработанные программы для 32-разрядных операндов могут быть исполнены в сочетании с 64-разрядной адресацией и, наоборот, 31-разрядная адресация может применяться совместно с 64-разрядной арифметикой. Новые дополнительные команды z/Architecture допускают использование 32-разрядных и 64-разрядных операндов в одной команде. Зависимость способа исполнения команд не только от кода операции, но и от способа адресации принято называть модальностью команд. Архитектура zSeries допускает тримодальную адресацию (по числу вариантов разрядности адреса). Большинство команд z/Architecture являются немодальными, что позволило сохранить без изменений исполнение команд предшествующих архитектур.

    Форматы адресов
    а) архитектура с 24-, 31-разрядными адресами
    0
    8 		31
    24-разрядный адрес
    31-разрядный адрес

    б) z/Architecture
    0 33
    41 		63
    24-разрядный адрес
    31-разрядный адрес
    64-разрядный адрес

    Форматы команд z/Architecture приведены на рис 2.3. Назначение используемых в командах полей пояснено в таблице 2.3. Команды имеют длину 1, 2 или 3 полуслова и относятся к одному из 21 форматов: E, I, RR, RRE, RRF, RX, RXE, RXF, RXY, RS, RSY, RSL, RSI, RI, RIE, RIL, SI, SIY, S, SSE, SS. Формат RRF имеет три модификации, форматы RS, RSY, RIL - по две модификации, а SS - 4 модификации. Длина команды определяется двумя старшими битами COP:

    Старшие биты COP Длина команды (число полуслов)
    00 1
    01 2
    10 2
    11 3

    z/Architectuire включает форматы всех команд предшествующих архитектур с одним или двумя байтами COP (первый и второй байты команд в разрядах 0-15). Новые команды получены в основном за счет неиспользованных кодов COP или путем добавления второго байта COP в шестой байт команд (разряды 40-47 в форматах RXE, RXF, RXY, RSY, RSE, RSL, RIE и SIY). Кодовые пространства COP команд z/Architecture приведены в Приложении 1.

    (рис 2.3) Форматы команд Z900
    Поля, используемые в форматах команд z/Architecture
    COP Код операции команды, определяющий тип операции
    1, 2, 3, 4 Индексы, указывающие на 1, 2, 3 и 4 операнды команды
    R1, R2, R3 Номера регистров
    B1, B2, B4 Номера базовых регистров
    X2 Номера индексных регистров
    D1, D2, D4, DL1, DH1, DL2, DH2 Поля смещения (L - младшая часть смещения, H - старшая часть смещения)
    M1, M3, M4 Поля маски
    I, I2 Поля непосредственных операндов
    L, L1, L2 Поля длины операндов

    Генерация адресов операндов (АО), размещенных в памяти, основана на косвенно-регистровой адресации, когда адрес берется из регистра, заданного полем R команды, либо на вычислении путем сложения содержимого базового (B), индексного (X) регистров и смещения D:

    АО = (B) + (X) + D

    Разрядность базового и индексного регистров определяется типом команд и способом адресации. Разрядность смещения равна 12 либо 20 (расширенный формат). В последнем случае используются два поля смещения: DL - младшие 12 бит, DH - старшие 8 бит. При суммировании база и индекс рассматриваются как целые двоичные числа, 12-разрядное смещение является целым без знака, а 20-разрядное смещение расширенного формата задано как целое со знаком. Нулевые значения номеров базового B и индексного X регистров означают отсутствие соответствующих им компонентов при формировании адреса. Если один и тот же регистр используется в команде для формирования адреса и в качестве приемника операнда, первым выполняется формирование адреса. При формировании адреса с использованием 64-разрядного формата коды базы, индекса и смещения меньшей разрядности дополняются в старших разрядах нулями, либо значениями знакового разряда. При формировании адресов с разрядностью 32, 24 старшие биты используемых регистров сохраняются без изменения.

    Список команд z/Architecture, сгруппированных по классам, приведен в Приложении 2. Для большинства команд дано краткое описание выполняемой операции и ее характеристики. Подробное описание команд можно найти в [2.1].

    В системе команд z/Architecture предусмотрено пять классов операций:

  • основные (или базовые): целочисленная двоичная арифметика, логические операции, переходы и др.;
  • десятичные: операции над десятичными числами;
  • с плавающей точкой: поддержка и реализация операций с плавающей точкой в двоичном (BFP) и шестнадцатеричном (HFP) форматах;
  • управления: операции для управления работой процессора;
  • ввода-вывода: управление операциями ввода-вывода.
  • Класс основных команд включает команды z/Architecture с операциями над числами с фиксированной точкой. Предусмотрено использование операций над целыми числами со знаком и без знака, логическими данными. Для представления чисел применяются, в основном, дополнительные, а также обратные коды.

    Операции над десятичными числами выделены в особый класс. Десятичные команды выполняют операции десятичной арифметики и преобразований над десятичными операндами. Десятичные операнды размещаются всегда в основной памяти и поэтому большинство десятичных команд имеют формат SS (память-память). Длина операндов определяется полем L в командах. Используются две формы представления десятичных чисел: зонный и упакованный форматы (табл. 2.4). В зонном формате старшие четыре бита каждого байта операнда содержат код зоны, а младшие четыре бита содержат двоично-десятичную цифру.

    Форматы десятичных операндов
    а) Зонный формат:
    зона цифра зона цифра ... зона цифра зона/знак цифра
    б) Упакованный формат:
    цифра цифра цифра цифра ... цифра цифра цифра знак
    с) Кодирование:
    коды значения
    0000 $$\div$$ 1001 цифры
    1010, 1100, 1110 знак "плюс"
    1011, 1101 знак "минус"
    1111 зона, знак "плюс"

    Знак числа задается вместо зоны в крайнем правом байте операнда. Зонный формат может быть частью буквенно-цифровой строки с длиной до 256 байт, он используется для ввода-вывода и редактирования десятичной информации. В упакованном формате каждый байт содержит две цифры, а знак задается вместо крайней правой цифры. Упакованный формат имеет длину до 16 байт и используется для выполнения операций десятичной арифметики.

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

  • шестнадцатеричное - HFP (Hexadecimal Floating Point),
  • двоичное - BFP (Binary Floating Point).
  • Форматы чисел с плавающей точкой
    Форматы HFP 0 7 31 63 64 70 128
    S Порядок Мантисса (6 цифр)
    S Порядок Мантисса (14 цифр)
    S Порядок Мантисса (старшие 14 цифр) S Порядок Мантисса (младшие 14 цифр)
    Не использ.
    Форматы BFP 0 8 11 15 31 63 128
    S Порядок Мантисса (23 бита)
    S Порядок Мантисса (52 бита)
    S Порядок Мантисса (112 бит)

    Формат операндов может быть коротким (32 бита), длинным (64 бита) и расширенным (128 бит). Форматы чисел с плавающей точкой двух типов представлены на табл. 2.5. Числа состоят из трех компонентов: знака числа, порядка со знаком и мантиссы. Знак числа определяется битом S (S=0 - число положительное, S=1 - число отрицательное). Порядок определяет степень, в которую возводится основание, равное 16 для HFP чисел и 2 для BFP чисел. Поле порядка в форматах HFP имеет одну и ту же длину 7 бит, а в форматах BFP - различную для разных форматов: 8, 11 или 15 бит. В семиразрядном поле порядка для HFP чисел указывается смещенный порядок (characteristic), формируемый путем прибавления 64 к порядку, изменяющемуся в диапазоне -64 $$\div$$ +63. Для чисел BFP формируется смещенный порядок с отрицательным нулем (biased exponent), вычисляемый путем прибавления 127 (для короткого формата), 1023 (для длинного формата), 16383 (для расширенного формата). Мантисса М для чисел HFP представляется дробным числом (запятая фиксирована перед старшим разрядом) и может быть нормализованной (старшая цифра мантиссы отлична от нуля: 1 > |М| > 1/16) и ненормализованной (unnormalize), что допускает множественное представление одного и того же числа. Мантисса для чисел BFP также содержит дробную часть с запятой перед старшим разрядом, однако включает дополнительный подразумеваемый разряд, находящийся слева от запятой, и всегда нормализована 2 > |М| > 1 (дополнительный разряд равен 1). Для малых чисел BFP, которые невозможно представить в нормализованном виде, допускается единственное ненормализованное (denormalize) представление (дополнительный разряд равен 0). Таким образом, числа BFP всегда имеют единственное представление.

    Параметры и диапазоны представления чисел в форматах BFP приведены в таблице 2.6. В таблице 2.7 приведены сравнительные оценки диапазонов чисел разных типов и форматов.

    Параметры и диапазоны чисел с плавающей точкой в форматах BFP
    Параметры и диапазоны Короткий формат (32 бита) Длинный формат (64 бита) Расширенный формат (128 бит)
    Разрядность порядка 8 11 15
    Разрядность мантиссы 23 52 112
    Максимальный порядок 127 1023 16383
    Минимальный порядок -126 -1022 -16382
    Смещение порядка 127 1023 16383
    Модуль максимального числа (1-2-24)x2128 $$\approx$$ 3.4x1038 (1-2-53)x21024 $$\approx$$ 1.8x10308 (1-2-113)x216384 $$\approx$$ 1.2x104932
    Модуль минимального числа (нормализованного) 1.0x2-126 $$\approx$$ 1.2x10-38 1.0x2-1022 $$\approx$$ 2.2x10-308 1.0x2-16382 $$\approx$$ 3.4x10-4932
    Наименьшее представляемое число (ненормализованное) 1.0x2-149 $$\approx$$ 1.4x10-45 1.0x2-1074 $$\approx$$ 4.9x10-324 1.0x2-16494 $$\approx$$ 6.5x10-4966
    Диапазоны представления чисел с плавающей точкой
      Тип FP Короткий формат Длинный формат Расширенный формат
    Максимальные значения BFP $$\pm$$ 3.4x10+38 $$\pm$$ 1.81x0+308 $$\pm$$ 1.8x10+4932
    HFP $$\pm$$ 7.2x10+75 $$\pm$$ 7.2x10+75 $$\pm$$ 7.2x10+75
    Минимальные значения BFP $$\pm$$ 1.2x10-38 $$\pm$$ 2.2x10-308 $$\pm$$ 3.4x10-4932
    HFP $$\pm$$ 5.5x10-79 $$\pm$$ 5.5x10-79 $$\pm$$ 5.5x10-79
    Минимальные ненормализованные значения BFP $$\pm$$ 1.4x10-45 $$\pm$$ 4.9x10-324 $$\pm$$ 6.5x10-4966
    HFP $$\pm$$ 5.2x10-85 $$\pm$$ 1.2x10-94 $$\pm$$ 1.7x10-111

    В командах с плавающей точкой используются операнды, размещенные в памяти и регистрах. Предусмотрено 16 64-разрядных регистров, в которых операнды короткого формата занимают левую старшую половину (без изменения младшей), а для расширенного формата используются пары регистров, как показано на рис. 2.2. Регистры 0, 2, 4, 6 использовались в предшествующих архитектурах, остальные 12 регистров добавлены и могут применяться при установке соответствующего бита в управляющем регистре 0.

    Для управления операциями с плавающей точкой при возникновении особых ситуаций по данным (переполнение, потеря значимости и др.) используется дополнительный регистр управления операциями с плавающей точкой (Floating-Point-Control - FPC) в соответствии со стандартом IEEE. Поле маски (Masks) (табл. 2.8) предназначено для маскирования прерываний в пяти перечисленных особых ситуациях. Поле флагов используется для фиксации особых ситуаций без учета поля маски. Поле DXС (Data Exception Code) предназначено для хранения кода особых ситуаций, загружаемого при обработке прерываний. Поле RM определяет способ округления результата.

    Регистр управления операциями с плавающей точкой (FPC)
    0  байт 0    7
    8  байт 1   15
    16  байт 2   23
    24  байт 3    31
    I I I I I
    M M M M M 0 0 0
    i z o u x
    S S S S S
    F F F F F 0 0 0
    i z o u x
    i z o u x
    0 0 0 0 0 0 RM
    Masks резерв Flags резерв DXC резерв

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

    IMi, SFi - маска и флаг недопустимой операции;

    IMz, SFz - маска и флаг деления на 0;

    IMz, SFz - маска и флаг переполнения;

    IMz, SFz - маска и флаг потери значимости:

    IMz, SFz - маска и флаг неточности;

    DXC - код флагов прерываний;

    RM - биты управления округлением.

    Команды управления и ввода-вывода относятся к классам привилегированных или частично привилегированных команд. Привилегированные команды (все команды ввода-вывода и часть команд управления) могут исполняться только в режиме работы процессора СУПЕРВИЗОР. Частично привилегированные команды (часть команд управления) могут исполняться в режиме работы процессора ЗАДАЧА при наличии разрешающих условий.

    Организация адресных пространств внутренней памяти

    Уровни внутренней памяти

    Внутренняя или процессорная память имеет многоуровневую структуру, включающую до трех уровней буферной памяти, называемой КЭШ-памятью (Cache), основную память MS и дополнительный уровень расширенной памяти ES. Уровни КЭШ-памяти предназначены для увеличения быстродействия основной памяти и "прозрачны" для процессора, то есть программно недоступны. Расширенная память программно доступна и допускает операции чтения-записи страниц с использованием специальных процессорных команд управления PAGE IN, PAGE OUT. Расширенная память размещается в физическом адресном пространстве за границей 231 байт и в последних моделях z/Architecture может не использоваться. Основная память является многоабонентной и допускает одновременные обращения как всех центральных процессоров, так и процессоров канальной подсистемы. При этом очередность доступа определяется системой в зависимости от приоритетов абонентов.

    Типы адресных пространств основной памяти и их взаимосвязь

    Адреса формируются в CP, канальной подсистеме и в общем случае проходят до трех стадий преобразования в процессе обращения к памяти (рис. 2.4). Различают три базовых типа адресных пространств (Address Space - AS) и соответствующих им адресов: абсолютные, реальные и виртуальные.

    (рис 2.4) Типы адресов и их преобразование

    Абсолютный (absolute) адрес непосредственно без каких-либо преобразований определяет ячейку физической памяти. Каждой ячейке физической памяти соответствует не более чем один абсолютный адрес.

    Реальный (real) адрес используется в многопроцессорных конфигурациях и определяет адрес ячейки реальной памяти, преобразуемый в абсолютный путем префиксации. Основная цель префиксации - отображение начальной области реальной памяти (8KB) каждого процессора на одну из областей физической памяти с различными абсолютными адресами. Это необходимо для уменьшения числа конфликтов при обращении различных процессоров в процессе обработки прерываний.

    Виртуальные (virtual) адреса формируются процессором при исполнении программ и транслируются в реальные посредством динамического преобразования адресов (Dynamic Address Translation - DAT). Адресное пространство, образуемое виртуальными адресами, называется виртуальным адресным пространством. В архитектуре zSeries предусмотрены следующие типы виртуальных адресов:

  • главный (Primary Virtual Address);
  • вторичный (Secondary Virtual Address);
  • AR-определяемый (AR-specified Virtual Address);
  • базовый (Home Virtual Address).
  • Тип виртуального адреса определяется режимом виртуальной адресации, используемым в процессоре. Процессор может находиться в одном из четырех режимов адресации, соответствующих перечисленным типам виртуальных адресов:

  • режим главного AS (Primary-space mode);
  • режим вторичного AS (Secondary-space mode);
  • режим с AR-определяемым AS (Access-register mode);
  • режим базового AS (Home-space mode).
  • В режимах главного или базового AS процессору доступны, соответственно, только главное или базовое виртуальные адресные пространства. В режиме вторичного AS процессор может транслировать адреса и главного, и вторичного AS. В режиме с AR-определяемым AS процессор оперирует в главном и пятнадцати пространствах, определяемых регистрами доступа AR1 $$\div$$ AR15.

    Адрес, формируемый процессором до выполнения процессов DAT или префиксации, принято называть эффективным. Эффективный адрес либо задается ссылкой на регистр, в котором он был сформирован ранее, либо вычисляется с использованием адресной арифметики. Различают следующие типы эффективных адресов, трансляция которых зависит от режима работы процессора и типа исполняемых команд (рис. 2.5):

    (рис 2.5) Виртуальные адресные пространства в различных режимах адресации
  • Логический адрес (Logical Address - L) является адресом операнда для большинства команд и может быть реальным в реальном режиме или виртуальным четырех типов в зависимости от режима адресации.
  • Адрес команды (Instruction Address - I) используется для выборки команд и может быть реальным в реальном режиме, главным виртуальным адресом в режимах главного, вторичного и AR-определяемого AS, а также базовым в режиме базового AS.
  • Задание адресных пространств

    В z/Architecture применяется два варианта задания адресных пространств. Первый вариант предусматривает использование до 216 адресных пространств, задаваемых уникальным 16-разрядным номером адресного пространства (Address Space Number - ASN). Формат ASN включает два индекса, необходимые для его трансляции: первый индекс AFX и второй индекс ASX . Второй вариант задания адресного пространства предполагает использование регистров доступа, в каждый из которых может быть загружен код, определяющий адресное пространство.

    Смена адресных пространств в процессоре выполняется путем загрузки ASN в соответствующие управляющие регистры привилегированными и полупривилегированными командами или загрузки кодов ALET (Access List Entry Token), в регистры доступа непривилегированными командами. Далее код ASN или ALET транслируется в код управления адресным пространством ASCE (Address Space Control Element), определяющий параметры процесса динамического преобразования адреса в данном адресном пространстве. Принцип трансляции ASN и ALET в коды ASCE пояснен на рис. 2.6.

    (рис 2.6) Трансляция номера адресного пространства и ALET из регистров доступа

    Запуск трансляции ASN осуществляется при смене адресных пространств, задаваемой в некоторых командах (PROGRAM TRANSFER, SET SECONDARY ASN и др.). Полученный код ASCE размещается в одном из управляющих регистров в зависимости от типа адресного пространства:

  • для Primary Virtual Address в CR1;
  • для Secondary Virtual Address в CR7;
  • для Home Virtual Address в CR13.
  • Преобразование ASN в код ASCE, необходимый для активизации адресного пространства в процессоре, выполняется с использованием двух таблиц:

  • первичная ASN-таблица (ASN-first-table - AFT);
  • вторичная ASN-таблица (ASN-second-table - AST).
  • Первым выполняется обращение в строку таблицы AFT по адресу, формируемому путем сложения базового адреса AFTO (AFT origin) из управляющего регистра CR14 и первого индекса AFX из кода ASN. В строке AFT задан базовый адрес ASTO (AST origin), который суммируется со вторым индексом ASX из кода ASN для формирования адреса строки ASTE (AST entry), содержащей код ASCE.

    Трансляция кодов ALET из регистров доступа AR в коды ASCE выполняется разными способами в зависимости от значений полей ALET. Номер регистра доступа, из которого берется ALET, определяется кодом B или R в командах, исполняемых в режиме адресации с AR-определяемым AS (рис. 2.7). Если в команде задан нулевой номер AR, это соответствует не AR0, а нулевому содержимому AR, то есть трансляция не выполняется, и ASCE находится по умолчанию в CR1 (Primary Virtual Address).

    (рис 2.7) Использование регистров доступа в режиме с AR-определяемым AS AR-specified Virtual Address

    Если в AR 1 $$\div$$ 15 задан код, равный 0 или 1, трансляция не выполняется и ASCE по умолчанию находится, соответственно, в CR1 (Primary Virtual Address) или в CR7 (Secondary Virtual Address). Все остальные значения кодов AR интерпретируются для получения адреса строки таблицы AST, содержащей код ASCE. При этом базовый адрес таблицы AST, содержащей код ASCE, задается в одной из двух таблиц доступа: Primary-space access list или Dispatchable-unit-access list, а индекс - в регистре доступа.

    Формат ALET включает следующие поля (см. рис. 2.5):

  • Бит Р определяет один из двух способов интерпретации ALET. При Р=1 используется таблица доступа Primary-space access list, а при Р=0 - таблица доступа Dispatchable-unit-access list.
  • Поле ALEN задает индекс для обращения в AST.
  • Поле ALESN используется для контроля допустимости обращения к таблице доступа.
  • При Р=1 преобразование выполняется с использованием таблицы доступа Primary-space access list. Текущее значение адреса строки для Primary Virtual Address (PASTEO) из регистра CR5 используется для чтения строки AST (Primary ASTE), в которой задан код ALD, содержащий базовый адрес и длину таблицы доступа Primary-space access list. Базовый адрес суммируется с индексом ALEN из регистра доступа для обращения к строке таблицы доступа Primary-space access list, откуда читается адрес строки AST, содержащей ASCE для AR-specified Virtual Address.

    При Р=0 преобразование выполняется с использованием таблицы доступа Dispatchable-unit-access list. В этом случае по коду DUCTO из управляющего регистра CR2 осуществляется обращение в таблицу доступа Dispatchable-unit-control-table, откуда считывается базовый адрес таблицы доступа DUALD, используемый с индексом ALEN для чтения ASCE из таблицы AST.

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

    Авторизация адресных пространств

    Под авторизацией понимается процесс проверки разрешения на открытие конкретного адресного пространства программой с текущим индексом авторизации. Авторизация или санкционирование адресных пространств выполняется после трансляции задающего его кода ASN или ALET с целью проверки допустимости открытия адресного пространства программой, запустившей трансляцию. Для этого используется специальная таблица авторизации (Authority Table), каждая строка которой содержит два бита разрешения открытия главного (бит P) или вторичного (бит S) адресных пространств. Выбор строки определяется индексом авторизации (Authorization Index - AX) или индексом расширенной авторизации (Extended Authorization Index - EAX), находящимися при исполнении текущей программы в управляющих регистрах CR4 и CR8 соответственно. Общая схема процесса авторизации показана на рис. 2.8.

    (рис 2.8) Схема авторизации адресных пространств

    ASN - авторизация выполняется после трансляции кода адресного пространства ASN. На завершающем этапе трансляции после выборки строки таблицы ASN-second-table, содержащей код управления адресным пространством ASCE, из нее одновременно считываются два поля, определяющие местоположение таблицы авторизации в памяти:

  • поле базового адреса таблицы авторизации (Authority Table Origin - ATO);
  • поле длины таблицы (Authority Table Length - ATL).
  • Индекс AX из управляющего регистра CR4 суммируется с базовым адресом ATO для формирования адреса строки таблицы авторизации с контролем границы таблицы по полю ее длины ATL. При единичном значении бита разрешения открытия, считанного из адресуемой строки, допускается открытие соответствующего типа адресного пространства.

    Расширенная ASN - авторизация выполняется в режиме Access-register mode, использующем регистры доступа для задания адресных пространств. В этом случае базовый адрес и длина таблицы авторизации берется из строки таблицы доступа (Access List), в которой задается также адрес строки таблицы ASN-second-table с используемым кодом управления адресным пространством ASCE. Авторизация при этом выполняется в несколько этапов. Вначале в выбранной строке таблицы Access List проверяется бит защиты памяти FO, единичное значение которого разрешает только чтение из памяти. Затем проверяется бит P, управляющий процессом авторизации. При P=0 адресное пространство считается авторизированным независимо от индекса авторизации. При P=1 авторизация выполняется путем сравнения индекса расширенной авторизации EAX из управляющего регистра CR8 и поля индекса ALEAX из строки таблицы доступа. При совпадении использование адресного пространства допустимо, в противном случае выполняется дополнительное обращение в таблицу авторизации с использованием базового адреса и длины этой таблицы из строки таблицы доступа и индекса EAX из CR8. Авторизация завершается успешно при разрешающем значении бита S, считанного из таблицы авторизации.

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

    Полученный в результате трансляции кодов ASN или ALET код ASCE используется для динамического преобразования DAT виртуального адреса в реальный (см. рис. 2.4). Формат виртуального адреса z/Architecture приведен на табл. 2.9. Разрядность адреса равна 64, а при реализации архитектур с 24- или 31-разрядным адресом старшие биты соответственно 0 $$\div$$ 39 или 0 $$\div$$ 32 обнуляются. Формат в общем случае включает четыре типа индексов, используемых при обращении в таблицы DAT. Индексы сегмента SX, страницы PX и байта BX находятся в младших 24 или 31 разрядах виртуального адреса и соответствуют сегментно-страничной организации памяти. Эти индексы задают, соответственно, номера строк в сегментной и страничной таблицах, а также адрес байта внутри страницы. Расширенный 64-разрядный формат адреса помимо страниц и сегментов предполагает использование дополнительных уровней представления адресного пространства - регионов памяти. Емкости регионов, сегментов и страниц кратны соответственно 2 GB, 1 MB, 4 KB. Максимально возможное число регионов - 8 GB. Номер региона, занимающий старшие 33 бита адреса 0 $$\div$$ 32, в свою очередь состоит из трех полей - первого (RFX), второго (RSX) и третьего (RTX) индексов региона. Использование всех трех индексов допускает объем памяти до 16 EB (Exa Byte = 260 байт), без RFX - до 8 PB (Peta Byte = 250 байт), а без RFX и RSX - до 4 TB (Tera Byte = 240 байт).

    Формат виртуального адреса
    0 11 22 33 44
    52   63
    RFX RSX RTX SX PX BX

    Процесс динамического преобразования адреса определяется управляющими битами 5, 16, 17 PSW (таблица 2.10). Бит 5 определяет тип адресного пространства - реальное или виртуальное. DAT выполняется в режиме виртуального пространства, причем источник кода ASCE определяется управляющими битами 16, 17 PSW.

    Общая схема DAT представлена на рис. 2.9. В соответствии с таблицей 2.10 определяется источник ASCE, задающий базовый адрес первой из таблиц, используемых в преобразовании. При реализации DAT может быть использовано до пяти уровней преобразования, каждый из которых определяется отдельной таблицей:

  • первая региональная таблица (Region First Table);
  • вторая региональная таблица (Region Second Table);
  • третья региональная таблица (Region Third Table);
  • сегментная таблица (Segment Table);
  • страничная таблица (Page Table).
  • Строка каждой из таблиц содержит идентификатор своего типа (TT) и базовый адрес таблицы следующего уровня (RSTO - для второго уровня регионов, RTTO- для третьего уровня регионов, STO - для сегментной таблицы, PTO - для страничной таблицы) и после суммирования с соответствующим индексом из виртуального адреса определяет строку этой таблицы. Длина следующей таблицы (число блоков по 4KB) указывается в поле TL. Кроме того, в поле TF указывается смещение начала следующей таблицы относительно конца текущей в тех же единицах измерения. Бит I определяет доступность регионов сегментов и страниц, охватываемых строкой.

    (рис 2.9) Динамическое преобразование адреса
    Управление выбором ASCE для DAT
    Биты PSW DAT Режим адресации Источник ASCE
    5 16 17     Адреса команд Адреса операндов
    0 0 0 Откл. Real Mode Real Real
    0 0 1 Откл. Real Mode Real Real
    0 1 0 Откл. Real Mode Real Real
    0 1 1 Откл. Real Mode Real Real
    1 0 0 Вкл. Primary Virtual Mode CR1 CR1
    1 0 1 Вкл. Secondary Virtual Mode CR1 CR7
    1 1 0 Вкл. AR-specified Virtual Mode CR1 AST
    1 1 1 Вкл. Home Virtual Mode CR13 CR13

    Формат ASCE включает базовый адрес первой таблицы (TO), используемой в преобразовании. Тип этой таблицы, а, следовательно, и число уровней преобразования, определяется полем DT (таблица 2.11). При DT=11 используются все пять уровней преобразования, и TO в ASCE задает базовый адрес первой региональной таблицы. При DT=00 региональные таблицы не используются, и ASCE задает базовый адрес сегментной таблицы. Кроме того, формат ASCE включает бит R, определяющий тип адресного пространства (реальное или виртуальное), и двухразрядное поле TL, указывающее длину таблицы (в блоках по 4 KB).

    Преобразование DAT выполняется следующим образом. В соответствии с таблицей 2.4 выбирается источник ASCE. Это один из управляющих регистров CR1, CR7, CR13 или строка таблицы AST.

    Управление числом уровней DAT
    DT Первая таблица DAT Тип TO в ASCE
    11 Первая региональная таблица (Region First Table) RSTO
    10 Вторая региональная таблица (Region Second Table) RTTO
    01 Третья региональная таблица (Region Third Table) STO
    00 Сегментная таблица (Segment Table) PTO

    Поле DT из выбранного ASCE в соответствии с таблицей 2.11 определяет число уровней преобразования и таблицу, в которую осуществляется первое обращение. Для этого базовый адрес таблицы из ASCE суммируется с соответствующим индексом из виртуального адреса. При обращении в первую региональную таблицу используется индекс RFX, во вторую региональную таблицу - индекс RSX, в третью региональную таблицу - индекс RTX и в сегментную таблицу - индекс SX. При DT=11 последовательно выполняются обращения в первую, вторую и третью региональные таблицы и в сегментную таблицу, при DT=10 - во вторую и третью региональные таблицы и в сегментную таблицу, при DT=01 - в третью региональную таблицу и в сегментную таблицу, а при DT=00 обращение осуществляется сразу в сегментную таблицу с пропуском всех региональных таблиц. Все старшие неиспользуемые индексы, соответствующие пропущенным таблицам, должны быть нулевыми, в противном случае преобразование прерывается. Контроль обращений осуществляется с учетом длины таблиц и пропусков между ними, заданных кодом ASCE и в строках таблиц, для исключения обращений за их пределы.

    По базовому адресу из считанной строки сегментной таблицы и индексу PX осуществляется обращение в страничную таблицу, откуда считывается реальный адрес страницы (Page-Frame Real Address - PFRA). Этот адрес конкатенируется с индексом байта BX внутри страницы, который передается из виртуального адреса в реальный без изменений, в результате чего формируется реальный адрес обращения в ОП, являющийся выходной функцией DAT.

    Поскольку все таблицы находятся в реальной памяти, и в процессе DAT может потребоваться до пяти обращений в таблицы, время преобразования может быть недопустимо большим. Для его уменьшения в состав устройства DAT вводится буфер быстрой переадресации TLB (Translation-Lookaside Buffer). В литературе такой буфер иногда называют кэш-памятью адресов. В мультипроцессорных реализациях каждый процессор имеет собственный буфер TLB. Процессор обращается в таблицы DAT только при первом преобразовании виртуального адреса. Полученные из таблиц строки вместе с исходными атрибутами преобразования (базовые адреса, индексы, параметры) запоминаются в строках TLB. При последующих обращениях с теми же атрибутами выполняется обращение в TLB без обращений в память.

    Поскольку строки таблиц DAT, размещенных в памяти, и соответствующие им строки TLB должны в процессе трансляции формировать одни и те же ссылки, содержимое этих строк должно выравниваться. С этой целью для строк таблиц DAT, хранящихся в памяти, вводятся два типа состояний: присоединенное (attached) и доступное (valid). Строка считается присоединенной к конкретному процессору, если он может использовать ее для DAT. Одновременно строка может быть присоединенной для нескольких процессоров. Строка является доступной, если регион, сегмент или страница, связанные с этой строкой, имеются в памяти (установлен бит доступности этих блоков в соответствующих строках).

    Каждая строка TLB состоит из двух частей: поле атрибутов для поиска строки, соответствующей текущим атрибутам DAT (ассоциативное поле) и поле результата преобразования (информационное поле).

    В TLB предусмотрено использование трех типов строк:

  • Комбинированные регионально-сегментные строки в ассоциативном поле содержат базовые адреса региональных (если регионы используются) и сегментной таблиц, использовавшихся при выполнении DAT; цепочка таких адресов называется трассой трансляции. Начало трассы задается в ASCE. Трасса может быть размещена в строке TLB, если все строки таблиц DAT, содержащие элементы трассы, присоединены и доступны. Помимо трассы, ассоциативное поле включает индексы регионов (RFX, RSX, RTX) и сегмента (SX) виртуального адреса. Информационное поле строки содержит базовый адрес страничной таблицы, полученный в результате преобразования.
  • Страничные строки в ассоциативном поле содержат базовый адрес страничной таблицы, который получен из присоединенной и доступной строки таблицы DAT, и индекс страницы (PX) из виртуального адреса. В информационном поле строки содержится реальный адрес страницы PFRA, который и является конечным результатом динамического преобразования адреса.
  • Строки реальных адресных пространств включают ассоциативное поле, состоящее из указателя реального адресного пространства Real-space Token Origin (входит в соответствующее ASCE при установленном бите R, задающем реальное адресное пространство), и индексы RFX, RSX, RTX, SX, PX, входящие в виртуальный адрес. Такие строки используются не для DAT, а для контроля допустимости обращения в реальное адресное пространство.
  • Динамическое преобразование адреса начинается с обращения в регионально-сегментные строки TLB по базовому адресу из ASCE и индексам регионов и сегмента. При наличии совпадения из найденной строки считывается базовый адрес страничной таблицы, в противном случае осуществляется обращение в одну из региональных или сегментную таблицу в зависимости от числа совпавших элементов трассы трансляции. По считанному из строки этой таблицы базовому адресу и соответствующим индексам виртуального адреса выполняется повторное обращение в регионально-сегментные строки TLB. Такие обращения выполняются до получения базового адреса страничной таблицы, который вместе с индексом страницы из виртуального адреса используется для обращения в страничную строку TLB. При наличии совпадения из информационного поля страничной строки считывается реальный адрес страницы (PFRA).

    Если в ASCE указан режим реальной адресации, то виртуальный адрес используется как реальный. При этом по указателю реального адресного пространства из ASCE и виртуальному адресу страницы (индексы RFX, RSX, RTX, SX, PX) осуществляется обращение в строки реальных адресных пространств TLB, используемые для контроля допустимости обращения в реальное адресное пространство.

    Префиксация

    Механизм префиксации поясняется на рис. 2.10. При обращении в реальную память в область префиксации с адресами 0 $$\div$$ 8191 осуществляется преобразование реального адреса в абсолютный путем замены старших разрядов 0 $$\div$$ 50 на префикс, находящийся в регистре префикса каждого процессора. При обращении в реальную память в область с номером, равным префиксу, старшие разряды 0 $$\div$$ 50 реального адреса заменяются в абсолютном адресе на 0. Остальные реальные адреса соответствуют абсолютным адресам без преобразования. Содержимое регистра префикса может быть загружено или прочитано командами процессора. Загрузка нулевого префикса означает идентичность реальных и абсолютных адресов.

    (рис 2.10) Механизм префиксации

    Защита памяти

    Защита содержимого основной памяти необходима для исключения разрушения информации или неправильного использования программами, которые содержат ошибки или не имеют санкций доступа. В z/Architecture предусмотрены следующие виды защиты памяти:

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

    Защита по ключу

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

    Защита по ключу
    а) Формат ключа памяти
    ACC F R C
    0 4 6

    б) Таблица управления защитой по ключу
    Совпадение ключа доступа и АСС F Разрешение доступа
    чтение запись
    Да 0 Да Да
    Нет 0 Да Нет
    Да 1 Да Да
    Нет 1 Нет Нет

    ACC - поле контроля доступа; сравнивается с ключом доступа, формируемым при обращении в ОП.

    F - бит защиты от чтения; при F=0 контролируется только запись, а при F=1 - и запись, и чтение.

    R - бит обращения; устанавливается в единицу при каждом обращении в блок для чтения или записи (бит активности).

    C - бит изменения блока; устанавливается в 1 при выполнении записи в блок (бит модификации).

    Биты R и C могут применяться для учета свободных и модифицированных блоков памяти.

    Принцип защиты по ключу иллюстрируется таблицей на табл. 2.12б. При каждом обращении в память с включенной защитой номер блока, в который осуществляется обращение, используется для чтения ключа из памяти ключей. Поле контроля доступа ACC из считанного ключа сравнивается с ключом доступа, находящимся в PSW, управляющем регистре или в канальной системе. При совпадении ключей или нулевом ключе доступа разрешается обращение любого типа, а при несовпадении - запрещается либо только запись (при F=0), либо и запись, и чтение (при F=1). При запрете обращения реализуется прерывание.

    Для обеспечения обращения одной программы со своим ключом в область памяти другой программы предусмотрена возможность отключения защиты для отдельных блоков памяти. Такой способ разрешается битом управления отключением защиты в CR0. При его установке и ACC=9 защита не используется. Помимо этого предусмотрена возможность отключения защиты обращения для чтения по эффективным адресам 0 $$\div$$ 2047. Такая отмена разрешается другим управляющим битом в CR0. Исключение составляет ситуация, когда эффективный адрес является виртуальным, и установлен бит запрета отключения защиты от чтения в ASCE.

    Защита адресных пространств с использованием таблицы доступа

    Данный тип защиты реализуется в режиме AR-specified Virtual Address и относится к адресному пространству, задаваемому в регистре доступа. С этой целью в строке таблицы доступа Access List (см. рис. 2.8), используемой в процессе трансляции кода ALET из регистра доступа, указывается бит запрета записи FO, нулевое значение которого разрешает и запись, и чтение, а единичное - только чтение.

    Страничная защита

    Страничная защита предназначена для исключения несанкционированной записи в страницах виртуальной памяти. С этой целью в строках сегментных и страничных таблиц, используемых в процессе динамического преобразования адреса, задаются биты страничной защиты от записи. При нулевом значении этого бита в строке страничной таблицы разрешается и запись, и чтение, а при единичном - только чтение из соответствующей страницы. Бит страничной защиты в строке сегментной таблицы относится ко всем страницам, входящим в сегмент, и используется совместно с битами в строках страничной таблицы путем объединения по "ИЛИ". Таким образом, при единичном значении этого бита защищены от записи все страницы сегмента, а при нулевом - защита определяется битами в строках страничной таблицы.

    Защита зоны начальных адресов памяти

    Такая защита применяется для запрета записи в области памяти с адресами 0 $$\div$$ 511 и 4096 $$\div$$ 4607, то есть в начальные 512 байт первой и второй страниц, используемых в процессах прерываний. Защита осуществляется по эффективным адресам, формируемым командами процессоров, до их преобразований при использовании DAT и префиксации. Разрешение защиты задается специальным битом в управляющем регистре CR0. Если эффективный адрес преобразуется с применением DAT, защита может быть отключена управляющим битом в коде ASCE, который используется в процессе преобразования.

    Управление работой процессора

    Состояния процессора

    Процессор z/Architecture может находиться в одном из четырех взаимоисключающих состояний:

  • СТОП - команды и прерывания (кроме прерывания для рестарта) не выполняются.
  • РАБОТА - команды и прерывания исполняются в соответствии с управляющими кодами в слове состояния программы, управляющих регистрах и режимом, заданным оператором.
  • ЗАГРУЗКА - состояние устанавливается в процессе первоначальной загрузки в соответствии с ESA/390.
  • СБОЙ - переход в это состояние вызывается машинными сбоями, выявленными в процессе функционирования процессора.
  • Таймер процессора функционирует в состояниях РАБОТА и ЗАГРУЗКА, а работа часов TOD не зависит от состояния процессора. Состояние процессора не отражается и не контролируется битами в PSW, а индицируется операторными средствами. Переходы из одного состояния в другое могут быть вызваны определенными событиями, по команде SIGNAL PROCESSOR с адресом данного процессора или по командам с пульта оператора. Условия переходов из одного состояния в другое приведены в таблице 2.13.

    Слово состояния программы PSW

    Текущее слово состояния программы PSW, как и управляющие регистры, содержит информацию, необходимую для управления процессом исполнения команд программы. Форматы PSW для z/Architecture (128 бит) и предшествующей ей архитектуры ESA/390 (64 бита) приведены на табл. 2.14.

    Основными полями PSW, определяющими последовательность исполнения команд, являются поля адреса команды и кода условия. Поле адреса команды реализует функции программного счетчика, то есть формирует адрес очередной исполняемой команды. В зависимости от режима адресации, определяемого битами EA, BA в PSW, разрядность адреса может быть равна 64, 32 или 24. Двухразрядный код условия СС формируется по результатам исполнения большинства команд и используется в качестве признака перехода в командах ветвления [2.1]. Другие поля PSW используются в различных архитектурных механизмах, реализуемых процессором (прерывания, динамическое преобразование адреса, защита памяти и др.). Смена значений всего PSW или отдельных его полей выполняется либо программно при выполнении некоторых команд, например, LOAD PSW, BRANCH и SET PROGRAM MASK, либо автоматически при смене состояний различных процессов (прерывания, смена состояния процессора и т. п.).

    Состояния процессора и условия переходов
    Следующее состояние ЗАГРУЗКА СТОП РАБОТА СБОЙ
    Исходное состояние       
    ЗАГРУЗКА    Пошаговый режим Непрерывный режим Сбой оборудования
    СТОП  Переключатели загрузки   Переключатель рестарта, приказ запуска в команде SYGNAL PROCESSOR
    РАБОТА  Переключатели сброса процессора, приказ "Стоп" в команде SYGNAL PROCESSOR, завершение шага в пошаговом режиме работы, останов по совпадению адресов  
    СБОЙ  - Сброс -  

    Внешнее управление

    Предусмотрено пять инициируемых извне функций процессора (таблица 2.15):

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

  • прекращение выполнения текущей команды или других действий, например прерываний;
  • сброс всех условий прерываний, кроме внешних плавающих прерываний;
  • все предварительно выбранные команды и операнды, а также подготовленные для записи в память результаты сбрасываются;
  • очищаются строки буферов ALB, TLB;
  • если сброс вызван переключателем "загрузка - нормальная" любого из процессоров конфигурации, устанавливается режим архитектуры ESA/390, текущее PSW трансформируется в формат ESA/390, сохраняется для последующего восстановления режима z/Architecture по команде SIGNAL PROCESSOR.
  • Слово состояния программы PSW
    а) z/Architecture
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    0 R 0 0 0 T IO EX Key 0 M W P AS CC Program mask 0 0 0 0 0 0 0 EA
    32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
    BA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
    Адрес команды
    96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
    Адрес команды (продолжение)
    б) ESA/390
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    0 R 0 0 0 T IO EX Key 1 M W P AS CC Program mask 0 0 0 0 0 0 0 EA
    32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
    BA Адрес команды

    R - бит разрешения прерывания для записи программных событий.

    T - бит управления динамическим преобразованием адреса (DAT). При Т=0 преобразование не выполняется и адреса команд и операндов трактуются как реальные.

    IO - бит разрешения прерываний по вводу-выводу.

    ЕХ - бит разрешения внешних прерываний.

    Key - ключ защиты памяти, используемой процессором при обращении в ОП.

    М - бит разрешения прерываний по сбоям.

    W - бит включения режима ожидания, при котором команды не выполняются, но прерыванияя обрабатываются.

    Р - бит задания режима супервизор/задача, при Р=0 задан режим супервизора, в котором допустимо исполнение всех команд, при Р=1 в режиме задачи допустимо исполнение непривилегированных команд, а также полупривилегированных команд при наличии особых условий.

    AS - код управления режимом адресации, используется совместно с битом Т.

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

    Program mask - маска программы для запрета/разрешения прерываний в особых случаях, возникающих в процессе исполнения программы: бит 20 - переполнение в операциях с фиксированной точкой, бит 21 - переполнение в операциях с десятичными числами, бит 22 - потеря значимости порядка в операциях с плавающей точкой в формате HFP, бит 23 - потеря значимости в операциях с HFP-числами.

    ЕВ, ВА - биты управления разрядностью эффективного адреса: 00 - 24 разряда, 01 - 31 разряд, 10 - недопустимая комбинация, 11 - 64 разряда.

    Адрес команды - поле адреса очередной исполняемой в процессоре команды, используемое число разрядов определяется битами ЕА, ВА.

    Функции внешнего управления
    Активируемые переключатели Уровни воздействия
      Процессор, к которому относится переключатель Другие процессоры в конфигурации Остальная часть конфигурации
    Системный сброс - нормальный сброс процессора сброс процессора сброс подсистемы
    Системный сброс - с очисткой сброс с очисткой сброс с очисткой сброс с очисткой
    Загрузка - нормальная начальный сброс процессора с последующей IPL сброс процессора сброс подсистемы
    Загрузка - с очисткой сброс с очисткой с последующей IPL сброс с очисткой сброс с очисткой

    После выполнения перечисленных действий процессор переходит в состояние СТОП. Если после сброса следует процедура начальной загрузки IPL (initial program load), процессор переходит в состояние ЗАГРУЗКА.

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

  • если сброс вызван переключателем "загрузка - нормальная", в данном процессоре и во всех процессорах конфигурации устанавливается режим архитектуры ESA/390;
  • содержимое текущего PSW, старого PSW, регистров префикса, таймера CP, компаратора времени, программируемого регистра TOD и регистра управления операциями с ПТ устанавливается в 0;
  • в управляющих регистрах устанавливаются начальные состояния, соответствующие режиму z/Architecture.
  • Сброс подсистемы предназначен для тех элементов конфигурации, которые не являются процессорами, путем выполнения следующих действий:

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

  • во всех процессорах конфигурации устанавливается режим архитектуры ESA/390;
  • регистры общего назначения, регистры с плавающей точкой, регистры доступа устанавливаются в 0;
  • содержимое основной памяти в конфигурации и соответствующие ключи памяти обнуляются;
  • блокировки, применяемые в любом процессоре конфигурации при исполнении команды PERFORM LOCKED OPERATION, отменяются;
  • выполняется сброс подсистемы.
  • Сброс по питанию выполняется при включении питания. Сброс CP включает сброс регистров GR, FPR, AR в нулевое состояние и установку режима ESA/390 в случае сброса для конфигурирования или режима, в котором находятся другие процессоры. Сброс CP может сопровождаться сбросом TOD часов, основной и расширенной памяти и канальной подсистемы.

    Средства временной синхронизации (Timing)

    Для отсчета времени и взаимной синхронизации процессоров в z/Architecture предусмотрены три возможности:

  • часы для отсчета реального времени и ведения даты и времени суток (TOD сlock); в системе предусматривается использование одних часов TOD для всех процессоров и в каждом процессоре имеется программируемый регистр TOD, связанный с часами;
  • компаратор времени, имеющийся у каждого процессора и предназначенный для выработки прерывания, когда показания часов TOD превышают установленное программой значение;
  • процессорный таймер (CPU Timer), обеспечивающий измерение прошедшего времени и выработку прерывания в случае истечения заданного интервала времени; каждый процессор имеет собственный таймер.
  • Часы TOD представляют собой 104-разрядный двоичный счетчик, который инкрементируется в типовом варианте каждую микросекунду добавлением +1 в разряд 51 (табл. 2.16).

    Формат счетчика часов TOD
    0 51 103
    1 микросекунда

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

    Часы могут находиться в одном из следующих состояний: выставлены, не выставлены, остановлены, неисправны или отключены. Переходы из одного состояния в другое задаются специальными командами или процедурами. Часы могут быть отключены при отсутствии питания или для технического обслуживания. После подачи питания часы обнуляются и переходят в невыставленное состояние. Переход в выставленное состояние осуществляется только из остановленного состояния. Часы останавливаются по команде SET CLOCK, загружающей новое значение показаний, если включено ручное управление TOD или установлен бит TOD-clock control override в CR14. Переход из остановленного состояния в выставленное выполняется в зависимости от значения бита управления часами в CR0 (TOD-clock-sync-control bit) в процессоре, выполнившем команду SET CLOCK: автоматически при сброшенном состоянии бита или с задержкой до сброса этого бита. В выставленном или невыставленном состояниях часы идут, то есть инкрементируются. Неисправное состояние часов устанавливается средствами контроля, зависящими от модели, при выявлении сбоев в их работе с последующим прерыванием процессора от схем контроля.

    Установка показаний в часах выполняется командой SET CLOCK при наличии разрешающих условий. При этом в счетчик часов в инкрементируемые разряды загружается операнд команды, а остальные биты обнуляются. В многопроцессорных конфигурациях одновременное выполнение команд SET CLOCK в разных процессорах блокируется. Считывание показаний часов выполняется командами STORE CLOCK, STORE CLOCK EXTENDED путем занесения, соответственно, разрядов 0 $$\div$$ 63 или 0 $$\div$$ 103 счетчика часов в 8- или 16-байтный операнд в памяти. Формат показаний часов для команды STORE CLOCK EXTENDED показан на табл. 2.17, где поле Programmable Field загружается из программируемого регистра TOD. Выполнение двух последовательных команд чтения в одном или разных процессорах приводит к разным показаниям часов. Выполнение команд чтения часов в отключенном или неисправном состоянии приводит к записи нулевых показаний.

    Формат показаний часов TOD
    0 8
    112 		128
    00000000 TOD clock Programmable Field

    Каждый процессор системы содержит 32-разрядный программируемый регистр TOD, младшие 16 бит которого содержат поле Programmable Field, загружаемое в память вместе с показаниями часов командой STORE CLOCK EXTENDED. Это позволяет идентифицировать показания часов для разных конфигураций.

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

  • часы идут и уставка в компараторе меньше показаний часов в сравниваемых разрядах;
  • часы в неисправном или отключенном состоянии.
  • Загрузка уставки в регистр компаратора выполняется командой SET CLOCK COMPARATOR, а чтение - командой STORE CLOCK COMPARATOR. Загрузка компаратора или установка часов, приводящие к превышению уставки по отношению к показаниям часов, сбрасывают ранее установленный запрос прерывания.

    Процессорный таймер является двоичным счетчиком в формате, соответствующем старшим 64-м разрядам счетчика часов, исключая старший бит 0, рассматриваемый как знаковый. Таймер декрементируется вычитанием 1 из разряда 51 каждую микросекунду. В моделях с большей или меньшей разрешающей способностью таймера для декремента может быть выбран другой разряд таймера с сохранением периода переключения 1 мкс в 51 разряде. Прерывание от таймера вырабатывается при достижении отрицательного значения, то есть при установке 1 в разряде 0. При загрузке в таймер положительной величины прерывание не сохраняется. В некоторых моделях для более точного измерения фактического времени исполнения программы таймер приостанавливается во время других операций, например, интенсивных операциях ввода-вывода. Загрузка в таймер выполняется командой SET CPU TIMER, а чтение - командой STORE CPU TIMER.

    Мультипроцессирование

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

    Основу мультипроцессирования составляют:

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

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

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

    Команда Signal Processor является основным средством взаимодействия процессоров путем сигнализации и получения ответа. Такая команда адресует один процессор (в одном из вариантов команды адресуются все процессоры) и передает ему один из приказов, перечисленных в таблице 2.18. В каждом процессоре предусмотрены средства для передачи, получения и выполнения приказов, а также формирования ответа для процессора, исполняющего команду Signal Processor.

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

    Прерывания

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

    Приказы, выполняемые по команде Signal Processor
    Приказ Действия в адресуемом процессоре
    Опрос состояния (Sense) Передача в адресующий процессор кода своего состояния
    Внешний вызов (External Call) Формирование условия внешнего прерывания с указанием в коде прерывания адреса процессора, передавшего приказ
    Экстренный сигнал (Emergency Signal) Формирование условия внешнего прерывания экстренного сигнала с указанием в коде прерывания адреса процессора, передавшего приказ
    Пуск (Start) Переход в режим РАБОТА
    Стоп (Stop) Переход в режим СТОП
    Повторный пуск (Restart) Выполнение повторного пуска
    Стоп с сохранением состояния (Stop and Store Status) Сохранение состояния и переход в режим СТОП
    Первоначальный сброс процессора (Initial CP Reset) Выполнение первоначального сброса процессора без изменения архитектурного режима и сброса других процессоров и ввода-вывода
    Сброс процессора (CP Reset) Сброс процессора без изменения архитектурного режима и сброса других процессоров и ввода-вывода
    Установка префикса (Set Prefix) Загрузка префикса, указанного в команде, в регистр префикса процессора
    Запись состояния по адресу (Store Status at Address) Запись состояния процессора в область абсолютной памяти, адрес которой указан в команде. Состояние объемом 512 байт включает значения всех программно доступных регистров процессора
    Установка архитектуры (Set Architecture) Адрес процессора игнорируется, и все процессоры конфигурации выполняют установку архитектурного режима, заданного в команде: архитектура ESA/390 или z/Architecture. При установке z/Architecture либо все процессоры трансформируют текущее PSW в формат z/Architecture, либо процессор, исполняющий команду Signal Processor, трансформирует текущее PSW, а остальные восстанавливают последний сохраненный формат z/Architecture. При установке архитектуры ESA/390 текущие PSW сохраняются и затем трансформируются в формат ESA/390

    Все прерывания разбиты на шесть классов:

  • Прерывание по вызову супервизора возникает при исполнении в процессоре команды SUPERVISOR CALL, основным назначением которой является переключение в режим СУПЕРВИЗОР. Данное прерывание не может быть запрещено маскированием и выполняется сразу после исполнения команды SUPERVISOR CALL.
  • Программные прерывания возникают при возникновении нарушений или особых ситуаций в процессе исполнения команд программы, например, при недопустимом коде операции, при исполнении привилегированной команды в режиме РАБОТА, при попытках несанкционированных обращений в память и др.
  • Прерывания от схем контроля формируются при неисправностях и сбоях аппаратных средств. Различают неотложные прерывания, требующие немедленной реакции процессора, и подавляемые прерывания, допускающие отложенную обработку.
  • Внешние прерывания обеспечивают реакцию процессора на различные сигналы, возникающие внутри системы и вне нее. К ним относятся сигналы от кнопки прерывания с пульта управления (Interrupt key), оповещения о сбое (Malfunction alert), от компаратора времени (Clock comparator), от процессорного таймера (CPU timer) и др.
  • Прерывания ввода-вывода формируются в подсистеме ввода-вывода и предназначены для передачи в процессор информации о возникновении особых ситуаций в периферийном оборудовании и канальной подсистеме.
  • Прерывание рестарта обеспечивает выполнение специальной программы и инициируется оператором путем нажатия кнопки рестарта на пульте управления или по команде SIGNAL PROCESSOR от другого процессора, адресующей данный процессор. Данное прерывание не может быть запрещено маскированием.
  • Условия выполнения команды Signal Processor, передаваемые в коде состояния
    Условие Причины выработки условия в адресуемом процессоре
    Сбой оборудования (Equipment check) При выполнении команды обнаружен сбой оборудования
    Некорректное состояние (Incorrect state) Приказы "Стоп с сохранением состояния", "Установка префикса" или "Установка архитектуры" не могут быть выполнены вследствие особых состояний процессора
    Недействительный параметр (Invalid parameter) Параметр, принятый с приказом, является недействительным, например, указана область памяти недоступная в данной конфигурации
    Отложенное внешнее прерывание (External-call pending) Реализация внешнего прерывания, инициализируемого командой, откладывается, так как в процессоре исполняется приказ из предыдущей команды Signal Processor
    Остановлен (Stopped) Процессор находится в состоянии СТОП
    Вмешательство оператора (Operator intervening) Процессор выполняет некоторые операции, инициированные местными или удаленными операторными возможностями
    Стоп при сбое (Check stop) Процессор находится в состоянии СТОП при сбое
    Не функционирует (Inoperative) Выполнение операции, определенной приказом, требует использования сервисного процессора, который не функционирует
    Недействительный приказ (Invalid order) Принят неопределенный или не используемый код приказа
    Контроль приема (Receiver check) В процессе передачи при исполнении команды Signal Processor обнаружены сбои

    Причина прерывания внутри класса уточняется кодом прерывания этого класса, который в процессе прерывания заносится в отдельную область памяти, закрепленную за данным классом. В зависимости от класса длина кода прерывания может быть 16, 32 или 64 бита. Код прерывания используется прерывающей программой для определения процедуры, выполнение которой необходимо для обработки прерывания.

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

    В таблице 2.20 приведены адреса размещения PSW, кодов и масок прерываний.

    Большинство команд допускают прерывания после полного окончания их исполнения. В процессе исполнения могут быть прерваны команды, называемые прерываемыми (interruptible). К ним относятся такие команды, как MOVE LONG, COMPARE LOGICAL LONG и др. Процесс исполнения этих команд состоит из последовательно исполняемых этапов (unit of operation). Прерывания допускаются после завершения текущего этапа, и прерванная команда считается частично выполненной.

    Классы прерываний
    Классы прерываний Адреса памяти для размещения PSW Маска прерываний Адреса памяти для кода прерывания
    Старое Новое в PSW в управляющих регистрах
    Внешние 304 432 7 CR0[48-50, 52-54, 57, 59] 134-135
    Ввода-вывода 368 496 6 CR6[32-39] 184-191
    От схем контроля 352 480 13 CR14[35-39] 232-239
    Программные 336 464 1, 20 $$\div$$ 23 CR0[33], CR1[57], CR8[32-47], CR9[32-36], FPC? 142-143
    Рестарта 288 416 - - -
    Вызов супервизора 320 448 - - 138-139

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

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

    Прерывания, которые могут быть обработаны любым из процессоров конфигурации, называются плавающими прерываниями (floating interruption). Запрос на такое прерывание подается в первый из процессоров, в котором это прерывание не замаскировано, после чего сбрасывается для исключения повторных прерываний в других процессорах. К плавающим прерываниям относятся прерывания ввода-вывода, некоторые из внешних прерываний и от схем контроля.

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

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

  • прерывание по вызову супервизора;
  • программные прерывания;
  • прерывания от схем контроля, допускающие отложенную обработку;
  • внешние прерывания;
  • прерывания ввода-вывода;
  • прерывание рестарта.
  • Внутри класса все прерывания также ранжируются путем присвоения соответствующих приоритетов.

    Обработка одновременно поступивших запросов осуществляется путем последовательной записи старых PSW и выборки новых PSW без исполнения команд прерывающих программ до тех пор, пока не будут обработаны все имеющиеся запросы. Далее в обратном порядке в соответствии с сохраненными старыми PSW выполняются прерывающие программы.

    Функционирование процессора

    Исполнение команд

    Основной функцией процессора является выборка и исполнение команд, включая выборку и сохранение операндов. Биты 31, 32 текущего PSW определяют разрядность формируемых эффективных адресов: 24, 31 или 64 разряда. Адреса команд задаются из программного счетчика, размещенного в поле слова состояния программы PSW (разряды 64 $$\div$$ 127 или 33 $$\div$$ 63). Адрес очередной команды определяется путем увеличения адреса текущей команды в поле PSW на длину выбранной команды, либо из команд переходов. Адреса операндов формируются с использованием различных полей адресных частей команд: R, B, X, D, I, L, M. При формировании адресов обращений в ОП используется 64-разрядный формат, но число используемых разрядов определяется режимом адресации.

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

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

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

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

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

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

    Выборка команд из памяти включает чтение 1 $$\div$$ 3 полуслов по адресу из текущего PSW. Допускается выборка команд как операндов, заданных в адресной части исполняемой команды. Команды выбираются не обязательно в концептуальной последовательности, одни и те же команды могут быть выбраны несколько раз (при сохранении однократности исполнения), а также фрагментами в порядке, который может не совпадать с их расположением в формате команды. Допускается предварительная выборка команд, сброс которых выполняется при сериализации, включении/выключении DAT и в некоторых других случаях.

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

  • окончание (Completion) обеспечивает выполнение всех функций, предусмотренных в команде, и установку в PSW адреса следующей команды;
  • подавление (Suppression) исполнения команды предусматривает ее исполнение как команды NOP без изменения любых результатов, включая код условия. В PSW устанавливается адрес следующей команды;
  • аннулирование (Nullification) команды выполняется так же, как и подавление, но при выполнении процедуры прерывания в старом PSW сохраняется адрес аннулированной команды;
  • прекращение (Termination) выполнения команды вызывает неопределенное состояние формируемых командой результатов и полей, при этом в старом PSW устанавливается адрес очередной после прерванной команды.
  • Для большинства команд варианты завершения относятся к команде в целом, так как они состоят из одного этапа (unit of operation). Завершение многоэтапных прерываемых команд может выполняться одним из рассмотренных выше способов после каждого из выделенных этапов исполнения.

    Трассировка

    Трассировка (tracing) - процесс непрерывной записи в таблицу трассировки информации о наиболее существенных событиях в процессоре. Такие записи позволяют определять причины различных проблемных состояний процессора. Трассировка включает реализацию четырех функций, каждая из которых завершается записью строки таблицы трассировки.

    Трассировка переходов реализуется после исполнения определенных команд перехода. В строку таблицы при этом записывается адрес перехода с учетом режима адресации, устанавливаемого после перехода (24-, 31-, 64-разрядный адрес). Примерами команд, вызывающих трассировку ветвлений, являются команды BALR при R2 $$\ne$$ 0, BASR при R2 $$\ne$$ 0 и др.

    Трассировка ASN предназначена для фиксации событий, связанных со сменой адресных пространств и трансляцией ASN. После исполнения таких команд, как PC, PR, PT и др. в зависимости от исполненной команды в строках таблицы трассировки фиксируются ASN, адрес перехода, адрес возврата, ключ из PSW, PC Number и содержимое полей некоторых регистров GR.

    Трассировка режимов используется для записи информации о переключениях режимов адресации из базового (24- или 31-разрядного) в расширенный (64-разрядный) или обратно. После исполнения команд SAM, BASSM, RP и др. в таблице фиксируются адреса переходов с учетом их разрядности.

    Представленные выше три типа трассировки относятся к неявной трассировке в отличие от прямой трассировки, выполняемой по специальной команде.

    Прямая трассировка производится принудительно при исполнении команд TRACE, TRACG путем занесения в таблицу текущего времени из TOD, операнда, заданного в команде, и содержимого регистров.

    Общий формат строки представлен в табл. 2.21.

    Обобщенный формат строки таблицы трассировки
    1 $$\div$$ 12 бит 2 $$\div$$ 142 байт
    Идентификатор типа трассировки Поля сохраняемых параметров

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

    Регистрация программных событий (Program-Event Recording - PER)

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

  • Выполнение команды перехода при успешных условиях перехода. При этом может быть добавлена опция попадания адреса перехода в заданную область памяти.
  • Выборка команд из определенной области памяти.
  • Изменения содержимого определенной области памяти. Дополнительная опция позволяет задать адресные пространства, в которых находится выделенная область.
  • Выполнение команды записи в реальное адресное пространство (STORE USING REAL ADDRESS).
  • Типы регистрируемых событий и область памяти для их записи указываются в управляющих регистрах CR9, 10, 11 (табл. 2.22). Опция учета адресных пространств, управляемая битом S, может быть задействована только при включенном механизме динамического преобразования адреса и при задании в коде управления адресным пространством ASCE значения бита S, разрешающего регистрацию программных событий записи в определенную область памяти этого пространства.

    Управление регистрацией PER-событий
    CR9 EM B S
    CR10 Начальный адрес области памяти PER
    CR11 Конечный адрес области памяти PER

    EM - четырехразрядная маска разрешения регистрации разных типов программных событий.

    В - бит разрешения опции попадания адреса перехода в заданную область памяти.

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

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

    Процесс регистрации программных событий включается битом R в PSW для разрешения прерывания по записи программных событий. При этом программные события, не замаскированные в CR9, вызывают прерывания после завершения исполнения команд, вызвавших наступление событий. Команды записи более 4KB при этом могут быть приостановлены для регистрации программного события по записи.

    Программное прерывание по PER-событию устанавливает в 1 бит 8 кода прерывания и записывает в фиксированные ячейки реальной памяти с адресами 150 $$\div$$ 161 следующую информацию (табл. 2.23):

  • код PERC (PER-code), идентифицирующий типы регистрируемых PER-событий;
  • поле ATMID (Addressing-and-Translation-Mode Identification), в котором указываются биты EA, BA управления разрядностью эффективного адреса, бит T управления динамическим преобразованием адреса, код AS управления режимом адресации, а также бит подтверждения достоверности поля ATMID;
  • адрес команды, при исполнении которой произошло программное событие (PER Address);
  • поле AI (PER ASCE Identification) для идентификации типа используемого ASCE при включенном DAT (Primary, AR-specified, Secondary, Home);
  • поле PAID (PER Access Identification) для указания номера регистра доступа при использовании AR-specified ASCE.
  • Регистрация PER-событий
    Адреса ячеек ОП
    0           15
    150 $$\div$$ 151PERC 000 ATMID AI
    0           63
    152 $$\div$$ 159PER Address
    0            8
    1610000 PAID

    Помимо этого, в старом PSW фиксируется адрес следующей команды и запоминается по фиксированным адресам код длины команды (ILC), вызвавшей программное событие.

    Использование регистрации программных событий может снизить производительность системы, для отключения этого механизма в программе следует сбросить бит R в PSW и/или замаскировать регистрацию кодом EM в CR9.

    Логическое разделение ресурсов сервера

    Сервер zSeries обеспечивает три уровня конфигурирования и может функционировать с использованием одного, двух или трех уровней управления. Такими уровнями являются [2.1]:

  • Базовая система (1-й уровень), обеспечивающая работу в базовом режиме (basic mode).
  • Логический раздел (logical partition - LPAR), реализуемый на 2-м уровне в режиме логических разделов (LPAR mode). Режим обеспечивается гипервизором (hypervisor), который является компонентом сервера. Базовая система при этом также функционирует.
  • Виртуальная система (3-й уровень) создается при запуске управляющей программы виртуальных машин в базовой системе или в логическом разделе. В виртуальной системе, в свою очередь, может быть запущена управляющая программа виртуальной машины, что позволяет создать виртуальные машины более высокого уровня, которые также относятся к третьему уровню конфигурации.
  • В серверах z990, z890 базовый режим возможен только в сочетании с режимом логических разделов и отдельно не используется. Информация об уровне, в котором исполняется программа, и о компонентах, на которых реализуется уровень, может быть получена командой STORE SYSTEM INFORMATION (STSI). Исполнение такой команды допускается только в том случае, если запрашиваемый уровень равен или меньше уровня текущей программы.

    Максимальное количество разделов LPAR определяется моделью сервера и может достигать 30 для z990, z890 (в перспективе - 60) и 15 - для предшествующих генераций моделей [2.4, 2.5]. Логический раздел LPAR определен как совокупность логических ресурсов, реализуемых выделенными для него физическими ресурсами. К таким ресурсам относятся процессоры, память и каналы ввода-вывода. Каждый из LPAR, по сути, является логическим сервером, в котором обеспечивается изолированное от других LPAR исполнение собственной операционной системы z/OS, OS/390, z/VM, Linux, VSE/ESA или Coupling Facility Control Code (CFCC). LPAR всегда соотнесен с одной из логических канальных подсистем LCSS, допускающей подключение до 15 LPAR. Логический раздел может быть активирован или деактивирован в любой момент "на ходу", в то время как для создания нового или удаления ранее созданного раздела необходима остановка системы с использованием процедуры сброса по питанию POR. После создания и активации LPAR в него загружается и запускается операционная система.

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

  • количество выделяемых для раздела ресурсов сервера: логических процессоров, памяти и каналов ввода-вывода;
  • весовой коэффициент, присваиваемый разделу для его соотношения с другими разделами в составе одного сервера при использовании общих разделяемых ресурсов;
  • ограничение на использование разделом процессоров в большем количестве, чем допускается весовым коэффициентом (LPAR capping);
  • безопасность и другие параметры.
  • Данные параметры и информация о выделенных для раздела ресурсах формируются через консоль управления HMC и сохраняются в дисковой памяти элемента поддержки SE в виде профиля раздела (logical partition Image Profile).

    В логический раздел могут быть выделены процессоры разных типов: CP, ICF, IFL или zAAP. Каждый из процессоров может быть постоянно закреплен (dedicated) за одним разделом либо является общим (shared) ресурсом для всех LPAR. Для распределения общих процессоров между LPAR используются весовые коэффициенты, присвоенные разделам и позволяющие учесть важность и цели решаемых разделами задач [2.6, 2.7]. Вариант с общими процессорами потенциально более эффективен, так как позволяет перераспределять вычислительную мощность освобождающихся в LPAR процессоров в другие разделы. Возможно введение ограничения LPAR capping на использование разделом процессоров. Одновременное использование закрепленных и общих процессоров допустимо только в логических разделах Coupling Facility (CF). Число выделенных для раздела процессоров ограничено числом физических процессоров, используемых в модели сервера. Дополнительные резервные процессоры могут быть выделены для безостановочного расширения раздела. Вес и количество выделяемых процессоров могут динамически изменяться в процессе функционирования сервера.

    Распределение основной и расширенной памяти между разделами выполняется в процессе создания LPAR и предусматривает выделение каждому из разделов части адресного пространства памяти. Максимальный объем памяти, выделяемой для одного раздела, ограничен объемом используемой в сервере памяти (для z/Architecture - 256 GB, в режиме ESA/390 - 2 GB) без учета области системной памяти HSA. Использование общих фрагментов основной или расширенной памяти разными LPAR не допускается. Объем выделяемой для раздела памяти измеряется блоками, размер которых зависит от объема инсталлированной в сервере памяти (таблица 2.24).

    В процессе функционирования сервера резервная память может быть динамически перераспределена между LPAR посредством системы динамической реконфигурации памяти Dynamic Storage Reconfiguration (DSR).

    Соотношение объема инсталлированной памяти и размера блока
    Объем инсталлированной памяти (GB) Размер блока для LPAR (MB)
    5 $$\div$$ 8 16
    8 $$\div$$ 16 32
    16 $$\div$$ 32 64
    32 $$\div$$ 64 128

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

  • Закрепленные каналы предназначены для использования только в одном логическом разделе. В качестве таких каналов могут применяться любые типы каналов, поддерживаемые сервером.
  • Реконфигурируемые каналы также относятся к неразделяемым ресурсам и в каждый момент времени используются только одним LPAR, однако допускают перераспределение в другие LPAR в составе одной канальной подсистемы LCSS. Реконфигурируемыми могут быть любые типы каналов, поддерживаемые сервером.
  • Совмещенные каналы относятся к разделяемым ресурсам внутри одной LCSS. Таким каналам соответствуют несколько образов канальных путей, принадлежащих разным LPAR (см. раздел 2.2).
  • Объединенные (spanned) каналы также являются разделяемыми ресурсами, но допускают подключение к LPAR, входящим в разные LCSS.
  • Совместное использование периферийных устройств в разных LPAR достигается путем их подключения через несколько закрепленных или реконфигурируемых каналов, а также через один совмещенный или объединенный канал.

    Управление совместным функционированием всех LPAR осуществляется системным менеджером Processor Resource/Systems Manager (PR/SM) [2.6], реализованным на уровне милликодов системного гипервизора. Одной из основных функций PR/SM является распределение всех инсталлированных в сервер ресурсов между логическими разделами с учетом их весовых коэффициентов. Впервые системный менеджер был внедрен в 1988 году для управления четырьмя разделами и сейчас он расширен как по числу управляемых разделов (до 30 и более), так и по функциям, обеспечивающим оптимизацию управления ресурсами сервера. С этой целью логические разделы одного сервера могут быть объединены в LPAR-кластер (LPAR cluster) для оптимального управления и распределения ресурсов сервера между разделами кластера через PR/SM.

    Новым дополнительным средством оптимизации использования ресурсов серверов zSeries является интеллектуальная система распределения ресурсов Intelligent Resource Director (IRD) [2.6]. Эта система объединяет функции менеджера PR/SM, реализующего приоритетное управление на уровне логических разделов, и менеджера рабочей нагрузки WLM (Workload Manager), управляющего приоритетами задач внутри LPAR. С помощью IRD реализуется автоматическое перераспределение ресурсов в LPAR-кластере с учетом сформулированных целей и важности решаемых задач. Основными функциями IRD являются:

  • менеджмент процессоров LPAR (LPAR CPU Management), включающий динамическую настройку числа логических процессоров в составе LPAR и процессорных весовых коэффициентов LPAR с учетом информации от WLM;
  • динамический менеджмент канальных путей DCM (dynamic channel path management) для перераспределения пропускной способности канальной подсистемы путем передачи каналов от менее загруженных к более загруженным периферийным устройствам;
  • организация приоритетных очередей в канальной подсистеме (Channel Subsystem Priority Queuing - IOPQ) с применением механизма канальных весовых коэффициентов LPAR для приоритетного представления каналов при выполнении операций ввода-вывода в различных LPAR.
  • Страницы:

    Базовая архитектура zSeries

    Основными компонентами z/Architecture [2.1, 2.2] серверов zSeries на уровне программистской модели являются (рис. 2.1):

  • один или несколько центральных процессоров (Central Processor - CP);
  • основная память (Main Storage - MS);
  • расширенная память (Expanded Storage - ES);
  • внешний таймер (External Time Reference - ETR);
  • канальная подсистема (Channel Subsystem - CSS);
  • контроллеры (Control Unit - CU) периферийных устройств (I/O Device - D)
  • канальные пути или каналы, соединяющие канальную подсистему с CU периферийных устройств, и средства их коммутации (S).
  • Различные генерации моделей z/Architecture отличаются качественными и количественными характеристиками перечисленных компонентов. Основными направлениями развития архитектуры являлись: увеличение производительности, распараллеливание вычислительного процесса, расширение адресного пространства памяти, увеличение пропускной способности подсистемы ввода-вывода, повышение надежности и др. При этом на всем протяжении развития z/Architecture сохранялась полная программная совместимость "снизу-вверх".

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

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

    (рис 2.1) Базовая модель систем zSeries

    Взаимодействие процессоров и памяти с периферийными устройствами осуществляется через канальную подсистему ввода-вывода, включающую канальные пути разного типа. Основными типами канальных путей являются различные последовательные каналы, параллельный канал, аналогичный использовавшимся в системах S/360, S/370, а также универсальный интерфейс PCI (Peripheral Component Interconnect) [2.3]. К канальным путям подключаются контроллеры CU, через которые осуществляется связь с периферийными устройствами. Последовательные каналы могут быть подключены к устройствам через коммутаторы (S) каналов, что позволяет создавать множественные канальные пути к устройствам. В зависимости от требований пользователя в подсистеме ввода-вывода может быть использовано разное количество канальных путей и CU с различными способами их подключения.

    Архитектура центральных процессоров

    Регистровая модель

    Регистровая модель процессора z/Architecture на современном этапе развития [2.1] включает следующие группы регистров (рис. 2.2):

  • 16 64-разрядных регистров общего назначения (General Registers GR);
  • 16 64-разрядных регистров с плавающей точкой (Floating Point Register - FPR);
  • 32-разрядный регистр управления операциями с плавающей точкой (Floating Point Control Register - FPC);
  • 16 32-разрядных регистров доступа (Access Registers - AR);
  • 16 64-разрядных управляющих регистров (Control Register - CR);
  • 128-разрядный регистр слова состояния программы (Program Status Word - PSW);
  • 64-разрядный регистр префикса (Prefix Register - PR);
  • 32-разрядный программируемый регистр часов (Time-of-Day (TOD) Programmable Register);
  • 64-разрядный регистр таймера;
  • 64-разрядный регистр компаратора времени (Clock Comparator).
  • Регистры GR предназначены для хранения операндов и адресов основных арифметических, логических и других операций. Каждый из регистров имеет разрядность 64 бита и адресуется в командах 4-разрядным полем R. В зависимости от реализуемой модели используются 32 (биты 32-63) или 64 разряда регистров. На рис. 2.2 показан пример использования модели для архитектуры System/370. Два регистра GR с соседними адресами могут служить для хранения операндов удвоенной длины 64 или 128 бит (см. дуги на рис. 2.2). В первом случае объединяются биты 32 $$\div$$ 63, а во втором - биты 0 $$\div$$ 63 соседних регистров. Удвоенный операнд начинается с четного адреса, по которому размещается старшая половина операнда. Часть команд со сложными способами адресации используют регистры GR в качестве базовых и индексных регистров. Четырехразрядные поля B и Х в командах определяют, соответственно, один из 15 базовых или индексных регистров (при В=0 базирование, а при Х=0 индексация не используются). В некоторых командах применение регистров GR подразумевается без явного указания их адресов в полях команды.

    Регистры FPR предназначены для хранения 32- или 64-разрядных чисел в форматах с плавающей точкой: двоичном (Binary Floating Point - BFP) или шестнадцатеричном (Hexadecimal Floating Point - HFP). Как и GR, регистры FPR адресуются в командах 4-разрядными полями R и могут быть попарно объединены для хранения расширенных до 128 бит операндов, адресуемых младшим из адресов объединенных регистров. Для задания параметров операций с плавающей точкой используется дополнительный управляющий регистр FPC.

    (рис 2.2) Регистровая модель z/Architecture

    Шестнадцать регистров доступа AR применяются в механизме динамического преобразования адресов для хранения косвенной ссылки на используемое адресное пространство. В режиме адресации с использованием AR (Access Register Mode) поле В (или R) команд задает номер AR, содержимое которого используется как ссылка на адресное пространство. Указание в команде на регистр доступа с номером 0 подтверждает использование текущего адресного пространства, а AR1/AR 15 задают новое адресное пространство.

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

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

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

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

    Система команд процессора

    Команда, исполняемая процессором, в общем случае включает код операции (code of operation - COP), определяющий тип выполняемой операции, и адресную часть, задающую используемые в операции операнды. Операнды команд относятся к одному из трех типов:

  • непосредственные, заданные в командах;
  • регистровые, расположенные в регистрах процессора;
  • операнды, хранящиеся в памяти.
  • Разрядности операндов, используемых в командах z/Architecture, определяются кодом операции и дополнительными управляющими кодами в регистрах процессора. Для использования в одной команде операндов разной разрядности в список команд z/Architecture включены дополнительные команды. Биты и байты в операндах нумеруются слева направо от 0. Бит 0 соответствует старшему разряду.

    Непосредственные операнды являются 8-, 16- или 32-разрядными константами, задаваемыми полем I в адресной части команды.

    Регистровые операнды могут находиться в одном из программно доступных регистров процессора и либо прямо адресуются четырехразрядным адресом в команде (поле R), либо подразумеваются неявно кодом операции. Форматы регистровых операндов определяются типом операции и разрядностью используемых регистров.

    Операнды в памяти могут включать один или более байт, адресуемых целыми неотрицательными числами 0, 1, 2... Байты из группы соседних ячеек образуют многобайтные поля или операнды, адресуемые младшим из адресов. В архитектуре zSeries используются операнды фиксированной и переменной длины. Для представления операндов фиксированной длины используются форматы байта, полуслова (2 байта), слова (4 байта), двойного слова (8 байт) и учетверенного слова (16 байт), которые целесообразно с точки зрения производительности размещать в полях ОП, имеющих определенные граничные адреса, кратные степени 2 (табл. 2.1). Операнды переменной длины адресуются младшим из группы занимаемых адресов с указанием длины (числа байт) в команде либо непосредственно (4- или 8-разрядное поле L), либо в виде ссылки на регистр GR, содержащий код длины.

    Адресация операндов фиксированной длины
    Операнды Адреса памяти $$\to$$
    Байт 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    Полуслово (2 байта) 0 2 4 6 8 10 12 14 16
    Слово (4 байта) 0 4 8 12 16
    Двойное слово (8 байт) 0 8 16
    Учетверенное слово (16 байт) 0 16

    В командах z/Architecture допускается использование 24-, 31-разрядных адресов, размещаемых в формате слова, и 24-, 31-, 64-разрядных адресов - в формате двойного слова (табл. 2.2). Разрядность адреса определяется битами 31,32 в слове состояния программы PSW. Такой способ управления разрядностью позволяет в рамках одной архитектуры применять различные комбинации разрядностей адресов и операндов, используемых в z/Architecture и более ранних архитектурах. Ранее разработанные программы для 32-разрядных операндов могут быть исполнены в сочетании с 64-разрядной адресацией и, наоборот, 31-разрядная адресация может применяться совместно с 64-разрядной арифметикой. Новые дополнительные команды z/Architecture допускают использование 32-разрядных и 64-разрядных операндов в одной команде. Зависимость способа исполнения команд не только от кода операции, но и от способа адресации принято называть модальностью команд. Архитектура zSeries допускает тримодальную адресацию (по числу вариантов разрядности адреса). Большинство команд z/Architecture являются немодальными, что позволило сохранить без изменений исполнение команд предшествующих архитектур.

    Форматы адресов
    а) архитектура с 24-, 31-разрядными адресами
    0
    8 		31
    24-разрядный адрес
    31-разрядный адрес

    б) z/Architecture
    0 33
    41 		63
    24-разрядный адрес
    31-разрядный адрес
    64-разрядный адрес

    Форматы команд z/Architecture приведены на рис 2.3. Назначение используемых в командах полей пояснено в таблице 2.3. Команды имеют длину 1, 2 или 3 полуслова и относятся к одному из 21 форматов: E, I, RR, RRE, RRF, RX, RXE, RXF, RXY, RS, RSY, RSL, RSI, RI, RIE, RIL, SI, SIY, S, SSE, SS. Формат RRF имеет три модификации, форматы RS, RSY, RIL - по две модификации, а SS - 4 модификации. Длина команды определяется двумя старшими битами COP:

    Старшие биты COP Длина команды (число полуслов)
    00 1
    01 2
    10 2
    11 3

    z/Architectuire включает форматы всех команд предшествующих архитектур с одним или двумя байтами COP (первый и второй байты команд в разрядах 0-15). Новые команды получены в основном за счет неиспользованных кодов COP или путем добавления второго байта COP в шестой байт команд (разряды 40-47 в форматах RXE, RXF, RXY, RSY, RSE, RSL, RIE и SIY). Кодовые пространства COP команд z/Architecture приведены в Приложении 1.

    (рис 2.3) Форматы команд Z900
    Поля, используемые в форматах команд z/Architecture
    COP Код операции команды, определяющий тип операции
    1, 2, 3, 4 Индексы, указывающие на 1, 2, 3 и 4 операнды команды
    R1, R2, R3 Номера регистров
    B1, B2, B4 Номера базовых регистров
    X2 Номера индексных регистров
    D1, D2, D4, DL1, DH1, DL2, DH2 Поля смещения (L - младшая часть смещения, H - старшая часть смещения)
    M1, M3, M4 Поля маски
    I, I2 Поля непосредственных операндов
    L, L1, L2 Поля длины операндов

    Генерация адресов операндов (АО), размещенных в памяти, основана на косвенно-регистровой адресации, когда адрес берется из регистра, заданного полем R команды, либо на вычислении путем сложения содержимого базового (B), индексного (X) регистров и смещения D:

    АО = (B) + (X) + D

    Разрядность базового и индексного регистров определяется типом команд и способом адресации. Разрядность смещения равна 12 либо 20 (расширенный формат). В последнем случае используются два поля смещения: DL - младшие 12 бит, DH - старшие 8 бит. При суммировании база и индекс рассматриваются как целые двоичные числа, 12-разрядное смещение является целым без знака, а 20-разрядное смещение расширенного формата задано как целое со знаком. Нулевые значения номеров базового B и индексного X регистров означают отсутствие соответствующих им компонентов при формировании адреса. Если один и тот же регистр используется в команде для формирования адреса и в качестве приемника операнда, первым выполняется формирование адреса. При формировании адреса с использованием 64-разрядного формата коды базы, индекса и смещения меньшей разрядности дополняются в старших разрядах нулями, либо значениями знакового разряда. При формировании адресов с разрядностью 32, 24 старшие биты используемых регистров сохраняются без изменения.

    Список команд z/Architecture, сгруппированных по классам, приведен в Приложении 2. Для большинства команд дано краткое описание выполняемой операции и ее характеристики. Подробное описание команд можно найти в [2.1].

    В системе команд z/Architecture предусмотрено пять классов операций:

  • основные (или базовые): целочисленная двоичная арифметика, логические операции, переходы и др.;
  • десятичные: операции над десятичными числами;
  • с плавающей точкой: поддержка и реализация операций с плавающей точкой в двоичном (BFP) и шестнадцатеричном (HFP) форматах;
  • управления: операции для управления работой процессора;
  • ввода-вывода: управление операциями ввода-вывода.
  • Класс основных команд включает команды z/Architecture с операциями над числами с фиксированной точкой. Предусмотрено использование операций над целыми числами со знаком и без знака, логическими данными. Для представления чисел применяются, в основном, дополнительные, а также обратные коды.

    Операции над десятичными числами выделены в особый класс. Десятичные команды выполняют операции десятичной арифметики и преобразований над десятичными операндами. Десятичные операнды размещаются всегда в основной памяти и поэтому большинство десятичных команд имеют формат SS (память-память). Длина операндов определяется полем L в командах. Используются две формы представления десятичных чисел: зонный и упакованный форматы (табл. 2.4). В зонном формате старшие четыре бита каждого байта операнда содержат код зоны, а младшие четыре бита содержат двоично-десятичную цифру.

    Форматы десятичных операндов
    а) Зонный формат:
    зона цифра зона цифра ... зона цифра зона/знак цифра
    б) Упакованный формат:
    цифра цифра цифра цифра ... цифра цифра цифра знак
    с) Кодирование:
    коды значения
    0000 $$\div$$ 1001 цифры
    1010, 1100, 1110 знак "плюс"
    1011, 1101 знак "минус"
    1111 зона, знак "плюс"

    Знак числа задается вместо зоны в крайнем правом байте операнда. Зонный формат может быть частью буквенно-цифровой строки с длиной до 256 байт, он используется для ввода-вывода и редактирования десятичной информации. В упакованном формате каждый байт содержит две цифры, а знак задается вместо крайней правой цифры. Упакованный формат имеет длину до 16 байт и используется для выполнения операций десятичной арифметики.

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

  • шестнадцатеричное - HFP (Hexadecimal Floating Point),
  • двоичное - BFP (Binary Floating Point).
  • Форматы чисел с плавающей точкой
    Форматы HFP 0 7 31 63 64 70 128
    S Порядок Мантисса (6 цифр)
    S Порядок Мантисса (14 цифр)
    S Порядок Мантисса (старшие 14 цифр) S Порядок Мантисса (младшие 14 цифр)
    Не использ.
    Форматы BFP 0 8 11 15 31 63 128
    S Порядок Мантисса (23 бита)
    S Порядок Мантисса (52 бита)
    S Порядок Мантисса (112 бит)

    Формат операндов может быть коротким (32 бита), длинным (64 бита) и расширенным (128 бит). Форматы чисел с плавающей точкой двух типов представлены на табл. 2.5. Числа состоят из трех компонентов: знака числа, порядка со знаком и мантиссы. Знак числа определяется битом S (S=0 - число положительное, S=1 - число отрицательное). Порядок определяет степень, в которую возводится основание, равное 16 для HFP чисел и 2 для BFP чисел. Поле порядка в форматах HFP имеет одну и ту же длину 7 бит, а в форматах BFP - различную для разных форматов: 8, 11 или 15 бит. В семиразрядном поле порядка для HFP чисел указывается смещенный порядок (characteristic), формируемый путем прибавления 64 к порядку, изменяющемуся в диапазоне -64 $$\div$$ +63. Для чисел BFP формируется смещенный порядок с отрицательным нулем (biased exponent), вычисляемый путем прибавления 127 (для короткого формата), 1023 (для длинного формата), 16383 (для расширенного формата). Мантисса М для чисел HFP представляется дробным числом (запятая фиксирована перед старшим разрядом) и может быть нормализованной (старшая цифра мантиссы отлична от нуля: 1 > |М| > 1/16) и ненормализованной (unnormalize), что допускает множественное представление одного и того же числа. Мантисса для чисел BFP также содержит дробную часть с запятой перед старшим разрядом, однако включает дополнительный подразумеваемый разряд, находящийся слева от запятой, и всегда нормализована 2 > |М| > 1 (дополнительный разряд равен 1). Для малых чисел BFP, которые невозможно представить в нормализованном виде, допускается единственное ненормализованное (denormalize) представление (дополнительный разряд равен 0). Таким образом, числа BFP всегда имеют единственное представление.

    Параметры и диапазоны представления чисел в форматах BFP приведены в таблице 2.6. В таблице 2.7 приведены сравнительные оценки диапазонов чисел разных типов и форматов.

    Параметры и диапазоны чисел с плавающей точкой в форматах BFP
    Параметры и диапазоны Короткий формат (32 бита) Длинный формат (64 бита) Расширенный формат (128 бит)
    Разрядность порядка 8 11 15
    Разрядность мантиссы 23 52 112
    Максимальный порядок 127 1023 16383
    Минимальный порядок -126 -1022 -16382
    Смещение порядка 127 1023 16383
    Модуль максимального числа (1-2-24)x2128 $$\approx$$ 3.4x1038 (1-2-53)x21024 $$\approx$$ 1.8x10308 (1-2-113)x216384 $$\approx$$ 1.2x104932
    Модуль минимального числа (нормализованного) 1.0x2-126 $$\approx$$ 1.2x10-38 1.0x2-1022 $$\approx$$ 2.2x10-308 1.0x2-16382 $$\approx$$ 3.4x10-4932
    Наименьшее представляемое число (ненормализованное) 1.0x2-149 $$\approx$$ 1.4x10-45 1.0x2-1074 $$\approx$$ 4.9x10-324 1.0x2-16494 $$\approx$$ 6.5x10-4966
    Диапазоны представления чисел с плавающей точкой
      Тип FP Короткий формат Длинный формат Расширенный формат
    Максимальные значения BFP $$\pm$$ 3.4x10+38 $$\pm$$ 1.81x0+308 $$\pm$$ 1.8x10+4932
    HFP $$\pm$$ 7.2x10+75 $$\pm$$ 7.2x10+75 $$\pm$$ 7.2x10+75
    Минимальные значения BFP $$\pm$$ 1.2x10-38 $$\pm$$ 2.2x10-308 $$\pm$$ 3.4x10-4932
    HFP $$\pm$$ 5.5x10-79 $$\pm$$ 5.5x10-79 $$\pm$$ 5.5x10-79
    Минимальные ненормализованные значения BFP $$\pm$$ 1.4x10-45 $$\pm$$ 4.9x10-324 $$\pm$$ 6.5x10-4966
    HFP $$\pm$$ 5.2x10-85 $$\pm$$ 1.2x10-94 $$\pm$$ 1.7x10-111

    В командах с плавающей точкой используются операнды, размещенные в памяти и регистрах. Предусмотрено 16 64-разрядных регистров, в которых операнды короткого формата занимают левую старшую половину (без изменения младшей), а для расширенного формата используются пары регистров, как показано на рис. 2.2. Регистры 0, 2, 4, 6 использовались в предшествующих архитектурах, остальные 12 регистров добавлены и могут применяться при установке соответствующего бита в управляющем регистре 0.

    Для управления операциями с плавающей точкой при возникновении особых ситуаций по данным (переполнение, потеря значимости и др.) используется дополнительный регистр управления операциями с плавающей точкой (Floating-Point-Control - FPC) в соответствии со стандартом IEEE. Поле маски (Masks) (табл. 2.8) предназначено для маскирования прерываний в пяти перечисленных особых ситуациях. Поле флагов используется для фиксации особых ситуаций без учета поля маски. Поле DXС (Data Exception Code) предназначено для хранения кода особых ситуаций, загружаемого при обработке прерываний. Поле RM определяет способ округления результата.

    Регистр управления операциями с плавающей точкой (FPC)
    0  байт 0    7
    8  байт 1   15
    16  байт 2   23
    24  байт 3    31
    I I I I I
    M M M M M 0 0 0
    i z o u x
    S S S S S
    F F F F F 0 0 0
    i z o u x
    i z o u x
    0 0 0 0 0 0 RM
    Masks резерв Flags резерв DXC резерв

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

    IMi, SFi - маска и флаг недопустимой операции;

    IMz, SFz - маска и флаг деления на 0;

    IMz, SFz - маска и флаг переполнения;

    IMz, SFz - маска и флаг потери значимости:

    IMz, SFz - маска и флаг неточности;

    DXC - код флагов прерываний;

    RM - биты управления округлением.

    Команды управления и ввода-вывода относятся к классам привилегированных или частично привилегированных команд. Привилегированные команды (все команды ввода-вывода и часть команд управления) могут исполняться только в режиме работы процессора СУПЕРВИЗОР. Частично привилегированные команды (часть команд управления) могут исполняться в режиме работы процессора ЗАДАЧА при наличии разрешающих условий.

    Организация адресных пространств внутренней памяти

    Уровни внутренней памяти

    Внутренняя или процессорная память имеет многоуровневую структуру, включающую до трех уровней буферной памяти, называемой КЭШ-памятью (Cache), основную память MS и дополнительный уровень расширенной памяти ES. Уровни КЭШ-памяти предназначены для увеличения быстродействия основной памяти и "прозрачны" для процессора, то есть программно недоступны. Расширенная память программно доступна и допускает операции чтения-записи страниц с использованием специальных процессорных команд управления PAGE IN, PAGE OUT. Расширенная память размещается в физическом адресном пространстве за границей 231 байт и в последних моделях z/Architecture может не использоваться. Основная память является многоабонентной и допускает одновременные обращения как всех центральных процессоров, так и процессоров канальной подсистемы. При этом очередность доступа определяется системой в зависимости от приоритетов абонентов.

    Типы адресных пространств основной памяти и их взаимосвязь

    Адреса формируются в CP, канальной подсистеме и в общем случае проходят до трех стадий преобразования в процессе обращения к памяти (рис. 2.4). Различают три базовых типа адресных пространств (Address Space - AS) и соответствующих им адресов: абсолютные, реальные и виртуальные.

    (рис 2.4) Типы адресов и их преобразование

    Абсолютный (absolute) адрес непосредственно без каких-либо преобразований определяет ячейку физической памяти. Каждой ячейке физической памяти соответствует не более чем один абсолютный адрес.

    Реальный (real) адрес используется в многопроцессорных конфигурациях и определяет адрес ячейки реальной памяти, преобразуемый в абсолютный путем префиксации. Основная цель префиксации - отображение начальной области реальной памяти (8KB) каждого процессора на одну из областей физической памяти с различными абсолютными адресами. Это необходимо для уменьшения числа конфликтов при обращении различных процессоров в процессе обработки прерываний.

    Виртуальные (virtual) адреса формируются процессором при исполнении программ и транслируются в реальные посредством динамического преобразования адресов (Dynamic Address Translation - DAT). Адресное пространство, образуемое виртуальными адресами, называется виртуальным адресным пространством. В архитектуре zSeries предусмотрены следующие типы виртуальных адресов:

  • главный (Primary Virtual Address);
  • вторичный (Secondary Virtual Address);
  • AR-определяемый (AR-specified Virtual Address);
  • базовый (Home Virtual Address).
  • Тип виртуального адреса определяется режимом виртуальной адресации, используемым в процессоре. Процессор может находиться в одном из четырех режимов адресации, соответствующих перечисленным типам виртуальных адресов:

  • режим главного AS (Primary-space mode);
  • режим вторичного AS (Secondary-space mode);
  • режим с AR-определяемым AS (Access-register mode);
  • режим базового AS (Home-space mode).
  • В режимах главного или базового AS процессору доступны, соответственно, только главное или базовое виртуальные адресные пространства. В режиме вторичного AS процессор может транслировать адреса и главного, и вторичного AS. В режиме с AR-определяемым AS процессор оперирует в главном и пятнадцати пространствах, определяемых регистрами доступа AR1 $$\div$$ AR15.

    Адрес, формируемый процессором до выполнения процессов DAT или префиксации, принято называть эффективным. Эффективный адрес либо задается ссылкой на регистр, в котором он был сформирован ранее, либо вычисляется с использованием адресной арифметики. Различают следующие типы эффективных адресов, трансляция которых зависит от режима работы процессора и типа исполняемых команд (рис. 2.5):

    (рис 2.5) Виртуальные адресные пространства в различных режимах адресации
  • Логический адрес (Logical Address - L) является адресом операнда для большинства команд и может быть реальным в реальном режиме или виртуальным четырех типов в зависимости от режима адресации.
  • Адрес команды (Instruction Address - I) используется для выборки команд и может быть реальным в реальном режиме, главным виртуальным адресом в режимах главного, вторичного и AR-определяемого AS, а также базовым в режиме базового AS.
  • Задание адресных пространств

    В z/Architecture применяется два варианта задания адресных пространств. Первый вариант предусматривает использование до 216 адресных пространств, задаваемых уникальным 16-разрядным номером адресного пространства (Address Space Number - ASN). Формат ASN включает два индекса, необходимые для его трансляции: первый индекс AFX и второй индекс ASX . Второй вариант задания адресного пространства предполагает использование регистров доступа, в каждый из которых может быть загружен код, определяющий адресное пространство.

    Смена адресных пространств в процессоре выполняется путем загрузки ASN в соответствующие управляющие регистры привилегированными и полупривилегированными командами или загрузки кодов ALET (Access List Entry Token), в регистры доступа непривилегированными командами. Далее код ASN или ALET транслируется в код управления адресным пространством ASCE (Address Space Control Element), определяющий параметры процесса динамического преобразования адреса в данном адресном пространстве. Принцип трансляции ASN и ALET в коды ASCE пояснен на рис. 2.6.

    (рис 2.6) Трансляция номера адресного пространства и ALET из регистров доступа

    Запуск трансляции ASN осуществляется при смене адресных пространств, задаваемой в некоторых командах (PROGRAM TRANSFER, SET SECONDARY ASN и др.). Полученный код ASCE размещается в одном из управляющих регистров в зависимости от типа адресного пространства:

  • для Primary Virtual Address в CR1;
  • для Secondary Virtual Address в CR7;
  • для Home Virtual Address в CR13.
  • Преобразование ASN в код ASCE, необходимый для активизации адресного пространства в процессоре, выполняется с использованием двух таблиц:

  • первичная ASN-таблица (ASN-first-table - AFT);
  • вторичная ASN-таблица (ASN-second-table - AST).
  • Первым выполняется обращение в строку таблицы AFT по адресу, формируемому путем сложения базового адреса AFTO (AFT origin) из управляющего регистра CR14 и первого индекса AFX из кода ASN. В строке AFT задан базовый адрес ASTO (AST origin), который суммируется со вторым индексом ASX из кода ASN для формирования адреса строки ASTE (AST entry), содержащей код ASCE.

    Трансляция кодов ALET из регистров доступа AR в коды ASCE выполняется разными способами в зависимости от значений полей ALET. Номер регистра доступа, из которого берется ALET, определяется кодом B или R в командах, исполняемых в режиме адресации с AR-определяемым AS (рис. 2.7). Если в команде задан нулевой номер AR, это соответствует не AR0, а нулевому содержимому AR, то есть трансляция не выполняется, и ASCE находится по умолчанию в CR1 (Primary Virtual Address).

    (рис 2.7) Использование регистров доступа в режиме с AR-определяемым AS AR-specified Virtual Address

    Если в AR 1 $$\div$$ 15 задан код, равный 0 или 1, трансляция не выполняется и ASCE по умолчанию находится, соответственно, в CR1 (Primary Virtual Address) или в CR7 (Secondary Virtual Address). Все остальные значения кодов AR интерпретируются для получения адреса строки таблицы AST, содержащей код ASCE. При этом базовый адрес таблицы AST, содержащей код ASCE, задается в одной из двух таблиц доступа: Primary-space access list или Dispatchable-unit-access list, а индекс - в регистре доступа.

    Формат ALET включает следующие поля (см. рис. 2.5):

  • Бит Р определяет один из двух способов интерпретации ALET. При Р=1 используется таблица доступа Primary-space access list, а при Р=0 - таблица доступа Dispatchable-unit-access list.
  • Поле ALEN задает индекс для обращения в AST.
  • Поле ALESN используется для контроля допустимости обращения к таблице доступа.
  • При Р=1 преобразование выполняется с использованием таблицы доступа Primary-space access list. Текущее значение адреса строки для Primary Virtual Address (PASTEO) из регистра CR5 используется для чтения строки AST (Primary ASTE), в которой задан код ALD, содержащий базовый адрес и длину таблицы доступа Primary-space access list. Базовый адрес суммируется с индексом ALEN из регистра доступа для обращения к строке таблицы доступа Primary-space access list, откуда читается адрес строки AST, содержащей ASCE для AR-specified Virtual Address.

    При Р=0 преобразование выполняется с использованием таблицы доступа Dispatchable-unit-access list. В этом случае по коду DUCTO из управляющего регистра CR2 осуществляется обращение в таблицу доступа Dispatchable-unit-control-table, откуда считывается базовый адрес таблицы доступа DUALD, используемый с индексом ALEN для чтения ASCE из таблицы AST.

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

    Авторизация адресных пространств

    Под авторизацией понимается процесс проверки разрешения на открытие конкретного адресного пространства программой с текущим индексом авторизации. Авторизация или санкционирование адресных пространств выполняется после трансляции задающего его кода ASN или ALET с целью проверки допустимости открытия адресного пространства программой, запустившей трансляцию. Для этого используется специальная таблица авторизации (Authority Table), каждая строка которой содержит два бита разрешения открытия главного (бит P) или вторичного (бит S) адресных пространств. Выбор строки определяется индексом авторизации (Authorization Index - AX) или индексом расширенной авторизации (Extended Authorization Index - EAX), находящимися при исполнении текущей программы в управляющих регистрах CR4 и CR8 соответственно. Общая схема процесса авторизации показана на рис. 2.8.

    (рис 2.8) Схема авторизации адресных пространств

    ASN - авторизация выполняется после трансляции кода адресного пространства ASN. На завершающем этапе трансляции после выборки строки таблицы ASN-second-table, содержащей код управления адресным пространством ASCE, из нее одновременно считываются два поля, определяющие местоположение таблицы авторизации в памяти:

  • поле базового адреса таблицы авторизации (Authority Table Origin - ATO);
  • поле длины таблицы (Authority Table Length - ATL).
  • Индекс AX из управляющего регистра CR4 суммируется с базовым адресом ATO для формирования адреса строки таблицы авторизации с контролем границы таблицы по полю ее длины ATL. При единичном значении бита разрешения открытия, считанного из адресуемой строки, допускается открытие соответствующего типа адресного пространства.

    Расширенная ASN - авторизация выполняется в режиме Access-register mode, использующем регистры доступа для задания адресных пространств. В этом случае базовый адрес и длина таблицы авторизации берется из строки таблицы доступа (Access List), в которой задается также адрес строки таблицы ASN-second-table с используемым кодом управления адресным пространством ASCE. Авторизация при этом выполняется в несколько этапов. Вначале в выбранной строке таблицы Access List проверяется бит защиты памяти FO, единичное значение которого разрешает только чтение из памяти. Затем проверяется бит P, управляющий процессом авторизации. При P=0 адресное пространство считается авторизированным независимо от индекса авторизации. При P=1 авторизация выполняется путем сравнения индекса расширенной авторизации EAX из управляющего регистра CR8 и поля индекса ALEAX из строки таблицы доступа. При совпадении использование адресного пространства допустимо, в противном случае выполняется дополнительное обращение в таблицу авторизации с использованием базового адреса и длины этой таблицы из строки таблицы доступа и индекса EAX из CR8. Авторизация завершается успешно при разрешающем значении бита S, считанного из таблицы авторизации.

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

    Полученный в результате трансляции кодов ASN или ALET код ASCE используется для динамического преобразования DAT виртуального адреса в реальный (см. рис. 2.4). Формат виртуального адреса z/Architecture приведен на табл. 2.9. Разрядность адреса равна 64, а при реализации архитектур с 24- или 31-разрядным адресом старшие биты соответственно 0 $$\div$$ 39 или 0 $$\div$$ 32 обнуляются. Формат в общем случае включает четыре типа индексов, используемых при обращении в таблицы DAT. Индексы сегмента SX, страницы PX и байта BX находятся в младших 24 или 31 разрядах виртуального адреса и соответствуют сегментно-страничной организации памяти. Эти индексы задают, соответственно, номера строк в сегментной и страничной таблицах, а также адрес байта внутри страницы. Расширенный 64-разрядный формат адреса помимо страниц и сегментов предполагает использование дополнительных уровней представления адресного пространства - регионов памяти. Емкости регионов, сегментов и страниц кратны соответственно 2 GB, 1 MB, 4 KB. Максимально возможное число регионов - 8 GB. Номер региона, занимающий старшие 33 бита адреса 0 $$\div$$ 32, в свою очередь состоит из трех полей - первого (RFX), второго (RSX) и третьего (RTX) индексов региона. Использование всех трех индексов допускает объем памяти до 16 EB (Exa Byte = 260 байт), без RFX - до 8 PB (Peta Byte = 250 байт), а без RFX и RSX - до 4 TB (Tera Byte = 240 байт).

    Формат виртуального адреса
    0 11 22 33 44
    52   63
    RFX RSX RTX SX PX BX

    Процесс динамического преобразования адреса определяется управляющими битами 5, 16, 17 PSW (таблица 2.10). Бит 5 определяет тип адресного пространства - реальное или виртуальное. DAT выполняется в режиме виртуального пространства, причем источник кода ASCE определяется управляющими битами 16, 17 PSW.

    Общая схема DAT представлена на рис. 2.9. В соответствии с таблицей 2.10 определяется источник ASCE, задающий базовый адрес первой из таблиц, используемых в преобразовании. При реализации DAT может быть использовано до пяти уровней преобразования, каждый из которых определяется отдельной таблицей:

  • первая региональная таблица (Region First Table);
  • вторая региональная таблица (Region Second Table);
  • третья региональная таблица (Region Third Table);
  • сегментная таблица (Segment Table);
  • страничная таблица (Page Table).
  • Строка каждой из таблиц содержит идентификатор своего типа (TT) и базовый адрес таблицы следующего уровня (RSTO - для второго уровня регионов, RTTO- для третьего уровня регионов, STO - для сегментной таблицы, PTO - для страничной таблицы) и после суммирования с соответствующим индексом из виртуального адреса определяет строку этой таблицы. Длина следующей таблицы (число блоков по 4KB) указывается в поле TL. Кроме того, в поле TF указывается смещение начала следующей таблицы относительно конца текущей в тех же единицах измерения. Бит I определяет доступность регионов сегментов и страниц, охватываемых строкой.

    (рис 2.9) Динамическое преобразование адреса
    Управление выбором ASCE для DAT
    Биты PSW DAT Режим адресации Источник ASCE
    5 16 17     Адреса команд Адреса операндов
    0 0 0 Откл. Real Mode Real Real
    0 0 1 Откл. Real Mode Real Real
    0 1 0 Откл. Real Mode Real Real
    0 1 1 Откл. Real Mode Real Real
    1 0 0 Вкл. Primary Virtual Mode CR1 CR1
    1 0 1 Вкл. Secondary Virtual Mode CR1 CR7
    1 1 0 Вкл. AR-specified Virtual Mode CR1 AST
    1 1 1 Вкл. Home Virtual Mode CR13 CR13

    Формат ASCE включает базовый адрес первой таблицы (TO), используемой в преобразовании. Тип этой таблицы, а, следовательно, и число уровней преобразования, определяется полем DT (таблица 2.11). При DT=11 используются все пять уровней преобразования, и TO в ASCE задает базовый адрес первой региональной таблицы. При DT=00 региональные таблицы не используются, и ASCE задает базовый адрес сегментной таблицы. Кроме того, формат ASCE включает бит R, определяющий тип адресного пространства (реальное или виртуальное), и двухразрядное поле TL, указывающее длину таблицы (в блоках по 4 KB).

    Преобразование DAT выполняется следующим образом. В соответствии с таблицей 2.4 выбирается источник ASCE. Это один из управляющих регистров CR1, CR7, CR13 или строка таблицы AST.

    Управление числом уровней DAT
    DT Первая таблица DAT Тип TO в ASCE
    11 Первая региональная таблица (Region First Table) RSTO
    10 Вторая региональная таблица (Region Second Table) RTTO
    01 Третья региональная таблица (Region Third Table) STO
    00 Сегментная таблица (Segment Table) PTO

    Поле DT из выбранного ASCE в соответствии с таблицей 2.11 определяет число уровней преобразования и таблицу, в которую осуществляется первое обращение. Для этого базовый адрес таблицы из ASCE суммируется с соответствующим индексом из виртуального адреса. При обращении в первую региональную таблицу используется индекс RFX, во вторую региональную таблицу - индекс RSX, в третью региональную таблицу - индекс RTX и в сегментную таблицу - индекс SX. При DT=11 последовательно выполняются обращения в первую, вторую и третью региональные таблицы и в сегментную таблицу, при DT=10 - во вторую и третью региональные таблицы и в сегментную таблицу, при DT=01 - в третью региональную таблицу и в сегментную таблицу, а при DT=00 обращение осуществляется сразу в сегментную таблицу с пропуском всех региональных таблиц. Все старшие неиспользуемые индексы, соответствующие пропущенным таблицам, должны быть нулевыми, в противном случае преобразование прерывается. Контроль обращений осуществляется с учетом длины таблиц и пропусков между ними, заданных кодом ASCE и в строках таблиц, для исключения обращений за их пределы.

    По базовому адресу из считанной строки сегментной таблицы и индексу PX осуществляется обращение в страничную таблицу, откуда считывается реальный адрес страницы (Page-Frame Real Address - PFRA). Этот адрес конкатенируется с индексом байта BX внутри страницы, который передается из виртуального адреса в реальный без изменений, в результате чего формируется реальный адрес обращения в ОП, являющийся выходной функцией DAT.

    Поскольку все таблицы находятся в реальной памяти, и в процессе DAT может потребоваться до пяти обращений в таблицы, время преобразования может быть недопустимо большим. Для его уменьшения в состав устройства DAT вводится буфер быстрой переадресации TLB (Translation-Lookaside Buffer). В литературе такой буфер иногда называют кэш-памятью адресов. В мультипроцессорных реализациях каждый процессор имеет собственный буфер TLB. Процессор обращается в таблицы DAT только при первом преобразовании виртуального адреса. Полученные из таблиц строки вместе с исходными атрибутами преобразования (базовые адреса, индексы, параметры) запоминаются в строках TLB. При последующих обращениях с теми же атрибутами выполняется обращение в TLB без обращений в память.

    Поскольку строки таблиц DAT, размещенных в памяти, и соответствующие им строки TLB должны в процессе трансляции формировать одни и те же ссылки, содержимое этих строк должно выравниваться. С этой целью для строк таблиц DAT, хранящихся в памяти, вводятся два типа состояний: присоединенное (attached) и доступное (valid). Строка считается присоединенной к конкретному процессору, если он может использовать ее для DAT. Одновременно строка может быть присоединенной для нескольких процессоров. Строка является доступной, если регион, сегмент или страница, связанные с этой строкой, имеются в памяти (установлен бит доступности этих блоков в соответствующих строках).

    Каждая строка TLB состоит из двух частей: поле атрибутов для поиска строки, соответствующей текущим атрибутам DAT (ассоциативное поле) и поле результата преобразования (информационное поле).

    В TLB предусмотрено использование трех типов строк:

  • Комбинированные регионально-сегментные строки в ассоциативном поле содержат базовые адреса региональных (если регионы используются) и сегментной таблиц, использовавшихся при выполнении DAT; цепочка таких адресов называется трассой трансляции. Начало трассы задается в ASCE. Трасса может быть размещена в строке TLB, если все строки таблиц DAT, содержащие элементы трассы, присоединены и доступны. Помимо трассы, ассоциативное поле включает индексы регионов (RFX, RSX, RTX) и сегмента (SX) виртуального адреса. Информационное поле строки содержит базовый адрес страничной таблицы, полученный в результате преобразования.
  • Страничные строки в ассоциативном поле содержат базовый адрес страничной таблицы, который получен из присоединенной и доступной строки таблицы DAT, и индекс страницы (PX) из виртуального адреса. В информационном поле строки содержится реальный адрес страницы PFRA, который и является конечным результатом динамического преобразования адреса.
  • Строки реальных адресных пространств включают ассоциативное поле, состоящее из указателя реального адресного пространства Real-space Token Origin (входит в соответствующее ASCE при установленном бите R, задающем реальное адресное пространство), и индексы RFX, RSX, RTX, SX, PX, входящие в виртуальный адрес. Такие строки используются не для DAT, а для контроля допустимости обращения в реальное адресное пространство.
  • Динамическое преобразование адреса начинается с обращения в регионально-сегментные строки TLB по базовому адресу из ASCE и индексам регионов и сегмента. При наличии совпадения из найденной строки считывается базовый адрес страничной таблицы, в противном случае осуществляется обращение в одну из региональных или сегментную таблицу в зависимости от числа совпавших элементов трассы трансляции. По считанному из строки этой таблицы базовому адресу и соответствующим индексам виртуального адреса выполняется повторное обращение в регионально-сегментные строки TLB. Такие обращения выполняются до получения базового адреса страничной таблицы, который вместе с индексом страницы из виртуального адреса используется для обращения в страничную строку TLB. При наличии совпадения из информационного поля страничной строки считывается реальный адрес страницы (PFRA).

    Если в ASCE указан режим реальной адресации, то виртуальный адрес используется как реальный. При этом по указателю реального адресного пространства из ASCE и виртуальному адресу страницы (индексы RFX, RSX, RTX, SX, PX) осуществляется обращение в строки реальных адресных пространств TLB, используемые для контроля допустимости обращения в реальное адресное пространство.

    Префиксация

    Механизм префиксации поясняется на рис. 2.10. При обращении в реальную память в область префиксации с адресами 0 $$\div$$ 8191 осуществляется преобразование реального адреса в абсолютный путем замены старших разрядов 0 $$\div$$ 50 на префикс, находящийся в регистре префикса каждого процессора. При обращении в реальную память в область с номером, равным префиксу, старшие разряды 0 $$\div$$ 50 реального адреса заменяются в абсолютном адресе на 0. Остальные реальные адреса соответствуют абсолютным адресам без преобразования. Содержимое регистра префикса может быть загружено или прочитано командами процессора. Загрузка нулевого префикса означает идентичность реальных и абсолютных адресов.

    (рис 2.10) Механизм префиксации

    Защита памяти

    Защита содержимого основной памяти необходима для исключения разрушения информации или неправильного использования программами, которые содержат ошибки или не имеют санкций доступа. В z/Architecture предусмотрены следующие виды защиты памяти:

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

    Защита по ключу

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

    Защита по ключу
    а) Формат ключа памяти
    ACC F R C
    0 4 6

    б) Таблица управления защитой по ключу
    Совпадение ключа доступа и АСС F Разрешение доступа
    чтение запись
    Да 0 Да Да
    Нет 0 Да Нет
    Да 1 Да Да
    Нет 1 Нет Нет

    ACC - поле контроля доступа; сравнивается с ключом доступа, формируемым при обращении в ОП.

    F - бит защиты от чтения; при F=0 контролируется только запись, а при F=1 - и запись, и чтение.

    R - бит обращения; устанавливается в единицу при каждом обращении в блок для чтения или записи (бит активности).

    C - бит изменения блока; устанавливается в 1 при выполнении записи в блок (бит модификации).

    Биты R и C могут применяться для учета свободных и модифицированных блоков памяти.

    Принцип защиты по ключу иллюстрируется таблицей на табл. 2.12б. При каждом обращении в память с включенной защитой номер блока, в который осуществляется обращение, используется для чтения ключа из памяти ключей. Поле контроля доступа ACC из считанного ключа сравнивается с ключом доступа, находящимся в PSW, управляющем регистре или в канальной системе. При совпадении ключей или нулевом ключе доступа разрешается обращение любого типа, а при несовпадении - запрещается либо только запись (при F=0), либо и запись, и чтение (при F=1). При запрете обращения реализуется прерывание.

    Для обеспечения обращения одной программы со своим ключом в область памяти другой программы предусмотрена возможность отключения защиты для отдельных блоков памяти. Такой способ разрешается битом управления отключением защиты в CR0. При его установке и ACC=9 защита не используется. Помимо этого предусмотрена возможность отключения защиты обращения для чтения по эффективным адресам 0 $$\div$$ 2047. Такая отмена разрешается другим управляющим битом в CR0. Исключение составляет ситуация, когда эффективный адрес является виртуальным, и установлен бит запрета отключения защиты от чтения в ASCE.

    Защита адресных пространств с использованием таблицы доступа

    Данный тип защиты реализуется в режиме AR-specified Virtual Address и относится к адресному пространству, задаваемому в регистре доступа. С этой целью в строке таблицы доступа Access List (см. рис. 2.8), используемой в процессе трансляции кода ALET из регистра доступа, указывается бит запрета записи FO, нулевое значение которого разрешает и запись, и чтение, а единичное - только чтение.

    Страничная защита

    Страничная защита предназначена для исключения несанкционированной записи в страницах виртуальной памяти. С этой целью в строках сегментных и страничных таблиц, используемых в процессе динамического преобразования адреса, задаются биты страничной защиты от записи. При нулевом значении этого бита в строке страничной таблицы разрешается и запись, и чтение, а при единичном - только чтение из соответствующей страницы. Бит страничной защиты в строке сегментной таблицы относится ко всем страницам, входящим в сегмент, и используется совместно с битами в строках страничной таблицы путем объединения по "ИЛИ". Таким образом, при единичном значении этого бита защищены от записи все страницы сегмента, а при нулевом - защита определяется битами в строках страничной таблицы.

    Защита зоны начальных адресов памяти

    Такая защита применяется для запрета записи в области памяти с адресами 0 $$\div$$ 511 и 4096 $$\div$$ 4607, то есть в начальные 512 байт первой и второй страниц, используемых в процессах прерываний. Защита осуществляется по эффективным адресам, формируемым командами процессоров, до их преобразований при использовании DAT и префиксации. Разрешение защиты задается специальным битом в управляющем регистре CR0. Если эффективный адрес преобразуется с применением DAT, защита может быть отключена управляющим битом в коде ASCE, который используется в процессе преобразования.

    Управление работой процессора

    Состояния процессора

    Процессор z/Architecture может находиться в одном из четырех взаимоисключающих состояний:

  • СТОП - команды и прерывания (кроме прерывания для рестарта) не выполняются.
  • РАБОТА - команды и прерывания исполняются в соответствии с управляющими кодами в слове состояния программы, управляющих регистрах и режимом, заданным оператором.
  • ЗАГРУЗКА - состояние устанавливается в процессе первоначальной загрузки в соответствии с ESA/390.
  • СБОЙ - переход в это состояние вызывается машинными сбоями, выявленными в процессе функционирования процессора.
  • Таймер процессора функционирует в состояниях РАБОТА и ЗАГРУЗКА, а работа часов TOD не зависит от состояния процессора. Состояние процессора не отражается и не контролируется битами в PSW, а индицируется операторными средствами. Переходы из одного состояния в другое могут быть вызваны определенными событиями, по команде SIGNAL PROCESSOR с адресом данного процессора или по командам с пульта оператора. Условия переходов из одного состояния в другое приведены в таблице 2.13.

    Слово состояния программы PSW

    Текущее слово состояния программы PSW, как и управляющие регистры, содержит информацию, необходимую для управления процессом исполнения команд программы. Форматы PSW для z/Architecture (128 бит) и предшествующей ей архитектуры ESA/390 (64 бита) приведены на табл. 2.14.

    Основными полями PSW, определяющими последовательность исполнения команд, являются поля адреса команды и кода условия. Поле адреса команды реализует функции программного счетчика, то есть формирует адрес очередной исполняемой команды. В зависимости от режима адресации, определяемого битами EA, BA в PSW, разрядность адреса может быть равна 64, 32 или 24. Двухразрядный код условия СС формируется по результатам исполнения большинства команд и используется в качестве признака перехода в командах ветвления [2.1]. Другие поля PSW используются в различных архитектурных механизмах, реализуемых процессором (прерывания, динамическое преобразование адреса, защита памяти и др.). Смена значений всего PSW или отдельных его полей выполняется либо программно при выполнении некоторых команд, например, LOAD PSW, BRANCH и SET PROGRAM MASK, либо автоматически при смене состояний различных процессов (прерывания, смена состояния процессора и т. п.).

    Состояния процессора и условия переходов
    Следующее состояние ЗАГРУЗКА СТОП РАБОТА СБОЙ
    Исходное состояние       
    ЗАГРУЗКА    Пошаговый режим Непрерывный режим Сбой оборудования
    СТОП  Переключатели загрузки   Переключатель рестарта, приказ запуска в команде SYGNAL PROCESSOR
    РАБОТА  Переключатели сброса процессора, приказ "Стоп" в команде SYGNAL PROCESSOR, завершение шага в пошаговом режиме работы, останов по совпадению адресов  
    СБОЙ  - Сброс -  

    Внешнее управление

    Предусмотрено пять инициируемых извне функций процессора (таблица 2.15):

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

  • прекращение выполнения текущей команды или других действий, например прерываний;
  • сброс всех условий прерываний, кроме внешних плавающих прерываний;
  • все предварительно выбранные команды и операнды, а также подготовленные для записи в память результаты сбрасываются;
  • очищаются строки буферов ALB, TLB;
  • если сброс вызван переключателем "загрузка - нормальная" любого из процессоров конфигурации, устанавливается режим архитектуры ESA/390, текущее PSW трансформируется в формат ESA/390, сохраняется для последующего восстановления режима z/Architecture по команде SIGNAL PROCESSOR.
  • Слово состояния программы PSW
    а) z/Architecture
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    0 R 0 0 0 T IO EX Key 0 M W P AS CC Program mask 0 0 0 0 0 0 0 EA
    32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
    BA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
    Адрес команды
    96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
    Адрес команды (продолжение)
    б) ESA/390
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    0 R 0 0 0 T IO EX Key 1 M W P AS CC Program mask 0 0 0 0 0 0 0 EA
    32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
    BA Адрес команды

    R - бит разрешения прерывания для записи программных событий.

    T - бит управления динамическим преобразованием адреса (DAT). При Т=0 преобразование не выполняется и адреса команд и операндов трактуются как реальные.

    IO - бит разрешения прерываний по вводу-выводу.

    ЕХ - бит разрешения внешних прерываний.

    Key - ключ защиты памяти, используемой процессором при обращении в ОП.

    М - бит разрешения прерываний по сбоям.

    W - бит включения режима ожидания, при котором команды не выполняются, но прерыванияя обрабатываются.

    Р - бит задания режима супервизор/задача, при Р=0 задан режим супервизора, в котором допустимо исполнение всех команд, при Р=1 в режиме задачи допустимо исполнение непривилегированных команд, а также полупривилегированных команд при наличии особых условий.

    AS - код управления режимом адресации, используется совместно с битом Т.

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

    Program mask - маска программы для запрета/разрешения прерываний в особых случаях, возникающих в процессе исполнения программы: бит 20 - переполнение в операциях с фиксированной точкой, бит 21 - переполнение в операциях с десятичными числами, бит 22 - потеря значимости порядка в операциях с плавающей точкой в формате HFP, бит 23 - потеря значимости в операциях с HFP-числами.

    ЕВ, ВА - биты управления разрядностью эффективного адреса: 00 - 24 разряда, 01 - 31 разряд, 10 - недопустимая комбинация, 11 - 64 разряда.

    Адрес команды - поле адреса очередной исполняемой в процессоре команды, используемое число разрядов определяется битами ЕА, ВА.

    Функции внешнего управления
    Активируемые переключатели Уровни воздействия
      Процессор, к которому относится переключатель Другие процессоры в конфигурации Остальная часть конфигурации
    Системный сброс - нормальный сброс процессора сброс процессора сброс подсистемы
    Системный сброс - с очисткой сброс с очисткой сброс с очисткой сброс с очисткой
    Загрузка - нормальная начальный сброс процессора с последующей IPL сброс процессора сброс подсистемы
    Загрузка - с очисткой сброс с очисткой с последующей IPL сброс с очисткой сброс с очисткой

    После выполнения перечисленных действий процессор переходит в состояние СТОП. Если после сброса следует процедура начальной загрузки IPL (initial program load), процессор переходит в состояние ЗАГРУЗКА.

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

  • если сброс вызван переключателем "загрузка - нормальная", в данном процессоре и во всех процессорах конфигурации устанавливается режим архитектуры ESA/390;
  • содержимое текущего PSW, старого PSW, регистров префикса, таймера CP, компаратора времени, программируемого регистра TOD и регистра управления операциями с ПТ устанавливается в 0;
  • в управляющих регистрах устанавливаются начальные состояния, соответствующие режиму z/Architecture.
  • Сброс подсистемы предназначен для тех элементов конфигурации, которые не являются процессорами, путем выполнения следующих действий:

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

  • во всех процессорах конфигурации устанавливается режим архитектуры ESA/390;
  • регистры общего назначения, регистры с плавающей точкой, регистры доступа устанавливаются в 0;
  • содержимое основной памяти в конфигурации и соответствующие ключи памяти обнуляются;
  • блокировки, применяемые в любом процессоре конфигурации при исполнении команды PERFORM LOCKED OPERATION, отменяются;
  • выполняется сброс подсистемы.
  • Сброс по питанию выполняется при включении питания. Сброс CP включает сброс регистров GR, FPR, AR в нулевое состояние и установку режима ESA/390 в случае сброса для конфигурирования или режима, в котором находятся другие процессоры. Сброс CP может сопровождаться сбросом TOD часов, основной и расширенной памяти и канальной подсистемы.

    Средства временной синхронизации (Timing)

    Для отсчета времени и взаимной синхронизации процессоров в z/Architecture предусмотрены три возможности:

  • часы для отсчета реального времени и ведения даты и времени суток (TOD сlock); в системе предусматривается использование одних часов TOD для всех процессоров и в каждом процессоре имеется программируемый регистр TOD, связанный с часами;
  • компаратор времени, имеющийся у каждого процессора и предназначенный для выработки прерывания, когда показания часов TOD превышают установленное программой значение;
  • процессорный таймер (CPU Timer), обеспечивающий измерение прошедшего времени и выработку прерывания в случае истечения заданного интервала времени; каждый процессор имеет собственный таймер.
  • Часы TOD представляют собой 104-разрядный двоичный счетчик, который инкрементируется в типовом варианте каждую микросекунду добавлением +1 в разряд 51 (табл. 2.16).

    Формат счетчика часов TOD
    0 51 103
    1 микросекунда

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

    Часы могут находиться в одном из следующих состояний: выставлены, не выставлены, остановлены, неисправны или отключены. Переходы из одного состояния в другое задаются специальными командами или процедурами. Часы могут быть отключены при отсутствии питания или для технического обслуживания. После подачи питания часы обнуляются и переходят в невыставленное состояние. Переход в выставленное состояние осуществляется только из остановленного состояния. Часы останавливаются по команде SET CLOCK, загружающей новое значение показаний, если включено ручное управление TOD или установлен бит TOD-clock control override в CR14. Переход из остановленного состояния в выставленное выполняется в зависимости от значения бита управления часами в CR0 (TOD-clock-sync-control bit) в процессоре, выполнившем команду SET CLOCK: автоматически при сброшенном состоянии бита или с задержкой до сброса этого бита. В выставленном или невыставленном состояниях часы идут, то есть инкрементируются. Неисправное состояние часов устанавливается средствами контроля, зависящими от модели, при выявлении сбоев в их работе с последующим прерыванием процессора от схем контроля.

    Установка показаний в часах выполняется командой SET CLOCK при наличии разрешающих условий. При этом в счетчик часов в инкрементируемые разряды загружается операнд команды, а остальные биты обнуляются. В многопроцессорных конфигурациях одновременное выполнение команд SET CLOCK в разных процессорах блокируется. Считывание показаний часов выполняется командами STORE CLOCK, STORE CLOCK EXTENDED путем занесения, соответственно, разрядов 0 $$\div$$ 63 или 0 $$\div$$ 103 счетчика часов в 8- или 16-байтный операнд в памяти. Формат показаний часов для команды STORE CLOCK EXTENDED показан на табл. 2.17, где поле Programmable Field загружается из программируемого регистра TOD. Выполнение двух последовательных команд чтения в одном или разных процессорах приводит к разным показаниям часов. Выполнение команд чтения часов в отключенном или неисправном состоянии приводит к записи нулевых показаний.

    Формат показаний часов TOD
    0 8
    112 		128
    00000000 TOD clock Programmable Field

    Каждый процессор системы содержит 32-разрядный программируемый регистр TOD, младшие 16 бит которого содержат поле Programmable Field, загружаемое в память вместе с показаниями часов командой STORE CLOCK EXTENDED. Это позволяет идентифицировать показания часов для разных конфигураций.

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

  • часы идут и уставка в компараторе меньше показаний часов в сравниваемых разрядах;
  • часы в неисправном или отключенном состоянии.
  • Загрузка уставки в регистр компаратора выполняется командой SET CLOCK COMPARATOR, а чтение - командой STORE CLOCK COMPARATOR. Загрузка компаратора или установка часов, приводящие к превышению уставки по отношению к показаниям часов, сбрасывают ранее установленный запрос прерывания.

    Процессорный таймер является двоичным счетчиком в формате, соответствующем старшим 64-м разрядам счетчика часов, исключая старший бит 0, рассматриваемый как знаковый. Таймер декрементируется вычитанием 1 из разряда 51 каждую микросекунду. В моделях с большей или меньшей разрешающей способностью таймера для декремента может быть выбран другой разряд таймера с сохранением периода переключения 1 мкс в 51 разряде. Прерывание от таймера вырабатывается при достижении отрицательного значения, то есть при установке 1 в разряде 0. При загрузке в таймер положительной величины прерывание не сохраняется. В некоторых моделях для более точного измерения фактического времени исполнения программы таймер приостанавливается во время других операций, например, интенсивных операциях ввода-вывода. Загрузка в таймер выполняется командой SET CPU TIMER, а чтение - командой STORE CPU TIMER.

    Мультипроцессирование

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

    Основу мультипроцессирования составляют:

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

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

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

    Команда Signal Processor является основным средством взаимодействия процессоров путем сигнализации и получения ответа. Такая команда адресует один процессор (в одном из вариантов команды адресуются все процессоры) и передает ему один из приказов, перечисленных в таблице 2.18. В каждом процессоре предусмотрены средства для передачи, получения и выполнения приказов, а также формирования ответа для процессора, исполняющего команду Signal Processor.

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

    Прерывания

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

    Приказы, выполняемые по команде Signal Processor
    Приказ Действия в адресуемом процессоре
    Опрос состояния (Sense) Передача в адресующий процессор кода своего состояния
    Внешний вызов (External Call) Формирование условия внешнего прерывания с указанием в коде прерывания адреса процессора, передавшего приказ
    Экстренный сигнал (Emergency Signal) Формирование условия внешнего прерывания экстренного сигнала с указанием в коде прерывания адреса процессора, передавшего приказ
    Пуск (Start) Переход в режим РАБОТА
    Стоп (Stop) Переход в режим СТОП
    Повторный пуск (Restart) Выполнение повторного пуска
    Стоп с сохранением состояния (Stop and Store Status) Сохранение состояния и переход в режим СТОП
    Первоначальный сброс процессора (Initial CP Reset) Выполнение первоначального сброса процессора без изменения архитектурного режима и сброса других процессоров и ввода-вывода
    Сброс процессора (CP Reset) Сброс процессора без изменения архитектурного режима и сброса других процессоров и ввода-вывода
    Установка префикса (Set Prefix) Загрузка префикса, указанного в команде, в регистр префикса процессора
    Запись состояния по адресу (Store Status at Address) Запись состояния процессора в область абсолютной памяти, адрес которой указан в команде. Состояние объемом 512 байт включает значения всех программно доступных регистров процессора
    Установка архитектуры (Set Architecture) Адрес процессора игнорируется, и все процессоры конфигурации выполняют установку архитектурного режима, заданного в команде: архитектура ESA/390 или z/Architecture. При установке z/Architecture либо все процессоры трансформируют текущее PSW в формат z/Architecture, либо процессор, исполняющий команду Signal Processor, трансформирует текущее PSW, а остальные восстанавливают последний сохраненный формат z/Architecture. При установке архитектуры ESA/390 текущие PSW сохраняются и затем трансформируются в формат ESA/390

    Все прерывания разбиты на шесть классов:

  • Прерывание по вызову супервизора возникает при исполнении в процессоре команды SUPERVISOR CALL, основным назначением которой является переключение в режим СУПЕРВИЗОР. Данное прерывание не может быть запрещено маскированием и выполняется сразу после исполнения команды SUPERVISOR CALL.
  • Программные прерывания возникают при возникновении нарушений или особых ситуаций в процессе исполнения команд программы, например, при недопустимом коде операции, при исполнении привилегированной команды в режиме РАБОТА, при попытках несанкционированных обращений в память и др.
  • Прерывания от схем контроля формируются при неисправностях и сбоях аппаратных средств. Различают неотложные прерывания, требующие немедленной реакции процессора, и подавляемые прерывания, допускающие отложенную обработку.
  • Внешние прерывания обеспечивают реакцию процессора на различные сигналы, возникающие внутри системы и вне нее. К ним относятся сигналы от кнопки прерывания с пульта управления (Interrupt key), оповещения о сбое (Malfunction alert), от компаратора времени (Clock comparator), от процессорного таймера (CPU timer) и др.
  • Прерывания ввода-вывода формируются в подсистеме ввода-вывода и предназначены для передачи в процессор информации о возникновении особых ситуаций в периферийном оборудовании и канальной подсистеме.
  • Прерывание рестарта обеспечивает выполнение специальной программы и инициируется оператором путем нажатия кнопки рестарта на пульте управления или по команде SIGNAL PROCESSOR от другого процессора, адресующей данный процессор. Данное прерывание не может быть запрещено маскированием.
  • Условия выполнения команды Signal Processor, передаваемые в коде состояния
    Условие Причины выработки условия в адресуемом процессоре
    Сбой оборудования (Equipment check) При выполнении команды обнаружен сбой оборудования
    Некорректное состояние (Incorrect state) Приказы "Стоп с сохранением состояния", "Установка префикса" или "Установка архитектуры" не могут быть выполнены вследствие особых состояний процессора
    Недействительный параметр (Invalid parameter) Параметр, принятый с приказом, является недействительным, например, указана область памяти недоступная в данной конфигурации
    Отложенное внешнее прерывание (External-call pending) Реализация внешнего прерывания, инициализируемого командой, откладывается, так как в процессоре исполняется приказ из предыдущей команды Signal Processor
    Остановлен (Stopped) Процессор находится в состоянии СТОП
    Вмешательство оператора (Operator intervening) Процессор выполняет некоторые операции, инициированные местными или удаленными операторными возможностями
    Стоп при сбое (Check stop) Процессор находится в состоянии СТОП при сбое
    Не функционирует (Inoperative) Выполнение операции, определенной приказом, требует использования сервисного процессора, который не функционирует
    Недействительный приказ (Invalid order) Принят неопределенный или не используемый код приказа
    Контроль приема (Receiver check) В процессе передачи при исполнении команды Signal Processor обнаружены сбои

    Причина прерывания внутри класса уточняется кодом прерывания этого класса, который в процессе прерывания заносится в отдельную область памяти, закрепленную за данным классом. В зависимости от класса длина кода прерывания может быть 16, 32 или 64 бита. Код прерывания используется прерывающей программой для определения процедуры, выполнение которой необходимо для обработки прерывания.

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

    В таблице 2.20 приведены адреса размещения PSW, кодов и масок прерываний.

    Большинство команд допускают прерывания после полного окончания их исполнения. В процессе исполнения могут быть прерваны команды, называемые прерываемыми (interruptible). К ним относятся такие команды, как MOVE LONG, COMPARE LOGICAL LONG и др. Процесс исполнения этих команд состоит из последовательно исполняемых этапов (unit of operation). Прерывания допускаются после завершения текущего этапа, и прерванная команда считается частично выполненной.

    Классы прерываний
    Классы прерываний Адреса памяти для размещения PSW Маска прерываний Адреса памяти для кода прерывания
    Старое Новое в PSW в управляющих регистрах
    Внешние 304 432 7 CR0[48-50, 52-54, 57, 59] 134-135
    Ввода-вывода 368 496 6 CR6[32-39] 184-191
    От схем контроля 352 480 13 CR14[35-39] 232-239
    Программные 336 464 1, 20 $$\div$$ 23 CR0[33], CR1[57], CR8[32-47], CR9[32-36], FPC? 142-143
    Рестарта 288 416 - - -
    Вызов супервизора 320 448 - - 138-139

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

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

    Прерывания, которые могут быть обработаны любым из процессоров конфигурации, называются плавающими прерываниями (floating interruption). Запрос на такое прерывание подается в первый из процессоров, в котором это прерывание не замаскировано, после чего сбрасывается для исключения повторных прерываний в других процессорах. К плавающим прерываниям относятся прерывания ввода-вывода, некоторые из внешних прерываний и от схем контроля.

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

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

  • прерывание по вызову супервизора;
  • программные прерывания;
  • прерывания от схем контроля, допускающие отложенную обработку;
  • внешние прерывания;
  • прерывания ввода-вывода;
  • прерывание рестарта.
  • Внутри класса все прерывания также ранжируются путем присвоения соответствующих приоритетов.

    Обработка одновременно поступивших запросов осуществляется путем последовательной записи старых PSW и выборки новых PSW без исполнения команд прерывающих программ до тех пор, пока не будут обработаны все имеющиеся запросы. Далее в обратном порядке в соответствии с сохраненными старыми PSW выполняются прерывающие программы.

    Функционирование процессора

    Исполнение команд

    Основной функцией процессора является выборка и исполнение команд, включая выборку и сохранение операндов. Биты 31, 32 текущего PSW определяют разрядность формируемых эффективных адресов: 24, 31 или 64 разряда. Адреса команд задаются из программного счетчика, размещенного в поле слова состояния программы PSW (разряды 64 $$\div$$ 127 или 33 $$\div$$ 63). Адрес очередной команды определяется путем увеличения адреса текущей команды в поле PSW на длину выбранной команды, либо из команд переходов. Адреса операндов формируются с использованием различных полей адресных частей команд: R, B, X, D, I, L, M. При формировании адресов обращений в ОП используется 64-разрядный формат, но число используемых разрядов определяется режимом адресации.

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

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

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

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

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

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

    Выборка команд из памяти включает чтение 1 $$\div$$ 3 полуслов по адресу из текущего PSW. Допускается выборка команд как операндов, заданных в адресной части исполняемой команды. Команды выбираются не обязательно в концептуальной последовательности, одни и те же команды могут быть выбраны несколько раз (при сохранении однократности исполнения), а также фрагментами в порядке, который может не совпадать с их расположением в формате команды. Допускается предварительная выборка команд, сброс которых выполняется при сериализации, включении/выключении DAT и в некоторых других случаях.

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

  • окончание (Completion) обеспечивает выполнение всех функций, предусмотренных в команде, и установку в PSW адреса следующей команды;
  • подавление (Suppression) исполнения команды предусматривает ее исполнение как команды NOP без изменения любых результатов, включая код условия. В PSW устанавливается адрес следующей команды;
  • аннулирование (Nullification) команды выполняется так же, как и подавление, но при выполнении процедуры прерывания в старом PSW сохраняется адрес аннулированной команды;
  • прекращение (Termination) выполнения команды вызывает неопределенное состояние формируемых командой результатов и полей, при этом в старом PSW устанавливается адрес очередной после прерванной команды.
  • Для большинства команд варианты завершения относятся к команде в целом, так как они состоят из одного этапа (unit of operation). Завершение многоэтапных прерываемых команд может выполняться одним из рассмотренных выше способов после каждого из выделенных этапов исполнения.

    Трассировка

    Трассировка (tracing) - процесс непрерывной записи в таблицу трассировки информации о наиболее существенных событиях в процессоре. Такие записи позволяют определять причины различных проблемных состояний процессора. Трассировка включает реализацию четырех функций, каждая из которых завершается записью строки таблицы трассировки.

    Трассировка переходов реализуется после исполнения определенных команд перехода. В строку таблицы при этом записывается адрес перехода с учетом режима адресации, устанавливаемого после перехода (24-, 31-, 64-разрядный адрес). Примерами команд, вызывающих трассировку ветвлений, являются команды BALR при R2 $$\ne$$ 0, BASR при R2 $$\ne$$ 0 и др.

    Трассировка ASN предназначена для фиксации событий, связанных со сменой адресных пространств и трансляцией ASN. После исполнения таких команд, как PC, PR, PT и др. в зависимости от исполненной команды в строках таблицы трассировки фиксируются ASN, адрес перехода, адрес возврата, ключ из PSW, PC Number и содержимое полей некоторых регистров GR.

    Трассировка режимов используется для записи информации о переключениях режимов адресации из базового (24- или 31-разрядного) в расширенный (64-разрядный) или обратно. После исполнения команд SAM, BASSM, RP и др. в таблице фиксируются адреса переходов с учетом их разрядности.

    Представленные выше три типа трассировки относятся к неявной трассировке в отличие от прямой трассировки, выполняемой по специальной команде.

    Прямая трассировка производится принудительно при исполнении команд TRACE, TRACG путем занесения в таблицу текущего времени из TOD, операнда, заданного в команде, и содержимого регистров.

    Общий формат строки представлен в табл. 2.21.

    Обобщенный формат строки таблицы трассировки
    1 $$\div$$ 12 бит 2 $$\div$$ 142 байт
    Идентификатор типа трассировки Поля сохраняемых параметров

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

    Регистрация программных событий (Program-Event Recording - PER)

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

  • Выполнение команды перехода при успешных условиях перехода. При этом может быть добавлена опция попадания адреса перехода в заданную область памяти.
  • Выборка команд из определенной области памяти.
  • Изменения содержимого определенной области памяти. Дополнительная опция позволяет задать адресные пространства, в которых находится выделенная область.
  • Выполнение команды записи в реальное адресное пространство (STORE USING REAL ADDRESS).
  • Типы регистрируемых событий и область памяти для их записи указываются в управляющих регистрах CR9, 10, 11 (табл. 2.22). Опция учета адресных пространств, управляемая битом S, может быть задействована только при включенном механизме динамического преобразования адреса и при задании в коде управления адресным пространством ASCE значения бита S, разрешающего регистрацию программных событий записи в определенную область памяти этого пространства.

    Управление регистрацией PER-событий
    CR9 EM B S
    CR10 Начальный адрес области памяти PER
    CR11 Конечный адрес области памяти PER

    EM - четырехразрядная маска разрешения регистрации разных типов программных событий.

    В - бит разрешения опции попадания адреса перехода в заданную область памяти.

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

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

    Процесс регистрации программных событий включается битом R в PSW для разрешения прерывания по записи программных событий. При этом программные события, не замаскированные в CR9, вызывают прерывания после завершения исполнения команд, вызвавших наступление событий. Команды записи более 4KB при этом могут быть приостановлены для регистрации программного события по записи.

    Программное прерывание по PER-событию устанавливает в 1 бит 8 кода прерывания и записывает в фиксированные ячейки реальной памяти с адресами 150 $$\div$$ 161 следующую информацию (табл. 2.23):

  • код PERC (PER-code), идентифицирующий типы регистрируемых PER-событий;
  • поле ATMID (Addressing-and-Translation-Mode Identification), в котором указываются биты EA, BA управления разрядностью эффективного адреса, бит T управления динамическим преобразованием адреса, код AS управления режимом адресации, а также бит подтверждения достоверности поля ATMID;
  • адрес команды, при исполнении которой произошло программное событие (PER Address);
  • поле AI (PER ASCE Identification) для идентификации типа используемого ASCE при включенном DAT (Primary, AR-specified, Secondary, Home);
  • поле PAID (PER Access Identification) для указания номера регистра доступа при использовании AR-specified ASCE.
  • Регистрация PER-событий
    Адреса ячеек ОП
    0           15
    150 $$\div$$ 151PERC 000 ATMID AI
    0           63
    152 $$\div$$ 159PER Address
    0            8
    1610000 PAID

    Помимо этого, в старом PSW фиксируется адрес следующей команды и запоминается по фиксированным адресам код длины команды (ILC), вызвавшей программное событие.

    Использование регистрации программных событий может снизить производительность системы, для отключения этого механизма в программе следует сбросить бит R в PSW и/или замаскировать регистрацию кодом EM в CR9.

    Логическое разделение ресурсов сервера

    Сервер zSeries обеспечивает три уровня конфигурирования и может функционировать с использованием одного, двух или трех уровней управления. Такими уровнями являются [2.1]:

  • Базовая система (1-й уровень), обеспечивающая работу в базовом режиме (basic mode).
  • Логический раздел (logical partition - LPAR), реализуемый на 2-м уровне в режиме логических разделов (LPAR mode). Режим обеспечивается гипервизором (hypervisor), который является компонентом сервера. Базовая система при этом также функционирует.
  • Виртуальная система (3-й уровень) создается при запуске управляющей программы виртуальных машин в базовой системе или в логическом разделе. В виртуальной системе, в свою очередь, может быть запущена управляющая программа виртуальной машины, что позволяет создать виртуальные машины более высокого уровня, которые также относятся к третьему уровню конфигурации.
  • В серверах z990, z890 базовый режим возможен только в сочетании с режимом логических разделов и отдельно не используется. Информация об уровне, в котором исполняется программа, и о компонентах, на которых реализуется уровень, может быть получена командой STORE SYSTEM INFORMATION (STSI). Исполнение такой команды допускается только в том случае, если запрашиваемый уровень равен или меньше уровня текущей программы.

    Максимальное количество разделов LPAR определяется моделью сервера и может достигать 30 для z990, z890 (в перспективе - 60) и 15 - для предшествующих генераций моделей [2.4, 2.5]. Логический раздел LPAR определен как совокупность логических ресурсов, реализуемых выделенными для него физическими ресурсами. К таким ресурсам относятся процессоры, память и каналы ввода-вывода. Каждый из LPAR, по сути, является логическим сервером, в котором обеспечивается изолированное от других LPAR исполнение собственной операционной системы z/OS, OS/390, z/VM, Linux, VSE/ESA или Coupling Facility Control Code (CFCC). LPAR всегда соотнесен с одной из логических канальных подсистем LCSS, допускающей подключение до 15 LPAR. Логический раздел может быть активирован или деактивирован в любой момент "на ходу", в то время как для создания нового или удаления ранее созданного раздела необходима остановка системы с использованием процедуры сброса по питанию POR. После создания и активации LPAR в него загружается и запускается операционная система.

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

  • количество выделяемых для раздела ресурсов сервера: логических процессоров, памяти и каналов ввода-вывода;
  • весовой коэффициент, присваиваемый разделу для его соотношения с другими разделами в составе одного сервера при использовании общих разделяемых ресурсов;
  • ограничение на использование разделом процессоров в большем количестве, чем допускается весовым коэффициентом (LPAR capping);
  • безопасность и другие параметры.
  • Данные параметры и информация о выделенных для раздела ресурсах формируются через консоль управления HMC и сохраняются в дисковой памяти элемента поддержки SE в виде профиля раздела (logical partition Image Profile).

    В логический раздел могут быть выделены процессоры разных типов: CP, ICF, IFL или zAAP. Каждый из процессоров может быть постоянно закреплен (dedicated) за одним разделом либо является общим (shared) ресурсом для всех LPAR. Для распределения общих процессоров между LPAR используются весовые коэффициенты, присвоенные разделам и позволяющие учесть важность и цели решаемых разделами задач [2.6, 2.7]. Вариант с общими процессорами потенциально более эффективен, так как позволяет перераспределять вычислительную мощность освобождающихся в LPAR процессоров в другие разделы. Возможно введение ограничения LPAR capping на использование разделом процессоров. Одновременное использование закрепленных и общих процессоров допустимо только в логических разделах Coupling Facility (CF). Число выделенных для раздела процессоров ограничено числом физических процессоров, используемых в модели сервера. Дополнительные резервные процессоры могут быть выделены для безостановочного расширения раздела. Вес и количество выделяемых процессоров могут динамически изменяться в процессе функционирования сервера.

    Распределение основной и расширенной памяти между разделами выполняется в процессе создания LPAR и предусматривает выделение каждому из разделов части адресного пространства памяти. Максимальный объем памяти, выделяемой для одного раздела, ограничен объемом используемой в сервере памяти (для z/Architecture - 256 GB, в режиме ESA/390 - 2 GB) без учета области системной памяти HSA. Использование общих фрагментов основной или расширенной памяти разными LPAR не допускается. Объем выделяемой для раздела памяти измеряется блоками, размер которых зависит от объема инсталлированной в сервере памяти (таблица 2.24).

    В процессе функционирования сервера резервная память может быть динамически перераспределена между LPAR посредством системы динамической реконфигурации памяти Dynamic Storage Reconfiguration (DSR).

    Соотношение объема инсталлированной памяти и размера блока
    Объем инсталлированной памяти (GB) Размер блока для LPAR (MB)
    5 $$\div$$ 8 16
    8 $$\div$$ 16 32
    16 $$\div$$ 32 64
    32 $$\div$$ 64 128

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

  • Закрепленные каналы предназначены для использования только в одном логическом разделе. В качестве таких каналов могут применяться любые типы каналов, поддерживаемые сервером.
  • Реконфигурируемые каналы также относятся к неразделяемым ресурсам и в каждый момент времени используются только одним LPAR, однако допускают перераспределение в другие LPAR в составе одной канальной подсистемы LCSS. Реконфигурируемыми могут быть любые типы каналов, поддерживаемые сервером.
  • Совмещенные каналы относятся к разделяемым ресурсам внутри одной LCSS. Таким каналам соответствуют несколько образов канальных путей, принадлежащих разным LPAR (см. раздел 2.2).
  • Объединенные (spanned) каналы также являются разделяемыми ресурсами, но допускают подключение к LPAR, входящим в разные LCSS.
  • Совместное использование периферийных устройств в разных LPAR достигается путем их подключения через несколько закрепленных или реконфигурируемых каналов, а также через один совмещенный или объединенный канал.

    Управление совместным функционированием всех LPAR осуществляется системным менеджером Processor Resource/Systems Manager (PR/SM) [2.6], реализованным на уровне милликодов системного гипервизора. Одной из основных функций PR/SM является распределение всех инсталлированных в сервер ресурсов между логическими разделами с учетом их весовых коэффициентов. Впервые системный менеджер был внедрен в 1988 году для управления четырьмя разделами и сейчас он расширен как по числу управляемых разделов (до 30 и более), так и по функциям, обеспечивающим оптимизацию управления ресурсами сервера. С этой целью логические разделы одного сервера могут быть объединены в LPAR-кластер (LPAR cluster) для оптимального управления и распределения ресурсов сервера между разделами кластера через PR/SM.

    Новым дополнительным средством оптимизации использования ресурсов серверов zSeries является интеллектуальная система распределения ресурсов Intelligent Resource Director (IRD) [2.6]. Эта система объединяет функции менеджера PR/SM, реализующего приоритетное управление на уровне логических разделов, и менеджера рабочей нагрузки WLM (Workload Manager), управляющего приоритетами задач внутри LPAR. С помощью IRD реализуется автоматическое перераспределение ресурсов в LPAR-кластере с учетом сформулированных целей и важности решаемых задач. Основными функциями IRD являются:

  • менеджмент процессоров LPAR (LPAR CPU Management), включающий динамическую настройку числа логических процессоров в составе LPAR и процессорных весовых коэффициентов LPAR с учетом информации от WLM;
  • динамический менеджмент канальных путей DCM (dynamic channel path management) для перераспределения пропускной способности канальной подсистемы путем передачи каналов от менее загруженных к более загруженным периферийным устройствам;
  • организация приоритетных очередей в канальной подсистеме (Channel Subsystem Priority Queuing - IOPQ) с применением механизма канальных весовых коэффициентов LPAR для приоритетного представления каналов при выполнении операций ввода-вывода в различных LPAR.
  • Вернуться к учебному плану