выполнение операций округления в соответствии с инструкцией

Классы МПК:G06F7/499 обработка машинных чисел или исключительных ситуаций, например округления, переполнения
Автор(ы):,
Патентообладатель(и):ИНТЕЛ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2011-01-25
публикация патента:

Изобретения относятся к процессорам, предназначенным для выполнения различных математических операций с данными. Техническим результатом является уменьшение времени и сложности выполнения операций. Способ включает этапы: принимают в модуле селектора управления процессора инструкцию округления уровня пользователя архитектуры набора команд, имеющую формат, включающий операнд источника, операнд назначения и непосредственно полученное значение; определяют, является ли индикатор отмены режима округления непосредственно полученного значения, сохраненный в регистре управления процессора, активным, путем декодирования непосредственно полученного значения в модуле селектора управления процессора; если это так, получают поле режима округления непосредственно полученного значения и декодируют его в модуле селектора управления для получения режима округления, при этом поле режима округления отделено от индикатора отмены, передают операнд источника и информацию управления режимом округления в модуль с плавающей запятой процессора, соединенный с модулем селектора управления; выполняют операцию округления по операнду источника в модуле плавающей запятой процессора, отвечающего за инструкцию округления уровня пользователя, и в соответствии с информацией управления. 4 н. и 16 з.п. ф-лы, 5 ил., 6 табл. выполнение операций округления в соответствии с инструкцией, патент № 2447484

выполнение операций округления в соответствии с инструкцией, патент № 2447484 выполнение операций округления в соответствии с инструкцией, патент № 2447484 выполнение операций округления в соответствии с инструкцией, патент № 2447484 выполнение операций округления в соответствии с инструкцией, патент № 2447484 выполнение операций округления в соответствии с инструкцией, патент № 2447484

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

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

принимают в модуле селектора управления процессора инструкцию округления уровня пользователя архитектуры набора команд (АНК), имеющую формат, включающий операнд источника, операнд назначения и непосредственно полученное значение;

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

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

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

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

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

4. Система для выполнения операции округления, содержащая:

средство выполнения инструкции округления уровня пользователя архитектуры набора команд (АНК) по первому операнду для получения округленного результата в соответствии с частью режима округления поля управления, ассоциированного с инструкцией округления, если индикатор отмены присутствует в поле управления, при этом индикатор отмены предназначен для обозначения отмены принятого по умолчанию режима округления;

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

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

средство сохранения, соединенное со средством выполнения.

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

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

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

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

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

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

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

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

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

13. Процессор для выполнения операции округления, содержащий:

исполнительные логические элементы для выполнения первой инструкции уровня пользователя для округления, по меньшей мере, одного элемента первого операнда типа "один поток команд - много потоков данных" (ОКМД) в соответствии с одним из множества режимов, предписанных первой инструкцией уровня пользователя, причем первая инструкция уровня пользователя соответствует одной из множества инструкций округления архитектуры набора команд (АНК), каждая из которых предназначена для выполнения операции округления по операнду, имеющему заданный тип элемента данных; и

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

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

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

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

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

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

19. Процессор по п.13, в котором исполнительные логические элементы предназначены для округления, по меньшей мере, одного элемента до значения с плавающей запятой, оцененного как целочисленной значение, в котором первый операнд ОКМД содержит значение с плавающей запятой с ограниченной точностью.

20. Процессор по п.13, в котором исполнительный логический элемент предназначен для округления, по меньшей мере, одного элемента до целочисленного значения, в котором первый операнд ОКМД содержит значение с плавающей запятой.

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

Уровень техники

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

