Область техники, к которой относится изобретение
Настоящее изобретение относится к компьютерным системам, более точно, к функциональным возможностям команд процесса компьютерной системы.
Предпосылки создания изобретения
Товарные знаки: IBM® является зарегистрированным товарным знаком International Business Machines Corporation (Армонк, штат Нью-Йорк, США). S/390, Z900 и z990 и z10, а названия других продуктов могут являться зарегистрированными товарными знаками или названиями продуктов International Business Machines Corporation или других компаний.
Начиная с появившихся в 60-х годах машин, известных как IBM® System 360, и до настоящего времени усилиями множества высокоодаренных инженеров IBM была создана особая архитектура, которая получила известность как "мэйнфрейм" в силу своей неотъемлемой принадлежности к вычислительной системе, и принципы работы которой определяют архитектуру машины путем описания команд, которые могут выполняться путем реализации в "мэйнфрейме" созданных изобретателями IBM команд, которые с учетом их существенной роли в течение многих лет включены в руководство IBM Principles of Operation. Восьмое издание руководства IBM® z/Architecture® Principles of Operation, опубликованное в феврале 2009 г., стало стандартным справочным материалом SA22-7832-07 и включено в описание серверов на основе мэйнфреймов IBM Z10TM.
На фиг.1A представлены характерные элементы известной из техники главной компьютерной системы 50. В компьютерной системе также могут применяться другие варианты размещения элементов, которые хорошо известны из техники. Характерный главный компьютер 50 содержит один или несколько ЦП 1, связанных с основным запоминающим устройством (памятью 2 компьютера), а также интерфейсы ввода-вывода для сопряжения с запоминающими устройствами 11 и подключения к сетям 10 для связи с другими компьютерами или SAN и т.п. ЦП 1 совместим с архитектурой, содержащей структурированную систему команд и структурированные функциональные возможности. ЦП 1 может осуществлять динамическую трансляцию 3 адреса (DAT) с целью преобразования адресов программ (виртуальных адресов) в действительный адрес памяти. DAT обычно содержит буфер 7 быстрого преобразования адреса (TLB) для кэширования преобразований, чтобы при последующих доступах к блоку памяти 2 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 2 компьютера и процессором 1 используется кэш-память 9. Кэш-память 9 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для вызова команд и доступа к данным. В одном из вариантов осуществления блок 4 вызова команд вызывает из памяти 2 команду посредством кэш-памяти 9. Команда декодируется в блоке 6 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блоки 8 выполнения команд. Обычно используется несколько блоков 8 выполнения команд, например, блок выполнения арифметических команд, блок выполнения команд с плавающей точкой и блок выполнения команд перехода. Команда выполняется блоком, который в зависимости от необходимости осуществляет доступ к операндам из определяемых командами регистров или памяти. Если доступ (загрузка или сохранение) к операнду должен осуществляться из памяти 2, блок 5 загрузки/сохранения обычно обрабатывает процедуру доступа под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении) или с использованием сочетания того и другого.
На фиг.1Б проиллюстрирован один из примеров известной из техники главной компьютерной системы 21 эмуляции, которая эмулирует главную компьютерную систему 50, имеющую главную архитектуру. Главным центральным процессором (ЦП) 1 в главной компьютерной системе 21 эмуляции является главный процессор (или виртуальный главный процессор) эмуляции, представляющий собой процессор 27 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 1 главного компьютера 50. Главная компьютерная система 21 эмуляции имеет память 22, доступную для процессора 27 эмуляции. В примере осуществления память 22 разделена на память 2 главного компьютера и память 23 программ эмуляции. Память 2 главного компьютера доступна для программ главного компьютера 21 эмуляции в зависимости от архитектуры главного компьютера. Процессор 27 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 1 и которые извлекаются из памяти 23 программ эмуляции, и может осуществлять выборку главной команды для выполнения из программы в памяти 2 главного компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную главную команду(-ы) и определять программу выполнения собственных команд с целью эмуляции функции выбранной главной команды. Другие средства, которые предусмотрены в архитектуре главной компьютерной системы 50, могут эмулироваться программами структурированных средств (Architected Facilities Routines), включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамической трансляции адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 27 эмуляции (такие как общие регистры и динамическая трансляция виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 27 эмуляцию функции главного компьютера 50.
В мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "С" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM® на основе z/Architecture® или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM® и в других машинах IBM® (например, серверах pSeries® и xSeries®). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM®, Intel®, AMD™, Sun Microsystems и других компаний. Помимо выполнения этим аппаратным обеспечением на основе системы Z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию, как описано на сайтах http://www.turbohercules.com, http://www.hercu и http://www.funsoft.com. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора.
Собственный процессор 27 обычно выполняет эмулирующее программное обеспечение 23, представляющее собой аппаратно-программное обеспечение или собственную операционную систему для эмуляции эмулируемого процессора. Эмулирующее программное обеспечение 23 отвечает за выборку и выполнение команд архитектуры эмулируемого процессора. Эмулирующее программное обеспечение 23 поддерживает счетчик эмулируемых команд для слежения за границами команд. Эмулирующее программное обеспечение 23 может осуществлять выборку одной или нескольких эмулируемых машинных команд за один раз и преобразование одной или нескольких эмулируемых машинных команд в соответствующую группу собственных машинных команд для выполнения собственным процессором 27. Эти преобразованные команды могут помещаться в кэш, что позволяет ускорять преобразование. Тем не менее, эмулирующее программное обеспечение должно поддерживать правила архитектуры эмулируемого процессора с тем, чтобы обеспечивать правильную работу операционных систем и приложений, написанных для эмулируемого процессора. Кроме того, эмулирующее программное обеспечение должно обеспечивать ресурсы, указанные архитектурой эмулируемого процессора 1, включая без ограничения управляющие регистры, регистры общего назначения, регистры с плавающей точкой, функцию динамической трансляции адреса, включая таблицы сегментов и таблицы страниц, например, механизмы прерывания, механизмы переключения контекста, часы истинного времени (TOD) и структурированные интерфейсы с подсистемами ввода-вывода с тем, чтобы операционная система или прикладная программа, рассчитанная на работу в эмулируемом процессоре, могла быть запущена в собственном процессоре, имеющем эмулирующее программное обеспечение.
Декодируется конкретная эмулируемая команда, и вызывается подпрограмма для выполнения функции отдельной команды. Функция 23 эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора 1, реализуется в подпрограмме или драйвере на языке "C" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся с описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент US 5551013 под названием "Multiprocessor for hardware emulation", выданный на имя Beausoleil и др., патент US 6009261 под названием "Preprocessing of stored target routines for emulating incompatible instructions on a target processor", выданный на имя Scalzi и др.; патент US 5574873 под названием "Decoding guest instruction to directly access emulation routines that emulate the guest instructions", выданный на имя Davidian и др.; патент US 6308255 под названием "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system", выданный на имя Gorishek и др.; патент US 6463582 под названием "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method", выданный на имя Lethin и др.; патент US 5790825 под названием "Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions", выданный на имя Eric Traut, проиллюстрированы разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники, а также используемые ими промышленные средства программного обеспечения.
Согласно публикации заявки US 2009/0222814 A1 от 3 сентября 2009 г. (заявитель - Astrand) под названием "Selective Exposure to USB Device Functionality for a Virtual Machine" приложение виртуальной машины (VM) может выполнять гостевую операционную систему (OC) и позволять гостевой OC подключаться к USB-устройствам, подключенным к компьютеру. Приложение VM может фильтровать функции, соответствующие USB-устройству с тем, чтобы для гостевой OC были доступны лишь некоторые из функций USB-устройства.
В статье Edel T.R. и др. под названием "Dynamic Instruction Set definition", IBM Technical Disclosure Bulletin, International Business Machines Corp., том 16, №6, 1 ноября 1973 г., стр. 1929-1930 дано определение набора команд, являющегося уникальным для каждого пользователя компьютера. В управляющем регистре аппаратного обеспечения содержится двоичный индикатор для каждой команды или класса команд, определяющий набор команд для пользователя. Всякий раз при попытке несанкционированного использования команды аппаратное обеспечение сигнализирует об исключительной ситуации. Возможности набора команд могут содержаться в профиле каждого пользователя и управляться системным администратором.
В заявке US 2004/230816 А1 описаны команда шифрования сообщения (CIPHER MESSAGE) (КМ) и команда шифрования сообщения со сцеплением (CIPHER MESSAG Е WITH CHAINING) (KMC), которые используются вместе с кодом функции, указывающим, какая из множества функций, таких как запрос (Query), алгоритм шифрования данных (Data Encryption Algorithm) (DEA), тройной DEA (128-разрядный) или тройной DEA (192-разрядный), должна выполняться.
Краткое изложение сущности изобретения
В соответствии с изобретением скрывают выбранные установленные функции многофункциональной команды, рассчитанной на выполнение определенной функции из множества установленных функций, при этом скрывание включает установку значения, регулирующего доступность установленных функций для многофункциональной команды главного компьютера, содержащего один или несколько процессоров, имеющих первое множество упомянутых установленных функций многофункциональной команды, в которое входит одна или несколько первых установленных функций и одна или несколько вторых установленных функций, и выполнение многофункциональной команды, содержащей поле кода операции, причем упомянутое выполнение включает: осуществляемое в ответ на задание многофункциональной командой функции запроса выполнение этой функции запроса с целью определения установленных функций, доступных для многофункциональной команды, при этом выполнение функции запроса включает использование указанного значения для определения одной или нескольких вторых установленных функций, при этом выполнение функции запроса включает сохранение результирующего значения, указывающего на то, что одна или несколько первых установленных функций недоступны для многофункциональной команды, и осуществляемое в ответ на задание многофункциональной командой функции из первого множества упомянутых установленных функций, не являющейся функцией запроса, выполнение этой не являющейся функцией запроса функции, когда эта не являющаяся функцией запроса функция является одной из вторых установленных функций, и блокирование выполнения не являющейся функцией запроса функции, когда эта не являющаяся функцией запроса функция не является одной из вторых установленных функций.
В одном из вариантов осуществления гипервизором главного компьютера устанавливается значение для виртуальной машины главного компьютера, которая содержит один или несколько логических процессоров, закрепленных за одним или несколькими физическими процессорами, имеющими одну или несколько вторых установленных функций многофункциональной команды, которая выполняется в виртуальной машине логическим процессором из одного или нескольких логических процессоров посредством физического процессора из одного или нескольких физических процессоров.
В одном из вариантов осуществления одна или несколько вторых установленных функций определяется на основании кода операции многофункциональной команды.
В одном из вариантов осуществления гипервизор устанавливает другое значение, регулирующее доступность установленных функций для многофункциональной команды, выполняемой в другой виртуальной машине главной компьютерной системы, и обеспечивает выполнение в другой виртуальной машине другим логическим процессором из одного или нескольких других логических процессоров другой многофункциональной команды, если в ней задана другая функция запроса, которая выполняется с целью определения установленных функций, доступных для другой многофункциональной команды, при этом выполнение другой функции запроса включает использование другого значения с целью определения одной или нескольких третьих установленных функций и выполнение другой функции запроса включает сохранение другого результирующего значения, указывающего на то, что одна или несколько из одной или несколько третьих установленных функций недоступны для другой многофункциональной команды.
В одном из вариантов осуществления сохраненное результирующее значение является содержащей значащие разряды величиной, в которой каждый двоичный разряд соответствует определенной функции, при этом разряд, равный 1, указывает, что соответствующая функция установлена.
В одном из вариантов осуществления функция запроса определяется заданным многофункциональной командой кодом функции или заданным многофункциональной командой разрядом проверки.
В одном из вариантов осуществления многофункциональной командой является команда системы z/Architecture, состоящая из любого из следующего: криптографической команды, команды выполнения функции средства синхронизации (PerformTiming Facility Function, англ. сокр. PTFF) (ВФСС), команды выполнения операции с плавающей точкой (Perform Floating Point Operation) или команды выполнения заблокированной операции (Perform Locked Operation), при этом криптографической командой является любое из следующего: команда шифрования сообщения, команда вычисления промежуточного сообщения (Compute Intermediate Message), команда вычисления последнего сообщения (Compute Last Message), команда вычисления профиля последнего сообщения (Compute Last Message Digest), команда вычисления кода аутентификации сообщения (Compute Message Authentication Code), а в многофункциональной команде задана функция запроса; если многофункциональной командой является криптографическая команда или команда ВФСС, определяется заданный многофункциональной командой код выполняемой функции, содержащий функцию запроса, при этом сохраненным результирующим значением является множество разрядов, каждый из которых указывает, поддерживается ли соответствующий код функции; если многофункциональной командой является криптографическая команда или команда ВФСС, определяется заданный многофункциональной командой код выполняемой функции, не содержащий функцию запроса, и выполняется криптографическая функция или функция ВФСС в соответствии с полученным кодом функции; если многофункциональной командой является команда выполнения заблокированной операции или команда выполнения операции с плавающей точкой, а заданный многофункциональной командой разряд проверки равен 1, определяется, установлен ли заданный многофункциональной командой код функции, при этом сохраненным результирующим значением является значение кода условия; и, если многофункциональной командой является команда выполнения заблокированной операции или команда выполнения операции с плавающей точкой, а заданный многофункциональной командой разряд проверки равен 0, выполняется функция с плавающей точкой или заблокированная операция в соответствии с полученным кодом функции.
Перечисленные выше и другие задачи, признаки и преимущества изобретения станут ясны из следующего далее описания.
В изобретении подробно описаны другие его варианты осуществления и особенности, считающиеся входящими в заявленное изобретение. Для обеспечения лучшего понимания преимуществ и признаков изобретения описание сопровождается чертежами.
Краткое описание чертежей
Далее будут лишь в качестве примера описаны варианты осуществления изобретения со ссылкой на сопровождающие его чертежи, на которых:
на фиг. 1А показана блок-схема, иллюстрирующая один из примеров главной компьютерной системы,
на фиг. 1Б - блок-схема, иллюстрирующая один из примеров эмулирующей главной компьютерной системы,
на фиг.1В - блок-схема, иллюстрирующая один из примеров компьютерной системы,
на фиг.2 - блок-схема, иллюстрирующая один из примеров компьютерной
сети,
на фиг.3 - блок-схема, иллюстрирующая примеры элементов компьютерной системы,
на фиг.4А - блок-схема, иллюстрирующая один из примеров блока выполнения,
на фиг.4Б - блок-схема, иллюстрирующая один из примеров блока выполнения команд перехода,
на фиг.4В - блок-схема, иллюстрирующая один из примеров блока выполнения команд загрузки/сохранения,
на фиг.5 - блок-схема, иллюстрирующая один из примеров логического разделения,
на фиг.6 - блок-схема, иллюстрирующая примеры элементов логического разделения,
на фиг.7 - блок-схема, иллюстрирующая примеры элементов логического разделения;
на фиг.8 - блок-схема, иллюстрирующая один из примеров таблицы кодов операций,
на фиг.9 - блок-схема, иллюстрирующая один из примеров метода блокирования,
на фиг.10 - блок-схема, иллюстрирующая один из примеров метода блокирования,
на фиг.11 - блок-схема, иллюстрирующая один из примеров метода блокирования, и
на фиг.12-17 - блок-схемы методов блокирования запроса функции.
Подробное описание
Варианты осуществления могут быть реализованы на практике посредством программного обеспечения (иногда называемого лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., что во всех случаях согласуется с настоящим изобретением). Как показано на фиг.1A, обычно процессор, также известный как ЦП (центральный процессор) 1 системы 50, получает доступ к программному коду системы программного обеспечения, в котором воплощено настоящее изобретение, посредством долговременных запоминающих сред 11, таких как ПЗУ на компакт-дисках, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям из памяти 2 компьютера или запоминающего устройства одной компьютерной системы по сети 10 другим компьютерным системам для применения пользователями таких других систем.
В качестве альтернативы, программный код может быть воплощен в памяти 2 с возможностью доступа к нему для процессора 1, использующего процессорную шину. В таком программном коде содержится операционная система, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ. Обычно подкачка страниц программного кода осуществляется из плотных запоминающих сред 11 в быстродействующее запоминающее устройство 2, в котором он доступен для обработки процессором 1. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски (CD), DVD, магнитную ленту и т.п.), часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.
На фиг.1В проиллюстрирована характерная рабочая станция или аппаратная серверная система, в которой могут быть на практике реализованы варианты осуществления. В показанную на фиг.1В систему 100 входит характерная компьютерная система 101, такая как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Рабочая станция 101 имеет один или несколько процессоров 106 и шину для соединения процессора(-ов) 106 и других компонентов системы 101 и обеспечения связи между ними известными способами. Шина соединяет процессор 106 с памятью 105 и долговременным запоминающим устройством 107, которое может содержать накопитель на жестких дисках (например, включая любое из следующего: магнитный носитель, компакт-диск, цифровой многофункциональный диск и флэш-память) или, например, накопитель на магнитной ленте. В систему 101 также может входить адаптер пользовательского интерфейса, который посредством шины соединяет микропроцессор 106 с одним или несколькими устройствами сопряжения, такими как клавиатура 104, мышь 103, принтер/сканнер 110 и/или другие устройства сопряжения, которыми могут являться любое пользовательское устройство сопряжения, такое как сенсорный экран, дополнительная цифровая клавиатура и т.д. Шина посредством дисплейного адаптера также соединяет дисплей 102, такой как ЖК-дисплей или монитор с микропроцессором 106.
Система 101 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 108 с сетью 109. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с эстафетным доступом, сеть Ethernet или модемы. В качестве альтернативы, рабочая станция 101 может поддерживать связь с использованием беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Рабочая станция 101 может быть связана с другими такими компьютерами в локальной вычислительной сети (ЛВС) или глобальной вычислительной сети (ГВС), или рабочей станцией 101 может являться клиент, связанный отношениями клиент-сервер с другим компьютером и т.д. Все эти конфигурации, а также соответствующее коммуникационное оборудование и программное обеспечение известны из техники.
На фиг.2 проиллюстрирована сеть 200 обработки данных, в которой может быть реализован на практике один из вариантов осуществления. В сеть 200 обработки данных может входить множество отдельных сетей, таких как беспроводная сеть и проводная сеть, в каждую из которых может входить множество отдельных рабочих станций 101, 201, 202, 203, 204. Кроме того, как известно специалистам в данной области техники, в нее может входить одна или несколько ЛВС, в которую может входить множество интеллектуальных рабочих станций, связанных с главным процессором.
Как также показано на фиг.2, в сети также могут входить мэйнфреймы или серверы, такие как шлюз (клиент-сервер 206) или сервер приложений (удаленный сервер 208, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 205). Шлюз 206 служит точкой входа в каждую сеть 207. Шлюз необходим при подсоединении одного сетевого протокола к другому. Шлюз 206 предпочтительно может быть связан с другой сетью (например, сетью Интернет 207) линией связи. Шлюз 206 также может быть непосредственно связан с одной или несколькими рабочими станциями 101, 201, 202, 203, 204 с использованием линии связи. Шлюз может быть реализован с использованием сервера IBM eServerтм zSeries®zl0тм производства IBM Corp.
Доступ к программному коду системы программного обеспечения обычно осуществляет процессор 106 системы 101 посредством долговременных запоминающих сред 107, таких как ПЗУ на компакт-дисках, или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям 210, 211 из памяти компьютера или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для применения пользователями таких других систем.
В качестве альтернативы, программный код 111 может быть воплощен в памяти 105 с возможностью доступа к нему для процессора 106 с использованием процессорной шины. В таком программном коде реализована операционная система, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ 112. Обычно подкачка страниц программного кода осуществляется из плотных запоминающих сред 107 в быстродействующее запоминающее устройство 105, в котором он доступен для обработки процессором 106. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, цифровые многофункциональные диски, магнитную ленту и т.п.), часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.
Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующим и менее объемным, чем другие кэши процессора), представляет собой кэш низшего уровня (L1 или уровня 1), а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3 в случае 3 уровней). Кэш низшего уровня часто поделен кэшем команд (I-кэш), в котором хранятся машинные команды для выполнения, и кэш данных (D-кэш), в котором хранятся операнды, хранимые в памяти.
На фиг.3 проиллюстрирован один из примеров осуществления процессора 106. Обычно с целью помещения в буфер блоков памяти и повышения производительности процессора используется один или несколько уровней кэша 303. Кэш 303 представляет собой высокоскоростной буфер, в котором в строках данных кэша хранятся данные в памяти, которые вероятно будут использоваться. Типичные строки данных кэша содержат 64, 128 или 256 байтов данных в памяти. Для кэширования команд и для кэширования данных часто используются раздельные кэши. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения ("snoop"), хорошо известными из техники. Основное запоминающее устройство 105 процессорной системы часто называют кэшем. В процессорной системе, имеющей 4 уровня кэша 303, основное запоминающее устройство 105 иногда называют кэшем уровня 5 (L5), поскольку оно обычно является более быстродействующими и представляет собой лишь часть энергонезависимого запоминающего устройство (ЗУПД, ЗУ на ленте и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 105 "кэширует" страницы данных, которые подкачиваются в основное запоминающее устройство 105 и откачиваются из него операционной системой.
Программный счетчик (счетчик команд) 311 отслеживает адрес текущей команды для выполнения. Счетчик команд в процессоре на основе z/Architecture является 64-разрядным, при этом он может быть усечен до 31 или 24 разрядов с целью поддержки ранее существовавших ограничений адресации. Поскольку счетчик команд обычно воплощен в слове состояния программы (PSW) компьютера, оно сохраняется при переключении контекста. Соответственно, выполняемая программа с показанием счетчика команд может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы поддерживает показание счетчика команд, пока программа неактивна, а во время выполнения операционной системы используется счетчик команд (в PSW) операционной системы. Обычно показание счетчика команд приращивается на величину, равную числу байтов текущей команды. RISC-команды (на основе вычислений с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (на основе вычислений с полным набором команд) обычно имеют переменную длину. Команды, используемые в системе IBM z/Architecture, являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Показание счетчика 311 команд изменяется, например, в результате операции переключения контекста или операции выбранного перехода согласно команде перехода. При операции переключения контекста в слове состояния программы (PSW) сохраняется текущее показание счетчика команд вместе с другой информацией о состоянии выполняемой программы (такой как коды условий), и загружается новое показание счетчика команд, указывающее команду нового программного модуля для выполнения. Операция выбранного перехода выполняется, чтобы позволить программе принимать решения, или чтобы выполнять программный цикл путем загрузки в счетчик 311 команд результата команды перехода.
Обычно для вызова команд от имени процессора 106 применяется блок 305 вызова команд. Блок выборки осуществляет выборку "очередных последовательных команд", целевых команд из команд выбранного перехода или первых команд программы, следующей за переключением контекста. В современных блоках вызова команд часто применяют методы выборки с целью предварительного вызова команд по предположению, исходя из вероятности использования команд, предварительная выборка которых была осуществлена. Например, блок выборки может осуществлять выборку 16 байтов команды, содержащих очередную последовательную команду, и дополнительных байтов следующих далее команд.
Затем вызванные команды выполняются процессором 106. В одном из вариантов осуществления вызванная команда(-ы) передается блоку 306 диспетчеризации блока выборки. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 307, 308, 310. Блок 307 выполнения обычно принимает информацию о декодированных арифметических командах от блока 305 вызова команд и выполняет арифметические операции с операндами в соответствии с содержащимся в команде кодом операции. Операнды предоставляются блоку 307 выполнения предпочтительно из памяти 105, структурированных регистров 309 или из непосредственного поля выполняемой команды. Сохраненные результаты выполнения хранятся в памяти 105, регистрах 309 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).
Рассмотрим фиг.5, на которой показан один из примеров среды виртуальной машины (VM). Программа-гипервизор (которая сама может являться операционной системой (ОС), такой как система zVM производства IBM) действует в мультипроцессорном аппаратном обеспечении, содержащем множество физических процессоров, физическую основную память и физические адаптеры для связи с периферийными устройствами ввода-вывода, включающими запоминающее устройство, сети, дисплеи и т.п. Гипервизор создает отображения VM (например, VM1, VM2 и VM3), позволяющие программному обеспечению, включая ОС и прикладные программы, действовать в виртуальной машине, использующей виртуальные ресурсы. Программному обеспечению, действующему в VM, не известно о том, что оно действует в VM, при этом оно использует виртуальные ресурсы, как если бы они являлись физическими ресурсами. Операционная система zVM производства IBM способна создавать отображения "гостей", каждое из которых фактически является виртуальной машиной. Кроме того, любая гостевая программа zVM может сама выполнять операционную систему zVM, создавая "гостей второго уровня". Соответственно, виртуальная машина (отображение гостя) может входить в иерархию виртуальных машины, при этом каждая zVM играет роль гипервизора для отображений своих гостей. С другой стороны, мультипроцессорная платформа может состоять из "физических разделов", каждый из которых может представлять собой закрепленные ресурсы (процессоры, память, систему ввода-вывода). Каждый физический раздел представляет собой VM, поскольку программному обеспечению, действующему в разделе, не известно о ресурсах машины, не закрепленной за разделом. Соответственно, ресурсы машины "виртуализируются". В другом варианте осуществления главная машина может поддерживать логические разделы, каждый из которых представляет собой VM.
Визуализация представлена, например, в техническом описании VMware® под названием "Virtualization Overview" и в описании инфраструктуры 3 VMware® "VMware VMotion and CPU Compatibility". Кроме того, в патентной заявке US 2009/0070760 под названием "VIRTUAL MACHINE (VM) MIGRATION BETWEEN PROCESSOR ARCHITECTURES" (заявитель - Khatri и др.), поданной 6 сентября 2007 г., рассмотрена эмуляция определенного набора средств, обеспечивающая миграцию VM между сходными пулами машин путем маскирования выборочных разрядов регистра CPUID.
Как показано на фиг.6, каждая VM может иметь отличающуюся OC и отличающиеся приложения. Например, OC1 может представлять собой систему z/OS производства IBM, а OC2 может представлять собой систему zLinux производства IBM, или все OC могут представлять собой одинаковые OC, такие как z/OS.
Гипервизор создает логические средства, ресурсы и возможности для каждой VM на основании физических средств, ресурсов и возможностей. В одном из примеров системы каждой VM выделяются части физической памяти путем динамической трансляции адреса, при этом физические процессоры, как и возможности ввода-вывода, используются VM с разделением времени.
Как показано на фиг.7, каждый логический процессор имеет доступ к регистрам физических средств посредством управляемой гипервизором маски логических средств. Соответственно, программное обеспечение, действующее в логических процессорах, может создавать видимость работы на общем уровне архитектуры процессоров, даже если архитектура реальных процессоров находится на различных уровнях. В одном из примеров регистром физических средств может являться регистр CPUID Intel, в котором указан уровень архитектуры процессора Intel, а также конкретные средства, доступные для программатора. Маска логических средств запрограммирована на предоставление программному обеспечению в виртуальной машине (VM) всех или подмножества CPUID физических процессоров, когда VM запрашивает CPUID соответствующего логического процессора.
В руководстве по архитектуре процессоров х86 Intel® "Intel® Itanium® Architecture Software Developer's Manual" том 2, пересмотренное издание 2.2, январь 2006 г., описаны регистры CPUID для определения средств, поддерживаемых процессором. Регистры CPUID являются непривилегированными, и доступ к ним осуществляется с использованием команды косвенного переноса данных (из регистров). Все регистры сверх числа регистров CPUID зарезервированы, и в случае доступа к ним распознается ошибка вследствие доступа к зарезервированному регистру/полю. Операции записи не разрешены, и для таких операций не существуют команды. В регистрах 0 и 1 CPUID 0 задано имя поставщика в формате ASCII для реализации процессора. Все байты по окончании строки вплоть до 16-го байта равны нулю. Символы ASCII помещаются в более низкий регистр числа или более низкие нумерованные положения байтов. Регистр 4 CPUID содержит общую информацию прикладного уровня о возможностях процессора. В нем содержится набор флаговых разрядов, используемых, чтобы указывать, поддерживается ли заданное средство в модели процессора. Если разряд равен единице, средство поддерживается, если разряд равен нулю, средство не поддерживается. При добавлении (или исключении) новых средств в будущих моделях процессоров наличие (или исключение) новых средств будет указываться разрядами новых возможностей. Регистр 4 CPUID логически разделен на две половины, в каждой из которых содержится информация об общих средствах и возможностях, но которые имеют различные модели использования и возможности доступа; эта информация отображает состояние любых действующих или заблокированных средств. Как верхняя, так и нижняя половины регистра 4 CPUID доступны посредством команды косвенного перемещения регистра; в зависимости от реализации время ожидания этого доступа может являться длительным, и этот способ доступа неприменим для управления версиями кодов с малым временем ожидания с использованием самовыбора. Кроме того, верхняя половина регистра 4 CPUID также доступна с использованием команды проверки средств; время ожидания этого доступа сравнимо со временем ожидания выполнения команды разряда проверки, и этот способ обеспечивает управление версиями кодов с малым временем ожидания с использованием самовыбора.
В принципах действия системы z/Architecture описана команда сохранения расширенного списка средств (Store Facility List Extended) (STFLE), которая подобно регистру CPUID Intel предоставляет программному обеспечению сведения о средствах (или уровнях архитектуры) базовых центральных процессоров (ЦП) или процессоров. Команда STFLE имеет формат, проиллюстрированный далее в Таблице 1.
Команда STFLE (Таблица 1) содержит разряды поля кода операции (0-15), разряды поля В2 регистра (16-19) и разряды (непосредственного) поля D2 смещения (20-31). При выполнении команды STFLE машиной сохраняется список разрядов, содержащих информацию о средствах в памяти программ, адрес которой определяется путем сложения содержимого регистра, заданного в поле В2 команды, и 12-разрядного непосредственного поля D2, при этом адрес памяти начинается с двойного слова (длиной 8 байтов, длина одного слова - 4 байта), заданного адресом второго операнда ((B2)+D2). Адрес памяти программ в системе z/Architecture является объектом динамической трансляции адреса (DAT).
Зарезервированными разрядами являются разряды, которые в данный момент не назначены для отображения какого-либо средства. Зарезервированные разряды для крайних левых двойных слов, в которых назначены разряды средства, хранятся в виде нулей. Двойные слова справа от двойного слова, в котором назначен разряд средства с наибольшим номером для модели, хранятся необязательно. Для двойных слов, которые не хранятся, не распознаются исключительные ситуации при доступе и события PER. Второй операнда в двойных словах имеет размер на единицу больше значения, заданного в разрядах 56-63 общего регистра 0. Остальные разряды общего регистра 0 не назначены и должны содержать нули; в противном случае в будущем может не обеспечиваться программная совместимость.
Когда второй операнд имеет достаточный размер, чтобы вместить все разряды средства, назначенные для модели, в местоположении второго операнда сохраняется полный список средств, разряды 56-63 общего регистра 0 обновляются таким образом, чтобы иметь значение на единицу меньше числа двойных слов, необходимого для вмещения всех разрядов средства, назначенных для модели, и устанавливается код 0 условия.
Когда второй операнд не имеет достаточного размера, чтобы вместить все разряды средства, назначенные для модели, сохраняется только число двойных слов, заданное размером второго операнда, разряды 56-63 общего регистра 0 обновляются таким образом, чтобы иметь значение на единицу меньше числа двойных слов, необходимого для вмещения всех разрядов средства, назначенных для модели, и устанавливается код 3 условия.
В результате выполнения команды устанавливается значение кода условия, которое сохраняется во время переключения контекста с помощью слова состояния программы (PSW).
Особые условия
Второй операнд должен быть указан на границе двойного слова; в противном случае распознается исключительная ситуация при нарушении заданных условий.
Результирующий код условия
0 Сохранен полный список средств
1 -
2 -
3 Сохранен неполный список средств
Исключительные ситуации в процессе выполнения программы Доступ (сохранение, второй операнд)
Операция (если не установлено средство сохранения расширенного списка средств)
Спецификация
Комментарии к программированию
Команда сохранения расширенного списка средств может выполняться значительно медленнее, чем просто при проверке байта в запоминающем устройстве. Программы, которые часто требуется проверять на присутствие какого-либо средства, например, кода с двумя ветвями, в одной из ветвей которой используется средство, а в другой - не используется, должны выполнять команду сохранения расширенного списка средств один раз при инициализации. Впоследствии программа может проверяться на присутствие средства путем изучения сохраненного результата с использованием какой-либо команды, такой как команда проверки с маскированием (TEST UNDER MASK).
Когда установлен код 0 условия, разряды 56-63 общего регистра 0 обновляются и указывают число сохраненных двойных слов. Если во время выполнения программы игнорируются результаты в общем регистре 0, должно быть обеспечено, что весь второй операнд в запоминающем устройстве установлен на ноль до выполнения команды сохранения расширенного списка средств.
В Таблице 2 показаны назначаемые известной системой z/Architecture STFLE разряды и их значение. Значение разряда устанавливается на единицу независимо от текущего режима архитектуры, если его значение является истинным. Значение применимо к текущему режиму архитектуры, если только не указано, что оно применимо к конкретному режиму архитектуры.
Неназначенные разряды резервируются для указания новых средств; в будущем эти разряды могут сохраняться как единицы.
Список средств согласно известной системе z/Architecture определяется, как показано далее в Таблице 2.
Таблица 2
Значение разряда, когда разряд равен единице
0 Установлены команды, снабженные отметкой "N3" на сводных диаграммах команд в главах 7 и 10 описания системы z/Architecture.
1 Установлен режим архитектуры системы z/Architecture.
2 Действует режим архитектуры системы z/Architecture. Когда этот разряд равен нулю, действует режим архитектуры системы ESA/390.
3 Установлено средство расширенной DAT в режиме архитектуры системы z/Architecture. Средство расширенной DAT содержит команду аннулирования записи в таблице DAT (INVALIDATE DAT TABLE ENTRY) (IDTE) и команду сравнения, свопинга и удаления (COMPARE AND SWAP AND PURGE) (CSPG).
4 В случае команды аннулирования записи в таблице DAT (IDTE) выполняется операция аннулирования и очистки путем выборочной очистки записей из комбинированной таблицы региона и сегментов, когда аннулируется запись или записи из таблицы сегментов. В случае IDTE также выполняется операция очистки путем ASCE. При условии, что значением разряда 4 не является единица, IDTE просто удаляет все TLB. Разряд 3 равен единице, если разряд 4 равен единице.
5 В случае команды аннулирования записи в таблице DAT (IDTE) выполняется операция аннулирования и очистки путем выборочной очистки записей из комбинированной таблицы регионов и сегментов, когда аннулируется запись или записи из таблицы региона. Разряды 3 и 4 равны единице, если разряд 5 равен единице.
6 Установлено средство повторного использования ASN и LX в режиме архитектуры системы z/Architecture.
7 Установлено средство сохранения расширенного списка средств.
8 Установлено средство расширенной DAT в режиме архитектуры системы z/Architecture.
9 Установлено средство восприятия состояния выполнения в режиме архитектуры системы z/Architecture.
10 Установлено средство условного SSKE в режиме архитектуры системы z/Architecture.
11 Установлено средство конфигурационной топологии в режиме архитектуры системы z/Architecture.
16 Установлено средство 2 расширенной трансляции.
17 Установлено средство содействия засекречиванию сообщений.
18 Установлено средство длительного смещения в режиме архитектуры системы z/Architecture.
19 Средство длительного смещения является высокоэффективным. Разряд 18 равен единице, если разряд 19 равен единице.
20 Установлено средство умножения и сложения/вычитания HFP.
21 Установлено расширенное промежуточное средство в режиме архитектуры системы z/Architecture.
22 Установлено средство 3 расширенной трансляции в режиме архитектуры системы z/Architecture.
23 Установлено средство ненормализованного расширения HFP в режиме архитектуры системы z/Architecture.
24 Установлено средство расширения ETF2.
25 Установлено средство быстрого сохранения показания часов в режиме архитектуры системы z/Architecture.
26 Установлено средство расширения анализа в режиме архитектуры системы z/Architecture.
27 Установлено средство переноса с необязательными заданными условиями в режиме архитектуры системы z/Architecture.
28 Установлено средство управления часами TOD в режиме архитектуры системы z/Architecture.
30 Установлено средство расширения ETF3 в режиме архитектуры системы z/Architecture.
31 Установлено средство вывода машинного времени в режиме архитектуры системы z/Architecture.
32 Установлено средство сравнения, свопинга и сохранения сравнения, в режиме архитектуры системы z/Architecture.
33 Установлено средство 2 сравнения, свопинга и сохранения в режиме архитектуры системы z/Architecture.
34 Установлено средство расширения общих команд в режиме архитектуры системы z/Architecture.
35 Установлено средство выполнения расширений в режиме архитектуры системы z/Architecture.
39 Выделено для внутреннего использования IBM.
41 Установлены средства расширения поддержки операций с плавающей точкой (переноса FPR-GR, оперирования со знаками FPS и округления DFP) в режиме архитектуры системы z/Architecture.
42 Установлено средство DFP (десятичной плавающей точки) в режиме архитектуры системы z/Architecture.
43 Средство DFP является высокоэффективным. Разряд 42 равен единице, если разряд 43 равен единице.
44 Установлена команда PFPO в режиме архитектуры системы z/Architecture.
Команда может предусматривать выполнение одной функции в какой-либо архитектуре или в некоторых случаях любой из множества выбираемых функций. Выбираемые функции, определенные для команды, могут различаться в зависимости от машины. Например, когда многофункциональная команда впервые вводится в структурированный набор команд, она может иметь всего несколько выбираемых функций. В позднее структурированном наборе команд для ранее введенной многофункциональной команды может быть предусмотрено большее число выбираемых функций. В одном из вариантов осуществления VM может быть выделено подмножество выбираемых функций физического процессора, при этом команда, выполняемая в логическом процессоре VM, может осуществлять запрос списка доступных функций логического процессора, в ответе на который указаны только функции, выделенные VM, несмотря на то, что физический процессор способен выполнять большее число выбираемых функций. В одном из вариантов осуществления для этого используется средство перехвата указывающей функцию команды (Function-Indicating-Instruction Interception Facility) (FIIIF), которое позволяет гипервизору прерывать или перехватывать выполнение данной функции запроса гостем (виртуальной машиной) и представлять сокращенный список доступных функций. В другом варианте осуществления гипервизор задает, например, посредством битовой маски множество функций для сообщения гостю, а функция запроса многофункциональной команды сообщает этот список. Кроме того, в одном из вариантов осуществления при попытке выполнения выбранной выбираемой функции командой, выполняемой в логическом процессоре, возникает исключительная ситуация в процессе выполнения программы.
В случае многофункциональной команды, способной запрашивать наличие установленных функций, а также выполнять выбранную из установленных функций, выполнение установленных функций, включая функцию запроса, может происходить в аппаратном обеспечении (включая, например, схему и микрокод) для достижения наибольшей эффективности. В одном из вариантов осуществления, когда установлено FIIIF, выполнение функции запроса перехватывается программным, а не аппаратным обеспечением. Соответственно, только выполнение функции запроса будет связано с дополнительной задержкой, чтобы определить, о каких установленных средствах следует сообщать. В одном из вариантов осуществления за перехват отвечает код гипервизора, который выполняет функцию запроса и передает соответствующие результаты от имени виртуальной машины.
Одним из примеров команды, содержащей выбираемые функции, является команда шифрования сообщения системы z/Architecture.
Команда шифрования сообщения (КМ) может предусматривать выполнение любых из множества функций шифрования сообщения. Одной из функций, предусмотренных командой шифрования сообщения, является запрос у процессора, содержащего значащие разряды списка функций шифрования сообщения, поддерживаемых процессором.
Команда шифрования сообщения (Таблица 3) имеет следующий формат, в котором R1 означает первый общий регистр, a R2 означает второй общий регистр.
30 Команда шифрования сообщения (Таблица 3) выполняется следующим образом.
Выполняется функция, заданная кодом функции в подразумеваемом общем регистре 0.
Разряды 16-23 команды игнорируются.
Двоичные разряды 57-63 общего регистра 0 содержат код функции.
В Таблице 4 показаны текущие коды функций, присвоенные команда шифрования сообщения и шифрования сообщения со сцеплением, соответственно (0-3 и 18-20). Все остальные коды функции являются свободными. В случае функций шифрования разряд 56 является модифицирующим разрядом, который указывает, должно осуществляться шифрование или дешифрование. В случае всех остальных функций модифицирующий разряд игнорируется. Все остальные разряды общего регистра 0 игнорируются.
В подразумеваемом общем регистре 1 содержится логический адрес крайнего левого байта блока параметров в запоминающем устройстве. В режиме 24-разрядной адресации содержимое двоичных разрядов 40-63 общего регистра 1 образует адрес, а содержимое двоичных разрядов 0-39 игнорируется. В режиме 31-разрядной адресации содержимое двоичных разрядов 33-63 общего регистра 1 образует адрес, а содержимое двоичных разрядов 0-32 игнорируется. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра 1 образует адрес.
Функция запроса обеспечивает средство индикации доступности остальных функций. В случае функции запроса игнорируется содержимое общих регистров, указанных в полях (Rl, R2) и R2+1 команды.
В случае всех остальных функций второй операнд (заданный в поле R2) шифруется, как указано кодом функции, с использованием криптографического ключа в блоке параметров, а полученный результате помещается в местоположение первого операнда.
В случае команды шифрования сообщения со сцеплением при шифровании также используется исходное значение сцепления в блоке параметров, которое обновляется в ходе выполнения операции. Использование регистров для 24-разрядной адресации показано в Таблице 5.
В поле R1 указан общий регистр, и должен быть указан регистр с четным номером; в противном случае распознается исключительная ситуация при нарушении заданных условий.
В поле R2 указана четно-нечетная пара общих регистров, и должен быть указан регистр с четным номером; в противном случае распознается исключительная ситуация при нарушении заданных условий.
Местоположение крайнего левого байта первого и второго операндов задано содержимым общих регистров R1 и R2. Число байтов в местоположении второго операнда задано в общем регистре R2+1. Первый операнд имеет такую же длину, как и второй операнд.
В ходе выполнения операции адреса в общих регистрах R1 и R2 увеличивается на число обработанных байтов, а длина в общем регистре R2+1 уменьшается на такую же величину. Формирование и обновление адреса и длины зависят от режима адресации.
В режиме 24-разрядной адресации содержимое двоичных разрядов 40-63 общих регистров R1 и R2 образует адреса первого и второго операндов, соответственно, а содержимое двоичных разрядов 0-39 игнорируется; разряды 40-63 обновленных адресов заменяют соответствующие разряды в общих регистрах R1 и R2, переносы двоичного разряда 40 обновленного адреса игнорируются, а содержимое двоичных разрядов 32-39 общих регистров R1 и R2 устанавливается на ноль. В режиме 31-разрядной адресации содержимое двоичных разрядов 33-63 общих регистров R1 и R2 образует адреса первого и второго операндов, соответственно, а содержимое двоичных разрядов 0-32 игнорируется; разряды 33-63 обновленных адресов заменяют соответствующие разряды в общих регистрах R1 и R2, переносы двоичного разряда 33 обновленного адреса игнорируются, а содержимое двоичного разряда 32 общих регистров R1 и R2 устанавливается на ноль. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общих регистров R1 и R2 образует адреса первого и второго операндов, соответственно; разряды 0-63 обновленных адресов заменяют содержимое общих регистров R1 и R2, а переносы двоичного разряда 0 игнорируются.
В режиме как 24-разрядной, так и 31-разрядной адресации содержимое двоичных разрядов 32-63 общего регистра R2+1 образует 32-разрядное двоичное целое число без знака, которое задает число байтов в первом и втором операндах, а содержимое двоичных разрядов 0-31 игнорируется; разряды 32-63 обновленного значения заменяют соответствующие разряды в общем регистре R2+1. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра R2+1 образует 64-разрядное двоичное целое число без знака, которое задает число байтов в первом и втором операндах; а обновленное значение заменяет содержимое общего регистра R2+1.
В режиме 24-разрядной или 31-разрядной адресации содержимое двоичных разрядов 0-31 общих регистров R1, R2 и R2+1 всегда остается без изменения. Содержимое только что описанных общих регистров проиллюстрировано на прилагаемых чертежах.
В режиме регистрации доступа в регистрах 1, R1 и R2 доступа заданы адресные пространства, содержащие блок параметров, первый и второй операнды, соответственно.
Результат получают, как если бы обработка начиналась с левого конца как первого, так и второго операндов, и блок за блоком продолжалась вправо. Операция завершается после того, как во втором операнде обработано и помещено в местоположение первого операнда число байтов, заданное в общем регистре R2+1 (что именуется успешным завершением), или после того, как обработано определенное ЦП число блоков, меньшее, чем длина второго операнда (что именуется частичным завершением). Определенное ЦП число блоков зависит от модели и может отличаться при каждом выполнении команды. Определенное ЦП число блоков обычно отличается от нуля. В некоторых необычных ситуациях это число может быть равным нулю, и может быть установлен неизменяющийся код 3 условия. Тем не менее, ЦП защищает от бесконечного повторения этой неизменяющейся ситуации.
Результаты в местоположении первого операнда и поле значений сцепления являются непредсказуемыми при возникновении любой из следующих ситуаций.
Поле криптографического ключа перекрывает какую-либо часть первого операнда.
Поле значений сцепления перекрывает какую-либо часть первого операнда или второго операнда.
Первый и второй операнды перекрывают друг друга с разрушением. Считается, что операнды перекрывают друг друга с разрушением, когда местоположение первого операнда используется в качестве источника после того, как в него перемещены данные, при условии, что обработка осуществляется слева направо по одному байту за один раз.
Когда операция заканчивается вследствие успешного завершения, устанавливается код 0 условия, а результирующее значение в R2+1 равно нулю. Когда операция заканчивается вследствие частичного завершения, устанавливается код 3 условия, а результирующее значение в R2+1 не равно нулю.
Когда распознается событие PER изменения запоминающего устройства, в местоположениях первого операнда сохраняется менее 4 дополнительных килобайт прежде, чем о событии сообщается.
Когда длина второго операнда изначально равна нулю, к блоку параметров, первому и второму операндам не осуществляется доступ, общие регистры R1, R2 и R2+1 не изменяются, и устанавливается код 0 условия.
Когда содержимое полей R1 и R2 является одинаковым, содержимое указанных регистров увеличивается лишь на число обработанных байтов, а не на удвоенное число обработанных байтов.
С точки зрения других ЦП и канальных программ обращения к операндам блоков параметров и памяти могут являться обращениями с коллективным доступом, выборка блоков из этих местоположений запоминающего устройства необязательно осуществляется параллельно, и последовательность этих доступов или обращений является неопределенной.
В некоторых необычных ситуациях выполнение команды может завершаться путем установки кода 3 условия без обновления регистров значения сцепления для отображения последнего блока первого и второго обработанных операндов. Размер обработанного блока в этом случае зависит от ситуации и модели, но ограничен таким образом, что части первого и второго операндов, которые были обработаны без сообщения об этом, не перекрываются в запоминающем устройстве. Во всех случаях, когда это применимо, устанавливаются разряды и сообщается о событиях PER изменения запоминающего устройства для всех обработанных местоположений первого операнда.
Об исключительных ситуациях при доступе может сообщаться для большей части операнда, чем часть, обработанная при разовом выполнении команды; тем не менее, исключительные ситуации при доступе не распознаются для местоположений за пределами длины операнда, а также местоположений далее 4 килобайт за пределами текущего обрабатываемого местоположения.
Команда шифрования сообщения имеет следующие коды функции.
Пояснение: - неприменимо
В одном из примеров машины функции шифрования сообщения могут быть реализованы с использованием в качестве примера команды шифрования сообщения. В примере реализации главные процессоры могут выполнять все показанные функции (с кодами 0-3 и 18-20 функции). Операционная система (ОС) главного компьютера (или гипервизора) может создавать одну или несколько виртуальных машинных для гостевых OC. Для архитектуры предыдущего уровня может быть определена одна виртуальная машина без команд шифрования сообщения.
Если установлено средство блокирования команды, а команды шифрования сообщения указаны как заблокированные команды для VM, в одном из вариантов осуществления виртуальная машина не разрешает выполнение команды шифрования сообщения программами, действующими в виртуальной машине, несмотря на то, что базовая главная машина поддерживает команды шифрования сообщения. Попытка выполнения команды шифрования сообщения в VM приведет к проверке программы (исключительной ситуации в процессе выполнения программы).
Если установлено средство блокирования функции, и в VM разрешено только подмножество функций шифрования сообщения (например, коды 0-3 функции), в другом варианте осуществления виртуальная машина разрешает выполнение команды шифрования сообщения, но не разрешает выполнение команд шифрования сообщения с кодом функции помимо 0-3 программами, действующими в виртуальной машине, несмотря на то, что базовая главная машина поддерживает команды шифрования с кодами функций (0-3 и 18-20). Попытка выполнения команды шифрования сообщения с кодами функции помимо 0-3, такими как любой из 18-20, приведет к проверке программы (исключительной ситуации в процессе выполнения программы).
Если установлено средство проверки/запроса функция, и в VM разрешено только подмножество функций шифрования сообщения (например, коды функции 0-3), в другом варианте осуществления выполнение запроса шифрования сообщения возможно только с кодами 0-3 функции, хотя базовая главная машина поддерживает коды 0-3 и 18-20 функции.
Другие примеры многофункциональных команд системы z/Architecture
Команды вычисления профиля промежуточного сообщения (COMPUTE INTERMEDIATE MESSAGE DIGEST) (KIMD) и вычисления профиля последнего сообщения (COMPUTE LAST MESSAGE DIGEST) (KLMD)
При выполнении компьютерной системой выполняется функция, заданная кодом функции в общем регистре 0. Разряды 16-23 команды и поле R1 игнорируются. Двоичные разряды 57-63 общего регистра 0 содержат код функции. Разряд 56 общего регистра 0 должен быть равен нулю; в противном случае распознается исключительная ситуация при нарушении заданных условий. Все остальные разряды общего регистра 0 игнорируются. В общем регистре 1 содержится логический адрес крайнего левого байта блока параметров в запоминающем устройстве. В режиме 24-разрядной адресации содержимое двоичных разрядов 40-63 общего регистра 1 образует адрес, а содержимое двоичных разрядов 0-39 игнорируется. В режиме 31-разрядной адресации содержимое двоичных разрядов 33-63 общего регистра 1 образует адрес, а содержимое двоичных разрядов 0-32 игнорируется. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра 1 образует адрес. Все остальные коды функции не назначены. Функция запроса обеспечивает средство индикации доступности остальных функций. Содержимое общих регистров R2 и R2+1 игнорируется в случае функции запроса. В случае всех остальных функций второй операнд обрабатывается, как задано кодом функции, с использованием исходного значения сцепления в блоке параметров, а полученный результат заменяет значение сцепления. Для вычисления профиля последнего сообщения в операции также используется длина сообщения в битах в блоке параметров. Операция выполняется до достижения конца местоположения второго операнда или обработки определенного ЦП числа байтов, в зависимости от того, что наступит раньше. Результат указывается в коде условия. В поле R2 указана четно-нечетная пара общих регистров, и в нем должен быть указан регистр с четным номером; в противном случае распознается исключительная ситуация при нарушении заданных условий. Местоположение крайнего левого байта второго операнда задано содержимым общего регистра R2. Число байтов в местоположении второго операнда задано в общем регистре R2+1. В ходе выполнения операции адрес в общем регистре R2 увеличивается на число байтов, обработанных во втором операнде, а длина в общем регистре R2+1 уменьшается на такую же величину. Формирование и обновление адреса и длины зависят от режима адресации. В режиме 24-разрядной адресации содержимое двоичных разрядов 40-63 общего регистра R2 образует адрес второго операнда, а содержимое двоичных разрядов 0-39 игнорируется; разряды 40-63 обновленного адреса заменяют соответствующие разряды в общем регистре R2, переносы двоичного разряда 40 обновленного адреса игнорируются, а содержимое двоичных разрядов 32-39 общего регистра R2 устанавливается на ноль. В режиме 31-разрядной адресации содержимое двоичных разрядов 33-63 общего регистра R2 образует адрес второго операнда, а содержимое двоичных разрядов 0-32 игнорируется; разряды 33-63 обновленного адреса заменяют соответствующие разряды в общем регистре R2, переносы двоичного разряда 33 обновленного адреса игнорируются, а содержимое двоичного разряда 32 общего регистра R2 устанавливается на ноль. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра R2 образует адрес второго операнда; разряды 0-63 обновленного адреса заменяют содержимое общего регистра R2, а переносы двоичного разряда 0 игнорируются. В режиме как 24-разрядной, так и 31-разрядной адресации содержимое двоичных разрядов 32-63 общего регистра R2+1 образует 32-разрядное двоичное целое число без знака, которое задает число байтов во втором операнде; а обновленное значение заменяет содержимое двоичных разрядов 32-63 общего регистра R2+1. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра R2+1 образует 64-разрядное двоичное целое число без знака, которое задает число байтов во втором операнде; а обновленное значение заменяет содержимое общего регистра R2+1. В режиме 24-разрядной или 31-разрядной адресации содержимое двоичных разрядов 0-31 общих регистров R2 и R2+1 всегда остается без изменения. В режиме регистрации доступа регистры 1 и R2 доступа задают адресные пространства, содержащие блок параметров и второй операнд, соответственно. Результат получают, как если бы обработка начиналась с левого конца второго операнда и блок за блоком продолжалась вправо. Операция завершается после того, как во втором операнде обработаны все исходные байты (что именуется успешным завершением), или после того, как обработано определенное ЦП число блоков, меньшее, чем длина второго операнда (что именуется частичным завершением). Определенное ЦП число блоков зависит от модели и может отличаться при каждом выполнении команды. Определенное ЦП число блоков обычно не равно нулю. В некоторых необычных ситуациях это число может быть равно нулю и может быть установлен неизменяющийся код 3 условия. Тем не менее, ЦП защищает от бесконечного повторения этой неизменяющейся ситуации. Когда поле значений сцепления перекрывает какую-либо часть второго операнда, результат в поле значений сцепления является непредсказуемым. При вычислении профиля промежуточного сообщения успешное завершение имеет место, когда во втором операнде обработано число байтов, заданное в общем регистре R2+1. При вычислении профиля последнего сообщения после того, как во втором операнде обработаны все байты, заданные в общем регистре R2+1, выполняется операция заполнения, а затем происходит успешное завершение. Когда операция заканчивается вследствие успешного завершения, устанавливается код 0 условия, а результирующее значение R2+1 равно нулю. Когда операция заканчивается вследствие частичного завершения, устанавливается код 3 условия, а результирующее значение R2+1 не равно нулю. Когда длина второго операнда изначально равна нулю, ко второму операнду не осуществляется доступ, общие регистры R2 и R2+1 не изменяются, и устанавливается код 0 условия. В случае вычисления профиля промежуточного сообщения не осуществляется доступ к блоку параметров. Тем не менее, в случае вычисления профиля последнего сообщения выполняется операция заполнения в случае пустого блока (L=0), а результат сохраняется в блоке параметров. С точки зрения других ЦП и канальных программ обращения к операндам блоков параметров и памяти могут являться обращениями с коллективным доступом, выборка блоков из этих местоположений запоминающего устройства необязательно осуществляется параллельно, и последовательность этих доступов или обращений является неопределенной. Об исключительных ситуациях при доступе может сообщаться для большей части операнда, чем часть, обработанная при разовом выполнении команды; тем не менее, исключительные ситуации при доступе не распознаются для местоположений за пределами длины операнда, а также местоположений далее 4 килобайт за пределами текущего обрабатываемого местоположения.
Запрос KIMD (код 0 функции KIMD)
В блоке параметров хранится 128-разрядное слово состояния. Разряды 0-127 этого поля соответствуют кодам 0-127 функции, соответственно, команды вычисления профиля промежуточного сообщения. Когда разряд равен единице, соответствующая функция установлена; в противном случае функция не установлена. По завершении выполнения функции запроса KIMD устанавливается код 0 условия; код 3 условия неприменим к этой функции.
KIMD-SHA-1 (код 1 функции KIMD)
Для 64-байтовых блоков сообщений в операнде 2 генерируется 20-байтовый профиль промежуточного сообщения с использованием блочного алгоритма SHA-1 представления сообщения в краткой форме и 20-байтового значения сцепления в блоке параметров. Генерированный профиль промежуточного сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
KIMD-SHA-256 (код 2 функции KIMD)
Для 64-байтовых блоков сообщений в операнде 2 генерируется 32-байтовый профиль промежуточного сообщения с использованием блочного алгоритма SHA-256 представления сообщения в краткой форме и 32-байтового значения сцепления в блоке параметров. Генерированный профиль промежуточного сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
KIMD-SHA-512 (код 3 функции KIMD)
Для 128-байтовых блоков сообщений в операнде 2 генерируется 64-байтовый профиль промежуточного сообщения с использованием блочного алгоритма SHA-512 представления сообщения в краткой форме и 64-байтового значения сцепления в блоке параметров. Генерированный профиль промежуточного сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
Запрос KLMD (код 0 функции KLMD)
В блоке параметров хранится 128-разрядное слово состояния. Разряды 0-127 этого поля соответствуют кодам 0-127 функции, соответственно, команды вычисления профиля последнего сообщения. Когда разряд равен единице, соответствующая функция установлена; в противном случае функция не установлена. По завершении выполнения функции запроса KLMD устанавливается код 0 условия; код 3 условия неприменим к этой функции.
KLMD-SHA-1 (код 1 функции KLMD)
Для сообщения (М) в операнде 2 генерируется профиль сообщения с использованием алгоритма SHA-1, а также значения сцепления и информации о длине сообщения в битах в блоке параметров. Если длина сообщения в операнде 2 составляет 64 байта или более, для каждого 64-байтового блока сообщений генерируется профиль промежуточного сообщения с использованием блочного алгоритма SHA-1 представления сообщения в краткой форме и 20-байтового значения сцепления в блоке параметров, а генерированный профиль промежуточного сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров. Эта операция повторяется до тех пор, пока остающееся сообщение не будет иметь длину менее 64 байтов. Если длина сообщения или остающегося сообщения составляет ноль байтов, операция выполняется. Если длина сообщения или остающегося сообщения составляет от 1 байта до 55 байтов включительно, операция выполняется; если длина составляет от 56 байтов до 63 байтов включительно, операция выполняется. Профиль сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
KLMD-SHA-256 (код 2 функции KLMD)
Для сообщения (М) в операнде 2 генерируется профиль сообщения с использованием алгоритма SHA-256, а также значения сцепления и информации о длине сообщения в битах в блоке параметров. Если длина сообщения в операнде 2 составляет 64 байта или более, для каждого 64-байтового блока сообщений генерируется профиль промежуточного сообщения с использованием блочного алгоритма SHA-256 представления сообщения в краткой форме и 32-байтового значения сцепления в блоке параметров, а генерированный профиль промежуточного сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров. Эта операция повторяется до тех пор, пока остающееся сообщение не будет иметь длину менее 64 байтов. Если длина сообщения или остающегося сообщения составляет ноль байтов, операция выполняется. Если длина сообщения или остающегося сообщения составляет от 1 байта до 55 байтов включительно, операция выполняется; если длина составляет от 56 байтов до 63 байтов включительно, операция выполняется. Профиль сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
KLMD-SHA-512 (код 3 функции KLMD)
Для сообщения (M) в операнде 2 генерируется профиль сообщения с использованием алгоритма SHA-512, а также значения сцепления и информации о длине сообщения в битах в блоке параметров. Если длина сообщения в операнде 2 составляет 128 байтов или более, для каждого 128-байтового блока сообщений генерируется профиль промежуточного сообщения с использованием блочного алгоритма SHA-512 представления сообщения в краткой форме и 64-байтового значения сцепления в блоке параметров, а генерированный профиль промежуточного сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров. Операция повторяется до тех пор, пока остающееся сообщение не будет иметь длину менее 128 байтов. Если длина сообщения или остающегося сообщения составляет ноль байтов, операция выполняется. Если длина сообщения или остающегося сообщения составляет от 1 байта до 111 байтов включительно, операция выполняется; если длина составляет от 112 байтов до 127 байтов включительно, операция выполняется. Профиль сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
Команда вычисления кода аутентификации сообщения (КМАС)
При выполнении компьютерной системой выполняется функция, заданная кодом функции в общем регистре 0. Разряды 16-23 команды и поле R1 игнорируются. Двоичные разряды 57-63 общего регистра 0 содержат код функции. Все остальные коды функции не назначены. Разряд 56 общего регистра 0 должен быть равен нулю; в противном случае распознается исключительная ситуация при нарушении заданных условий. Все остальные разряды общего регистра 0 игнорируются. В общем регистре 1 содержится логический адрес крайнего левого байта блока параметров в запоминающем устройстве. В режиме 24-разрядной адресации содержимое двоичных разрядов 40-63 общего регистра 1 образует адрес, а содержимое двоичных разрядов 0-39 игнорируется. В режиме 31-разрядной адресации содержимое двоичных разрядов 33-63 общего регистра 1 образует адрес, а содержимое двоичных разрядов 0-32 игнорируется. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра 1 образует адрес. Функция запроса обеспечивает средство индикации доступности остальных функций. Содержимое общих регистров R2 и R2+1 игнорируется. В случае всех остальных функций второй операнд обрабатывается, как задано кодом функции, с использованием исходного значения сцепления в блоке параметров, а результат заменяет значение сцепления. В операции также используется криптографический ключ в блоке параметров. Операция выполняется до достижения конца местоположения второго операнда или обработки определенного ЦП числа байтов, в зависимости от того, что наступит раньше. Результат указывается в коде условия. В поле R2 указана четно-нечетная пара общих регистров, и должен быть указан регистр с четным номером; в противном случае распознается исключительная ситуация при нарушении заданных условий. Местоположение крайнего левого байта второго операнда задано содержимым общего регистра R2. Число байтов в местоположении второго операнда задано в общем регистре R2+1. В ходе выполнения операции адрес в общем регистре R2 увеличивается на число байтов, обработанных во втором операнде, а длина в общем регистре R2+1 уменьшается на такую же величину. Формирование и обновление адреса и длины зависят от режима адресации. В режиме 24-разрядной адресации содержимое двоичных разрядов 40-63 общего регистра R2 образует адрес второго операнда, а содержимое двоичных разрядов 0-39 игнорируется; разряды 40-63 обновленного адреса заменяют соответствующие разряды в общем регистре R2, переносы двоичного разряда 40 обновленного адреса игнорируются, а содержимое двоичных разрядов 32-39 общего регистра R2 устанавливается на ноль. В режиме 31-разрядной адресации содержимое двоичных разрядов 33-63 общего регистра R2 образует адрес второго операнда, а содержимое двоичных разрядов 0-32 игнорируется; разряды 33-63 обновленного адреса заменяют соответствующие разряды в общем регистре R2, переносы двоичного разряда 33 обновленного адреса игнорируются, а содержимое двоичного разряда 32 общего регистра R2 устанавливается на ноль. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра R2 образует адрес второго операнда; разряды 0-63 обновленного адреса заменяют содержимое общего регистра R2, а переносы двоичного разряда 0 игнорируются. В режиме как 24-разрядной, так и 31-разрядной адресации, содержимое двоичных разрядов 32-63 общего регистра R2+1 образует 32-разрядное двоичное целое число без знака, которое задает число байтов во втором операнде; а обновленное значение заменяет содержимое двоичных разрядов 32-63 общего регистра R2+1. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра R2+1 образует 64-разрядное двоичное целое число без знака, которое задает число байтов во втором операнде; а обновленное значение заменяет содержимое общего регистра R2+1. В режиме 24-разрядной или 31-разрядной адресации содержимое двоичных разрядов 0-31 общих регистров R2 и R2+1 всегда остается без изменения. В режиме регистрации доступа, регистры 1 и R2 доступа задают адресные пространства, содержащие блок параметров и второй операнд, соответственно. Результат получают, как если бы обработка начиналась с левого конца второго операнда и блок за блоком продолжалась вправо. Операция завершается после того, как во втором операнде обработаны все исходные байты (что именуется успешным завершением), или после того, как обработано определенное ЦП число блоков, меньшее, чем длина второго операнда (что именуется частичным завершением). Определенное ЦП число блоков зависит от модели и может отличаться при каждом выполнении команды. Определенное ЦП число блоков обычно не равно нулю. В некоторых необычных ситуациях это число может быть равно нулю и может быть установлен неизменяющийся код 3 условия. Тем не менее, ЦП защищает от бесконечного повторения этой неизменяющейся ситуации. Когда поле значений сцепления перекрывает какую-либо часть второго операнда, результат в поле значений сцепления является непредсказуемым. Успешное завершение происходит, когда во втором операнде обработано число байтов, заданное в общем регистре R2+1. Когда операция заканчивается вследствие успешного завершения, устанавливается код 0 условия, а результирующее значение R2+1 равно нулю. Когда операция заканчивается вследствие частичного завершения, устанавливается код 3 условия, а результирующее значение R2+1 не равно нулю. Когда длина второго операнда изначально равна нулю, доступ ко второму операнду и блоку параметров не осуществляется, общие регистры R2 и R2+1 не изменяются, и устанавливается код 0 условия. С точки зрения других ЦП и канальных программ обращения к операндам блоков параметров и памяти могут являться обращениями с коллективным доступом, выборка блоков из этих местоположений запоминающего устройства необязательно осуществляется параллельно, и последовательность этих доступов или обращений является неопределенной. Об исключительных ситуациях при доступе может сообщаться для большей части операнда, чем часть, обработанная при разовом выполнении команды; тем не менее, исключительные ситуации при доступе не распознаются для местоположений за пределами длины операнда, а также местоположений далее 4 килобайт за пределами текущего обрабатываемого местоположения.
Запрос КМАС (код 0 функции)
В блоке параметров хранится 128-разрядное слово состояния. Разряды 0-127 этого поля соответствуют кодам 0-127 функции, соответственно, команды КМАС. Когда разряд равен единице, соответствующая функция установлена; в противном случае функция не установлена. По завершении выполнения функции запроса КМАС устанавливается код 0 условия; код 3 условия неприменим к этой функции.
KMAC-DEA (код 1 функции)
Для 8-байтовых блоков сообщений (Ml, М2, …, Мn) в операнде 2 вычисляется код аутентификации сообщения с использованием алгоритма DEA, а также 64-разрядного криптографического ключа и 64-разрядного значения сцепления в блоке параметров. Код аутентификации сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
KMAC-TDEA-128 (код 2 функции)
Для 8-байтовых блоков сообщений (Ml, М2, …, Мn) в операнде 2 вычисляется код аутентификации сообщения с использованием алгоритма TDEA, а также 64-разрядных криптографических ключей и 64-разрядного значения сцепления в блоке параметров. Код аутентификации сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
KMAC-TDEA-192 (код 3 функции)
Для 8-байтовых блоков сообщений (Ml, М2, …, Мn) в операнде 2 вычисляется код аутентификации сообщения с использованием алгоритма TDEA, а также трех 64- разрядных криптографических ключей и 64-разрядного значения сцепления в блоке параметров. Код аутентификации сообщения, также называемый выходным значением сцепления (OCV), сохраняется в поле значений сцепления блока параметров.
Команда выполнения заблокированной операции
При выполнении компьютерной системой после того, как установлена блокировка, заданная в общем регистре 1, выполняется операция, заданная кодом функции в общем регистре 0, а затем блокировка снимается. Тем не менее, с точки зрения других ЦП: (1) хранимые в памяти операнды, включая поля в списке параметров, который может использоваться, могут вызываться и проверяться на наличие исключительных ситуаций при доступе к памяти, если в проверенном местоположении возможно сохранение до того как установлена блокировка, и (2) операнды могут сохраняться в списке параметров после того, как блокировка снята. Если операнд не из списка параметров вызван до того, как установлена блокировка, он вызывается снова после установки блокировки. В коде функции может быть задана любая из шести операций: сравнения и загрузки, сравнения и свопинга, двойного сравнения и свопинга, сравнения, свопинга и сохранения, сравнения, свопинга и двойного сохранения или сравнения, свопинга и тройного сохранения. Когда разряд проверки в общем регистре 0 равен единице, блокировка не должна устанавливаться, и не должна выполняться ни одна из шести операций, а вместо этого должна быть проверена достоверность кода функции. Это полезно, если в будущем для дополнительных операций будут назначены дополнительные коды функции. Это определение записывается, как если бы разрядом проверки являлся ноль, если только не указано иное. Если задана операция сравнения и загрузки, сравнительное значение первого операнда сравнивается со вторым операндом. Если они равны, четвертый операнд помещается в местоположение третьего операнда. Если сравнение указывает на неравенство, второй операнд помещается в местоположение сравнительного значения первого операнда в качестве нового сравнительного значения первого операнда. Если задана операция сравнения и свопинга, сравнительное значение первого операнда сравнивается со вторым операндом. Если они равны, замещающее значение первого операнда сохраняется в местоположении второго операнда. Если сравнение указывает на неравенство, второй операнд помещается в местоположение сравнительного значения первого операнда в качестве нового сравнительного значения первого операнда. Если задана операция двойного сравнения и свопинга, сравнительное значение первого операнда сравнивается со вторым операндом. Если они равны, сравнительное значение третьего операнда сравнивается с четвертым операндом. Если оба сравнения указывают на неравенство, замещающие значения первого операнда и третьего операнда сохраняются в местоположении второго операнда и местоположении четвертого операнда, соответственно. Если первое сравнение указывает на неравенство, второй операнд помещается в местоположение сравнительного значения первого операнда в качестве нового сравнительного значения первого операнда. Если первое сравнение указывает на равенство, а второе сравнение нет, четвертый операнд помещается в местоположение сравнительного значения третьего операнда в качестве нового сравнительного значения третьего операнда. Если задана операция сравнения, свопинга и сохранения, двойного сохранения или тройного сохранения, сравнительное значение первого операнда сравнивается со вторым операндом. Если они равны, замещающее значение первого операнда сохраняется в местоположении второго операнда, а третий операнд сохраняется в местоположении четвертого операнда. Затем, если операцией является операция двойного сохранения или тройного сохранения, пятый операнд сохраняется в местоположении шестого операнда, и, если операцией является операция тройного сохранения, седьмой операнд сохраняется в местоположении восьмого операнда. Если сравнение первого операнда указывает на неравенство, второй операнд помещается в местоположение сравнительного значения первого операнда в качестве нового сравнительного значения первого операнда. После выполнения любой из шести операций результат сравнения или сравнений указывается в коде условия. В двоичных разрядах 56-63 общего регистра 0 содержится код функции (FC). Код функции задает не только операцию, которая должна выполняться, но также длину операндов и указывает, находятся ли сравнительное и замещающее значение первого операнда и третий операнд или сравнительное и замещающее значение третьего операнда, которые собирательно имеются просто первым и третьим операндами, в общих регистрах или списке параметров.
Коды функции имеют следующую структуру:
код функции, кратный 4 (включая 0), задает 32-разрядную длину при нахождении первого и третьего операндов в двоичных разрядах 32-63 общих регистров,
код функции, превышающий на единицу кратную 4 величину, задает 64-разрядную длину при нахождении первого и третьего операндов в списке параметров,
код функции, превышающий на 2 кратную 4 величину, задает 64-разрядную длину при нахождении первого и третьего операндов в двоичных разрядах 0-63 общих регистров,
код функции, превышающий на 3 кратную 4 величину, задает 128-разрядную длину при нахождении первого и третьего операндов в списке параметров.
Например, для обозначения команды выполнения заблокированной операции может использоваться PLO.DCS с кодом 8 функции. В обозначениях буква "G" указывает длину 64-разрядного операнда, буква "R" указывает, что некоторые или все 64-разрядные операнды находятся в общих регистрах, а буква "X" указывает длину 128-разрядного операнда. Коды функции, не присвоенные операциям или указывающие операции, которые ЦП не способен выполнить, поскольку операции не реализованы (установлены), называются недействительными. Разряд 55 общего регистра 0 является разрядом проверки (T). Когда разряд 55 равен нулю, код функции в общем регистре 0 должен являться действительным; в противном случае распознается исключительная ситуация при нарушении заданных условий. Когда разряд 55 равен единице, код условия установлен на 0, если код функции является действительным, или на 3, если код функции является недействительным, и операция не выполняется. Все разряды 32-54 общего регистра 0 должны быть равны нулю; в противном случае распознается исключительная ситуация при нарушении заданных условий. Когда разряд 55 регистра равен единице, это является единственным исключением, которое может распознаваться. Разряды 0-31 общего регистра 0 игнорируются. Блокировка, которая должна использоваться, отображается маркером блокировки программ (program lock token) (PLT), логический адрес которого задан в общем регистре 1. В режиме 24-разрядной адресации адресом PLT являются разряды 40-63 общего регистра 1, а разряды 0-39 регистра игнорируются. В режиме 31-разрядной адресации адресом PLT являются разряды 33-63 регистра, а разряды 0-32 регистра игнорируются. В режиме 64-разрядной адресации адресом PLT являются разряды 0-63 регистра. В случае кодов функции с четными номерами, включая 0, сравнительное значение первого операнда находится в общем регистре R1. В случае кодов функции с четными номерами, начиная с 4, замещающее значение первого операнда находится в общем регистре Rl+1, а в R1 указана четно-нечетная пара регистров, и должен быть указан регистр с четным номером; в противном случае распознается исключительная ситуация при нарушении заданных условий. В случае кодов 0 и 2 функции, R1 может иметь четное или нечетное значение. В случае кодов 0, 2, 12 и 14 функции третий операнд находится в общем регистре R3, может иметь четное или нечетное значение. В случае кодов 8 и 10 функции сравнительное значение третьего операнда находится в общем регистре R3, замещающее значение третьего операнда находится в общем регистре R3+1, а в R3 указана четно-нечетная пара регистров, и должен быть указан регистр с четным номером; в противном случае распознается исключительная ситуация при нарушении заданных условий. В случае всех кодов функции в полях В2 и D2 команды задан адрес второго операнда. В случае кодов 0, 2, 8, 10, 12 и 14 функции в полях В4 и D4 команды задан адрес четвертого операнда. В случае кодов 1, 3, 5, 7, 9, 11, 13, 15 и 16-23 функции в полях В4 и D4 команды задан адрес списка параметров, который используется командой, и этот адрес не называется адресом четвертого операнда. В списке параметров содержатся операнды с нечетными номерами, включая сравнительные и замещающие значения, и адреса операнды с четными номерами помимо второго операнда. В режиме регистрации доступа в списке параметров также содержатся маркеры записей в списке доступа (access-list-entry tokens) (ALET), соответствующие адресам операндов с четными номерами. В режиме регистрации доступа в случае кодов функции, которые указывают использование списка параметров, содержащего ALET, значение R3 должно отличаться от нуля; в противном случае распознается исключительная ситуация при нарушении заданных условий. Адреса операндов в списке параметров, если он используется, содержатся в двойных словах из списка. В режиме 24-разрядной адресации адресом операнда являются разряды 40-63 двойного слова, а разряды 0-39 двойного слова игнорируются. В режиме 31-разрядной адресации адресом операнда являются разряды 33-63 двойного слова, а разряды 0-32 двойного слова игнорируются. В режиме 64-разрядной адресации адресом операнда являются разряды 0-63 двойного слова. В режиме регистрации доступа в регистре 1 доступа задано адресное пространство, содержащее маркер блокировки программ (PLT), в регистре В2 доступа задано адресное пространство, содержащее второй операнд, а в регистре В4 доступа задано адресное пространство, содержащее четвертый операнд или список параметров. Кроме того, в случае операнда, адрес которого находится в списке параметров, вместе с адресом в списке находится ALET, который используется в режиме регистрации доступа для указания адресного пространства, содержащего операнд. Если в режиме регистрации доступа для операнда, адрес которого находится в списке параметров, распознается исключительная ситуация при доступе или событие PER изменения запоминающего устройства, в регистр R3 доступа загружается соответствующий ALET в списке параметров, когда распознается исключительная ситуация или событие. Если во время результирующего прерывания программы должно быть сохранено какое-либо значение в качестве идентификатора доступа в исключительной ситуации в реальном местоположении 160 или идентификатора доступа при событии PER в реальном местоположении 161, сохраняется содержимое R3. Если выполнение команды завершается без распознавания исключительной ситуации или события, содержимое регистра R3 доступа является непредсказуемым. Не в режиме регистрации доступа или, когда не используется список параметров, содержащий ALET, содержимое регистра R3 доступа остается без изменения. Хранимые в памяти операнды с четными номерами (2, 4, 6 и 8) должны быть указаны на границе целого числа, которой является граница слова для кодов функции, кратных 4, граница двойного слова для кодов функции, превышающих на единицу или 2 кратную 4 величину, или граница учетверенного слова для кодов функции, превышающих на 3 кратную 4 величину. Список параметров, если он используется, должен быть указан на границе двойного слова. В противном случае распознается исключительная ситуация при нарушении заданных условий. Адрес PLT в общем регистре 1 не должен выравниваться по границам. Все неиспользуемые поля в списке параметров должны содержать нули; в противном случае в будущем может не обеспечиваться программная совместимость. Непосредственно после установки блокировки, а также непосредственно перед снятием блокировки выполняется функция последовательного упорядочения. Тем не менее, значения, вызванные из списка параметров до установки блокировки, необязательно вызываются повторно. Функция последовательного упорядочения не выполняется, если разряд проверки, т.е. разряд 55 общего регистра 0, равен единице.
Коды 0-3 функции (сравнения и загрузки)
Сравнительное значение первого операнда сравнивается со вторым операндом. Когда сравнительное значение первого операнда равно второму операнду, третий операнд заменяется четвертым операндом, и устанавливается код 0 условия. Когда сравнительное значение первого операнда не равно второму операнду, сравнительное значение первого операнда заменяется вторым операндом, и устанавливается код 1 условия.
Коды 4-7 функции (сравнения и свопинга)
Сравнительное значение первого операнда сравнивается со вторым операндом. Когда сравнительное значение первого операнда равно второму операнду, замещающее значение первого операнда сохраняется в местоположении второго операнда, и устанавливается код 0 условия. Когда сравнительное значение первого операнда не равно второму операнду, сравнительное значение первого операнда заменяется вторым операндом, и устанавливается код 1 условия.
Коды 8-11 функции (двойного сравнения и свопинга)
Сравнительное значение первого операнда сравнивается со вторым операндом. Когда сравнительное значение первого операнда равно второму операнду, сравнительное значение третьего операнда сравнивается с четвертым операндом. Когда сравнительное значение третьего операнда равно четвертому операнду (после того как установлено, что сравнительное значение первого операнда равно второму операнду), замещающее значение первого операнда сохраняется в местоположении второго операнда, замещающее значение третьего операнда сохраняется в местоположении четвертого операнда, и устанавливается код 0 условия. Когда сравнительное значение первого операнда не равно второму операнду, сравнительное значение первого операнда заменяется вторым операндом, и устанавливается код 1 условия. Когда сравнительное значение третьего операнда не равно четвертому операнду (после того как установлено, что сравнительное значение первого операнда равно второму операнду), сравнительное значение третьего операнда заменяется четвертым операндом, и устанавливается код 2 условия.
Коды 12-15 функции (сравнения, свопинга и сохранения)
Сравнительное значение первого операнда сравнивается со вторым операндом. Когда сравнительное значение первого операнда равно второму операнду, третий операнд сохраняется в местоположении четвертого операнда, и устанавливается код 0 условия. Когда сравнительное значение первого операнда не равно второму операнду, сравнительное значение первого операнда заменяется вторым операндом, и устанавливается код 1 условия.
Коды 16-19 функции (сравнения, свопинга и двойного сохранения)
Сравнительное значение первого операнда сравнивается со вторым операндом. Когда сравнительное значение первого операнда равно второму операнду, замещающее значение первого операнда сохраняется в местоположении второго операнда, третий операнд сохраняется в местоположении четвертого операнда, пятый операнд сохраняется в местоположении шестого операнда, и устанавливается код 0 условия. Когда сравнительное значение первого операнда не равно второму операнду, сравнительное значение первого операнда заменяется вторым операндом, и устанавливается код 1 условия.
Коды 20-23 функции (сравнения, свопинга и тройного сохранения)
Сравнительное значение первого операнда сравнивается со вторым операндом. Когда сравнительное значение первого операнда равно второму операнду, первый операнд замещающее значение сохраняется в местоположении второго операнда, третий операнд сохраняется в местоположении четвертого операнда, пятый операнд сохраняется в местоположении шестого операнда, седьмой операнд сохраняется в местоположении восьмого операнда, и устанавливается код 0 условия. Когда сравнительное значение первого операнда не равно второму операнду, сравнительное значение первого операнда заменяется вторым операндом, и устанавливается код 1 условия. Блокировка устанавливается в начале операции и снимается в конце операции. Установленная блокировка отображается маркером блокировки программ (PLT), логический адрес которого задан в общем регистре 1, как уже описано. PLT является величиной, получаемой путем зависящего от модели преобразования логического адреса PLT. В зависимости от модели может быть выведен непосредственно из логического адреса PLT или, когда действует DAT, из действительного адреса, получаемого в результате преобразования логического адреса PLT путем DAT. Если используется DAT, DAT в режиме регистрации доступа предваряется трансляцией регистра доступа (access register translation) (ART). PLT выбирает одно из зависящих от модели число блокировок в рамах конфигурации. Может обеспечиваться, что одна и та же блокировка задается в программах, выполняемых различными ЦП, только за счет указания логических адресов PLT, которые являются одинаковыми и могут преобразовываться в один и тот же действительный адрес различными ЦП. Поскольку в определенной модели при формировании PLT необязательно могут использоваться ART и DAT, исключительные ситуации при доступе, которые могут возникать во время ART и DAT, необязательно могут распознаваться как исключительные ситуации. К местоположению, указанному PLT, не осуществляется доступ, но для него может распознаваться исключительная ситуация при адресации. Во время обработки логического адреса PLT не распознается возникающая по какой-либо причине исключительная ситуация при защите. ЦП способен поддерживать одну блокировку за один раз. Когда этот ЦП выполняет заблокированную операцию и должен использовать блокировку, которая уже поддерживается другим ЦП вследствие выполнения другим ЦП команды выполнения заблокированной операции, выполнение этим ЦП задерживается до тех пор, пока блокировка больше не будет поддерживаться. Чрезмерная задержка может происходить только из-за неправильной работы оборудования, и распознается как ситуация прерывания по машинному контролю. Порядок, в котором выполняется множество запросов одной и той же блокировки, не определен. Неустранимый отказ ЦП во время поддержания блокировки может приводить к осуществлению машинного контроля, переходу в состояние контрольного останова или останову с целью системной проверки. Машинный контроль означает проверку средств резервирования, чтобы определить, все ли операнды не повреждены, или проверку повреждений, чтобы определить, повреждены ли операнды регистров. Если результатом является машинный контроль или состояние контрольного останова, хранимые в памяти операнды не были изменены, или все хранимые в памяти операнды, которые должны были измениться, были правильно изменены, и в любом случае блокировка была снята. Если хранимые в памяти операнды не находятся в правильно исходном состоянии или правильном конечном состоянии, результатом является останов с целью системной проверки.
Команда выполнения операции с плавающей точкой
При выполнении компьютерной системой выполняется операция, заданная кодом функции в общем регистре 0, и устанавливается код условия, указывающий результат. При отсутствии исключительных ситуаций устанавливается код 0 условия. В случае распознавания исключительной ситуации вследствие отсутствия системного прерывания по IEEE устанавливается код 1 условия. В случае распознавания исключительной ситуации вследствие прерывания по IEEE при альтернативном действии устанавливается код 2 условия. 32-разрядный код возврата помещается в разрядах 32-63 общего регистра 1; разряды 0-31 общего регистра 1 остаются без изменения. Команда выполнения операции с плавающей точкой (PFPO) подчиняется управляющему разряду регистра AFP, т.е. разряду 45 управляющего регистра 0. Для успешного выполнения команды PFPO управляющий разряд регистра AFP должен быть равен единице; в противном случае, распознается исключительная ситуация с данными регистра AFP или DXC 1. Разряд 32 общего регистра 0 является разрядом проверки. Когда разряд 32 равен нулю, выполняется функция, заданная разрядами 33-63 общего регистра 0; каждое поле в разрядах 33-63 должно являться действительным, а сочетание должно являться действительной и установленной функцией; в противном случае распознается исключительная ситуация при нарушении заданных условий. Когда разряд 32 равен единице, функция, заданная разрядами 33-63, не выполняется, и вместо этого устанавливается код условия, указывающий, задана ли в этих разрядах действительная и установленная функция; код условия устанавливается на 0, если функция является действительной и установленной, или на 3, если функция является недействительной или не установленной. Это полезно, если в будущем будут назначены дополнительные функции. Это определение записывается, как если бы разрядом проверки являлся ноль, если только не указано иное
В разрядах 33-39 GR0 задан тип операции. На данный момент определен только один тип операции: шестнадцатеричное число 01 преобразования системы счисления с плавающей точкой PFPO. В случае операции преобразования системы счисления с плавающей точкой PFPO другие поля в общем регистре 0 содержат формат первого операнда операнд, формат второго операнда, управляющие флаги и способ округления. В случае операции преобразования системы счисления с плавающей точкой PFPO второй операнд преобразуется в формат первого операнда и помещается в местоположение первого операнда, код возврата помещается в разряды 32-63 общего регистра 1, и устанавливается код условия, указывающий, была ли распознана исключительная ситуация. Первый и второй операнды являются подразумеваемыми регистрами с плавающей точкой. Первый операнд находится в FPR0 (в паре с FPR2 для расширения). Второй операнд находится в FPR4 (в паре с FPR6 для расширения).
Управление альтернативным действием при исключительной ситуации
Разряд 57 общего регистра 0 является разрядом управления альтернативным действием при исключительной ситуации. Установка этого средства управления влияет на действие, предпринимаемое в случае исключительных ситуаций вследствие прерывания по переполнению IEЕЕ и потере значимости IEEE. Когда разряд управления альтернативным действием при исключительной ситуации равен нулю, обычным способом сообщается об исключительных ситуациях вследствие прерывания по переполнению IEEE и потере значимости IEEE. Иными словами, соответствующий код исключительной ситуации с данными (DXC) помещается в байт 2 управляющего регистра с плавающей точкой, операция завершается, и происходит программное прерывание вследствие исключительной ситуации с данными. (В ходе программного прерывания DXC сохраняется в местоположении 147). Это называется исключительной ситуацией вследствие прерывания по IEEE при нормальном действии. Когда разряд управления альтернативным действием при исключительной ситуации равен единице, DXC помещается в байт 2 управляющего регистра с плавающей точкой, операция завершается, устанавливается код 2 условия, и выполнение программы продолжается с использованием очередной последовательной команды. (Программное прерывание не происходит, и DXC не сохраняется в местоположении 147). Это называется исключительной ситуацией вследствие прерывания по IEЕЕ при альтернативном действии.
Управление переполнением HFP
Разряд 58 общего регистра 0 является разрядом управления переполнением HFP. Когда разряд управления переполнением HFP равен нулю, сообщается о ситуации переполнения HFP как об исключительной ситуации вследствие недействительной операции IEEE, и должно осуществляться маскирование недействительной операции IEEE. Когда разряд управления переполнением HFP равен единице, сообщается о ситуации переполнения HFP как об исключительной ситуации вследствие переполнения IEEE, и должно осуществляться маскирование переполнения IEEE. Разряд управления переполнением HFP определен только для объектов HFP; если задан какой-либо объект помимо объекта HFP, этот разряд должен быть равен нулю.
Управление потерей значимости HFP
Для объектов HFP разряд 59 общего регистра 0 является разрядом управления альтернативной потерей значимости HFP. Когда разряд управления потерей значимости HFP равен нулю, потеря значимости HFP приводит к тому установлению результата на истинный ноль с тем же знаком, что у источника, и о потере значимости не сообщается. (Результат в этом случае является неточным и подлежит контролю подавления погрешностей). Когда разряд управления потерей значимости HFP равен единице, сообщается о ситуации как об исключительной ситуации вследствие потери значимости IEEE, должно осуществляться маскирование потери значимости IEEE. Разряд 59 общего регистра 0 определен только для объектов HFP и DFP; если задан объект BFP, этот разряд должен быть равен нулю.
Управление предпочтительным шагом квантования (DFP Preferred Quantum Control) (DPQC)
В случае объектов DFP разряд 59 общего регистра 0 является разрядом управления предпочтительным шагом квантования DFP (DPQC). Если при преобразовании системы счисления с использованием объектов DFP полученное значение является неточным, выбирается член группы с наименьшим шагом квантования; если полученное значение является точным, выбор зависит от значения разряда 59 общего регистра 0, т.е. разряда управления предпочтительным шагом квантования DFP (DPQC). Когда полученное значение является точным, а разряд DPQC равен нулю, выбирается член группы с наибольшим шагом квантования. Когда полученное значение является точным, а разряд DPQC равен единице, предпочтительный шаг квантования равен единице, и выбирается член группы с шагом квантования, ближайшим к единице.
Код возврата
Независимо от того, какой код условия установлен, и от того, равен ли разряд проверки единице, 32-разрядный код возврата помещается в разряды 32-63 общего регистра 1; разряды 0-31 общего регистра 1 остаются без изменения. Код возврата также помещается в общий регистр 1, когда происходит программное прерывание из-за исключительной ситуации вследствие прерывания по IEEE, которое выполняется; общий регистр 1 не обновляется, когда происходит программное прерывание из-за исключительной ситуации вследствие прерывания по IEEE, которое подавляется. Соответственно, общий регистр 1 обновляется при программном прерывании из-за исключительных ситуаций вследствие прерывания по переполнению IEEE, потере значимости IEEE и неточности IEEE, но не обновляется при программном прерывании из-за исключительной ситуации вследствие прерывания по недействительной операции IEEE. Если не указано иное, код возврата имеет нулевое значение.
Сохранение знака
В случае преобразования системы счисления с плавающей точкой PFPO результат имеет такой же знак, как источник. Единственное исключение, когда источником является NaN, а объектом является HFP; в этом случае результатом является наибольшее представимое число в целевом формате HFP (Нmax) с установленным знаком плюс.
Предпочтительный шаг квантования
Если в случае преобразования системы счисления с использованием объектов DFP, полученное значение является неточным, выбирается член группы с наименьшим шагом квантования; если полученное значение является точным, выбор зависит от значения разряда 59 общего регистра 0, т.е. разряда управления предпочтительным шагом квантования DFP (DPQC). Когда полученное значение является точным, а разряд DPQC равен нулю, выбирается член группы с наибольшим шагом квантования. Когда полученное значение является точным, а разряд DPQC равен единице, предпочтительный шаг квантования равен единице, и выбирается член группы с шагом квантования, ближайшим к единице.
Преобразование NaN
В случае преобразования между DFP и BFP всегда сохраняется знак NaN, и по возможности сохраняется значение полезной нагрузки, если значение полезной нагрузки источника превышает максимальное значение полезной нагрузки объекта, объект установлен на QNaN по умолчанию, но с таким же знаком, как у источника. Когда прерывания заблокированы, SNaN преобразуется в соответствующий QNaN, и полезная нагрузка по возможности сохраняется; иными словами SNaN(x) преобразуется в QNaN(x), при этом х означает значение полезной нагрузки. В случае DFP могут отображаться как QNaN(0), так и SNaN(0); но для BFP предусмотрено отображение QNaN(0), но не не SNaN(0).
Масштабированное значение и показатель масштабирования со знаком (ө) для PFPO
Когда во время операции преобразования системы счисления с плавающей точкой PFPO происходит прерывание переполнению IEЕЕ или потере значимости IEEE
Ψ=bө
z=g+Ψ,
в которых ө означает показатель масштабирования со знаком, b означает основание системы счисления объекта (2, 10 или 16), Ψ означает коэффициент масштабирования, g означает округленное значение точности, a z означает масштабированное значение. Показатель масштабирования со знаком (ө) выбирается таким образом, чтобы значение масштабированного результата (z) находилось в интервале: 1 [|z|<b]. Значение показателя масштабирования со знаком (ө), рассматриваемое как 32-разрядное двоичное целое число со знаком, помещается в разряды 32-63 общего регистра 1; разряды 0-31 общего регистра 1 остаются без изменения. Масштабированное значение используется как полученное значение и помещается в местоположение результата. В случае объектов DFP выбирается член группы с шагом квантования, ближайшим к масштабированному предпочтительному шагу квантования. (При этом следует отметить, что, поскольку для всех поддерживаемых в настоящее время преобразований, результат всегда является неточным, выбирается член группы с наименьшим шагом квантования). Для объектов BFP отсутствуют избыточные представления, и в группе содержится только один член. Для объектов HFP результат является нормализованным.
Значения HFP
Хотя на входе принимаются ненормализованные значения HFP, все результаты HFP являются нормализованными. Если какой-либо результат HFP будет меньшим, чем наименьшее (по абсолютной величине) представимое нормализованное число, возникает ситуация потери значимости HFP.
Переполнение и потеря значимости HFP при PFPO
В случае объекта HFP операции преобразования системы счисления с плавающей точкой PFPO обработка ситуаций переполнения и потери значимости управляется разрядом управления переполнением HFP и разрядом управления потерей значимости HFP, соответственно.
Переполнение HFP
Ситуация переполнения HFP возникает, когда округленное значение точности превышает по абсолютной величине наибольшее число Нmах точности объекта HFP. Иными словами, когда характеристика нормализованного результата HFP превышает 127, а дробь не равна нулю. Когда разряд управления переполнением HFP равен нулю, сообщается о переполнении HFP как об исключительной ситуации вследствие недействительной операции IEEE, и в регистре FPC должно осуществляться маскирование недействительной операции IEEE. Это называется ситуацией переполнения HFP вследствие недействительной операции IEEE. Когда разряд управления переполнением HFP равен единице, сообщается о переполнении HFP как об исключительной ситуации вследствие переполнения IEEE, и в регистре FPC должно осуществляться маскирование переполнения IEEE. Это называется ситуацией переполнения HFP вследствие переполнения IEEE.
Потеря значимости HFP
Ситуация потери значимости HFP возникает, когда округленное значение точности является ненулевым и меньшим по абсолютной величине, чем наименьшее нормализованное число Hmin точности объекта HFP. Иными словами, когда характеристика нормализованного результата HFP является меньшей нуля, а дробь не равна нулю. Результат устанавливается на истинный ноль с тем же знаком, что у источника. Сообщение о ситуации потери значимости HFP определяется разрядом управления потерей значимости HFP. Тем не менее, в этом случае результат является неточным и определяется разрядами управления для этой ситуации. Когда разряд управления потерей значимости HFP равен нулю, о ситуации потери значимости HFP не сообщается. Когда разряд управления потерей значимости HFP равен единице, сообщается о потере значимости HFP как об исключительной ситуации вследствие потери значимости IEEE, и в регистре FPC должно осуществляться маскирование потери значимости IEEE. Это называется ситуацией потери значимости HFP вследствие потери значимости IEEE.
Команда выполнения функции средства синхронизации
При выполнении компьютерной системой выполняется функция средства синхронизации, заданная кодом функции в общем регистре 0. Устанавливается код условия, указывающий исход функции. В общем регистре 1 содержится адрес блока параметров в запоминающем устройстве. Функции запроса ВФСС помещают информацию в блок параметров; в функциях управления ВФСС используется информация, полученная от блока параметров. С точки зрения других ЦП и канальных программ обращения к операндам блоков параметров и памяти могут являться обращениями с коллективным доступом, выборка блоков из этих местоположений запоминающего устройства необязательно осуществляется параллельно, и последовательность этих доступов или обращений является неопределенной. Двоичные разряды 57-63 общего регистра 0 содержат код функции. Разряд 56 общего регистра 0 должен быть равен нулю; в противном случае распознается исключительная ситуация при нарушении заданных условий. Все остальные разряды общего регистра 0 игнорируются. В общем регистре 1 содержится логический адрес крайнего левого байта блока параметров в запоминающем устройстве. В режиме 24-разрядной адресации содержимое двоичных разрядов 40-63 общего регистра 1 образует адрес, а содержимое двоичных разрядов 0-39 игнорируются. В режиме 31-разрядной адресации содержимое двоичных разрядов 33-63 общего регистра 1 образует адрес, а содержимое двоичных разрядов 0-32 игнорируются. В режиме 64-разрядной адресации содержимое двоичных разрядов 0-63 общего регистра 1 образует адрес. Функция запроса доступных функций (Query Available Functions) ВФСС (ВФСС-QAF) обеспечивает средство индикации доступности остальных функций. Функция ВФСС-QAF указывает, установлена ли функция для программы, действующей в супервизорном режиме на уровне базовой машины.
ВФСС-QAF
Используемый для функции блок параметров имеет следующий формат. В блоке параметров сохраняется 128-разрядное поле. Разряды 0-127 этого поля соответствуют кодам 0-127 функции, соответственно, команды ВФСС. Когда какой-либо разряд равен единице, установлена соответствующая функция; в противном случае, функция не установлена. Разряды 0-3 pb.w1 установлены на единицы, поскольку эти разряды отображают коды 0-3 функции, которые на данный момент присвоены функциям запроса. Разряды 4-31 pb.w1 зарезервированы для дополнительных функций запроса. Разряды 0-3 pb.w3 установлены на единицы, поскольку эти разряды отображают коды 64-67 функции, которые на данный момент присвоены функциям управления. Разряды 4-31 pb.w3 зарезервированы для дополнительных функций управления. Слова pb.w2 и pb.w4 блока параметров зарезервированы для будущих расширений.
Запрос смещения TOD ВФСС (Query TOD Offset) (ВФСС-QTO)
Возвращаемое 64-разрядное значение показания физических часов (pb.Tu) является значением показания физических часов на момент самого недавнего события обновления смещения TOD. Возвращаемое 64-разрядное значение смещения TOD (pb.d) указывает значение смещения TOD (d). Оно является текущим значением, прибавляемым к значению Tr (физических часов), чтобы получить значение Tb (часов TOD базовой машины); то есть Tb=Tr+pb.d. Возвращаемое 64-разрядное значение смещения логических часов TOD (pb.dl) указывает текущее значение, прибавляемое к значению Tr (физических часов), чтобы получить значение Tc (логических часов TOD для текущего уровня выполнения ЦП); то есть Tc=Tr+pb.dl. Соответственно, при выполнении на уровне базовой машины pb.dl=pb.d=d; при выполнении на уровне логического раздела прибавляется разность Тр-Tb между началом отсчета времени (Dp), в результате чего pb.dl=d+Dp; а при выполнении на уровне виртуальной машины также прибавляется разность Tv-Tp между началом отсчета времени (Dv), в результате чего pb.dl=d+Dp+Dv. При выполнении сложения для каждого из этих уравнений игнорируются переносы из двоичного разряда 0, если они имеют место. Возвращаемое 64-разрядное значение разности между началом отсчета TOD (pb.ed) является разностью между началом отсчета TOD для текущего уровня выполнения ЦП. При выполнении на уровне базовой машины это значение равно нулю; при выполнении на уровне логического раздела этим значением является разность Тр-Tb между началом отсчета времени (Dp); при выполнении на уровне виртуальной машины этим значением является разность Tv-Tp между началом отсчета времени (Dv).
Информация управления запросом (Query Steering Information) ВФСС (ВФСС-QSI)
Возвращаемое 64-разрядное значение показания физических часов (pb.Tu) является значением показания физических часов на момент самого недавнего события обновления смещения TOD. В остальных полях содержатся значения регистров старого события и нового события.
Запрос физических часов (Query Physical Clock) ВФСС (ВФСС-QPT)
Возвращаемое 64-разрядное значение показания физических часов (http://pb.Tr) является текущим значением показания физических часов. В качестве значений крайних правых двоичных разрядов, которые не используются физическими часами, сохраняются нули. При выполнении ВФСС-QPT в одном и том же или различных ЦП во время работы часов возвращаемые значения показаний часов необязательно различаются.
Корректировка смещения TOD (Adjust TOD Offset) ВФСС (ВФСС-АТО)
К основному значению смещения для следующего события прибавляется получаемое от блока параметров 64-разрядное значение (pb.a), рассматриваемое как двоичное число без знака. При выполнении этого сложения игнорируется перенос из двоичного разряда 0, если он имеет место. Эффект не является немедленным и запланирован таким образом, чтобы совпадать со следующим событием обновления смещения TOD. Если следующее событие уже запланировано, но еще не активизировано, сумма pb.a и new.b заменяет new.b, и другое действие не предпринимается. Если следующее событие не запланировано (то есть регистры нового события являются текущим событием), регистры нового события сохраняются в регистрах старого события, планируется новое событие (что делает регистры старого события текущим событием). Устанавливается время начала нового события (new.s), соответствующее показанию физических часов при следующем событии обновлении смещения TOD, и устанавливается основное значение смещения для нового события (new.b), соответствующее сумме pb.a и значению смещения TOD в тот же самый момент, вычисленному с использованием текущих параметров управления. Эта функция не изменяет скорость управления, и, если планируется новое событие, скорости тонкого и грубого управления остаются такими же, как и текущие значения. Выполнение функции корректировки смещения TOD блокируется таким образом, чтобы все содержимое регистра смещения TOD выглядело обновляемым параллельно и одновременно с точки зрения всех ЦП в конфигурации. Тем не менее, доступ к логическим часам TOD (часам TOD базовой машины, часам TOD логического раздела, и часам TOD виртуальной машины) со стороны ЦП в конфигурации искусственно не задерживается; таким образом, внесение корректировки большой величины без знака может приводить к изменению в отрицательную сторону и создавать видимость хода назад логических часов TOD.
Установка смещения TOD (Set TOD Offset) ВФСС (ВФСС-STO) 64-разрядное значение (pb.d), полученное от блока параметров, заменяет значение смещения TOD. При выполнении на уровне базовой машины эффект не является немедленным и запланирован таким образом, чтобы совпадать со следующим событием обновления смещения TOD. Если следующее событие уже запланировано, но еще не активизировано, pb.d заменяет new.b, и другое действие не предпринимается. Если следующее событие не запланировано (то есть регистры нового события являются текущим событием), регистры нового события сохраняются в регистрах старого события, и планируется новое событие (что делает регистры старого события текущим событием). Устанавливается время начала нового события (new.s), соответствующее показанию физических часов при следующем событии обновлении смещения TOD, и устанавливается основное значение смещения для нового события (new.b), соответствующее значению pb.d. Эта функция не изменяет скорость управления, и, если планируется новое событие, скорости тонкого и грубого управления остаются такими же, как и текущие значения. При выполнении на уровне логического раздела или виртуальной машины функция может имитироваться гипервизором, и при этом она оперирует с разностью между началом отсчета TOD для текущего уровня выполнения ЦП (Dp или Dv, соответственно); новое событие не планируется, а эффект изменения является немедленным. Выполнение функции установки смещения TOD блокируется таким образом, чтобы все содержимое регистра смещения TOD выглядело обновляемым параллельно и одновременно с точки зрения всех ЦП в конфигурации. Тем не менее, доступ к логическим часам TOD (часам TOD базовой машины, часам TOD логического раздела, и часам TOD виртуальной машины) со стороны ЦП в конфигурации искусственно не задерживается; таким образом, замена смещения TOD меньшим значением может создавать видимость хода назад логических часов TOD.
Установка скорости тонкого управления (Set Fine-Steering) ВФСС (ВФСС-SFS)
32-разрядное значение (pb.f), полученное от блока параметров, становится значением скорости тонкого управления для следующего события. Эффект не является немедленным и запланирован таким образом, чтобы совпадать со следующим событием обновления смещения TOD. Если следующее событие уже запланировано, но еще не активизировано, pb.f заменяет new.f, и другое действие не предпринимается. Если следующее событие не запланировано (то есть регистры нового события являются текущим событием), регистры нового события сохраняются в регистрах старого события, и планируется новое событие (что делает регистры старого события текущим событием). Устанавливается время начала нового события (new.s), соответствующее показанию физических часов при следующем событии обновлении смещения TOD, и устанавливается основное значение смещения для нового события (new.b), соответствующее значению смещения TOD в тот же самый момент, вычисленному с использованием текущих параметров управления. Устанавливается скорость тонкого управления для следующего события (new.f), соответствующая значению pb.f, а скорость грубого управления для нового события соответствует текущему значению. Когда начинает действовать новое событие, блокируется доступ к логическим часам TOD со стороны ЦП в конфигурации, чтобы гарантировать, что показания логических часов TOD выглядят едиными и монотонно возрастающими для всех программ.
Установка скорости грубого управления (Set Gross-Steering) ВФСС (ВФСС-SGS)
32-разрядное значение (pb.g), полученное от блока параметров, становится значением скорости грубого управления для следующего события. Эффект не является немедленным и запланирован таким образом, чтобы совпадать со следующим событием обновления смещения TOD. Если следующее событие уже запланировано, но еще не активизировано, pb.g заменяет new.g, и другое действие не предпринимается. Если следующее событие не запланировано (то есть регистры нового события являются текущим событием), регистры нового события сохраняются в регистрах старого события, и планируется новое событие (что делает регистры старого события текущим событием). Устанавливается время начала нового события (new.s), соответствующее показанию физических часов при следующем событии обновлении смещения TOD, и устанавливается основное значение смещения для нового события (new.b), соответствующее значению смещения TOD в тот же самый момент, вычисленному с использованием текущих параметров управления. Устанавливается скорость грубого управления для следующего события (new.g), соответствующая значению new.g, а скорость тонкого управления для нового события соответствует текущему значению. Когда начинает действовать новое событие, блокируется доступ к логическим часам TOD со стороны ЦП в конфигурации, чтобы гарантировать, что показания логических часов TOD выглядят едиными и монотонно возрастающими для всех программ.
Средство блокирования команды
Рассмотрим фиг.8, на которой проиллюстрирована функция средства блокирования команды уровня виртуальной архитектуры (Virtual Architecture Level) (VAL) в VM. Каждая команда, которая должна выполняться в VM (как показано в строке "Команды" в столбце "Запоминающее устройство"), содержит код операции. В некоторых случаях реализации кодом операции является одно поле в команде 901, 902, 903, 904. В других случаях реализации коды операции могут быть распределены среди нескольких полей команды 905 (OpCode||OC), 906 (OpCode||OpCode). Предпочтительно схемы, микрокод или их сочетание определяет на основании кода операции, поддерживалась ли текущей виртуальной машиной команда, которая должна выполняться. Если она не поддерживалась, указывается программное прерывание, например, исключительная ситуация в процессе выполнения программы, и выполнение команды подавляется.
В одном из случаев реализации код операции команды, которая должна выполняться, служит указателем в таблице 907 кодов операций для обнаружения записи, соответствующей коду операции. Обнаруженная запись содержит код, указывающий уровень машины, поддерживаемый кодом операции. В другом случае реализации каждая виртуальная машина имеет таблицу кодов операций, и запись в таблице указывает, поддерживался ли код операции виртуальной машиной.
Как показано на фиг.9, код (уровень машины (ML)) 1002, извлеченный из таблицы 907, на шаге 1005 сравнивается с записью 1008 описания состояний (IBC) из таблицы 1004 описания состояний виртуальной машины, и, если код 1002 уровня машины превышает IBC 1008, на шаге 1007 команда выполняется нормально, в противном случае попытка выполнения приводит к возникновению исключительной ситуации 1006 в процессе выполнения программы. В другом варианте осуществления в таблице 907 кодов операций могут использоваться поля команды, дополняющие поля кода операции или отличающиеся от поля кода операции. Например, код операции в более ранней архитектуре вычислительной машины может иметь зарезервированные поля (устанавливаемые на 0 или игнорируемые), которые используются на более новых уровнях архитектуры для обеспечения новой функции. В одном из вариантов осуществления эти разряды с кодами операций используются в таблице 907 кодов операций. В другом варианте осуществления в таблице 907 кодов операций могут иметься поля помимо поля ML, используемого для указания разрешенного использования зарезервированных разрядов в соответствующей команде. Например, когда в команде содержится 4 резервных разряда, в таблице ML может содержаться запись 0000, если все разряды должны быть равны 0 или 1 в случае выборочных разрядов, при этом 1 указывает, что соответствующие ранее зарезервированные разряды поля могут быть равны 0 или 1 (что допускает ввод новой функции команды для VM).
Средство проверки/запроса команды
Если установлено средство блокирования функции средства проверки/запроса команды (фиг.10), в одном из вариантов осуществления запись 1001 в таблице кодов операций может дополнительно содержать поле (FCx) 1003 кода функции (или указатель таблицы 1108 кодов функций). Поле 1003 кода функции (или запись 1107 в таблице 1108 кодов функций) на шаге 1103 сравнивается с выполняемым кодом 1102 функции. Если код функции совпадает, на шаге 1105 команде разрешается использовать код функции, если на шаге 1103 установлено, что код функции не совпадает, выполнение команды вызывает программное прерывание, такое как исключительная ситуация 1104 в процессе выполнения программы или исключительная ситуация при нарушении заданных условий (проверка программы).
Как показано на фиг.11, если установлено средство блокирования проверки/запроса функции средства проверки/запроса команды, при выполнении любой команды 1109 запроса с целью определения установленной функции команды, на шаге 1105 возвращаются только коды функций, разрешенные виртуальной машиной. В одном из вариантов осуществления для виртуальной машины предусмотрена таблица 1108 значащих разрядов, которая используется виртуальной машиной для ответа на такие запросы. В другом варианте осуществления для виртуальной машины предусмотрена маска (не показанная) для выполнения операции "И" с установленными кодами функций главной машины и получения результата в виде разрешенных кодов 1107 функций команды в VM.
Рассмотрим фиг.8, на которой проиллюстрированы примеры форматов команд в системе z/Architecture. Формат 901 иллюстрирует 2-байтовый формат, в котором код операции (Op) занимает старший байт, а поля R1 и R2 общего регистра занимают соответствующие 4 разряда остающегося байта. Формат 902 иллюстрирует 2-байтовый формат команды, содержащей только код операции. Формат 903 иллюстрирует 4-байтовую (длиной в одно слово) команду, содержащую 1-байтовый код операции (Op), за которым следуют 3 поля (Rl, X2 и B2) регистра, а затем непосредственное поле, называемое полем (D2) смещения. Формат 904 иллюстрирует 4-байтовую команду, содержащую 4-байтовый код операции (Op), за которым следует 4-разрядное поле (В2) регистра, а затем непосредственное поле, называемое полем (D2) смещения. Формат 905 иллюстрирует 4-байтовую команду, содержащую 2-байтовый код операции (Op), за которым следует 4-разрядная маска M1, 4-разрядное расширение кода (Op) операции, зарезервированное 4-разрядное поле и 12-разрядное непосредственное поле (12). Формат 906 иллюстрирует 6-байтовую команду, содержащую 1-разрядный код операции (Op), за которым следуют 3 поля (R1, Х2 и В2) регистра, затем непосредственное поле, называемое полем (DL2) смещения, а за ним 8-разрядное непосредственное (DH2) поле 8-разрядное расширение кода (Op) операции.
Как показано на фиг.8 и 9, в одном из вариантов осуществления при вызове логическим процессором виртуальной машины команды для выполнения осуществляется поиск в таблице 907 кодов операций с использованием кода(-ов) операции команды качестве аргумент поиска. Если на шаге 1001 обнаружена запись для команды, в записи содержится информация 1002, 1003 для определения, разрешающая команду информации. В одном из предпочтительных вариантов осуществления в записи содержится поле 1002, в котором задан код (ML), указывающий уровень машины архитектуры, поддерживающей команду. Для каждой VM предусмотрено описание 1004 состояний. В описании состояний содержится поле (IBC) 1008, которое отображает уровень машины архитектуры, которую должна имитировать VM. Если на шаге 1005 установлено, что уровень машины архитектуры, поддерживающей команду (ML), является более высоким, чем уровень машины архитектуры, которую должна имитировать VM (IBC), сообщается об исключительной ситуации в процессе выполнения программы (проверке программы), и в одном из вариантов осуществления выполнение команды может подавляться. С другой стороны, если уровень машины архитектуры, поддерживающей команду (ML), не является более высоким, чем уровень машины архитектуры, которую должна имитировать (IBC), выполнение команды разрешается.
В некоторых средах предусмотрены команды, способные выполнять любую из множества функций (такие как описанная выше команда шифрования сообщения). Выбор функции командой может осуществляться путем указания кода функции (FC), отображающего функцию. Код функции может быть неявно задан командой или в прямой форме задан, например, разрядами или полями команды. В некоторых случаях коды функции могут быть изначально реализованы (0-3, например) на каком-либо уровне архитектуры вычислительной машины, а дополнительные коды функции могут добавляться на последующих уровнях архитектуры вычислительной машины. VM может обладать способностью разрешать только коды функции для выполнения функций на более раннем уровне архитектуры.
Как показано на фиг.10, это может осуществляться путем включения поля (FCx) 1003 кода функции в запись 1001 в таблице кодов операций. Когда предстоит выполнение команды, в поле FCx 1003 задан список возвращаемых допустимых кодов функций, а не фактических кодов функций, поддерживаемых главным процессором. В одном из вариантов осуществления поле FCx 1003 в записи в таблице кодов операций конкатенировано с полем IBC 1008 и служит указателем в таблице 1108 FCx для обнаружения записи, которая содержит разрешенные коды (FC) 1107 функций. Разрешенные коды FC 1107 сравниваются с FC, заданным командой 1102 (в команде шифрования сообщения разряды 1102 общего регистра 0 1101 содержат заданный FC 1102). Если на шаге 1103 установлено, что значение FC разрешено 1105, разрешается нормальное выполнение функции, отображенной разрядами FC. Если на шаге 1103 установлено, что значение FC не разрешено 1104, наступает событие исключительной ситуации в процессе выполнения программы (проверка программы). Аналогичным образом при выполнении операции 1109 запроса/проверки функции (такой как операция запроса команды шифрования сообщения), разряды FCX в записи 1003 в таблице кодов операций конкатенируются на шаге 1106 с разрядами IBC 1008 и служат указателем в таблице FCX для обнаружения FC 1107, разрешенных для команды, код операции которой указан в записи 1001 в таблице кодов операций. Затем разрешенные FC возвращаются на шаге 1105 в местоположение, заданное операцией запроса/проверки функции.
В одном из вариантов осуществления, когда разряды FCX равны 0, доступ к таблице 1108 FCx не осуществляется, и любой код функции, указанный соответствующей командой, используется без преобразования.
В одном из вариантов осуществления в других модификациях структуры команд может использоваться такой же механизм, который описан применительно к кодам функций. В этом случае, например, команда 905 на уровне архитектуры содержит зарезервированные разряды (0000) между полем расширения кода операции и полем 12. Зарезервированные разряды предпочтительно проверяются на наличие нулей, чтобы гарантировать надлежащее выполнение команды в среде, в которой ненулевые разряды поддерживают еще не поддерживаемую функцию. В более новой архитектуре реализована новая функция с использованием одного или нескольких из зарезервированных разрядов для идентификации новой функции. В одном из примеров эти 4 зарезервированные разряды (Res) могут служить указателем в таблице 1108 FCx, чтобы определять, поддерживаются ли они, как показано на фиг.10 в случае разрядов 1103 FC. В этом случае для кодов функций осуществляется конкатенация 0||IBC||FCx, а для проверки 1103 полномочий новой функции - конкатенация 1||IBC||FCx. Вместо сравнения FC 1102 с разрешенными FC 1107, поле Res команды 905 проверяется на соответствие разрешенным разрядам 1107 FCS, чтобы на шаге 1103 определить, разрешена ли функция.
В другом варианте осуществления поле Res команды 905 может конкатенироваться, как если бы оно являлось третьим расширением кодов операций, чтобы служить указателем в таблице 907 кодов операций, определяющим, разрешена ли функция, введенная с использованием поля.
В процессе вызова команды или после этого ЦП может определять некоторые атрибуты команды, например, число операндов, тип операндов (запоминающее устройство или регистр), требования выравнивания операндов и требования авторизации. В эмулирующей среде это может определяться путем простого поиска по справочной таблице с использованием кода операции в качестве указателя; в высокоэффективном ЦП процедура определения может быть встроена в схему декодирования команд процессора.
Средство уровня виртуальной архитектуры вносит дополнительный атрибут, соответствующий каждой команде: уровень машины, на котором команда была впервые введена в архитектуру. Этим уровнем машины может являться закодированная числовая точка в континууме (например, 10.2, что означает машину 10 поколения на втором уровне аппаратно-программного обеспечения) или просто определенная величина относительно самого недавнего уровня машины (например, 2 [или -2], что означает, что команда была введена за два поколения машин до текущей машины).
Как показано на фиг. 12, в одном из вариантов осуществления выбранные установленные функции многофункциональной команды являются скрытыми, а многофункциональная команда рассчитана на выполнение функции из множества установленных функций, при этом скрывание включает установку на шаге 1201 значения, регулирующего доступность установленных функций для многофункциональной команды главного компьютера, содержащего один или несколько процессоров, имеющих первое множество упомянутых установленных функций многофункциональной команды, в которое входит одна или несколько первых установленных функций и одна или несколько вторых установленных функций, и выполнение на шаге 1202 многофункциональной команды, содержащей поле кода операции, включающее, если в многофункциональной команде задана функция запроса, выполнение функции запроса с целью определения установленных функций, доступных для многофункциональной команды, выполнение функции запроса с использованием значения для определения одной или нескольких установленных функций и сохранение на шаге 1203 результирующего значения, указывающего на то, что одна или несколько первых установленных функций недоступны для многофункциональной команды.
Как показано на фиг. 13, в одном из вариантов осуществления гипервизор главного компьютера на шаге 1301 устанавливает значение для виртуальной машины главного компьютера, которая содержит один или несколько логических процессоров, закрепленных за одним или несколькими физическими процессорами, имеющими одну или несколько вторых установленных функций многофункциональной команды, которая выполняется в виртуальной машине логическим процессором из одного или нескольких логических процессоров посредством физического процессора из одного или нескольких физических процессоров.
В одном из вариантов осуществления одна или несколько вторых установленных функций определяется на шаге 1302 на основании кода операции многофункциональной команды.
Как показано на фиг.14, в одном из вариантов осуществления гипервизор, установивший на шаге 1201 регулирующее значение в виртуальной машины, на шаге 1401 устанавливает другое значение, регулирующее доступность установленных функций для многофункциональной команды, выполняемой в другой виртуальной машине главной компьютерной системы, и на шаге 1402 в другой виртуальной машине другим логическим процессором из одного или нескольких других логических процессоров выполняется другая многофункциональная команда, в которой задана другая функция запроса, которая выполняется с целью определения установленных функций, доступных для другой многофункциональной команды, при этом выполнение другой функции запроса включает использование другого значения с целью определения одной или нескольких третьих установленных функций и сохранение на шаге 1403 другого результирующего значения, указывающего на то, что одна или несколько из одной или несколько третьих установленных функций недоступны для другой многофункциональной команды.
В одном из вариантов осуществления сохраненное результирующее значение является содержащей значащие разряды величиной, в которой каждый двоичный разряд соответствует определенной функции, при этом разряд, равный 1, указывает, что соответствующая функция установлена.
Как показано на фиг.15, в одном из вариантов осуществления функция запроса определяется заданным многофункциональной командой кодом 1501 функции или заданным многофункциональной командой разрядом 1502 проверки.
Как показано на фиг.16, в одном из вариантов осуществления многофункциональной командой является команда системы z/Architecture, состоящая из любого из следующего 1601: криптографической команды, команды выполнения функции средства синхронизации (ВФСС), команды выполнения операции с плавающей точкой или команды выполнения заблокированной операции, при этом криптографической командой является любое из следующего: команда шифрования сообщения, команда вычисления промежуточного сообщения, команда вычисления последнего сообщения, команда вычисления профиля последнего сообщения, команда вычисления кода аутентификации сообщения, а в многофункциональной команде задана функция запроса; если многофункциональной командой является криптографическая команда или команда ВФСС, на шаге 1602 определяется заданный многофункциональной командой код выполняемой функции, содержащий функцию 1605 запроса, при этом сохраненным на шаге 1604 результирующим значением на основании регулирующего значения является множество разрядов, каждый из которых указывает, поддерживается ли соответствующий код функции; если многофункциональной командой является криптографическая команда или команда ВФСС, определяется заданный многофункциональной командой код выполняемой функции, не содержащий функцию 1605 запроса, и выполняется криптографическая функция или функция ВФСС в соответствии с полученным кодом функции; если на шаге 1701 установлено, что многофункциональной командой является команда выполнения заблокированной операции или команда выполнения операции с плавающей точкой, а заданный многофункциональной командой разряд 1702 проверки равен 1, на шаге 1704 определяется, установлен ли заданный многофункциональной командой код функции на основании регулирующего значения, при этом сохраненным результирующим значением 1704 является значение кода условия; и, если многофункциональной командой является команда выполнения заблокированной операции или команда выполнения операции с плавающей точкой, а заданный многофункциональной командой разряд 1702 проверки равен 0, на шаге 1703 выполняется функция с плавающей точкой или заблокированная операция в соответствии с полученным кодом функции.
В одном из вариантов осуществления, если в многофункциональной команде задана не являющаяся функцией запроса функция из первого множества упомянутых установленных функций, и не являющаяся функцией запроса функция является одной из вторых установленных функций, выполняется не являющаяся функцией запроса функция, а, если не являющаяся функцией запроса функция не является одной из вторых установленных функций, выполнение не являющейся функцией запроса функции блокируется.
Вышеизложенное может быть полезным для понимания терминологии и структуры вариантов осуществления компьютерной системы. Эти варианты осуществления могут быть не ограничены системой z/Architecture или приведенным ее описанием. Варианты осуществления с использованием описанных идей могут выгодно применяться в других архитектурах вычислительных машин других изготовителей.
название | год | авторы | номер документа |
---|---|---|---|
СРЕДСТВО ФУНКЦИОНАЛЬНОЙ ВИРТУАЛИЗАЦИИ ДЛЯ БЛОКИРОВКИ КОМАНДНОЙ ФУНКЦИИ МНОГОФУНКЦИОНАЛЬНОЙ КОМАНДЫ ВИРТУАЛЬНОГО ПРОЦЕССА | 2010 |
|
RU2565514C2 |
УВЕЛИЧЕНИЕ ЧИСЛА ДОСТУПНЫХ ДЛЯ КОМАНД РЕГИСТРОВ ОБЩЕГО НАЗНАЧЕНИЯ | 2010 |
|
RU2562430C2 |
СРЕДСТВО РАЗДЕЛЕННОЙ ЗАГРУЗКИ/СОХРАНЕНИЯ И КОМАНДА ДЛЯ НЕГО | 2010 |
|
RU2554546C2 |
КОМАНДЫ ДЛЯ ПОДДЕРЖКИ ОБРАБОТКИ ШИФРОВАННОГО СООБЩЕНИЯ | 2004 |
|
RU2334268C2 |
СПОСОБ И СИСТЕМА ДЛЯ УПРАВЛЕНИЯ ВЫПОЛНЕНИЕМ ВНУТРИ ВЫЧИСЛИТЕЛЬНОЙ СРЕДЫ | 2012 |
|
RU2577487C2 |
ОБРАБОТКА УПРАВЛЯЮЩЕЙ КОМАНДЫ АУТЕНТИФИКАЦИИ СООБЩЕНИЯ ДЛЯ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ ДАННЫХ | 2004 |
|
RU2327204C2 |
СОХРАНЕНИЕ/ВОССТАНОВЛЕНИЕ ВЫБРАННЫХ РЕГИСТРОВ ПРИ ТРАНЗАКЦИОННОЙ ОБРАБОТКЕ | 2012 |
|
RU2562424C2 |
БЛОК ДИАГНОСТИКИ ТРАНЗАКЦИЙ | 2012 |
|
RU2571397C2 |
ВЫПОЛНЕНИЕ ВЫНУЖДЕННОЙ ТРАНЗАКЦИИ | 2012 |
|
RU2549112C2 |
ФИЛЬТРАЦИЯ ПРОГРАММНОГО ПРЕРЫВАНИЯ В ТРАНЗАКЦИОННОМ ВЫПОЛНЕНИИ | 2012 |
|
RU2568923C2 |
Изобретение относится к области команд процесса компьютерной системы. Техническим результатом является оптимизация выполнения многофункциональных команд в разных машинах. Раскрыто скрывание выборочной установленной функции многофункциональной команды таким образом, что даже при способности процессора выполнять скрытую установленную функцию доступность скрытой функции скрывается, так что если многофункциональная команда запрашивает доступность функции, как об установленных функциях сообщается только о не скрытых функциях. 2 н. и 6 з.п. ф-лы, 21 ил., 5 табл.
1. Способ скрывания выбранных установленных функций многофункциональной команды, рассчитанной на выполнение определенной функции из множества установленных функций, включающий:
установку (1201) значения, регулирующего доступность установленных функций для многофункциональной команды (901-906) главного компьютера (50), содержащего один или несколько процессоров (106), имеющих первое множество упомянутых установленных функций многофункциональной команды, в которое входит одна или несколько первых установленных функций и одна или несколько вторых установленных функций, и
выполнение многофункциональной команды, содержащей поле кода операции, причем упомянутое выполнение включает:
осуществляемое в ответ на задание многофункциональной командой функции запроса выполнение (1202) этой функции запроса с целью определения установленных функций, доступных для многофункциональной команды,
при этом выполнение функции запроса включает использование указанного значения для определения одной или нескольких вторых установленных функций,
при этом выполнение функции запроса включает сохранение (1203) результирующего значения, указывающего на то, что одна или несколько первых установленных функций недоступны для многофункциональной команды, и
осуществляемое в ответ на задание многофункциональной командой функции из первого множества упомянутых установленных функций, не являющейся функцией запроса, выполнение этой не являющейся функцией запроса функции, когда эта не являющаяся функцией запроса функция является одной из вторых установленных функций, и блокирование выполнения не являющейся функцией запроса функции, когда эта не являющаяся функцией запроса функция не является одной из вторых установленных функций.
2. Способ по п. 1, в котором гипервизор главного компьютера (50) устанавливает значение для виртуальной машины главного компьютера, которая содержит один или несколько логических процессоров, закрепленных за одним или несколькими физическими процессорами, имеющими одну или несколько вторых установленных функций многофункциональной команды, которая выполняется в виртуальной машине логическим процессором из одного или нескольких логических процессоров посредством физического процессора из одного или нескольких физических процессоров.
3. Способ по п. 2, в котором определение одной или нескольких вторых установленных функций основано на коде операции многофункциональной команды.
4. Способ по п. 2, дополнительно включающий:
установку (1301) гипервизором другого значения, регулирующего доступность установленных функций для многофункциональной команды, выполняемой в другой виртуальной машине системы главного компьютера (50), и
выполнение другой многофункциональной команды в другой виртуальной машине другим логическим процессором из одного или нескольких других логических процессоров,
осуществляемое в ответ на задание другой многофункциональной командой другой функции запроса выполнение этой другой функции запроса с целью определения (1302) установленных функций, доступных для другой многофункциональной команды,
при этом выполнение другой функции запроса включает использование другого значения для определения одной или нескольких третьих установленных функций, и
при этом выполнение другой функции запроса включает сохранение другого результирующего значения, указывающего на то, что одна или несколько из одной или нескольких третьих установленных функций недоступны для многофункциональной команды.
5. Способ по п. 2, в котором сохраненное результирующее значение является содержащей значащие разряды величиной, в которой каждый двоичный разряд соответствует определенной функции, при этом разряд, равный 1, указывает, что соответствующая функция установлена.
6. Способ по п. 2, в котором функция запроса определяется заданным многофункциональной командой кодом (1501) функции или заданным многофункциональной командой разрядом (1502) проверки.
7. Способ по п. 6, в котором многофункциональной командой (1601) является команда системы z/Architecture, состоящая из любого из следующего: криптографической команды, команды выполнения функции средства синхронизации (ВФСС), команды выполнения операции с плавающей точкой или команды выполнения заблокированной операции, при этом криптографической командой является любое из следующего: команда шифрования сообщения, команда шифрования сообщения со сцеплением, команда вычисления профиля промежуточного сообщения, команда вычисления профиля последнего сообщения, команда вычисления кода аутентификации сообщения, а многофункциональная команда, задающая функцию запроса, включает:
если многофункциональной командой является криптографическая команда или команда ВФСС, получение заданного многофункциональной командой кода выполняемой функции, являющейся функцией запроса, при этом сохраненным результирующим значением (1604) является множество разрядов, каждый из которых указывает, поддерживается ли соответствующий код функции, и
если многофункциональной командой является криптографическая команда или команда ВФСС, получение заданного многофункциональной командой кода выполняемой функции, не являющейся функцией запроса, и выполнение (1603) криптографической функции или функции ВФСС в соответствии с полученным кодом функции, и
если многофункциональной командой является команда выполнения заблокированной операции или команда выполнения операции с плавающей точкой, а заданный многофункциональной командой разряд проверки равен 1, определение (1704) того, что установлен заданный многофункциональной командой код функции, при этом сохраненным результирующим значением является значение кода условия; и
если многофункциональной командой является команда выполнения заблокированной операции или команда выполнения операции с плавающей точкой, а заданный многофункциональной командой разряд проверки равен 0, выполнение (1703) функции с плавающей точкой или заблокированной операции в соответствии с полученным кодом функции.
8. Компьютерная система для скрывания выбранных установленных функций многофункциональной команды, рассчитанной на выполнение определенной функции из множества установленных функций, содержащая:
память (105),
процессор (106), связанный с памятью и содержащий блок (305) вызова команд для вызова команд из памяти и один или несколько блоков (307) выполнения для выполнения вызванных команд,
при этом компьютерная система сконфигурирована для осуществления способа по любому из пп. 1-7.
Способ обработки целлюлозных материалов, с целью тонкого измельчения или переведения в коллоидальный раствор | 1923 |
|
SU2005A1 |
Способ приготовления мыла | 1923 |
|
SU2004A1 |
Способ измерения параметров микрофона | 1943 |
|
SU67115A1 |
US 6076156 A, 13.06.2000 | |||
КОМАНДЫ ДЛЯ ПОДДЕРЖКИ ОБРАБОТКИ ШИФРОВАННОГО СООБЩЕНИЯ | 2004 |
|
RU2334268C2 |
Авторы
Даты
2015-12-20—Публикация
2010-11-08—Подача