обнаружение квантового исключения с плавающей десятичной точкой

Классы МПК:G06F7/499 обработка машинных чисел или исключительных ситуаций, например округления, переполнения
G06F9/302 управление выполнением арифметических операций
Автор(ы):, , ,
Патентообладатель(и):ИНТЕРНЭШНЛ БИЗНЕС МАШИНЗ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2010-11-08
публикация патента:

Группа изобретений относится к вычислительной технике и может быть использована в арифметических процессорах. Техническим результатом является увеличение точности. Процессор принимает по меньшей мере один операнд с плавающей десятичной точкой и выполняет операцию с плавающей десятичной точкой с использованием по меньшей мере одного операнда с плавающей десятичной точкой для предоставления результата с плавающей десятичной точкой. Осуществляется определение того, сохранился ли в результате с плавающей десятичной точкой предпочтительный квант, который указывает значение, представленное в качестве младшего значащего разряда значащей части числа результата с плавающей десятичной точкой. В ответ на определение того, что предпочтительный квант не сохранился, на выходе предоставляется указание о возникновении квантового исключения. 3 н. и 15 з.п. ф-лы, 3 ил. обнаружение квантового исключения с плавающей десятичной точкой, патент № 2526004

обнаружение квантового исключения с плавающей десятичной точкой, патент № 2526004 обнаружение квантового исключения с плавающей десятичной точкой, патент № 2526004 обнаружение квантового исключения с плавающей десятичной точкой, патент № 2526004

Формула изобретения

1. Способ обнаружения квантовых исключений с плавающей десятичной точкой, причем способ включает:

выполнение следующих этапов с применением процессора:

прием по меньшей мере одного операнда с плавающей десятичной точкой;

получение машинной команды, включающей код операции для операции с плавающей десятичной точкой; и

выполнение машинной команды, причем выполнение включает:

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

выполнение операции с плавающей десятичной точкой над по меньшей мере одним операндом с плавающей десятичной точкой для получения результата с плавающей десятичной точкой;

определение, в ответ на выполнение и определение предпочтительного кванта, того, что квант результата с плавающей десятичной точкой отличается от предпочтительного кванта; и

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

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

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

4. Способ по п.1, отличающийся тем, что дополнительно включает этапы:

сохранение флага квантового исключения в установленном или неустановленном состоянии;

сохранение маски квантового исключения в установленном или неустановленном состоянии;

выполнение последовательности команд программы, причем последовательность команд программы включает машинную команду;

сохранение результата с плавающей десятичной точкой в ячейке назначения памяти;

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

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

обеспечение выхода, включающего установку флага квантового исключения в установленное состояние.

5. Способ по п.4, отличающийся тем, что дополнительно включает следующие этапы:

определение, следующее за выполнением последовательности команд программы, того, что флаг квантового исключения находится в установленном состоянии; и

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

6. Способ по п.4, отличающийся тем, что сохранение маски квантового исключения дополнительно включает этапы:

считывание значения маски квантового исключения, закодированного в команде на машинном языке, в соответствии с командой для операции с плавающей десятичной точкой;

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

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

8. Система обнаружения квантовых исключений с плавающей десятичной точкой, включающая:

память;

процессор, коммуникативно связанный с памятью, где процессор включает процессор команд, настроенный на:

прием по меньшей мере одного операнда с плавающей десятичной точкой;

получение машинной команды, включающей код операции для операции с плавающей десятичной точкой; и

выполнение машинной команды, включающей:

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

выполнение операции с плавающей десятичной точкой над по меньшей мере одним операндом с плавающей десятичной точкой для получения результата с плавающей десятичной точкой;

детектор квантового исключения для определения в ответ на выполнение процессором команд операции с плавающей десятичной точкой и в ответ на определение предпочтительного кванта того, что квант результата с плавающей десятичной точкой отличается от предпочтительного кванта; и

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

9. Система по п.8, отличающаяся тем, что блок ответа на квантовое исключение настроен на установку флага квантового исключения в ответ на определение детектором квантового исключения того, что квант результата с плавающей десятичной точкой отличается от предпочтительного кванта.