Хотя такие операции округления можно выполнять, как часть различных математических операций, в некоторых архитектурах процессоров ограничена или отсутствует способность выполнения операции округления по элементу данных, как отдельной операции, или без необходимости выполнения множества сложных этапов. Например, процессор может быть выполнен с возможностью выполнения округления значения с ПЗ до целочисленного значения в соответствии с принятым по умолчанию режимом округления. Однако, по различным причинам, данный операнд источника может потребоваться округлять в соответствии с другим режимом. Для выполнения такой операции могут происходить сложные этапы сохранения текущего состояния конфигурации процессора, загрузки нового состояния конфигурации, которая включает в себя информацию, относящуюся к требуемому режиму округления, выполнения операции округления и восстановления первоначального состояния процессора. Эти операции могут требовать значительного времени, увеличивают сложность и потребляют чрезмерное количество циклов процессора. Кроме того, операции округления, выполняемые в процессоре, обычно происходят в соответствии с ограниченным количеством режимов округления, а именно, в соответствии с теми режимами, которые представлены в стандарте Института инженеров по электронике и радиотехнике (IEEE) 754-1985 (опубликован в 1985 г.), хотя, по мере развития новых языков программирования может потребоваться поддержка других режимов округления.

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

На фиг.1 показана блок-схема последовательности операций способа в соответствии с одним вариантом воплощения настоящего изобретения.

На фиг.2 показана блок-схема части процессора в соответствии с одним вариантом воплощения настоящего изобретения.

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

На фиг.4 показана блок-схема последовательности операций способа выполнения операции округления в соответствии с вариантом воплощения настоящего изобретения.

На фиг.5 показана блок-схема системы в соответствии с вариантом воплощения настоящего изобретения.

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

В различных вариантах воплощения могут использоваться различные инструкции округления архитектуры набора команд (ISA, AHK) для эффективного выполнения операции округления в процессоре, например, в модуле с плавающей запятой (FPU, МПЗ) процессора. В дополнение к режимам округления, представленным в стандарте Института инженеров по электронике и радиотехнике (IEEE) 754-1985 (опубликованном в 1985 г.) (здесь стандарт IEEE для двоичной арифметики с плавающей запятой или стандарт 754 IEEE), варианты воплощения можно использовать для выполнения операции округления в соответствии с дополнительными режимами округления. Например, в некоторых вариантах воплощения инструкции могут обеспечивать поддержку операций округления для половины значения от нуля и операций округления до значений, расположенных дальше от нуля, как описано ниже. Кроме того, эти операции округления можно использовать с множеством типов данных. В некоторых вариантах воплощения операции округления можно выполнять для типов данных "один поток команд - много потоков данных" (SIMD, ОКМД) таким образом, чтобы инструкцию можно было выполнять по расширенным типам данных, таким как элементы упакованных данных, где множество элементов данных упакованы в одном местоположении, таком как расширенный регистр процессора.

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

В различных вариантах воплощения управление выполнением может осуществляться, по меньшей мере, частично, на основе информации, принятой с инструкцией, например, на основе непосредственно полученных данных, принятых с инструкцией. В других вариантах воплощения такие непосредственно полученные данные могут отменять принятый по умолчанию режим округления, используемый в данный момент времени процессором. В таких случаях отмены непосредственно полученные данные могут дополнительно обеспечить управление режимом округления. Также, кроме того, непосредственно полученные данные могут обеспечивать отмену исключений точности (то есть подавление точности). Таким образом, непосредственно полученные данные можно использовать для обеспечения "неклейкого" управления конкретной операцией округления, таким образом, что операцию можно выполнять при минимальном количестве циклов. Это может быть справедливо, когда непосредственные данные, принимаемые совместно с инструкцией, включают в себя информацию управления округлением, при этом может не требоваться обновлять такую информацию, присутствующую в регистре конфигурации, таком как регистр расширенного управления и статуса (CSR, РУС), например, РУС мультимедийного расширения (MXCSR, РУСМР), присутствующего в процессоре в соответствии с архитектурой Intel® (например, архитектурой IA-32). Однако следует понимать, что варианты воплощения можно использовать в различных типах процессоров, и объем настоящего изобретения не ограничивается в этом отношении.

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

