ПРЕОБРАЗОВАНИЕ В ЗОННЫЙ ФОРМАТ ИЗ ДЕСЯТИЧНОГО ФОРМАТА С ПЛАВАЮЩЕЙ ТОЧКОЙ Российский патент 2015 года по МПК H03M1/00 

Описание патента на изобретение RU2560796C2

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ

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

[002] Данные могут храниться во внутреннем запоминающем устройстве компьютера или во внешнем запоминающем устройстве в ряде различных форматов, включая расширенный двоично-десятичный код обмена информацией (Extended Binary Coded Decimal Interchange, EBCDIC), американский стандартный код для информационного обмена (American Standard for Information Interchange, ASCII), и десятичный с плавающей точкой, среди прочих.

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

[004] Кроме того, обычно операции, используемые для обработки числовых десятичных данных, хранящихся в форматах EBCDIC или ASCII в базах данных, работают напрямую с запоминающим устройством. Эти операции, называемые десятичными операциями память-память, и производительность этих операций ограничивается латентностью интерфейса памяти. Каждая операция, которая зависит от результатов из предыдущей операции, должна ждать, пока результаты запишутся в память, перед тем как она может начаться. Так как разрыв между латентностью памяти и скоростью процессора продолжает возрастать, относительная производительность этих операций продолжает снижаться.

КРАТКОЕ ИЗЛОЖЕНИЕ

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

[006] В заявке также описываются и заявляются способы и системы, относящиеся к одному или более аспектов данного изобретения. Далее, здесь также описываются и могут заявляться службы, относящиеся к одному или более аспектов данного изобретения.

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

КРАТКОЕ ОПИСАНИЕ И НЕСКОЛЬКО ПРЕДСТАВЛЕНИЙ ЧЕРТЕЖЕЙ

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

На ФИГ.1 изображен один вариант реализации вычислительной среды, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.2А изображен другой вариант реализации вычислительной среды, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.2Б изображены дальнейшие подробности памяти согласно ФИГ.2А, в соответствии с аспектом настоящего изобретения;

На ФИГ.3 изображен общий обзор логики для преобразования из зонного формата в десятичный формат с плавающей точкой в соответствии с аспектом настоящего изобретения;

На ФИГ.4 изображен один вариант формата команды Convert from Zoned (преобразовать из зонного), использующейся в соответствии с аспектом настоящего изобретения;

На ФИГ.5 изображены дальнейшие подробности логики для преобразования из зонного в десятичный с плавающей точкой в соответствии с аспектом настоящего изобретения;

На ФИГ.6 изображен общий обзор логики для преобразования в зонный формат из десятичного формата с плавающей точкой в соответствии с аспектом настоящего изобретения;

На ФИГ.7 изображен один вариант формата команды Convert to Zoned (преобразовать в зонный) из десятичного с плавающей точкой, использующейся в соответствии с аспектом настоящего изобретения;

На ФИГ.8 изображены дальнейшие подробности логики для преобразования в зонный из десятичного с плавающей точкой в соответствии с аспектом настоящего изобретения;

На ФИГ.9 изображен один вариант реализации компьютерного программного продукта, включающего один или более аспектов настоящего изобретения;

На ФИГ.10 изображен один вариант реализации основной компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.11 изображен другой пример компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.12 изображен еще один пример компьютерной системы, содержащей компьютерную сеть, включающую и использующую один или более аспектов настоящего изобретения;

На ФИГ.13 изображена одна из реализации различных элементов компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.14А изображена одна из реализации устройства выполнения компьютерной системы согласно ФИГ.13, включающего и использующего один или более аспектов настоящего изобретения;

На ФИГ.14Б изображена одна из реализации устройства ветвления компьютерной системы согласно ФИГ.13, включающего и использующего один или более аспектов настоящего изобретения;

На ФИГ.14В изображена одна из реализации устройства загрузки/сохранения компьютерной системы согласно ФИГ.13, включающего и использующего один или более аспектов настоящего изобретения;

На ФИГ.15 изображена одна из реализации эмулируемой основной компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;

ПОДРОБНОЕ ОПИСАНИЕ

[009] Различные компьютерные архитектуры могут поддерживать различные форматы данных, и поддерживаемые форматы данных могут меняться со временем. Например, машины, предлагаемые корпорацией International Business Machines, традиционно поддерживали форматы EBCDIC и ASCII. Более поздние машины начали поддерживать десятичные форматы с плавающей точкой (decimal floating point, DFP) и операции, для которых есть стандарт IEEE (IEEE 754-2008). Однако, для использования операций DFP, данные EBCDIC и ASCII должны быть преобразованы в DFP.

[0010] В соответствии с аспектом настоящего изобретения предоставляется эффективный механизм для преобразования между EBCDIC или ASCII и десятичным с плавающей точкой. В одном примере этот механизм осуществляет преобразование без издержек памяти других методик.

[0011] В одном аспекте настоящего изобретения предоставляются машинные команды, которые считывают данные EBCDIC или ASCII (которые имеют зонный формат) из памяти, преобразуют их в соответствующий десятичный формат с плавающей точкой, и записывают их в целевой регистр с плавающей точкой или пару регистров с плавающей точкой. Эти команды называются в данной заявке длинной командой Convert from Zoned (CDZT) и расширенной командой Convert from Zoned (CXZT).

[0012] В другом аспекте настоящего изобретения предоставляются машинные команды, которые преобразуют десятичный операнд с плавающей точкой (DFP) в исходном регистре с плавающей точкой или паре регистров с плавающей точкой в данные EBCDIC или ASCII и сохраняют его в целевой ячейке памяти. Эти команды называются в данной заявке длинной командой Convert to Zoned (CZDT) и расширенной командой Convert to Zoned (CZXT).

[0013] Один вариант реализации вычислительной среды, включающий и использующий один или более аспектов согласно настоящему изобретению, описывается при помощи ФИГ.1. Вычислительная среда 100 включает, например, процессор 102 (напр., центральное процессорное устройство), память 104 (напр., основную память), и одно или более устройств и/или интерфейсов ввода-вывода (I/O) 106, соединенных между собой через, например, одну или более шин 108 и/или других соединений.

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

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

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

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

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

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

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

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

[0022] В одном примере гостевая команда 250, которая считывается, транслируется и выполняется, является одной из команд, описываемых здесь. Команда, которая в данном примере является командой z/Architectwe®, считывается из памяти, транслируется и представляется в виде последовательности собственных команд 256 (напр., PowerPC®, pSeries®, xSeries®, Intel®, и т.д.), которая выполняется.

[0023] В другом варианте реализации одна или более команд выполняются в среде другой архитектуры, включая, например, архитектуру, описанную в "Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 1" ("Архитектуры Intel® 64 и IA-32. Руководство разработчика программного обеспечения. Том I"), порядковый номер 253665-022US, ноябрь 2006; "Intel® 64 and IA-32 Architecture Software Developer's Manual Volume 2A" ("Архитектуры Intel® 64 и IA-32. Руководство разработчика программного обеспечения. Том 2A"), порядковый номер 253666-022US, ноябрь 2006; "Intel® Itanium® Architecture Software Developer's Manual Volume 1" ("Архитектура Intel® Itanium®. Руководство разработчика программного обеспечения. Том I"), док. номер 245317-005, январь 2006; "Intel® Itanium® Architecture Software Developer's Manual Volume 2" ("Архитектура Intel® Itanium®. Руководство разработчика программного обеспечения. Том 2"), док. номер 245318-005, январь 2006; и/или "Intel® Itanium® Architecture Software Developer's Manual Volume 3" ("Архитектура Intel® Itanium®. Руководство разработчика программного обеспечения. Том 3"), док. номер 245319-005, январь 2006; каждое из которых таким образом включается сюда по ссылке во всей его целостности.

[0024] Процессоры, описанные здесь, так же как и другие, выполняют команды для осуществления некоторых функций, таких как, например, преобразование между форматами EBCDIC или ASCII и десятичным с плавающей точкой. В одном примере данные EBCDIC или ASCII имеют зонный формат, и поэтому примеры команд включают, например, команды преобразования из зонного в десятичный с плавающей точкой, а также команды преобразования в зонный из десятичного с плавающей точкой, как описано в заявке.

[0025] Перед описанием команд, однако, опишем различные форматы данных, упоминаемые в заявке. Например, в зонном формате четыре правых бита байта называются числовыми битами (N) и обычно содержат код, представляющий десятичную цифру. Четыре левых бита байта называются байтами зоны (Z), за исключением самого правого байта десятичного операнда, где эти биты могут трактоваться либо как зона, либо как знак (S).

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

[0027] Десятичные данные с плавающей точкой могут быть представлены в любом из трех форматов данных: коротком, длинном или расширенном. Содержимое каждого формата данных представляет кодированную информацию. Присваиваются специальные коды для различения конечных чисел, неопределенностей (NaN, Not-a-Number) и бесконечных.

[0028] Для конечных чисел в формате используется смещенный порядок. Для каждого формата, используется различное смещение для порядков вида правых единиц (right-umts-view, RUV) и вида левых единиц (left-units-view, LUV). Смещенные порядки являются беззнаковыми числами. Смещенный порядок кодируется самой левой цифрой (leftmost digit, LMD) мантиссы в комбинационном поле. Оставшиеся цифры мантиссы кодируются в поле кодированной ведомой мантиссы.

[0029] Примерами этих форматов данных являются:

Короткий формат DFP

S Комбинация Кодированная ведомая мантисса 0 1 12 31

[0030] Когда операнд в коротком формате DFP загружается в регистр с плавающей точкой, он занимает левую половину регистра, а правая половина остается неизменной.

Длинный формат DFP

S Комбинация Кодированная ведомая мантисса 0 1 14 31 Кодированная ведомая мантисса (продолжение) 32 63

[0031] Когда операнд в длинном формате DFP загружается в регистр с плавающей точкой, он занимает весь регистр.

Расширенный формат DFP

S Комбинация Кодированная ведомая мантисса 0 18 31 Кодированная ведомая мантисса (продолжение) 32 63 Кодированная ведомая мантисса (продолжение) 64 95 Кодированная ведомая мантисса (продолжение) 96 127

[0032] Операнд в расширенном формате DFP занимает пару регистров с плавающей точкой. Левые 64 бит занимают весь регистр с низшим номером в паре, а правые 64 бит занимают весь регистр с высшим номером.

[0033] Бит знака находится в бите 0 каждого формата, и равен, например, нулю для положительного и единице для отрицательного.

[0034] Для конечных чисел комбинационное поле включает смещенный порядок и самую левую цифру мантиссы; для NaN и бесконечностей, это поле включает коды для их идентификации.

[0035] Если биты 1-5 формата находятся в диапазоне 00000-11101, операнд является конечным числом. Два самых левых бита смещенного порядка и самая левая цифра мантиссы кодируются в битах 1-5 формата. Бит 6 в конце комбинационного поля включает остаток смещенного порядка.

[0036] Если биты 1-5 формата равны 11110, операнд является бесконечностью. Все биты в комбинационном поле справа от бита 5 формата составляют зарезервированное поле для бесконечности. Ненулевое значение в зарезервированном поле приемлемо для исходной бесконечности; зарезервированное поле устанавливается в нуль в результирующей бесконечности.