10. Система по п.8, отличающаяся тем, что блок ответа на квантовое исключение настроен на обеспечение выхода, включающего запуск прерывания выполнения программного обеспечения.

11. Система по п.8, отличающаяся тем, что:

процессор команд дополнительно настроен на:

сохранение флага квантового исключения в установленном или неустановленном состоянии;

сохранение маски квантового исключения в установленном или неустановленном состоянии;

выполнение последовательности команд программы, причем последовательность команд программы включает машинную команду;

сохранение результата с плавающей десятичной точкой в ячейке назначения памяти;

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

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

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

12. Система по п.11, отличающаяся тем, что процессор команд дополнительно настроен на:

определение того, что флаг квантового исключения находится в установленном состоянии после выполнения последовательности команд программы; и

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

13. Система по п.11, отличающаяся тем, что процессор команд дополнительно настроен на:

считывание значения маски квантового исключения, закодированного в команде на машинном языке, в соответствии с командой для операции с плавающей десятичной точкой; и

применение значения маски квантового значения на протяжении времени выполнения команды для операции с плавающей десятичной точкой.

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

15. Система обработки данных, включающая:

память;

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

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

16. Система по п.15, отличающаяся тем, что блок ответа на квантовое исключение обеспечивает выход, включающий запуск прерывания выполнения программного обеспечения.

17. Система по п.15, отличающаяся тем, что дополнительно включает:

флаг квантового исключения, который в переменной форме назначает установленное или неустановленное состояние; и

маску квантового исключения, которая в переменной форме назначает установленное или неустановленное состояние,

детектор квантового исключения, который дополнительно назначает флаг квантового исключения в установленном состоянии в ответ на определение того, что квант результата с плавающей десятичной точкой отличается от предпочтительного кванта; и

блок ответа на квантовое исключение, который:

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

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

18. Система по п.17, отличающаяся тем, что дополнительно включает процессор команд, настроенный на:

выполнение последовательности выполнений последовательности команд программы, включающих машинную команду;

определения того, что флаг квантового исключения находится в установленном состоянии, после выполнения последовательности команд программы; и

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

Описание изобретения к патенту

Область техники

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

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

Числа с плавающей десятичной точкой и числа с плавающей точкой других оснований системы счисления, как например, определены стандартом плавающей точки IEEE 754-2008, являются полезными для выполнения некоторых типов обработки данных. Конструкции процессора на основе стандарта IEEE 754-2008 были разработаны для непосредственной поддержки обработки, определенной этим стандартом. Форматы типичного аппаратного обеспечения для процессоров стандарта IEEE 754-2008 включают форматы данных с плавающей десятичной точкой, которые имеют длину в 32, 64 и 128 бит с определенными коэффициентами, имеющими 7, 16 и 34 цифры, с определенным интервалом значений показателя. Среды программной обработки, как например, языки программирования, включая Java, который поддерживает числа с плавающей десятичной точкой, иногда используют различные коэффициенты приведения свободной длины, которые рассматриваются как "точность" с отличными диапазонами экспонент от тех, которые используются аппаратным обеспечением, на основе которого выполняются среды.

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

Примером скрытой потенциальной ошибки является операция с плавающей десятичной точкой сложения двух семизначных (7) денежных величин, представленных в центах. Каждый из этих элементов исходных данных будет являться величиной в $10,000 диапазоне. Сложение этих двух величин может привести к точному результату в $100,000 диапазоне. Однако представление результата в центах в $100,000 диапазоне в семизначном виде требует, чтобы экспонента не являлась предпочтительной экспонентой, которая бы указывала центы, и точность значения результата будет соответственно уменьшена. Выполнение подобного вычисления с большей точностью приведет к экспоненте, указывающей центы (10-2) в качестве масштаба результата. Существующие исключения не обнаружат эту погрешность масштаба в предоставленном результате.

