RU2485574C1 - Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов - Google Patents

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

Info

Publication number
RU2485574C1
RU2485574C1 RU2012114968/08A RU2012114968A RU2485574C1 RU 2485574 C1 RU2485574 C1 RU 2485574C1 RU 2012114968/08 A RU2012114968/08 A RU 2012114968/08A RU 2012114968 A RU2012114968 A RU 2012114968A RU 2485574 C1 RU2485574 C1 RU 2485574C1
Authority
RU
Russia
Prior art keywords
bit
matrix
digit
base
product
Prior art date
Application number
RU2012114968/08A
Other languages
English (en)
Inventor
Владимир Сергеевич Князьков
Илья Петрович Осинин
Original Assignee
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Вятский государственный университет (ФГБОУ ВПО "ВятГУ")
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Вятский государственный университет (ФГБОУ ВПО "ВятГУ") filed Critical Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Вятский государственный университет (ФГБОУ ВПО "ВятГУ")
Priority to RU2012114968/08A priority Critical patent/RU2485574C1/ru
Application granted granted Critical
Publication of RU2485574C1 publication Critical patent/RU2485574C1/ru

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

Изобретение относится к вычислительной технике и предназначено для построения быстродействующих параллельно-конвейерных умножителей. Техническим результатом является повышение скорости вычисления. Способ содержит этапы, на которых осуществляют параллельную запись остатка по основанию pi множимого в элементы памяти матрицы i-го умножителя, параллельно выполняют подсчет количества единиц bi в каждом столбце i-й матрицы, сдвигают двоичное число b1 на один разряд вправо, суммируют с числом b2, полученную сумму
Figure 00000033
сдвигают на один разряд вправо и суммируют с числом b3. Аналогичным образом осуществляют сдвиг полученных сумм и суммирование их с последующими числами до получения суммы
Figure 00000034
при этом младший разряд числа b1 является первым разрядом s1 произведения, младший разряд каждой полученной суммы
Figure 00000035
; является i-ым разрядом произведения. Сдвигают двоичное число
Figure 00000036
младший разряд полученного числа является (2*m)-м разрядом искомого произведения s2*m. В случае если si больше pi, производится коррекция полученного произведения si путем последовательного вычитания из si основания pi до тех пор, пока si не станет меньше pi, иначе коррекция не производится, одновременно суммируют порядки сомножителей, полученная сумма является порядком искомого произведения. 2 ил.

Description

