RU2531862C2 - Быстрое векторное вычисление деления без ветвления - Google Patents
Быстрое векторное вычисление деления без ветвления Download PDFInfo
- Publication number
- RU2531862C2 RU2531862C2 RU2012112201/08A RU2012112201A RU2531862C2 RU 2531862 C2 RU2531862 C2 RU 2531862C2 RU 2012112201/08 A RU2012112201/08 A RU 2012112201/08A RU 2012112201 A RU2012112201 A RU 2012112201A RU 2531862 C2 RU2531862 C2 RU 2531862C2
- Authority
- RU
- Russia
- Prior art keywords
- value
- processor
- arguments
- simd
- generate
- Prior art date
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 8
- 238000012545 processing Methods 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 21
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008034 disappearance Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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
- G06F7/487—Multiplying; Dividing
-
- 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
- G06F7/487—Multiplying; Dividing
- G06F7/4873—Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/535—Indexing scheme relating to groups G06F7/535 - G06F7/5375
- G06F2207/5356—Via reciprocal, i.e. calculate reciprocal only, or calculate reciprocal first and then the quotient from the reciprocal and the numerator
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Abstract
Изобретение относится к средствам векторных вычислений деления/обращения удвоенной точности на вычислительных платформах с одним потоком команд и множеством потоков данных (SIMD). Технический результат заключается в увеличении производительности векторных вычислений. Множество SIMD-полос предназначены для обработки одного элемента из множества данных, сохраненных в памяти, в соответствии с SIMD-инструкцией. Масштабируют множество аргументов для генерирования множества соответствующих масштабированных аргументов. Перемножают множество масштабированных аргументов для генерирования первого значения. Масштабируют порядковую часть и мантиссовую часть первого значения из множества значений данных для соответственного генерирования второго значения и третьего значения. Обращают второе значение и третье значение для соответственного генерирования четвертого значения и пятого значения. Перемножают четвертое значение и пятое значение для генерирования обратной версии первого значения. 3 н. и 14 з.п. ф-лы, 7 ил.
Description
Область техники, к которой относится изобретение
Настоящее изобретение, в общем, относится к области вычислений. В частности, один вариант осуществления настоящего изобретения, в общем, относится к методикам быстрого векторного вычисления деления без ветвления.
Уровень техники
По сравнению с другими простыми арифметическими операциями аппаратные осуществления операций деления были довольно медленными, к примеру, ввиду большего времени запаздывания. Некоторое ускорение могло быть достигнуто в векторных случаях ввиду существования различных типов параллелизма в современных архитектурах, например, посредством параллелизма SIMD (один поток команд, множество потоков данных), суперскалярности и выполнения с изменением очередности. К примеру, обратное приближение с дополнительным методом уточняющих итераций Ньютона-Рафсона (рассматриваемый по ссылке http://en.wikipedia.org/wiki/Newton%E2%80%93Raphson_method), как правило, хорошо действует для случая с одинарной точностью (SP), в некоторых осуществлениях обеспечивая ускорение вплоть до двукратного относительно аппаратной операции деления. Однако этот подход теряет большую часть своих преимуществ в случаях с удвоенной точностью (DP) по причине отсутствия обратных операций удвоенной точности в существующих SSE-архитектурах. Как следствие, может потребоваться выполнение дополнительных преобразований из DP в SP и из SP в DP вместе с манипуляциями над полем порядка в числах с плавающей точкой. Кроме того, вышеописанные приближения SP и DP, в общем, требуют специальной обработки знаменателя с бесконечным (INF) или нулевым значением, что уменьшает параллелизм и уменьшает потенциальное увеличение производительности.
Краткое описание чертежей
Подробное описание обеспечивается со ссылками на сопроводительные чертежи. На чертежах левая цифра (левые цифры) ссылочной позиции указывает на чертеж, на котором эта ссылочная позиция впервые появляется. Использование одних и тех же ссылочных позиций на разных чертежах указывает на схожесть или идентичность элементов.
Фиг.1 изображает блок-схему способа согласно одному варианту осуществления настоящего изобретения.
Фиг.2A-2C изображают сегменты псевдокода, которые могут использоваться в некоторых вариантах осуществления.
Фиг.3 изображает структурную схему быстрого векторного деления согласно одному варианту осуществления.
Фиг.4 и 5 изображают структурные схемы вариантов осуществления вычислительных систем, которые могут быть задействованы для осуществления некоторых вариантов осуществления, рассматриваемых здесь.
Подробное описание
В последующем описании множество характерных подробностей изложено с целью обеспечить полное понимание различных вариантов осуществления. Однако различные варианты осуществления настоящего изобретения могут применяться без этих характерных подробностей. В других случаях широко известные способы, процедуры, компоненты и цепи не были описаны подробно, чтобы не нарушать ясность отдельных вариантов осуществления настоящего изобретения. Кроме того, различные аспекты вариантов осуществления настоящего изобретения могут выполняться с использованием различных средств, таких как интегральные полупроводниковые цепи ("аппаратные средства"), считываемые компьютером инструкции, образующие одну или несколько программ ("программные средства"), или некая комбинация аппаратных средств и программных средств. В целях этого раскрытия упоминание "логического узла" будет означать аппаратные средства, программные средства (включая, к примеру, микрокод, который управляет работой процессора) или некую их комбинацию.
Упоминание в техническом описании "одного варианта осуществления" или "какого-либо варианта осуществления" означает, что некоторый признак, структура или характеристика, описанная в связи с этим вариантом осуществления, может включаться по меньшей мере в одно осуществление. Все различные появления словосочетания "в одном варианте осуществления" в различных местах технического описания могут относиться, а могут и не относиться к одному и тому же варианту осуществления.
Также в описании и в формуле изобретения могут использоваться термины "объединенные" и "соединенные" вместе с их производными формами. В некоторых вариантах осуществления настоящего изобретения термин "соединенные" может использоваться для указания на то, что два или более элементов находятся в непосредственном физическом или электрическом контакте друг с другом. Термин "объединенные" может означать, что два или более элементов находятся в непосредственном физическом или электрическом контакте. Однако термин "объединенные" может также означать, что два или более элементов могут не находиться в непосредственном контакте друг с другом, но все равно могут осуществлять совместную работу или взаимодействие друг с другом.
Некоторые из вариантов осуществления, рассматриваемые здесь, могут обеспечивать улучшенную производительность для векторных вычислений деления/обращения удвоенной точности, например, не требуя ветвей или специальных действий, которые прежде были необходимы. Векторные вычисления деления могут выполняться на вычислительных платформах SIMD. В общем, SIMD является методикой, задействуемой для достижения параллелизма уровней данных. В частности, множество данных может обрабатываться в множестве соответствующих полос векторного SIMD-процессора (такого как процессоры 402 и 502/504 с фиг.4 и 5 соответственно) в соответствии с единственной инструкцией.
В некоторых осуществлениях только одна операция деления выполняется для нескольких обращений. Принимая последующее в качестве примера (предложено И.И. Заварзиным, В.Ф. Курякиным, В.В. Луневым, Д.М. Обувалиным, В.Г. Рыжих в работе "Оптимизация вычислений векторных функций". ВАНТ. сер. Математическое моделирование физических процессов. 1997. Т.4 (русскоязычный журнал)):
Обращение каждого аргумента может быть вычислено с использованием трех дополнительных умножений посредством R и трех остальных аргументов, что в общем случае быстрее, чем четыре деления аппаратными средствами, которые требуют долгого времени запаздывания и высокого значения пропускной способности. А именно, для общего случая N значений оценкой следующей максимальной возможной выгоды производительности (gain) для этой методики (D, M - значения пропускной способности для Деления и Умножения соответственно) может быть:
Недостаток этого подхода состоит в высокой вероятности возникновения переполнения или исчезновения значащих разрядов для произведения x1∙x2∙x3∙x4 по причине различности порядков аргументов, что может привести к ошибочным выходным данным для всего набора из четырех аргументов. К примеру, если x1=0,0, но x2≠0,0, x3≠0,0, x4≠0,0, то R=INF, и три результата из четырех будут ошибочными: 1/x2=1/x3=1/x4=INF.
Для разрешения этой проблемы должна быть гарантия, что сумма всех входных порядков не вызовет переполнения или исчезновения значащих разрядов. Это довольно сильно сужает рабочий интервал и требует сравнения аргументов с возможными ветвями для особых случаев, которые не смогут быть обработаны должным образом в стержневой ветви. В одном варианте осуществления вышеупомянутые проблемы могут быть разрешены путем масштабирования и восстановления аргумента.
В частности, фиг.1 изображает блок-схему способа 100 в соответствии с одним вариантом осуществления. На операции 102 принимается один или несколько аргументов (например, x1, x2 и т.д.). Аргументы могут быть представлены в виде x=(-1)sbn∙f, где обозначения определяются следующим образом:
s={0, 1} - знак для "s" в (-1)s,
b - база (например, для двоичного случая b=2),
n - порядок (Emax ≤n≤Emin), где Emax и Emin соответственно означают минимальный и максимальный порядок для соответствующего типа данных согласно ANSI/IEEE Std 754-2008.
f=20+f1∙2-1+f2∙2-2+...+fp∙2-p=1.f1f2...fpB - мантисса (1≤f<2).
Обращение может определяться следующим образом: 1/x=1/(-1)s2n∙f=(-1)s2-n∙1/f.
Предположим, что (x1, x2, x3, x4) являются входными аргументами, где xi=(-1)si2ni∙fi для i=
. Они масштабируются на операции 104 по
так: zi=1,0∙fi=20∙fi. Масштабированные аргументы перемножаются на операции 106 (например, M=z1z2z3z4), и результат перемножения обращается на операции 108 (например, R=1/M). К примеру, каждое 1/zi для i=
вычисляется следующим образом:
На операции 110 результат восстанавливают так: 1/xi=(-1)si∙
∙1/zi, где
, в одном варианте осуществления, путем "вставки" входного порядка с измененным знаком
и исходного знака в 1/zi.
Такой подход обеспечивает достаточную точность и обрабатывает особые значения по стандарту Института инженеров по электротехнике и радиоэлектронике (IEEE) в рамках той же стержневой ветви. Поскольку zi∈[1, 2), никаких результатов с переполнением или исчезновением значащих разрядов не может произойти во время вычислений, например, произведение любых двух значений zi∙zj∈[1, 4), любых трех значений zi∙zj∙zk∈[1, 8), всех четырех аргументов z1∙z2∙z3∙z4∈[1, 16), и 1/zi∈(0,5, 1], и т.д.
Кроме того, каждое умножение может быть выполнено путем округления до рабочей точности с погрешностью не более 0,5 ulp (Единица в последней позиции или Единица наименьшей точности; см., например, http://en.wikipedia.org/wiki/Ulp; также см., например, "Об определении ulp(x)" Жана-Мишеля Мюллера, INRIA Technical Report 5504), то есть погрешность вычисления z1∙z2∙z3∙z4 не будет превышать 3∙0,5=1,5 ulp.
В одном варианте осуществления, чтобы найти
, другие три умножения могут использоваться с дополнительным 3∙0,5=1,5 ulp и одно обращение, которое в этом случае не порождает погрешности. Таким образом, погрешность результата 1/zi будет меньше или равна (3+3)*0,5=3,0 ulp. Конечное восстановление 1/xi=(-1)si∙2mi∙1/zi не добавляет дополнительных погрешностей ввиду IEEE-представления чисел с плавающей точкой. Получаемое в результате 3,0 ulp не выходит за рамки требований для значения малой точности по умолчанию векторных математических библиотек ICL (Intel Compiler), SVML (Short Vector Math Library), MKL (Math Kernel Library) и IPP (Intel Performance Primitives) - до 4 ulp, что соответствует двум неточным разрядам мантиссы, чего достаточно для подавляющего большинства приложений.
Кроме того, несмотря даже на то, что здесь рассматривается случай с набором из четырех значений, эти методики могут применяться к наборам любого размера.
Фиг.2A-2C изображают псевдокоды для выполнения быстрого векторного вычисления деления без ветвления согласно некоторым вариантам осуществления. Конкретнее, фиг.2A изображает аргументы, результаты, приведения и другие определения. Фиг.2B изображает псевдокод для масштабирования аргументов и сохранения исходных значений порядков вместе с перемножением масштабированных аргументов, например, как рассматривалось со ссылками на фиг.1. Фиг.2C изображает псевдокод для результата восстановления. В некоторых вариантах осуществления для полного деления r[i] могут быть умножены на числители.
Фиг.3 изображает структурную схему быстрого векторного деления согласно одному варианту осуществления. Как изображено, обработка порядковой и мантиссовой частей числа (302) с плавающей точкой выполняется раздельно (304). Хотя на изображенном примере число (обозначенное как "arg") указано в изображенном диапазоне, другие диапазоны могут использоваться в зависимости от осуществления, процессора, ширины канала данных и т.д. Кроме того, для получения обращения аргумента обращение порядка (306) и обращение мантиссы (308) могут определяться раздельно и затем конечный результат определяется на основе их произведения. В одном варианте осуществления обращение порядка может выполняться на основе замены знака (310 и 312), как рассматривалось со ссылками на фиг.1-2C. В некоторых вариантах осуществления это может быть выполнено посредством целочисленных операций и без каких-либо потерь в точности. Для обращения мантиссы (314 и 316) она может быть представлена в виде числа с плавающей точкой с нулевым порядком. Наконец, конечный результат определяется (318) на основе перемножения обращенных мантиссы и порядка (что считается точным результатом, поскольку по меньшей мере один из множителей имеет нулевую дробную часть).
Фиг.4 изображает структурную схему одного варианта осуществления вычислительной системы 400. В различных вариантах осуществления один или несколько компонентов системы 400 могут обеспечиваться в различных электронных устройствах с возможностью выполнения одной или нескольких операций, рассматриваемых здесь со ссылками на некоторые варианты осуществления настоящего изобретения. К примеру, один или несколько компонентов системы 400 могут использоваться для выполнения операций, рассматриваемых со ссылками на фиг.1-3, например, путем генерирования значений, соответствующих делению/обращению, с улучшенной производительностью посредством использования SIMD и т.д. в соответствии с операциями, рассматриваемыми здесь. Также различные устройства хранения данных, рассматриваемые здесь (например, со ссылками на фиг.4 и/или 5), могут использоваться для хранения данных, результатов операций и т.д. В одном варианте осуществления данные, ассоциированные с операцией по способу 300 с фиг.3, могут быть сохранены в запоминающем устройстве (запоминающих устройствах) (таком как память 412 или один или несколько кэшей (например, L1-кэши в одном варианте осуществления), представленных в процессорах 402 с фиг.4 или 502/604 с фиг.5). Эти процессоры могут затем применять операции, рассматриваемые здесь, для быстрого деления/обращения (такие как одна или несколько из операций с фиг.1-3). Соответственно, в некоторых вариантах осуществления процессоры 402 с фиг.4 или 502/604 с фиг.5 могут являться векторными процессорами с возможностью поддерживать SIMD-операции.
Кроме того, вычислительная система 400 может включать в себя один или несколько центральных процессоров (CPU) 402 или процессоров, которые связываются посредством внутрисхемной сети (или шины) 404. Процессоры 402 могут включать в себя универсальный процессор, сетевой процессор (который обрабатывает данные, передаваемые по компьютерной сети 403) или процессоры других типов (включая процессор компьютера с сокращенным набором инструкций (RISC) или компьютер со сложным набором инструкций (CISC)). Кроме того, процессоры 402 могут иметь конструкцию с единственным ядром или с множеством ядер. Процессоры 402 с многоядерной конструкцией могут включать в себя процессорные ядра различных типов на одном кристалле интегральной цепи (IC). Также процессоры 402 с многоядерной конструкцией могут быть осуществлены в виде симметричных или асимметричных мультипроцессоров. Дополнительно, процессоры 402 могут задействовать SIMD-архитектуру. Кроме того, операции, рассматриваемые со ссылками на фиг.1-3, могут выполняться одним или несколькими компонентами системы 400.
Набор 406 микросхем может также связываться через внутрисхемную сеть 404. Набор 406 микросхем может включать в себя концентратор 408 управления памятью (MCH). MCH 408 может включать в себя средство 410 управления памятью, которое связывается с памятью 412. Память 412 может хранить данные, включая последовательности инструкций, которые выполняет CPU 402 или любое другое устройство, включаемое в вычислительную систему 400. В одном варианте осуществления настоящего изобретения память 412 может включать в себя одно или несколько энергозависимых запоминающих устройств (или устройств памяти), таких как оперативное запоминающее устройство (RAM), динамическое RAM (DRAM), синхронное DRAM (SDRAM), статическое RAM (SRAM) или запоминающие устройства других типов. Также могут быть задействованы энергонезависимые запоминающие устройства, такие как жесткий диск. Дополнительные устройства могут связываться посредством внутрисхемной сети 404, такие как множество CPU и/или множество устройств системной памяти.
MCH 408 может также включать в себя графический интерфейс 414, который связывается со средством 416 отображения. Средство 416 отображения может использоваться для отображения пользователю результатов операций, ассоциированных с быстрым делением/обращением, рассматриваемых здесь. В одном варианте осуществления настоящего изобретения графический интерфейс 414 может связываться со средством 416 отображения посредством ускоренного графического порта (AGP). В одном варианте осуществления настоящего изобретения средство 416 отображения может быть плоскопанельным дисплеем, который связывается с графическим интерфейсом 414 через, к примеру, преобразователь сигнала, который переводит цифровое представление изображения, сохраненное в запоминающем устройстве, таком как видеопамять или системная память, в отображаемые сигналы, которые расшифровываются и отображаются средством 416 отображения. Отображаемые сигналы, производимые интерфейсом 414, могут проходить через различные управляющие устройства перед расшифровкой и последующим отображением на средстве 416 отображения.
Концентраторный интерфейс 418 может позволять MCH 408 и концентратору 420 управления вводом-выводом (ICH) взаимосвязываться. ICH 420 может обеспечивать интерфейс с устройствами ввода-вывода, которые связываются с вычислительной системой 400. ICH 420 может связываться с шиной 422 через периферийный мост (или управляющее средство) 424, такой как мост соединения периферийных компонентов (PCI), управляющее средство универсальной последовательной шины (USB) и периферийные мосты или управляющие средства других типов. Мост 424 может обеспечить канал данных между CPU 402 и периферийными устройствами. Могут быть задействованы топологии других типов. Также множество шин может связываться с ICH 420, например, через множество мостов или управляющих средств. Кроме того, другие периферийные устройства в связи с ICH 420 могут включать в себя в различных вариантах осуществления настоящего изобретения встроенные электронные средства управления диском (IDE) или жесткий(ие) диск(и) интерфейса малых компьютерных систем (SCSI), USB-порт(ы), клавиатуру, мышь, порт(ы) параллельного ввода данных, порт(ы) последовательного ввода данных, гибкий(ие) дисковый(ые) накопитель(и), поддержку цифрового вывода (например, интерфейсом цифрового вывода (DVI)) или другие устройства.
Шина 422 может связываться с аудиоустройством 426, одним или несколькими дисковыми накопителями 428 и устройством 430 сетевого интерфейса, которые могут состоять в связи с компьютерной сетью 403. В одном варианте осуществления устройство 430 может являться NIC с возможностью беспроводной связи. Другие устройства могут связываться через шину 422. Также различные компоненты (такие как устройство 430 сетевого интерфейса) могут связываться с MCH 408 в некоторых вариантах осуществления настоящего изобретения. В дополнение, процессор 402 и MCH 408 могут объединяться для образования единой цепи. Кроме того, графический интерфейс 414 может включаться в MCH 408 в других вариантах осуществления настоящего изобретения.
Кроме того, вычислительная система 400 может включать в себя энергозависимую и/или энергонезависимую память (или запоминающее устройство). К примеру, энергонезависимая память может включать в себя одно или несколько из следующих устройств: постоянное запоминающее устройство (ROM), программируемое ROM (PROM), стираемое PROM (EPROM), электрически стираемое EPROM (EEPROM), дисковый накопитель (например, 428), гибкий диск, ROM на компакт-диске (CD-ROM), универсальный цифровой диск (DVD), флэш-память, магнитооптический диск или энергонезависимые машиночитаемые носители других типов с возможностью сохранения электронных данных (например, включающих инструкции). В одном варианте осуществления компоненты системы 400 могут быть организованы в двухточечную (PtP) конфигурацию, такую как рассматриваемая со ссылками на фиг.5. К примеру, процессоры, память и/или устройства ввода-вывода могут быть взаимосвязаны некоторым количеством двухточечных интерфейсов.
Конкретнее, фиг.5 изображает вычислительную систему 500, которая организована в двухточечную (PtP) конфигурацию, согласно одному варианту осуществления настоящего изобретения. В частности, фиг.5 изображает систему, где процессоры, память и устройства ввода-вывода взаимосвязаны некоторым количеством двухточечных интерфейсов. Операции, рассматриваемые со ссылками на фиг.1-4, могут выполняться одним или несколькими компонентами системы 500.
Как изображено на фиг.5, система 500 может включать в себя несколько процессоров, из которых в целях ясности изображены только два процессора 502 и 504. Каждый из процессоров 502 и 504 может включать в себя концентратор 506 и 508 управления локальной памятью (MCH) для объединения с устройствами 510 и 512 памяти. Устройства 510 и/или 512 памяти могут хранить различные данные, такие как рассмотренные со ссылками на память 412 с фиг.4.
Процессоры 502 и 504 могут быть любыми подходящими процессорами, такими как рассмотренные со ссылками на процессоры 402 с фиг.4. Процессоры 502 и 504 могут осуществлять обмен данными посредством двухточечного (PtP) интерфейса 514 с использованием цепей 516 и 518 PtP интерфейса соответственно. Каждый из процессоров 502 и 504 может осуществлять обмен данных с набором микросхем 520 через отдельные PtP интерфейсы 522 и 524 с использованием цепей 526, 528, 530 и 532 двухточечного интерфейса. Набор микросхем 520 может также осуществлять обмен данными с графической цепью 534 высокой производительности посредством графического интерфейса 536 высокой производительности с использованием цепи 537 PtP интерфейса.
По меньшей мере один вариант осуществления настоящего изобретения может обеспечиваться путем задействования процессоров 502 и 504. К примеру, процессоры 502 и/или 504 могут выполнять одну или несколько из операций с фиг.1-4. Другие варианты осуществления настоящего изобретения, однако, могут существовать в других цепях, логических блоках или устройствах внутри системы 500 с фиг.5. Кроме того, другие варианты осуществления настоящего изобретения могут быть распределены по нескольким цепям, логическим блокам или устройствам, изображенным на фиг.5.
Набор микросхем 520 может объединяться с шиной 540 посредством цепи 541 PtP интерфейса. Шина 540 может иметь одно или несколько устройств, объединенных с ней, таких как шинный мост 542 и устройства 543 ввода-вывода. Через шину 544 шинный мост 543 может объединяться с другими устройствами, такими как клавиатура/мышь 545, устройство 530 сетевого интерфейса, рассматриваемое со ссылками на фиг.5 (такое как модемы, сетевые интерфейсные карты (NIC) или подобные, которые могут объединяться с компьютерной сетью 403), устройство ввода-вывода аудио и/или устройство 548 хранения данных. Устройство 548 хранения данных может хранить код 549, который может быть выполнен процессорами 502 и/или 504.
В различных вариантах осуществления настоящего изобретения операции, рассмотренные здесь, например, со ссылками на фиг.1-5, могут осуществляться в виде аппаратных средств (например, набора логических цепей), программных средств (включая, к примеру, микрокод, который управляет работой процессора, такого как процессоры, рассмотренные со ссылками на фиг.4-5), программно-аппаратных средств или комбинаций перечисленного, которые могут обеспечиваться в виде компьютерного программного продукта, например, включающего в себя материальный машиночитаемый или считываемый компьютером носитель с сохраненными на нем инструкциями (или процедурами программных средств), используемыми для программирования компьютера (например, процессора или другого логического средства вычислительного устройства) для выполнения операции, рассматриваемой здесь. Машиночитаемый носитель может включать в себя запоминающее устройство, такое как рассмотренные здесь.
Дополнительно, такие материальные считываемые компьютером носители могут быть загружены в качестве компьютерного программного продукта, причем программа может быть передана от удаленного компьютера (например, сервера) запрашивающему компьютеру (например, клиенту) в виде сигналов данных, осуществленных в материальной среде распространения, по линии связи (например, шине, модему или сетевому соединению).
Таким образом, хотя варианты осуществления настоящего изобретения были описаны в контексте структурных признаков и/или методологических действий, следует понимать, что заявляемое изобретение не может быть ограничено описанными здесь характерными признаками или действиями. Наоборот, характерные признаки и действия раскрываются лишь как формы осуществления заявляемого изобретения.
Claims (17)
1. Способ быстрого векторного вычисления деления на вычислительных платформах с одним потоком команд и множеством потоков данных (SIMD), осуществляемый процессором, имеющим множество SIMD-полос, причем каждая из множества SIMD-полос предназначена для обработки одного элемента из множества данных, сохраненных в памяти, в соответствии с SIMD-инструкцией, причем способ содержит этапы, на которых:
масштабируют множество аргументов для генерирования множества соответствующих масштабированных аргументов;
перемножают множество масштабированных аргументов для генерирования первого значения;
масштабируют порядковую часть и мантиссовую часть первого значения из множества значений данных для соответственного генерирования второго значения и третьего значения;
обращают второе значение и третье значение для соответственного генерирования четвертого значения и пятого значения; и
перемножают четвертое значение и пятое значение для генерирования обратной версии первого значения.
масштабируют множество аргументов для генерирования множества соответствующих масштабированных аргументов;
перемножают множество масштабированных аргументов для генерирования первого значения;
масштабируют порядковую часть и мантиссовую часть первого значения из множества значений данных для соответственного генерирования второго значения и третьего значения;
обращают второе значение и третье значение для соответственного генерирования четвертого значения и пятого значения; и
перемножают четвертое значение и пятое значение для генерирования обратной версии первого значения.
2. Способ по п.1, дополнительно содержащий этап, на котором преобразуют версию с плавающей точкой множества аргументов в целочисленное значение.
3. Способ по п.1, в котором масштабирование множества аргументов содержит масштабирование множества аргументов по 1.0.
4. Способ по п.1, дополнительно содержащий этап, на котором сохраняют сгенерированные значения в памяти.
5. Устройство быстрого векторного вычисления деления на вычислительных платформах с одним потоком команд и множеством потоков данных (SIMD), содержащее:
память для хранения множества значений данных, соответствующих инструкции SIMD (один поток команд, множество потоков данных); и
процессор, имеющий множество SIMD-полос, причем каждая из множества SIMD-полос предназначена для обработки одного элемента из множества данных, сохраненных в памяти, в соответствии с SIMD-инструкцией, причем процессор предназначен для того, чтобы:
масштабировать порядковую часть и мантиссовую часть первого значения из множества значений данных для соответственного генерирования второго значения и третьего значения;
обращать второе значение и третье значение для соответственного генерирования четвертого значения и пятого значения; и
перемножать четвертое значение и пятое значение для генерирования обратной версии первого значения, причем второе значение должно быть обращено путем изменения знака порядковой части первого значения.
память для хранения множества значений данных, соответствующих инструкции SIMD (один поток команд, множество потоков данных); и
процессор, имеющий множество SIMD-полос, причем каждая из множества SIMD-полос предназначена для обработки одного элемента из множества данных, сохраненных в памяти, в соответствии с SIMD-инструкцией, причем процессор предназначен для того, чтобы:
масштабировать порядковую часть и мантиссовую часть первого значения из множества значений данных для соответственного генерирования второго значения и третьего значения;
обращать второе значение и третье значение для соответственного генерирования четвертого значения и пятого значения; и
перемножать четвертое значение и пятое значение для генерирования обратной версии первого значения, причем второе значение должно быть обращено путем изменения знака порядковой части первого значения.
6. Устройство по п.5, в котором процессор предназначен для того, чтобы определять порядковую часть и мантиссовую часть первого значения.
7. Устройство по п.5, в котором процессор предназначен для того, чтобы масштабировать порядковую и мантиссовую части первого значения по 1.0 для генерирования второго и третьего значений.
8. Устройство по п.5, в котором процессор предназначен для того, чтобы преобразовывать версии с плавающей точкой множества значений данных в целочисленное значение.
9. Устройство по п.5, в котором память содержит кэш.
10. Устройство по п.5, в котором процессор содержит одно или более процессорных ядер.
11. Устройство по п.5, в котором процессор предназначен для того, чтобы вызывать сохранение сгенерированных значений в памяти.
12. Устройство по п.5, дополнительно содержащее устройство отображения для отображения обратной версии первого значения.
13. Считываемый компьютером носитель, содержащий одну или более инструкций, которые при исполнении процессором, имеющим множество SIMD-полос, причем каждая из множества SIMD-полос предназначена для обработки одного элемента из множества данных, сохраненных в памяти, в соответствии с SIMD-инструкцией, конфигурируют процессор для выполнения одной или более операций для того, чтобы:
масштабировать множество аргументов для генерирования множества соответствующих масштабированных аргументов;
перемножать множество масштабированных аргументов для генерирования первого значения;
масштабировать порядковую часть и мантиссовую часть первого значения из множества значений данных для соответственного генерирования второго значения и третьего значения;
обращать второе значение и третье значение для соответственного генерирования четвертого значения и пятого значения; и
перемножать четвертое значение и пятое значение для генерирования обратной версии первого значения.
масштабировать множество аргументов для генерирования множества соответствующих масштабированных аргументов;
перемножать множество масштабированных аргументов для генерирования первого значения;
масштабировать порядковую часть и мантиссовую часть первого значения из множества значений данных для соответственного генерирования второго значения и третьего значения;
обращать второе значение и третье значение для соответственного генерирования четвертого значения и пятого значения; и
перемножать четвертое значение и пятое значение для генерирования обратной версии первого значения.
14. Считываемый компьютером носитель по п.13, дополнительно содержащий одну или более инструкций, которые при исполнении процессором конфигурируют процессор для преобразования версии с плавающей точкой множества аргументов в целочисленное значение.
15. Считываемый компьютером носитель по п.13, дополнительно содержащий одну или более инструкций, которые при исполнении процессором конфигурируют процессор для масштабирования множества аргументов по 1.0.
16. Считываемый компьютером носитель по п.13, дополнительно содержащий одну или более инструкций, которые при исполнении процессором конфигурируют процессор для сохранения сгенерированных значений в памяти.
17. Считываемый компьютером носитель по п.13, дополнительно содержащий одну или более инструкций, которые при исполнении процессором конфигурируют процессор для перемножения обращенной порядковой части и обращенной мантиссовой части множества аргументов.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2009/000727 WO2011078725A1 (en) | 2009-12-25 | 2009-12-25 | Fast branch-free vector division computation |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2012112201A RU2012112201A (ru) | 2014-01-27 |
RU2531862C2 true RU2531862C2 (ru) | 2014-10-27 |
Family
ID=42642593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2012112201/08A RU2531862C2 (ru) | 2009-12-25 | 2009-12-25 | Быстрое векторное вычисление деления без ветвления |
Country Status (7)
Country | Link |
---|---|
US (1) | US20120254585A1 (ru) |
EP (1) | EP2517099B1 (ru) |
JP (1) | JP2013515319A (ru) |
KR (1) | KR101484379B1 (ru) |
AU (1) | AU2009357187B2 (ru) |
RU (1) | RU2531862C2 (ru) |
WO (1) | WO2011078725A1 (ru) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1403762A2 (en) * | 2002-09-25 | 2004-03-31 | Matsushita Electric Industrial Co., Ltd. | Processor executing simd instructions |
RU2318239C1 (ru) * | 2006-07-05 | 2008-02-27 | Ставропольский военный институт связи ракетных войск | Нейронная сеть для деления чисел, представленных в системе остаточных классов |
US7411694B2 (en) * | 2002-01-21 | 2008-08-12 | Ricoh Company, Ltd. | Data conversion apparatus for and method of data conversion for image processing |
US7567996B2 (en) * | 2000-03-13 | 2009-07-28 | Renesas Technology Corp. | Vector SIMD processor |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6278629A (ja) * | 1985-10-02 | 1987-04-10 | Hitachi Denshi Ltd | 逆数値演算方式 |
US4823301A (en) * | 1987-10-22 | 1989-04-18 | Tektronix, Inc. | Method and circuit for computing reciprocals |
JPH09128218A (ja) * | 1995-11-01 | 1997-05-16 | Hitachi Denshi Ltd | 除算装置 |
US8015228B2 (en) * | 2005-02-16 | 2011-09-06 | Arm Limited | Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value |
-
2009
- 2009-12-25 JP JP2012545895A patent/JP2013515319A/ja active Pending
- 2009-12-25 EP EP09839488.5A patent/EP2517099B1/en not_active Not-in-force
- 2009-12-25 US US13/503,592 patent/US20120254585A1/en not_active Abandoned
- 2009-12-25 RU RU2012112201/08A patent/RU2531862C2/ru not_active IP Right Cessation
- 2009-12-25 KR KR1020127016264A patent/KR101484379B1/ko not_active IP Right Cessation
- 2009-12-25 WO PCT/RU2009/000727 patent/WO2011078725A1/en active Application Filing
- 2009-12-25 AU AU2009357187A patent/AU2009357187B2/en not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7567996B2 (en) * | 2000-03-13 | 2009-07-28 | Renesas Technology Corp. | Vector SIMD processor |
US7411694B2 (en) * | 2002-01-21 | 2008-08-12 | Ricoh Company, Ltd. | Data conversion apparatus for and method of data conversion for image processing |
EP1403762A2 (en) * | 2002-09-25 | 2004-03-31 | Matsushita Electric Industrial Co., Ltd. | Processor executing simd instructions |
RU2318239C1 (ru) * | 2006-07-05 | 2008-02-27 | Ставропольский военный институт связи ракетных войск | Нейронная сеть для деления чисел, представленных в системе остаточных классов |
Also Published As
Publication number | Publication date |
---|---|
JP2013515319A (ja) | 2013-05-02 |
AU2009357187B2 (en) | 2014-11-20 |
RU2012112201A (ru) | 2014-01-27 |
EP2517099B1 (en) | 2017-07-19 |
KR20120096536A (ko) | 2012-08-30 |
WO2011078725A1 (en) | 2011-06-30 |
AU2009357187A1 (en) | 2012-05-03 |
EP2517099A1 (en) | 2012-10-31 |
CN102713835A (zh) | 2012-10-03 |
US20120254585A1 (en) | 2012-10-04 |
KR101484379B1 (ko) | 2015-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7565998B2 (ja) | コンパクトな演算処理要素を用いたプロセッシング | |
RU2421796C2 (ru) | Инструкция и логическая схема для выполнения операции скалярного произведения | |
EP3719639B1 (en) | Systems and methods to perform floating-point addition with selected rounding | |
US8914430B2 (en) | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions | |
US10489153B2 (en) | Stochastic rounding floating-point add instruction using entropy from a register | |
US20160026912A1 (en) | Weight-shifting mechanism for convolutional neural networks | |
Murillo et al. | Energy-efficient MAC units for fused posit arithmetic | |
JP2020507844A (ja) | 入力オペランド値を処理するための装置及び方法 | |
JP4477959B2 (ja) | ブロードキャスト型並列処理のための演算処理装置 | |
US9703626B2 (en) | Recycling error bits in floating point units | |
US10445066B2 (en) | Stochastic rounding floating-point multiply instruction using entropy from a register | |
US20230161555A1 (en) | System and method performing floating-point operations | |
RU2531862C2 (ru) | Быстрое векторное вычисление деления без ветвления | |
US9134751B2 (en) | Time keeping in unknown and unstable clock architecture | |
Mora et al. | Mathematical model and implementation of rational processing | |
US20050289208A1 (en) | Methods and apparatus for determining quotients | |
US8924447B2 (en) | Double precision approximation of a single precision operation | |
RU2276805C2 (ru) | Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой | |
CN118312130B (zh) | 数据处理方法及装置、处理器、电子设备、存储介质 | |
Isupov et al. | Computing the Sparse Matrix-Vector Product in High-Precision Arithmetic for GPU Architectures | |
US20230100785A1 (en) | Priority encoder-based techniques for computing the minimum or the maximum of multiple values | |
CN118760415A (zh) | 数据处理方法及装置、处理器、电子设备、存储介质 | |
CN102713835B (zh) | 快速无分支向量除法计算 | |
Paparouni | Energy-efficient design and implementation of approximate floating-point multiplier | |
Chusov | Outperforming sequential full-word long addition with parallelization and vectorization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20171226 |