КОНВЕЙЕРНЫЙ ФОРМИРОВАТЕЛЬ ОСТАТКОВ ПО ПРОИЗВОЛЬНОМУ МОДУЛЮ
PIPELINE GENERATOR OF REMAINDERS BY AN ARBITRARY MODULUS

Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах для формирования кодовых последовательностей, а также в устройствах цифровой обработки сигналов и в криптографических приложениях.
Из существующего уровня техники известно устройство для формирования остатка по произвольному модулю от числа, содержащее регистр и блок формирования частного и остатка, позволяющее выполнять вычисление остатка и неполного частного от чисел по произвольным модулям [1]. Недостатком данного технического решения является низкое быстродействие при вычислении остатков по модулю для потока чисел, так как вычисление остатка по модулю для очередного числа в потоке не может быть начато до тех пор, пока не завершено вычисление остатка по модулю для предыдущего числа.
n
n
n
Из существующего уровня техники известно вычислительное устройство, содержащее 2-2 сумматоров и -1 мультиплексоров, где - разрядность входного числа, позволяющее выполнять вычисление остатка и неполного частного от чисел по произвольным модулям [2]. Недостатком данного технического решения является низкое быстродействие при вычислении остатков по модулю для потока чисел, так как вычисление остатка по модулю для очередного числа в потоке не может быть начато до тех пор, пока не завершено вычисление остатка по модулю для предыдущего числа.
Из существующего уровня техники известен комбинационный рекуррентный формирователь остатков, содержащий последовательно соединенные комбинационный формирователь частичных остатков, блок ключей и блок сумматоров по модулю, позволяющий выполнять приведение чисел по произвольным модулям [3]. Недостатком данного технического решения является низкое быстродействие при вычислении остатков по модулю для потока чисел, так как вычисление остатка по модулю для очередного числа в потоке не может быть начато до тех пор, пока не завершено вычисление остатка по модулю для предыдущего числа.
l
k
N
k
N
l
Из существующего уровня техники известно устройство для формирования остатка по произвольному модулю от числа, содержащее =((/)-1) блоков формирования частичных остатков (где  - количество разрядов в двоичном представлении числа, от которого формируется остаток, с учетом добавленных для достижения кратности  разрядов), (+1) блоков умножения по модулю, блока распределения коэффициентов и сумматора по модулю [4]. Недостатком данного технического решения является низкое быстродействие при вычислении остатков по модулю для потока чисел, так как формирование частичного остатка и выполнение операций умножения и сложения по модулю производится заново для каждого из чисел в потоке, кроме того, вычисление остатка по модулю для очередного числа в потоке не может быть начато до тех пор, пока не завершено вычисление остатка по модулю для предыдущего числа.
Наиболее близким к заявленному техническому решению по технической сущности и достигаемому техническому результату, выбранному в качестве прототипа, является устройство для формирования остатка по заданному модулю [5], содержащее блоки формирования частичных остатков, параллельные многоразрядные регистры, мультиплексор, компаратор, блок вычитания, в котором организована конвейеризация процесса вычисления остатков по заданному модулю для потока чисел на базе последовательного выполнения операций сложения (не по модулю) первичных остатков. Недостатками данного технического решения являются большой объем оборудования, обусловленный тем, что в каждом блоке формирования частичных остатков кроме основных параллельных регистров используются дополнительные (по количеству разрядов модуля) параллельные регистры для хранения частичных остатков, а также многовходовый комбинационный сумматор, который при разрядности более 32 фактически окажется сложно реализуемым, а также будет обладать большим временем суммирования. Кроме того, предложенная структура устройства может быть реализована для конкретных разрядностей модуля и при необходимости работы с модулями иной разрядности потребуется изменение структуры устройства.
Техническим результатом, обеспечиваемым приведенной совокупностью признаков, является сокращение объема используемого оборудования за счет исключения дополнительных параллельных регистров и замены многовходовых комбинационных сумматоров на стандартный двухвходовый сумматор и как следствие уменьшение потребления энергии.
n-
n-
n
n-
n-
i
i
n-
m
i
m
m
m
i
n-i
m
i
n-i-
n-i-
i
n
i
m
n-i
Указанный технический результат при осуществлении изобретения достигается тем, что в конвейерном формирователе остатков по произвольному модулю, содержащем (1) блоков формирования частичных остатков, (1) параллельных регистров, где  - разрядность входных чисел, первые и вторые информационные входы устройства, информационные выходы устройства и тактовый вход устройства, соединенный с тактовыми входами (1) параллельных регистров, первые информационные входы устройства соединены с информационными входами первого параллельного регистра, два старших разряда информационных выходов которого соединены с первыми информационными входами первого блока формирования частичных остатков, вторые информационные входы устройства соединены со вторыми информационными входами блоков формирования частичных остатков, информационные выходы (1)-го блока формирования частичных остатков соединены с информационными выходами устройства, информационные выходы -го блока формирования частичных остатков, =(1, …, (2)) соединены с  младшими разрядами информационных входов (+1)-го параллельного регистра, где  - разрядность модуля,  младших разрядов информационных выходов которого соединены со (2, … , (+1))-ми разрядами первых информационных входов (+1)-го блока формирования частичных остатков, с первым разрядом первых информационных входов которого соединён самый старший (+)-й разряд информационных выходов (+1)-го параллельного регистра, (1) старших разрядов информационных входов которого соединены с (1) старшими разрядами информационных выходов -го параллельного регистра, разрядность первого параллельного регистра равна , а -го параллельного регистра равна (+), причём блок формирования частичных остатков содержит сумматор и мультиплексор, первые информационные входы сумматора и мультиплексора соединены с первыми информационными входами блока формирования частичных остатков, вторые информационные входы сумматора соединены со вторыми информационными входами блока формирования частичных остатков, информационные выходы сумматора соединены со вторыми информационными входами мультиплексора, а выход переноса соединён с управляющим входом мультиплексора, выходы которого являются информационными выходами блока формирования частичных остатков, а на вход переноса сумматора подаётся сигнал логической единицы.
R
A
P
Сущность изобретения заключается в реализации следующего способа конвейерного вычисления остатка  от числа  по модулю . Пусть
A
Q⋅P
R
=  +,    (1)
A
-
где  целое положительное число, от которого необходимо вычислить остаток;
P
- целое положительное число, называемое модулем;
Q
A
P
- целое положительное число, являющееся неполным частным от деления  на ;
R
A
P
- целое положительное число, являющееся остатком от деления на.
Причем
A
a
-
·
-
a
-
·
-
a
·
a
n
1
n
2
1
0
n
1
n
2
1
= 2+2+ . . . +2+,    (2)
P
p
-
·
-
p
-
·
-
p
·
p
m
1
m
2
1
0
m
1
m
2
1
= 2+2+ . . . +2+,    (3)
Q
q
-
·
-
q
-
·
-
q
·
q
n
2
n
3
1
0
n
2
n
3
1
= 2+2+ . . . +2+,    (4)
R
r
-
·
-
r
-
·
-
r
·
r
m
1
m
2
1
0
m
1
m
2
1
= 2+2+ . . . +2+,    (5)
a
A
i
где ,  - коэффициенты, принимающие значение 0 или 1 в зависимости от значения числа ;
p
P
i
,  - коэффициенты, принимающие значение 0 или 1 в зависимости от значения модуля ;
q
Q
i
,  - коэффициенты, принимающие значение 0 или 1 в зависимости от значения неполного частного ;
r
R
i
,  - коэффициенты, принимающие значение 0 или 1 в зависимости от значения остатка ;
n
A
m
P
- количество разрядов в представлении числа ,  - количество разрядов в представлении модуля , .
A
P
R
R
A
P
A
R
Задача состоит в том, чтобы по известным  и  отыскать остаток . Остаток  является в терминах теории чисел вычетом числа  по модулю , поэтому говорят, что  сравнимо с :
A
R
P
(mod ).    (6)
R
Значение остатка  может быть вычислено следующим образом:
R
A
P
a
-
·
-
a
-
·
-
a
·
a
P
n
1
n
2
1
0
n
1
n
2
1
=  (mod) = (2+2+ … +2+)mod.    (7)
Перепишем выражение (7) в следующем виде:
R
a
-
·
a
-
a
-
a
a
P
n
1
n
2
n
3
1
0
= (2(2(…(2(2+)+ ) …) +)+)mod.   (8)
Из теории чисел известно, что операция приведения по модулю инвариантна к сложению и умножению, т. е. величина остатка не зависит от того, вычислен он от суммы (произведения) или от каждого слагаемого (сомножителя), а затем соответствующие частичные остатки просуммированы (перемножены) и от результата вычислен остаток по модулю.
Поэтому выражение (8) может быть представлено в следующем виде
R
a
-
·
a
-
P
a
-
P
P
a
P
a
P
n
1
n
2
n
3
1
0
= (2(2(…(2(2+) mod + ) mod+ …)mod +…+) mod +)mod.   (9)
R
А
P
В таком виде значительно облегчается задача нахождения остатка  от числа  по модулю  с использованием конвейерного режима.
t
1
Вначале на первом такте в первом слое конвейера от первого числа вычисляют первый частичный остаток :
t
·t
a
-
P
t
a
1
0
n
2
0
n
-1
= (2+) mod, где =.   (10)
t
2
На втором такте во втором слое конвейера от первого числа вычисляют второй частичный остаток :
t
·t
a
-
P
2
1
n
3
= (2+) mod,   (11)
t
1
а от второго числа в первом слое конвейера вычисляют первый частичный остаток  в соответствии с (10).
t
3
На третьем такте в третьем слое конвейера от первого числа вычисляют третий частичный остаток :
t
·t
a
-
P
3
2
n
4
= (2+) mod,   (12)
t
t
2
1
от второго числа во втором слое конвейера вычисляют второй частичный остаток  в соответствии с (11), а от третьего числа в первом слое конвейера вычисляют первый частичный остаток  в соответствии с (10).
n-
n-
n-
t
n-1
На (1)-м такте в (1)-м слое конвейера от первого числа вычисляют (1)-й частичный остаток :
t
·t
-
a
P
n = 1
n
2
0
(2+) mod,   (13)
R
A
P
n-
n-
P
который и является искомым остатком  от первого числа  по модулю , поступившего на вход конвейера на первом такте. При этом в (1…(2))-м слоях конвейера будут находиться соответствующие частичные остатки, согласно вышеприведенным выражениям, от поступивших на его вход чисел. Соответственно на каждом следующем такте будем в (1)-м слое конвейера получать остатки от чисел, поступающих на вход по модулю .
P
Операция приведения по модулю  в каждом слое конвейеризации выполняется исходя из следующих соображений.
t
-
t
-
P-
i
1
i
1
По определению величина  лежит в диапазоне 0≤≤1, поэтому в соответствии с выражениями (10) - (13) величина
t
t
-
a
-
-
i
i
1
n
i
1
= 2 +,    (14)
P-
a
-
-
t
n
i
1
i
до приведения ее по модулю может принимать значения в диапазоне от 0 до 21, так как  может принимать значение 0 или 1. Приведение по модулю величины  осуществляется по следующим правилам:
t
P
t
t
P
i
i
i
(mod )=,    если 0 ≤ < ,   (15)
t
P
t
P
P ≤
t
P
i
i
i
(mod )=- ,    если < 2.
Сущность изобретения поясняется чертежами.
n-
n-
n-
n-
n-
n-
n-
n-
n-
i
i
i
n-
m
i
i
m
m
m
i
i
n-i
m
i
i
n-i-
n-i-
i
i
n
i
i
m
n-i
На фиг. 1 представлена схема конвейерного формирователя остатков по произвольному модулю. Конвейерный формирователь остатков по произвольному модулю содержит (1) параллельных регистров 1.1÷1.1, (1) блоков формирования частичных остатков 2.1÷2.1, первые информационные входы 3 устройства, вторые информационные входы 4 устройства, информационные выходы 5 устройства, тактовый вход 6 устройства. Тактовый вход 6 устройства соединен с тактовыми входами (1) параллельных регистров 1.1÷1.1. Первые информационные входы 3 устройства соединены с информационными входами первого параллельного регистра 1.1, два старших разряда информационных выходов которого соединены с первыми информационными входами первого блока формирования частичных остатков 2.1, вторые информационные входы устройства соединены со вторыми информационными входами блоков формирования частичных остатков 2.1÷2.1, информационные выходы (1)-го блока формирования частичных остатков 2.1 соединены с информационными выходами 5 устройства, информационные выходы -го блока формирования частичных остатков 2., =(1, …, (2)) соединены с  младшими разрядами информационных входов (+1)-го параллельного регистра 1.+1, где  - разрядность модуля,  младших разрядов информационных выходов которого соединены со (2, … , (+1))-ми разрядами первых информационных входов (+1)-го блока формирования частичных остатков 2.+1, с первым разрядом первых информационных входов которого соединён самый старший (+)-й разряд информационных выходов (+1)-го параллельного регистра 1.+1, (1) старших разрядов информационных входов которого соединены с (1) старшими разрядами информационных выходов -го параллельного регистра 1., разрядность первого параллельного регистра 1.1 равна , а -го параллельного регистра 1. равна (+).
i
i
n-
i
i
i
i
На фиг. 2 представлена схема блока формирования частичных остатков 2., =(1, …, (1)). Блок формирования частичных остатков 2. содержит сумматор 7 и мультиплексор 8. Первые информационные входы сумматора 7 и мультиплексора 8 соединены и являются первыми информационными входами блока формирования частичных остатков 2., вторые информационные входы сумматора 7 соединены со вторыми информационными входами блока формирования частичных остатков 2., информационные выходы сумматора 7 соединены со вторыми информационными входами мультиплексора 8, а выход переноса соединён с управляющим входом мультиплексора 8, выходы которого являются информационными выходами блока формирования частичных остатков 2., а на вход переноса сумматора 7 подаётся сигнал логической единицы.
n-
n
i
i
n-
i
m
n-i
n
m
На фиг. 3 представлено распределение разрядности параллельных регистров 1.1÷1.1. Первый параллельный регистр 1.1 имеет разрядность , равную разрядности входных чисел, а -й (=2, …, (1)) параллельный регистр 1. имеет разрядность (+), где  - разрядность входных чисел, а  - разрядность модуля.
Конвейерный формирователь остатков по произвольному модулю работает следующим образом (см. Фиг. 1).
n-
A
P
P
i
В исходном состоянии параллельные регистры 1.1÷1.1 обнулены. На тактовый вход 6 устройства поступают тактовые импульсы. На первые информационные входы 3 устройства с каждым тактовым импульсом подаются числа , от которых необходимо вычислить остаток по модулю . На вторые информационные входы 4 устройства, в течение всего цикла формирования остатков, подаётся инверсный код модуля .
A
A
m
m
m
m
n-
n-
На первом такте первое число  записывается в параллельный регистр 1.1. При этом два старших разряда первого числа  с выходов параллельного регистра 1.1 поступают на первые информационные входы блока формирования частичных остатков 2.1, который вычисляет значение первого частичного остатка в соответствии с выражением (10). С информационных выходов блока формирования частичных остатков 2.1  - разрядное значение первого частичного остатка первого числа поступает на (1…)-ые разряды информационных входов второго параллельного регистра 1.2. На ((+1)…(+2))-ые разряды информационных входов этого же регистра поступают значения (1, …, (3))-ых разрядов первого входного числа с информационных выходов первого параллельного регистра 1.1.
n-
n-
На втором такте в первый параллельный регистр 1.1 записывается второе число, а во второй параллельный регистр 1.2 записывается первый частичный остаток первого числа с выхода блока формирования частичных остатков 2.1 и значения (1, …, (2))-ых разрядов первого числа с информационных выходов параллельного регистра 1.1. В результате на первый разряд первых информационных входов блока формирования частичных остатков 2.2 с информационного выхода второго параллельного регистра 1.2 поступит значение (3) разряда первого числа, а на остальные разряды поступит значение первого частичного остатка от первого числа с информационных выходов первого блока формирования частичных остатков 2.1. В результате на информационном выходе блока формирования частичных остатков 2.1 будет сформирован первый частичный остаток от второго числа, а на информационном выходе блока формирования частичных остатков 2.2 будет сформирован второй частичный остаток от первого числа.
n-
n-
n-
n-
P
На (1)-ом такте на информационном выходе (1)-го блока формирования частичных остатков 2.(1) будет сформирован (1)-й частичный остаток от первого числа, являющийся остатком от числа, поступившего на первом такте на вход устройства, по модулю , который и поступит на информационные выходы 5 устройства. На последующих тактах на информационных выходах 5 устройства будут последовательно сформированы остатки от второго, третьего и последующих чисел, поступивших на вход устройства.
i
i
n-
P
t
-P
t
P
t
P
t
P
i
i
i
i
i
Блок формирования частичных остатков 2., =(1, …, (1)) реализует выражение (15) следующим образом (см. Фиг. 2). Так как на вторые информационные входы сумматора 7 поступает инверсный код модуля , а на вход переноса сигнал логической единицы, то сумматор 7 реализует операцию вычитания . В случае, если ≥ на выходе переноса сумматора 7 появляется сигнал логической единицы, который, поступая на управляющий вход мультиплексора 8, скоммутирует с его выходами вторые информационные входы, если же <, то на выходе переноса сумматора 7 будет сигнал логического нуля и на выходы мультиплексора 8 будет скоммутирован его первые информационные входы. В результате на выходах мультиплексора 8 всегда будет значение  mod , которое поступает на первые информационные выходы блока формирования частичных остатков 2..
Техническим результатом изобретения является сокращение объема используемого оборудования за счет исключения дополнительных параллельных регистров и заменой многовходовых комбинационных сумматоров на стандартный двухвходовый сумматор и как следствие уменьшение потребления энергии.
Изобретение позволяет в конвейерном режиме осуществлять формирование остатков по модулю от чисел, поступающих на его вход.
Источники информации
1. Патент на изобретение RU 2012137 C1. Устройство для формирования остатка по произвольному модулю от числа. Опубл. 30.04.1994.
2. Патент на изобретение RU 2348965 C1. Вычислительное устройство. Опубл. 10.03.2009, Бюл. №7.
3. Патент на изобретение RU 2029435 C1. Комбинационный рекуррентный формирователь остатков. Опубл. 20.02.1995.
4. Патент на изобретение RU 2324972 C2. Устройство для формирования остатка по произвольному модулю от числа. Опубл. 20.05.2008. Бюл. №14.
5. Патент на изобретение RU 2421781 C1. Устройство для формирования остатка по заданному модулю. Опубл. 20.06.2011. Бюл. №17.