Как снова показано на фиг.1, управление переходит от блока 110 к блоку 115 принятия решения. В блоке 115 принятия решения может быть определено, отменяют ли непосредственно полученные данные режим округления регистра конфигурации. Таким образом, поле непосредственно полученных данных может включать в себя индикатор отмены, который обозначает, следует ли отменить принятый по умолчанию режим округления. В различных вариантах воплощения такой принятый по умолчанию режим округления может присутствовать в поле регистра конфигурации, таком как РУС, например, РУСМР, хотя объем настоящего изобретения не ограничивается в этом отношении. Если непосредственные данные включают в себя индикатор отмены, управление переходит к блоку 120. В блоке 120 операнд источника, идентифицированный по инструкции, может быть отправлен, например, в модуль для операций с плавающей запятой (МПЗ) процессора. Кроме того, операнд источника может быть отправлен с информацией, для управления режимом округления, для операции округления. Информация управления может быть получена из непосредственно полученных данных, то есть, как представлено в поле режима округления, непосредственно полученных данных. Как будет описано ниже, в некоторых вариантах воплощения модуль управления, такой как модуль селектора управления процессора, может принимать инструкцию и непосредственно полученные данные и декодировать непосредственно полученные данные для определения, следует ли отменить принятый по умолчанию режим округления, и если это так, получает режим округления, представленный в непосредственно полученных данных.

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

В любом случае, управление переходит из обоих блоков 120 и 125 в блок 130, где может быть выполнена операция округления. Операция округления удаляет дробную точность входа (то есть операнда источника) в соответствии с режимом округления. В различных вариантах воплощения могут быть реализованы различные способы выполнения операций округления. Например, во многих вариантах воплощения МПЗ может включать в себя сумматор и модуль округления для выполнения операции округления. Для выполнения режимов округления в соответствии со стандартом 754 IEEE, в сумматоре может быть предусмотрен операнд источника, как первый операнд и постоянное значение, например, ноль, в качестве второго операнда. Выход сумматора может затем быть подан в модуль округления, который может округлять результат в соответствии с выбранным режимом работы. Модуль округления может, таким образом, округлять свое входное значение до целочисленного результата с плавающей запятой.

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

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

Если вместо этого возникает исключение точности, управление может быть передано в блок 150 принятия решения. В блоке 150 принятия решения может определяться, включают ли в себя непосредственно полученные данные поле для подавления исключения точности. Таким образом, в некоторых вариантах воплощения непосредственно полученные данные могут включать в себя поле подавления. Значение этого поля может обозначать, должна ли ассоциированная инструкция округления подавлять исключение точности, если такое возникает. Если присутствует индикатор подавления точности, даже если возникает исключение точности, никакие дополнительные действия не предпринимают, и способ 100 может быть закончен. Если вместо этого непосредственно полученные данные не включают в себя индикатор подавления исключения точности, управление может перейти к блоку 160. В блоке 160 флаг исключения точности может быть установлен в регистре статуса. Например, в некоторых вариантах воплощения регистр статуса может соответствовать РУСМР, хотя объем настоящего изобретения не ограничивается в этом отношении. На основе состояния этого флага в регистре статуса может возникнуть исключение точности (например, если флаг будет не маскированным). Если это так, соответствующая обработка, например, через программный обработчик, может быть выполнена для обработки исключения. Если вместо этого флаг будет маскирован, даже если возникает исключение точности, и это отмечено флагом в регистре статуса, может не быть предпринято никакое действие в отношении установленного флага. Хотя это описано в данном конкретном воплощения в варианте выполнения по фиг.1, следует понимать, что объем настоящего изобретения не ограничивается в этом отношении.

