Московский государственный университет путей сообщения
Опубликован: 11.04.2006 | Доступ: свободный | Студентов: 1311 / 300 | Оценка: 4.39 / 4.00 | Длительность: 17:21:00
ISBN: 978-5-9556-0036-1
Специальности: Разработчик аппаратуры
Лекция 2:

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

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

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

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

  • общая разделяемая память;
  • межпроцессорное взаимодействие;
  • синхронизация часов.

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

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

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

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

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

Прерывания

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

Таблица 2.18. Приказы, выполняемые по команде 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 от другого процессора, адресующей данный процессор. Данное прерывание не может быть запрещено маскированием.
Таблица 2.19. Условия выполнения команды 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). Прерывания допускаются после завершения текущего этапа, и прерванная команда считается частично выполненной.

Таблица 2.20. Классы прерываний
Классы прерываний Адреса памяти для размещения 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 выполняются прерывающие программы.