Команда векторного типа контрольной суммы

Иллюстрации

Показать все

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

Реферат

Предпосылки создания изобретения

[0001] Один или несколько аспектов изобретения относятся в общем к обработке в вычислительной среде, в частности, к векторной обработке в такой среде.

[0002] Обработка в вычислительной среде включает управление работой одного или нескольких центральных процессорных устройств (ЦПУ). Обычно действие ЦПУ управляется командами, хранящимися запоминающем устройстве. Команды могут иметь различный формат и часто указывают регистры, используемые при выполнении различных операций.

[0003] В зависимости от архитектуры ЦПУ могут использоваться различные типы регистров, в том числе, например, регистры общего назначения, регистры специального назначения, регистры с плавающей запятой и/или векторные регистры. С различными типами команд могут использоваться различные типы регистров. Например, регистры с плавающей запятой хранят числа с плавающей запятой, используемые командами с плавающей запятой, векторные регистры содержат данные для векторной обработки, выполняемой командами типа "одиночный поток команд, множественный поток данных" (англ.: Single Instruction, Multiple Data, сокращенно SIMD), в том числе командами векторного типа.

Раскрытие изобретения

[0004] Для устранения недостатков уровня техники предложен машиночитаемый носитель данных (машиночитаемая среда хранения данных), в котором хранятся машинные команды, исполняемые схемой обработки для осуществления способа исполнения машинной команды в центральном процессорном устройстве. Указанный способ включает: получение процессором для исполнения машинной команды, которая определена для исполнения компьютером в соответствии с архитектурой компьютера и содержит: по меньшей мере одно поле кода операции для предоставления кода операции, идентифицирующего операцию векторного типа контрольной суммы; поле первого регистра, используемое для обозначения первого регистра, содержащего первый операнд; поле второго регистра, используемое для обозначения второго регистра, содержащего второй операнд; и исполнение машинной команды, включающее: суммирование набора элементов второго операнда друг с другом для получения первого результата, включающее выполнение одной или нескольких операций сложения с циклическим (круговым) переносом; осуществляемое на основе выполнения операции сложения с циклическим переносом и формирования суммы добавление переноса из избранной позиции суммы, если таковой имеется, к выбранной позиции в выбранном элементе первого операнда; и помещение первого результата в выбранный элемент первого операнда.

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

[0006] С помощью способов одного или нескольких аспектов изобретения реализуются дополнительные особенности и преимущества. В данной заявке подробно описываются прочие варианты осуществления и аспекты изобретения, они рассматриваются как часть формулы изобретения.

Краткое описание чертежей

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

на фиг. 1 - схема примера вычислительной среды, в состав которой могут входить и в которой могут использоваться один или несколько аспектов изобретения,

на фиг. 2А - схема другого примера вычислительной среды, в состав которой могут входить и в которой могут использоваться один или несколько аспектов изобретения,

на фиг. 2Б - более детальная схема запоминающего устройства по схеме фиг. 2А,

на фиг. 3 - схема примера файла регистров,

на фиг. 4А - схема примера формата команды векторного типа непосредственной проверки класса данных с плавающей запятой (англ.: Vector Floating Point Test Data Class Immediate),

на фиг. 4Б - пример значений двоичных разрядов третьего операнда команды векторного типа непосредственной проверки класса данных с плавающей запятой согласно фиг. 4А,

на фиг. 4В - схема варианта осуществления процедуры, связанной с командой векторного типа непосредственной проверки класса данных с плавающей запятой согласно фиг. 4А,

на фиг. 4Г - схема примера алгоритма исполнения команды векторного типа непосредственной проверки класса данных с плавающей запятой согласно фиг. 4А,

на фиг. 4Д - пример определения различных классов данных с плавающей запятой в двоичной форме представления,

на фиг. 5А - схема примера формата команды векторного типа контрольной суммы (англ.: Vector Checksum),

на фиг. 5Б - схема варианта осуществления процедуры, связанной с командой векторного типа контрольной суммы согласно фиг. 5А,

