Архитектура zSeries
Управление работой процессора
Состояния процессора
Процессор 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, либо автоматически при смене состояний различных процессов (прерывания, смена состояния процессора и т. п.).
Внешнее управление
Предусмотрено пять инициируемых извне функций процессора (таблица 2.15):
- сброс процессора;
- начальный сброс процессора;
- сброс подсистемы;
- сброс с очисткой;
- сброс по питанию.
Сброс процессора обеспечивает очистку указателей сбоев оборудования и устраняет неопределенность состояния процессора, возникающую в результате таких сбоев, в том числе путем сохранения состояния для последующего анализа и восстановления. Сброс процессора обеспечивает:
- прекращение выполнения текущей команды или других действий, например прерываний;
- сброс всех условий прерываний, кроме внешних плавающих прерываний;
- все предварительно выбранные команды и операнды, а также подготовленные для записи в память результаты сбрасываются;
- очищаются строки буферов ALB, TLB;
- если сброс вызван переключателем "загрузка - нормальная" любого из процессоров конфигурации, устанавливается режим архитектуры ESA/390, текущее PSW трансформируется в формат ESA/390, сохраняется для последующего восстановления режима z/Architecture по команде SIGNAL PROCESSOR.
После выполнения перечисленных действий процессор переходит в состояние СТОП. Если после сброса следует процедура начальной загрузки 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 может осуществляться в другие разряды, но с частотой, соответствующей периоду переключения 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 63 или 0 103 счетчика часов в 8- или 16-байтный операнд в памяти. Формат показаний часов для команды STORE CLOCK EXTENDED показан на табл. 2.17, где поле Programmable Field загружается из программируемого регистра TOD. Выполнение двух последовательных команд чтения в одном или разных процессорах приводит к разным показаниям часов. Выполнение команд чтения часов в отключенном или неисправном состоянии приводит к записи нулевых показаний.
Каждый процессор системы содержит 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.