[0037] Если биты 1-5 формата равны 11111, операнд является NaN, а бит 6, называющийся битом SNaN, далее различает QNaN от SNaN. Если бит 6 равен нулю, то это QNaN; иначе, это SNaN. Все биты в комбинационном поле справа от бита 6 формата составляют зарезервированное поле для NaN. Ненулевое значение в зарезервированном поле приемлемо для исходного NaN; зарезервированное поле устанавливается в нуль в результирующем NaN.

[0038] Нижеприведенная таблица обобщает кодировку и схему комбинационного поля. В таблице смещенный порядок конечного числа является конкатенацией двух частей: (1) двух самых левых бит, выведенных из бит 1-5 формата, и (2) оставшихся бит в комбинационном поле. Например, если комбинационное поле короткого формата DFP содержит двоичное 10101010101, оно представляет смещенный порядок двоичного 10010101 и самую левую цифру мантиссы 5.

Биты Бит Тип Смещенный LMD 1 2 3 4 5 6 Порядок 00000 m Конечное число 00ξRBE 0 00001 m Конечное число 00ξRBE 1 00010 m Конечное число 00ξRBE 2 00011 m Конечное число 00ξRBE 3 00100 m Конечное число 00ξRBE 4 00101 m Конечное число 00ξRBE 5 00110 m Конечное число 00ξRBE 6 00111 m Конечное число 00ξRBE 7 01000 m Конечное число 01ξRBE 0 01001 m Конечное число 01ξRBE 1 01010 m Конечное число 01ξRBE 2 01011 m Конечное число 01ξRBE 3 01100 m Конечное число 01ξRBE 4 01101 m Конечное число 01ξRBE 5 01110 m Конечное число 01ξRBE 6 01111 m Конечное число 01ξRBE 7 10000 m Конечное число 10ξRBE 0 10001 m Конечное число 10ξRBE 1 10010 m Конечное число 10ξRBE 2 10011 m Конечное число 10ξRBE 3 10100 m Конечное число 10ξRBE 4 10101 m Конечное число 10ξRBE 5 10110 m Конечное число 10ξRBE 6 10111 m Конечное число 10ξRBE 7 11000 m Конечное число 00ξRBE 8 11001 m Конечное число 00ξRBE 9 11010 m Конечное число 01ξRBE 8 11011 m Конечное число 01ξRBE 9

Биты Бит Тип Смещенный LMD 1 2 3 4 5 6 Порядок 11100 m Конечное число 10ξRBE 8 11101 m Конечное число 10ξRBE 9 11110 r Бесконечность1 -- -- 11111 0 QNaN2 -- -- 11111 1 SNaN2 -- -- Пояснение: -- Не применимо. ξ Конкатенация. 1 Все биты в комбинационном поле справа от бита 5 формата составляют зарезервированное поле для бесконечности. 2 Все биты в комбинационном поле справа от бита 6 формата составляют зарезервированное поле для NaN. LMD Самая левая цифра мантиссы. m Бит 6 является частью оставшегося смещенного порядка. RBE Оставшийся смещенный порядок. Включает все биты в комбинационном поле справа от бита 5 формата. r Бит 6 зарезервирован для бесконечности.

[0039] Поле кодированной ведомой мантиссы включает кодированное десятичное число, которое представляет цифры ведомой мантиссы. Ведомая мантисса включает все цифры мантиссы, кроме самой левой цифры. Для бесконечностей, ненулевые цифры ведомой мантиссы приемлемы для исходной бесконечности; все цифры ведомой мантиссы в результирующей бесконечности устанавливаются в нули, если не определено иное. Для NaN, это поле включает диагностические сведения, называемые полезной нагрузкой.

[0040] Поле кодированной ведомой мантиссы является множеством 10-битных блоков, называющихся деклетами. Количество деклетов зависит от формата. Каждый деклет представляет три десятичные цифры в 10-битном значении.

[0041] Значения конечных чисел в различных форматах представлены в следующей таблице:

