RU2626654C1 - Умножитель по модулю - Google Patents
Умножитель по модулю Download PDFInfo
- Publication number
- RU2626654C1 RU2626654C1 RU2016104302A RU2016104302A RU2626654C1 RU 2626654 C1 RU2626654 C1 RU 2626654C1 RU 2016104302 A RU2016104302 A RU 2016104302A RU 2016104302 A RU2016104302 A RU 2016104302A RU 2626654 C1 RU2626654 C1 RU 2626654C1
- Authority
- RU
- Russia
- Prior art keywords
- input
- multiplier
- value
- output
- module
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах, а также в устройствах для формирования элементов конечных полей. Технический результат заключается в сокращении объема используемого оборудования умножителя на два по модулю за счет исключения из схемы всех четных умножителей на константу, а также части инверторов. Предлагаемый умножитель по модулю p позволяет достичь данный результат путем исключения из схемы всех четных умножителей на константу, а также части инверторов. Умножение по модулю производится путем параллельного выполнения n-1 операций. В ходе i-й операции значение z=x⋅y, где x и y - значения входных чисел сравнивается со значением i⋅p путем вычисления разности z-i⋅p, где i=1, …, n. Как только при выполнении i-й операции значение полученной разности станет отрицательным, результатом умножения чисел x и у по модулю p будет являться значение разности, полученное в результате (i-1)-й операции. Диапазон значений входных чисел для данного умножителя определяется размером умножителя и находится в пределах [0, …, р-1]. 1 ил.
Description
Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах, а также в устройствах для формирования элементов конечных полей.
Известно устройство для умножения чисел по модулю, содержащее сумматор и мультиплексор (см. патент РФ №2015537, кл. G06F 7/49, 30.06.1994).
Недостатком данного устройства являются его ограниченные функциональные возможности, а именно ограниченный диапазон значений входных чисел x(0<x≤p-1), где p - значение модуля, по которому производится вычисление), а также отсутствие возможности умножения на число, отличное от двух.
Известно устройство для умножения чисел на два по модулю, содержащее сумматоры, инверторы, умножители и мультиплексор (см. патент РФ №2299460, кл. G06F 7/523, 05.10.2005).
Недостатком данного устройства являются его ограниченные функциональные возможности, а именно ограниченный диапазон значений входных чисел x(0<x≤(n/2)p-1), а также отсутствие возможности умножения на число отличное от двух.
Наиболее близким по технической сущности к заявляемому изобретению является устройство для умножения чисел по модулю, содержащее умножитель, сумматоры, инверторы, умножители на константу, мультиплексор (см. патент РФ №2299461, кл. G06F 7/523, 25.05.2005).
Недостатком данного устройства является большой объем оборудования.
Техническим результатом, достигнутым при осуществлении заявленного изобретения, является сокращение объема оборудования.
Технический результат достигается путем исключения из схемы всех четных умножителей на константу, а также части инверторов следующим образом.
При перемножении значений входных чисел x и y, представленных в двоичной форме, с последующим приведением полученного значения z=x⋅y по модулю p, значение z=x⋅y сравнивается со значением модуля p. Если полученное значение z≥p, то из z вычитается значение модуля p, а полученное в результате значение z1=z-p вновь сравнивается со значением р. Если и в этом случае значение z1≥p, то из z1 вновь вычитается значение p, а полученное в результате значение z2=z1-p сравнивается со значением р. Данные операции проводятся до тех пор, пока значение zi, полученное на n-м шаге вычислений, не станет меньше значения модуля р. В этом случае значение z является результатом умножения числа x на число у по модулю р. Если уже на первом шаге входное значение z<p, значение z остается без изменений и является результатом умножения числа x на число y по модулю p.
Предлагаемый умножитель по модулю осуществляет данный метод путем параллельного выполнения n-1 операций, где n=2N-1, N - разрядность сомножителей и модуля. В ходе i-й операции значение z=x⋅y сравнивается со значением i⋅p путем вычисления разности z-i⋅p, где i=1 , …, n. Как только при выполнении i-й операции значение полученной разности станет отрицательным, результатом умножения числа x на число y по модулю p будет являться значение разности, полученное в результате (i-1)-й операции. Уменьшение объема оборудования достигается за счет исключения части умножителей на константу, осуществляющих умножение модуля p на четные числа. Получение недостающих произведений i⋅p, где i - четное, достигается путем сдвига произведений на один разряд в сторону старшего, что эквивалентно в двоичной системе счисления умножению на 2. Например, произведение 6р может быть получено из произведения 3p путем сдвига разрядов на один в сторону старшего. Таким образом, достаточно иметь лишь умножители на константу для нечетных констант, а умножители на константу для четных констант можно исключить.
На фиг. 1 представлена схема умножителя по модулю.
Умножитель по модулю содержит умножитель 1, (n-1) сумматоров 2, (n-1)/2 инверторов 3, (n-1)/2-1 умножителей на константу 4, и мультиплексор 5, содержащий n информационных и (n-1) управляющих входов. Входы 6 и 7 служат для подачи двоичных кодов умножаемых чисел х и у, вход 8 служит для подачи двоичного кода модуля р. Выход 9 является выходом устройства.
Умножитель по модулю работает следующим образом.
На вход 6 подается двоичный код числа x, на вход 7 - двоичный код числам, причем оба числа принадлежат диапазону [0, …, (р-1)], где p - модуль. Данные коды подаются на входы умножителя 1, который на выходе формирует двоичный код числа z=x⋅y. Код числа z поступает на первые входы сумматоров 2 и на первый информационный вход мультиплексора 5. Со входа 8 устройства двоичный код модуля p подается на вход первого инвертора 3 и на входы умножителей на константу 4. Значение модуля в j-м умножителе на константу 4 умножается на значение i=2 j+1, где j=1, …, (n-1)/2-1 - порядковый номер умножителя на константу. С выхода j-го умножителя на константу 4 код значения i⋅p поступает на вход (j+1)-го инвертора, где j=1, …, (n-1)/2-1. Инверсный код с выходов k-x инверторов 3 подается на вторые входы 2k-1-х сумматоров 2 и дополнительно со сдвигом на вторые входы l⋅2S-х сумматоров 2, где , s=1, 2, 3 … и , при этом сдвиг осуществляется на s разрядов в сторону старшего, а к младшим s разрядам вторых входов соответствующих сумматоров 2 подключен вход записи логической единицы. На вход переноса каждого сумматора 2 поступает код числа «1», служащий для перевода инверсного кода модуля в дополнительный код.
В общем виде сумматор 2 осуществляет операцию, описываемую выражением: , где с - результат суммирования, z=x⋅y - результат умножения входных чисел, i - номер сумматора, p - модуль. Старший разряд сформированного значения с поступает на выход переноса сумматора 2, остальные разряды представляют разность z-i⋅p и поступают на информационный выход сумматора 2.
До тех пор, пока значение z превышает значение i⋅p, на выходе переноса i-го сумматора 2 будет формироваться логическая «1», которая будет поступать на i-й управляющий вход мультиплексора 5. При превышении значением i⋅p значения z на выходе переноса i-го сумматора 2 сформируется логический «0». При поступлении с выхода переноса i-го сумматора 2 на i-й управляющий вход мультиплексора 5 логического «0» мультиплексор 5 переключит на выход 9 информационный вход, на который подается значение с информационного выхода (i-1)-го сумматора 2. Данное значение будет представлять результат умножения числа x на число у по модулю p.
Рассмотрим работу умножителя на примере.
Пусть х=510=0001012, y=310=0000112, z=x⋅y=1510=0011112, p=710=0001112, Как показано выше, i-й сумматор 2 формирует значение , поэтому для второго сумматора i⋅р=2⋅p=1410=0011102, для третьего сумматора i⋅p=3⋅р=2110=0101012, Тогда первый сумматор 2 сформирует значение c1=0011112+1110002+1=10010002, второй - с2=0011112+1100012+1=10000012, третий - с3=00011112+1010102+1=01110102.
Как видно из примера, на выходах переноса первых двух сумматоров 2 сформировано значение «1», на выходе же третьего сумматора 2 сформировано значение «0», поэтому на выход 9 мультиплексора 5 поступит значение с информационного выхода второго сумматора 2, равное 0000012=110. Так как (5⋅3)≡1(mod7), то правильность работы устройства очевидна.
Пусть теперь х=410=001002, y=310=000112, z=x⋅y=12l0=011002, р=1510=011112, В этом случае первый сумматор 2 сформирует значение с1=011002+100002+1=0111012. Так как уже первый сумматор на выходе переноса формирует символ «0», на выход 9 мультиплексора поступит значение с выхода умножителя 1, то есть z=x⋅y=011002=1210=(4⋅3)(mod 15).
Эффективность сокращения затрат на оборудование при использовании данного устройства определяется уменьшением количества умножителей на константу и инверторов. В общем случае количество умножителей на константу в предлагаемом устройстве в (2n-2)/(n-3) раз, а инверторов - в 2 раза меньше, чем в устройстве прототипе.
Claims (1)
- Умножитель по модулю, состоящий из умножителя, (n-1) сумматоров, где n=2N-1, N - разрядность кода модуля, (n-1)/2-1 умножителей на константу, (n-1)/2 инверторов и мультиплексора, содержащего n информационных и (n-1) управляющих входов, причем вход записи двоичного кода первого из умножаемых чисел подключен к первому входу умножителя, вход записи двоичного кода второго умножаемого числа подключен ко второму входу умножителя, выход которого подключен к первому информационному входу мультиплексора и первым входам всех сумматоров, выход переноса i-го сумматора подключен к i-му управляющему входу мультиплексора, информационный выход i-го сумматора подключен к (i+1)-му информационному входу мультиплексора, где i=1, …, (n-1), ко входу переноса каждого сумматора подключен вход записи логической единицы, вход записи двоичного кода модуля устройства подключен ко входу первого инвертора и ко входу каждого умножителя на константу, выход j-го умножителя на константу соединен со входом (k+1)-го инвертора, где j=1, …, (n-1)/2 -1, а k=1, …,(n-1)/2, выход k-го инвертора соединен со вторым входом соответствующего нечетного i-го сумматора, выход мультиплексора является выходом устройства, отличающийся тем, что выходы k-х инверторов дополнительно подключены ко вторым входам l⋅2S-х сумматоров, где , s=1, 2, 3 … и со сдвигом на s разрядов в сторону старшего, а к младшим s разрядам соответствующих сумматоров подключен вход записи логической единицы.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2016104302A RU2626654C1 (ru) | 2016-02-09 | 2016-02-09 | Умножитель по модулю |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2016104302A RU2626654C1 (ru) | 2016-02-09 | 2016-02-09 | Умножитель по модулю |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2626654C1 true RU2626654C1 (ru) | 2017-07-31 |
Family
ID=59632398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2016104302A RU2626654C1 (ru) | 2016-02-09 | 2016-02-09 | Умножитель по модулю |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2626654C1 (ru) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2751802C1 (ru) * | 2020-07-07 | 2021-07-19 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Умножитель по модулю |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4910701A (en) * | 1987-09-24 | 1990-03-20 | Advanced Micro Devices | Split array binary multiplication |
RU2299461C1 (ru) * | 2005-10-05 | 2007-05-20 | Вячеслав Иванович Петренко | Умножитель по модулю |
RU2299460C1 (ru) * | 2005-10-05 | 2007-05-20 | Вячеслав Иванович Петренко | Умножитель на два по модулю |
US20080114820A1 (en) * | 2006-11-15 | 2008-05-15 | Alaaeldin Amin | Apparatus and method for high-speed modulo multiplication and division |
-
2016
- 2016-02-09 RU RU2016104302A patent/RU2626654C1/ru not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4910701A (en) * | 1987-09-24 | 1990-03-20 | Advanced Micro Devices | Split array binary multiplication |
RU2299461C1 (ru) * | 2005-10-05 | 2007-05-20 | Вячеслав Иванович Петренко | Умножитель по модулю |
RU2299460C1 (ru) * | 2005-10-05 | 2007-05-20 | Вячеслав Иванович Петренко | Умножитель на два по модулю |
US20080114820A1 (en) * | 2006-11-15 | 2008-05-15 | Alaaeldin Amin | Apparatus and method for high-speed modulo multiplication and division |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2751802C1 (ru) * | 2020-07-07 | 2021-07-19 | федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" | Умножитель по модулю |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mohan et al. | Residue Number Systems | |
Kasianchuk et al. | Theory and methods of constructing of modules system of the perfect modified form of the system of residual classes | |
Nykolaychuk et al. | Theoretical foundations for the analytical computation of coefficients of basic numbers of Krestenson’s transformation | |
Jain et al. | Binary division algorithm and high speed deconvolution algorithm (Based on Ancient Indian Vedic Mathematics) | |
RU2299461C1 (ru) | Умножитель по модулю | |
RU2626654C1 (ru) | Умножитель по модулю | |
RU2717915C1 (ru) | Вычислительное устройство | |
US20230086090A1 (en) | Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit | |
Piestrak | Design of squarers modulo A with low-level pipelining | |
RU2696223C1 (ru) | Арифметико-логическое устройство для формирования остатка по произвольному модулю от числа | |
RU2589361C1 (ru) | Умножитель по модулю | |
RU2348965C1 (ru) | Вычислительное устройство | |
Piestrak | Design of multi-residue generators using shared logic | |
Teja | Design of radix-8 booth multiplier using koggestone adder for high speed Arithmetic applications | |
RU2324972C2 (ru) | Устройство для формирования остатка по произвольному модулю от числа | |
RU2630386C1 (ru) | Умножитель по модулю | |
RU2661797C1 (ru) | Вычислительное устройство | |
RU2559771C2 (ru) | Устройство для основного деления модулярных чисел | |
Efstathiou et al. | On the design of configurable modulo 2n±1 residue generators | |
KR100946256B1 (ko) | 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기 | |
RU2804380C1 (ru) | Конвейерный вычислитель | |
RU2797164C1 (ru) | Конвейерный умножитель по модулю | |
Wu et al. | Improved RNS Montgomery modular multiplication with residue recovery | |
Nirmal et al. | Novel Delay Efficient Approach for Vedic Multiplier with Generic Adder Module | |
Sharoun | Residue number system (RNS) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20210210 |