на фиг. 5В - схема примера алгоритма исполнения команды векторного типа контрольной суммы согласно фиг. 5А,

на фиг. 6А - схема примера формата команды векторного типа на поле Галуа перемножения, суммирования и накопления (англ.: Vector Galois Field Multiply Sum and Accumulate),

на фиг. 6Б - схема варианта осуществления процедуры, связанной с командой векторного типа на поле Галуа перемножения, суммирования и накопления согласно фиг. 6А,

на фиг. 6В - схема примера алгоритма исполнения команды векторного типа на поле Галуа перемножения, суммирования и накопления согласно фиг. 6А,

на фиг. 7А - схема примера формата команды векторного типа формирования маски (англ.: Vector Generate Mask),

на фиг. 7Б - схема варианта осуществления процедуры, связанной с командой векторного типа формирования маски согласно фиг. 7А,

на фиг. 7В - схема примера алгоритма исполнения команды векторного типа формирования маски согласно фиг. 7А,

на фиг. 8А - схема примера формата команды векторного типа циклического сдвига элемента и вставки по маске (англ.: Vector Element Rotate and Insert Under Mask),

на фиг. 8Б - схема варианта осуществления процедуры, связанной с командой векторного типа циклического сдвига элемента и вставки по маске согласно фиг. 8А,

на фиг. 8В - схема примера алгоритма исполнения команды векторного типа циклического сдвига элемента и вставки по маске согласно фиг. 8А,

на фиг. 9А - схема примера кода векторного исключения,

на фиг. 9Б - схема варианта осуществления процедуры, связанной с установкой кода векторного исключения согласно фиг. 9А,

на фиг. 10 - графическое представление варианта осуществления компьютерного программного продукта, содержащего один или несколько аспектов изобретения,

на фиг. 11 - схема варианта выполнения хост-компьютерной системы,

на фиг. 12 - схема еще одного примера компьютерной системы,

на фиг. 13 - схема другого примера компьютерной системы, содержащей вычислительную сеть,

на фиг. 14 - схема варианта выполнения различных узлов компьютерной системы,

на фиг. 15А - схема варианта выполнения исполнительного устройства из состава компьютерной системы, показанной на фиг. 14,

на фиг. 15Б - схема варианта выполнения устройства ветвления из состава компьютерной системы, показанной на фиг. 14,

на фиг. 15В - схема варианта выполнения устройства загрузки-хранения из состава компьютерной системы, показанной на фиг. 14,

на фиг. 16 - схема варианта выполнения эмулируемой (виртуальной) хост-компьютерной системы.

Осуществление изобретения

[0008] Согласно одному или нескольким аспектам изобретения предлагается векторное средство, которое содержит различные команды векторного типа, а также обработку векторных исключений. Каждая из указанных команд, описанных в настоящей заявке, является командой типа "одиночный поток команд, множественный поток данных", использующей один или несколько векторных регистров (в настоящей заявке векторные регистры также называются векторами). Векторным регистром является, например, регистр процессора (называемый также аппаратным регистром), который представляет собой небольшое по объему пространство памяти (например, не являющееся пространством памяти главного запоминающего устройства), доступное как часть ЦПУ или другого процессора. Каждый векторный регистр содержит векторный операнд, содержащий один или несколько элементов, и длина элемента составляет, например, один, два, четыре или восемь байтов. В других вариантах осуществления изобретения элементы могут иметь другие длины, а команда векторного типа не обязательно должна быть командой типа "одиночный поток команд, множественный поток данных".

[0009] Схема одного варианта осуществления вычислительной среды для внедрения и использования одного или нескольких аспектов изобретения показана на фиг. 1. Вычислительная среда 100 содержит, например, процессор 102 (например, ЦПУ), запоминающее устройство 104 (например, главное запоминающее устройство) и одно или несколько устройств ввода-вывода и/или интерфейсов 106, соединенных с другой вычислительной средой, например, через одну или несколько шин 108 и/или иных соединений.