Формат Величина Вид левых единиц Вид правых единиц Короткий !10e-95%(d0.d1d2…d6) !10e-101%(d0d1d2…d6) Длинный !10e-383%(d0.d1d2…d15) !10e-398%(d0d1d2…d15) Расширенный !10e-6143%(d0.d1d2…d33) !10e-6176%(d0.d1d2…d33) Пояснение:
d0.d1d2…dp-1 Мантисса в виде левых единиц. Десятичная точка находится непосредственно справа от самой левой цифры, a d1 является десятичной цифрой, где 0 [i[(р-1), а р является точностью формата.

d0d1d2…dp-1 Мантисса в виде правых единиц. Десятичная точка находится справа от самой правой цифры, a d1 является десятичной цифрой, где 0 [i[(р-1), а р является точностью формата. e Смещенный порядок.

[0042] Термин «мантисса» используется для обозначения, например, следующего:

[0043] 1. Для конечных чисел, мантисса включает все цифры ведомой мантиссы, дополненные слева самой левой цифрой мантиссы, выведенной из комбинационного поля.

[0044] 2. Для бесконечностей и NaN, мантисса содержит все цифры ведомой мантиссы, дополненные слева нулем.

[0045] Для конечного числа, цифры мантиссы DFP начинаются с самой левой ненулевой цифры мантиссы и заканчиваются самой правой цифрой мантиссы.

[0046] Для конечного числа, количество цифр мантиссы DFP равняется разности вычитания количества ведущих нулей из точности формата. Количество ведущих нулей равно количеству нулей в мантиссе слева от самой левой ненулевой цифры.

[0047] В дополнение к вышесказанному, существует плотно упакованный десятичный (densely packed decimal, DPD) формат. Примеры отображения 3-значного десятичного числа (000-999) на 10-битное значение, называемое деклетом, показаны в таблице ниже. Пункты DPD показаны в шестнадцатеричном виде. Первые две цифры десятичного числа показаны в левом крайнем столбце, а третья цифра вдоль верхней строки.

0 1 2 3 4 5 6 7 8 9 00_ 000 001 002 003 004 005 006 007 008 009 01_ 010 011 012 013 014 015 016 017 018 019 02_ 020 021 022 023 024 025 026 027 028 029 03_ 030 031 032 033 034 035 036 037 038 039 04_ 040 041 042 043 044 045 046 047 048 049 05_ 050 051 052 053 054 055 056 057 058 059 06_ 060 061 062 063 064 065 066 067 068 069 07_ 070 071 072 073 074 075 076 077 078 079 08_ 00А 00В 02А 02В 04А 04В 06А 06В 04Е 04F 09_ 01А 01В 03А 03В 05А 05В 07А 07В 05Е 05F 10_ 080 081 082 083 084 085 086 087 088 089

90_ 08С 08D 18C 18D 28C 28D 38C 38D 0AE 0AF 91_ 09С 09D 19C 19D 29C 29D 39C 39D 0BE 0BF 92_ 0АС 0AD 1AC 1AD 2AC 2AD 3AC 3AD 1AE 1AF 93_ 0ВС 0BD 1BC 1BD 2BC 2BD 3BC 3BD 1BE 1BF 94_ 0СС 0CD 1CC 1CD 2CD 2CD 3CC 3CD 2AE 2AF 95_ 0DC 0DD 1DC 1DD 2DC 2DD 3DC 3DD 2BE 2BF 96_ 0ЕС 0ED 1EC 1ED 2EC 2ED 3EC 3ED 3AE 3AF 97_ 0FC 0FD 1FC 1FD 2FC 2FD 3FC 3FD 3BE 3BF 98_ 08Е 08F 18E 18F 28E 28F 38E 38F 0EE 0EF 99_ 09Е 09F 19E 19F 29E 29F 39E 39F 0FE 0FF

[0048] Примеры отображения 10-битного деклета на 3-значное десятичное число показаны в таблице ниже. Значение 10-битного деклета разделено на 6-битный индекс, показанный в левом столбце, и 4-битный индекс, показанный вдоль верхней строки, оба представлены в шестнадцатеричном виде.

0 1 2 3 4 5 6 7 8 9 А В С D Е F 00_ 000 001 002 003 004 005 006 007 008 009 080 081 800 801 880 881 01_ 010 011 012 013 014 015 016 017 018 019 090 091 810 811 890 891 02_ 020 021 022 023 024 025 026 027 028 029 082 083 820 821 808 809 03_ 030 031 032 033 034 035 036 037 038 039 092 093 830 831 818 819 04_ 040 041 042 043 044 045 046 047 048 049 084 085 840 841 088 089 05_ 050 051 052 053 054 055 056 057 058 059 094 095 850 851 098 099 06_ 060 061 062 063 064 065 066 067 068 069 086 087 860 861 888 889 07_ 070 071 072 073 074 075 076 077 078 079 096 097 870 871 898 899 08_ 100 101 102 103 104 105 106 107 108 109 180 181 900 901 980 981 09_ 110 111 112 113 114 115 116 117 118 119 190 191 910 911 990 991 0А_ 120 121 122 123 124 125 126 127 128 129 182 183 920 921 908 909

*

*

*

37_ 670 671 672 673 674 675 676 677 678 679 696 697 876 877 898* 899* 38_ 700 701 702 703 704 705 706 707 708 709 780 781 906 907 986 987 39_ 710 711 712 713 714 715 716 717 718 719 790 791 916 917 996 997 3А_ 720 721 722 723 724 725 726 727 728 729 782 783 926 927 968 969 3В_ 730 731 732 733 734 735 736 737 738 739 792 793 936 937 978 979 3С_ 740 741 742 743 744 745 746 747 748 749 784 785 946 947 788 789 3D_ 750 751 752 753 754 755 756 757 758 759 794 795 956 957 798 799 3Е_ 760 761 762 763 764 765 766 767 768 768 786 787 966 967 988* 989* 3F_ 770 771 772 773 774 775 776 777 778 779 796 797 976 977 998* 999* * Результат отображается из неканонического деклета.

[0049] В соответствии с аспектом настоящего изобретения предоставляются команды для преобразования из зонного формата в десятичный с плавающей точкой. В одном варианте реализации существует два типа команд преобразования из зонного в десятичный с плавающей точкой, включая длинную команду Convert from Zoned (CDZT), и расширенную команду Convert from Zoned (CXZT), каждая из которых описывается ниже. Эти команды предоставляют эффективные средства для преобразования данных из EBCDIC или ASCII непосредственно в памяти в десятичные форматы с плавающей точкой в регистре.

[0050] Например, согласно ФИГ.3, в одном варианте реализации, каждая машинная команда считывает данные EBCDIC или ASCII из памяти, ШАГ 300; преобразует их в соответствующий десятичный формат с плавающей точкой, ШАГ 302; и записывает их в целевой регистр с плавающей точкой или пару регистров с плавающей точкой, ШАГ 304.

[0051] Длинная команда Convert from Zoned, CDZT, считывает данные операнда из заданной ячейки памяти, преобразует их в операнд DFP двойной точности с нулевым порядком, и записывает их в заданный целевой регистр с плавающей точкой. Расширенная команда Convert from Zoned, CXZT, считывает данные операнда из заданной ячейки памяти, преобразует их в операнд DFP расширенной точности с нулевым порядком, и записывает их в заданную целевую пару регистров с плавающей точкой. Количество байт в исходной ячейке памяти задается в команде и может быть от 1 до 16 байт для CDZT или от 1 до 34 байт для CXZT. Все цифры исходного операнда проверяются на допустимость кодов цифр. Поле знака в команде указывает, что полубайт знака исходного операнда следует обработать. Если поле знака установлено, знак проверяется на допустимость кода знака. При условии допустимости, знак результирующего DFP устанавливается в тот же знак, что указан полубайтом знака исходного операнда. Если обнаружен недопустимый код цифры или знака, распознается исключение десятичных данных.

[0052] В одном варианте реализации каждая из команд Convert from Zoned имеет одинаковый формат (формат RSL-b), пример которого изображен на ФИГ.4. Как изображено в одном варианте реализации, формат 400 команды Convert from Zoned включает, например, следующие поля:

[0053] Поля кода операции (Opcode fields) 402a, 402b: Поля кода операции предоставляют код операции, который указывает функцию, выполняемую командой. К примеру, один определенный код операции определяет функцию как длинную команду Convert from Zoned, а другой предопределенный код операции обозначает ее как расширенную команду Convert from Zoned.

[0054] Поле длины (Length field) (L2) 404: Поле длины 404 определяет длину (напр., в байтах) второго операнда. К примеру, поле длины включает код длины от 0 до 33 для расширенной команды Convert to Zoned, и код длины от 0 до 15 для длинной команды Convert from Zoned.

[0058] Поле базового регистра (Base register field) (В2) 406: Поле базового регистра определяет регистр общего назначения, содержимое которого прибавляется к содержимому поля смещения для получения адреса второго операнда.

[0056] Поле смещения (Displacement field) (D2) 408: Поле смещения включает содержимое, которое прибавляется к содержимому регистра общего назначения, определенного полем базового регистра, для получения адреса второго операнда.

[0057] Поле регистра (Register field) (R1) 410: Поле регистра определяет регистр, содержимое которого является первым операндом. Регистр, включающий первый операнд, иногда называется ячейкой первого операнда.

[0058] Поле маски (Mask field) (М3) 412: Поле маски включает, например, директиву знака (S) (напр., бит), который в одном примере является битом 0 поля М3. Если этот бит нуль, второй операнд не имеет поля знака, и бит знака результата первого операнда DFP устанавливается в 0. Если единица, второй операнд имеет знак. То есть, четыре самых левых бита самого правого байта являются знаком. Бит знака результата первого операнда DFP устанавливается в нуль, если поле знака обозначает положительное значение; и в единицу, если поле знака обозначает отрицательное значение. В одном варианте реализации биты от 1 до 3 поля М3 игнорируются.

[0059] Во время выполнения команды Convert from Zoned второй операнд в зонном формате преобразуется в формат DFP, а результат помещается в ячейку первого операнда. В одном примере квант равен единице, а доставленное значение представлено квантом. Результат, который помещается в ячейку первого операнда, канонический.

[0060] В одном варианте реализации, если обнаружен недопустимый код цифры или знака во втором операнде, распознается исключение данных десятичного операнда. Распознается исключение спецификации, и операция подавляется, если, например, истинно что-либо из следующего: Для CDZT, поле L2 больше или равно 16; а для CXZT, поле R1 определяет недопустимую пару регистров с плавающей точкой, или поле L2 больше или равно 34.

[0061] В одном варианте реализации, если задается второй операнд ASCII, бит 0 поля М3 равен 0; иначе распознается исключение данных десятичного операнда. То есть, значение знака двоичное 0011 не является допустимым знаком.

[0062] Дальнейшие подробности касательно выполнения команды Convert from Zoned описываются при помощи ФИГ.5. В одном примере процессор, который выполняет команду Convert from Zoned, следует этой логике.

[0063] Сначала выполняется определение, обозначает ли код операции в команде Convert from Zoned расширенный или длинный формат, ЗАПРОС 500. То есть, является ли выполняемая команда длинной командой Convert from Zoned или расширенной командой Convert from Zoned. Если код операции обозначает, что это длинная команда Convert from Zoned, то далее выполняется определение, задает ли поле длины (L2), предоставленное в команде, длину, большую чем 15, ЗАПРОС 502. Если поле длины задает длину, большую чем 15, то предоставляется исключение, обозначающее, что есть больше чем 16 цифр (от 0 до 15), ШАГ 504.

[0064] Возвращаясь к ЗАПРОСУ 502, если поле длины не задает длину, большую чем 15, то исходные зонные цифры (по крайней мере часть второго операнда) считываются из памяти, ШАГ 506. После этого исходные зонные цифры, считанные из памяти, преобразуются в десятичный формат с плавающей точкой, ШАГ 508. В данном примере они преобразуются в операнд DFP двойной точности с нулевым порядком.

[0065] Дополнительно выполняется определение, установлена ли директива знака (S), заданная в поле маски (М3), в 1, ЗАПРОС 510. Если директива знака не равна единице, то знак числа DFP принудительно устанавливается положительный, ШАГ 512, а целевой регистр с плавающей точкой перезаписывается преобразованным значением, включая принудительный знак, ШАГ 514.

[0066] Возвращаясь к ЗАПРОСУ 510, если директива знака равна 1, то исходное поле знака (второго операнда) считывается из памяти, ШАГ 516. После этого знак числа DFP устанавливается равным исходному знаку, ШАГ 518, а целевой регистр с плавающей точкой перезаписывается преобразованным значением и знаком (напр., бит О формата DFP), ШАГ 514.

[0067] Возвращаясь к ЗАПРОСУ 500, если код операции обозначает, что это расширенная команда Convert from Zoned, то выполняется определение, задает ли поле длины команды длину, большую чем 33, ЗАПРОС 530. Если поле длины задает длину, большую чем 33, то предоставляется исключение, обозначающее, что есть больше чем 34 цифры (от 0 до 33), ШАГ 532. Однако, если поле длины не задает длину, большую чем 33, то выполняется определение, задает ли поле R1 команды недопустимую пару регистров с плавающей точкой, ЗАПРОС 534. Если отмечена недопустимая пара регистров с плавающей точкой, то предоставляется исключение, ШАГ 536. В противном случае, исходные зонные цифры (по крайней мере часть второго операнда) считываются из памяти, ШАГ 538. После этого исходные зонные цифры, считанные из памяти, преобразуются в десятичный формат с плавающей точкой, ШАГ 540. В данном примере цифры (по крайней мере часть второго операнда) преобразуются в операцию данных с плавающей точкой расширенной точности с нулевым порядком.

[0068] После этого выполняется определение, установлена ли директива знака (S) в поле маски команды в единицу, ЗАПРОС 542. Если директива знака не равна 1, то знак числа данных с плавающей точкой принудительно устанавливается положительный, ШАГ 544. Однако, если директива знака равна 1, то исходное поле знака (второго операнда) считывается из памяти, ШАГ 546, а знак числа DFP устанавливается равным исходному знаку, ШАГ 548. Вслед за установкой знака либо на ШАГЕ 544, либо на ШАГЕ 548, целевая пара регистров с плавающей точкой перезаписывается преобразованным десятичным форматом с плавающей точкой и знаком, ШАГ 550.

[0069] Выше указаны два шага для преобразования исходных зонных цифр, считанных из памяти, в десятичный формат с плавающей точкой. В частности, ШАГ 508 преобразует исходное в десятичный операнд двойной точности с плавающей точкой с нулевым порядком, а ШАГ 540 преобразует исходное в расширенную операцию данных с плавающей точкой расширенной точности с нулевым порядком. Дальнейшие подробности касательно преобразований описываются ниже, а также в вышеупомянутой "z/Architecture Principles of Operation," публикация IBM® номер SA22-7832-08, девятое издание, август 2010, которая таким образом включается сюда по ссылке во всей ее целостности.

[0070] Один вариант реализации процесса преобразования из числа в зонном формате в формат DFP состоит в следующем: Исходные цифры считываются из памяти. Цифры в двоично-десятичном коде (Binary Coded Decimal, BCD) в правых 4 битах каждого байта исходных данных, при необходимости, дополняются слева нулями, так чтобы всего было 16 цифр BCD для операции двойной точности, и чтобы было 34 цифры для операции расширенной точности. Эти цифры BCD затем преобразуются из BCD в плотно упакованные десятичные (Densely Packed Decimal, DPD), так что каждые 3 цифры BCD начиная справа исходных данных преобразуются в 10-битную группу DPD для всех цифр BCD, за исключением самой левой цифры BCD. Таким образом, есть 5 групп DPD для преобразования двойной точности и 11 групп DPD для преобразования расширенной точности. Эти группы DPD составляют биты 14-63 результата двойной точности и биты 17-127 результата расширенной точности. Биты 6-13 являются полем порядка результата двойной точности и с 2 битами из комбинированного поля в битах 1-5 устанавливаются в значение 398 для операций двойной точности. Для операций расширенной точности, биты 6-17 являются полем порядка и с 2 битами из комбинированного поля устанавливаются в значение 6176 для операций расширенной точности.

[0071] Если старшая значащая цифра BCD равна "8" или "9", то биты 1 и 2 устанавливаются в '1'; биты 3 и 4 являются 2 старшими битами порядка и поэтому должны быть установлены в "01"; а бит 5 устанавливается в '0' для "8" или в '1' для "9". Если старшая значащая цифра BCD равна от "0" до "7", то биты 1 и 2 являются старшим значением порядка и поэтому должны быть установлены в "01", а биты 3-5 устанавливаются равными самым правым 3 битам старшей значащей цифры BCD.

[0072] Самые левые 4 бита самого правого байта исходных данных являются кодом знака, если S=1. В этом случае бит знака результата, бит 0, устанавливается в 1, если значение кода знака составляет "1011" или "1101".

[0073] Выше подробно описаны две команды, которые предоставляют средства для значительного улучшения традиционной десятичной операции память-память. В традиционных десятичных операциях память-память операнды EBCDIC или ASCII сперва преобразуются в упакованный десятичный формат, который убирает коды полей и помещает числовые цифры и знаковые цифры двух операндов в другую часть памяти. Далее упакованные операнды обрабатываются в арифметической операции, такой как сложение, вычитание, умножение или деление. Эти арифметические операции должны ожидать, пока завершится сохранение процесса упаковки, до того как они могут начаться, и затем эти операции сохраняют результаты в память. Как только сохранение результата завершено, результат распаковывается обратно в целевой формат (EBCDIC или ASCII). Зависимости памяти от операций превосходят производительность.

[0074] В соответствии с аспектом настоящего изобретения, применение новых команд (напр., перекомпиляция кода с включением новых команд) заменяет команду Pack или РКА на CDZT или CXZT в зависимости от целевого формата. Математическая операция может быть заменена ее DFP эквивалентом (напр., AD/XTR, SD/XTR, MD/XTR, DT/XTR), так что нет ожидания сохранения или считывания из памяти каких-либо операндов. Эти команды работают то же количество времени, что и сложение (АР), вычитание (SP), умножение (МР) или деление (DP), но без расхода памяти. Вторая зависимость памяти избегается, когда операция UNPK или UNPKA заменяется, а результат прямо преобразуется в целевой формат через команды CZDT или CZXT, описанные ниже.

[0075] Традиционные десятичные операции упаковки память-память способны обработать 15 цифр и знак, требуя 3 перекрывающихся операций упаковки для обработки каждого 31-цифрового (со знаком) операнда, обычно находящегося в приложениях, таких как приложения COBOL. Необходимость разбивать операнд на малые перекрывающиеся мини-операнды добавляет сложности в компилятор и компилируемый код; требует выполнения дополнительных команд для осуществления данной задачи, такой как удержания переноса/заимствования между мини-операндами; и влияет на производительность. Поскольку CXZT способна преобразовать 34 цифры и код знака в операнд DFP, компиляторы могут трактовать обычные 31-цифровые и знаковые операнды (напр., операнды COBOL) как единую сущность, упрощая компилируемый код и улучшая производительность.

[0076] В данном контексте, команды CDZT и CXZT предоставляют эффективные средства для преобразования данных из EBCDIC или ASCII в памяти непосредственно в форматы DFP в регистре. Они позволяют преобразовать данные из EBCDIC или ASCII в формат DFP за один шаг. Ранее процесс требовал использования операций Pack или РКА для преобразования данных в упакованный десятичный формат. Затем данные должны загружаться в регистры общего назначения (GPR), но поскольку не существует контролируемой по длине загрузки на данный момент в наборе команд архитектуры, это часто требует смешивания слов, полуслов и операций байтовой загрузки. Другие команды, CDSTR или CXSTR, затем могут использоваться для преобразования упакованных десятичных данных в паре GPR/GPR в целевой формат DFP. В соответствии с аспектом настоящего изобретения, РАСКУРКА и CDSTR/CXSTR заменяются одной командой, CDZT или CXZT.

[0077] В дополнение к командам Convert from Zoned to decimal floating point (преобразовать из зонного в десятичный с плавающей точкой), в соответствии с другим аспектом настоящего изобретения, предоставляются команды Convert to Zoned from decimal floating point (преобразовать в зонный из десятичного с плавающей точкой). Эти команды предоставляют эффективное средство преобразования данных из десятичного формата с плавающей точкой, хранящихся в регистре с плавающей точкой или паре регистров с плавающей точкой, в данные EBCDIC или ASCII и сохранения их непосредственно в память.

[0078] Например, согласно ФИГ.6, в одном примере, операнд DFP в исходном регистре или исходной паре регистров преобразуется в данные EBCDIC или ASCII, ШАГ 600. Преобразованный результат затем сохраняется в целевой ячейке памяти, ШАГ 602. Эти команды позволяют преобразовать данные из формата DFP напрямую в EBCDIC и ASCII за один шаг.

[0079] Примеры этих команд включают длинную команду Convert to Zoned (CZDT) и расширенную команду Convert to Zoned (CZXT). Длинная команда Convert to Zoned, CZDT, считывает данные операнда DFP двойной точности из заданного регистра FPR, преобразует мантиссу в зонный формат, и записывает ее в целевую ячейку памяти. Аналогично, расширенная команда Convert to Zoned, CZXT, считывает данные операнда DFP расширенной точности из заданной пары регистров FPR и преобразует мантиссу в зонный формат, и записывает ее в целевую ячейку памяти. Если длина заданной ячейки памяти недостаточна для размещения всех самых левых ненулевых цифр исходного операнда, распознается исключение десятичного переполнения, при условии что маска десятичного переполнения включена. В случае, если не все цифры умещаются в заданную ячейку памяти, устанавливается особый код состояния (напр., 3). Знак операнда DFP копируется в полубайт знака результата в памяти, если установить поле знака. Использование кодировки положительного знака управляется полем Р в тексте команды, описанном ниже, и результаты нулевого операнда могут условно быть принудительно установлены положительными полем Z текста команды, также описанного ниже. Этот вид манипуляции знаком обычно требуется в коде компилятора, и включение этой функции прямо в команду обеспечивает сохранение производительности и упрощает код компилятора.

[0080] Один вариант реализации формата (RSL-b) команды Convert to Zoned описан при помощи ФИГ.7. В одном примере формат 700 команды Convert to Zoned включает следующие поля:

[0081] Поля кода операции (Opcode fields) 702a, 702b: Поля кода операции предоставляют код операции, который указывает функцию, выполняемую командой. К примеру, один определенный код операции определяет функцию как длинную команду Convert to Zoned, а другой предопределенный код операции обозначает ее как расширенную команду Convert to Zoned.

[0082] Поле длины (Length field) (L2) 704: Поле длины 704 определяет длину (напр., в байтах) второго операнда. К примеру, поле длины включает код длины от 0 до 33 для расширенной команды Convert to Zoned, и код длины от 0 до 15 для длинной команды Convert to Zoned. Далее, число самых правых значащих чисел первого операнда, которые следует преобразовать, задается L2.

[0083] Поле базового регистра (Base register field) (В2) 706: Поле базового регистра определяет регистр общего назначения, содержимое которого прибавляется к содержимому поля смещения для получения адреса второго операнда.

[0084] Поле смещения (Displacement field) (D2) 708: Поле смещения включает содержимое, которое прибавляется к содержимому регистра общего назначения, определенного полем базового регистра, для получения адреса второго операнда.

[0085] Поле регистра (Register field) (R1) 710: Поле регистра определяет регистр, содержимое которого является первым операндом.

[0086] Поле маски (Mask field) (М3) 712: Поле маски включает, например:

[0087] Директива знака (Sign Control) (S): Бит 0 поля М3 является директивой знака. Если S равно нулю, второй операнд не имеет поля знака. Если S равно единице, второй операнд имеет поле знака. То есть, четыре самых левых разряда самого правого байта являются знаком.

[0088] Директива зоны (Zone Control) (Z): Бит 1 поля М3 является директивой зоны. Если Z равно нулю, каждое поле зоны второго операнда сохраняется как двоичное 1111. Если Z равно единице, каждое поле зоны второго операнда сохраняется как двоичное 0011.

[0089] Директива кода положительного знака (Plus-Sign-Code Control) (P): Бит 2 поля М3 является директивой кода положительного знака. Если Р равно нулю, положительный знак кодируется как двоичное 1100. Если Р равно нулю, положительный знак кодируется как двоичное 1111. Если бит S равен нулю, бит Р игнорируется и принимается равным нулю.

[0090] Директива принудительного положительного нуля (Force-Plus-Zero Control) (F): Бит 3 поля М3 является директивой принудительного положительного нуля. Если F равно нулю, не производится никакого действия. Если F равно нулю, а абсолютное значение результата, помещенного в ячейку второго операнда, равно нулю, устанавливается знак результата, указывающий положительное значение, с кодом знака, заданным битом Р. Если бит S равен нулю, бит F игнорируется и принимается равным нулю.

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

[0092] Число самых правых значащих чисел первого операнда, которые следует преобразовать, задается L2. Длина в байтах второго операнда составляет 1-34 для CZXT, соответствуя коду длины в L2 от 0 до 33, что означает 1-34 цифры. Длина в байтах второго операнда составляет 1-16 для CZDT, соответствуя коду длины в L2 от 0 до 15, что означает от 1 до 16 цифр.

[0093] В одном варианте реализации операция осуществляется для любого первого операнда, включая бесконечность, QNaN или SNaN, не вызывая исключения IEEE. Если первый операнд является бесконечностью или NaN, цифра нуль принимается самой левой цифрой мантиссы, заданное число самых правых цифр мантиссы и бит знака преобразуются в зонный формат, результат помещается в ячейку второго операнда, и выполнение завершается с особым кодом состояния (напр., 3).

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

[0095] Распознается исключение спецификации, и операция подавляется, если, например, истинно что-либо из следующего: для CZDT, поле L2 больше или равно 16, что означает 17 или более цифр. Для CZXT, поле R1 задает недопустимую пару регистров с плавающей точкой, или поле L2 больше или равно 34, что означает 35 или более цифр.

[0096] Примеры результирующих кодов состояния включают:

[0097] 0 Исходное равно нулю

[0098] 1 Исходное меньше нуля

[0099] 2 Исходное больше нуля

[00100] 3 Бесконечность, QNan, SNaN, частичный результат.

[00101] В одном варианте реализации зонный десятичный операнд ASCII может быть сохранен как знаковый, если бит S равен единице. Это на усмотрение программы, так как представления ASCII обычно беззнаковы и положительны без всякого умысла, что самая правая зона используется как знак. Далее, завершение с некоторым кодом состояния (напр., 0) указывает, что абсолютное значение первого операнда равно нулю.

[00102] Соотношения между контрольными битами М3 и знаком первого операнда DFP и абсолютным значением результирующего второго операнда, равным нулю, изображены в таблице ниже, которая предоставляется как пример:

М3 Результат Директива зоны (Z) Директива знака (S) Директива кода положительного знака (Р) Директива принудительного положительного нуля (F) Бит знака 1го операнда Абсолютное значение Значение зоны (двоичное) Значение знака (двоичное) 0 0 х х х х 1111 -- 1 0 х 0 х 1100 0 1 х 1101 1 1 нуль 1100 1 не нуль 1101 1 0 0 х 1111 1 х 1101 1 0 х 1111 1 нуль 1111 1 не нуль 1101 1 0 х х x х 0011 -- 1 0 x 0 х 1100 0 1 х 1101 1 1 нуль 1100 1 не нуль 1101 1 0 0 х 1111 1 х 1101 1 0 х 1111 1 нуль 1111 1 не нуль 1101 х игнорируется
-- не применимо

[00103] Дальнейшие подробности касательно логики команды Convert to Zoned описываются при помощи ФИГ.8. В одном примере эта логика осуществляется процессором, выполняющим машинную команду Convert to Zoned.

[00104] Согласно ФИГ.8, сначала выполняется определение, расширенная это команда Convert to Zoned или длинная команда Convert to Zoned, как указывается кодом операции команды, ЗАПРОС 800. Если это длинная команда Convert to Zoned, как указано кодом операции, то то далее выполняется определение, задает ли поле L2 длину, большую чем 15, ЗАПРОС 802. Если поле L2 задает длину, большую чем 15, то предоставляется исключение, так как есть больше чем 16 цифр (0-15), ШАГ 804.

[00105] Возвращаясь к ЗАПРОСУ 802, если поле длины не задает длину, большую чем 15, то операнд DFP считывается из регистра с плавающей точкой, заданного в команде преобразования (используя R1), ШАГ 806. Затем исходные цифры DFP считанного операнда DFP преобразуются в цифры BCD, ШАГ 808.

[00106] Вслед за преобразованием, выполняется определение, умещаются ли ненулевые цифры в длину, заданную L2, ЗАПРОС 810. Если ненулевые цифры не умещаются, то указывается исключение переполнения, ШАГ 812. В противном случае, далее выполняется определение, равен ли бит Z поля маски 1, ЗАПРОС 814. Если Z равно 1, то поле зоны и коды знака устанавливаются в "0011", ШАГ 816. В противном случае, поле зоны и коды знака устанавливаются в "1111", ШАГ 818.

[00107] Вслед за установкой поля зоны и кодов знака, далее выполняется определение, установлен ли бит S поля маски в 1, ЗАПРОС 820. Если бит S не установлен в 1, то цифры BCD, поле знака и коды поля сохраняются в память в соответствующем формате, ШАГ 822. Один пример зонного формата состоит в следующем:

[00108] В этом примере правые четыре бита байта называются числовыми битами (N) и обычно содержат код, представляющий десятичную цифру. Левые четыре бита байта называются байтами зоны (Z), за исключением самого правого байта десятичного операнда, где эти биты могут трактоваться либо как зона, либо как знак (S).

[00109] Возвращаясь к ЗАПРОСУ 820, если бит S равен 1, то далее выполняется определение, установлен ли бит Z в маске в 1, ЗАПРОС 824. Если Z равен 1, то выполняется определение, равен ли результат нулю, ШАГ 826. Если результат равен нулю, то знак результата устанавливается в положительный, ШАГ 828. Если результат не установлен равным нулю, или Z не равно единице, то знак результата устанавливается равным знаку DFP, ШАГ 830.

[00110] Вслед за установкой знака результата выполняется определение, положителен ли знак результата, ЗАПРОС 832. Если знак результата не положителен, то обработка продолжается с ШАГА 822, сохраняя цифры BCD, поле знака и коды поля в память в соответствующем формате. Однако, если знак результата положителен, ЗАПРОС 832, далее выполняется определение, установлен ли бит Р поля маски в 1, ЗАПРОС 834. Если бит Р установлен в единицу, то знак устанавливается равным 1111; в противном случае знак устанавливается равным 1100, ШАГ 838. После установки знака обработка продолжается с ШАГА 822.

[00111] Возвращаясь к ЗАПРОСУ 800, если это расширенная команда Convert to Zoned, то выполняется определение, задает ли поле длины команды длину, большую чем 33, ЗАПРОС 850. Если поле длины задает длину, большую чем 33, то определяется исключение, обозначающее, что есть больше чем 34 цифры, ШАГ 852. В противном случае выполняется определение, задает ли поле регистра (R1) недопустимую пару регистров с плавающей точкой, ЗАПРОС 854. Если нет, то обработка продолжается с ШАГА 806. В противном случае предоставляется исключение, ШАГ 856. Этим завершается описание вариантов реализации команды Convert to Zoned.

[00112] Выше указан шаг для преобразования исходных цифр DFP в цифры BCD. Дальнейшие подробности касательно преобразований описываются ниже, а также в вышеупомянутой "z/Architecture Principles of Operation," публикация IBM® номер SA22-7832-08, девятое издание, август 2010, которая таким образом включается сюда по ссылке во всей ее целостности. Описание ниже также предоставляет подробности касательно процесса преобразования из DFP в зонный формат.

[00113] В одном примере, для формата двойной точности, старшая значащая цифра данных мантиссы, которая должна быть преобразована в зонный формат, содержится в комбинированном поле, которое составляет биты 1-5 исходных данных. Бит 0 является битом знака, с негативным значением, обозначаемым битом 0, равным '1'. Биты 6-13 являются полем продолжения порядка и игнорируются в этой операции. Биты 14-63 являются кодированной ведомой мантиссой и содержат остальные 15 цифр десятичных данных и кодируются в плотно упакованном десятичном формате DPD (densely packed decimal).

[00114] Для формата расширенной точности, в оном примере, старшая значащая цифра данных мантиссы, которая должна быть преобразована в зонный формат, содержится в комбинированном поле, которое составляет биты 1-5 исходных данных. Бит 0 является битом знака, с негативным значением, обозначаемым битом 0, равным '1'. Биты 6-17 являются полем продолжения порядка и игнорируются в этой операции. Биты 18-127 являются кодированной ведомой мантиссой и содержат остальные 33 цифры десятичных данных, которые кодируются в формате DPD.

[00115] Для форматов как двойной точности, так и расширенной точности, ведомые цифры мантиссы, которые кодированы в DPD, преобразуются из формата DPD в двоично-десятичный формат BCD (binary coded decimal), а цифра из комбинированного поля (биты 1-5) добавляется к началу этих цифр. Преобразование DPD в BCD требует лишь нескольких логических элементов, и через эти логические элементы блоки 10-битных данных DPD распаковываются в блоки 12-битных данных BCD, так что каждый блок BCD включает три 4-битных числа BCD. Строка чисел проверяется на ведущие нули и затем сравнивается с полем L2, команды для определения, происходит ли ситуация переполнения, и если так, она обнуляет соответствующие старшие значащие цифры (которые являются цифрами, которые не уместятся в заданную длину памяти (заданную L2)), как только данные распаковываются в зонный десятичный формат.

[00116] Следующие 4-битные поля зоны вставляются слева от каждой цифры BCD, так что каждый байт (8 бит) теперь включает 4-битное поле зоны, сопровождающееся 4-битной цифрой BCD. Каждое поле зоны равно либо "0011", либо "1111" в зависимости от того, равен бит Z в тексте 0 или 1. Далее, бит знака из исходного операнда DFP используется для определения знака, если S=1 в команде. Если цифры BCD все равны 0, a F=1, то знак игнорируется, и создается код положительного знака. В противном случае созданный код знака является знаком исходного операнда DFP из бита 0, и отрицательный знак кодируется как "1101"; положительный знак кодируется как "1100", если Р=0, и как "1111", если Р=1. Затем код знака замещает код поля слева от младшей значащей цифры BCD. (В одном варианте реализации знак обрабатывается параллельно кодам поля и вставляется слева от младшей значащей цифры BCD, вместо кода поля). Затем этот результат записывается в память.

[00117] Выше описаны подробно две машинных команды, CZDT и CZXT, которые преобразуют десятичный операнд с плавающей точкой в исходном регистре или паре регистров с плавающей точкой в данные EBCDIC или ASCII и сохраняют его в целевой ячейке памяти. Эти команды предоставляют средство для значительного улучшения традиционных десятичных операций память-память. Традиционные десятичные операции распаковки память-память способны обработать 15 цифр и знак, требуя 3 перекрывающихся операций распаковки для обработки 31-цифрового (со знаком) результата, обычно находящегося в приложениях, таких как приложения COBOL. Необходимость разбивать результат на малые перекрывающиеся мини-операнды добавляет сложности в компилятор и влияет на производительность, так как это требует выполнения дополнительных команд для осуществления данной задачи. Поскольку CZXT способна преобразовать операнд DFP, содержащий до 34 цифр и код знака, и сохранять его в память в оной команде, компиляторы могут трактовать обычные 31-цифровые и знаковые результаты (напр., результаты COBOL) как единую сущность, упрощая компилируемый код и улучшая производительность.

[00118] Ранее процесс требовал использования CSDTR или CSXTR для преобразования данных из формата DFP в упакованный десятичный формат в GPR. Затем данные должны сохраняться из GPR в память, но поскольку не существует контролируемого по длине сохранения на данный момент в наборе команд архитектуры, это часто требует смешивания слов, полуслов и операций байтового сохранения. Наконец, команда UNPKA нужна для преобразования данных в памяти обратно в EBCDIC или ASCII. Эти новые команды позволяют преобразовать данные из формата DFP напрямую в EBCDIC и ASCII за один шаг. Команда CZDT или CZXT заменяет команды как CSDTR/CSXTR, так и UNPK/UNPKA.

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

[00120] Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемой средой может являться машиночитаемая запоминающая среда (носитель данных). Машиночитаемой запоминающей средой может являться, например, без ограничения электронная, магнитная, оптическая, электромагнитная, инфракрасная или полупроводниковая система, аппаратура или устройство или любое применимое сочетание перечисленного. Более конкретные примеры (неисчерпывающий список) машиночитаемой запоминающей среды включают: электрическое соединение, содержащее один или несколько проводов, портативный компьютерный диск, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ или флэш-память), оптическое волокно, портативное постоянное запоминающее устройство на компакт-диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое применимое сочетание перечисленного. В контексте настоящего документа машиночитаемой запоминающей средой может являться любая материальная среда, в которой содержится или хранится программа для использования системой, аппаратурой или устройством выполнения команд или применительно к ним.

[00121] Как показано на ФИГ.9, в одном из примеров компьютерный программный продукт 900 содержит, например, одну или несколько невременных машиночитаемых запоминающих сред 902 для хранения в них машиночитаемого программного кода или логики 904 для обеспечения и реализации одного или нескольких аспектов настоящего изобретения.

[00122] Программный код, воплощенный в машиночитаемой среде, может передаваться с использованием соответствующей среды, включая без ограничения беспроводную, проводную среду, оптоволоконный кабель, ВЧ-среду и т.д. или любое применимое сочетание перечисленного.

[00123] Компьютерный программный код для выполнения операций, для одного или более аспектов настоящего изобретения, может быть записан на одном или нескольких языках программирования в любом сочетании, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционных процедурных языках программирования, таких как "С" и языки ассемблера или аналогичные языки программирования. Программный код может целиком выполняться в пользовательском компьютере, частично в пользовательском компьютере, в качестве автономного пакета программного обеспечения, частично в пользовательском компьютере и частично в удаленном компьютере или целиком в удаленном компьютере или сервере. В случае последнего сценария удаленный компьютер может быть соединен с пользовательским компьютером посредством сети любого типа, включая локальную вычислительную сеть (ЛВС) или глобальную вычислительную сеть (ГВС), или может быть установлено соединение с внешним компьютером (например, по сети Интернет с использованием поставщика услуг Интернет).

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

[00125] Эти команды управления компьютерной программой также могут храниться в машиночитаемой среде, которая способна предписывать компьютеру, другому программируемому оборудованию обработки данных или другим устройствам действовать конкретным способом, в результате чего команды, хранящиеся в машиночитаемой среде, формируют продукт, содержащий команды, в которых реализуется функция/действие, обозначенное блоком или блоками на структурных схемах и/или блок-схемах.

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

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

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

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

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

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

[00132] Хотя различные варианты осуществления описаны выше, они являются лишь примерами. Например, вычислительные среды других архитектур могут содержать или использовать один или несколько аспектов настоящего изобретения. Далее, хотя описаны определенные поля и/или биты, использоваться могут также и другие. Кроме того, некоторые шаги блок-схем могут быть выполнены параллельно или в другом порядке. Не отступая от сути настоящего изобретения, могут быть сделаны многие изменения и/или дополнения.

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

[00134] С системой прямой или косвенно посредством промежуточных контроллеров ввода-вывода могут быть связаны устройства ввода-вывода (включая без ограничения, клавиатуры, дисплеи, координатно-указательные устройства, ЗУПД, накопители на магнитной ленте, на компакт-дисках, на многоцелевых компакт-дисках, портативные миниатюрные накопители на жестких дисках и другие запоминающие среды и т.д.). С системой также могут быть связаны сетевые адаптеры, позволяющие системе обработки данных устанавливать связь с другими системами обработки данных или удаленными принтерами или запоминающими устройствами посредством промежуточной частных или общедоступных сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь несколькими из сетевых адаптеров доступных типов.

[00135] Другие примеры компьютерных сред, в которых могут быть включены и/или использованы один или более аспектов данного изобретения, описываются ниже.

[00136] Согласно ФИГ.10, на которой представлены характерные компоненты хост-компьютерной системы 5000 для реализации одного или нескольких аспектов настоящего изобретения. Характерный хост-компьютер 5000 содержит один или несколько процессоров 5001, поддерживающих связь с памятью (т.е. центральной памятью) 5002 компьютера, а также интерфейсы ввода-вывода с запоминающими средами 5011 и сетями 5010 для связи с другими компьютерами или SAN и т.п. Процессор 5001 совместим с архитектурой, содержащей структурированный набор команд и структурированные функциональные возможности. Процессор 5001 может иметь динамическую трансляцию адреса (DAT) 5003 для превращения адресов программ (виртуальных адресов) в действительные адреса памяти. DAT обычно содержит буфер 5007 быстрой трансляции адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш-память 5009. Кэш-память 5009 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких процессоров, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым процессором. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для выборки команд и доступа к данным. В одном из вариантов осуществления блок 5004 выборки команд вызывает из памяти 5002 команду посредством кэш-памяти 5009. Команда декодируется в блоке 5006 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 5008 выполнения команд. Обычно используется несколько блоков 5008 выполнения команд, например, блок выполнения арифметических команд, блок выполнения команд с плавающей точкой и блок выполнения команд ветвления. Команда выполняется блоком, который в зависимости от необходимости осуществляет доступ к операндам из определяемых командами регистров или памяти. Если доступ (загрузка или сохранение) к операнду должен осуществляться из памяти 5002, блок 5005 загрузки/сохранения обычно обрабатывает процедуру доступа под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении) или с использованием сочетания того и другого.

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

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

[00139] Для команд и операндов, хранимых в памяти, могу быть предусмотрены раздельные кэши. Информация содержится в кэше в форме непрерывных байтов на целочисленной границе, называемой блоком или строкой данных кэша (или для краткости строкой). Согласно одной из моделей может быть предусмотрена команда извлечения атрибута кэша (EXTRACT CACHE ATTRIBUTE), которая выдает размер строки кэша в байтах. Согласно одной из моделей также может быть предусмотрена команда упреждающей выборки данных (PREFETCH DATA) и команда упреждающей выборки данных относительно большой длины (PREFETCH DATA RELATIVE LONG) для упреждающей выборки данных из запоминающего устройства в кэш данных или команд или для высвобождения данных из кэша.

[00140] Запоминающее устройство рассматривается как длинная горизонтальная битовая строка. В случае большинства операций доступ к запоминающему устройству последовательно осуществляется слева направо. Битовая строка подразделяется на блоки из восьми разрядов. Восьмиразрядный блок называется байтом и является базовым конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется однозначно определяемым неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют идущие подряд адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой двоичные целые числа без знака, содержащие 24,31 или 64 разряда.

[00141] Обмен информацией между запоминающим устройством и процессором или канальной подсистемой осуществляется путем передачи одного байта или группы байтов за один раз. Если не оговорено иное, например, в системе z/Architecture® хранящаяся группа байтов адресуется посредством крайнего левого байта из группы. Число байтов в группе подразумевается или прямо оговаривается выполняемой операцией. Используемая в работе процессора группа байтов называется полем. Разряды в каждой группе байтов, например, в системе z/Architecture® последовательно нумеруются слева направо. Крайние левые разряды в z/Architecture® иногда именуются "старшими" разрядами, а крайние правые разряды - "младшими" разрядами. Тем не менее, номера разрядов не являются адресами ячеек запоминающего устройства. Возможна только адресация байтов. Чтобы оперировать с отдельными разрядами хранящегося байта, осуществляется доступ ко всему байту. Разряды в байте пронумерованы слева направо от 0 до 7 (например, в системе z/Architecture®). Разряды в адресе могут быть пронумерованы от 8 до 31 или от 40 до 63 в случае 24-разрядных адресов или от 1 до 31 или от 33 до 63 в случае 31-разрядных адресов и от 0 до 63 в случае 64-разрядных адресов. В любом другом имеющем фиксированную длину формате из множества байтов разряды, образующие формат, последовательно пронумерованы, начиная с 0. В целях обнаружения ошибок и предпочтительно их исправления с каждым байтом или группой байтов может передаваться один или несколько контрольных разрядов. Такие контрольные разряды генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда кодом операций команды подразумевается длина хранящегося поля операнда, считается, что поле имеет фиксированную длину, которая может составлять 1, 2, 4, 8 или 16 байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, считается, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине с шагом в 1 байт (или в случае некоторых команд с шагом в 2 байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути доступа к запоминающему устройству может превышать длину сохраняемого поля.

[00142] Некоторые хранящиеся единицы информации должны находиться на целочисленной границе. Применительно к единице информации граница называется целочисленной, когда адрес ее ячейки запоминающего устройства кратен длине единицы информации в байтах. Полям длиной 2, 4, 8 и 16 байтам на целочисленной границе даются особые названия. Полуслово является группой из 2 идущих подряд байтов на двухбайтовой границе и представляет собой базовый конструктивный блок команд. Слово является группой из 4 идущих подряд байтов на четырехбайтовой границе. Двойное слово является группой из 8 идущих подряд байтов на 8-байтовой границе. Учетверенное слово является группой из 16 идущих подряд байтов на 16-байтовой границе. Когда в адресах ячеек запоминающего устройства указаны полуслова, слова, двойные слова и учетверенные слова, в двоичном представлении адреса содержится один, два, три или четыре крайних правых нулевых разряда, соответственно. Команды должны находиться на двухбайтовых целочисленных границах. Хранящиеся операнды большинства команд не содержат требования размещения на границах.

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

[00144] В одном варианте осуществления, настоящее изобретение может быть реализовано на практике посредством программного обеспечения (иногда называемого лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., что во всех случаях согласуется с одним или большим количеством аспектов настоящего изобретения). Как показано на ФИГ.10, обычно процессор 5001 хост-системы 5000, получает доступ к программному коду системы программного обеспечения, в котором воплощены один или больше аспектов настоящего изобретения, посредством долговременных запоминающих сред 5011, таких как ПЗУ на компакт-дисках, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям из памяти 5002 компьютера или запоминающего устройства одной компьютерной системы по сети 5010 другим компьютерным системам для применения пользователями таких других систем.

[00145] Программный код включает операционную систему, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ. Обычно подкачка страниц программного кода осуществляется из запоминающей среды 5011 в относительно быстродействующее запоминающее устройство 5002, в котором он доступен для обработки процессором 5001. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.) часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.

[00146] На ФИГ.11 проиллюстрирована характерная рабочая станция или аппаратная серверная система, в которой может быть на практике реализованы один или большее количество аспектов настоящего изобретения. В показанную на ФИГ.11 систему 5020 входит характерная базовая компьютерная система 5021, такая как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 5021 имеет один или несколько процессоров 5026 и шину для соединения процессора(ов) 5026 и других компонентов системы 5021 и обеспечения связи между ними известными способами. Шина соединяет процессор 5026 с памятью 5025 и долговременным запоминающим устройством 5027, которое может содержать накопитель на жестких дисках (например, включая любое из следующего: магнитный носитель, компакт-диск, универсальный цифровой диск и флэш-память) или, например, накопитель на магнитной ленте. В систему 5021 также может входить адаптер пользовательского интерфейса, который посредством шины соединяет микропроцессор 5026 с одним или несколькими устройствами сопряжения, такими как клавиатура 5024, мышь 5023, принтер/сканнер 5030 и/или другие устройства сопряжения, которыми могут являться любое пользовательское устройство сопряжения, такое как сенсорный экран, дополнительная цифровая клавиатура и т.д. Шина посредством дисплейного адаптера также соединяет дисплей 5022, такой как ЖК-дисплей или монитор с микропроцессором 5026.

[00147] Система 5021 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 5028 с сетью 5029. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с эстафетным доступом, сеть Ethernet или модемы. В качестве альтернативы, система 5021 может поддерживать связь с использованием беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 5021 может быть связана с другими такими компьютерами в локальной вычислительной сети (ЛВС) или глобальной вычислительной сети (ГВС), или системой 5021 может являться клиент, связанный отношениями клиент/сервер с другим компьютером и т.д. Все эти конфигурации, а также соответствующее коммуникационное оборудование и программное обеспечение известны из уровня техники.

[00148] На ФИГ.12 проиллюстрирована сеть 5040 обработки данных, в которой может быть реализовано на практике один или несколько аспектов настоящего изобретения. В сеть 5040 обработки данных может входить множество отдельных сетей, таких как беспроводная сеть и проводная сеть, в каждую из которых может входить множество отдельных рабочих станций 5041, 5042, 5043, 5044. Кроме того, как известно специалистам в данной области техники, в нее может входить одна или несколько ЛВС, в которую может входить множество интеллектуальных рабочих станций, связанных с хост-процессором.

[00149] На ФИГ.12 также показано, что в сети также могут входить мэйнфреймы или серверы, такие как шлюз (клиент-сервер 5046) или сервер приложений (удаленный сервер 5048, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 5045). Шлюз 5046 служит точкой входа в каждую отдельную сеть. Шлюз необходим при подсоединении одного сетевого протокола к другому. Шлюз 5046 предпочтительно может быть связан с другой сетью (например, сетью Интернет 5047) линией связи. Шлюз 5046 также может быть непосредственно связан с одной или несколькими рабочими станциями 5041, 5042, 5043, 5044 с использованием линии связи. Шлюз может быть реализован с использованием сервера IBM eServer™ System z® производства International Business Machines Corporation.

[00150] Как показано на ФИГ.11 и 12, доступ к программному коду системы программного обеспечения, в котором может быть воплощен один или несколько аспектов настоящего изобретения, может осуществлять процессор 5026 системы 5020 посредством долговременных запоминающих сред 5027, таких как ПЗУ на компакт-дисках, или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям 5050, 5051 из памяти компьютера или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для применения пользователями таких других систем.

[00151] В качестве альтернативы, программный код может быть воплощен в памяти 5025 с возможностью доступа к нему для процессора 5026 с использованием процессорной шины. В таком программном коде реализована операционная система, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ 5032. Обычно подкачка страниц программного кода осуществляется из запоминающих сред 5027 в быстродействующее запоминающее устройство 5025, в котором он доступен для обработки процессором 5026. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.) часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.

[00152] Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующим и менее объемным, чем другие кэши процессора), представляет собой кэш низшего уровня (L1 или уровня 1), а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3 в случае 3 уровней). Кэш низшего уровня часто поделен на кэш команд (I-кэш), в котором хранятся машинные команды для выполнения, и кэш данных (D-кэш), в котором хранятся операнды, хранимые в памяти.

