RU2559771C2 - Device for primary division of molecular numbers - Google Patents
Device for primary division of molecular numbers Download PDFInfo
- Publication number
- RU2559771C2 RU2559771C2 RU2013148505/08A RU2013148505A RU2559771C2 RU 2559771 C2 RU2559771 C2 RU 2559771C2 RU 2013148505/08 A RU2013148505/08 A RU 2013148505/08A RU 2013148505 A RU2013148505 A RU 2013148505A RU 2559771 C2 RU2559771 C2 RU 2559771C2
- Authority
- RU
- Russia
- Prior art keywords
- dividend
- output
- input
- divider
- circuit
- Prior art date
Links
Images
Abstract
Description
Изобретение относится к вычислительным модулярным системам и предназначено для выполнения основного деления чисел, представленных в системе остаточных классов (СОК).The invention relates to computing modular systems and is intended to perform the basic division of numbers represented in the system of residual classes (RNS).
В СОК обычное целое число представляется в виде остатков от деления на набор модулей. Арифметические операции над числами заменяются операциями над остатками. Выполнение операций происходит параллельно и без межразрядных переносов, что позволяет очень быстро реализовать сложение, вычитание и умножение. Однако операция деления представляет определенные трудности, которые исследователи стараются упростить, предлагая новые архитектуры вычислений и аппаратные реализации.In JUICE, the usual integer is represented as the remainder of the division by a set of modules. Arithmetic operations on numbers are replaced by operations on residuals. The operations are performed in parallel and without inter-bit transfers, which allows very quickly to add, subtract and multiply. However, the division operation presents certain difficulties, which researchers are trying to simplify by proposing new computing architectures and hardware implementations.
Известна «Нейронная сеть для деления чисел, представленных в системе остаточных классов» (патент RU 2318239, G06F, опубликовано 27.02.2008), содержащая нейронную сеть для расширения кортежа числовой системы вычетов, нейронные сети конечного кольца для суммирования и умножения.The well-known "Neural network for dividing the numbers represented in the system of residual classes" (patent RU 2318239, G06F, published 02.27.2008), containing a neural network for expanding a tuple of a numerical system of residues, neural networks of a finite ring for summation and multiplication.
Недостатком устройства является низкая скорость деления чисел и ограниченная функциональная возможность, так как в качестве делителя выбирается один их модулей системы остаточных классов (СОК).The disadvantage of this device is the low speed of division of numbers and limited functionality, since one of the modules of the system of residual classes (RNS) is selected as a divider.
Наиболее близкой к изобретению является «Нейронная сеть основного деления модулярных чисел» (патент RU 2400813, G06F 3/02, G06F 7/72, опубликовано 27.04.2010). Недостатком устройства является большой объем оборудования. Известная нейронная сеть предназначена для деления модулярных чисел в случае, когда в качестве делителя используется целое положительное число, попарно простое с р1, р2,…, pn, либо целое положительное число, представляющее собой произведение чисел, попарно простых с pi. Для выполнения этого условия возникает необходимость нахождения приблизительного делителя путем использования обобщенной позиционной системы счисления (ОПСС). Для нахождения приблизительного делителя необходимо дополнительное оборудование и время.Closest to the invention is the "Neural network of the main division of modular numbers" (patent RU 2400813,
Техническим результатом изобретения является расширение функциональных возможностей, что выражается в отсутствии накладываемых условий на делимое, делитель и выбор набора модулей СОК, сокращение оборудования и повышение скорости при выполнении операции деления.The technical result of the invention is the expansion of functionality, which is expressed in the absence of imposed conditions on the dividend, divider and the choice of a set of RNS modules, equipment reduction and speed increase during the division operation.
Указанный технический результат достигается тем, что устройство для основного деления модулярных чисел содержит (фиг. 1): входные шины для определения начала процесса «деления», шину 31, входные шины для подачи делимого 1 и делителя 2 и выходную шину частного 30; схему умножения 7, предназначенную для умножения делителя на высшую степень аппроксимационного ряда частного; схему мультиплексора 8, на вход которого поступают данные либо непосредственно делителя, шина 2, либо делителя, умноженного на высшую степень аппроксимационного ряда частного, шина 32; схему сравнения 11 (патент на изобретение №2503992, опубл. 10.01.2014) для сравнения относительных значений делимого и делителя, поступивших по шинам 1 и 33; сумматоры делимого 37 и делителя 10, предназначенные для суммирования произведений констант выбранной СОК на разряды соответственно делимого и делителя, поступивших по шинам 26 и 25; кроме того, на сумматор делимого 37 поступает остаток от вычитания из делимого степеней членов ряда, поступающий по шине 39; вычитатель 14 для вычитания из сумматора делимого 37, шина 38, соответствующих значений степеней аппроксимационного ряда частного, поступивших по шине 34; регистр сдвига 9, предназначенный для сдвига делителя «влево» до появления переноса в знаковый разряд в случае аппроксимации ряда частного или сдвига «вправо» в случае уточнения аппроксимационного ряда частного, поступившего по шине 23; регистр 36 хранения остатка при вычитании из делимого членов ряда частного, предназначенный для временного хранения результатов вычитания (вычитатель 14) из делимого соответствующих степеней ряда частного, поступивших по шине 41 в случае отсутствия запрещающего сигнала по шине 27; схему «запрета» 35, предназначенную для запрета прохождения результата вычитателя 14 шина 40, если значение результата отрицательное, т.е. в случае действия запрещающего сигнала по шине 27; схему «запрета» 12, предназначенную для прохождения значений соответствующих степеней, если они входят в уточненный ряд частного, поступивших по шине 28; шина 27 служит для подачи сигналов на запрещающие входы схем «запрета» 12 и 35, если в знаковом разряде вычитателя 14 записана «1», то есть число отрицательное; счетчик 4, предназначенный для счета тактовых импульсов, поступивших по шине 17, соответствующих количеству сдвигов регистра сдвига 9; память 5 (количество ячеек памяти определяется выражением i=logP, где Р=p1p2…pn) предназначена для хранения степеней двойки qi mod pj, j=1,2,…,n, представленных в СОК, которые подаются по шине 24 через ключ 6 на информационный вход схемы «запрета» 12 по шине 28 и далее на вход сумматора 13 по шине 29, считывание которых осуществляется по адресной шине 21 после поступления сигнала «Разрешение считывания» по шине 22 (остановка счетчика 4 и «Разрешение считывания» определяется в момент переноса единицы в знаковый разряд регистра сдвига 9); ключ 6 для прохождения степеней ряда на вход схемы умножения 7 и схемы «запрета» 12 при поступлении тактовых импульсов с шины 16; схема управления 3 предназначена для формирования тактовых, синхронизирующих импульсов и сигналов установки в «0» элементов устройства деления (шины 15, 16, 17, 18); сумматор 13 частного предназначен для суммирования степеней ряда, представленных в СОК, поступивших по шине 29, либо по шине 42 в случае а=b; сигналы с выхода схемы сравнения 11 поступают на вход схемы управления: в случае, если а>b, шина 20, в случае если а<b, шина 19.The specified technical result is achieved by the fact that the device for the main division of modular numbers contains (Fig. 1): input buses for determining the beginning of the "division" process, bus 31, input buses for supplying dividend 1 and
Известные алгоритмы деления чисел, представленных в СОК, базируются на абсолютных значениях делимого и делителя. В изобретении предлагается использовать не абсолютные значения, а их относительные величины.Known algorithms for dividing the numbers represented in the RNS are based on the absolute values of the dividend and divisor. The invention proposes to use not absolute values, but their relative values.
Рассмотрим модификацию алгоритма основного деления чисел, представленных в системе остаточных классов в случае, когда и делимое и делитель представляют собой произвольные целые числа и делитель не приводится к случаю попарно простого с модулями СОК. Модификация основана на использовании делимого и делителя, представленных в относительных величинах.Let us consider a modification of the algorithm for the basic division of numbers represented in the system of residual classes in the case when both the dividend and the divisor are arbitrary integers and the divisor is not reduced to the case of pairwise simple with RNS modules. The modification is based on the use of the dividend and divisor, presented in relative terms.
В последнее время проявляется значительный интерес к СОК, обладающей высоким уровнем естественного параллелизма при выполнении арифметических операций, высокой точностью, надежностью и стойкостью.Recently, considerable interest has been shown in RNS, which has a high level of natural parallelism during arithmetic operations, high accuracy, reliability, and stability.
Специализированные процессоры на основе арифметики СОК могут сыграть важную роль в высокоскоростных системах обработки данных в режиме реального времени. Операции сложения, вычитания и умножения, называемые модульными операциями, могут быть реализованы очень быстро, без распространения межразрядных переносов. Немодульные операции деления, сравнения чисел, определения знака и переполнения диапазона остаются сравнительно медленными. Любое улучшение скорости этих медленных алгоритмов значительно улучшает производительность многомодульных арифметико-логических устройств (АЛУ). Обычно при рассмотрении деления в СОК выделяют три категории: деление с нулевым остатком, масштабирование и деление в общем случае. Проблема деления в общем виде в СОК привлекает внимание многих исследователей для разработки высокопроизводительных многомодульных АЛУ. Известные алгоритмы деления в СОК, основанные на использовании преобразования в ОПСС, масштабировании, округлении, расширении и других операциях, являются медленными и требуют выполнения большого количества арифметических действий. Большинство известных алгоритмов основаны на сравнении делимого с делителем или с его удвоенным значением, которые представляют определенную сложность. В связи с этим возникает необходимость упростить структуру вычислений при сравнении модулярных чисел. Одним из направлений упрощения операции сравнения модулярных чисел является подход с использованием приближенного метода вычисления позиционной характеристики модулярного числа, который позволяет абсолютно правильно реализовать основные классы процедур принятия решений: проверка равенства (неравенства) двух значений; сравнение двух значений (больше, меньше) и другие, которые обеспечивают решение основного круга задач, возникающих при аппаратной или программной реализации вычислений в системе остаточных классов.Specialized processors based on RNS arithmetic can play an important role in high-speed real-time data processing systems. Addition, subtraction and multiplication operations, called modular operations, can be implemented very quickly, without the spread of inter-bit transfers. The non-modular operations of dividing, comparing numbers, determining the sign, and overflowing the range remain relatively slow. Any improvement in the speed of these slow algorithms significantly improves the performance of multi-module arithmetic logic devices (ALUs). Usually, when considering division in the RNS, three categories are distinguished: division with zero remainder, scaling, and division in the general case. The problem of general division in the RNS has attracted the attention of many researchers for the development of high-performance multi-module ALUs. Well-known division algorithms in RNS based on the use of conversion in OPSS, scaling, rounding, expansion, and other operations are slow and require a large number of arithmetic operations. Most well-known algorithms are based on comparing the dividend with the divisor or with its double value, which represent a certain complexity. In this regard, it becomes necessary to simplify the structure of calculations when comparing modular numbers. One of the ways to simplify the operation of comparing modular numbers is the approach using an approximate method for calculating the positional characteristic of a modular number, which allows you to absolutely correctly implement the main classes of decision-making procedures: checking the equality (inequality) of two values; a comparison of two values (more, less) and others that provide a solution to the main range of problems arising from hardware or software implementation of calculations in the system of residual classes.
Суть приближенного метода вычисления позиционной характеристики модулярного числа и его использование для деления модулярных чисел основаны на использовании относительных величин анализируемых чисел к полному диапазону, определяемому Китайской теоремой об остатках, которая связывает позиционное число а с его представлением в остатках (α1, α2,…,αn„), где αi - наименьшие неотрицательные вычеты числа, относительно модулей системы остаточных классов р1, р2,…,pn следующим выражениемThe essence of the approximate method for calculating the positional characteristic of a modular number and its use for dividing modular numbers is based on using the relative values of the analyzed numbers to the full range defined by the Chinese remainder theorem, which relates the positional number a to its representation in the remainders (α 1 , α 2 , ... , α n „), where α i are the smallest non-negative residues of the number, with respect to the moduli of the system of residual classes p 1 , p 2 , ..., p n with the following expression
где - модули СОК, - мультипликативная инверсия Pi относительно pi, и Where - SOK modules, - a multiplicative inversion of P i relative to p i , and
Если разделить левую и правую части выражения (1) на константу Р, соответствующую диапазону чисел, то получим приближенное значениеIf we divide the left and right parts of the expression (1) by the constant P, corresponding to the range of numbers, then we obtain an approximate value
где - константы выбранной системы, а αi - разряды числа, представленного в СОК по модулям pi, где i=1, 2,…,n, при этом значение суммы (2) будет в интервале [0,1). Конечный результат суммы определяется после суммирования и отбрасывания целой части числа с сохранением дробной части суммы. Дробная величина содержит как информацию о величине числа, так и о его знаке. Если то число a - положительное и F(a) равна величине числа а, разделенной на Р. В противном случае a - отрицательное число, и 1 - F(a) показывает относительную величину числа а. Округление величины F{a) до 2-1 бита будем обозначать как Точное значение величины F(a) определяется неравенствами Целая часть числа, полученная в результате суммирования констант ki, представляет собой ранг числа, то есть такую непозиционную характеристику, которая показывает, сколько раз диапазон системы р был превзойден при переходе от представления чисел в системе остаточных классов к его позиционному представлению. При необходимости определение ранга может производиться непосредственно в процессе выполнения операции суммирования констант ki. Дробная часть может быть записана также как A mod 1, потому что Количество разрядов дробной части числа определяется максимально возможной разностью между соседними числами. При точном сравнении, которое широко используется при делении чисел, необходимо вычислить значение, которое является эквивалентом преобразования из СОК в позиционную систему счисления. Для решения задачи сравнения чисел а и b достаточно приблизительно знать относительные значения чисел и по отношению к динамическому диапазону [0,l), что выполняется достаточно просто, но при этом верно определяются соотношения А=В, А>В или А<В.Where are the constants of the selected system, and α i are the digits of the number represented in the RNC by the modules p i, where i = 1, 2, ..., n, while the value of the sum (2) will be in the range [0,1). The final result of the sum is determined after summing and discarding the integer part of the number while maintaining the fractional part of the sum. Fractional value contains both information about the value of the number and its sign. If then the number a is positive and F (a) is equal to the value of the number a divided by P. Otherwise, a is the negative number, and 1 - F (a) shows the relative value of the number a. Rounding the value of F (a) to 2 -1 bits will be denoted as The exact value of F (a) is determined by the inequalities The integer part of the number obtained by summing the constants k i represents the rank of the number, that is, such a non-positional characteristic that shows how many times the range of the system p was surpassed during the transition from the representation of numbers in the system of residual classes to its positional representation. If necessary, the determination of the rank can be made directly in the process of performing the operation of summing the constants k i . The fractional part can also be written as A mod 1, because The number of digits of the fractional part of the number is determined by the maximum possible difference between adjacent numbers. With the exact comparison, which is widely used in the division of numbers, it is necessary to calculate the value, which is the equivalent of converting from RNS to a positional number system. To solve the problem of comparing the numbers a and b, it is enough to know approximately the relative values of the numbers and in relation to the dynamic range [0, l), which is quite simple, but the relations A = B, A> B or A <B are correctly determined.
Пример 1. Пусть дана система оснований р1=2, р2=3, р3=5, р4=7, объем диапазона Р=2·3·5·7=210. Допустим, что в заданной СОК будут представлены только положительные числа. Определим величины и сравним два числа а=25 и 6=30, представленные в СОК по основаниям р1, р2, р3, р4. Определим числа а и b в СОК: а=(1,1,0,4), 6=(0,0,0,2). Для реализации предлагаемого алгоритма найдем константы Example 1. Let us give a base system p 1 = 2, p 2 = 3, p 3 = 5, p 4 = 7, the volume of the range P = 2 · 3 · 5 · 7 = 210. Suppose that in a given RNS only positive numbers will be presented. We define the quantities and compare the two numbers a = 25 and 6 = 30, presented in the RNS on the basis of p 1 , p 2 , p 3 , p 4 . Define the numbers a and b in the RNS: a = (1,1,0,4), 6 = (0,0,0,2). To implement the proposed algorithm, we find the constants
Далее, используя выражение (2) найдем функции F(a) и F(b)Next, using expression (2) we find the functions F (a) and F (b)
Так как то есть 0,1428>0,1189, то b>а, и действительно 30>25.As i.e. 0.1428> 0.1189, then b> a, and indeed 30> 25.
Алгоритм деления целых чисел
Алгоритм деления можно описать следующими правилами.The division algorithm can be described by the following rules.
Конструируется некоторое правило φ, которое каждой паре целых положительных чисел а и b ставит в соответствие некоторое положительное число qi, где i - номер итерации, такое что a-bq1=r1≥0, то есть a > bql. Тогда деление а на b осуществляется по следующему правилу: согласно операции φ паре чисел а и b ставится в соответствие число q1=qi, такое что а-bq1=r1≥0, то есть a ≥ bq1. В качестве qi примем значения 2i, которые поместим в память в виде констант qi=(2i mod р1,2i mod р2,…,2i mod pn). При этом i+1 операция не зависит от i-й операции, что позволяет итерации выполнять параллельно. Кроме того, в каждой итерации выполняются только две операции: умножение делителя на константу 2i и сравнение полученного значения с делимым.A certain rule φ is constructed that associates with each pair of positive integers a and b a positive number q i , where i is the iteration number, such that a-bq 1 = r 1 ≥0, that is, a> bq l . Then dividing a by b is carried out according to the following rule: according to the operation φ, a pair of numbers a and b is assigned a number q 1 = q i such that a-bq 1 = r 1 ≥0, that is, a ≥ bq 1 . As q i assume the
Если r1,<b1, то деление закончено, если же r1≥b1, то согласно правилу φ паре чисел (r1, b) ставится в соответствие q2 такое, что a-bq2=r2≥0, то есть a≥bq2. Если r2<b, то деление завершается, если же r2≥b, то согласно правилу φ паре чисел {r2, b) ставится в соответствие q3 такое, что а-bq3=r3≥0 и т.д. Так как последовательное применение операции φ приводит к убывающей последовательности целых чисел а>r1>r2>…≥0, то алгоритм реализуется за конечное число шагов. Пусть на n -м шаге зафиксирован случай а<bqn, что означает окончание операции деления. Тогда в итоге получим а≅(q1+q2+…+qn)b+rn, где ряд q1+q2+…+qn есть аппроксимация частного, которое может содержать лишние qi. Далее необходимо провести уточнение полученного аппроксимирующего ряда.If r 1 , <b 1 , then division is complete, but if r 1 ≥b 1 , then according to the rule φ, a pair of numbers (r 1 , b) is assigned q 2 such that a-bq 2 = r 2 ≥0, i.e. a≥bq 2 . If r 2 <b, then the division is completed, but if r 2 ≥b, then according to the rule φ a pair of numbers {r 2 , b) is associated with q 3 such that a-bq 3 = r 3 ≥0, etc. . Since the sequential application of the operation φ leads to a decreasing sequence of integers a> r 1 > r 2 > ... ≥0, the algorithm is implemented in a finite number of steps. Let the case a <bq n be fixed at the nth step, which means the end of the division operation. Then in the end we get a≅ (q 1 + q 2 + ... + q n ) b + r n , where the series q 1 + q 2 + ... + q n is an approximation of the quotient, which may contain extra q i . Next, it is necessary to refine the obtained approximating series.
Уточнение начнем со старшего qn. Если a>bqn, то qn является членом аппроксимирующего ряда образованного частного. Далее берем (qn+n+1), если a>b(qn+qn-1), то qn-1 вносится в ряд, иначе, если a<b(qn+qn-1), то qn-1 исключается из ряда и т.д. После проверки всех частное определяется оставшимися членами ряда. Тогда искомое частное определяется выражениемWe begin the refinement with the highest q n . If a> bq n , then q n is a member of the approximating series of the formed quotient. Next, we take (q n + n + 1 ), if a> b (q n + q n-1 ), then q n-1 is placed in a row, otherwise, if a <b (q n + q n-1 ), then q n-1 is excluded from the series, etc. After checking all the quotient is determined by the remaining members of the series. Then the sought quotient is determined by the expression
Данный алгоритм легко модифицируется в модулярную форму, причем абсолютные значения величин заменяются их относительными значениями. При этом структура алгоритма основана на сравнении относительных значений, которое выполняется с использованием операции вычитания. Однако некоторые операции в системе остаточных классов, такие как сравнение чисел и деление, весьма сложные. С целью сокращения временной сложности при использовании модулярной формы абсолютные величины делимого и делителя заменим на их относительные значения к общему диапазону системы остаточных классов.This algorithm is easily modified into a modular form, and the absolute values of the quantities are replaced by their relative values. The structure of the algorithm is based on a comparison of relative values, which is performed using the subtraction operation. However, some operations in the system of residual classes, such as comparing numbers and division, are very complex. In order to reduce the time complexity when using the modular form, we replace the absolute values of the dividend and divisor by their relative values to the general range of the system of residual classes.
Известные алгоритмы деления определяют частное на основе итерации A′=A-QD, где А и А′, соответственно, текущее и следующее делимое, D - делитель, Q1 - частное, которое генерируется на каждой итерации из полного диапазона СОК, а не выбирается из небольшого множества констант. В предлагаемом алгоритме частное определяется на основе итерации ri=А-b2i, где А - некоторое делимое, 6 - делитель, а 2' является членом аппроксимирующего ряда частного.Known dividing algorithms determine the quotient based on the iteration A ′ = A-QD, where A and A ′, respectively, the current and next dividend, D is the divisor, Q 1 is the quotient that is generated at each iteration from the full range of RNS, but is not selected from a small set of constants. In the proposed algorithm, the quotient is determined on the basis of iteration r i = A-b2 i , where A is a divisible, 6 is a divisor, and 2 'is a member of the approximating series of quotients.
Сравнение алгоритмов показывает, что деление во всех итерациях не меняется, а делитель умножается на константу, что существенно уменьшает вычислительную сложность. Приведенный выше алгоритм легко модифицируется в систему остаточных классов с применением приближенного метода сравнения модулярных чисел. При итерационном процессе деления в позиционной системе счисления для поиска старшей степени ряда аппроксимации частного и для уточнения аппроксимирующего ряда сравниваются делимое с удвоенными делителями или с суммой членов ряда. Применение этого принципа для СОК может привести к ошибке процесса деления, так как при переполнении динамического диапазона восстановленное число выходит за пределы рабочего диапазона, числа которого будут меньше делимого, что не соответствует действительности, так как на самом деле числа будут превышать диапазон Р. Например, если модули СОК равны р1=2, р2=3, р3=5, р4=7, тогда диапазон Р=2·3·5·7=210. Допустим при восстановлении получили число А=220. В СОК Л=220=(0,1,0,3). Диапазон Р превышен на число 10, которое в СОК равно (0,1,0,3). При использовании относительных значений число А=220 выражается как А′=10, что не соответствует действительности.A comparison of the algorithms shows that division in all iterations does not change, and the divisor is multiplied by a constant, which significantly reduces computational complexity. The above algorithm is easily modified into a system of residual classes using the approximate method of comparing modular numbers. During the iterative division process in the positional number system, to search for the highest degree of a series of approximation of a quotient and to refine the approximating series, the dividend is compared with doubled divisors or with the sum of the members of the series. Application of this principle for RNS can lead to an error in the division process, since when the dynamic range is overflowed, the restored number goes beyond the working range, the numbers of which will be less than the dividend, which is not true, since in reality the numbers will exceed the range P. For example, if the SOK modules are equal to p 1 = 2, p 2 = 3, p 3 = 5, p 4 = 7, then the range is P = 2 · 3 · 5 · 7 = 210. Suppose, during recovery, we got the number A = 220. In RNS L = 220 = (0,1,0,3). Range P is exceeded by the number 10, which in the RNS is (0,1,0,3). When using relative values, the number A = 220 is expressed as A ′ = 10, which is not true.
Для преодоления этой трудности необходимо в СОК сравнивать результаты текущих значений итераций с предыдущими, что позволяет правильно определить большее или меньшее число. Итак, факт переполнения динамического диапазона в СОК можно использовать для принятия решения «больше-меньше». На первой итерации происходит сравнение делимого с делителем, а на остальных итерациях происходит сравнение удвоенных значений делителей qib<qj+1b. На каждой новой итерации происходит сравнение текущего значения с предыдущим. Количество требуемых итераций зависит от величин делимого и делителя. Последовательное применение этой операции приводит к формированию последовательности целых чисел bq1<bq2<…<bqn>bqn+1. Таким образом, алгоритм реализуется за конечное число итераций. Пусть на n+1 итерации зафиксирован случай bqn>bqn+1, что соответствует переполнению диапазона СОК, то есть bqn+l>Р и а<bqn+l. На этом процесс формирования интерполяции частного двоичным рядом или набором констант в СОК завершается. Итак, процесс аппроксимации частного может осуществляться путем сравнения только удвоенных соседних приближенных делителей.To overcome this difficulty, it is necessary to compare the results of the current iteration values with the previous ones in the RNS, which allows one to correctly determine a larger or smaller number. So, the fact of overflow of the dynamic range in the RNS can be used to make a decision “more-less”. At the first iteration, the dividend is compared with the divisor, and at the other iterations, the doubled values of the divisors q i b <q j + 1 b are compared. At each new iteration, the current value is compared with the previous one. The number of iterations required depends on the divisor and divisor values. The sequential application of this operation leads to the formation of a sequence of integers bq 1 <bq 2 <... <bq n > bq n + 1 . Thus, the algorithm is implemented in a finite number of iterations. Let the case bq n > bq n + 1 be fixed at n + 1 iterations, which corresponds to an overflow of the RNC range, i.e., bq n + l > P and a <bq n + l . This completes the process of generating interpolation of the quotient by a binary series or by a set of constants in the RNS. So, the process of approximating the quotient can be carried out by comparing only doubled adjacent neighboring approximate divisors.
Рассмотрим алгоритм деления на примере. Действия будут производиться как над десятичными числами, так и над числами, представленными в системе остаточных классов.Consider the division algorithm by example. Actions will be performed both on decimal numbers and on numbers represented in the system of residual classes.
Пример 2. Найти частноеот деления числа а=201 на число b=8. Выберем СОК с основаниями 2, 3, 5, 7, тогда Р=р1р2р3р4=210. Константы ki соответственно равны: k1=0,5; k2=0,3333; k3=0,6; k4=0,5714.Example 2. Find the quotient from dividing the number a = 201 by the number b = 8. We choose a JUICE with
Представим в СОК числа а и b.We represent the numbers a and b in the RNS.
а10=201→(l,0,l,5)сок,and 10 = 201 → (l, 0, l, 5) juice,
b10=8→(0,2,3,l)сок.b 10 = 8 → (0,2,3, l) juice.
Относительные значения этих чисел, соответственно, равны:The relative values of these numbers, respectively, are equal to:
Решение. Деление а на b осуществляется по следующему алгоритму. Для интерполяции частного определим степени 2i, представленные в СОК.Decision. The division of a by b is carried out according to the following algorithm. To interpolate the quotient, we define the
I. Поиск старшей степени при аппроксимации частного двоичным рядом.I. Search for a higher degree in approximating a partial binary series.
1. На первой итерации сравниваем Если то в память ничего не записывается, так как в этом случае делитель больше делимого и на этом процесс деления заканчивается и частное равно 0. Если то в память записываем константу q1=2°, а если то реализуется итерационный процесс деления.1. At the first iteration, we compare If then nothing is written to the memory, since in this case the divisor is larger than the dividend and the division process ends and the quotient is 0. If then in the memory we write the constant q 1 = 2 °, and if then an iterative division process is implemented.
Допустим, что делимое а и делитель b имеют следующие значения:Assume that the dividend a and the divisor b have the following meanings:
а10=201→(1,0,l,5)сок, b10=8→(0,2,3,1)сок.and 10 = 201 → (1,0, l, 5) juice, b 10 = 8 → (0,2,3,1) juice.
Найдем частное от деления Find the quotient of the division
Тогда,Then,
отсюда 0,957>0,038, то естьfrom here 0.957> 0.038, i.e.
В память записываем константы, представленные в двоичном коде q1=2° и в СОК q1=(1,1,1,1).In memory, we write the constants represented in the binary code q 1 = 2 ° and in the RNS q 1 = (1,1,1,1).
2. Далее во всех остальных итерациях будем сравнивать текущие значения с предыдущими. Так, на второй итерации умножаем знаменатель на 21, то есть q2=2, если то в память запишем 21.2. Next, in all other iterations, we will compare the current values with the previous ones. So, at the second iteration, we multiply the denominator by 2 1 , that is, q 2 = 2, if then in memory we write 2 1 .
ТогдаThen
b1}=8·2=16, b1=16→(0,2,3,l)·(0,2,2,2)=(0,l,l,2).b 1} = 8 · 2 = 16, b 1 = 16 → (0,2,3, l) · (0,2,2,2) = (0, l, l, 2).
Сравнение дает следующий результат:The comparison gives the following result:
Тогда так как 0,038<0,0761, то Then since 0.038 <0.0761, then
В память записываем число в двоичном коде q2=21, а в СОК q2=(0,2,2,2).In memory, write the number in the binary code q 2 = 2 1 , and in the RNS q 2 = (0,2,2,2).
3. Аналогично получим результаты сравнения на следующих итерациях.3. Similarly, we obtain the results of comparison at the following iterations.
На третьей итерации умножаем знаменатель b на q3=22, если то в память запишем 22.At the third iteration, we multiply the denominator of b by q 3 = 2 2 if then in memory we write 2 2 .
Так как b2=8·4=32, b2=32→(0,2,3,l)·(0,l,4,4)=(0,2,2,4).Since b 2 = 8 · 4 = 32, b 2 = 32 → (0,2,3, l) · (0, l, 4,4) = (0,2,2,4).
Тогда так как 0,0761<0,1522.Then since 0.0761 <0.1522.
В память записываем число в двоичном коде q3=22, а в СОК q3=(0,1,4,4).In memory, write the number in the binary code q 3 = 2 2 , and in the RNS q 3 = (0,1,4,4).
4. На четвертой итерации получим результат4. At the fourth iteration, we get the result
b3=8·8=64; b3=64→(0,2,3,1)·(0,2,3,1)=(0,1,4,1).b 3 = 8 · 8 = 64; b 3 = 64 → (0,2,3,1) · (0,2,3,1) = (0,1,4,1).
Тогда так как 0,1522<0,3047.Then since 0.1522 <0.3047.
В память записываем число в двоичном коде q4=23, а в СОК q4=(0,2,3,1).In memory, write the number in the binary code q 4 = 2 3 , and in the RNS q 4 = (0,2,3,1).
5. На пятой итерации получим следующий результат5. At the fifth iteration, we obtain the following result
b4=8·16=128, b4=128→(0,2,3,l)·(0,l,l,2)=(0,2,3,2).b 4 = 8 · 16 = 128, b 4 = 128 → (0,2,3, l) · (0, l, l, 2) = (0,2,3,2).
Тогда так как 0,3047<0,6094.Then since 0.3047 <0.6094.
В память записываем число в двоичном коде q5=24, а в СОК qs=(0,1,1,2).In memory, write the number in the binary code q 5 = 2 4 , and in the RNS q s = (0,1,1,2).
6. На шестой итерации получим следующий результат6. At the sixth iteration, we obtain the following result
b5=8·32=256, b5=256→(0,2,3,1)·(0,2,2,4)=(0,1,1,4).b 5 = 8 · 32 = 256, b 5 = 256 → (0,2,3,1) · (0,2,2,4) = (0,1,1,4).
Тогда так как 0,6094>0,2189.Then since 0.6094> 0.2189.
Таким образом, произошло переполнение, и в память ничего не записывается. Процесс формирования аппроксимационного ряда частного завершается.Thus, an overflow occurred, and nothing is written to the memory. The process of forming the approximation series of the quotient is completed.
Итак, первое неравенство 0,957>0,038 определяет начало итерационного процесса деления, а последовательность последующих неравенств 0,0761>0,038; 0,1522>0,0761; 0,3047>0,1522; 0,6094>0,3047, или 0,038<0,0761<0,1522<0,3047<0,6094>0,2189 определяет количество итераций. Отсюда видно, что на шестом шаге заканчивается возрастающая последовательность. Этот факт сигнализирует об окончании итераций, так как полученный путем последовательного умножения на 2 делитель превысил делимое.So, the first inequality 0.957> 0.038 determines the beginning of the iterative process of division, and the sequence of subsequent inequalities 0.0761> 0.038; 0.1522> 0.0761; 0.3047> 0.1522; 0.6094> 0.3047, or 0.038 <0.0761 <0.1522 <0.3047 <0.6094> 0.2189 determines the number of iterations. This shows that in the sixth step the increasing sequence ends. This fact signals the end of the iterations, since the divisor obtained by sequential multiplication by 2 exceeded the dividend.
II. Уточнение аппроксимирующего ряда частного от деления а на b начнем со старшего qn.II. We begin the refinement of the approximating series of the quotient of a and b by starting with the highest q n .
1. Из памяти выбираем старшую степень, то есть q5=(0,1,1,2), умножаем на знаменатель b=(0,2,3,1) и сравниваем с а. Тогда1. From the memory, select the highest degree, that is, q 5 = (0,1,1,2), multiply by the denominator b = (0,2,3,1) and compare with a. Then
Так как 0,957>0,6094, то в качестве старшей степени берем 24, а в СОК (0,1,1,2).Since 0.957> 0.6094, we take 2 4 as the highest degree, and in the RNS (0,1,1,2).
2. Из памяти выбираем степень 23 и вычисляем (24+23)·8=192, а в СОК ((0,1,1,2)+(0,2,3,1))·(0,2,3,1)=(0,0,2,3). Тогда2. From the memory, select the degree of 2 3 and calculate (2 4 +2 3 ) · 8 = 192, and in the RNS ((0,1,1,2) + (0,2,3,1)) · (0, 2,3,1) = (0,0,2,3). Then
Так как 0,9142>0,6094 и 0,957>0,9142, то в качестве следующего члена ряда берем 23, а в СОК (0,2,3,1).Since 0.9142> 0.6094 and 0.957> 0.9142, then as the next member of the series we take 2 3 , and in RNS (0,2,3,1).
3. Из памяти берем 22 и вычисляем (24+23+22)·8=224. Тогда ((0,1,1,2)+(0,2,3,1)+(0,1,4,4))·(0,2,3.1)=(0,2,4,0),3. From the memory we take 2 2 and calculate (2 4 +2 3 +2 2 ) · 8 = 224. Then ((0,1,1,2,2) + (0,2,3,1) + (0,1,4,4)) · (0,2,3.1) = (0,2,4,0) ,
Так как 0,0666<0,9142, то произошло переполнение диапазона Р и степень 22, или в СОК (0,1,4,4), из аппроксимационного ряда исключается.Since 0.0666 <0.9142, an overflow of the P range and
4. Из памяти берем 21 и вычисляем (24+23+21)·8=208. Тогда ((0,1,1,2)+(0,2,3 J)+(0,2,2,2))·(0,2,3, l)=(0,1,3,5),4. From the memory we take 2 1 and calculate (2 4 +2 3 +2 1 ) · 8 = 208. Then ((0,1,1,2,2) + (0,2,3 J) + (0,2,2,2)) (0,2,3, l) = (0,1,3,5 ),
Так как 0,957<0,9903, то степень 21 или (0,2,2,2) из аппроксимационного ряда исключается.Since 0.957 <0.9903, the power of 2 1 or (0,2,2,2,2) is excluded from the approximation series.
5. Из памяти берем 20 и вычисляем (24+23+20)·8=200. Тогда ((0,l,l,2)+(0,2,3,l)+(l,l,l,l))·(0,2,3,l)=(0,2,0,4),a5. From the memory we take 2 0 and calculate (2 4 +2 3 +2 0 ) · 8 = 200. Then ((0, l, l, 2) + (0,2,3, l) + (l, l, l, l)) · (0,2,3, l) = (0,2,0, 4), a
Так как 0,957>0,9522, поэтому в качестве младшей степени берем 20 или в СОК (1,1,1,1) Следовательно, частное равно (0,l,l,2)+(0,2,3,l)+(l,l,l,l)=(l,l,0,4).Since 0.957> 0.9522, therefore, as the youngest degree we take 2 0 or in the RNS (1,1,1,1) Therefore, the quotient is (0, l, l, 2) + (0,2,3, l ) + (l, l, l, l) = (l, l, 0.4).
Для определения частного необходимо сложить оставшиеся члены аппроксимационного ряда. Из приведенного примера видно, что остались следующие члены ряда: (0,1,1,2), (0,2,3,1) и (l,1,1,1). Тогда частное определяется путем суммирования членов ряда:To determine the quotient, it is necessary to add the remaining members of the approximation series. It can be seen from the above example that the following members of the series remain: (0,1,1,2), (0,2,3,1) and (l, 1,1,1). Then the quotient is determined by summing the members of the series:
По остаткам частного восстановим позиционное число с помощью выражения (1), тогдаUsing the remainders of the quotient, we restore the positional number using expression (1), then
Действительно Really
Результат в СОК и в позиционной системе счисления совпадают, что говорит о правильности проведенного деления.The result in the RNS and in the positional number system are the same, which indicates the correctness of the division.
Новый алгоритм основного деления модулярных чисел.A new algorithm for the basic division of modular numbers.
Улучшенный алгоритм деления модулярных чисел на основе приближенного метода сравнения чисел состоит из следующих шагов.An improved modular number division algorithm based on the approximate number comparison method consists of the following steps.
1. Вычисляем приближенные значения делимого F(a) и делителя F(b), и сравниваем их. Если F(a)<F(b), то процесс деления заканчивается и частное Если F(a)=F(b), то процесс деления заканчивается и частное Если F(a)>F(b), то осуществляется поиск старшей степени 2k при аппроксимации частного двоичным кодом.1. Calculate the approximate values of the divisible F (a) and the divisor F (b), and compare them. If F (a) <F (b), then the division process ends and the quotient If F (a) = F (b), then the division process ends and the quotient If F (a)> F (b), then a higher degree of 2 k is searched for by approximating a partial binary code.
2. Сдвигаем функцию F(b) влево до появления переноса старшего значащего разряда в знаковый разряд. Количество сдвигов определяет старшую степень, которая регистрируется счетчиком импульсов.2. We shift the function F (b) to the left until the transfer of the most significant digit to the sign digit appears. The number of shifts determines the highest degree, which is recorded by the pulse counter.
3. Из памяти 5 выбираем константу 2k (старшая степень ряда), умножаем ее на делитель F1(b)=b2k и подаем на вход схемы сравнения.3. From
4. Находим Δi=F(a)-F1(b). Если в знаковом разряде Δi стоит «1», то соответствующая степень ряда отбрасывается, если стоит «0», то в сумматор частного 13 добавляем значение члена ряда с этой степенью, то есть 2k.4. We find Δ i = F (a) -F 1 (b). If the sign bit Δ i is "1", the corresponding power series is discarded if there is a "0", then the adder 13 add the private value of a number of members with this degree, ie, 2 k.
5. Сдвигаем F1(b) «вправо» и проверяем член ряда со степенью 2k-1.5. Move F 1 (b) “to the right” and check the term in the series with
6. Находим Δ2=Δ1-F1{b) и выполняем действия в соответствии с пунктом 4.6. Find Δ 2 = Δ 1 -F 1 {b) and perform the actions in accordance with
7. Аналогично проверяем все оставшиеся члены ряда до нулевой степени. Полученный остаток Δi=Δi-1-Fi-1(b)≈0. В случае, когда делитель принимает значение, равное нескольким единицам, то порог Δi можно взять больше нуля, что позволит сократить количество итераций при делении большого делимого и маленького делителя. В процессе этих преобразований суммируем все разрешенные члены ряда.7. Similarly, we check all the remaining members of the series to the zero degree. The resulting residue Δ i = Δ i-1 -F i-1 (b) ≈0. In the case when the divisor takes a value equal to several units, then the threshold Δ i can be taken more than zero, which will reduce the number of iterations when dividing a large divisible and a small divisor. In the process of these transformations, we summarize all the allowed members of the series.
Процесс сдвига и вычитания завершается проверкой нулевой степени ряда. В накопительном сумматоре суммируются только разрешенные члены аппроксимирующего ряда частного. После последнего шага устройство устанавливается в исходное состояние.The shift and subtraction process is completed by checking the zero degree of the series. In the accumulative adder, only allowed members of the approximating series of quotients are summed. After the last step, the device is reset.
Новый упрощенный алгоритм для деления модулярных чисел основан на использовании приближенного метода сравнения, который значительно снижает вычислительную сложность алгоритма. Он требует лишь одну операцию приближенного сравнения, одну операцию умножения и по числу шагов операции сдвига и вычитания. При реализации известных алгоритмов в каждой итерации используются операции сравнения, умножения и сложения. Исходя из этого можно сказать, что на сегодняшний день предложенный алгоритм является лучшим решением выполнения операции деления, что позволит в целом упростить реализацию аппаратно-логических модулярных схем.The new simplified algorithm for dividing modular numbers is based on the use of an approximate comparison method, which significantly reduces the computational complexity of the algorithm. It requires only one operation of approximate comparison, one operation of multiplication and the number of steps of the operation of shift and subtraction. When implementing well-known algorithms in each iteration, operations of comparison, multiplication and addition are used. Based on this, we can say that today the proposed algorithm is the best solution for performing the division operation, which will generally simplify the implementation of hardware-logic modular circuits.
Пример 3. Рассмотрим работу устройства деления на конкретном примере. Используем делимое и делитель из примера 2, где а=201=(1,0,1,5) и b=(0,2,3,1). Найдем частное от деления числа а на число b Example 3. Consider the operation of the division device on a specific example. We use the dividend and divisor from Example 2, where a = 201 = (1,0,1,5) and b = (0,2,3,1). Find the quotient of a and b
1. На вход 1 подается делимое a=(l,0,l,5), а на вход 2 - делитель b=(0,2,3,l). Выберем из LUT-таблиц схемы сравнения 11 значения kiαi и kiβi которые используются для сравнения модулярных чисел схемой сравнения и выдаются схемой сравнения для суммирования по модулю 1 в сумматорах делимого 37 и делителя 10. Эти операции осуществляются параллельно в схеме сравнения и сумматорах делимого 37 и делителя 10. Так как F(a)=0,957 и F(b)=0,038, то схема сравнения 11 формирует сигнал а>b, а в сумматорах формируются значения в двоичной форме соответственно F(a)=0,11110 и F(b)=0,00001.1. Divisible a = (l, 0, l, 5) is fed to input 1, and divisor b = (0,2,3, l) is
2. В регистре сдвига 9 сдвигаем F(b) на 5 разрядов влево F(b)c=1,00000, счетчик 4 формирует состояние, соответствующее высшей степени ряда 24.2. In
3. Умножаем делитель b=8=(0,2,3,1) на 24=16=(0,1,1,2), тогда b·24=(0,2,3,1.)(0,1,1,2)=(0,2,3,2).3. Multiply the divisor b = 8 = (0,2,3,1) by 2 4 = 16 = (0,1,1,2), then b · 2 4 = (0,2,3,1.) ( 0,1,1,2) = (0,2,3,2).
4. Вычисляем F(b·24)≈0,6094.4. Calculate F (b · 2 4 ) ≈0.6094.
5. Вычисляем F(a)-F(b·24)≈0,957-0,6094=0,3476. Разность положительная, в знаковом разряде «0», который разрешает прохождение члена ряда (0,1,1,2) через схему «запрета» 12 на вход сумматора 13 частного и разности F(a)-f(b·24)≈0,3476 на вход регистра 36 хранения остатка при вычитании из делимого членов ряда частного через схему «запрета» 35, которая далее поступает на второй вход сумматора делимого 37. В регистре сдвига 9 запишем значение функции F(b·24), причем регистр сдвига 9 переведен в режим сдвига «вправо».5. Calculate F (a) -F (b · 2 4 ) ≈0.957-0.6094 = 0.3476. The difference is positive, in the sign category “0”, which allows the passage of a member of the series (0,1,1,2) through the “ban” 12 to the input of the adder 13 of the quotient and the difference F (a) -f (b · 2 4 ) ≈ 0.3476 to the input of the balance storage register 36 when subtracting the quotient from the dividend terms through the “ban” 35 scheme, which then goes to the second input of the dividend adder 37. In
6. В регистре сдвига 9 F(b·24) сдвигаем на 1 разряд «вправо», то есть уменьшаем число в 2 раза, при этом Fc(b·24)≈0,3047, и результат подаем на первые входы вычитателя 14, а на вторые входы вычитателя 14 поступает разность F(a)-F(b·24)≈0,3476. На выходе вычитателя 14 получаем F(a)-F(b·24)-F(b·23)≈0,3476-0,3047=0,0429. Так как число положительное, то в схеме происходят процессы, аналогичные пункту 5 и в сумматоре 13 частного содержимое (0,1,1,2) суммируется с 23=8=(0,2,3,1), то есть (0,l,l,2)+(0,2,3,l)=(0,0,4,3), а в сумматор делимого 37 записываются новые данные 0,0429.6. In the shift register 9 F (b · 2 4 ) we shift by 1 bit “to the right”, that is, we reduce the number by 2 times, while F c (b · 2 4 ) ≈0.3047, and the result is fed to the first inputs subtractor 14, and the second inputs of the subtractor 14 receives the difference F (a) -F (b · 2 4 ) ≈0.3476. At the output of the subtractor 14, we obtain F (a) -F (b · 2 4 ) -F (b · 2 3 ) ≈0.3476-0.3047 = 0.0429. Since the number is positive, processes similar to
7. Содержимое регистра сдвига 9 F(b·23) сдвигаем вправо и получаем F(b·22). Тогда на первом входе вычитателя будет число 0,1524, а на втором 0,0429. Результат вычитания будет отрицательным и схемы «запрета» 12 и 35 не пропустит данные на вход регистра 36 хранения. Содержимое сумматора частного 13 и регистра 36 хранения сохраняется, а степень 22 удаляется.7. The contents of the shift register 9 F (b · 2 3 ) are shifted to the right and we get F (b · 2 2 ). Then at the first input of the subtractor will be the number 0.1524, and at the second 0.0429. The result of the subtraction will be negative and the “ban” schemes 12 and 35 will not pass data to the input of the storage register 36. The contents of the adder private 13 and the register 36 storage is stored, and the
Далее происходит сдвиг содержимого регистра сдвига 9, то есть получаем F(b·21), тогда на первом входе вычитателя будет число 0,0762, а на втором 0,0429. При вычитании процесс повторяется, как и для степени 22, то есть степень 21 тоже удаляется. Новый сдвиг дает число F(b·20). Тогда на первом входе вычитателя будет число 0,0381, а на втором 0,0429. При вычитании результат будет положительным и к содержимому сумматора частного 13 (0,0,4,3) добавляется (1,1,1,1), то есть (0,0,4,3)+(l,1,1,l)=(1,1,0,4).Next, the contents of
Получили частное Q=(1,1,0,4) от деления числа а=(1,0,1,5) на число b=(0,2,3,1).We obtained the quotient Q = (1,1,0,4) from dividing the number a = (1,0,1,5) by the number b = (0,2,3,1).
В таблице 1 приведены исходные и промежуточные величины работы алгоритма. В алгоритме использованы двоичные значения F(a) и F(b). Округление F(a) и F(b) проведено до t -го бита, где t - первый значащий разряд F(b). Вычислительная сложность нового алгоритма деления представлена в таблице 1. Сравнительный анализ работы нового алгоритма с модифицированными показал преимущества первого. Если все операции свести к элементарным действиям типа побитового сложения и сдвига, то выигрыш нового алгоритма по вычислительной сложности примерно равен 5.Table 1 shows the initial and intermediate values of the algorithm. The binary values F (a) and F (b) are used in the algorithm. Rounding of F (a) and F (b) is carried out to the t-th bit, where t is the first significant bit of F (b). The computational complexity of the new division algorithm is presented in Table 1. A comparative analysis of the operation of the new algorithm with the modified ones showed the advantages of the first. If all operations are reduced to elementary actions such as bit addition and shift, then the gain of the new algorithm in computational complexity is approximately equal to 5.
На чертеже представлена схема для деления модулярных чисел. Принцип работы изобретения излагается ниже. Устройство для деления модулярных чисел позволяет выполнять операцию деления при произвольных значениях делимого и делителя без каких-либо дополнительных предварительных операций, кроме операций, устанавливающих устройство в исходное состояние.The drawing shows a diagram for dividing modular numbers. The principle of operation of the invention is described below. A device for dividing modular numbers allows you to perform the division operation for arbitrary values of the dividend and divisor without any additional preliminary operations, except for operations that set the device to its original state.
Режим аппроксимации частного двоичным рядомPrivate binary approximation mode
В исходном состоянии схема управления 3 по шине 18 выдает сигнал «установка в 0», по которому регистр сдвига 9, счетчик 4 и сумматоры делителя 10 и частного 13, вычитатель 14 устанавливаются в начальное состояние, а мультиплексор 8 (сигнал поступает на адресный вход) коммутирует шину 2 на вход схемы сравнения 11, шина 33.In the initial state, the
Делимое и делитель, представленные в системе остаточных классов по модулям p1,p2,…,pn соответственно, по шинам 1 и 33 поступают на вход схемы сравнения 11, в которой происходит сравнение относительных значений делимого и делителя. Еслито схема сравнения формирует сигнал по шине 19, который поступает на вход схемы управления 3, и устройство устанавливается в начальное состояние. Частное (шина 30) равно нулю. Еслито схема сравнения 11 выдает сигнал равенства делимого и делителя по шине 42 на вход сумматора частного 13, в который записывается константа «1». Еслито схема сравнения 11 формирует сигнал по шине 20, под действием которого схема управления 3 переводит устройство в режим аппроксимации ряда частного. Значения kiβi и kiαi с выходов LUT-таблиц схемы сравнения 11 по шинам 25 и 26 соответственно поступают на вход сумматоров делителя 10 и делимого 37. Относительное значение делимого, представленное в дополнительном коде, выход сумматора делимого 37, по шине 38 поступает на вход вычитателя 14.The dividend and divisor presented in the system of residual classes for the modules p 1 , p 2 , ..., p n, respectively, are supplied to the input of the comparison circuit 11 via buses 1 and 33, in which the relative values of the dividend and divider are compared. If then the comparison circuit generates a signal on the bus 19, which is fed to the input of the
Относительное значение делителя, выход сумматора делителя 10, по шине 23 поступает на вход регистра сдвига 9. Под действием тактовых импульсов схемы управления 3 (шина 17) происходит сдвиг содержимого регистра сдвига 9 и счет этих импульсов счетчиком 4. Как только старший значащий разряд делителя становится знаковым, т.е. произошло переполнение, то эта единица по шине 22 останавливает счет импульсов счетчиком 4 и активируется сигнал «разрешение считывания» информации из памяти 5. Счетчик 4 регистрирует состояние, формирующее высшую степень 2k ряда частного. В регистре 36 хранения остатка при вычитании из делимого членов ряда частного в это время во всех разрядах записано значение «0» и он не оказывает никакого влияния на сумматор делимого 37. На этом режим интерполяции частного заканчивается. Итак, для интерполяции частного потребовалась одна итерация сравнения, одна операция суммирования и одна операция сдвига на k разрядов.The relative value of the divider, the output of the adder of the divider 10, is fed to the input of the
Операция сдвига эквивалентна одной итерации известного алгоритма. В каждую итерацию входит операция удвоения делителя и операция сравнения результата удвоения со значением делителя. Замена абсолютных значений их относительными значениями позволила при интерполяции частного получить выигрыш по сравнению с рассмотренными выше алгоритмами в k раз, где k - количество сдвигов до появления переполнения.The shift operation is equivalent to one iteration of a known algorithm. Each iteration includes the operation of doubling the divisor and the operation of comparing the result of doubling with the value of the divisor. Replacing the absolute values with their relative values made it possible to obtain a gain by a factor of k when interpolating the quotient, compared to the above algorithms, where k is the number of shifts before the overflow appears.
Режим уточнения аппроксимирующего ряда частного отделения а на b.Refinement mode for the approximating row of the private compartment a to b.
Схема управления 3 формирует сигналы по шинам 15 и 17, которые подаются на адресные входы мультиплексора 8 и коммутирует умноженное значение делителя на высшую степень ряда частного (шина 32) на выход мультиплексора 8 и переводит регистр сдвига 9 в режим сдвига «вправо». Ключ 6 (шина 28)под действием двух сигналов, поступивших на его вход по шинам 16 и 24, подает на вход схемы умножения 7 и схемы «запрета» 12 значение высшей степени ряда. Поступившие данные на вход схемы сравнения 11 сравниваются. Если то схема сравнения 11 выдает сигнал по шине 19 и устанавливает устройство в исходное состояние. Если то формируется сигнал а=b и по шине 42 записывает в сумматор «единицу», а устройство переходит в исходное состояние. Если то сигнал по шине 20 устанавливает устройство в режим уточнения аппроксимационного ряда частного.The
Значения умноженного на высшую степень делителя и делимого, как в случае интерполяции ряда, поступают на вход сумматоров делителя 10 и делимого 37. Содержимое сумматора делителя 10 по шине 23 подается на вход регистра сдвига 9, стирает старую информацию и записывает новое значение и далее по шине 34 подается на вход вычитателя 14, а содержимое сумматора делимого 37 в дополнительном коде подается на вторые входы вычитателя 14, где происходит вычитание умноженного делителя на высшую степень из содержимого делимого. Делимое и делитель, как и ранее, представлены своими относительными значениями. Если в знаковом разряде результата вычитания в вычитателе 14 стоит «ноль», то есть делимое больше делителя, тогда на запрещающих входах схем «запрета» 12 и 35 формируются «нули» и высшая степень частного по шине 28 через схему «запрета» 12 поступает на вход сумматора частного 13 по шине 29, а результат вычитания вычитателя 14, то есть остаток делимого, приходящий на остальные степени по шине 40 через схему «запрета» 35, подается на вход регистра 36 хранения остатка при вычитании из делимого членов ряда частного и далее по шине 39 поступает на вход сумматора делимого 37, где удаляется старое содержимое и записывается новое значение. Далее происходит сдвиг «вправо» содержимого регистра сдвига 9 и процесс происходит аналогично вышеизложенному. При этом, если в знаковом разряде результата вычитания в вычитателе 14 будет стоять «1», то есть относительное значение делителя больше делимого, то появившаяся единица, поступающая на запрещающие входы схемы «запрета» 12 и 35, запрещает прохождение соответствующей степени на сумматор частного 13 и результата вычитания вычитателя 14 на вход регистра 36 хранения остатка при вычитании из делимого членов ряда частного, то есть регистр сохраняет прежнее значение результата суммирования. Таким образом, на вход сумматора частного 13 поступают только те уточненные степени, которые являются членами ряда частного. Процесс преобразования заканчивается после анализа степени 20. Таким образом, при уточнении итеративно удаляются лишние члены аппроксимационного ряда частного путем несложных преобразований, состоящих из операций сдвига и сложения. В известном алгоритме при уточнении используются такие сложные операции, как умножение и сравнение, которые входят в каждую итерацию.The values of the divisor multiplied by the highest degree and divisible, as in the case of series interpolation, are input to the adders of the divisor 10 and the divisible 37. The contents of the adder of the divider 10 via bus 23 are fed to the input of
Итак, основное деление модулярных чисел осуществляется примерно за 2 итерации сравнения и k-1 операций сдвига и сложения, а в известном алгоритме необходимо 2k итераций сравнения, k операций умножения и 2k операций суммирования. Выигрыш в скорости деления модулярных чисел достигает примерно k итераций. Это лучший на сегодняшний день алгоритм основного деления модулярных чисел. Это достоинство предложенного алгоритма по сравнению с известным достигается тесной связью архитектурных вычислений с аппаратной реализацией, что позволило значительно сократить вычислительную сложность деления модулярных чисел. Предложенный алгоритм отличается от известных простотой его реализации, который требует меньшего объема вычислений по сравнению с существующими алгоритмами.So, the main division of modular numbers is carried out in about 2 iterations of comparison and k-1 operations of shift and addition, and in the well-known algorithm, 2k iterations of comparison, k multiplication operations and 2k summation operations are necessary. The gain in the modular number division rate reaches approximately k iterations. This is the best algorithm for the main division of modular numbers to date. This advantage of the proposed algorithm compared to the known one is achieved by close connection of architectural calculations with hardware implementation, which significantly reduced the computational complexity of dividing modular numbers. The proposed algorithm differs from the known ones in the simplicity of its implementation, which requires less computation compared to existing algorithms.
Сравнительный анализ по сложности и времени деления модулярных чисел изобретения с известными (патент RU 2400813, опубликованный 27.09.2010, Бюл. №27) показал значительные преимущества по аппаратным и временным ресурсам.A comparative analysis of the complexity and time of dividing the modular numbers of the invention with the known ones (patent RU 2400813, published September 27, 2010, Bull. No. 27) showed significant advantages in terms of hardware and time.
Так, в известном изобретении используются:So, in the known invention are used:
схема для преобразования в ОПСС;scheme for conversion to OPSS;
схема для нахождения приблизительного делителя;scheme for finding an approximate divider;
схема для деления с нулевым остатком; схема памяти;scheme for division with zero remainder; memory circuit;
схема расширения оснований СОК;a scheme for expanding the bases of the RNS;
схема ключей;key scheme;
схема сравнения, умножения и вычитания.scheme of comparison, multiplication and subtraction.
Сложность всех перечисленных схем пропорциональна n, где n - число оснований СОК, то есть сложность всего устройства определяется как N=O(zn), где z - количество схем, перечисленных выше.The complexity of all the above schemes is proportional to n, where n is the number of bases of the RNS, that is, the complexity of the entire device is defined as N = O ( zn ), where z is the number of schemes listed above.
В предложенном устройстве для деления чисел используются:In the proposed device for dividing numbers are used:
схема сравнения модулярных чисел;modular numbers comparison scheme;
схема умножения, сложения;multiplication scheme; addition;
схемы регистров и счетчик;register schemes and counter;
схемы мультиплексоров;multiplexer circuits;
схемы ключей.key schemes.
Сложность устройства определяется как 0(5k), где k - количество двоичных разрядов относительных значений делимого и делителя.The complexity of the device is defined as 0 (5k), where k is the number of binary bits of the relative values of the dividend and divisor.
При нежестком допущении о равенстве количества разрядов двоичного представления СОКи разрядов относительных величин делимого и делителя выигрыш в аппаратурных затратах равен 1,4 раза.Under the non-rigid assumption that the number of bits of the binary representation of the RNS is equal and the categories of relative values of the dividend and the divisor, the gain in hardware costs is 1.4 times.
По временным ресурсам на конкретном примере (один и тот же пример рассмотрен в известном и предложенном устройстве) выигрыш примерно равен 5. Все итерации в предложенном устройстве состоят из операций сдвига и сложения. На сегодняшний день это лучшее решение.For temporary resources on a specific example (the same example is considered in the known and proposed device), the gain is approximately equal to 5. All iterations in the proposed device consist of shift and addition operations. Today it is the best solution.
Claims (1)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2013148505/08A RU2559771C2 (en) | 2013-10-30 | 2013-10-30 | Device for primary division of molecular numbers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2013148505/08A RU2559771C2 (en) | 2013-10-30 | 2013-10-30 | Device for primary division of molecular numbers |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2013148505A RU2013148505A (en) | 2015-05-10 |
RU2559771C2 true RU2559771C2 (en) | 2015-08-10 |
Family
ID=53283360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2013148505/08A RU2559771C2 (en) | 2013-10-30 | 2013-10-30 | Device for primary division of molecular numbers |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2559771C2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2628179C1 (en) * | 2016-11-28 | 2017-08-15 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Device for dividing modular numbers |
RU2698413C1 (en) * | 2018-11-26 | 2019-08-26 | Анастасия Сергеевна Коржавина | Device for comparing numbers in a system of residual classes |
RU2798746C1 (en) * | 2023-03-01 | 2023-06-26 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Computing device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SU1633400A1 (en) * | 1989-03-22 | 1991-03-07 | Харьковское Высшее Военное Командно-Инженерное Училище Ракетных Войск Им.Маршала Советского Союза Крылова Н.И. | Arithmetic moduli processing device |
SU1756887A1 (en) * | 1990-11-02 | 1992-08-23 | Научно-исследовательский институт прикладных физических проблем им.А.Н.Севченко | Device for integer division in modulo notation |
US6470372B1 (en) * | 1998-04-02 | 2002-10-22 | Stmicroelectronics S.A. | Method for the performance of an integer division |
RU2318239C1 (en) * | 2006-07-05 | 2008-02-27 | Ставропольский военный институт связи ракетных войск | Neuron network for dividing numbers which are represented in a system of residual classes |
RU2400813C2 (en) * | 2008-12-22 | 2010-09-27 | Государственное образовательное учреждение высшего профессионального образования "Ставропольский военный институт связи ракетных войск" Министерства обороны Российской Федерации | Neutron network for main division of modular numbers |
-
2013
- 2013-10-30 RU RU2013148505/08A patent/RU2559771C2/en not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SU1633400A1 (en) * | 1989-03-22 | 1991-03-07 | Харьковское Высшее Военное Командно-Инженерное Училище Ракетных Войск Им.Маршала Советского Союза Крылова Н.И. | Arithmetic moduli processing device |
SU1756887A1 (en) * | 1990-11-02 | 1992-08-23 | Научно-исследовательский институт прикладных физических проблем им.А.Н.Севченко | Device for integer division in modulo notation |
US6470372B1 (en) * | 1998-04-02 | 2002-10-22 | Stmicroelectronics S.A. | Method for the performance of an integer division |
RU2318239C1 (en) * | 2006-07-05 | 2008-02-27 | Ставропольский военный институт связи ракетных войск | Neuron network for dividing numbers which are represented in a system of residual classes |
RU2400813C2 (en) * | 2008-12-22 | 2010-09-27 | Государственное образовательное учреждение высшего профессионального образования "Ставропольский военный институт связи ракетных войск" Министерства обороны Российской Федерации | Neutron network for main division of modular numbers |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2628179C1 (en) * | 2016-11-28 | 2017-08-15 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Device for dividing modular numbers |
RU2698413C1 (en) * | 2018-11-26 | 2019-08-26 | Анастасия Сергеевна Коржавина | Device for comparing numbers in a system of residual classes |
RU2798746C1 (en) * | 2023-03-01 | 2023-06-26 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Computing device |
Also Published As
Publication number | Publication date |
---|---|
RU2013148505A (en) | 2015-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lu et al. | A novel division algorithm for the residue number system | |
JP3636740B2 (en) | Microelectronic device for performing modular multiplication and method of using the microelectronic device | |
Chervyakov et al. | An approximate method for comparing modular numbers and its application to the division of numbers in residue number systems | |
US10877733B2 (en) | Segment divider, segment division operation method, and electronic device | |
US20070233769A1 (en) | A Scalable, Faster Method and Apparatus for Montgomery Multiplication | |
Babenko et al. | Positional characteristics for efficient number comparison over the homomorphic encryption | |
US5023827A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
US5132925A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
US10628124B2 (en) | Stochastic rounding logic | |
US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
Nykolaychuk et al. | Theoretical foundations for the analytical computation of coefficients of basic numbers of Krestenson’s transformation | |
US20030037087A1 (en) | Apparatus and method for efficient modular exponentiation | |
RU2559771C2 (en) | Device for primary division of molecular numbers | |
CN108334304B (en) | Digital recursive division | |
Jamadagni et al. | An asynchronous divider implementation | |
CN113467750A (en) | Large integer bit width division circuit and method for SRT algorithm with radix of 4 | |
US20230086090A1 (en) | Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit | |
Nannarelli | Radix-16 combined division and square root unit | |
Patankar et al. | Division algorithms-From Past to Present Chance to Improve Area Time and Complexity for Digital Applications | |
Sreedhar et al. | A fast large-integer extended GCD algorithm and hardware design for verifiable delay functions and modular inversion | |
Piestrak | Design of multi-residue generators using shared logic | |
Parashar et al. | Fast combinational architecture for a vedic divider | |
Chandu et al. | Design and implementation of high efficiency square root circuit using Vedic mathematics | |
Daumas et al. | Further reducing the redundancy of a notation over a minimally redundant digit set | |
Tawalbeh | Radix-4 asic design of a scalable montgomery modular multiplier using encoding techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20181031 |