[0010] В одном примере процессор 102 основан на архитектуре z/Architecture (торговая марка, обозначающая архитектуру линейки мейнфреймов), предложенной корпорацией International Business Machines Corporation (корпорацией IBM) и являющейся частью сервера, такого как сервер System z (торговая марка, обозначающая линейку мейнфреймов), который также предлагается корпорацией International Business Machines Corporation и в котором реализована архитектура z/Architecture. Один из вариантов осуществления архитектуры z/Architecture описан в публикации IBM® "z/Architecture Principles of Operation" ("Принцип действия архитектуры z/Architecture", публикация IBM № SA22-7832-08, 10-е издание, сентябрь 2012 г.), которая включена в настоящую заявку путем ссылки во всей своей полноте. В одном примере указанный процессор исполняет команды операционной системы, такой как z/OS, также предлагаемой корпорацией IBM. IBM®, Z/ARCHITECTURE® и Z/OS® являются зарегистрированными торговыми марками корпорации International Business Machines Corporation, Армонк, штат Нью-Йорк, США. Прочие наименования, используемые в настоящей заявке, могут также быть зарегистрированными торговыми марками, торговыми марками или наименованиями продуктов корпорации International Business Machines Corporation или других компаний.

[0011] Согласно другому варианту осуществления изобретения процессор 102 основан на архитектуре POWER Architecture (от англ. Performance Optimization With Enhanced RISC - оптимизация производительности с применением улучшенной архитектуры RISC), предложенной корпорацией IBM. Один вариант осуществления архитектуры POWER Architecture описан в публикации корпорации IBM "Power ISA™ Version 2.06 Revision В" от 23 июля 2010 г.), которая включена в настоящую заявку путем ссылки во всей своей полноте. POWER ARCHITECTURE® является зарегистрированной торговой маркой корпорации International Business Machines Corporation.

[0012] Согласно еще одному варианту осуществления, процессор 102 основан на архитектуре Intel, предложенной корпорацией Intel. Один вариант осуществления архитектуры Intel описан в публикациях "Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 2B, Instructions Set Reference, A-L", номер заказа 253666-045US, январь 2013 г., и "Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 2B, Instructions Set Reference, M-Z", номер заказа 253667-045US, январь 2013 г., которые включены в настоящую заявку путем ссылки во всей своей полноте. Intel® является зарегистрированной торговой маркой корпорации Intel Corporation, г. Санта-Клара, штат Калифорния, США.

[0013] Схема другого варианта осуществления вычислительной среды для внедрения и использования одного или нескольких аспектов изобретения показана на фиг. 2А. В данном примере вычислительная среда 200 содержит, например, собственное ЦПУ 202, запоминающее устройство 204 и одно или несколько устройств ввода-вывода и/или интерфейсов 206, соединенных между собой, например, через одну или несколько шин 208 и/или других соединений. Например, вычислительная среда 200 может содержать: процессор PowerPC, сервер pSeries или сервер xSeries, предложенные корпорацией International Business Machines Corporation, Армонк, штат Нью-Йорк, США; сервер HP Superdome с процессорами Intel Itanium II, предложенный корпорацией Hewlett Packard Corporation, г. Пало-Альто, штат Калифорния, США; и/или другие электронно-вычислительные машины, основанные на архитектурах, предложенных корпорациями International Business Machines Corporation, Hewlett Packard, Intel, Oracle или другими компаниями и корпорациями.

[0014] Собственное ЦПУ 202 содержит один или несколько собственных регистров 210, таких как один или несколько регистров общего назначения и/или один или несколько регистров специального назначения, используемых при обработке в вычислительной среде. Эти регистры содержат информацию, которая представляет состояние вычислительной среды в каждый отдельно взятый момент времени.

[0015] Кроме того, собственное ЦПУ 202 исполняет команды и программный код, которые хранятся в запоминающем устройстве 204. Согласно одному конкретному примеру, ЦПУ выполняет код 212 эмулятора, хранящийся в запоминающем устройстве 204. Этот код позволяет среде обработки, сконфигурированной по одной архитектуре, эмулировать (т.е. имитировать) другую архитектуру. Например, код 212 эмулятора позволяет электронным вычислительным машинам, основанным на архитектурах, отличных от z/Architecture, таким как процессоры PowerPC, серверы pSeries, серверы xSeries, серверы HP Superdome или другим, имитировать архитектуру z/Architecture и выполнять программное обеспечение и команды, разработанные для архитектуры z/Architecture.