Некоторые реализации аппаратного обеспечения предоставляют неточный метод обнаружения вышеописанного обстоятельства. В одном из примеров данные проверяются для определения того, является ли старший значащий разряда ненулевым. Такая проверка не указывает на то, что результат может не иметь предпочтительной экспоненты, поскольку некоторые точные результаты будут являться «ложноположительным» указанием. Этот метод эффективно уменьшает полезную точность при одноразрядной эмуляции, поскольку старший значащий разряд используется в качестве указателя потенциальной погрешности масштаба.

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

Публикация заявки США номер 2008/0270508 "Detection of potential need to use a larger data format in performing floating point operations", зарегистрированного 27 апреля 2007 г., предоставляет определение того, является ли безопасным результат операции с плавающей точкой. Показатели результата рассматриваются для определения того, является ли результат безопасным или потенциально небезопасным, как определено пользователем. Для облегчения обнаружения безопасных или потенциально небезопасных результатов предоставляется команда.

Патент США номер 5892697 "Method and apparatus for handling overflow and underflow in processing floating-point numbers", зарегистрированный 19 декабря 1995 г., предоставляет способ обработки чисел с плавающей точкой, каждое число с плавающей точкой имеет, по меньшей мере, знаковую часть, экспонентную часть и дробную часть, включает этапы преобразования предоставления регистра памяти числа с плавающей точкой в предоставление регистра с плавающей точкой; округления преобразованного числа с плавающей точкой; выполнения арифметического вычисления с использованием вышеупомянутого округленного числа, в результате чего получается новое значение с плавающей точкой; и преобразования итогового нового значения регистра с плавающей точкой в регистр памяти с плавающей точкой. Аппаратура для обработки чисел с плавающей точкой содержит средства преобразования значения с плавающей точкой из регистра памяти произвольного доступа в регистр с блоком вычислений с плавающей точкой; средства выбора необходимого типа точности для преобразованного значения; средства выбора необходимого типа округления для преобразованного значения с плавающей точкой; средства выполнения арифметической операции с использованием, по меньшей мере, одного значения с плавающей точкой на основе упомянутых выбранных точности и округления; средства для округления с отбрасыванием младших разрядов результата арифметической операции для установки части мантиссы значения с плавающей точкой; и средства преобразования итогового значения с плавающей точкой из регистра с плавающей точкой в память с произвольным доступом.

Публикация заявки США номер 20040268324 под названием "Method and apparatus for the emulation of high precision floating point instructions", зарегистрированная 2 декабря 2003 г., предоставляет эмулятор высокой точности плавающей точки и связанный с ним способ эмуляции кода предметной программы на целевой машине, где базовые операнды предметной машины обладают отличной от целевой машины точностью. Эмулятор высокой точности плавающей точки обеспечивается для эмуляции команд кода предметной программы, имеющих более высокую точность, чем точность, поддерживаемая архитектурой целевой машины, путем использования промежуточных вычислений, имеющих значения, точность которых превышает поддерживаемую целевой машиной точность.

Следовательно, существует необходимость в решении вышеупомянутой проблемы.

Сущность изобретения

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

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

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

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

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

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

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

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

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

Подробное описание

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

Система и способы, описанные ниже, включают процессор с плавающей десятичной точкой, который может генерировать исключение, которое называется в данной публикации «квантовым исключением», если результат операции с плавающей десятичной точкой не предоставляет предпочтительный квант, например, предпочтительную экспоненту, определенную стандартом IEEE 754-2008. Это генерирование исключения является особенно полезным при использовании программного обеспечения и языков программирования, которые поддерживают десятичный формат, который имеет более высокую точность или диапазон, чем аппаратное обеспечение, на основе которого оно выполняется, поскольку это позволяет обнаружение обработки, которая превышает формат, поддерживаемый аппаратным обеспечением.