[00153] На ФИГ.13 проиллюстрирован один из примеров осуществления процессора 5026. Обычно с целью помещения в буфер блоков памяти и повышения производительности процессора используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, в котором в строках данных кэша хранятся данные в памяти, которые вероятно будут использоваться. Типичные строки данных кэша содержат 64, 128 или 256 байтов данных в памяти. Для кэширования команд и для кэширования данных часто используются раздельные кэши. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения ("snoop"), хорошо известными из уровня техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, имеющей уровня 4 кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем уровня 5 (L5), поскольку оно обычно является более быстродействующими и представляет собой лишь часть энергонезависимого запоминающего устройство (ЗУПД, ЗУ на ленте и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 5025 "кэширует" страницы данных, которые подкачиваются в основное запоминающее устройство 5025 и откачиваются из него операционной системой.

[00154] Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды для выполнения. Счетчиком команд в процессоре на основе z/Architecture® является 64-разрядным, при этом он может быть усечен до 31 или 24 разрядов с целью поддержки ранее существовавших ограничений адресации. Поскольку счетчик команд обычно воплощен в слове состояния программы (PSW) компьютера, оно сохраняется при переключении контекста. Соответственно, выполняемая программа с показанием счетчика команд может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы поддерживает показание счетчика команд, пока программа неактивна, а во время выполнения операционной системы используется счетчик команд (в PSW) операционной системы. Обычно показание счетчика команд приращивается на величину, равную числу байтов текущей команды. RISC-команды (на основе вычислений с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (на основе вычислений с полным набором команд) обычно имеют переменную длину. Команды, используемые в системе IBM z/Architecture®, являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Показание счетчика 5061 команд изменяется, например, в результате операции переключения контекста или операции выбранного ветвления согласно команде ветвления. При операции переключения контекста в слове состояния программы сохраняется текущее показание счетчика команд вместе с другой информацией о состоянии выполняемой программы (такой как коды условий), и загружается новое показание счетчика команд, указывающее на команду нового программного модуля для выполнения. Операция выбранного ветвления выполняется, чтобы позволить программе принимать решения, или чтобы выполнять программный цикл путем загрузки в счетчик 5061 команд результата команды ветвления.

[00155] Обычно для выборки команд от имени процессора 5026 применяется блок 5055 выборки команд. Блок выборки осуществляет выборку "очередных последовательных команд", целевых команд из команд выбранного ветвления или первых команд программы, следующей за переключением контекста. В современных блоках выборки команд часто применяют методы выборки с целью предварительной выборки команд по предположению, исходя из вероятности использования команд, предварительная выборка которых была осуществлена. Например, блок выборки может осуществлять выборку 16 байтов команды, содержащих очередную последовательную команду, и дополнительных байтов следующих далее команд.

[00156] Затем вызванные команды выполняются процессором 5026. В одном из вариантов осуществления вызванная команда(-ы) передаются блоку 5056 диспетчеризации блока выборки. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 5057, 5058, 5060. Блок 5057 выполнения обычно принимает информацию о декодированных арифметических командах от блока 5055 выборки команд и выполняет арифметические операции с операндами в соответствии с содержащимся в команде кодом операции. Операнды предоставляются блоку 5057 выполнения предпочтительно из памяти 5025, структурированных регистров 5059 или из непосредственного поля выполняемой команды. Сохраненные результаты выполнения хранятся в памяти 5025, регистрах 5059 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).

[00157] Процессор 5026, как правило, имеет один или несколько блоков 5057, 5058, 5060, выполнения функции команды. Как показано на ФИГ.14А, блок 5057 выполнения, посредством интерфейсной логической схемы 5071, может поддерживать связь со структурированными общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065. В блоке 5057 выполнения может применяться несколько регистровых схем 5067, 5068, 5069 для хранения информации, с которой будет работать арифметическое логическое устройство (ALU) 5066. ALU выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ, поворот и смещение. ALU предпочтительно поддерживает зависящие от конструкции специализированные операции. В других схемах могут обеспечиваться другие структурированные средства 5072, включающие, например, коды условия и логическую схему поддержки восстановления. Обычно результат операции ALU хранится в схеме 5070 выходного регистра, из которой он может пересылаться целому ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание имеет целью лишь обеспечить понимание одного из вариантов осуществления.

[00158] Например, команда сложения (ADD) выполняется блоком 5057 выполнения, обладающим арифметическими и логическими функциональными возможностями, а, например, команда с плавающей точкой выполняется блоком вычислений с плавающей точкой, обладающим специализированными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения заданной кодом операции функции применительно к операндам. Например, команда сложения может выполняться блоком 5057 выполнения применительно к операндам, обнаруженным в двух регистрах 5059, указанных в регистровых полях команды.

[00159] Блок 5057 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, которым может являться третий регистр или один из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (ALU) 5066, способное выполнять ряд логических функций, таких как смещение, поворот, И, ИЛИ и исключающее ИЛИ, а также ряд алгебраических функций, включая любые из следующих функций: сложение, вычитание, умножение, деление. Некоторые ALU 5066 рассчитаны на скалярные операции, а некоторые - на операции с плавающей точкой. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). В системе IBM z/Architecture® используется обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до единицы или дополнения до двух. Число в форме дополнения до двух выгодно в том смысле, что ALU не требуется поддерживать возможность вычитания, поскольку при отрицательной или положительной величине дополнения до двух в ALU требуется только сложение. Числа обычно описаны в сокращенном виде, в котором 12-разрядное поле определяет адрес блока из 4096 байтов и обычно описано, например, в виде 4-х килобайтового блока.