[0016] Дальнейшие сведения о коде 212 эмулятора приводятся с использованием фиг. 2Б. Гостевые команды 250, хранящиеся в запоминающем устройстве 204, содержат команды программного обеспечения (например, взаимосвязанные с машинными командами), которые были разработаны для исполнения на архитектуре, отличной от архитектуры собственного ЦПУ 202. Например, гостевые команды 250 могли были быть разработаны для исполнения на процессоре 102, построенном по архитектуре z/Architecture, однако вместо этого эмулируются на собственном ЦПУ 202, которое может быть, например, процессором типа Intel Itanium II. В одном из примеров код 212 эмулятора содержит процедуру 252 выборки команд, предназначенную для получения одной или нескольких гостевых команд 250 из запоминающего устройства 204 и, возможно, для выполнения локальной буферизации (временного хранения) полученных команд. Этот код 212 эмулятора также содержит процедуру 254 трансляции команд, предназначенную для определения типа поступившей гостевой команды и трансляции указанной гостевой команды в одну или несколько соответствующих собственных команд 256 (т.е. команд, предназначенных для исполнения собственным ЦПУ, построенным по собственной архитектуре). В состав процедуры трансляции входят, например, идентификация функции, которая должна выполняться гостевой командой, и выбор собственной команды или набора команд для выполнения этой функции.

[0017] Далее, эмулятор 212 содержит процедуру 260 управления эмуляцией, обеспечивающую исполнение собственных команд. Процедура 260 управления эмуляцией может заставить собственное ЦПУ 202 выполнять программу из собственных команд, которая имитирует одну или несколько раннее поступивших гостевых команд, и по окончании этого вычислительного процесса возвращать управление упомянутой процедуре выборки команд для имитации получения следующей гостевой команды или группы гостевых команд. Процесс исполнения собственных команд 256 может содержать загрузку данных в регистр из запоминающего устройства 204, передачу данных из регистра обратно в запоминающее устройство для хранения или выполнение некоторой арифметической или логической операции в соответствии с определенной процедурой трансляции.

[0018] Каждая процедура реализована, например, в программном обеспечении, которое хранится в запоминающем устройстве и выполняется собственным ЦПУ 202. В других примерах одна или несколько процедур или операций реализованы в постоянном запоминающем устройстве (ПЗУ), в аппаратном или программном обеспечении или в их комбинации. Упомянутые регистры эмулируемого процессора могут имитироваться с использованием регистров 210 собственного ЦПУ или с использованием ячеек памяти запоминающего устройства 204. В вариантах осуществления гостевые команды 250, собственные команды 256 и код 212 эмулятора могут располагаться в одном и том же запоминающем устройстве или могут храниться распределенно в различных запоминающих устройствах.

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

[0020] В одном примере загружаемая, транслируемая и исполняемая гостевая команда 250 является одной из команд, описанных в настоящей заявке. Эта команда, предназначенная для одной архитектуры (например, для архитектуры z/Architecture), извлекается из запоминающего устройства, транслируется и представляется последовательным набором собственных команд 256 другой архитектуры (например, архитектуры PowerPC, pSeries, xSeries, Intel и т.д.). Затем указанные собственные команды исполняются.

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

[0022] Команды векторного типа могут использоваться как часть различных архитектур, включая (но не ограничиваясь) архитектуры z/Architecture, Power, х86, IA-32, IA-64 и т.д. Хотя варианты осуществления изобретения, описанные в настоящей заявке, описываются применительно к архитектуре z/Architecture, однако команды векторного типа, описанные в настоящей заявке, а также один или несколько других аспектов изобретения могут основываться на многих других архитектурах. Архитектура z/Architecture используется исключительно в качестве одного из примеров.