В контексте настоящего обсуждения «квант» относится к «единицам» младшего значащего разряда представления с плавающей точкой. Ранее определенные исключения с плавающей точкой обнаруживают некоторые неточности при обработке, но не полностью обнаруживают случай возникновения результата операции с плавающей десятичной точкой, который представляет масштаб или экспоненту, которая является не предпочтительной экспонентой. Другими словами существующие исключения с плавающей точкой не полностью указывают на случай возникновения результата операции с плавающей десятичной точкой, который не содержит экспоненты, которая была бы создана, если бы процессор имел более высокую точность при представлении коэффициента. Стандарт IEEE 754-2008 определяет значение предпочтительного кванта, но не определяет исключение для достижения этого предпочтительного значения в результате операций с плавающей десятичной точкой. Квантовое исключение способов и систем, описанных ниже, имеет подобное другим IEEE исключениям управление. Квантовое исключение также имеет соответственные маску, флаг и код исключения. Это позволяет осуществлять несложную эмуляцию языков программирования с различными точностями и диапазонами с использованием стандартизированных форматов и предоставляет наивысшую точность и диапазон форматов при обнаружении непредвиденных изменений экспоненты.

Событие квантового исключения одного из предпочтительных вариантов осуществления возникает, если операция с плавающей десятичной точкой предоставляет округленный или фиксированный результат. Несмотря на то, что некоторые реализации языка Java содержат раздельные события под названием Округленное и Фиксированное события, квантовое исключение одного из предпочтительных вариантов осуществления преимущественно указывает на то, что точность или диапазон результата был превышен. Механизм отчетности квантового исключения в одном из предпочтительных вариантов осуществления является управляемым и имеет бит маски для управления действиями, возникающими при формулировке наличия исключения. В одном из предпочтительных вариантов осуществления бит маски включается в управляющее слово процессора с плавающей точкой (FPC) для маскировки квантового исключения от прерывания обработчиком исключений программы. Если бит маски равняется единице и возникает квантовое исключение, тогда результат операции с плавающей десятичной точкой, вызывающий исключение, записывается в Регистрах с плавающей точкой (FPRs), и код, идентифицирующий тип исключения, записывается в управляющем слове с плавающей точкой (FPC), и выполнение программы прерывается обработчиком прерываний программы. Если бит маски не установлен, тогда флаг квантового исключения, который является флагом закрепления, устанавливается, и прерывание не осуществляется.

Предпочтительные варианты осуществления настоящего изобретения используют числа с плавающей десятичной точкой. Число с плавающей десятичной точкой, определенное различными стандартами, включая стандарт IEEE-754-2008, имеет три компонента: знаковый бит, экспоненту и значащую часть числа. Величина числа, которая является значением без знака, является продуктом увеличения значащей части числа и основания системы счисления до уровня экспоненты. Для числа с плавающей десятичной точкой основание системы счисления равняется десяти (10). Знак числа может быть как положительным, так и отрицательным, в зависимости от того, равняется ли знаковый бит нулю или единице соответственно.

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

На ФИГ.1 изображен процессор 100 компьютера в соответствии с одним из предпочтительных вариантов осуществления настоящего изобретения. Процессор 100 компьютера содержит процессор команд, который содержит блок вычислений 110 с плавающей десятичной точкой, регистры 108 с плавающей точкой и программный контроллер 124. Блок вычислений 110 с плавающей десятичной точкой принимает команды с плавающей десятичной точкой от программного контроллера 124, который принимает команды управляющей программы, хранящиеся в памяти 152 программы. Команды с плавающей десятичной точкой, высланные на блок вычислений 110 с плавающей десятичной точкой, содержат, например, команды, определяющие выполнение преобразования данных и/или вычислений с плавающей десятичной точкой с использованием одного или нескольких чисел с плавающей десятичной точкой. Блок вычислений 110 с плавающей десятичной точкой принимает операнды с плавающей десятичной точкой путем считывания данных с плавающей десятичной точкой с одного или нескольких исходных регистров внутри регистров 108 с плавающей точкой, выполняет определенную операцию с плавающей десятичной точкой и сохраняет результат в регистре назначения внутри регистров с плавающей точкой. Данные обычно обмениваются между регистрами 108 с плавающей точкой и памятью 15 0 данных.

