ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО
COMPUTING DEVICE

Изобретение относится к вычислительной технике и может быть использовано в цифровых вычислительных устройствах, в криптографических приложениях, а также в устройствах цифровой обработки сигналов и в системах управления.
Известно устройство для формирования остатка по произвольному модулю от числа, содержащее регистры, элементы ИЛИ, вычислитель, схемы сравнения, мультиплексор, элемент задержки, сумматор, группу блоков элементов «И» и блок постоянной памяти со связями (см. АС СССР №1633495, кл. H 03 M 7/18, 1991). Недостатком известного устройства является низкая надежность, так как для его реализации требуется большой объем оборудования.
Известен комбинационный рекуррентный формирователь остатков, содержащий комбинационный формирователь частичных остатков, блок ключей и блок сумматоров по модулю (см. патент РФ №2029435, кл. 6 H 03 M 7/18, 20.02.1995, бюл. №5). Недостатком данного устройства являются его ограниченные функциональные возможности, а именно отсутствие возможности формирования неполного частного.
Известно вычислительное устройство, содержащее сумматоры и мультиплексоры (см. патент РФ № 2348965, МПК G06F 7/72 (2006.01), H03M 7/18 (2006.01), 10.03.2009. Бюл. № 7). Недостатком данного вычислительного устройства является большой объем оборудования.
Наиболее близким по технической сущности к заявляемому изобретению является вычислительное устройство, содержащее сумматоры и мультиплексоры (см. патент РФ № 2717915, МПК G06F 7/72 (2006.01), H03M 7/18 (2006.01), 26.03.2020. Бюл. № 9). Недостатком данного вычислительного устройства является низкое быстродействие.
Техническим результатом изобретения является повышение быстродействия.
n
n
n
n
i
i
n
n
n
j
i
j
n
i
j
n
n
i
i
n
i
n
Для достижения технического результата в вычислительное устройство, содержащее (-2) сумматоров и (/2-1) мультиплексоров, где -разрядность входного числа, образующих (/2-1) ступеней преобразования, на первые информационные входы первых сумматоров всех ступеней преобразования подается инверсный двоичный код модуля, информационные выходы первого сумматора -й ступени преобразования, где =1,.., /2-1, соединены с первыми информационными входами мультиплексора этой же ступени преобразования, а выходы переноса соединены с первыми управляющими входами соответствующих мультиплексоров, первый информационный выход мультиплексора (/2-1)-й ступени преобразования является информационным выходом двоичного кода остатка устройства, дополнительно введены (/2-1) сумматоров, на первые информационные входы вторых сумматоров всех ступеней преобразования подается инверсный двоичный код удвоенного модуля, на первые информационные входы третьих сумматоров всех ступеней преобразования подается инверсный двоичный код утроенного модуля, информационные выходы вторых и третьих сумматоров всех ступеней преобразования соединены со вторыми и третьими информационными входами соответственно мультиплексоров этих же ступеней преобразования, выходы переноса вторых и третьих сумматоров всех ступеней преобразования соединены со вторыми и третьими управляющими входами соответственно мультиплексоров этих же ступеней преобразования, на входы переноса всех сумматоров подается код логической единицы, -е разряды вторых информационных входов всех сумматоров и четвертых информационных входов мультиплексоров-й ступени преобразования, где =(0;1), соединены с (-2--1)-ми разрядами двоичного кода входного числа соответственно,  второй и третий разряды вторых информационных входов трех сумматоров и четвертых информационных входов мультиплексорапервой ступени преобразования соединены с (-2)-м и (-1)-м разрядами двоичного кода входного числа соответственно, первые информационные выходы мультиплексоров-й ступени преобразования, где =1,.., /2-2, соединены со сдвигом на два разряда в сторону старших со вторыми информационными входами сумматоров и четвертыми информационными входами мультиплексоров (+1)-й ступени преобразования, первые информационные выходы мультиплексора (/2-1)-й ступени преобразования являются выходом двоичного кода остатка, вторые информационные выходы мультиплексоров являются информационными выходами двоичного кода неполного частного устройства, причем мультиплексоры содержат два элемента ИЛИ, три инвертора, два трехвходовых элемента И, двухвходовый элемент И, четыре ключа и блок элементов ИЛИ, информационный выход которого является первым информационным выходом мультиплексора, информационные входы соединены с информационными выходами соответствующих ключей, первые информационные входы которых являются соответствующими информационными входами мультиплексора, управляющий вход четвертого ключа соединен с выходом первого трехвходового элемента И, первый вход которого соединен с выходом первого инвертора, второй вход соединен с выходом второго инвертора и со вторым входом второго трехвходового элемента И, третий вход соединен с выходом третьего инвертора, с третьим входом второго трехвходового элемента И и со вторым входом двухвходового элемента И, вход первого инвертора является первым управляющим входом мультиплексора и соединен с первым входом второго трехвходового элемента И, выход которого соединен с управляющим входом первого ключа и первым входом второго элемента ИЛИ, вход второго инвертора является вторым управляющим входом мультиплексора и соединен с первым входом двухвходового элемента И, выход которого соединен с управляющим входом второго ключа и первым входом первого элемента ИЛИ, вход третьего инвертора является третьим управляющим входом мультиплексора и соединен с управляющим входом третьего ключа и со вторыми входами элементов ИЛИ, выходы которых являются вторыми информационными выходами мультиплексора.
R
A
P
Сущность изобретения заключается в реализации следующего способа вычисления остатка  от числа  по модулю . Пусть
A
Q⋅P
R
=  +,  (1)
A
где – целое положительное число, от которого необходимо вычислить остаток;
P
– целое положительное число, называемое модулем;
Q
A
P
– целое положительное число, являющееся неполным частным от деления  на ;
R
A
P
– целое положительное число, являющееся остатком от деления на.
Причем
A
a
·
a
·
a
·
a
·
a
·
a
·
a
·
a
n
-1
n
-2
n
-3
n
-4
3
2
1
0
n
-1
n
-2
n
-3
n
-4
3
2
= 2+2+2+2+  . . . +2+2+2+,  (2)
P
p
·
p
·
p
·
p
n
-1
n
-2
1
0
n
-1
n
-2
1
= 2+2+ . . . +2+,  (3)
Q
q
·
q
·
q
n
-2
1
0
n
-2
1
= 2+ . . . +2+,  (4)
R
r
·
r
·
r
n
-2
1
0
n
-2
1
= 2+ . . . +2+,  (5)
a
A
i
где ,  – коэффициенты, принимающие значение 0 или 1 в зависимости от значения числа ;
p
P
i
,  – коэффициенты, принимающие значение 0 или 1 в зависимости от значения модуля ;
q
Q
i
,  – коэффициенты, принимающие значение 0 или 1 в зависимости от значения неполного частного ;
r
R
i
,  – коэффициенты, принимающие значение 0 или 1 в зависимости от значения остатка ;
n
n
– количество разрядов в представлении чисел,  – четное.
A
P
R
Q
R
A
P
A
R
P
Задача состоит в том, чтобы по известным  и  отыскать остаток и неполное частное . Остаток  является в терминах теории чисел вычетом числа  по модулю , поэтому говорят, что  сравнимо с по модулю :
A
R
P
≡  (mod ).  (6)
R
Значение остатка  может быть вычислено следующим образом:
R
A
P
a
·
a
·
a
·
a
P
n
-1
n
-2
1
0
n
-1
n
-2
≡  (mod)= (2+2+ . . . +2+)mod.  (7)
Перепишем выражение (2) в следующем виде, объединив по два соседних слагаемых:
A
a
·
a
·
a
·
a
·
a
·
a
·
a
·
a
n
-1
n
-2
n
-3
n
-4
3
2
1
0
n
-1
n
-2
n
-3
n
-4
3
2
= (2+2)+(2+2)+  . . . +(2+2)+(2+),  (8)
i
Из каждой суммы в скобках в выражении (8) вынесем 2 за скобки, где , принимает только четные значения:
A
a
·
a
a
·
a
a
·
a
a
·
a
n
-2
n
-4
2
n
-1
n
-2
n
-3
n
-4
3
2
1
0
= 2(2+)+2(2+)+  . . . +2(2+)+(2+),  (9)
n
a
·
a
i
+1
i
i
В выражении (9) перед каждой из /2 образовавшихся сумм вида (2+), получаем множитель 2, где , принимает только четные значения.
Далее вынесем в (9) наименьшую ненулевую степень 2 за скобки:
A
a
·
a
a
·
a
a
·
a
a
·
a
2
n
-4
n
-6
n
-1
n
-2
n
-3
n
-4
3
2
1
0
= 2(2(2+)+2 (2+)+  . . . + (2+))+(2+),  (10)
n
Выполняя последовательно преобразование (10) (/2)-2 раз получим:
A
a
·
a
a
·
a
a
·
a
a
·
a
2
2
2
n
-1
n
-2
n
-3
n
-4
3
2
1
0
= 2(2…(2(2+)+(2+))+  . . . + (2+))+(2+),  (11)
2
n
где 2 встречается (/2)-1 раз.
Тогда выражение (7) может быть представлено в следующем виде:
R
a
·
a
a
·
a
a
·
a
a
·
a
P
2
2
2
n
-1
n
-2
n
-3
n
-4
3
2
1
0
= (2(2…(2(2+)+(2+))+  . . . + (2+))+(2+)) mod. (12)
Из теории чисел известно, что операция приведения по модулю инвариантна к сложению и умножению, т. е. величина остатка не зависит от того, вычислен ли он от суммы (произведения) или от каждого слагаемого (сомножителя), а затем соответствующие частичные остатки просуммированы (перемножены) и от результата вычислен остаток по модулю.
Исходя из вышесказанного, выражение (12) может быть вычислено следующим образом.
Вначале на первой ступени преобразования вычисляют величину
t
a
·
a
a
·
a
P
1
n
-1
n
-2
n
-3
n
-4
2
=(2(2+)+(2+)) mod. (13)
На второй ступени преобразования вычисляют величину
t
t
a
·
a
P
2
1
n
-5
n
-6
2
=(2+(2+)) mod. (14)
n
На последней (/2-1)-й ступени преобразования вычисляют величину
t
t
a
·
a
P
n
/2-1
n
/2-2
1
0
2
=(2+(2+)) mod, (15)
R
A
P
которая и является искомым остатком  от числа  по модулю .
P
Операция приведения по модулю  на каждой ступени преобразования выполняется исходя из следующих соображений.
t
t
P
i
-1
i
-1
По определению величина  лежит в диапазоне 0≤≤-1, поэтому в соответствии с выражениями (13)-(15) величина
t
t
a
·
a
i
i
-1
n
-2
i
-1
n
-2
i
-2
2
=2 +(2+),  (16)
P
t
i
до приведения ее по модулю может принимать значения в диапазоне от 0 до 4-1. Приведение по модулю величины  осуществляется по следующим правилам
t
P
t
t
P
i
i
i
(mod )=,  если 0 ≤ < , (17)
t
P
t
P
P
t
P
i
i
i
(mod )=- ,  если ≤ < 2,
t
P
t
P
P
t
P
i
i
i
(mod )=- 2,  если 2≤  < 3,
t
P
t
P
P
t
P
i
i
i
(mod )=- 3,  если 3≤ < 4.
Q
Разряды неполного частного  на каждом этапе вычислений принимают значения в соответствии с таблицей 1.
Таблица 1.
старший разряд
младший разряд
Значение <i>t</i><sub><i>i</i></sub>
0
0
0 ≤ <i>t</i><sub><i>i </i></sub>< <i>P</i>
0
1
<i>P</i>≤ <i>t</i><sub><i>i </i></sub>< 2<i>P</i>
1
0
2<i>P </i>≤ <i>t</i><sub><i>i</i></sub> < 3<i>P</i>
1
1
3<i>P </i>≤ <i>t</i><sub><i>i </i></sub>< 4<i>P</i>
t
t
kP
k
i
i
Условия попадания значения  в один из указанных в таблице 1 интервалов определяются значениями сигналов переноса на выходах переноса сумматоров, осуществляющих операцию вычитания  ( – ), где =1, 2, 3 в соответствии с таблицей 2.
Таблица 2.
<i>t</i><sub><i>i</i></sub>
<i>t</i><sub><i>i</i></sub> – <i>P</i>
<i>t</i><sub><i>i</i></sub> – 2<i>P</i>
<i>t</i><sub><i>i</i></sub> – 3<i>P</i>
0 ≤ <i>t</i><sub><i>i </i></sub>< <i>P</i>
0
0
0
<i>P</i>≤ <i>t</i><sub><i>i </i></sub>< 2<i>P</i>
1
0
0
2<i>P </i>≤ <i>t</i><sub><i>i</i></sub> < 3<i>P</i>
1
1
0
3<i>P </i>≤ <i>t</i><sub><i>i </i></sub>< 4<i>P</i>
1
1
1
t
P
t
P
t
P
t
P
t
P
t
P
t
P
t
i
i
i
i
i
i
i
i
Таким образом, если значение сигналов переноса равно «1» на выходах переноса всех трех сумматоров, то  (mod )=- 3, если значение сигналов переноса равно «1» на выходах переноса двух сумматоров, то
(mod )=- 2, если значение сигнала переноса равно «1» на выходах переноса одного сумматора, то (mod )=– . Если значение сигналов переноса равно «0» на выходах переноса всех трех сумматоров, то тогда
(mod )=, т.е. операция вычитания не выполняется.
На фиг.1 представлена схема вычислительного устройства.
n
n
n
n
A
Q
R
A
j
i
j
n
i
j
A
n
n
A
i
i
n
i
n
R
A
Q
n
R
Вычислительное устройство содержит (3/2-3) сумматоров 1 и (/2-1) мультиплексоров 2, где -разрядность входного числа, образующих (/2-1) ступеней преобразования, вход 3 подачи двоичного кода числа, выход 4 двоичного кода неполного частного  и выход 5 двоичного кода остатка от числа. На первые информационные входы первых сумматоров 1 всех ступеней преобразования подается инверсный двоичный код модуля, на первые информационные входы вторых сумматоров 1 всех ступеней преобразования подается инверсный двоичный код удвоенного модуля, на первые информационные входы третьих сумматоров 1 всех ступеней преобразования подается инверсный двоичный код утроенного модуля. На входы переноса всех сумматоров 1 подается код логической единицы. Информационные выходы первого, второго и третьего сумматоров 1 всех ступеней преобразования соединены со первыми, вторыми и третьими информационными входами соответственно мультиплексоров 2 этих же ступеней преобразования. Выходы переноса первых, вторых и третьих сумматоров 1 всех ступеней преобразования соединены с первыми, вторыми и третьими управляющими входами соответственно мультиплексоров 2 этих же ступеней преобразования, -е разряды вторых информационных входов всех сумматоров 1 и четвертых информационных входов мультиплексоров 2-й ступени преобразования, где =(0;1), соединены с (-2--1)-ми разрядами входа 3 двоичного кода числа  соответственно.  Второй и третий разряды вторых информационных входов трех сумматоров 1 и четвертых информационных входов мультиплексора2 первой ступени преобразования соединены с (-2)-м и (-1)-м разрядами входа 3 двоичного кода числа  соответственно. Первые информационные выходы мультиплексоров 2-й ступени преобразования, где =1,.., /2-2, соединены со сдвигом на два разряда в сторону старших со вторыми информационными входами сумматоров 1 и четвертыми информационными входами мультиплексоров 2 (+1)-й ступени преобразования. Первые информационные выходы мультиплексора 2 (/2-1)-й ступени преобразования являются выходом 5 двоичного кода остатка от числа. Вторые информационные выходы мультиплексоров 2 являются информационными выходами 4 двоичного кода неполного частного  устройства, первый информационный выход мультиплексора (/2-1)-й ступени преобразования является информационным выходом 5 двоичного кода остатка .
На фиг.2 представлена схема мультиплексоров 2.
Мультиплексоры 2 содержат два элемента ИЛИ 6, три инвертора 7, два трехвходовых элемента И 8, двухвходовый элемент И 9, четыре ключа 10 и блок элементов ИЛИ 11, информационный выход которого является первым информационным выходом мультиплексора 2, информационные входы соединены с информационными выходами соответствующих ключей 10, первые информационные входы которых являются соответствующими информационными входами мультиплексора 2, управляющий вход четвертого ключа 10 соединен с выходом первого трехвходового элемента И 8, первый вход которого соединен с выходом первого инвертора 7, второй вход соединен с выходом второго инвертора 7 и со вторым входом второго трехвходового элемента И 8, третий вход соединен с выходом третьего инвертора 7, с третьим входом второго трехвходового элемента  И 8 и со вторым входом двухвходового элемента И 9, вход первого инвертора 7 является первым управляющим входом мультиплексора 2 и соединен с первым входом второго трехвходового элемента И 8, выход которого соединен с управляющим входом первого ключа 10 и первым входом второго элемента ИЛИ 6, вход второго инвертора 7 является вторым управляющим входом мультиплексора 2 и соединен с первым входом двухвходового элемента И 9, выход которого соединен с управляющим входом второго ключа 10 и первым входом первого элемента ИЛИ 6, вход третьего инвертора является третьим управляющим входом мультиплексора 2 и соединен с управляющим входом третьего ключа 10 и со вторыми входами элементов ИЛИ 6, выходы которых являются вторыми информационными выходами мультиплексора 2.
Вычислительное устройство работает следующим образом.
A
R
Q
A
На вход 3 устройства подается двоичный код числа от которого необходимо сформировать остаток и неполное частное . Старшие разряды числа подаются на вход первой ступени преобразования, а младшие – на вход последней.
P
P
P
На первые информационные входы первых сумматоров 1 всех ступеней преобразования подается инверсный код модуля , вторых сумматоров 1 – удвоенный инверсный код модуля , а третьих сумматоров 1 – утроенный инверсный код модуля .
t
a
·
a
a
·
a
P
a
·
a
a
·
a
a
…a
P
P
P
P
1
n
-1
n
-2
n
-3
n
-4
n
-1
n
-2
n
-3
n
-4
n
-1
n
-4
2
2
На первой ступени преобразования осуществляется вычисление значения =(2(2+)+(2+)) mod. Причем вычисление значения2(2+)+(2+) осуществляется путем подачи соответствующих разрядов  на соответствующие входы первой ступени преобразования. Для приведения этого значения по модулю  с помощью сумматоров 1 осуществляют одновременное вычитание значений , 2 и 3. Сигналы переноса в виде логических единиц на выходах сумматоров 1 появятся в зависимости от того в каком диапазоне находится входное значение в соответствии с табл. 2 и далее поступят на соответствующие управляющие входы мультиплексора 2.
Управляющие сигналы мультиплексора 2 (см. Фиг. 2) открывают один из ключей 10.
2
a
·
a
a
·
a
P
n
-1
n
-2
n
-3
n
-4
Если управляющий сигнал появляется на всех трех управляющих входах, то окажется открытым третий ключ 10. Управляющий сигнал с третьего управляющего входа откроет третий ключ 10 и через третий инвертор 7 в виде логического нуля поступит на третьи входы трехвходовых элементов И 8 и на второй вход двухвходового элемента И 9, запрещая прохождение управляющих сигналов с их первых входов на их выходы. В результате первый, второй и четвертый ключи 10 окажутся закрытыми и на выход мультиплексора поступит значение 2(2+)+(2+) - 3 с его третьего информационного входа.
2
a
·
a
a
·
a
P
n
-1
n
-2
n
-3
n
-4
Если управляющий сигнал появляется на первом и втором управляющих входах мультиплексора 2, то аналогичным образом окажется открытым только второй ключ 10, а первый, третий и четвертый ключи 10 окажутся закрытыми. В результате на выход мультиплексора 2 поступит значение с его второго информационного входа 2(2+)+(2+) - 2.
2
a
·
a
a
·
a
P
n
-1
n
-2
n
-3
n
-4
Если управляющий сигнал появляется только на первом управляющем входе мультиплексора 2, то аналогичным образом окажется открытым только первый ключ 10, а второй, третий и четвертый ключи окажутся закрытыми. В результате на выход мультиплексора 2 поступит значение 2(2+)+(2+) -  с его первого информационного входа.
2
a
·
a
a
·
a
n
-1
n
-2
n
-3
n
-4
Если же на управляющих входах мультиплексора 2 будут только нулевые сигналы, то они, поступая через инверторы 7 и первый трехвходовый элемент И 8, откроют четвертый ключ 10 и на выход мультиплексора 2 поступит значение с его четвертого информационного входа 2(2+)+(2+).
t
a
·
a
a
·
a
P
a
a
A
1
n
-1
n
-2
n
-3
n
-4
n
-5
n
-6
2
2
Сформированное на первой ступени преобразования значение
=(2(2+)+(2+)) mod поступает со сдвигом на два разряда в сторону старших (т.е. фактически осуществляя умножение на 2) на вход следующей ступени преобразования. На младшие два разряда подаются сигналы ,  разрядов входного числа .
На второй ступени преобразования осуществляются аналогичные вычисления. Аналогично происходит работа устройства и на остальных ступенях преобразования.
n
R
A
P
Q
Так как на каждой ступени преобразования осуществляется обработка одновременно двух разрядов входного числа, то через (/2-1) преобразований на выходе 5 устройства сформируется двоичный код остатка  от числа  по модулю , а на выходе 4 устройства сформируется двоичный код неполного частного .
Рассмотрим работу вычислительного устройства на примере.
A
P
n
P
P
P
10
2
10
2
Пусть входное число =248=11111000, модуль =5=00000101, разрядность =8. Двоичные прямые и инверсные коды значений модуля , 2, 3 представлены в табл. 3.
Таблица 3.
Двоичный прямой код
Двоичный инверсный код
Модуль <i>P</i> =5
00000101
11111010
Значение 2<i>P</i> = 10
00001010
11110101
Значение 3<i>P</i> = 15
00001111
11110000
Значения сигналов при работе устройства на входах и выходах сумматоров 1 и мультиплексоров 2 представлены в табл. 4.
Таблица 4.
<b>№ ступени</b>
<b>Вход/выход</b>
<b>Сумматор 1</b>
<b>Сумматор 2</b>
<b>Сумматор 3</b>
<b>Мультиплексор</b>
1
вход 1
11111010
11110101
11110000
00001010
вход 2
00001111
00001111
00001111
00000101
вход 3
1
1
1
00000000
вход 4
-
-
-
00001111
выход 1
00001010
00000101
00000000
00000000
выход 2
1
1
1
<b>11</b>
2
вход 1
11111010
11110101
11110000
11111101
вход 2
00000010
00000010
00000010
11111000
вход 3
1
1
1
11110011
вход 4
-
-
-
00000010
выход 1
11111101
11111000
11110011
00000010
выход 2
0
0
0
<b>00</b>
3
вход 1
11111010
11110101
11110000
00000011
вход 2
00001000
00001000
00001000
11111110
вход 3
1
1
1
11111001
вход 4
-
-
-
00001000
выход 1
00000011
11111110
11111001
<b>00000011</b>
выход 2
1
0
0
<b>01</b>
Номер ступени преобразования приведен в первом столбце таблицы 4. «Сумматор 1», «Сумматор 2» и «Сумматор 3» соответственно первый, второй и третий сумматоры 1, «Мультиплексор» - обозначение мультиплексоров 2, «вход 1» и «вход 2», соответственно первый и второй информационные входы сумматоров 1 и мультиплексора 2, «вход 3» - вход переноса сумматоров 1 и третий информационный вход мультиплексора 2 «вход 4» - четвертый информационный вход мультиплексора 2, «выход 1» - информационные выходы сумматоров 1 и мультиплексора 2, «выход 2» - выход переноса сумматоров 1 или второй информационный выход мультиплексора 2.
2
10
2
10
R
A
P
Q
В результате на информационных выходах 5 мультиплексора 2 третьей ступени преобразования окажется код числа 00000011=3, который и является вычисленным остатком  числа=248 по модулю =5, а на выходах 4 устройства образуется двоичный код 110001=49, который и является неполным частным. Непосредственной проверкой устанавливаем, что 248=49·5 + 3, что доказывает правильность функционирования устройства.
n
n
В устройстве прототипе вычисление остатка осуществляется за (-1) последовательных шагов преобразования, а в предлагаемом устройстве за (/2-1) шагов. В результате быстродействие предлагаемого технического решения по сравнению с устройством прототипом будет выше не менее чем в два раза.