[0023] Согласно варианту осуществления изобретения, в котором векторный функционал применяется как часть архитектуры z/Architecture, для того, чтобы использовать указанные векторные регистры и команды векторного типа, в специализированном управляющем регистре (например, в управляющем регистре 0) флаги разрешения векторного функционала и векторных регистров должны быть установлены в состояние, например, логической единицы. Если векторный функционал инсталлирован и команда векторного типа исполняется без разрешающих флагов, то возбуждается исключение данных. Если векторный функционал не инсталлирован и делается попытка исполнить команду векторного типа, то возбуждается исключение исполнения.

[0024] В одном варианте осуществления имеется 32 векторных регистра, причем регистры других типов могут отображаться на область-квадрант векторных регистров. Например, как показано на фиг. 3, файл 300 регистров содержит 32 векторных регистра 302, и длина каждого регистра составляет 128 двоичных разрядов. Шестнадцать регистров 304 с плавающей запятой длиной 64 двоичных разряда каждый могут перекрываться с векторными регистрами. Таким образом, например, если изменится содержимое регистра 2 с плавающей запятой, то содержимое векторного регистра 2 также изменится. Для регистров других типов также возможны и другие отображения.

[0025] Векторные данные располагаются в запоминающем устройстве, например, в той же самой последовательности, слева направо, как и прочие форматы данных. Двоичные разряды 0-7 формата данных образуют байт в крайней левой (с наименьшим номером) ячейке хранения байтов запоминающего устройства; двоичные разряды 8-15 образуют байт в следующей за предыдущей ячейке запоминающего устройства и т.д. В другом примере векторные данные могут располагаться в запоминающем устройстве в иной последовательности, например, справа налево.

[0026] Каждая команда векторного типа, описанная в настоящей заявке, содержит набор полей, и одно или несколько указанных полей снабжены нижним числовым индексом, связанным с данным полем. Нижний индекс, связанный с полем команды, обозначает операнд, к которому это поле применяется. Например, нижний индекс "1" в обозначении "V1" векторного регистра указывает на то, что регистр V1 содержит первый операнд и т.д. Операнд регистра имеет ту же длину, что и сам регистр, например, 128 двоичных разрядов.

[0027] Далее, многие команды векторного типа, поддерживаемые векторным функционалом, снабжены полем, состоящим из специальных двоичных разрядов. Такое поле, называемое полем RXB (от англ. register extension bit - бит расширения регистра), содержит наиболее значимый двоичный разряд для каждого из операндов, указываемых векторным регистром. Двоичные разряды для обозначений регистров, не указанные командой, должны быть зарезервированы и должны быть установлены в состояние логического нуля. Наиболее значимый двоичный разряд объединяется операцией конкатенации, например, слева с четырехразрядным обозначением регистра для формирования пятиразрядного обозначения векторного регистра.

[0028] В одном примере указанное поле RXB содержит четыре двоичных разряда (например, 0-3), и эти разряды имеют следующее назначение:

[0029] разряд 0 - наиболее значимый разряд обозначения первого векторного регистра указанной команды (например, в разрядах 8-11);

[0030] разряд 1 - наиболее значимый разряд обозначения второго векторного регистра (например, в разрядах 12-15) указанной команды, если таковой предусмотрен;

[0031] разряд 2 - наиболее значимый разряд обозначения третьего векторного регистра (например, в разрядах 16-19) указанной команды, если таковой предусмотрен;

[0032] разряд 3 - наиболее значимый разряд обозначения четвертого векторного регистра (например, в разрядах 32-35) указанной команды, если таковой предусмотрен.

[0033] Каждый двоичный разряд устанавливается в состояние логического нуля или логической единицы, например, ассемблером, в зависимости от номера регистра. Например, для регистров 0-15 этот разряд устанавливается в состояние логического нуля, для регистров 16-31 этот разряд устанавливается в состояние логической единицы и т.д.