Блок вычислений с плавающей десятичной точкой одного из предпочтительных вариантов осуществления выполняет операции с использованием чисел с плавающей десятичной точкой в соответствии с применимыми стандартами обработки плавающей точки, такими как Стандарт плавающей точки IEEE-754-2008. Квантовые значения исходных операндов, которые являются входными при выполнении операции с плавающей десятичной точкой, обычно являются базовыми для определения предпочтительного кванта, как определено соответствующим стандартом, в качестве выходного для операции. Вследствие предоставляемой точности в блоке вычислений 110 с плавающей десятичной точкой значения исходных операндов могут привести к результату, который будет иметь квант, отличный от предпочтительного кванта. Квант результата может изменяться по сравнению с предпочтительным квантом, вследствие, например, ограниченной точности программного обеспечения блока вычислений 110 с плавающей десятичной точкой, что вызывает округление промежуточных или итоговых результатов при выполнении определенной операции. Разница между вычислительной точностью аппаратного обеспечения и точностью архитектур программного обеспечения, включая арифметические вычисления с плавающей десятичной точкой, обнаруживаются механизмом обнаружения кванта с помощью этой погрешности, позволяя программному обеспечению обнаруживать, когда появляется необходимость в переключении от точности аппаратного обеспечения к эмулируемой более высокой точности, которая предоставляет оптимизированную реализацию производительности.

Блок вычислений 110 с плавающей десятичной точкой одного из предпочтительных вариантов осуществления содержит детектор 112 квантового исключения. Детектор 112 квантового исключения обнаруживает возникновение результата, предоставленного операцией с плавающей десятичной точкой, который содержит квант, отличный от предпочтительного кванта, где предпочтительный квант является определенным значением, которое определяется, например, на основе значений и/или кванта исходных операндов. Разница между предпочтительным квантом и квантом, результата конкретной операции, может быть вызвана, например, условием переполнения или условием отрицательного переполнения аппаратного обеспечения, вызванным действительными значениями исходных операндов.

Детектор 112 квантового исключения одного из предпочтительных вариантов осуществления формулирует «квантовое исключение» для указания того, что результат, предоставленный блоком вычислений 110 с плавающей десятичной точкой, содержит значение кванта или экспоненты, значение которой отличается от предпочтительного значения кванта. Формулировка и обработка квантового исключения одного из предпочтительных вариантов осуществления являются подобными другим исключениям обработки с плавающей точкой. Формулировка квантового исключения в одном из предпочтительных вариантов осуществления отражается во флагах 122 квантового исключения, которые сохраняются блоком вычислений 110 с плавающей точкой одного из предпочтительных вариантов осуществления, и, которые могут в переменной форме назначить код исключения для идентификации сформулированного исключения с плавающей десятичной точкой, например, квантового исключения.

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

Регистр 106 управления исключением позволяет, например, установку масок для управления ответами на различные исключения с плавающей точкой, такие как исключения, определенные стандартом IEEE 754-2008. Кроме того, для разрешения определения масок для исключения, определенных различными стандартами, один из предпочтительных вариантов осуществления настоящего изобретения содержит дополнительный бит маски для управления обработкой, которая возникает в ответ на формулирование вышеописанного квантового исключения. В одном из предпочтительных вариантов осуществления при возникновении квантового исключения, если бит маски квантового исключения имеет единичное состояние, результат арифметического вычисления, предоставленный блоком вычислений с плавающей десятичной точкой, который содержит квант, отличный от предпочтительного кванта, записывается в регистр 120 результата в регистрах 108 с плавающей точкой и программный контроллер 124 сигнализирует о прерывании выполнения программы обработчиком прерываний программы. При возникновении квантового исключения, если бит маски квантового исключения имеет неединичное состояние, флаг 122 квантового исключения устанавливается в качестве флага закрепления и выполнение программы продолжается без прерывания обработчиком прерываний программы. «Флаг закрепления» флага 122 квантового исключения в одном из предпочтительных вариантов осуществления остается установленным во время обработки последующих команд для обеспечения отсроченного обнаружения и итоговой обработки в ответ на квантовое исключение после выполнения последовательности команд, следующих за возникновением квантового исключения.

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