Теперь на фиг.2 показана блок-схема части процессора в соответствии с одним вариантом воплощения настоящего изобретения. Как показано на фиг.2, процессор 200 может включать в себя модуль 210 селектора управления, который подключен для приема поступающей информации инструкции, например, полученной с помощью микроопераций (µops, микрооп.), из регистра 205 (который может представлять собой регистр процессора общего назначения), и непосредственно полученные данные, ассоциированные с ним. Микрооп. может генерироваться в соответствии с одной инструкцией АНК для выполнения заданной операции округления. В различных вариантах воплощения модуль 210 селектора управления, который может быть воплощен в аппаратных средствах, программных средствах, встроенных программных средствах или с использованием их комбинации, может декодировать непосредственно полученные данные. На основе непосредственно полученных данных, может быть определено, следует ли отменить текущий режим округления процессора, например, как представлено в регистре управлении или в конфигурации, в которой сохранено текущее состояние 220 управления округлением. Если это так, модуль 210 селектора управления может декодировать поле режима непосредственно полученных данных, а именно, поле режима округления для определения правильного режима округления.

Модуль 210 селектора управления может быть соединен с модулем 240 с плавающей запятой (МПЗ), для предоставления в него инструкции управления на основе поступающей информацией. Как дополнительно показано на фиг.2, расширенный файл регистра, такие как так называемые расширенные (ХММ, ДРП, диспетчер расширенной памяти) регистры 230, может присутствовать в процессоре 200, который может включать в себя регистры, идентифицированные в инструкции, как операнд источника и операнд назначения для операции округления. Регистры 230 ДРП, таким образом, могут быть соединены с МПЗ 240, для предоставления операндов источника в них и приема из них операндов назначения.

В различных вариантах воплощения МПЗ 240 может включать в себя различные схемы, для выполнения операций над данными. В варианте воплощения, показанном на фиг.2, МПЗ 240 включает в себя сумматор 242 МПЗ. В частности, как показано на фиг.2, сумматор 242 МПЗ может быть подключен для приема поступающих операндов, например, первого операнда источника и второго операнда источника (то есть операндов S1 и S2). МПЗ 240 также может включать в себя блок 244 округления МПЗ, соединенный с выходом сумматора 242 МПЗ. В различных вариантах воплощения сумматор 242 МПЗ может генерировать бесконечно точный результат операции. Однако заданные ограничения по месту хранения и другие ограничения приводят к тому, что он может быть округлен для получения конечного результата в требуемом формате, например, элемент с плавающей запятой с одиночной точностью или двойной точностью. В соответствии с этим, блок 244 округления МПЗ может принимать бесконечно точный результат из сумматора 242 МПЗ и выполнять операцию округления в соответствии с текущим режимом округления процессора 200, или на основе управления от непосредственно полученных данных, полученных с инструкцией, то есть через модуль 210 селектора управления. Следует отметить, что, хотя блок 244 округления МПЗ обычно может принимать бесконечно точные результаты, возникающие как результат математических операций в сумматоре 242МПЗ, в различных вариантах воплощения, операнд источника, в котором предоставлены инструкции округления, уже может находиться в формате с ограниченной точностью. В этих случаях блок 244 округления МПЗ может принимать свое входное значение (например, соответствующее операнду источника для данной инструкции округления) и генерировать округленный результат, соответствующий, например, ближайшему целочисленному значению.

Таким образом, на основе заданной инструкции округления, МПЗ 240 может выполнять операцию округления по заданному операнду источника, например, из одного из регистров 230 ДРП, под управлением информации, поступающей из модуля 210 селектора управления. Кроме того, по окончании операции округления, результат может быть сохранен, например, в другом регистре, в пределах регистра 230 ДРП. Если во время операции должно возникнуть исключение точности, обычно флаг можно установить в регистре 225 статуса ПЗ, для обозначения этого. Однако, в различных вариантах воплощения, если непосредственно полученные данные, ассоциированные с инструкцией округления, включают в себя подавление точности, такой флаг не может быть установлен. Хотя выше были описаны конкретные варианты воплощения, в вариантах выполнения, представленных на фиг.2, следует понимать, что объем настоящего изобретения не ограничивается в этом отношении. Например, в некоторых вариантах воплощения состояния управления и статуса, например, как представлено состоянием 220 управления округления и регистром 225 статуса ПЗ, могут быть сохранены в одном РУС, таком как РУСМР.