[00160] Как показано на ФИГ.14Б, информация, содержащаяся в команде ветвления, для выполнения команды ветвления обычно передается блоку 5058 ветвления, в котором часто применяется алгоритм предсказания ветвления, такой как таблица 5082 предыстории ветвления, для предсказания исхода ветвления до завершения других условных операций. Целевой объект текущей команды ветвления вызывается и выполняется по предположению до завершения условных операций. Когда условные операции завершены, выполненные по предположению команды ветвления завершаются или отбрасываются, исходя из условной операции и предположенного исхода. Типичная команда ветвления может предусматривать проверку кодов условий и ветвление к целевому адресу, если коды условий отвечают требованию команды ветвления, при этом целевой адрес может вычисляться на основании нескольких чисел, включая, например, числа из регистровых полей или непосредственного поля команды. В блоке 5058 ветвления может применяться ALU 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 ветвления, например, может поддерживать связь с общими регистрами 5059, декодировать блок 5056 диспетчеризации или другие схемы 5073.

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

[00162] Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может содержать непосредственный операнд, в котором используется значение части команды, может содержать одно или несколько регистровых полей, прямо указывающих регистры общего назначения или регистры особо назначения (например, регистры с плавающей точкой). В команде могут использоваться подразумеваемые регистры, обозначаемые полем кода операции как операнды. В команде могут использоваться ячейки памяти для операндов. Ячейка памяти для операнда может обеспечиваться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения на основе системы z/Architecture®, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются с целью получения, например, адреса операнда в памяти. Под ячейкой в данном случае подразумевается ячейка основной памяти (основного запоминающего устройства), если не указано иное.