[0034] В одном варианте осуществления каждый двоичный разряд поля RXB является разрядом расширения определенного поля команды, которое содержит один или несколько векторных регистров. Например, в одной или нескольких командах векторного типа разряд 0 поля RXB является разрядом-расширением поля команды с позициями 8-11, это поле обозначается, например, как V1; разряд 1 поля RXB является разрядом-расширением поля команды с позициями 12-15, это поле команды обозначается, например, как V2, и т.д. В другом варианте осуществления поле RXB содержит дополнительные двоичные разряды, и для каждого вектора или поля в качестве разрядов-расширений используются по два и более разрядов.

[0035] Согласно аспекту изобретения, одной из предоставляемых команд, содержащих поле RXB, является команда векторного типа непосредственной проверки класса данных с плавающей запятой, пример формата которой показан на фиг. 4А (мнемонический код команды - VFTCI). В одном примере команда 400 векторного типа непосредственной проверки класса данных с плавающей запятой содержит: поля 402а (например, двоичные разряды 0-7) и 402b (например, разряды 40-47) кода операции, идентифицирующие операцию векторного типа непосредственной проверки класса данных с плавающей запятой; поле 404 первого векторного регистра (например, разряды 8-11), используемое для обозначения первого векторного регистра (V1); поле 406 второго векторного регистра (например, разряды 12-15), используемое для обозначения второго векторного регистра (V2); примыкающее поле I3 408 (например, разряды 16-27) для размещения двоичной маски; поле 410 первой маски (М5) (например, разряды 28-31); поле 412 второй маски (М4) (например, разряды 32-35); поле 414 RXB (например, разряды 36-39). В одном примере каждое из полей 404-414 является отдельным и независимым от поля (полей) кода операции. Далее, в одном варианте осуществления указанные поля являются отдельными и независимыми друг от друга; однако в других вариантах осуществления два и более полей могут быть объединенными. Ниже приводятся дальнейшие сведения об использовании перечисленных полей.

[0036] В одном примере выбранные двоичные разряды (например, первые два разряда) кода операции, обозначенного полем 402а кода операции, указывают длину команды. В этом конкретном примере значение выбранных разрядов указывает, что длина составляет три полуслова. Далее, формат данной команды - операция типа векторный регистр-и-примыкающее поле, с расширенным полем кода операции. Каждое из векторных (V) полей совместно с соответствующим ему разрядом расширения регистра, содержащимся в поле RXB, обозначает некоторый векторный регистр. В частности, для векторных регистров, регистр, содержащий операнд, обозначается (адресуется) с использованием, например, четырехразрядного поля из состава поля регистра с добавлением соответствующего ему разряда расширения регистра (RXB) как наиболее значимого разряда. Например, если четырехразрядное поле содержит двоичное число 0110 и в разряде расширения содержится двоичное число 0, то пятиразрядное двоичное число 00110 указывает регистр 6 (в десятичной системе счисления).

[0037] Далее, в одном варианте осуществления команды векторного типа непосредственной проверки класса данных с плавающей запятой поля 404 V1 и 406 V2 указывают векторные регистры, которые содержат соответственно первый операнд и второй операнд данной команды. Кроме того, поле 408 I3 содержит двоичную маску, состоящую из набора двоичных разрядов, каждый из этих разрядов используется для представления класса и знака (положительного или отрицательного) элемента с плавающей запятой в двоичной форме в соответствии с дальнейшим подробным описанием.

[0038] Согласно другому варианту осуществления изобретения двоичная маска может предоставляться, например, в регистре общего назначения, в запоминающем устройстве, в элементе векторного регистра (отличаясь от элемента к элементу) или по результатам вычисления адреса. Она может включаться как явный операнд данной команды или как подразумеваемый операнд или входной параметр.

[0039] Поле 410 М5 содержит, например, четыре двоичных разряда 0-3 и определяет управляющий параметр S одиночного элемента, например, в двоичном разряде 0. Если значение двоичного разряда 0 равно единице, то операция применяется только к имеющему нулевой индекс элементу вектора. При этом значения двоичных разрядов всех прочих элементов в векторе первого операнда непредсказуемы. Если значение разряда 0 установлено равным нулю, то операция применяется ко всем элементам вектора.