Включение бита управления квантовым исключением или поля в отдельные команды позволяет использование подобной команды различными способами обнаружения или необнаружения квантовых исключений и предоставляет гибкость при обнаружении исключений неточного результата. Гибкость при обнаружении исключений неточного результата позволяет выполнять различную обработку, если предполагается, что при выполнении арифметической операции будет получен результат, например, с неявным преобразованием или явным преобразованием между типами данных, или, если результатами арифметической операции являются, например, операции округления до ближайшего целого в меньшую или большую сторону, как определено различными языками программирования. Пример среды, где могут возникнуть непредвиденные неявные преобразования, является случаем, где реализации с плавающей десятичной точкой программного обеспечения эмулируются с точностью, превышающей точность аппаратного обеспечения, на основе которого выполняется программное обеспечение. В таком случае среда программного обеспечения на основе своей более высокой точности обнаруживает, что определенное вычисление обеспечивает сохранение предпочтительного кванта. Однако аппаратное обеспечение, которое имеет меньшую точность, должно округлить результат и, таким образом, непредвиденно встречается условие неточности. Однако «неточность», возникающая вследствие явных условий, например, при удалении битов, не должна проявляться в изменении выполнения программы. В случае неявного преобразования между типами данных, о котором программирующее устройство не предупреждает, неточность должна быть обнаружена и выполнение программы должно быть изменено в соответствии с данным случаем. Поскольку неточность является одним из компонентов квантовой погрешности, то в одном из предпочтительных вариантов осуществления предоставляется дополнительное управление для управления обнаружением квантового исключения и обработка отвечает за возникновение таких квантовых исключений на основе команды.

В одном из предпочтительных вариантов осуществления поле управления выбранными командами с плавающей десятичной точкой, которое используется для управления другими исключениями, расширяется для кодирования поля управления квантового исключения, включающего биты управления квантового исключения (например, XqC биты). В одном из вариантов осуществления биты (XqC бит) управления квантовым исключением кодируются в поле (RMC) управления режимом округления выбранных команд с плавающей десятичной точкой. RMC поле в одном из примеров является четырех (4)-битовым полем, где значения, равные 0 и 8-15, были ранее определены для управления исключениями, связанными с конкретными явными режимами округления. В этом примере поле управления квантовым исключением одного из предпочтительных вариантов осуществления предназначается для значений RMC поля, равных 1-7. Значения RMC поля, равные 1-7, обеспечивают квантовые исключения и выбирают определенные режимы округления для этих значений. Установка значений RMC поля для этих выбранных команд, равных 0 или 8-15, приводит к не обнаружению квантовых исключений при выполнении этих команд. Значения RMC поля, равные 1-7, однако приводят к обнаружению квантовых исключений и соответствующему изменению выполнения программы.

На ФИГ.2 изображено выполнение 200 операции с плавающей десятичной точкой в соответствии с одним из предпочтительных вариантов осуществления настоящего изобретения. Выполнение 200 операции с плавающей десятичной точкой начинается с приема 202 команды для операции с плавающей десятичной точкой, которая выполняется блоком вычислений 102 с плавающей десятичной точкой. В одном из предпочтительных вариантов осуществления полученная команда операции с плавающей десятичной точкой является частью программы, хранящейся в памяти 152 программы, и принимается программным контроллером 124 процессора 100 компьютера. Программный контроллер 124 передает полученную команду операции с плавающей десятичной точкой на блок вычислений 110 с плавающей десятичной точкой для выполнения. В одном из предпочтительных вариантов осуществления команда с плавающей десятичной точкой определяет первый исходный операнд, Операнд A 102, и второй исходный операнд, Операнд B 104. Несмотря на то, что эти два исходных операнда изображены в качестве постоянно находящихся в регистрах 108 с плавающей точкой, различные режимы адресации могут быть использованы для определения исходных операндов и операндов назначения, которые размещаются в различных ячейках, как будет ясно специалистам-практикам в данной области техники в свете настоящего обсуждения.

Обработка продолжается в виде считывания 204 первого исходного операнда, Операнда A 102, и считывания 206 второго исходного операнда, Операнда B 104. Предпочтительные варианты осуществления позволяют принимать один или несколько операндов процессором команд с использованием любых подходящих средств. Затем обнаруживается 208 предпочтительный квант для результата, который должен быть предоставлен путем получения операции с плавающей десятичной точкой. В одном из предпочтительных вариантов осуществления предпочтительный квант обнаруживается, по меньшей мере частично, на основе значений двух исходных операндов, Операнда A 102 и Операнда B 104.