Следует отметить, что непосредственно полученные данные могут быть переданы в модуль 210 селектора управления в различных формах. Например, в некоторых вариантах воплощения непосредственно полученные данные могут быть переданы в форме элемента данных с одним байтом, хотя объем настоящего изобретения не ограничивается этим. Кроме того, могут быть реализованы различные способы кодирования информации управления в элементе непосредственно полученных данных. Рассмотрим теперь фиг.3, на которой показана блок-схема элемента непосредственно полученных данных в соответствии с одним вариантом воплощения настоящего изобретения. Как показано на фиг.3, элемент 300 непосредственно полученных данных может представлять собой 8-битное слово, включающее в себя индикатор 310 отмены, поле 320 управления режимом, индикатор 330 отмены точности, и зарезервированное поле 340. Хотя на фиг.3 показан этот конкретный пример выполнения варианта воплощения, объем настоящего изобретения не ограничивается этим.

В варианте воплощения, показанном на фиг.3, индикатор 310 отмены можно использовать для определения состояния отмены инструкции округления, ассоциированной с элементом 300 непосредственно полученных данных. Как показано в приведенной ниже Таблице 1, индикатор 310 отмены может быть установлен как логически низкий уровень для обозначения отмены принятого по умолчанию режима округления (например, как выражено регистром конфигурации, таким как РУСМР). Логически высокое значение обозначает использование принятого по умолчанию режима.

Таблица 1
Индикатор отмены режима округления
0:Использовать биты 1:3 непосредственно полученных данных
1:Использовать принятый по умолчанию режим округления

Если индикатор 310 отмены обозначает, что принятый по умолчанию режим округления должен быть отменен, поле 320 режима округления может быть декодировано для определения режима округления, ассоциированного с инструкцией округления. Как показано в Таблице 2, приведенной ниже, в некоторых вариантах воплощения могут поддерживаться шесть режимов округления, включающие в себя четыре режима округления, определенные по стандарту 754 IEEE, вместе с двумя расширенными режимами округления, которые будут описаны дополнительно ниже.

Таблица 2
Поле режима округления
000: Ближайшие четные
001: в сторону -выполнение операций округления в соответствии с инструкцией, патент № 2447484
010: в сторону +выполнение операций округления в соответствии с инструкцией, патент № 2447484
011: Сократить (Округлить до нуля)
100: До половины значения от нуля
101: Округлить дальше от нуля

Элемент 300 непосредственно полученных данных дополнительно включает в себя индикатор 330 подавления точности, который может быть установлен для обозначения допустимости неточных результатов таким образом, что ни одно исключение точности, даже, если они возникают во время работы соответствующей инструкции, не приведет к установке флага исключения в регистре статуса. В частности, как показано в Таблице 3, приведенной ниже, индикатор 330 подавления точности может принимать следующие формы:

Таблица 3
Индикатор подавления точности
1:Неточное поле (поле точности) не обновляется
0:нормальное поведение

Следует отметить, что индикатор 330 подавления точности можно использовать совместно с инструкциями на уровне пользователя различных языков, например, С99, Fortran и Java. Наконец, зарезервированное поле 340, в некоторых вариантах воплощения может быть зарезервировано для дополнительной информации. Следует дополнительно отметить, что конкретные значения, представленные в Таблицах 1-3, вместе с конкретным местом расположения и размером индикаторов и полей, не ограничиваются этим, и различные изменения, модификации и расширения находятся в пределах объема настоящего изобретения.

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

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

Таблица 4
ИнструкцияОписание
ROUNDPD xmm 1, xmm2/m128, imm8Округленные упакованные значения с плавающей запятой и двойной точностью в xmm2/m128 и размещение результата в xmm1. Режим округления определен по imm8.
ROUNDPS xmm 1, xmm2/m128, imm8 Округленные упакованные значения с плавающей запятой и одинарной точностью в xmm2/m128 и размещение результата в xmm1. Режим округления определен по imm8.
ROUNDSD xmm 1, xmm2/m64, imm8 Округлить малые упакованные значения с плавающей запятой с двойной точностью в xmm2/m64 и разместить результат в xmm1. Режим округления определен по imm8.
ROUNDSS xmm 1, xmm2/m32, imm8 Округлить малые упакованные значения с плавающей запятой с одинарной точностью в xmm2/m32 и поместить результат в xmm1. Режим округления определен по imm8.

