Преобразование из зонного формата в десятичный формат с плавающей точкой

Иллюстрации

Показать все

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

Реферат

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

[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/Architecture®, считывается из памяти, транслируется и представляется в виде последовательности собственных команд 256 (напр., PowerPC®, pSeries®, xSeries®, Intel®, и т.д.), которая выполняется.

[0023] В другом варианте реализации одна или более команд выполняются в среде другой архитектуры, включая, например, архитектуру, описанную в "Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 1" ("Архитектуры Intel® 64 и IA-32. Руководство разработчика программного обеспечения. Том 1"), порядковый номер 253665-022US, ноябрь 2006; "Intel® 64 and IA-32 Architecture Software Developer's Manual Volume 2A" ("Архитектуры Intel® 64 и IA-32. Руководство разработчика программного обеспечения. Том 2А"), порядковый номер 253666-022US, ноябрь 2006; "Intel® Itanium® Architecture Software Developer's Manual Volume 1" ("Архитектура Intel Itanium. Руководство разработчика программного обеспечения. Том 1"), док. номер 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-units-view, RUV) и вида левых единиц (left-units-view, LUV). Смещенные порядки являются беззнаковыми числами. Смещенный порядок кодируется самой левой цифрой (leftmost digit, LMD) мантиссы в комбинационном поле. Оставшиеся цифры мантиссы кодируются в поле кодированной ведомой мантиссы.

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

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

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

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

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

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

[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.

Биты Бит 6 Тип Смещенный Порядок LMD
1 2 3 4 5
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
Биты Бит 6 Тип Смещенный Порядок LMD
1 2 3 4 5
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
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] Значения конечных чисел в различных форматах представлены в следующей таблице:

Формат Величина
Вид левых единиц Вид правых единиц
Короткий !10-e95%(d0.d1d2…d6) !10-e101%(d0d1d2…d6)
Длинный !10-e383%(d0.d1d2…d15) !10-e398%(d0d1d2…d15)
Расширенный !10-e6143%(d0.d1d2…d33) !10-e6176%(d0d1d2…d33)
Пояснение:
d0.d1d2…dp-1 Мантисса в виде левых единиц. Десятичная точка находится непосредственно справа от самой левой цифры, a d1 является десятичной цифрой, где 0[i[(р-1), а p является точностью формата.
d0d1d2…dp-1 Мантисса в виде правых единиц. Десятичная точка находится справа от самой правой цифры, a di является десятичной цифрой, где 0[i[(р-1), а p является точностью формата.
е Смещенный порядок.

[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.

[0055] Поле базового регистра (Base register field) (B2) 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 определяет недопустимую пару регистров с плавающей точкой, или поле R1 больше или равно 34.

[0061] В одном варианте реализации, если задается второй операнд ASCII, бит 0 поля М3 раве