Изобретение относится к вычислительной технике и предназначено для построения быстродействующих параллельно-конвейерных умножителей, обрабатывающих массивы положительных чисел с плавающей запятой в системе остаточных классов (СОК).
Операция умножения (далее по тексту умножение) в СОК производится параллельно по нескольким основаниям pi, их количество n определяется диапазоном Р представления чисел: Р=p1*p2*…*pn, где * - знак умножения. Представление числа в СОК обеспечивается наименьшими неотрицательными остатками Аi по системе взаимно простых оснований pi(i∈[1, n]).
Вещественные числа в системе остаточных классов представляют собой позиционный порядок и мантиссу, состоящую из набора остатков по основаниям pi.
Известен итерационный способ умножения целых m-разрядных чисел с плавающей запятой, который применим к числам, представленным как в позиционной системе счисления, так и в системе остаточных классов. В этом способе умножение сводится к последовательности сложений с накоплением, которые выполняются последовательно. При сдвигах множителя освободившиеся разряды заполняются нулями. Если первый бит m-разрядного множителя равен единице, то первое слагаемое является множимым, иначе первое слагаемое равно нулю. Если второй бит множителя равен единице, то второе слагаемое является множимым, сдвинутым на один разряд влево, иначе второе слагаемое равно нулю. К сумме первого и второго слагаемых прибавляется множимое, сдвинутое на два разряда влево, если второй бит множителя равен единице, иначе прибавляется нуль. Затем к полученной сумме прибавляется множимое, сдвинутое на три разряда влево, если третий бит множителя равен единице, иначе прибавляется нуль. И так далее до k-го разряда множителя, к накопленной сумме прибавляется множимое, сдвинутое на k разрядов влево, если k-й бит множителя равен единице, иначе прибавляется нуль. И так далее до m-го разряда множителя, к накопленной сумме прибавляется множимое, сдвинутое на m разрядов влево, если m-й бит множителя равен единице, иначе прибавляется нуль. В итоге накопленная сумма является искомым произведением сомножителей. Недостаток этого способа состоит в том, что, во-первых, при итерационном способе умножения чисел выполняется m-1 операций суммирования, а с учетом последовательного способа переносов в старшие разряды количество тактов суммирования равно (m-1)*2*m. Во-вторых, процесс формирования суммы является последовательным процессом.
Техническим результатом от использования заявляемого способа организации умножения чисел с плавающей запятой, представленных в системе остаточных классов, является повышение скорости вычисления за счет замены серии из m-1 арифметических операций сложения 2*(m-1) параллельно исполняемыми операциями подсчета количества единичных бит в разрядных срезах, формируемых из разрядов множимого. Данная операция выполняется параллельно для всех остатков по основаниям системы остаточных классов, формирующих сомножители. На основании анализа и модификации полученных значений сумм количества единиц во всех разрядных срезах выполняется формирование значения двоичного числа, являющегося значением искомого произведения. В результате количество тактов, необходимых для формирования значения суммы массива целых двоичных чисел - произведения, будет равно (log2m)*2*m тактов. Таким образом, предлагаемый способ обеспечивает выполнение операции формирования произведения быстрее известного итерационного способа в ((m-1)*2*m)/((log2m)*2*m)=(m-1)/log2m раз, например, при m=64 вычисления будут выполняться в 8 раз быстрее.
Описание работы устройства: способ организации умножения двоичных чисел с плавающей запятой, представленных в системе остаточных классов по основаниям p1, p2, …, pk, …, pn, заключается в том, что в i-м умножителе, где i∈[1,n], содержащем: 2*m-1 счетчиков единичных бит, 2*m-1 двухплечевых сумматоров, 2*m-1 сдвиговых регистров и одну матрицу на элементах памяти, размерность которой составляет (2*m-1) столбцов и m строк, где m - разрядность i-го основания системы остаточных классов, происходит параллельная запись остатка по основанию pi множимого в элементы памяти матрицы i-го умножителя, причем каждый i-й двоичный позиционный остаток по основанию pi можно представить в виде последовательности бит Ai(am,am-1,…,a2,a1), где m - разрядность остатка, i∈[1, n].
Происходит параллельная запись остатка по основанию pi множимого в ячейки матрицы на элементах памяти. В ячейки с 1 по m первой строки матрицы записывается m-разрядный остаток по основанию pi множимого в том случае, когда первый разряд множителя равен единице, иначе записываются нули.
В ячейки с 2 по m+1 второй строки матрицы записывается m-разрядный остаток по основанию pi множимого в том случае, когда второй разряд множителя равен единице, иначе записываются нули.
И так далее, в ячейки с k по (m+k-1) k-й строки матрицы записывается m-разрядный остаток по основанию pi множимого в том случае, когда k-й разряд множителя равен единице, иначе записываются нули.
И так далее, в ячейки с m по (2*m-1) второй строки матрицы записывается m-разрядный остаток по основанию pi множимого в том случае, когда m-й разряд множителя равен единице, иначе записываются нули; во все остальные ячейки матрицы записываются нули.
В общем виде размещение множимого в ячейках матрицы на элементах памяти выглядит следующим образом:
Figure 00000001
Затем производится параллельный подсчет количества единиц в 2*m-1 двоичных векторах, являющихся столбцами приведенной выше матрицы. В результате формируется 2*m-1 двоичных чисел bj - значений количества единиц в соответствующих m-разрядных векторах, где j∈[1,2*m-1].
В результате параллельного подсчета количества единиц в (2*m-1) столбцах матрицы формируется (2*m-1) двоичных чисел - значений количества единиц в соответствующих m-разрядных столбцах матрицы, причем первое двоичное число b1 - значение количества единиц в первом m-разрядном столбце матрицы, второе двоичное число b2 - значение количества единиц во втором m-разрядном столбце матрицы, …, k-e двоичное число bk - значение количества единиц в k-ом m-разрядном столбце матрицы, …, (2*m-1)-е двоичное число b2*m-1 - значение количества единиц в (2*m-1)-ом m-разрядном столбце матрицы.
Младший разряд числа b1 является первым разрядом s1 произведения m-разрядных остатков по основанию p1 исходных чисел. Затем выполняется сдвиг двоичного числа b1 на один разряд вправо, после чего полученный результат суммируется с числом b2, где младший разряд полученной суммы
Figure 00000002
является вторым разрядом s2 произведения m-разрядных остатков по основанию pi исходных чисел.
Затем выполняется сдвиг двоичного числа
Figure 00000003
на один разряд вправо, после чего полученный результат суммируется с числом b3, младший разряд полученной суммы
Figure 00000004
является третьим разрядом s3 произведения m-разрядных остатков по основанию pi исходных чисел. И далее вычисления продолжаются аналогичным образом до вычисления суммы
Figure 00000005
, младший разряд которой является k-м разрядом sk произведения m-разрядных остатков по основанию pi исходных чисел.
Затем выполняется сдвиг двоичного числа
Figure 00000006
на один разряд вправо, после чего полученный результат суммируется с числом bk+1, младший разряд полученной суммы
Figure 00000007
является (k+1)-м разрядом sk+1 произведения m-разрядных остатков по основанию pi исходных чисел. И далее вычисления продолжаются аналогичным образом до вычисления суммы
Figure 00000008
, младший разряд которой является (2*m-1)-м разрядом s2*m-1 произведения m-разрядных остатков по основанию pi исходных чисел.
Затем выполняется сдвиг двоичного числа
Figure 00000009
, младший разряд полученного числа является (2*m)-м разрядом искомого произведения s2*m.
В итоге будет сформировано произведение s1 m-разрядных остатков по основанию pi исходных чисел - число, составленное из последовательности бит: s2, s2, …, sk, …, s2*m.
В том случае если si больше pi, производится коррекция полученного произведения si для невыхода за пределы основания путем последовательного вычитания из si основания pi до тех пор, пока si не станет меньше pi, иначе коррекция не производится.
Одновременно с вычислением произведения m-разрядных остатков суммируются порядки сомножителей, полученная сумма является порядком искомого произведения.
Пример: необходимо умножить два бинарных трехбитных (m=3) операнда: множимое a1=111, множитель а2=101 по основанию р=10011. Запишем их в виде матрицы размерностью m=3 строк и 2*m-1=5 столбцов, в ячейки с 1 по m=3 первой строки записывается множимое, так как первый бит множимого равен единице. В ячейки с 2 по m+1=4 второй строки записываются нули, так как второй бит множимого равен нулю. В ячейки с 3 по 2*m-1=5 третьей строки записывается множимое, так как третий бит множителя равен единице. Во все остальные ячейки матрицы записываются нули:
Figure 00000010
Затем параллельно подсчитывается число единиц в столбцах матрицы: b1=001, b2=001, b3=010, b4=001, b5=001. Так как младший бит b1 равен единице, то бит результата s1=l.
Число b1 сдвигается на один разряд вправо и результат сдвига
Figure 00000011
суммируется с числом b2=001. Сумма
Figure 00000012
, ее младший разряд является вторым битом результата s2=1.
Число
Figure 00000013
сдвигается на один разряд вправо и результат сдвига
Figure 00000014
суммируется с числом b3=010. Сумма
Figure 00000015
, ее младший разряд является третьим битом результата s3=0.
Число
Figure 00000016
сдвигается на один разряд вправо и результат сдвига
Figure 00000017
суммируется с числом b4=001. Сумма
Figure 00000018
, ее младший разряд является четвертым битом результата s4=0.
Число
Figure 00000019
сдвигается на один разряд вправо и результат сдвига
Figure 00000020
суммируется с числом b5=001. Сумма
Figure 00000021
, ее младший разряд является пятым битом результата s5=0. Число
Figure 00000022
сдвигается на один разряд вправо и младший разряд результата сдвига
Figure 00000023
является шестым битом результата s6=1. В итоге получено произведение операндов s=(s6,s5,s4,s3,s2,s1)=100011. Так как s>p, необходима коррекция произведения, заключающаяся в вычитании из s основания p, то есть s'=s-p=100011-10011=10000, так как s'<p, то s' является искомым произведением исходных операндов по модулю р.
Если принять за время сложения пары m-разрядных остатков m тактов работы устройства, то время вычисления произведения в устройстве на базе описанного способа равно р*2*m тактов, где p - количество тактов, необходимых для подсчета бит в двоичном векторе, причем p=log2m, в то время как время умножения итерационным способом равно 2*(m-1)*m тактов. Таким образом, быстродействие устройства на базе описанного способа в (m-1)/log2m раз выше по сравнению с быстродействием устройства на базе известного итерационного способа умножения.
Примером построения устройства на базе способа организации умножения чисел с плавающей запятой, представленных в системе остаточных классов, может служить ее программирование на программируемых логических интегральных схемах (ПЛИС).
На фиг.1 представлен вариант структурной схемы устройства, реализующего операцию вычисления произведения остатков в общем виде, где: 1 - счетчик единичных бит в двоичных векторах; 2 - p-разрядный двухплечевой сумматор, где p=log2n; 3 - сдвиговый p-разрядный регистр; a1-a2*m-1 - m-разрядные информационные входы схемы; s1-s2*m-1 - одноразрядные информационные выходы схемы; b1-b2*m-1 - p-разрядные выходы счетчиков 1;
Figure 00000024
- разрядные выходы сумматоров 2.
На фиг.2 представлен вариант структурной схемы матрицы на элементах памяти для трехбитного остатка (m=3), где: 1 - логический элемент И; 2 - информационный триггер с одним входом данных, одним входом синхронизации и одним выходом данных; 3 - информационный вход триггера; 4 - вход синхронизации триггера; 5 - информационный выход триггера; x1, x2, x3 - входы схемы, на которые подается остаток множимого по трехбитному основанию; y1, y2, y3 - входы схемы, на которые подается остаток множителя по трехбитному основанию; a1,1÷a1,5, a2,1÷a2,5, а3,1÷а3,5, - выходы матрицы на элементах памяти.