В качестве примера того, как работают эти инструкции АНК, можно использовать инструкцию ROUNDPD, для округления двух значений с плавающей запятой с двойной точностью в операнде источника (то есть во втором операнде, который может быть получен из регистра ДРП или из памяти) с помощью режима округления, определенного в непосредственно полученном элементе (то есть IMM8) и, поместить результат в операнд назначения (то есть в первый операнд, который может представлять собой регистр ДРП). Непосредственно полученный элемент может определять поля управления для операции округления. Со ссылкой снова на Таблицы 1-3, бит 4 (то есть индикатор 330 на фиг.3) непосредственно полученных данных может управлять поведением процессора для исключения точности, в то время как бит 0 (то есть индикатор 310 по фиг.3) может выбирать источник управления режимом округления. В конечном итоге, биты 3:1 (то есть поле 320 на фиг.3) могут определять "неклейкое" значение режима округления. Следует отметить, что в некоторых вариантах воплощения, если какой-либо операнд источника представляет сигнал, а не число (SNaN), тогда он будет преобразован в скрытый NaN (QNaN). Если регистр конфигурации установлен для денормализованных чисел, как для нулей (DAZ, ДКН), тогда денормализованные числа будут преобразованы в нуль перед округлением. Если регистр конфигурации установлен для выровненного денормализованного числа в нули (FTZ, ВДН), тогда денормализованные числа могут быть преобразованы в ноль после округления.

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

ROUNDPS xmm0, xmm1, imm8 (округлить до ближайшего целого числа).

Эта инструкция может принимать упакованные значения с одиночной точностью в первом регистре, то есть, xmm1, округлять каждое значение до ближайшего целочисленного значения, как представлено режимом округления непосредственно полученных данных (то есть imm8), и сохранять результат во втором регистре, то есть xmm0. В Таблице 5, приведенной ниже, показаны представительные значения, присутствующие в операнде источника (то есть xmm1), каждое из которых соответствует значению с плавающей запятой с ограниченной точностью, и полученные в результате округленные значения сохраняют в операнде назначения (то есть xmm0), которое соответствует числам с плавающей запятой с целочисленным значением, а именно, ближайшим целочисленным значениям для исходных значений источника.

Таблица 5
1,01f2,9f 3,6f4,2f xmm1
1,01f 3,0f 4,0f4,0f xmm0

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

В различных вариантах воплощения непосредственно полученные данные могут предоставлять информацию управления для выполнения режима округления, который отличается от операции округления в соответствии со стандартом 754 IEEE. Эти режимы округления могут включать в себя режим округления для половины значения от нуля и режим округления до значений, расположенных дальше от нуля. На фиг.4 показана блок-схема последовательности операций способа выполнения операции округления в соответствии с вариантом воплощения настоящего изобретения. Как показано на фиг.4, способ 400 можно использовать для выполнения этих расширенных режимов округления. Способ 400 может начинаться путем определения, является ли операнд источника большим или равным нулю (блок 410 принятия решения). Если это так, управление может перейти в блок 420, где заданное значение может быть вычтено из операнда источника (блок 420). Например, сумматор ПЗ может вычитать заданное значение из операнда источника на основе определенного выбранного режима округления. Конечно, такое вычитание можно выполнять как суммирование с отрицательным значением для заданного значения. Затем выбранную операцию округления можно выполнять по результату этой суммы ПЗ (блок 430). В некоторых вариантах воплощения операции округления в соответствии со стандартом 754 IEEE, такие как отсечение (также называется округлением до нуля), могут выполняться по результату для получения результата расширенного режима округления. Если вместо этого в блоке 410 принятия решения определяют, что операнд источника меньше нуля, управление переходит в блок 440. В блоке 440 заданное значение (которое может представлять собой то же значение, что и выше) может быть добавлено к операнду источника в сумматоре ПЗ. Затем, в блоке 450 выбранная операция округления может быть выполнена по результату, для получения полученного в результате округленного значения.