[00163] Как показано на ФИГ.14В, процессор осуществляет доступ к памяти с использованием блока 5060 загрузки/сохранения. Блок 5060 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 5053 и загрузки операнда в регистр 5059 или другую ячейку памяти 5053, или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 5053 и сохранения данных, полученных из регистра 5059 или другой ячейки памяти 5053, в ячейке целевого операнда в памяти 5053. Блок 5060 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая не соответствует последовательности команд, тем не менее, блок 5060 загрузки/сохранения должен обеспечивать для программ видимость выполнения команды по порядку. Блок 5060 загрузки/сохранения может поддерживать связь с общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, интерфейсом 5053 кэша/памяти или другими элементами 5083 и содержит различные регистровые схемы, ALU 5085 и управляющую логику 5090 для вычисления адресов ячеек запоминающего устройства и обеспечения последовательного потока для сохранения порядка следования операций. Некоторые операции могут выполняться не по порядку, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы выполняемые не по порядку операции выглядели для программы выполненными по порядку, как хорошо известно из уровня техники.

[00164] Адреса, которые "видит" прикладная программа, предпочтительно часто именуются виртуальными адресами. Иногда виртуальные адреса именуются "логическими адресами" и "исполнительными адресами". Эти виртуальные адреса являются виртуальными в том смысле, что их перенаправляют в ячейку физической памяти посредством одной из ряда технологий динамической трансляции адреса (DAT), включая без ограничения простое приписывание величины смещения к виртуальному адресу, трансляцию виртуального адреса посредством одной или нескольких таблиц трансляции, которые предпочтительно содержат по меньшей мере таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись с указанием таблицы страниц. В системе z/Architectwe® предусмотрена иерархия трансляции, в которую входит первая таблица региона, вторая таблица региона, третья таблица региона, таблица сегментов и необязательная таблица страниц. Эффективность трансляции адресов часто повышается за счет использования буфера быстрого трансляции адреса (TLB), который содержит записи, отображающие виртуальный адрес соответствующей ячейки физической памяти. Записи создаются, когда DAT транслирует виртуальный адрес с использованием таблиц перевода. Затем при последующем использовании виртуального адреса может использоваться запись из быстродействующего TLB вместо доступа к таблицам медленной последовательной трансляции. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения наиболее давней по использованию страницы (LRU).

