Архитектура zSeries
Функционирование процессора
Исполнение команд
Основной функцией процессора является выборка и исполнение команд, включая выборку и сохранение операндов. Биты 31, 32 текущего PSW определяют разрядность формируемых эффективных адресов: 24, 31 или 64 разряда. Адреса команд задаются из программного счетчика, размещенного в поле слова состояния программы PSW (разряды 64 127 или 33 63). Адрес очередной команды определяется путем увеличения адреса текущей команды в поле PSW на длину выбранной команды, либо из команд переходов. Адреса операндов формируются с использованием различных полей адресных частей команд: R, B, X, D, I, L, M. При формировании адресов обращений в ОП используется 64-разрядный формат, но число используемых разрядов определяется режимом адресации.
Исполнение команд программы должно осуществляться в их концептуальной последовательности, то есть в порядке, определяемом логикой программы. При этом очередная команда может быть выбрана и исполнена после завершения действий, связанных со всеми предшествующими командами.
На практике действительная последовательность выборки команд и операндов может не совпадать с концептуальной. Это связано, в первую очередь, с необходимостью распараллеливания процессов выборки и исполнения команд в каждом процессоре, а также с взаимным влиянием процессоров, работающих с общей памятью.
В режимах реального, главного и вторичного адресных пространств команды выполняются в концептуальной последовательности, когда очередная команда может быть выбрана после завершения текущей и до начала операций, связанных с очередной командой. В этом случае текущая команда может модифицировать очередную команду. В режиме с регистрами доступа и базового адресного пространства последовательность выборки также концептуальная, за одним исключением. Команда с операндом, формируемым предшествующей командой, может быть выбрана до записи этого операнда в память, то есть модификация очередной команды текущей командой недопустима.
Для сохранения концептуальной последовательности исполнения команд в процессорах используется система блокировок. Выполнение команды осуществляется обычно фрагментами, что может привести к наличию в памяти промежуточных значений операндов, доступных другим абонентам. Это также требует блокировок обращений.
Механизм блокировок основан на сравнении эффективных адресов, формируемых процессором для обращения в память. При совпадении адресов, связанных с одной или несколькими соседними командами, может быть выполнена блокировка. При этом учитываются случаи, когда сравниваемые эффективные адреса являются виртуальными и их совпадение не обязательно означает обращение в одну и ту же ячейку памяти и, наоборот, разные адреса могут соответствовать одной и той же ячейке реальной памяти.
Выполнение прерывания, сброса процессора или выполнение определенных команд может вызвать исполнение процесса, называемого сериализацией (Serialization). Под сериализацией понимается завершение всех обращений в память, концептуально предшествующих точке сериализации.
Выборка команд из памяти включает чтение 1 3 полуслов по адресу из текущего PSW. Допускается выборка команд как операндов, заданных в адресной части исполняемой команды. Команды выбираются не обязательно в концептуальной последовательности, одни и те же команды могут быть выбраны несколько раз (при сохранении однократности исполнения), а также фрагментами в порядке, который может не совпадать с их расположением в формате команды. Допускается предварительная выборка команд, сброс которых выполняется при сериализации, включении/выключении DAT и в некоторых других случаях.
Исполнение команды может завершиться одним из следующих вариантов:
- окончание (Completion) обеспечивает выполнение всех функций, предусмотренных в команде, и установку в PSW адреса следующей команды;
- подавление (Suppression) исполнения команды предусматривает ее исполнение как команды NOP без изменения любых результатов, включая код условия. В PSW устанавливается адрес следующей команды;
- аннулирование (Nullification) команды выполняется так же, как и подавление, но при выполнении процедуры прерывания в старом PSW сохраняется адрес аннулированной команды;
- прекращение (Termination) выполнения команды вызывает неопределенное состояние формируемых командой результатов и полей, при этом в старом PSW устанавливается адрес очередной после прерванной команды.
Для большинства команд варианты завершения относятся к команде в целом, так как они состоят из одного этапа (unit of operation). Завершение многоэтапных прерываемых команд может выполняться одним из рассмотренных выше способов после каждого из выделенных этапов исполнения.
Трассировка
Трассировка (tracing) - процесс непрерывной записи в таблицу трассировки информации о наиболее существенных событиях в процессоре. Такие записи позволяют определять причины различных проблемных состояний процессора. Трассировка включает реализацию четырех функций, каждая из которых завершается записью строки таблицы трассировки.
Трассировка переходов реализуется после исполнения определенных команд перехода. В строку таблицы при этом записывается адрес перехода с учетом режима адресации, устанавливаемого после перехода (24-, 31-, 64-разрядный адрес). Примерами команд, вызывающих трассировку ветвлений, являются команды BALR при R2 0, BASR при R2 0 и др.
Трассировка ASN предназначена для фиксации событий, связанных со сменой адресных пространств и трансляцией ASN. После исполнения таких команд, как PC, PR, PT и др. в зависимости от исполненной команды в строках таблицы трассировки фиксируются ASN, адрес перехода, адрес возврата, ключ из PSW, PC Number и содержимое полей некоторых регистров GR.
Трассировка режимов используется для записи информации о переключениях режимов адресации из базового (24- или 31-разрядного) в расширенный (64-разрядный) или обратно. После исполнения команд SAM, BASSM, RP и др. в таблице фиксируются адреса переходов с учетом их разрядности.
Представленные выше три типа трассировки относятся к неявной трассировке в отличие от прямой трассировки, выполняемой по специальной команде.
Прямая трассировка производится принудительно при исполнении команд TRACE, TRACG путем занесения в таблицу текущего времени из TOD, операнда, заданного в команде, и содержимого регистров.
Общий формат строки представлен в табл. 2.21.
1 12 бит | 2 142 байт |
Идентификатор типа трассировки | Поля сохраняемых параметров |
Для адресации таблицы трассировки используется реальный адрес текущей строки, находящийся в управляющем регистре CR12. В этом же регистре указываются четыре управляющих бита разрешения перечисленных выше функций трассировки. Трассировка выполняется в процессе реализации соответствующих команд и при наличии разрешения. В текущую адресуемую строку таблицы записываются предписанные параметры трассировки с идентификатором типа трассировки, и адрес строки в CR12 увеличивается на длину записанной строки. Некоторые команды могут вызвать запись более одной строки с разными типами трассировки.