RU2498393C1 - Способ деления целых двоичных чисел без остатка начиная с младших разрядов - Google Patents

Способ деления целых двоичных чисел без остатка начиная с младших разрядов Download PDF

Info

Publication number
RU2498393C1
RU2498393C1 RU2012132258/08A RU2012132258A RU2498393C1 RU 2498393 C1 RU2498393 C1 RU 2498393C1 RU 2012132258/08 A RU2012132258/08 A RU 2012132258/08A RU 2012132258 A RU2012132258 A RU 2012132258A RU 2498393 C1 RU2498393 C1 RU 2498393C1
Authority
RU
Russia
Prior art keywords
bit
quotient
bits
vector
matrix
Prior art date
Application number
RU2012132258/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 RU2012132258/08A priority Critical patent/RU2498393C1/ru
Application granted granted Critical
Publication of RU2498393C1 publication Critical patent/RU2498393C1/ru

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

Изобретение относится к вычислительной технике и предназначено для построения быстродействующих параллельно-конвейерных делителей, обрабатывающих массивы положительных целых чисел. Техническим результатом является повышение скорости вычисления. Способ содержит этапы, на которых происходит параллельная запись делителя в ячейки матрицы на элементах памяти, первый разряд частного становится равным сумме по модулю два младшего разряда первого столбца матрицы и первого разряда делимого, остальные разряды частного становятся равными нулю; подсчитывается количество единиц b2 в векторе, равном поразрядному логическому умножению соответствующих разрядов второго столбца матрицы и разрядов частного, при этом второй разряд частного становится равным сумме по модулю два младшего разряда b2 и второго разряда делимого; аналогично подсчитывается количество единиц bi в векторе, который равен поразрядному логическому умножению соответствующих разрядов i-го столбца матрицы и разрядов частного, после чего вычисляется сумма ci вектора bi и вектора bi-1, сдвинутого на один разряд вправо, при этом i-й разряд частного становится равным сумме по модулю два младшего разряда сi и i-го разряда делимого, в итоге будет сформировано m-разрядное частное исходных чисел. 2 ил.

Description