Затем выполняется 210 операция с плавающей десятичной точкой, определенная полученной командой с плавающей десятичной точкой. Осуществляется обнаружение 212 того, содержит ли результат выполнения команды с плавающей десятичной точкой предпочтительный квант результата.

Если результат операции с плавающей десятичной точкой не содержит предпочтительный квант, тогда продолжается обработка для обнаружения 220 того, установлена ли маска управления квантовым исключением. Как описано выше различные предпочтительные варианты осуществления предоставляют одну или несколько масок управления для взаимодействия с результатом возникновения квантового исключения. Общая маска управления квантовым исключением может быть установлена в регистре 106 управления исключением, или бит управления квантовым исключением или поле может быть кодировано в команды на машинном языке с плавающей десятичной точкой. В случае кодирования битов управления квантовым исключением в отдельные команды один из предпочтительных вариантов осуществления считывает бит управления квантовым исключением или маску, которая кодируется в команду на машинном языке, и использует это значение на протяжении всего времени выполнения этой команды на машинном языке.

Если маска квантового исключения определяется 220 в качестве установленной, тогда процессор сохраняет 230 результат операции с плавающей десятичной точкой в ячейке 120 результата или назначения, такой как регистр 120 результата регистров 108 с плавающей точкой. Квантовое исключение указывается на выходе программного контроллера 124, вызывая прерывание 232 выполнения программы обработчиком прерываний программы.

Если маска квантового исключения определяется 220 в качестве неустановленной, тогда квантовое исключение не вызывает прерывание, выполнения программы, по квантовое исключение отмечается для последующей обработки. В случае если маска квантового исключения устанавливается, обработка одного из предпочтительных вариантов осуществления сохраняет 222 результат в ячейке 120 результата или назначения, такой как регистр 120 результата регистров 108 с плавающей точкой.

Квантовое исключение указывается путем установки флага 122 квантового исключения посредством флага закрепления для указания, что возникло квантовое исключение.

Если при выполнении 210 операции с плавающей десятичной точкой получается результат, в котором сохранился предпочтительный квант, тогда этот результат сохраняется 214. В одном из предпочтительных вариантов осуществления результат сохраняется в ячейке 120 результата или назначения регистров 108 с плавающей точкой. Следует отметить, что если результат операции с плавающей десятичной точкой сохранил предпочтительный квант, тогда значение или состояние флага 122 квантового исключения не действует. Если состояние флага 122 квантового исключения не действует, тогда указание возникновения квантового исключения, которое возникло при предыдущем выполнении команды с плавающей десятичной точкой, сохраняется во флаге квантового исключения и последующая обработка может рассматривать флаг 122 квантового исключения для определения того, имеет ли квантовое исключение, возникшее во время выполнения последовательности команд, влияние на результат, предоставленный последовательностью команд.

После сохранения 214 результата или установки 224 флага квантового исключения обработка определяет 240, имеются ли еще команды для выполнения. Один из предпочтительных вариантов осуществления настоящего изобретения позволяет выполнение последовательности команд без установленной маски квантового исключения, так что квантовое исключение, возникающее во время выполнения любой команды этой последовательности, вызовет установку флага 122 закрепления квантового исключения и позволит продолжение выполнения этой последовательности команд. Флаг 122 закрепления квантового исключения затем рассматривается, как описано ниже, для определения того, возникло ли квантовое исключение во время последовательности команд. Если флаг 122 закрепления квантового исключения определяется в качестве установленного в конце такой последовательности команд, тогда выполнение программы изменяется для выполнения особой обработки в ответ на возникновение изменения кванта, которое указывает на возникновение квантового исключения.

Если имеется большее количество команд, тогда осуществляется определение 242 того, является ли следующая команда командой с плавающей десятичной точкой. Если следующая команда является командой с плавающей десятичной точкой, тогда обработка возвращается к приему 202 этой команды с плавающей десятичной точкой. Если следующая команда не является командой с плавающей десятичной точкой, тогда обработка возвращается к определению 240 того, имеются ли еще команды для выполнения.