Хотя объем настоящего изобретения не ограничивается в этом отношении, операция округления до половины значения от нуля может использовать значение 0,5 в качестве его заданного значения, в то время как операция округления до значений, расположенных дальше от нуля, может использовать 1-, что соответствует ближайшему репрезентативном значению ПЗ, меньшему чем, но не равному единице. Для значений ПЗ с одинарной точностью и двойной точностью 0,5 может соответствовать, соответственно, 0×3f000000 и 0×3fe0000000000000. Для значений ПЗ с одинарной точностью и двойной точностью, -0,5 может соответствовать, соответственно, 0×bf000000 и 0×bfe000000000000. Для значений ПЗ с одинарной точностью и двойной точностью, 1 - может соответствовать, соответственно, 0×3f7fffff и 0×3fefffffffffffff. Для значений ПЗ с одинарной точностью и двойной точностью, 1- может соответствовать, соответственно, 0×bf7fffff и 0×bfefffffffffffff. В Таблице 6, представленной ниже, показаны примеры кода источника для выполнения этих операций.

Таблица 6 выполнение операций округления в соответствии с инструкцией, патент № 2447484
ROUND_HALF_AWAY_ZERO(A): выполнение операций округления в соответствии с инструкцией, патент № 2447484
IF (A<=0)выполнение операций округления в соответствии с инструкцией, патент № 2447484
Aвыполнение операций округления в соответствии с инструкцией, патент № 2447484 ROUND_TOWARD_ZERO(A-0.5) выполнение операций округления в соответствии с инструкцией, патент № 2447484
ELSE IF (A>0)выполнение операций округления в соответствии с инструкцией, патент № 2447484
Aвыполнение операций округления в соответствии с инструкцией, патент № 2447484 ROUND_TOWARD_ZERO(A+0.5) выполнение операций округления в соответствии с инструкцией, патент № 2447484
2) Округление для значений, расположенных дальше от нуля (А). выполнение операций округления в соответствии с инструкцией, патент № 2447484 Результат должен представлять собой значение, расположенное ближе всего к и не меньше по магнитуде, чем бесконечно точный результат.выполнение операций округления в соответствии с инструкцией, патент № 2447484 выполнение операций округления в соответствии с инструкцией, патент № 2447484
IF (А<=0)выполнение операций округления в соответствии с инструкцией, патент № 2447484
Aвыполнение операций округления в соответствии с инструкцией, патент № 2447484 ROUND_TOWARD_ZERO(A-1) выполнение операций округления в соответствии с инструкцией, патент № 2447484
ELSE IF (A>0)выполнение операций округления в соответствии с инструкцией, патент № 2447484
Aвыполнение операций округления в соответствии с инструкцией, патент № 2447484 ROUND_TOWARD_ZERO(A+1) выполнение операций округления в соответствии с инструкцией, патент № 2447484

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

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

Варианты воплощения могут быть выполнены в множестве разных типов системы. На фиг.5 показана блок-схема системы в соответствии с вариантом воплощения настоящего изобретения. Как показано на фиг.5, мультипроцессорная система 500 представляет собой систему взаимного соединения от точки к точке, и включает в себя первый процессор 570 и второй процессор 580, соединенный через взаимное соединение 550 от точки к точке. Как показано на фиг.5, каждый из процессоров 570 и 580 может представлять собой многоядерные процессоры, включающие в себя первое и второе ядра процессоров (то есть ядра 574а и 574b процессоров и ядра 584а и 584b процессоров). Следует отметить, что каждое из ядер может выполнять операции округления, в ответ на инструкции уровня АНК, в соответствии с вариантом воплощения настоящего изобретения.