Изобретение относится к вычислительной технике и предназначено для построения быстродействующих параллельно-конвейерных делителей, обрабатывающих массивы положительных целых чисел.
Известен итерационный способ деления целых чисел с плавающей запятой. В этом способе деление сводится к последовательности вычитаний с восстановлением остатка либо без восстановления остатка, которые выполняются последовательно (http.//wwvv.distedu.ru/mirror/_inform/dmivic.chat.ru/inform/div.html) со старших разрядов делимого. Недостаток состоит в том, что, во-первых, при итерационном способе умножения чисел выполняется m-1 операций вычитания, а с учетом последовательного способа переносов в старшие разряды - количество тактов суммирования равно (m-1)·2·m. Во-вторых, процесс формирования суммы является последовательным процессом.
Техническим результатом от использования способа деления целых двоичных чисел без остатка является повышение скорости вычисления за счет замены серии из m-1 арифметических операций вычитания m-разрядных чисел (m-1) операциями подсчета количества единичных бит в разрядных срезах, формируемых из разрядов делителя. На основании анализа и модификации полученных значений сумм количества единиц во всех разрядных срезах выполняется формирование значения двоичного числа, являющегося значением искомого частного. В результате количество тактов, необходимых для формирования значения частного целых двоичных чисел, будет равно 2·(log2m)·m тактов. Таким образом, предлагаемый способ обеспечивает выполнение операции формирования произведения быстрее известного итерационного способа в ((m-1) ·2·m)/((log2m)·2·m)=(m-1)/log2m раз. Например, при m=64 вычисления будут выполняться в 8 раз быстрее.
Описание работы устройства: делитель можно представить в виде последовательности бит A(am, am-1, …, a2, a1), где m - разрядность делителя.
Происходит параллельная запись делителя в ячейки матрицы на элементах памяти, размерность матрицы составляет m столбцов и m строк, где m - разрядность как делителя, так и частного, причем в ячейки с 1 по m первой строки матрицы записывается m-разрядный делитель, в ячейки с 2 по m второй строки матрицы записываются m-1 младших разрядов делителя, …, в ячейки с k по m k-й строки матрицы записывается m-k младших разрядов делителя, …, в m-ю ячейку m-й строки матрицы записывается младший разряд делителя.
Во все остальные ячейки матрицы записываются нули, в общем виде размещение множимого в ячейках матрицы на элементах памяти выглядит следующим образом:
Figure 00000001
После чего первый разряд частного становится равным сумме по модулю два младшего разряда первого столбца матрицы и первого разряда делимого, остальные разряды частного становятся равными нулю;
затем подсчитывается количество единиц b2 в векторе, равном поразрядному логическому умножению соответствующих разрядов второго столбца матрицы и разрядов частного, при этом второй разряд частного становится равным сумме по модулю два младшего разряда b2 и второго разряда делимого;
затем подсчитывается количество единиц b3 в векторе, который равен поразрядному логическому умножению соответствующих разрядов третьего столбца матрицы и разрядов частного, после чего вычисляется сумма c3 вектора b3 и вектора b2, сдвинутого на один разряд вправо, при этом третий разряд частного становится равным сумме по модулю два младшего разряда c3 и третьего разряда делимого;
и так далее вычисления продолжаются аналогичным образом, подсчитывается количество единиц bk в векторе, который равен поразрядному логическому умножению соответствующих разрядов k-го столбца матрицы и разрядов частного, после чего вычисляется сумма ck вектора bk и вектора ck-1, сдвинутого на один разряд вправо, при этом k-й разряд частного становится равным сумме по модулю два младшего разряда ck и k-го разряда делимого;
затем подсчитывается количество единиц bk+1 в векторе, который равен логическому умножению соответствующих разрядов (k+1)-го столбца матрицы и разрядов частного, после чего вычисляется сумма Ck+1 вектора bk+1 и вектора ck, сдвинутого на один разряд вправо, при этом (k+1)-й разряд частного становится равным сумме по модулю два младшего разряда ck+1 и (k+1)-го разряда делимого;
и так далее вычисления продолжаются аналогичным образом, подсчитывается количество единиц bm в векторе, который равен логическому умножению соответствующих разрядов m-го столбца матрицы и разрядов частного, после чего вычисляется сумма cm вектора bm и вектора cm-1, сдвинутого на один разряд вправо, при этом m-й разряд частного становится равным сумме по модулю два младшего разряда cm и m-го разряда делимого;
в итоге будет сформировано m-разрядное частное исходных чисел.
Пример: необходимо разделить делимое a1=110111 на делитель a2=1011 (m=4). Запишем делитель в виде матрицы размерностью m=4 строк и m=4 столбцов, в ячейки с 1 по m=4 первой строки записывается делитель. В ячейки с 2 по m=4 второй строки записывается m-1=3 младших разрядов делителя. В ячейки с 3 по m-1=4 третьей строки записывается m-2=2 младших разрядов делителя. В четвертую ячейку четвертой строки записывается младший разряд делителя. Во все остальные ячейки матрицы записываются нули:
Figure 00000002
Первый разряд частного d1=l становится равным инверсии суммы по модулю два младшего разряда первого столбца матрицы и первого разряда делимого, остальные разряды частного становятся равными нулю;
затем подсчитывается количество единиц b2=1 в векторе f2=(0011)&(0001)=0001, равном поразрядному логическому умножению соответствующих разрядов второго столбца матрицы и разрядов частного, при этом второй разряд частного d2=l⊕l=0 становится равным сумме по модулю два младшего разряда b2 и второго разряда делимого;
затем подсчитывается количество единиц b3=0 в векторе f3=(0110)&(0001)-0000, который равен поразрядному логическому умножению соответствующих разрядов третьего столбца матрицы и разрядов частного, после чего вычисляется сумма c3=0+0=0 вектора b3=0 и вектора b2=0, сдвинутого на один разряд вправо, при этом третий разряд частного d3=0⊕l=l становится равным сумме по модулю два младшего разряда c3 и третьего разряда делимого;
затем подсчитывается количество единиц b4=10 в векторе f3=(1101)&(0101)-0101, который равен поразрядному логическому умножению соответствующих разрядов четвертого столбца матрицы и разрядов частного, после чего вычисляется сумма С4=10+0=10 вектора b4=10 и вектора c3=0, сдвинутого на один разряд вправо, при этом четвертый разряд частного d4=0⊕0=0 становится равным сумме по модулю два младшего разряда c4 и четвертого разряда делимого.
Таким образом, сформировано частное d=0101.
Если принять за время сложения пары m-разрядных чисел m тактов работы устройства, а за время подсчета единичных бит в m-разрядном векторе log2m тактов, то время вычисления частного в устройстве на базе описанного способа равно 2·p·m тактов, где p=log2m, в то время как время деления итерационным способом равно 2·(m-1)·m тактов. Таким образом, быстродействие устройства на базе описанного способа в (m-1)/log2m раз выше по сравнению с быстродействием устройства на базе известного итерационного способа умножения.
Примером построения устройства на базе способа деления целых двоичных чисел без остатка может служить ее программирование на программируемых логических интегральных схемах (ПЛИС).
На фиг.1 представлен вариант структурной схемы устройства, реализующего операцию вычисления произведения остатков по основанию в общем виде, где 1 - счетчик единичных бит в двоичных векторах, 2 - p-разрядный двухплечевой сумматор, где p=log2n, 3 - сдвиговый p-разрядный регистр, a1-an - m-разрядные информационные входы схемы, s1-Sm - одноразрядные информационные выходы схемы, b1-bm - p-разрядные выходы счетчиков 1,
Figure 00000003
- (р+1)-разрядные выходы сумматоров 2.
На фиг.2 представлен вариант структурной схемы матрицы на элементах памяти для трехбитного остатка (m=3), где 1 - логический элемент И, 2 - информационный триггер с одним входом данных, одним входом синхронизации и одним выходом данных, 3 - информационный вход триггера, 4 - вход синхронизации триггера, 5 -информационный выход триггера, x1-x3 - входы схемы, на которые подается остаток множимого по трехбитному основанию, yi-y3 - входы схемы, на которые подается остаток множителя по трехбитному основанию, aij - выходы матрицы на элементах памяти.

Claims (1)

  1. Способ деления целых двоичных чисел без остатка, начиная с младших разрядов, заключающийся в том, что в умножающем устройстве:
    происходит параллельная запись делителя в ячейки матрицы на элементах памяти, размерность матрицы составляет m столбцов и m строк, где m - разрядность как делителя, так и частного, причем
    в ячейки с 1 по m первой строки матрицы записывается m-разрядный делитель,
    в ячейки с 2 по m второй строки матрицы записываются m-1 младших разрядов делителя, …, в ячейки с k по m k-й строки матрицы записывается m-k младших разрядов делителя, …, в m-ю ячейку m-й строки матрицы записывается младший разряд делителя, во все остальные ячейки матрицы записываются нули; затем первый разряд частного становится равным сумме по модулю два младшего разряда первого столбца матрицы и первого разряда делимого, остальные разряды частного становятся равными нулю;
    затем подсчитывается количество единиц b2 в векторе, равном поразрядному логическому умножению соответствующих разрядов второго столбца матрицы и разрядов частного, при этом второй разряд частного становится равным сумме по модулю два младшего разряда b2 и второго разряда делимого;
    затем подсчитывается количество единиц b3 в векторе, который равен поразрядному логическому умножению соответствующих разрядов третьего столбца матрицы и разрядов частного, после чего вычисляется сумма c3 вектора b3 и вектора b2, сдвинутого на один разряд вправо, при этом третий разряд частного становится равным сумме по модулю два младшего разряда с3 и третьего разряда делимого;
    и так далее вычисления продолжаются аналогичным образом, подсчитывается количество единиц bk в векторе, который равен поразрядному логическому умножению соответствующих разрядов k-го столбца матрицы и разрядов частного, после чего вычисляется сумма ck вектора bk и вектора ck-1, сдвинутого на один разряд вправо, при этом k-й разряд частного становится равным сумме по модулю два младшего разряда ck и k-го разряда делимого;
    затем подсчитывается количество единиц bk+1 в векторе, который равен логическому умножению соответствующих разрядов (k+1)-го столбца матрицы и разрядов частного, после чего вычисляется сумма ck+1 вектора bk+1 и вектора ck, сдвинутого на один разряд вправо, при этом (k+1)-й разряд частного становится равным сумме по модулю два младшего разряда ck+1 и (k+1)-го разряда делимого;
    и так далее вычисления продолжаются аналогичным образом, подсчитывается количество единиц bm в векторе, который равен логическому умножению соответствующих разрядов m-го столбца матрицы и разрядов частного, после чего вычисляется сумма cm вектора bm и вектора cm-1, сдвинутого на один разряд вправо, при этом m-й разряд частного становится равным сумме по модулю два младшего разряда cm и m-го разряда делимого;
    в итоге будет сформировано m-разрядное частное исходных чисел.
RU2012132258/08A 2012-07-27 2012-07-27 Способ деления целых двоичных чисел без остатка начиная с младших разрядов RU2498393C1 (ru)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2012132258/08A RU2498393C1 (ru) 2012-07-27 2012-07-27 Способ деления целых двоичных чисел без остатка начиная с младших разрядов

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2012132258/08A RU2498393C1 (ru) 2012-07-27 2012-07-27 Способ деления целых двоичных чисел без остатка начиная с младших разрядов

Publications (1)

Publication Number Publication Date
RU2498393C1 true RU2498393C1 (ru) 2013-11-10

Family

ID=49683327

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2012132258/08A RU2498393C1 (ru) 2012-07-27 2012-07-27 Способ деления целых двоичных чисел без остатка начиная с младших разрядов

Country Status (1)

Country Link
RU (1) RU2498393C1 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2810609C1 (ru) * 2023-07-12 2023-12-28 Федеральное государственное бюджетное образовательное учреждение высшего образования "Саратовский национальный исследовательский государственный университет имени Н.Г. Чернышевского" Последовательный делитель троичных целых чисел

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1247863A1 (ru) * 1985-02-04 1986-07-30 Предприятие П/Я В-2201 Матричное устройство дл делени
SU1751749A1 (ru) * 1990-12-10 1992-07-30 Одесский Политехнический Институт Устройство дл подсчета количества единиц в двоичном числе
RU2018932C1 (ru) * 1991-07-03 1994-08-30 Научно-исследовательский институт электронных вычислительных машин Матричное устройство для умножения и деления
EP0684548A1 (en) * 1993-12-15 1995-11-29 Silicon Graphics, Inc. Method and apparatus for integer division
US6625633B1 (en) * 1999-06-04 2003-09-23 Sony Corporation Divider and method with high radix
RU2006143196A (ru) * 2004-06-29 2008-06-20 ИНТЕЛ КОРПОРЕЙШН (э Делавер Корпорейшн) (US) Способ и устройство для реализации целочисленного деления на инвариантный делитель с использованием n-битовой операции умножения и суммирования
EP2270648A1 (en) * 2009-06-29 2011-01-05 Fujitsu Limited Arithmetic circuit, arithmetic processing device, and arithmetic processing method

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1247863A1 (ru) * 1985-02-04 1986-07-30 Предприятие П/Я В-2201 Матричное устройство дл делени
SU1751749A1 (ru) * 1990-12-10 1992-07-30 Одесский Политехнический Институт Устройство дл подсчета количества единиц в двоичном числе
RU2018932C1 (ru) * 1991-07-03 1994-08-30 Научно-исследовательский институт электронных вычислительных машин Матричное устройство для умножения и деления
EP0684548A1 (en) * 1993-12-15 1995-11-29 Silicon Graphics, Inc. Method and apparatus for integer division
US6625633B1 (en) * 1999-06-04 2003-09-23 Sony Corporation Divider and method with high radix
RU2006143196A (ru) * 2004-06-29 2008-06-20 ИНТЕЛ КОРПОРЕЙШН (э Делавер Корпорейшн) (US) Способ и устройство для реализации целочисленного деления на инвариантный делитель с использованием n-битовой операции умножения и суммирования
EP2270648A1 (en) * 2009-06-29 2011-01-05 Fujitsu Limited Arithmetic circuit, arithmetic processing device, and arithmetic processing method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2810609C1 (ru) * 2023-07-12 2023-12-28 Федеральное государственное бюджетное образовательное учреждение высшего образования "Саратовский национальный исследовательский государственный университет имени Н.Г. Чернышевского" Последовательный делитель троичных целых чисел

Similar Documents

Publication Publication Date Title
Mohan et al. Residue Number Systems
US7805479B2 (en) Scalable, faster method and apparatus for montgomery multiplication
Chen et al. Scalable and systolic dual basis multiplier over GF (2m)
US6728744B2 (en) Wide word multiplier using booth encoding
Omondi Cryptography arithmetic
Azarderakhsh et al. Systolic Gaussian normal basis multiplier architectures suitable for high-performance applications
Rashidi Efficient hardware implementations of point multiplication for binary Edwards curves
Sreedhar et al. A fast large-integer extended GCD algorithm and hardware design for verifiable delay functions and modular inversion
Järvinen et al. A generalization of addition chains and fast inversions in binary fields
Rashidi et al. Efficient lightweight hardware structures of point multiplication on binary edwards curves for elliptic curve cryptosystems
El-Razouk et al. New Bit-Level Serial GF (2^ m) Multiplication Using Polynomial Basis
Rashidi High-speed hardware implementation of Gaussian normal basis inversion algorithm over F2m
RU2653263C1 (ru) Арифметико-логическое устройство для умножения чисел по модулю
RU2498393C1 (ru) Способ деления целых двоичных чисел без остатка начиная с младших разрядов
Lee et al. Efficient $ M $-ary exponentiation over $ GF (2^{m}) $ using subquadratic KA-based three-operand Montgomery multiplier
Rashidi et al. High-speed hardware implementations of point multiplication for binary Edwards and generalized Hessian curves
RU2485574C1 (ru) Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов
Lee Super Digit-Serial Systolic Multiplier over GF (2^ m)
RU2491612C1 (ru) Способ организации вычислений суммы n m-разрядных чисел
Kim et al. Efficient cellular automata based Montgomery AB 2 multipliers over GF (2 m)
RU2559771C2 (ru) Устройство для основного деления модулярных чисел
RU2500018C1 (ru) Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов
RU2661797C1 (ru) Вычислительное устройство
RU2642366C1 (ru) Накапливающий сумматор
RU2804380C1 (ru) Конвейерный вычислитель