[00165] В том случае, когда процессором является процессор мультипроцессорной системы, каждый процессор отвечает за сохранение совместно используемых ресурсов, таких как средства ввода-вывода, кэши, TLB и память, взаимно заблокированных для обеспечения непротиворечивости. Обычно для поддержания непротиворечивости кэшей используются технологии "слежения". Для облегчения совместного использования каждая строка кэша может помечаться в среде слежения как находящаяся в одном из следующих состояний, включающих состояние совместного использования, состояние монопольного использования, измененное состояние, недействительное состояние и т.п.

[00166] Блоки 5054 ввода-вывода (ФИГ.13) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, накопители на дисках, принтеры, дисплеи и сети. Блоки ввода-вывода представлены в компьютерной программе программными драйверами. В мэйнфреймах, таких как System z® производства IBM®, блоки ввода-вывода мэйнфрейма являются адаптерами каналов и адаптерами открытых систем и обеспечивают связь между операционной системой и периферийными устройствами.

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

[00168] В эмулирующей среде хост-компьютер содержит, например, память для хранения команд и данных; блок выборки команд для выборки команд из памяти и необязательно локальной буферизации выбранных команд; блок декодирования команд для приема команд от блока выборки команд и определения типа команд, которые были выбраны; и блок выполнения команд для выполнения команд. Выполнение может предусматривать загрузку данных из памяти в регистр; сохранение данных из регистра в памяти; или выполнение арифметической или логической операции какого-либо типа, определяемой блоком декодирования. В одном из примеров каждый блок реализован посредством программного обеспечения. Например, выполняемые блоками операции реализованы в виде одной или нескольких подпрограмм в программном обеспечении эмулятора.

[00169] В частности, в мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "С" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM® на основе z/Architecture® или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM® и в других машинах IBM® (например, серверах Power Systems и серверах System x®). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM®, Intel®, AMD™ и других компаний. Помимо выполнения этим аппаратным обеспечением на основе Z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию Hercules, UMX или FSI (Fundamental Software, Inc), когда выполнение обычно происходит в режиме эмуляции. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора.

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

[00171] Конкретная эмулируемая команда декодируется, и вызывается подпрограмма для выполнения функции отдельной команды. Функция эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора, реализуется, в подпрограмме или драйвере на языке "С" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся в описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент US 5551013 под названием "Multiprocessor for hardware emulation", выданный на имя Beausoleil и др., патент US 6009261 под названием "Preprocessing of stored target routines for emulating incompatible instructions on a target processor", выданный на имя Scaizi и др.; патент 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; каждый из которых включен в данное описание во всей их полноте, и многие другие, проиллюстрированные разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники.

