RU2447484C1 - Выполнение операций округления в соответствии с инструкцией - Google Patents

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

Info

Publication number
RU2447484C1
RU2447484C1 RU2011102731/08A RU2011102731A RU2447484C1 RU 2447484 C1 RU2447484 C1 RU 2447484C1 RU 2011102731/08 A RU2011102731/08 A RU 2011102731/08A RU 2011102731 A RU2011102731 A RU 2011102731A RU 2447484 C1 RU2447484 C1 RU 2447484C1
Authority
RU
Russia
Prior art keywords
rounding
mode
instruction
operand
value
Prior art date
Application number
RU2011102731/08A
Other languages
English (en)
Other versions
RU2011102731A (ru
Inventor
Ронен ЗОХАР (US)
Ронен ЗОХАР
Шейн СТОРИ (US)
Шейн СТОРИ
Original Assignee
Интел Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интел Корпорейшн filed Critical Интел Корпорейшн
Publication of RU2011102731A publication Critical patent/RU2011102731A/ru
Application granted granted Critical
Publication of RU2447484C1 publication Critical patent/RU2447484C1/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

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

Description

Уровень техники
Процессоры выполняют различные математические операции с данными. Данные могут быть данными разных типов, включающими в себя, например, целочисленные значения и значения с плавающей запятой (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: в сторону -∞
010: в сторону +∞
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,01f 2,9f 3,6f 4,2f xmm1
1,01f 3,0f 4,0f 4,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
ROUND_HALF_AWAY_ZERO(A):
IF (A<=0)
A←ROUND_TOWARD_ZERO(A-0.5)
ELSE IF (A>0)
A←ROUND_TOWARD_ZERO(A+0.5)
2) Округление для значений, расположенных дальше от нуля (А). “Результат должен представлять собой значение, расположенное ближе всего к и не меньше по магнитуде, чем бесконечно точный результат.”
IF (А<=0)
A←ROUND_TOWARD_ZERO(A-1)
ELSE IF (A>0)
A←ROUND_TOWARD_ZERO(A+1)
В этих примерах операция 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™ или другую шину межсоединения входа/выхода (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, ЭСППЗУ), магнитные или оптические карты, или носители любого другого типа, пригодные для сохранения электронных инструкций.
В то время как настоящее изобретение было описано со ссылкой на ограниченное количество вариантов воплощения, для специалиста в данной области техники будет понятно множество модификаций и вариантов на его основе. Предполагается, что приложенная формула изобретения охватывает все такие модификации и варианты, которые попадают в пределы истинной сущности и объема настоящего изобретения.

Claims (20)

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, в котором исполнительный логический элемент предназначен для округления, по меньшей мере, одного элемента до целочисленного значения, в котором первый операнд ОКМД содержит значение с плавающей запятой.
RU2011102731/08A 2006-09-22 2007-09-21 Выполнение операций округления в соответствии с инструкцией RU2447484C1 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/525,420 2006-09-22
US11/525,420 US9223751B2 (en) 2006-09-22 2006-09-22 Performing rounding operations responsive to an instruction

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2009115188/08A Division RU2420790C2 (ru) 2006-09-22 2007-09-21 Выполнение операций округления в соответствии с инструкцией

Publications (2)

Publication Number Publication Date
RU2011102731A RU2011102731A (ru) 2012-03-20
RU2447484C1 true RU2447484C1 (ru) 2012-04-10

Family

ID=39200854

Family Applications (2)

Application Number Title Priority Date Filing Date
RU2011102731/08A RU2447484C1 (ru) 2006-09-22 2007-09-21 Выполнение операций округления в соответствии с инструкцией
RU2009115188/08A RU2420790C2 (ru) 2006-09-22 2007-09-21 Выполнение операций округления в соответствии с инструкцией

Family Applications After (1)

Application Number Title Priority Date Filing Date
RU2009115188/08A RU2420790C2 (ru) 2006-09-22 2007-09-21 Выполнение операций округления в соответствии с инструкцией

Country Status (7)

Country Link
US (11) US9223751B2 (ru)
JP (6) JP4990977B2 (ru)
KR (1) KR100947138B1 (ru)
CN (6) CN103593165B (ru)
DE (1) DE112007001989B4 (ru)
RU (2) RU2447484C1 (ru)
WO (1) WO2008036944A1 (ru)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223751B2 (en) 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US8327120B2 (en) * 2007-12-29 2012-12-04 Intel Corporation Instructions with floating point control override
US8046400B2 (en) 2008-04-10 2011-10-25 Via Technologies, Inc. Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor
CN101930354B (zh) * 2009-07-28 2014-03-12 威盛电子股份有限公司 微处理器及其执行指令的方法
US8407271B2 (en) * 2009-08-28 2013-03-26 Advanced Micro Devices, Inc. Method for floating point round to integer operation
US8914430B2 (en) 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
EP3805921B1 (en) 2011-04-01 2023-09-06 INTEL Corporation Vector friendly instruction format and execution thereof
US10209986B2 (en) * 2011-12-22 2019-02-19 Intel Corporation Floating point rounding processors, methods, systems, and instructions
WO2013101119A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Method and apparatus for controlling a mxcsr
EP2798466B1 (en) * 2011-12-30 2017-12-13 Intel Corporation Floating point round-off amount determination processors, methods, systems, and instructions
KR101835494B1 (ko) * 2013-11-27 2018-03-08 인텔 코포레이션 프로세서의 버퍼의 자율 제어
CN106406810B (zh) * 2014-07-02 2019-08-06 上海兆芯集成电路有限公司 微处理器及其方法
US9817661B2 (en) * 2015-10-07 2017-11-14 Arm Limited Floating point number rounding
CN106485318B (zh) * 2015-10-08 2019-08-30 上海兆芯集成电路有限公司 具有混合协处理器/执行单元神经网络单元的处理器
US20170177336A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Hardware cancellation monitor for floating point operations
US9996319B2 (en) * 2015-12-23 2018-06-12 Intel Corporation Floating point (FP) add low instructions functional unit
US20180173527A1 (en) * 2016-12-15 2018-06-21 Optimum Semiconductor Technologies, Inc. Floating point instruction format with embedded rounding rule
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10310814B2 (en) 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US11372643B2 (en) 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
US10908878B2 (en) * 2018-11-26 2021-02-02 Nvidia Corporation Dynamic directional rounding
US11099853B2 (en) * 2019-02-15 2021-08-24 International Business Machines Corporation Digit validation check control in instruction execution
CN110134436B (zh) * 2019-05-05 2021-03-02 飞依诺科技(苏州)有限公司 超声数据打包处理方法及系统
US11327923B2 (en) 2019-09-04 2022-05-10 SambaNova Systems, Inc. Sigmoid function in hardware and a reconfigurable data processor including same
US11327713B2 (en) 2019-10-01 2022-05-10 SambaNova Systems, Inc. Computation units for functions based on lookup tables
US11328038B2 (en) 2019-11-25 2022-05-10 SambaNova Systems, Inc. Computational units for batch normalization
US11150872B2 (en) * 2019-12-17 2021-10-19 SambaNova Systems, Inc. Computational units for element approximation
CN113031914B (zh) * 2019-12-24 2023-05-16 龙芯中科技术股份有限公司 浮点舍入模式的控制方法、装置、设备及存储介质
US11836629B2 (en) 2020-01-15 2023-12-05 SambaNova Systems, Inc. Computationally efficient softmax loss gradient backpropagation
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US20220414182A1 (en) * 2021-06-26 2022-12-29 Intel Corporation Apparatuses, methods, and systems for instructions for matrix multiplication instructions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2018921C1 (ru) * 1992-06-19 1994-08-30 Институт точной механики и вычислительной техники им.С.А.Лебедева РАН Устройство для нормализации и округления вещественных чисел
US5696709A (en) * 1995-03-31 1997-12-09 International Business Machines Corporation Program controlled rounding modes
US6058410A (en) * 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
US6233672B1 (en) * 1997-03-06 2001-05-15 Advanced Micro Devices, Inc. Piping rounding mode bits with floating point instructions to eliminate serialization

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56135236A (en) * 1980-03-24 1981-10-22 Casio Comput Co Ltd Numeric data displaying system
JPH0469734A (ja) * 1990-07-11 1992-03-04 Toshiba Corp 浮動小数点加減算のアンダーフロー例外発生予測回路
US5450607A (en) 1993-05-17 1995-09-12 Mips Technologies Inc. Unified floating point and integer datapath for a RISC processor
US5516658A (en) * 1993-08-20 1996-05-14 Immunex Corporation DNA encoding cytokines that bind the cell surface receptor hek
US5404324A (en) * 1993-11-01 1995-04-04 Hewlett-Packard Company Methods and apparatus for performing division and square root computations in a computer
US5487022A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Normalization method for floating point numbers
EP0685794A1 (en) * 1994-06-01 1995-12-06 Advanced Micro Devices, Inc. System for generating floating point test vectors
US5631859A (en) * 1994-10-27 1997-05-20 Hewlett-Packard Company Floating point arithmetic unit having logic for quad precision arithmetic
US5812439A (en) * 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
JPH09128217A (ja) * 1995-10-31 1997-05-16 Hitachi Ltd 丸め処理回路
US5886915A (en) * 1995-11-13 1999-03-23 Intel Corporation Method and apparatus for trading performance for precision when processing denormal numbers in a computer system
US6012139A (en) * 1996-01-31 2000-01-04 Hitachi Micro Systems, Inc. Microprocessor including floating point unit with 16-bit fixed length instruction set
US6128726A (en) * 1996-06-04 2000-10-03 Sigma Designs, Inc. Accurate high speed digital signal processor
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5782304A (en) 1996-11-26 1998-07-21 Garcia-Soule; Virgilio Normally closed retainer valve with fail-safe pump through capability
JPH10187416A (ja) 1996-12-20 1998-07-21 Nec Corp 浮動小数点演算装置
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6055555A (en) 1997-12-29 2000-04-25 Intel Corporation Interface for performing parallel arithmetic and round operations
US6044454A (en) 1998-02-19 2000-03-28 International Business Machines Corporation IEEE compliant floating point unit
US6292815B1 (en) 1998-04-30 2001-09-18 Intel Corporation Data conversion between floating point packed format and integer scalar format
US6282634B1 (en) 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
JP2000010762A (ja) * 1998-06-19 2000-01-14 Mitsubishi Electric Corp 浮動小数点演算装置
US7346643B1 (en) 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
JP2001236206A (ja) 1999-10-01 2001-08-31 Hitachi Ltd データのロード方法及びその記憶方法、データワードのロード方法及びその記憶方法、並びに、浮動小数点数の比較方法
US6571265B1 (en) * 1999-10-29 2003-05-27 Intel Corporation Mechanism to detect IEEE underflow exceptions on speculative floating-point operations
US6820106B1 (en) * 2000-06-27 2004-11-16 Intel Corporation Method and apparatus for improving the performance of a floating point multiplier accumulator
US6879992B2 (en) 2000-12-27 2005-04-12 Intel Corporation System and method to efficiently round real numbers
US6996591B2 (en) 2000-12-27 2006-02-07 Intel Corporation System and method to efficiently approximate the term 2x
US6889242B1 (en) * 2001-06-29 2005-05-03 Koninklijke Philips Electronics N.V. Rounding operations in computer processor
WO2003038092A1 (en) * 2001-11-01 2003-05-08 Sympore Gmbh Method for identifying transport proteins
US7120755B2 (en) * 2002-01-02 2006-10-10 Intel Corporation Transfer of cache lines on-chip between processing cores in a multi-core system
US7529912B2 (en) * 2002-02-12 2009-05-05 Via Technologies, Inc. Apparatus and method for instruction-level specification of floating point format
JP2004171234A (ja) 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
CN1503160A (zh) 2002-11-20 2004-06-09 英业达股份有限公司 计算机可执行的电子书阅读界面的自动排版方法
US7523152B2 (en) * 2002-12-26 2009-04-21 Intel Corporation Methods for supporting extended precision integer divide macroinstructions in a processor
US7290023B2 (en) 2003-11-20 2007-10-30 International Business Machines Corporation High performance implementation of exponent adjustment in a floating point design
US7380240B2 (en) 2003-12-23 2008-05-27 Intel Corporation Apparatus and methods to avoid floating point control instructions in floating point to integer conversion
JP4477959B2 (ja) * 2004-07-26 2010-06-09 独立行政法人理化学研究所 ブロードキャスト型並列処理のための演算処理装置
US20060095714A1 (en) * 2004-11-03 2006-05-04 Stexar Corporation Clip instruction for processor
US7447725B2 (en) * 2004-11-05 2008-11-04 International Business Machines Corporation Apparatus for controlling rounding modes in single instruction multiple data (SIMD) floating-point units
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2018921C1 (ru) * 1992-06-19 1994-08-30 Институт точной механики и вычислительной техники им.С.А.Лебедева РАН Устройство для нормализации и округления вещественных чисел
US5696709A (en) * 1995-03-31 1997-12-09 International Business Machines Corporation Program controlled rounding modes
US6058410A (en) * 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
US6233672B1 (en) * 1997-03-06 2001-05-15 Advanced Micro Devices, Inc. Piping rounding mode bits with floating point instructions to eliminate serialization

Also Published As

Publication number Publication date
CN101882064A (zh) 2010-11-10
JP2018139134A (ja) 2018-09-06
JP6487097B2 (ja) 2019-03-20
JP2016058098A (ja) 2016-04-21
US20170220348A1 (en) 2017-08-03
US20170322805A1 (en) 2017-11-09
US20210216314A1 (en) 2021-07-15
US20170220349A1 (en) 2017-08-03
DE112007001989B4 (de) 2019-04-18
US20130191433A1 (en) 2013-07-25
JP6333439B2 (ja) 2018-05-30
CN110471643A (zh) 2019-11-19
US10114641B2 (en) 2018-10-30
US20170322802A1 (en) 2017-11-09
DE112007001989T5 (de) 2009-06-18
CN103593165B (zh) 2017-10-24
JP6162203B2 (ja) 2017-07-12
JP5851536B2 (ja) 2016-02-03
JP5475746B2 (ja) 2014-04-16
US20170322803A1 (en) 2017-11-09
US10108416B2 (en) 2018-10-23
CN101882064B (zh) 2013-11-06
CN105573715B (zh) 2019-09-13
US20080077779A1 (en) 2008-03-27
CN109871235A (zh) 2019-06-11
JP4990977B2 (ja) 2012-08-01
JP2012043479A (ja) 2012-03-01
US10114640B2 (en) 2018-10-30
CN101149674A (zh) 2008-03-26
RU2420790C2 (ru) 2011-06-10
KR20080027454A (ko) 2008-03-27
RU2009115188A (ru) 2010-10-27
US9286267B2 (en) 2016-03-15
CN105573715A (zh) 2016-05-11
US20170220347A1 (en) 2017-08-03
US10067761B2 (en) 2018-09-04
RU2011102731A (ru) 2012-03-20
US20160139918A1 (en) 2016-05-19
US20170322804A1 (en) 2017-11-09
CN103593165A (zh) 2014-02-19
WO2008036944A1 (en) 2008-03-27
JP2017157225A (ja) 2017-09-07
JP2010503935A (ja) 2010-02-04
US9223751B2 (en) 2015-12-29
JP2014123390A (ja) 2014-07-03
KR100947138B1 (ko) 2010-03-12

Similar Documents

Publication Publication Date Title
RU2447484C1 (ru) Выполнение операций округления в соответствии с инструкцией
US6108772A (en) Method and apparatus for supporting multiple floating point processing models
EP3555742B1 (en) Floating point instruction format with embedded rounding rule
US6292886B1 (en) Scalar hardware for performing SIMD operations
US9817662B2 (en) Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof
US5337265A (en) Apparatus for executing add/sub operations between IEEE standard floating-point numbers
JP2018524706A (ja) 浮動小数点値の処理のための装置及び方法
US20100100692A1 (en) Exploiting Register High-Words
US11797300B1 (en) Apparatus for calculating and retaining a bound on error during floating-point operations and methods thereof
CN116643796A (zh) 混合精度运算的处理方法以及指令处理装置
JP2005115410A (ja) 演算装置
JPS6019238A (ja) 10進演算装置

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190922