[0040] Поле 412 М4 используется, например, для указания длины чисел с плавающей запятой во втором операнде команды. В одном примере значение 3 поля указывает число с плавающей запятой с двойной точностью в двоичной форме представления. Также возможны другие примеры.

[0041] При исполнении варианта осуществления команды векторного типа непосредственной проверки класса данных с плавающей запятой проверяется класс и знак элемента или элементов с плавающей запятой второго операнда для выбора одного или нескольких двоичных разрядов третьего операнда. Если выбранный разряд установлен, то значения всех двоичных разрядов соответствующего элемента первого операнда устанавливаются равными единице; в противном случае указанные значения устанавливаются равными нулю. То есть если класс/знак числа с плавающей запятой, содержащегося в элементе второго операнда, соответствует установленному двоичному разряду (т.е. значение двоичного разряда установлено, например, равным единице) третьего операнда, то значение элемента первого операнда, соответствующего элементу второго операнда, устанавливается равным единицам. В одном примере все элементы операнда содержат числа с плавающей запятой в длинном формате в двоичной форме представления.

[0042] В соответствии с изложенным выше, 12 двоичных разрядов третьего операнда, а именно разряды 16-27 текста команды, используются для указания 12 комбинаций класса и знака данных с плавающей запятой в двоичной форме. В одном примере, показанном на фиг. 4Б, элементы операнда с плавающей запятой в двоичной форме подразделяются на шесть классов 430: ноль; нормальное число; субнормальное число; бесконечность; тихое нечисло (англ.: Not-a-Number, NaN); сигнализирующее нечисло; с каждым классом ассоциирован знак 432 (положительный или отрицательный). Так, например, нулевой разряд поля I3 указывает класс ноль с положительным знаком, первый разряд поля I3 указывает класс ноль с отрицательным знаком и т.д.

[0043] Один или несколько двоичных разрядов третьего операнда могут быть установлены в единичное значение. Далее, в одном варианте осуществления команда может действовать на один или несколько элементов одновременно.

[0044] Элементы операнда, в том числе сигнализирующее нечисло и тихое нечисло, проверяются без инициирования исключения, предусмотренного стандартами IEEE (от англ. Institute of Electrical and Electronics Engineers - Институт инженеров по электротехнике и электронике).

[0045] Значения формируемого в результате итогового кода условия для всех элементов:

[0046] 0 значение выбранного разряда для всех элементов - 1 (совпадение);

[0047] 1 значение выбранного разряда по меньшей мере для одного, но не для всех элементов - 1 (если значение разряда S - ноль);

[0048] 2 -

[0049] 3 значение выбранного разряда для всех элементов - 0

(антисовпадение).

[0050] Исключения IEEE: нет.

[0051] Исключения программные:

[0052] - данные, со значением FE (шестнадцатеричное число) кода исключения данных, команда векторного типа, означает, что средство векторной обработки не активировано;

[0053] - операция (если средство векторной обработки для архитектуры z/Architecture не инсталлировано);

[0054] - спецификация;

[0055] - транзакционное ограничение.

[0056] Замечания по программированию:

[0057] 1. Данная команда предоставляет возможность проверить элементы операнда без риска возбуждения исключения или активации флагов по стандартам IEEE.

[0058] 2. Если двоичный разряд S установлен, то код условия 1 не используется.

[0059] Дальнейшие сведения о варианте осуществления команды векторного типа непосредственной проверки класса данных с плавающей запятой приводятся с использованием схем на фиг. 4В и 4Г. В частности, на фиг. 4В показан один вариант процедуры, связанной с командой векторного типа непосредственной проверки класса данных с плавающей запятой, исполняемой процессором (например, ЦПУ), а на фиг. 4Г показан схема примера алгоритма, поясняющая исполнение команды векторного типа непосредственной проверки класса данных с плавающей запятой.