[00172] На ФИГ.15 проиллюстрирован один из примеров известной из техники эмулирующей компьютерной хост-системы 5092, которая эмулирует компьютерную хост-систему 5000', имеющую хост-архитектуру. Хост-процессором (ЦП) 5091 в компьютерной хост-системе 5092 эмуляции является хост-процессор (или виртуальный хост-процессор) эмуляции, представляющий собой процессор 5093 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 5091 хост-компьютера 5000'. Компьютерная хост-система 5092 эмуляции имеет память 5094, доступную для процессора 5093 эмуляции. В примере осуществления память 5094 разделена на память 5096 хост-компьютера и память 5097 программ эмуляции. Память 5096 хост-компьютера доступна для программ эмулируемого хост-компьютера 5092 в зависимости от архитектуры хост-компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 5091 и которые извлекаются из памяти 5097 программ эмуляции, и может осуществлять выборку хост-команды для выполнения из программы в памяти 5096 хост-компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную хост-команду(-ы) и определять программу выполнения собственных команд эмуляции функции выбранной хост-команды. Другие средства, которые предусмотрены в архитектуре компьютерной хост-системы 5000', могут эмулироваться программами структурированных средств (Architected Facilities Routines), включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамической трансляции адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 5093 эмуляции (такие как общие регистры и динамическое транслирование виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 5093 эмуляцию функции хост-компьютера 5000'.

[00173] Используемая в описании терминология имеет целью описание лишь частных вариантов осуществления, а не ограничение настоящего изобретения. Подразумевается, что используемые в описании формы единственного числа включают также формы множественного числа, если из контекста ясно не следует иное. Дополнительно подразумевается, что термины "содержит" и/или "содержащий", используемые в описании, означают присутствие указанных признаков, чисел, шагов, операций, элементов и/или компонентов, но не исключают присутствие или добавление одного или нескольких других признаков, чисел, шагов, операций, элементов, компонентов и/или их групп.

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

Похожие патенты RU2560796C2

название год авторы номер документа
ПРЕОБРАЗОВАНИЕ ИЗ ЗОННОГО ФОРМАТА В ДЕСЯТИЧНЫЙ ФОРМАТ С ПЛАВАЮЩЕЙ ТОЧКОЙ 2012
  • Стивен Р. Карло
  • Эрик Марк Шварц
  • Тимоти Дж. Слиджл
  • Чарлз У. Гейни Джр.
  • Марсель Митран
  • Рейд Т. Коупленд
RU2565508C2
КОМАНДА ВЕКТОРНОГО ТИПА КОНТРОЛЬНОЙ СУММЫ 2013
  • Брэдбери Джонатан Дейвид
  • Шварц Эрик Марк
RU2608663C1
КОМАНДА ВЕКТОРНОГО ТИПА НА ПОЛЕ ГАЛУА ПЕРЕМНОЖЕНИЯ, СУММИРОВАНИЯ И НАКОПЛЕНИЯ 2014
  • Брэдбери Джонатан Дейвид
RU2613726C2
ОПРЕДЕЛЕНИЕ ФОРМАТОВ ТРАНСЛЯЦИИ ДЛЯ ФУНКЦИЙ АДАПТЕРА ВО ВРЕМЯ ВЫПОЛНЕНИЯ 2010
  • Дейвид Краддок
  • Томас Грегг
  • Дан Грейнер
  • Эрик Норман Лейс
  • Доналд Уилльям Шмидт
RU2556418C2
СРЕДСТВО ФУНКЦИОНАЛЬНОЙ ВИРТУАЛИЗАЦИИ ДЛЯ БЛОКИРОВКИ КОМАНДНОЙ ФУНКЦИИ МНОГОФУНКЦИОНАЛЬНОЙ КОМАНДЫ ВИРТУАЛЬНОГО ПРОЦЕССА 2010
  • Дан Грейнер
  • Деймиан Лео Осайсек
  • Тимоти Слиджл
  • Лайза Хеллер
RU2565514C2
СПОСОБ И КОМПЬЮТЕРНАЯ СИСТЕМА ДЛЯ СКРЫВАНИЯ ВЫБРАННЫХ УСТАНОВЛЕННЫХ ФУНКЦИЙ МНОГОФУНКЦИОНАЛЬНОЙ КОМАНДЫ 2010
  • Дан Грейнер
  • Деймиан Лео Осайсек
  • Тимоти Слиджл
RU2571364C2
УВЕЛИЧЕНИЕ ЧИСЛА ДОСТУПНЫХ ДЛЯ КОМАНД РЕГИСТРОВ ОБЩЕГО НАЗНАЧЕНИЯ 2010
  • Дан Грейнер
  • Марсель Митран
  • Тимоти Слиджл
RU2562430C2
СРЕДСТВО РАЗДЕЛЕННОЙ ЗАГРУЗКИ/СОХРАНЕНИЯ И КОМАНДА ДЛЯ НЕГО 2010
  • Митран Марсел
  • Слиджл Тимоти
  • Якоби Кристиан
  • Уэбб Чарлз
RU2554546C2
ЦЕЛОЧИСЛЕННОЕ УМНОЖЕНИЕ ВЫСОКОГО ПОРЯДКА С ОКРУГЛЕНИЕМ И СДВИГОМ В АРХИТЕКТУРЕ С ОДНИМ ПОТОКОМ КОМАНД И МНОЖЕСТВОМ ПОТОКОВ ДАННЫХ 2003
  • Эйбел Джеймс К.
  • Уолтерз Дерин К.
  • Тайлер Джонатан Дж.
RU2263947C2
ПРОЦЕССОРЫ, СПОСОБЫ, СИСТЕМЫ И КОМАНДЫ ДЛЯ СЛОЖЕНИЯ ТРЕХ ОПЕРАНДОВ-ИСТОЧНИКОВ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ 2014
  • Эспаса Рохер
  • Соле Гильем
  • Фернандес Манель
RU2656730C2

Иллюстрации к изобретению RU 2 560 796 C2

Реферат патента 2015 года ПРЕОБРАЗОВАНИЕ В ЗОННЫЙ ФОРМАТ ИЗ ДЕСЯТИЧНОГО ФОРМАТА С ПЛАВАЮЩЕЙ ТОЧКОЙ

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

Формула изобретения RU 2 560 796 C2

1. Носитель данных, считываемый обрабатывающим устройством и хранящий компьютерный программный продукт для выполнения машинной команды в центральном процессорном устройстве, причем компьютерный программный продукт содержит команды, выполняемые обрабатывающим устройством для осуществления способа, включающего:
получение процессором машинной команды для выполнения, причем машинная команда определена для выполнения компьютером согласно архитектуре компьютера, и машинная команда содержит:
по меньшей мере одно поле кода операции, предоставляющее код операции, причем код операции идентифицирует функцию преобразования операнда в зонный формат из десятичного формата с плавающей точкой;
поле первого регистра, определяющее первый регистр, причем первый регистр содержит первый операнд;
поле второго регистра и поле смещения, причем содержимое второго регистра, определенного полем второго регистра, комбинируется с содержимым поля смещения с образованием адреса второго операнда; и
поле маски, причем поле маски содержит одну или более директив, использующихся во время выполнения машинной команды; и
выполнение машинной команды, включающее:
преобразование по меньшей мере части первого операнда в десятичном формате с плавающей точкой в зонный формат; и
помещение результата преобразования в ячейку, определенную адресом второго операнда.

2. Носитель данных по п. 1, в котором поле кода операции, будучи первым значением, указывает длинное десятичное исходное с плавающей точкой и зонный результат.

3. Носитель данных по п. 1, в котором поле кода операции, будучи вторым значением, указывает расширенное десятичное исходное с плавающей точкой и зонный результат.

4. Носитель данных по п. 1, в котором поле маски содержит директиву знака, использующуюся для указания того, имеет ли второй операнд поле знака.

5. Носитель данных по п. 1, в котором поле маски содержит директиву зоны, использующуюся для определения значения для поля зоны второго операнда.

6. Носитель данных по п. 1, в котором поле маски содержит директиву кода положительного знака, использующуюся для кодирования положительного знака.

7. Носитель данных по п. 1, в котором поле маски содержит директиву принудительного положительного нуля, использующуюся для определения знака результата, помещаемого во второй операнд.

8. Носитель данных по п. 1, в котором поле маски содержит поле зоны и поле знака и в котором способ дополнительно включает использование по крайней мере одного из поля зоны и поля знака для определения значения по меньшей мере одного поля знака и кода поля результата, сохраняемого во второй операнд.

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

10. Носитель данных по п. 1, в котором выполнение включает считывание по меньшей мере части первого операнда из по меньшей мере одного регистра с плавающей точкой, и в котором второй операнд, в который следует включить результат, находится в памяти.

11. Компьютерная система для выполнения машинной команды в центральном процессорном устройстве, содержащая память и процессор, сообщающийся с памятью, причем компьютерная система настроена для осуществления способа, включающего:
получение машинной команды для выполнения, причем машинная команда определена для выполнения компьютером согласно архитектуре компьютера, и машинная команда содержит:
по меньшей мере одно поле кода операции, предоставляющее код операции, причем код операции идентифицирует функцию преобразования операнда в зонный формат из десятичного формата с плавающей точкой;
поле первого регистра, определяющее первый регистр, причем первый регистр содержит первый операнд;
поле второго регистра и поле смещения, причем содержимое второго регистра, определенного полем второго регистра, комбинируется с содержимым поля смещения с образованием адреса второго операнда; и
поле маски, причем поле маски содержит одну или более директив, использующихся во время выполнения машинной команды; и
выполнение машинной команды, включающее:
преобразование по меньшей мере части первого операнда в десятичном формате с плавающей точкой в зонный формат; и
помещение результата преобразования в ячейку, определенную адресом второго операнда.

12. Компьютерная система по п. 11, в которой поле маски содержит директиву знака, использующуюся для указания того, имеет ли второй операнд поле знака.

13. Компьютерная система по п. 11, в которой поле маски содержит директиву зоны, использующуюся для определения значения для поля зоны второго операнда.

14. Компьютерная система по п. 11, в которой поле маски содержит директиву кода положительного знака, использующуюся для кодирования положительного знака.

15. Компьютерная система по п. 11, в которой поле маски содержит директиву принудительного положительного нуля, использующуюся для определения знака результата, помещаемого во второй операнд.

16. Компьютерная система по п. 11, в которой поле маски содержит поле зоны и поле знака и в которой способ дополнительно включает использование по крайней мере одного из поля зоны и поля знака для определения значения по меньшей мере одного поля знака и кода поля результата, сохраняемого во второй операнд.

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

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

19. Способ по п. 18, в котором поле маски содержит директиву знака, использующуюся для указания того, имеет ли второй операнд поле знака, директиву зоны, использующуюся для определения значения для поля зоны второго операнда, директиву кода положительного знака, использующуюся для кодирования положительного знака, и директиву принудительного положительного нуля, использующуюся для определения знака результата, помещаемого во второй операнд.

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

Документы, цитированные в отчете о поиске Патент 2015 года RU2560796C2

US 7685214 B2, 23.03.2010
US 6535898 B1, 18.03.2003
US 7812757 B1, 12.10.2010
Способ приготовления мыла 1923
  • Петров Г.С.
  • Таланцев З.М.
SU2004A1
СИСТЕМА И СПОСОБ ПОСЛЕДОВАТЕЛЬНОГО ПРЕОБРАЗОВАНИЯ И КОДИРОВАНИЯ ЦИФРОВЫХ ДАННЫХ 2003
  • Мальвар Энрике С.
RU2321063C2

RU 2 560 796 C2

Авторы

Стивен Р. Карло

Эрик Марк Шварц

Тимоти Дж. Слиджл

Чарлз У. Гейни Джр.

Марсель Митран

Рейд Т. Коупленд

Даты

2015-08-20Публикация

2012-11-14Подача