Первый процессор 570 дополнительно включает в себя интерфейсы 576 и 578 из точки в точку (Р-Р, Т-Т). Аналогично, второй процессор 580 включает в себя интерфейсы 586 и 588 Т-Т. Как показано на фиг.5, концентраторы 572 и 582 контроллера памяти (МСН, ККП) соединяют процессоры с соответствующими запоминающими устройствами, а именно, с запоминающим устройством 532 и запоминающим устройством 534, которые могут представлять собой часть основного запоминающего устройства, локально соединенного с соответствующими процессорами.

Первый процессор 570 и второй процессор 580 могут быть соединены с набором 590 микросхем через межсоединения 552 и 554 Т-Т, соответственно. Как показано на фиг.5, набор 590 микросхем включает в себя интерфейсы 594 и 598 Т-Т. Кроме того, набор 590 микросхем включает в себя интерфейс 592, для соединения набора 590 микросхем с графическим процессором 538, обладающим высокими рабочими характеристиками. В одном варианте воплощения шину 539 ускоренного графического порта (AGP, УГП) можно использовать для соединения графического процессора 538 с набором 590 микросхем. Шина 539 может соответствовать спецификации Accelerated Graphics Port Interface Specification, Revision 2.0, published May 4, 1998, by Intel Corporation, Santa Clara, California. В качестве альтернативы, эти компоненты могут быть соединены через межсоединение 539 из точки в точку.

В свою очередь, набор 590 микросхем может быть соединен с первой шиной 516 через интерфейс 596. В одном варианте воплощения первая шина 516 может представлять собой шину межсоединения периферийных компонентов (PCI, МПК), как определено в соответствии со спецификацией PCI Local Bus Specification, Production Version, Revision 2.1, dated June 1995 или такую шину, как шина PCI Expressвыполнение операций округления в соответствии с инструкцией, патент № 2447484 или другую шину межсоединения входа/выхода (I/O, В/В) третьего поколения, хотя объем настоящего изобретения не ограничивается этим.

Как показано на фиг.5, различные В/В устройства 514 могут быть соединены с первой шиной 516 через мост 518 между шинами, который соединяет первую шину 516 со второй шиной 520. В одном варианте воплощения вторая шина 520 может представлять собой шину с малым количеством линий (LPC, МКЛ). Различные устройства могут быть соединены со второй шиной 520, включающей в себя, например, клавиатуру/мышь 522, устройство 526 передачи данных и модуль 528 сохранения данных, такой как привод диска или другое устройство сохранения информации большой емкости, которое может включать в себя код 530, в одном варианте воплощения. Кроме того, аудио В/В 524 может быть соединен со второй шиной 520. Следует отметить, что возможны другие архитектуры. Например, вместо архитектуры из точки в точку по фиг.5, система может быть воплощена как многоточечная шина, или может использоваться другая подобная архитектура.

Варианты воплощения могут быть выполнены в коде и могут быть сохранены на носителе записи, на котором записаны инструкции, которые можно использовать для программирования системы для выполнения этих инструкций. Носитель записи может включать в себя, но не ограничивается этим, диск любого типа, включая в себя гибкие диски, оптические диски, запоминающие устройства на компакт-дисках, предназначенных только для считывания (CD-ROM), компакт-дисках, предназначенных для перезаписи (CD-RW), и магнитооптических дисках, в полупроводниковых устройствах, таких как постоянные запоминающие устройства (ПЗУ), оперативные запоминающие устройства (ОЗУ), такие как динамические оперативные запоминающие устройства (DRAM, ДОЗУ), статические оперативные запоминающие устройства (SRAM, СОЗУ), стираемые программируемые постоянные запоминающие устройства (EPROM, СППЗУ), запоминающие устройства типа флэш, электрически стираемые программируемые постоянные запоминающие устройства (EEPROM, ЭСППЗУ), магнитные или оптические карты, или носители любого другого типа, пригодные для сохранения электронных инструкций.

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

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

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