[0060] Согласно фиг. 4В, вначале на шаге 450 выполняется инициализация значением ноль переменной Ei, называемой индексом элемента. Затем на шаге 452 выполняется извлечение значения элемента Ei, в данном случае - нулевого элемента, из второго операнда команды (например, из операнда, хранящегося в регистре, обозначенном V2). Это значение, являющееся величиной с плавающей запятой в длинном формате в двоичной форме представления, на шаге 454 преобразуется в номер типа для получения класса и знака элемента второго операнда с плавающей запятой как описано далее. В одном примере входным параметром для процедуры преобразования является длина 453 числа с плавающей запятой. Полученный класс и знак ассоциируются с конкретным двоичным разрядом класса/знака в соответствии с фиг. 4Б и его описанием. Например, если преобразование показывает, что число с плавающей запятой - положительное нормальное число, то с числом с плавающей запятой ассоциируется двоичный разряд 2.

[0061] После преобразования выполняется проверка (шаг 456) двоичного разряда третьего операнда (называемого также выбранным разрядом), соответствующего конкретному разряду, который был определен на основе преобразования. Если выбранный разряд установлен (блок 458), то на шаге 460 значения всех разрядов элемента первого операнда, соответствующего элементу (Ei), устанавливаются равными единице; в противном случае на шаге 462 данный элемент первого операнда устанавливается равным нулю. Например, если преобразование числа с плавающей запятой в элементе 0 выявило положительное нормальное число, то с этим числом ассоциируется разряд 2. Следовательно, проверяется разряд 2 третьего операнда, и если его значение равно единице, то значения всех разрядов элемента 0 первого операнда устанавливаются равными единице.

[0062] Затем на шаге 464 принимается решение, равно ли значение Ei максимальному номеру элемента второго операнда. Если не равно, то на шаге 466 значение Ei увеличивается, например, на единицу, и выполнение продолжается с шага 452. В противном случае, если значение Ei равно максимальному номеру элементов, то на шаге 468 формируется итоговый код условия. Указанный итоговый код условия объединяет результаты обработки всех элементов указанного второго операнда. Например, если значение второго разряда установлено равным единице для всех элементов (совпадение), то итоговый код условия равен нулю. С другой стороны, если значение выбранного разряда равно единице по меньшей мере для одного, но не для всех элементов (если разряд S не равен нулю), то указанный итоговый код условия равен единице, и если значение выбранного разряда равно нулю для всех элементов (антисовпадение), то значение указанного кода условия равно трем.

[0063] Изложенная выше процедура обработки наглядно показана на схеме на фиг. 4Г. В соответствии с изображенным, векторный регистр 480 содержит набор элементов 482а-482n, каждый из которых содержит число с плавающей запятой. Каждое число с плавающей запятой и длина 483а-483n числа с плавающей запятой подаются на вход процедуры 484а-484n преобразования в номер типа, ее выходом является конкретный двоичный разряд, представляющий класс/знак числа с плавающей запятой. Затем проверяется выбранный разряд в каждой маске 486а-486b, соответствующий каждому конкретному двоичному разряду. Значение первого операнда векторного регистра 488 устанавливается в зависимости от того, установлен ли выбранный разряд. Например, если для элемента 0 второго операнда выбранный разряд установлен, то значения всех двоичных разрядов элемента 490а первого операнда устанавливаются равными единице. Аналогично, если выбранный разряд элемента 1 второго операнда не установлен (например, установлено значение ноль), то элемент 490b первого операнда устанавливается равным нулю и т.д.

[0064] Далее приводятся подробные сведения об одном варианте осуществления процедуры преобразования в номер типа. Вначале число с плавающей запятой, являющееся числом с плавающей запятой в двоичной форме представления по стандарту IEEE, преобразуется, как это хорошо известно, в три части: знак, порядок (8 двоичных разрядов) + 127, мантиссу (23 двоичных разряда). Затем значения всех трех частей проверяются с целью определения класса и знака как показано на фиг. 4Д. Например, знак является значением знаковой части, а класс (являющийся входным для фиг. 4Д) основывается на значениях порядка и мантиссы (разряд единиц на фиг. 4Д - подразумеваемый двоичный разряд мантиссы). Например, если значения порядка и мантиссы (в том числе разряда единиц) равны нулю, то класс - нулевой, и если знаковая часть по