RU2447484C1 - Выполнение операций округления в соответствии с инструкцией - Google Patents
Выполнение операций округления в соответствии с инструкцией Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 17
- 239000000126 substance Substances 0.000 abstract 1
- 230000001629 suppression Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
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, в котором исполнительный логический элемент предназначен для округления, по меньшей мере, одного элемента до целочисленного значения, в котором первый операнд ОКМД содержит значение с плавающей запятой.
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)
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)
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)
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 |
-
2006
- 2006-09-22 US US11/525,420 patent/US9223751B2/en active Active
-
2007
- 2007-09-21 KR KR1020070097040A patent/KR100947138B1/ko active IP Right Grant
- 2007-09-21 CN CN201310524726.0A patent/CN103593165B/zh active Active
- 2007-09-21 CN CN201510697468.5A patent/CN105573715B/zh active Active
- 2007-09-21 RU RU2011102731/08A patent/RU2447484C1/ru not_active IP Right Cessation
- 2007-09-21 CN CN201910143641.5A patent/CN109871235A/zh active Pending
- 2007-09-21 RU RU2009115188/08A patent/RU2420790C2/ru not_active IP Right Cessation
- 2007-09-21 CN CN201010200409XA patent/CN101882064B/zh active Active
- 2007-09-21 JP JP2009528536A patent/JP4990977B2/ja active Active
- 2007-09-21 WO PCT/US2007/079233 patent/WO2008036944A1/en active Application Filing
- 2007-09-21 DE DE112007001989.1T patent/DE112007001989B4/de active Active
- 2007-09-21 CN CN201910766458.0A patent/CN110471643A/zh active Pending
- 2007-09-21 CN CNA2007101701526A patent/CN101149674A/zh active Pending
-
2011
- 2011-12-01 JP JP2011263344A patent/JP5475746B2/ja active Active
-
2013
- 2013-03-11 US US13/793,648 patent/US9286267B2/en active Active
-
2014
- 2014-02-06 JP JP2014021474A patent/JP5851536B2/ja active Active
-
2015
- 2015-12-02 JP JP2015235721A patent/JP6162203B2/ja active Active
-
2016
- 2016-01-22 US US15/003,951 patent/US10067761B2/en active Active
-
2017
- 2017-04-12 US US15/485,372 patent/US10114640B2/en active Active
- 2017-04-12 US US15/485,378 patent/US10114641B2/en active Active
- 2017-04-12 US US15/485,356 patent/US10108416B2/en active Active
- 2017-04-27 JP JP2017087793A patent/JP6333439B2/ja active Active
- 2017-07-27 US US15/661,211 patent/US20170322804A1/en not_active Abandoned
- 2017-07-27 US US15/661,190 patent/US20170322802A1/en not_active Abandoned
- 2017-07-27 US US15/661,199 patent/US20170322803A1/en not_active Abandoned
- 2017-07-27 US US15/661,219 patent/US20170322805A1/en not_active Abandoned
-
2018
- 2018-04-24 JP JP2018082706A patent/JP6487097B2/ja active Active
-
2020
- 2020-12-01 US US17/108,083 patent/US20210216314A1/en not_active Abandoned
Patent Citations (4)
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
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 |