Claims (1)

  1. Способ организации умножения двоичных чисел с плавающей запятой, представленных в системе остаточных классов по основаниям р1, р2, …, pk, …, pn, заключающийся в том, что в i-м умножителе, где i∈*[1, n], содержащем: 2*m-1 счетчиков единичных бит, 2*m-1 двухплечевых сумматоров, 2*m-1 сдвиговых регистров и одну матрицу на элементах памяти, размерность которой составляет (2*m-1) столбцов и m строк, где m - разрядность i-го основания системы остаточных классов, происходит параллельная запись остатка по основанию pi множимого в элементы памяти матрицы i-го умножителя, причем в ячейки с 1 по m первой строки матрицы записывается m-разрядный остаток по основанию pi множимого в том случае, когда первый разряд множителя равен единице, иначе записываются нули, в ячейки с 2 по m+1 второй строки матрицы записывается m-разрядный остаток по основанию pi множимого в том случае, когда второй разряд множителя равен единице, иначе записываются нули, …, в ячейки с k по (m+k-1) k-й строки матрицы записывается m-разрядный остаток по основанию pi множимого в том случае, когда k-й разряд множителя равен единице, иначе записываются нули, …, в ячейки с m по (2*m-1) m-й строки матрицы записывается m-разрядный остаток по основанию pi множимого в том случае, когда n-й разряд множителя равен единице, иначе записываются нули, во все остальные ячейки матрицы записываются нули, затем параллельно выполняется подсчет количества единиц с использованием счетчика единичных бит в первом столбце i-й матрицы, втором столбце i-й матрицы, …, k-м столбце i-й матрицы, …, (2*m-1)-м столбце i-й матрицы; в результате параллельного подсчета количества единиц в (2*m-1) столбцах i-й матрицы формируется (2*m-1) двоичных чисел - значений количества единиц в соответствующих m-разрядных столбцах i-й матрицы, причем первое двоичное число b1 - значение количества единиц в первом m-разрядном столбце i-й матрицы, второе двоичное число b2 - значение количества единиц во втором m-разрядном столбце i-й матрицы, …, k-е двоичное число bk - значение количества единиц в k-м m-разрядном столбце i-й матрицы, …, m-е двоичное число b2*m-1 - значение количества единиц в (2*m-1)-м m-разрядном столбце i-й матрицы; младший разряд числа b1 является первым разрядом s1 произведения m-разрядных остатков по основанию pi исходных чисел; затем выполняется сдвиг двоичного числа b1 на один разряд вправо, после чего полученный результат суммируется с числом b2, где младший разряд полученной суммы
    Figure 00000025
    является вторым разрядом s2 произведения m-разрядных остатков по основанию pi исходных чисел; затем выполняется сдвиг двоичного числа
    Figure 00000026
    на один разряд вправо, после чего полученный результат суммируется с числом b3, младший разряд полученной суммы
    Figure 00000027
    является третьим разрядом s3 произведения m-разрядных остатков по основанию pi исходных чисел; и так далее вычисления продолжаются аналогичным образом до вычисления суммы
    Figure 00000028
    , младший разряд которой является k-м разрядом sk произведения m-разрядных остатков по основанию pi исходных чисел; затем выполняется сдвиг двоичного числа
    Figure 00000029
    , на один разряд вправо, после чего полученный результат суммируется с числом bk+1, младший разряд полученной суммы
    Figure 00000030
    является (k+1)-м разрядом sk+1 произведения m-разрядных остатков по основанию pi исходных чисел; и так далее вычисления продолжаются аналогичным образом до вычисления суммы
    Figure 00000031
    , младший разряд которой является (2*m-1)-м разрядом s2*m-1 произведения m-разрядных остатков по основанию pi исходных чисел; затем выполняется сдвиг двоичного числа
    Figure 00000032
    , младший разряд полученного числа является (2*m)-м разрядом искомого произведения s2*m; в итоге будет сформировано произведение si m-разрядных остатков по основанию pi исходных чисел - число, составленное из последовательности бит: s1, s2, …, sk, …, s2*m; в том случае, если si больше pi, производится коррекция полученного произведения si для невыхода за пределы основания путем последовательного вычитания из si основания pi до тех пор, пока si не станет меньше pi, иначе коррекция не производится, одновременно с вычислением произведения m-разрядных остатков суммируются порядки сомножителей, полученная сумма является порядком искомого произведения.
