УСТРОЙСТВО ДЛЯ СРАВНЕНИЯ ЧИСЕЛ, ПРЕДСТАВЛЕННЫХ В СИСТЕМЕ ОСТАТОЧНЫХ КЛАССОВ
DEVICE FOR COMPARING NUMBERS PRESENTED IN RESIDUE NUMBER SYSTEM

Изобретение относится к вычислительной технике и может быть использовано в блоках сравнения модулярных чисел вычислительных систем, функционирующих в системе остаточных классов.
Известны устройства для сравнения n разрядных чисел. (А.С. №675420, Б.И. №27, 1979) состоящее из триггеров, логических элементов, узлов хранения, регистров, дешифраторов, запоминающих матриц и счетчика. Однако данное устройство обладает большой сложностью и функционально не может быть использовано для сравнения модулярных чисел.
Наиболее близким по технической сущности к заявленному устройству является устройство для сравнения чисел (А.С. №541164, БИ №48, 1977.), содержащее решающие матрицы, блоки анализа полиадических коэффициентов алгебраического сравнения, блоки анализа полиадических коэффициентов сравнений по модулю, блок формирования знака и логические элементы «или».
Недостатками данного устройства является низкое быстродействие и его сложность.
Целью настоящего изобретения является повышения скорости сравнения чисел и сокращение аппаратных затрат.
Поставленная цель достигается тем, что в устройство вводятся просмотровые таблицы (память), схема сдвига полярности и сумматор. Рассмотрим новый метод сравнения модулярных чисел, обладающий высоким быстродействием и низкими аппаратными затратами оборудования
С целью упрощения процесса сравнения модулярных чисел рассмотрим приближенный метод, который позволяет абсолютно правильно реализовать основные классы процедур принятия решений: анализ наличия определенного значения в конкретном разряде; проверка равенства (неравенства) двух значений; сравнение двух значений (больше, меньше), которые обеспечивают решение основного круга задач, возникающих при аппаратной или программной реализации реальных процессов.
1
2
n
i
1
2
n
Суть приближенного метода сравнения модулярных чисел основана на использовании относительной величины исходного числа к полному диапазону Китайской теоремы об остатках, которая связывает позиционное число A с его представлением в остатках (α, α, …, α), где α - наименьшие неотрицательные вычеты числа, относительно модулей системы остаточных классов p, p, …, p следующим выражением
i
i
i
где
, p - модули СОК,
- мультипликативная инверсия P относительно p, и
.
Если (1) разделить на константу P, то получим приближенное значение
i
где
- константы выбранной системы, а α - разряды числа, представленного в СОК, при этом значение каждой суммы будет в интервале [0, 1). Конечный результат суммы определяется после суммирования и отбрасывания целой части числа с сохранением дробной части суммы. Дробная часть может быть записана также как Amod1, потому что
. Количество разрядов дробной части числа определяется максимально возможной разностью между соседними числами. При необходимости точного сравнения необходимо вычислить значение (2), которое является эквивалентом преобразования из СОК в позиционную систему счисления. Для решения задач основных процедур принятия решения достаточно знать приблизительно значения чисел A и B по отношению к динамическому диапазону P, которое выполняется достаточно просто, но при этом правильно определяет соотношение A=B, A>B или A<B.
1
2
3
4
1
2
1
2
3
4
1
2
Пример 1. Пусть дана система оснований p=2, p=3, p=5, p=7, объем диапазона P=2·3·5·7=210. Допустим, что в заданной СОК будут представлены только положительные числа. Величины
,
,
,
. Сравним два числа A=25 и А=30, представленные в СОК по основаниям p, p, p, p, то есть A=(1,1,0,4), A=(0,0,0,2). Для этого найдем константы
.
По (2) получим
2
1
Так как
, то A>A, есть 30>25.
1
2
1
2
1
2
Рассмотрим случай, когда рабочий диапазон разбит на два интервала
- положительные числа, и
- отрицательные числа. В традиционных ЭВМ определение абсолютных величин двух чисел A и A производится путем вычисления A-A и определения знака разности. В системе остаточных классов недостаточно определить знак путем
, так как A-A могут выходить за диапазон
и это приведет к неправильному результату.
Пример 2. Вариант неправильного определения сравнения чисел на основе определения знака.
1
2
1
2
Пусть
,
очевидно, что A>A. На основании (2) определим
и
. Основания СОК выберем такими же, как и в первом примере. Тогда A=(0,1,0,0) и A=(0,2,0,0) - дополнительный код отрицательного числа. Находим
,
.
2
Число A входит в отрицательный интервал, то есть
.
1
2
Следовательно сравнение приведет к неверному результату A<A.
1
2
Для правильного определения сравнения чисел необходимо проверить знаки A и A и тогда алгоритм сравнения будет иметь вид:
1
2
1. Определить знаки A и A.
1
2
2. Если A и A без знаков, то положительный знак разности относительных величин означает большее число.
1
2
3. Если A и A имеют один и тот же знак, то проверяется
.
1
2
1
2
1
2
4. Если A и A имеют разные знаки, то
, при A<A и
при A>A.
Таким образом, сравнение чисел со знаком требует предварительного анализа знаков сравниваемых чисел.
Известно, что при кодировании дополнительным кодом, отрицательная часть динамического диапазона находится у верхнего предела полного диапазона. Положительные числа из дополнительного диапазона отображаются на область
при нечетных P и на область
при четных P. Отображение динамического диапазона на соответствующую область для избыточного кода СОК показано на рисунке 1.
Это обстоятельство может привести к ошибке сравнения, так как отрицательные числа попадают в верхнюю часть полного диапазона, и все отрицательные числа будут давать ошибки, что не соответствует действительности в силу разнесения динамического диапазона.
Для преодоления этой трудности необходимо произвести сдвиг отрицательной области путем вращения остаточного кольца в положение, указанное на рисунке 2. Пунктиром показана область, которая перенесена в начало диапазона.
В результате отрицательные числа будут отображены в начальной части динамического диапазона.
Показанное на рисунке 2 вращение, называется сдвигом полярности и его можно осуществить путем прибавления перед сравнением модулярных чисел константы
при нечетном P или
при четных P к каждому A∈[0, P).
ic
Если
, то сдвиг полярности в пределах СОК оказывается простым остатком, определяемом по формуле
, в которой α обозначает остаточные цифры после сдвига полярности.
1
2
1
2
3
4
Пример 3. Сравнить модулярные числа разных знаков A и -A. Система оснований СОК такая же, как и в примере 1: p=2, p=3, p=5, p=7.
1
2
2
1
2
3
4
1
2
Пусть число A=17=(1,2,2,3), A=-19=(1,1,4,5). Тогда дополнительный код A=(p-1,p-1,p-4.p-5)=(1,2,1,2). Требуется сравнить числа A и A.
1
1
1
Проверка знака числа A. Для определения знака числа A сравним его с константой
. Тогда относительная величина числа A по отношению к величине числа К определяется как
.
1
Представление константы
. Далее находим
. Отсюда
. Разница положительная, то есть число
, поэтому число A входит в первый интервал и является положительным.
2
2
1
2
1
2
2
Проверка знака числа A проходит аналогично:
.
. Разность отрицательная и число A входит во второй интервал, очевидно что оно является отрицательным. Для правильного сравнения чисел A и A необходимо провести сдвиг полярности чисел A и A, так как число A является отрицательным. После сдвига получаем
и
.
Определим относительные величины
и
.
,
.
1
2
Найдем разность относительных величин, тогда
- разность положительная. Следовательно A>A.
Рассмотренные методы определения таких позиционных характеристик модулярного кода, как: определение знака числа и сравнение чисел, показали, в отличие от известных, простоту их вычисления, так как для их реализации не используется вычисление коэффициентов ОПСС, которое требует больших аппаратных и временных затрат. По этой причине данный метод представляет собой особую важность и является одним из лучших решений на настоящее время. Перечисленные операции являются важнейшими для машинной модулярной арифметики и их применение может дать значительные преимущества не только в таких приложениях, в которых основная доля вычислений приходится на точное умножение, возведение в степень больших чисел в сочетании со сложением и вычитанием, но и в которых довольно часто появляется необходимость сравнения и определения знака числа. Известно, что теорема кодирования Сабо гласит, что нет лучших методов определения позиционных характеристик, при которых не используется их однозначность, чем перевод чисел из СОК в ОПСС, поскольку величины числа в модулярном представлении существенным образом зависят от всех остатков числа. Однако проведенные исследования по определению приблизительных характеристик, которые решают задачу формирования конструкций сравнения, не отвечают утверждению указанной теоремы Сабо. Таким образом можно сделать вывод о том, что теорема Сабо работает только при точных методах.
Схема модулярного сравнения чисел, основанная на принципах использования относительных величин приведена на рисунке 3 и содержит: входные регистры 1, 9 для хранения чисел, соответствующие A и B которые поступают по шинам 15 и 16; схема определения знаков чисел A и B, соответственно, 2 и 8, схема сдвига полярности 3, 7, соответственно чисел A и B, просмотровые таблицы 5, 7, содержание таблиц для хранения произведения констант и разрядов СОК
и
соответственно, таблицы 5-1, 5-3, 5-n для чисел A и 6-1, 6-2, 6-n для чисел B, сумматор 10: логический элемент «исключающее или» 4; схемы анализа знака 11 с выходами: соответственно, A=B 12, A>B 13, A<B 14. Работа устройства для сравнения модулярных чисел осуществляется следующим образом.
i
На входные регистры 1, 9 по шинам 15, 16, соответственно, поступают исходные числа A и B, представленные в СОК, которые необходимо сравнить. Выходы регистров соединены с 2, 3 и 7, 8, соответственно, для определения знака чисел A и B и сдвига полярности чисел A и B. Выходные сигналы схем определения знаков чисел 2 и 8, соответственно чисел A и B (0 - положительное число, 1 - отрицательное число), поступают на вход логического элемента «исключающего или» 4, который в случае разных знаков формирует сигнал сдвига полярности чисел, соответствующий константе C, и подает на вход схем 3 и 7, где происходит сдвиг полярности чисел. Выходы систем схем сдвига полярности 3 и 7, соответственно для чисел А и В, являются адресными входами просмотровых таблиц 5 и 6,
Элементы памяти, просмотровые таблицы (LUT - таблицы) 5-1, 5-2 5-n и 6-1, 6-2, 6-n, соответственно, хранят произведения
и
прием для числа β чисел представляется в дополнительный код, который поступает на вход сумматора 10, в котором происходит суммирование в дополнительном коде. Результат суммирования поступает на блок анализа 11, где определяется: равенство чисел A=B шина 12, A>B шина 13 и A<B шина 14.
1
2
3
4
Пример 4. Пусть дана система оснований p=2, p=3, p=5, p=7. Сравнить модулярные числа A=(1,2,2,3) и B=(1,2,1,2). Исходные числа находятся в регистрах RGA и RGB, которые поступают на входы схем определения знака числа СОЗЧ-А и СОЗЧ-В. В этих схемах происходит сравнение исходных чисел с константой
.
,
.
Разность положительная, то есть
, поэтому число А входит в первый интервал, и является положительным.
.
Разность отрицательная, поэтому число B входит во второй интервал и является отрицательным.
Результат анализа знаков чисел A и B образуется на выходе элемента исключающее «или» который поступает на вход схем сдвига полярности ССП-А и ССП-В. На выходах схем сдвига полярности образуются данные соответственно A=(1,2,2,3)+(1,0,0,0)=(0,2,2,3) и B=(1,2,1,2)+(1,0,0,0)=(0,2,1,2). Выходные данные схем сдвига полярности являются адресными входами просмотровых таблиц LUT-A и LUT-B, согласно которых осуществляется выборка значений констант
, в условиях примера эти значения будут равны для LUT-A (0;0,3333·2;0,6·2;0,5714·3) и для LUT-B (0;0,3333·2;0,6·1;0,5714·2). Выходные сигналы просмотровых таблиц LUT-A и LUT-B поступают на вход сумматора. В результате суммирования получим
.
Разность положительная, так как дополнительный код положительного числа равен самому числу, следовательно A>B. Действительно, число A=17, B=-19.
Результаты сумматора анализируются в схеме сумматора, при этом:
если разность равна 0, то A=B,
если разность положительная, то A>B,
если разность отрицательная, то A<B.
В случае, если сравниваются положительные числа, то из схемы исключаются схемы определения знаков чисел. Тогда логическая глубина схемы (количество последовательно включенных элементов) будет n+3, где n - количество суммирований в сумматоре, при этом n определяется количеством модулей в системе.
2
Если же использовать рекурсивное сдваивание, тогда логическая глубина определяется выражением [logn]+3. В известных схемах логическая глубина с учетом определения коэффициентов ОПСС определяется как 2n+5.