Если больше не остается команд для выполнения, тогда обработка одного из предпочтительных вариантов осуществления продолжает определять 244, установлен ли флаг 122 квантового исключения. Как описано выше, обработка устанавливает флаг квантового исключения, если маска квантового исключения не была установлена и квантовое исключение возникло во время последовательности команд программы. В случае установки флага квантового исключения обработка выполняет 246 обработку для соответствия обнаруженному ранее событию квантового исключения. Затем обработка завершается.

Система обработки информации

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

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

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

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

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

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

На ФИГ.3 изображена блок-схема, иллюстрирующая систему 300 обработки информации, которая может быть использована вместе с процессором 100, который обсуждался выше со ссылкой на ФИГ.1. Система 300 обработки информации основывается на подходящим образом настроенной системе обработки, адаптированной для реализации одного или нескольких предпочтительных вариантов осуществления настоящего изобретения. Аналогично, любая подходящим образом настроенная система обработки может быть использована в качестве системы 300 обработки информации предпочтительными вариантами осуществления настоящего изобретения.

Система 300 обработки информации включает компьютер 302. Компьютер 302 имеет процессор (процессоры) 304, который соединяется с кэш-памятью 306, памятью 322, интерфейсом 308 массовой памяти и аппаратным обеспечением 310 сетевого адаптера. Системная шина 312 объединяет эти системные компоненты.

Интерфейс 308 массовой памяти используется для соединения устройств массовой памяти, таких как устройство 314 для хранения данных, с системой 300 обработки информации. Одним из определенных типов устройств для хранения данных является оптический привод, такой как CD/DVD привод, который может быть использован для сохранения данных и считывания данных с машиночитаемой среды или запоминающего продукта, такого как (но не ограничиваясь им) CD/DVD 316. Другим типом устройств для хранения данных является устройство для хранения данных, настроенное на поддержку, например, операций с использованием файловой системы типа NTFS.

Операционная система (не показана), включенная в память 322, является подходящей многозадачной операционной системой, такой как Linux, UNDO, Windows XP и Windows Server 2003. Предпочтительные варианты осуществления настоящего изобретения могут использовать любую другую подходящую операционную систему. Некоторые из предпочтительных вариантов осуществления настоящего изобретения используют архитектуры, такие как базовый механизм с привязкой к объекту, который позволяет выполнение команд компонентов операционной системы (не показана) на любом процессоре, используемом системой 300 обработки информации. Аппаратное обеспечение 310 сетевого адаптера в одном из предпочтительных вариантов осуществления предоставляет интерфейсы сетевой связи для одной или нескольких сетей 320. Предпочтительные варианты осуществления настоящего изобретения могут быть адаптированы для работы с любыми соединениями передачи данных, включая современную аналоговую и/или цифровую технику, или перспективный механизм сетевых технологий.

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

Примеры неограничительного характера

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

Класс G06F7/499 обработка машинных чисел или исключительных ситуаций, например округления, переполнения

устройство предсказания исключительной ситуации "потеря точности" блока операции "умножение с накоплением" -  патент 2498392 (10.11.2013)
устройство совместного кодирования границ при интервальных вычислениях -  патент 2497180 (27.10.2013)
устройство декодирования совместно хранимых границ при интервальных вычислениях -  патент 2497179 (27.10.2013)
выполнение операций округления в соответствии с инструкцией -  патент 2447484 (10.04.2012)
выполнение операций округления в соответствии с инструкцией -  патент 2420790 (10.06.2011)
процессор с плавающей запятой с пониженной потребляемой мощностью для выбираемой субточности -  патент 2412462 (20.02.2011)
умножитель с фиксированной точкой с предварительным насыщением -  патент 2408057 (27.12.2010)
устройство для округления числа в системе остаточных классов -  патент 2305861 (10.09.2007)
способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой -  патент 2276805 (20.05.2006)

Класс G06F9/302 управление выполнением арифметических операций

Наверх