RU2012114968/08A 2012-04-17 2012-04-17 Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов RU2485574C1 (ru)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2012114968/08A RU2485574C1 (ru) 2012-04-17 2012-04-17 Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2012114968/08A RU2485574C1 (ru) 2012-04-17 2012-04-17 Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов

Publications (1)

Publication Number Publication Date
RU2485574C1 true RU2485574C1 (ru) 2013-06-20

Family

ID=48786492

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2012114968/08A RU2485574C1 (ru) 2012-04-17 2012-04-17 Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов

Country Status (1)

Country Link
RU (1) RU2485574C1 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2609745C2 (ru) * 2014-05-28 2017-02-02 Общество с ограниченной ответственностью "ПАВЛИН Технологии" Способ осуществления операции скалярного умножения произвольного вектора на загружаемый в устройство векторный коэффициент и опционального сложения со скалярным коэффициентом

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1982002265A1 (en) * 1980-12-22 1982-07-08 James M Mccoskey Prime or relatively prime radix data processing system
SU1280624A1 (ru) * 1985-07-01 1986-12-30 Предприятие П/Я А-7638 Устройство дл умножени чисел с плавающей зап той
RU2006919C1 (ru) * 1991-08-01 1994-01-30 Государственный научно-исследовательский институт точного электронного приборостроения Устройство для умножения s-ичных цифр в позиционно-остаточной системе счисления
US20060184600A1 (en) * 2003-07-31 2006-08-17 Kazuyuki Maruo Residue number system arithmetic operating system, scaling operator, scaling operation method and program and recording medium of the same
US20110231465A1 (en) * 2010-03-09 2011-09-22 Phatak Dhananjay S Residue Number Systems Methods and Apparatuses

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1982002265A1 (en) * 1980-12-22 1982-07-08 James M Mccoskey Prime or relatively prime radix data processing system
SU1280624A1 (ru) * 1985-07-01 1986-12-30 Предприятие П/Я А-7638 Устройство дл умножени чисел с плавающей зап той
RU2006919C1 (ru) * 1991-08-01 1994-01-30 Государственный научно-исследовательский институт точного электронного приборостроения Устройство для умножения s-ичных цифр в позиционно-остаточной системе счисления
US20060184600A1 (en) * 2003-07-31 2006-08-17 Kazuyuki Maruo Residue number system arithmetic operating system, scaling operator, scaling operation method and program and recording medium of the same
US20110231465A1 (en) * 2010-03-09 2011-09-22 Phatak Dhananjay S Residue Number Systems Methods and Apparatuses

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2609745C2 (ru) * 2014-05-28 2017-02-02 Общество с ограниченной ответственностью "ПАВЛИН Технологии" Способ осуществления операции скалярного умножения произвольного вектора на загружаемый в устройство векторный коэффициент и опционального сложения со скалярным коэффициентом

Similar Documents

Publication Publication Date Title
Swartzlander et al. Computer arithmetic
Mohan et al. Residue Number Systems
US7805479B2 (en) Scalable, faster method and apparatus for montgomery multiplication
Mehta et al. Implementation of single precision floating point multiplier using karatsuba algorithm
EP2138931A1 (en) Combined polynomial and natural multiplier architecture
Kalaiyarasi et al. Design of an efficient high speed radix-4 booth multiplier for both signed and unsigned numbers
WO2021073918A1 (en) Multi-mode low-precision inner-product computation circuits for massively parallel neural inference engine
Omondi Cryptography arithmetic
RU2485574C1 (ru) Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов
RU2696223C1 (ru) Арифметико-логическое устройство для формирования остатка по произвольному модулю от числа
RU2653263C1 (ru) Арифметико-логическое устройство для умножения чисел по модулю
RU2348965C1 (ru) Вычислительное устройство
RU2500018C1 (ru) Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов
RU2491612C1 (ru) Способ организации вычислений суммы n m-разрядных чисел
EP0529755A2 (en) Method and apparatus for negating an operand of a multiplication operation
RU2498393C1 (ru) Способ деления целых двоичных чисел без остатка начиная с младших разрядов
RU2510072C1 (ru) Устройство деления и извлечения квадратного корня
Cilardo Variable-latency signed addition on fpgas
RU2804380C1 (ru) Конвейерный вычислитель
RU2626654C1 (ru) Умножитель по модулю
Kandimalla Rajaneesh A Novel High Performance Implementation of 64 Bit MAC Units and Their Delay Comparison
RU2791440C1 (ru) Конвейерный формирователь остатков по произвольному модулю
Tabei et al. An unsigned truncated sequential multiplier with variable error compensation
RU2755734C1 (ru) Устройство для умножения чисел по произвольному модулю
RU2797164C1 (ru) Конвейерный умножитель по модулю