Высокопроизводительные вычисления
УДК 621.391
Н.И. Червяков, М.Г. Бабенко, П.А. Ляхов, И.Н. Лавриненко, А.М. Лягин
УМНОЖЕНИЕ И ДЕЛЕНИЕ В СИСТЕМЕ ОСТАТОЧНЫх КЛАССОВ С ИСПОЛьЗОВАНИЕМ ПОЛЕй ГАЛУА GF(p)
N.I. Chervyakov, M.Gr. Babenko, P.A. Lyakhov, I.N. Lavrinenko, A.M. Lyagin
MULTIPLICATION AND DIVISION IN THE RESIDUE NUMBER SYSTEM
USING GALOIS FIELDS GF(p)
Предложен алгоритм умножения и деления в системе остаточных классов, основанный на теории полей Галуа GF(^). Применение полей Галуа GF(^) для решения проблем арифметического умножения и деления устраняет многие ограничения существующих алгоритмов. Преимущество предложенного алгоритма заключается в том, что он не имеет ограничений на делимое и делитель, не использует обобщенную позиционную систему счисления и расширение системы остаточных классов.
КОМПЬЮТЕРНАЯ АРИФМЕТИКА; СИСТЕМА ОСТАТОЧНЫХ КЛАССОВ; МОДУЛЯРНАЯ АРИФМЕТИКА; ПОЛЯ ГАЛУА; ТЕОРИЯ ЧИСЕЛ; ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ.
The current paper presents an algorithm of multiplication and division in the residual classes based on the theory of Galois fields GF(^). The use of Galois fields GF(^) to solve the problems of arithmetic multiplication and division eliminates a lot of limitations of existing algorithms. The advantage of the proposed algorithm is that it has no restrictions on the dividend and the divisor and it does not use the generalized positional notation and the expansion of the residue number systems.
COMPUTER ARITHMETIC; RESIDUE NUMBER SYSTEM; MODULAR ARITHMETIC; GALOIS FIELD; NUMBER THEORY; PARALLEL COMPUTING.
Проблема деления в СОК в общем виде привлекает внимание многих исследователей при разработке высокопроизводительных многомодульных арифметико-логических устройств (АЛУ). Цифровые системы, построенные на основе арифметики СОК, могут сыграть важную роль в высокоскоростных системах обработки данных в режиме реального времени, с поддержкой параллельной обработки целочисленных данных [1].
Некоторые алгоритмы деления в СОК
в общем случае были разработаны ранее. Эти алгоритмы можно разделить на две категории: с использованием умножения и с использованием вычитания [2, 3]. Большинство алгоритмов на основе умножения предварительно вычисляют обратную величину делителя, после чего эта величина умножается на делимое. Алгоритмы на основе вычитания используют вычитание кратных делителя из делимого до тех пор, пока полученный результат не будет меньше делителя. Некоторые известные алго-
ритмы деления в СОК на основе умножения изложены в [4—8]. Все эти алгоритмы используют преобразование в обобщенную позиционную систему счисления (ОПСС) для нахождения обратной величины делителя и сравнения чисел. Кроме того, эти алгоритмы являются медленными, т. к. требуют выполнения большого количества арифметических действий. Некоторые алгоритмы на основе вычитания представлены в [9, 10]. Эти алгоритмы не требуют вычислений в ОПСС, однако используют некоторые другие немодульные операции [11, 12]. Алгоритм с вычитанием, представленный в [10], кажется наиболее привлекательным для применения на практике, поскольку использует эффективный метод проверки четности для сравнения и обнаружения переполнения диапазона. Большинство существующих алгоритмов обладают различными недостатками, что делает их менее пригодными для решения задачи деления в СОК.
Анализ известных алгоритмов деления в СОК показывает, что большинство из них работает на основе метода спуска Ферма и итераций Ньютона, каждая из которых содержит трудные операции: масштабирования, расширения, округления и другие, включающие большое количество арифметических действий.
Так как эти методы являются итерационными, то их сравнение можно провести по двум критериям:
по общему количеству выполненных итераций;
по количеству операций, выполненных за одну итерацию
Сравнительная оценка по количеству итераций, выполненных, в алгоритмах Ферма и Ньютона приведена на основе компьютерного моделирования, результаты которого показаны на рис. 1 и 2.
Вычислительные средства, построенные на основе арифметики системы остаточных классов (СОК), могут сыграть важную роль в высокоскоростных и надежных системах обработки данных в режиме реального времени, с поддержкой параллельной обработки целочисленных данных. Операции сложения, вычитания и умножения,
называемые модульными операциями, могут быть реализованы очень быстро, без распространения межразрядных переносов. К немодульным относятся операции деления, сравнения чисел, определения знака, определения переполнения динамического диапазона и др. Любое улучшение скорости этих медленных операций значительно улучшит производительность многомодульных арифметико-логических устройств.
В десятичной арифметике логарифмы часто используются для умножения и деления. В СОК используется аналогичный метод, называемый индексными вычислениями [13]. Использование индексного преобразования над полем Галуа ОР(р) сводит операции умножения и деления к операциям сложения и вычитания, соответственно. Операция умножения является модульной и поэтому может быть реализована в СОК как сложение. С точки зрения аппаратной реализации, сложение в СОК реализуется легче, чем умножение [13, 14]. Деление, напротив, является немодульной операцией в СОК, поэтому использование индексных преобразований над ОР(р) значительно улучшит время выполнения операции и снизит аппаратурные затраты.
При построении умножителей, работающих в модулярной арифметике, можно воспользоваться индексным или «дискретно-логарифмическим» представлением операндов и заменить операцию модулярного умножения операцией модулярного сложения индексов или дискретных логарифмов. Индексное представление модулярного числа основывается на понятии первообразного «корня по простому модулю». Таким корнем является целое число, возведение которого в степень 1, 2, ..., р— 1 дает неповторяющиеся вычеты по модулю
[13].
Индексный метод позволяет получить очень простую реализацию с помощью метода, аналогичного методу вычисления логарифмов. Умножители по модулю р. реализуются с помощью табличного поиска при малом р. (5 бит и менее) и индексного сложения при больших р. (6—10 бит)
[14]. Поэтому в тех случаях, когда диапазон обрабатываемых данных лежит в преде-
лах 6—10 бит, целесообразно использовать умножители и деления на основе индексного исчисления. Однако индексное исчисление может быть использовано только в том случае, когда модуль р. — простое число.
На практике встречаются также случаи, когда модуль р . — произвольное число, поэтому появляется необходимость разработать эффективные методы умножения, пригодные при любом модуле, независимо от того, является ли последний простым числом или нет. Так, например, если реализовать умножитель по модулю р .= 249, который не является простым числом, т. к. 249 = 83-3, то непосредственное использование индексного счисления невозможно. Так как числа 83 и 3 являются простыми, то возможно индексное исчисление по разложенным модулям.
При умножении (делении) по модулю р. сначала определяются индексы чисел, затем эти индексы складываются (вычитаются) по модулю р .—1 и по обратной таблице определяется окончательный результат
[11, 12, 15].
Если модуль не является простым, то необходимо разложить его на меньшие модули, провести вычисления с помощью обычных методов, а затем вновь перейти к
исходному модулю. Метод индексного исчисления эффективен при обработке данных 6—10 бит и когда модуль представляет собой простое число [14].
Сравнительная оценка общего количества итераций, выполняемых в алгоритмах Ферма и Ньютона, приведена на рис. 1 и 2.
На рис. 1 приведена сравнительная оценка в случае, когда значение делителя фиксировалось, а значение делимого менялось. На рис. 2 наоборот, неизменным оставалось значение делимого, делитель принимал различные значения.
Проведенная сравнительная оценка показала, что количество итераций метода Ферма растет вместе с ростом разницы между разрядностями делимого и делителя. Количество итераций метода Ньютона от этого не зависит. Поэтому, если разница между разрядностями делимого и делителя является достаточно большой, то в этом случае хороший результат дает применение метода Ньютона. Однако если разница небольшая, то выгоднее применять для выполнения операции деления метод Ферма.
Количество операций в каждой итерации в основном определяются операциями расширения и масштабирования.
Операция масштабирования состоит в выполнении деления с нулевым остатком
о;
Рис. 1. Оценка количества итераций методов Ферма и Ньютона в зависимости от разрядности делимого
к
Рис. 2. Оценка количества итераций методов Ферма и Ньютона в зависимости от разрядности делителя
(Ъ вычитаний и Ъ сложений, где Ъ — количество модулей СОК, по которым проводится масштабирование).
Операции расширения выполняются на основе метода Гарнера, который содержит г операций вычитания и г операций умножения, где г — количество модулей исходной СОК.
Трудность выполнения операций модулярного деления, связанная с итерационными процессами, наводит на мысль об исключении итераций при делении изоморфизмом, позволяющем операцию деления заменить операцией вычитания остатков делимого и делителя как разность их остатков.
В настоящей статье рассматривается очень быстрый алгоритм деления в СОК с использованием индексов в ОБ(р). Улучшенный алгоритм обладает следующими свойствами: очень быстр по сравнению с известными алгоритмами, не использует предварительную оценку частного, обратную величину для делителя и операцию расширения базы СОК.
Постановка задачи
Модулярная арифметика обладает большими возможностями обработки данных
за счет дробления операндов на несколько более мелких остатков и независимого параллельного выполнения арифметических операций сложения, вычитания и умножения с остатками.
Большой интерес к системе остаточных классов в последнее время обусловлен внедрением в цифровых системах микроэлектроники с высокой синхронизирующей частотой и низким потреблением энергии. Поскольку система остаточных классов не является взвешенной системой счисления, то операция деления, включающая такие операции, как сравнение, расширение, масштабирование и другие, не может считаться простой. Все известные алгоритмы деления характеризуются использованием итерационных принципов, что существенно понижает способность обработки данных. Для сокращения времени выполнения операции деления желательно исключить итерации. Это можно реализовать с помощью полей Галуа. Для этого необходимо использовать изоморфизм, который позволяет операцию деления заменить операцией вычитания остатков делимого и делителя как разность их остатков. В данной работе предлагается алгоритм модулярного деления без использования итерационных процессов.
Индексы в полях Галуа GF(^)
Число I, являющееся решением сравнения qx = A(mod p), называется индексом числа A и обозначается I = ind A. Первообразный корень q называется основанием индекса. Для нахождения индекса числа A по модулю p надо найти первообразный корень q и затем найти решение этого сравнения для данного первообразного корня.
Пример 1. Вычислить индексы по модулю 7 чисел 0, 1, 2, 3, 4, 5, 6. Первообразные корни числа 7 суть 3 и 5.
Решение. Примем основание q = 3. Вычислим 3х для x = 0, 1, 2, 3, 4, 5, 6.
30 = 1 mod 7, 31 = 3 mod 7, 32 = 2 mod 7,
33 = 6 mod 7, 34 = 4 mod 7, 35 = 5 mod 7, 36 = 6 mod 7.
Из этих сравнений следует, что
ind 1 = 0, ind 2 = 2, ind 3 = 1, ind 4 = 4, ind 5 = 5, ind 6 = 3.
Аналогично, индексы по первообразному корню 5:
ind 1 = 0, ind 2 = 4, ind 3 = 5, ind 4 = 2, ind 5 = 1, ind 6 = 3.
Антииндексом числа I называется число а, такое что
I = ind а или а = ind—1I.
Если антииндекс обозначить через N(I), то N(ind а) = а.
П р и м е р 2. Вычислить антииндексы по модулю 7 чисел 0, 1, 2, 3, 4, 5.
Р е ш е н и е . В предыдущем примере приведены индексы чисел от 0 до 6, которые равны 0, 1, 2, 3, 4, 5. Естественно, что число нуль не может иметь индекса, потому что нет такого показателя степени, возведя в которую конечное, отличное от нуля основание, можно было бы получить нуль.
Первообразный корень 3:
N(0) = 1, N(1) = 3, N(2) = 2, N(3) = 6, N(4) = 4, N(5) = 5.
Первообразный корень 5:
N(0) = 1, N(1) = 5, N(2) = 4, N(3) = 6, N(4) = 2, N(5) = 3.
При помощи индексов можно вычис-
Таблица 1
Индексы по модулю 7
I q
3 5
0 — —
1 0 0
2 2 4
3 1 5
4 4 2
5 5 1
6 3 3
лять умножение, деление, возведение в степень.
Пример 3. Вычислить выражение аЬ3
с =
k ч
(mod p),
где а = 2, b = 5, k =3, d = 4, p = 7.
Решение.
1. Находим индексы величин, входящих в вычисляемое выражение, приняв первообразный корень равным 5.
Из табл. 1 индексов по модулю 7 находим:
ind 2 = 4, ind 5 = 1, ind 3 = 5, ind 4 = 2.
2. Вычисляем индекс результата:
ind с = 4 + 1-3 - 5-2 - 2(mod 6) = 1(mod 6).
3. Находим антииндекс 1: N(1) = 5.
Непосредственное вычисление показывает, что
2 • 53
с = —-— (mod 7) = 5.
32 • 4
Конечные поля Галуа бывают двух типов: простые поля GF(p) и полиномиальные поля GF(p"), где p — простое число, n — целое положительное. Все поля Галуа обладают свойством: все ненулевые элементы могут быть построены с использованием примитивного элемента, который будем обозначать g. Это свойство может быть использовано при делении над полем GF(p). Свойство определяется следующим образом [16]:
если p — любое простое число, а g — любой примитивный корень в GF(p), то для
каждого целого а, взаимно простого с р, существует единственное целое ., обозначаемое I = тё а, такое что
а = |£|р, 0 < I < р-1. (1)
Индексы над полем ОБ(р) обладают следующими важными свойствами:
(1) та 1 = 0,
(2) т&(аЪ) = ¡таа+таД^,
(3) т&ак = \к-\п6.а[1г1,
(4) 1пё£а= \indg + таД—1, где £ — любой другой примитивный корень.
В тех случаях, когда сумма индексов превышает самое большое значение в ОБ(р) используется теорема Ферма. При этом:
если р — простое число, то
|ар|р = |а|р, для всех целых а; (2)
если р простое число и а — целое, то
к-1р = 1; (3)
если р — простое число, к и а — целые числа, то
вычисления частного
а
= а
(4)
В СОК проблема арифметического деления делится на три категории:
деление с нулевым остатком (ДН); масштабирование; деление в общем случае. Деление с нулевым остатком и масштабирование применяются для ограниченного круга приложений [17]. Для деления с нулевым остатком необходимо знать априори, что остаток равен нулю. Масштабирование реализует деление только на фиксированный делитель, при этом делитель может представляться в виде произведения нескольких модулей. Таким образом, общее деление используется, когда неизвестно априори, что делимое делится нацело на делитель, и когда неизвестно, что делитель принадлежит множеству пригодных для масштабирования значений. Эффективный алгоритм деления на основе приближенного метода рассмотрен в работах [18, 19].
Алгоритм деления с нулевым остатком над полем Галуа GF(^)
Деление с нулевым остатком требует
когда извест-
но априори, что остаток равен нулю. Поле Галуа ОБ(р) может быть использовано весьма эффективно при решении проблемы деления с нулевым остатком. Так, если {Чп} = {1, 2, ..., р—1} — мультипликативная группа ОБ(р), {/и} = {0, 1, ..., р—2} - ассоциативная изоморфная группа с обозначением чп = \д'"\ , где £ — примитивный элемент
I 1р
ОБ(р), а чх и чу — два целых числа, таких что Ч делит ч , тогда деление с нулевым остат-
ком
может быть определено как
= £ у|р-1 = \х +(р-1-у \ 1 ё '1
р р
(5)
Если р-1 = П ру, так что (р0, рх, ..., р^)
У=0
взаимно простые, тд.х = (х1, х2, ..., х) и тёу = (у1, у2, ..., у) и у делит х, арифмети-
х
ческое деление но как
х
£
х
у р
У
(| х1 -у1,
может быть определе-
х2 -У2 .
,\хг -Уг|р )
(6)
П р и м е р 4. Пусть простое число р = 43 и £ = 3. Группа{#п} = {1, 2, ..., 42} — ассоциативная изоморфная группа {/п} = {0, 1, ..., 41}. Так как р—1 = 42, возьмем модули р1= 2, р2 = 3 и р3 = 7. Любое целое .п может быть единственным образом представлено в виде тройки Гп = ФХ ^ ^7). Множество всех троек образует группу {гп}. Изоморфизм между группами {#п} и {гп} показан в табл. 2.
В табл. 3 показан обратный переход к ОБ(43).
Вычисление табличных значений покажем для чп = 27. Первый индекс вычисляется следующим образом:
. = т<127 = 3, то есть 27 = Ы = |33| .
п 3 ' I 143 I 143
Тройка, полученная из .п:
Гп = (№, Ш = (|3|2, |3|э, |3|7) = (1, 0, 3).
В табл. 2 чп = 27 соответствует запись (1, 0, 3) = (1, 00, 011)2. Результат записан
х
р
Ч
х
Ч
р
У
р
р
Таблица 2
Изоморфизм между группами {дп} и {гп} для СБ(43), р = 43, 8 = 3, р1 = 2, р2 "= 3 и р3 = 7
а 1п г п а п г п а п г п а п г п а п г п
1 000001 (0, 0, 0) 0 00 000 10 001010 (0, 1, 3) 0 01 011 19 010011 (1, 1, 6) 1 01 110 28 011100 (1, 2, 5) 1 10 101 37 100101 (1, 1, 0) 1 01 000
2 000010 (1, 0, 6) 1 00 110 11 001011 (0, 0, 2) 0 00 010 20 010100 (1, 1, 2) 1 01 010 29 011101 (1, 2, 6) 1 10 110 38 100110 (0, 1, 4) 0 01 100
3 000011 (1, 1, 1) 1 01 001 12 001100 (1, 1, 5) 1 01 101 21 010101 (0, 0, 1) 0 00 001 30 011110 (1, 2, 4) 1 10 100 39 100111 (1, 0, 5) 1 00 101
4 000100 (0, 0, 5) 0 00 101 13 001101 (0, 2, 4) 0 10 100 22 010110 (1, 0, 1) 1 00 001 31 011111 (0, 1, 6) 0 01 110 40 101000 (0, 1, 1) 0 01 001
5 000101 (1, 1, 4) 1 01 100 14 001110 (0, 2, 6) 0 10 110 23 010111 (0, 1, 2) 0 01 010 32 100000 (1, 0, 2) 1 00 010 41 101001 (0, 0, 6) 0 00 110
6 000110 (0, 1, 0) 0 01 000 15 001111 (0, 2, 5) 0 10 101 24 011000 (0, 1, 5) 0 01 101 33 100001 (1, 1, 3) 1 01 011 42 101010 (1, 0, 0) 1 00 000
7 000111 (1, 2, 0) 1 10 000 16 010000 (0, 0, 3) 0 00 011 25 011001 (0, 2, 1) 0 10 001 34 100010 (1, 2, 2) 1 10 010
8 001000 (1, 0, 4) 1 00 100 17 010001 (0, 2, 3) 0 10 011 26 011010 (1, 2, 3) 1 10 101 35 100011 (0, 0, 4) 0 00 100
9 001001 (0, 2, 2) 0 10 010 18 010010 (1, 2, 1) 1 10 001 27 011011 (1, 0, 3) 1 00 011 36 100100 (0, 2, 0) 0 10 000
Таблица 3
Обратное преобразование в СБ(43), р = 43, g = 3, р1 = 2, р2 = 3 и р3 = 7
г п ап г п ап г п ап г п ап г п ап
(0, 0, 0) 0 00 000 = 0 1 (0, 1, 2) 0 01 010 = 10 23 (0, 2, 4) 0 10 100 = 20 13 (1, 0, 6) 1 00 110 = 38 2 (1, 2, 1) 1 10 001 = 49 18
(0, 0, 1) 0 00 001 = 1 21 (0, 1, 3) 0 01 011 = 11 10 (0, 2, 5) 0 10 101 = 21 15 (1, 1, 0) 1 01 000 = 40 37 (1, 2, 2) 1 10 010 = 50 34
(0, 0, 2) 0 00 010 = 2 11 (0, 1, 4) 0 01 100 = 12 38 (0, 2, 6) 0 10 110 = 22 14 (1, 1, 1) 1 01 001 = 41 3 (1, 2, 3) 1 10 101 = 51 26
(0, 0, 3) 0 00 011 = 3 16 (0, 1, 5) 0 01 101 = 13 24 (1, 0, 0) 1 00 000 = 32 42 (1, 1, 2) 1 01 010 = 42 20 (1, 2, 4) 1 10 100 = 52 30
(0, 0, 4) 0 00 100 = 4 35 (0, 1, 6) 0 01 110 = 14 31 (1, 0, 1) 1 00 001 = 33 22 (1, 1, 3) 1 01 011 = 43 33 (1, 2, 5) 1 10 101 = 53 28
(0, 0, 5) 0 00 101 = 5 (0, 2, 0) 0 10 000 = 16 6 (1, 0, 2) 1 00 010 = 34 2 (1, 1, 4) 1 01 100 = 44 (1, 2, 6) 1 10 110 = 54 9
(0, 0, 6) 0 00 110 = 6 1 (0, 2, 1) 0 10 001 = 17 5 (1, 0, 3) 1 00 011 = 35 7 (1, 1, 5) 1 01 101 = 45 2
(0, 1, 0) 0 01 000 = 8 (0, 2, 2) 0 10 010 = 18 (1, 0, 4) 1 00 100 = 36 (1, 1, 6) 1 01 110 = 46 9
(0, 1, 1) 0 01 001 = 9 0 (0, 2, 3) 0 10 011 = 19 7 (1, 0, 5) 1 00 101 = 37 9 (1, 2, 0) 1 10 000 = 48
4
в двоичной форме и содержит 1 бит, 2 бита и 3 бита для записи значения по mod 2, mod 3 и mod 7 соответственно.
Вычитание по модулю p выполняется одновременно по всем модулям
p -1 = Пр, .
i=1
Существует множество вариантов, из которых можно выбрать набор модулей для СОК систем. Скорость и эффективность деления нацело увеличивается, если подбирать модули на основе следующих критериев:
1) р -1 = ПР;
i =1
2) они должны быть взаимно простыми (p„pj) = 1, если i * j;
r
3) Y 1og(Pj - !) ^ min.
j=1
Пример 5. При р = 43, g = 3, p1= 2, p2 = 3 и p3 = 7. Найти 36. Это задача деления с нулевым остатком.
По табл. 2 получаем:
для 36: ^36 = (0, 2, 0); для 2: та32 = (1, 0, 6).
Используя вычитание по модулям 2, 3 и 7, получаем
1пё3 (361 = (0,2,0) - (1,0,6) = (1,2,1),
Из табл. 3 следует, что результат деле-36
ния чисел — равен
(1,2,1) = (1 10 001)2 = 49.
Схема для реализации процесса с нулевым остатком представлена на рис. 3. Реализация операции сложения проще, чем операции вычитания, поэтому используется дополнительный код делителя, позволяющий заменить операцию вычитания операцией сложения.
На вход ЬиТр. поступает двоичный код делимого, а на вход ЬиТ2р. — двоичный код делителя. На выходе ЬиТр. формируется прямой код индекса делимого, а на вы-
kl
Рис. 3. Деление без остатка по модулям СОК в ОБ(р) при п двоичных разрядах
ходе LUT2p. формируется дополнительный код индекса делителя. Индексы делимого и делителя суммируются модульными сумматорами Е и поступают на вход LUTp,, где
формируется частное X.
На рис. 3 показаны конкретные значения индексов и антииндексов для примера 5.
Масштабирование чисел может быть выполнено как последовательность решения задач деления с нулевым остатком, если делитель является произведением некоторых модулей, причем порядок деления с нулевым остатком не имеет значения.
Общее арифметическое деление над полем Галуа GF(p) используется в случае, когда заранее неизвестно, какой делитель представляет кратное число делимого, или когда делимое есть произведение некоторых модулей. Общая проблема деления — может быть сведена к процессу масштабирования —, где Y удовлетворяет следующим условиям:
1. Y' >Y
2. Y' является произведением некоторых модулей СОК.
Выбор Y' подробно рассмотрен в [11].
Оценим вычислительную сложность предлагаемого алгоритма и сравним с известным алгоритмом, предложенным в работе [4]. Анализ сложности алгоритма базируется на числе модулярных вычислений и логической глубине (количество последовательно соединенных модульных операций). Вычислительная сложность определяется вычислением в полях Галуа GF(p), которые выполняются параллельно. В представленном алгоритме логическая глубина равна трем и имеет представление LUT(ll)P ^^pi ^ LUT.3p, при этом длительность выполнения операции деления tg = t[ + t2 + t'1, где t[ = t" = O(log p) — такт синхронизации доступа к памяти,
t2 = O |log p. "| j — такт синхронизации
модульного сложения. Разрядность данных R = O ([ log pi |). Реализация таблиц LUT{12) требует памяти объемом M = п 2n.
В известном алгоритме [4] используется одна операция сложения, одна опе-
рация деления и процедура расширения базы, состоящая в нахождении остатков представления числа по модулю делителя. Эта проблема по сути межмодульная и в классическом подходе ее сложность линейно зависит от числа модулей, т. к. она включает все остатки текущего представления и вычисляется последовательно по алгоритму Гарнера в котором необходимы ряд шагов того же порядка, что и r, где r — количество модулей СОК. При этом каждый шаг состоит из операций сложения и умножения, сложность которых составляют O + 2r • ^ |logpi] j. Логическая
глубина равна 2r + 2.
Вычислительная сложность предложенного метода без учета доступа к памяти примерно в n раз меньше, чем известного. Логическая глубина представленного метода равна трем, а известного — 2r + 2. Современная вычислительная база позволяет приблизить время доступа к времени вычисления выполнения модульных операций в СОК.
В современных ПЛИС Xilinx время распространения сигнала через LUT-таблицу составляет около 0,5 нс, через блок метки ускоренного переноса — 0,1 нс, а время переключения триггера — до 0,5 нс.
Время суммирования двух 16-разрядных операндов составляет 5 нс.
Время доступа ROM на основе таблиц, близкое к 10 нс [20].
Программируемые ПЗУ семейства XC 4000 решают функции комбинационного устройства, поэтому обладают высокой скоростью.
При использовании таблиц для суммирования двух операндов, реализованных на базе ПЗУ, общая емкость ПЗУ представляется в виде выражения ¥ПЗУ = I ^ p. log2 д. I .
V <=1 J tit
Быстродействие сумматоров определяется максимальным модулем pi .
При нежестком допущении приведем сравнительную оценку по быстродействию предлагаемого алгоритма с известными.
Быстродействие предлагаемого алгоритма tA определяется как tA = tA(LUT(12)) + t2 +
+ tA (LUT3) = 10 нс + 5 нс + 10 нс = 25.
Быстродействие известных алгоритмов в основном определяется операцией расширения, которая базируется на алгоритме Гарнера и включает r операций вычитания и n операций умножения. Тогда быстродействие одной итерации известных алгоритмов t 'A. определяется как t 'A = nta + nty. Для нашего случая n = 3, ta = 5 не и ty = 0,5 не (в качестве умножителей на константу используются LUT-таблицы), тогда t 'A. = 3 • 5 + 3 • 1,5 = 15 + 4,5 = 19,5 нс.
При делении чисел разрядностью 6—10 бит необходимо (рис. 1 и 2) 6—8 итераций, тогда быстродействие известных алгоритмов t 'A « (6 - 8) • 19,5 нс = (117 - 156) нс.
Соотношение « (5 - 6) в пользу
tA
предложенного алгоритма арифметического деления над полем Галуа. При увеличении количества модулей p,, соотношение
t—A. растет, и уже при n > 5 выигрыш в ско-tA
рости вычислений представленного метода выше, чем известного.
Предложенный метод модулярного деления на основе использования индексов легко реализуем на специальных наборах оснований СОК и может дать значительное преимущество не только в тех приложениях, в которых основная доля вычислений приходится на точное умножение, возведение в степень в сочетании со сложением и вычитанием, но и в тех приложениях, в которых часто появляется необходимость в делении, сравнении и определении знака числа.
Рассмотренный алгоритм над полем Галуа ОБ(р) обеспечивает эффективность общего деления в системе остаточных классов. Полученные новые результаты эффективного выполнения модулярного деления в диапазоне 6—10 бит являются развитием теории математических основ разработки и проектирования точных и безошибочных теоретико-числовых арифметико-логических устройств процессоров, функционирующих в СОК.
Исследования выполнены при финансовой поддержке РФФИ в рамках научного проекта № 13-07-00478-а и ФЦП № 14.В37.21.1128.
СПИСОК ЛИТЕРАТУРЫ
1. Claudio E.D., Piazza F., Orlandi G. Fast combinatorial RNS processors for DSP applications // IEEE Trans. Comput. 1995. Vol. 44. No. 5. Pp. 624-633.
2. Waser S., Flynn M.J. Introduction to Arithmetic for Digital System Designers. Holt, Rinehart Winston. New York, 1982.
3. Taylor F.J. Residue arithmetic: A tutorial with examples // IEEE Comput. 1984. Vol. 17. No. 5. Pp. 50-62.
4. Червяков Н.И., Давриненко И.Н., Даври-ненко С.В., Мезенцева О.С. Методы и алгоритмы округления, масштабирования и деления чисел в модулярной арифметике // 50 лет модулярной арифметике. Юбилейная междунар. науч.-техн. конф. Сб. трудов. М., 2000. C. 291-310.
5. Chren W.A. A new residue number system division algorithm // Computers Math. Applic. 1990. Vol. 19. No. 7. Pp. 13-29.
6. Banerji D.K., Cheung T.Y., Ganesan V. A high-speed division method in residue arithmetic // IEEE Symp. Comput. Arithmetic. 1981. No. 5. Pp. 158-164.
7. Hits M.A., Kaltofen E. Integer division in residue number systems // IEEE Trans. Comput. 1995. Vol. 44. No. 8. Pp. 983-989.
8. Kinoshita E., Kosako H., Kojima Y. General division in the symmetric residue number system // IEEE Trans. Comput. 1973. Vol. 22. Pp. 134-142.
9. Lin M.L., Leiss E., McInnis B. Division and sign detection algorithm for residue number systems // Computers Math. Applic. 1984. Vol. 10. No. 4/5. Pp. 331-342.
10. Radhakrishnan D., Yuan Y. Novel approaches to the design of VLSI RNS multipliers // IEEE Trans. Circuits and System. 1992. Vol. 39. No. 1. Pp. 52-57.
11. Hung C., Parhami B. Fast RNS division algorithms for fixed divisors with application to RSA encryption // Information Processing Letters. 1994. No. 51. Pp. 163-169.
12. Hung C., Parhami B. An approximate sign detection method for residue numbers and its application to RNS division // Computers Math. Applic. 1994. Vol. 27. No. 4. Pp. 23-35.
13. Акушский И.Я., Юдицкий Д.И. Машинная арифметика в остаточных классах. М.: Сов. радио, 1968. 440 с.
14. Содерстренд М.А., Верниа К. Недорогой быстродействующий умножитель по модулю и его применение в арифметических устройствах на основе системы счисления в остаточных
классах. ТИИЭР, 1980. № 4. Т. 68.
15. Julien G.A. Residue number scaling and other operations using ROM arrays // IEEE Trans. on Comput. 1978. Vol. 27. No. 4. Pp. 325-336.
16. Beyer W. CRC-Standard Mathematical Tables and Formulae. Edition 91-101. CRC Press, 1991.
17. Talameh S., Siy P. Arithmetic Division in RNS Using Galois Field GF(p) // Computers and Mathematics with Applications. 2000. Vol. 39. Pp. 227-238.
18. Червяков Н.И. Методы, алгоритмы и
техническая реализация основных проблемных операций, выполняемых в системе остаточных классов // Инфокоммуникационные технологии. 2011. № 4. C. 4-12.
19. Червяков Н.И., Ляхов П.А. Метод определения знака числа в системе остаточных классов на основе приближенных вычислений // Нейрокомпьютеры: разработка, применение. 2012. № 12. C. 56-64.
20. Alia G., Martinelli E. Neuron: a Rom based RNS oligital neuron // Neural Networks. 2005. Pp. 174-189.
REFERENCES
1. Claudio E.D., Piazza F., Orlandi G. Fast combinatorial RNS processors for DSP applications. IEEE Trans. Comput, 1995, Vol. 44, No. 5, Pp. 624-633.
2. Waser S., Flynn M.J. Introduction to Arithmetic for Digital System Designers. Holt, Rinehart Winston. New York, 1982.
3. Taylor F.J. Residue arithmetic: A tutorial with examples, IEEE Comput., 1984, Vol. 17, No. 5, Pp. 50-62.
4. Chervyakov N.I., Lavrinenko S.V., Mezen-tseva O.S. Metody i algoritmy okrugleniya, masshtabirovaniya i deleniya chisel v modulyarnoy arifmetike, 50 let modulyarnoy arifmetike. Yubileynaya mezhdunarodnaya nauchno-tekhnicheskaya konfe-rentsiya, Moscow, 2000, Pp. 291-310. (rus)
5. Chren W.A. A new residue number system division algorithm, Computers Math. Applic, 1990, Vol. 19, No. 7, Pp. 13-29.
6. Banerji D.K., Cheung T.Y., Ganesan V. A high-speed division method in residue arithmetic, IEEE Symp. Comput. Arithmetic, 1981, No. 5, Pp. 158-164.
7. Hits M.A., Kaltofen E. Integer division in residue number systems, IEEE Trans. Comput., 1995, Vol. 44, No. 8, Pp. 983-989.
8. Kinoshita E., Kosako H., Kojima Y. General division in the symmetric residue number system, IEEE Trans. Comput., 1973, Vol. 22, Pp. 134-142.
9. Lin M.L., Leiss E., McInnis B. Division and sign detection algorithm for residue number systems, Computers Math. Applic, 1984, Vol. 10, No. 4/5, Pp. 331-342.
10. Radhakrishnan D., Yuan Y. Novel approaches to the design of VLSI RNS multipliers, IEEE Trans. Circuits and System, 1992, Vol. 39, No. 1, Pp. 52-57.
11. Hung C., Parhami B. Fast RNS division
algorithms for fixed divisors with application to RSA encryption, Information Processing Letters, 1994, No. 51, Pp. 163-169.
12. Hung C., Parhami B. An approximate sign detection method for residue numbers and its application to RNS division, Computers Math. Applic, 1994, Vol. 27, No. 4, Pp. 23-35.
13. Akushskiy I. Ya., Yuditskiy D.I. Mashinnaya arifmetika v ostatochnykh klassakh. Moscow: Sovetskoye radio Publ., 1968. 440 p. (rus)
14. Soderstrend M.A., Vernia K. Nedorogoy bystrodeystvuyushchiy umnozhitel po modulyu i yego primeneniye v arifmeticheskikh ustroystvakh na osnove sistemy schisleniya v ostatochnykhklassakh, TIIER, 1980, No. 4, Vol. 68. (rus)
15. Julien G.A. Residue number scaling and other operations using ROM arrays, IEEE Trans. on Comput., 1978, Vol. 27, No. 4, Pp. 325-336. (rus)
16. Beyer W. CRC-Standard Mathematical Tables and Formulae. Edition 91-101, CRC Press, 1991.
17. Talameh S., Siy P. Arithmetic Division in RNS Using Galois Field GF(p), Computers and Mathematics with Applications, 2000, Vol. 39, Pp. 227-238.
18. Chervyakov N.I. Metody, algoritmy I tekhnicheskaya realizatsiya osnovnykh problemnykh operatsiy, vypolnyayemykh v sisteme ostatochnykh klassov, Infokommunikatsionnyye tekhnologii, 2011, No. 4, Pp. 4-12. (rus)
19. Chervyakov N.I., Lyakhov P.A. Metod opredeleniya znaka chisla v sisteme ostatochnykh klassov na osnove priblizhennykh vychisleniy, Neyrokompyutery: razrabotka, primeneniye, 2012, No. 12, Pp. 56-64. (rus)
20. Alia G., Martinelli E. Neuron: a Rom Based RNS Oligital Neuron, Neural Networks, 2005, Pp. 174-189.
4
ЧЕРВЯКОВ Николай Иванович - заведующий кафедрой прикладной математики и математического моделирования Института математики и естественных наук Северо-Кавказского федерального университета, профессор, доктор технических наук.
355029, Россия, г. Ставрополь, пр. Кулакова, д. 2.
E-mail: [email protected]
CHERVYAKOV, Nikolay I. North-Caucasus Federal University.
355029, Kulakov Ave. 2, Stavropol, Russia.
E-mail: [email protected]
БАБЕНКО Михаил Григорьевич - доцент кафедры высшей алгебры и геометрии Северо-Кавказского федерального университета, кандидат физико-математических наук.
355029, Россия, г. Ставрополь, пр. Кулакова, д. 2.
E-mail: [email protected]
BABENKO, Mikhail Gr. North-Caucasus Federal University.
355029, Kulakov Ave. 2, Stavropol, Russia.
E-mail: [email protected]
ЛЯХОВ Павел Алексеевич - доцент кафедры прикладной математики и математического моделирования Института математики и естественных наук Северо-Кавказского федерального университета, кандидат физико-математических наук.
355029, Россия, г. Ставрополь, пр. Кулакова, д. 2.
E-mail: [email protected]
LYAKHOV, Pavel A. North-Caucasus Federal University.
355029, Kulakov Ave. 2, Stavropol, Russia.
E-mail: [email protected]
ЛАВРИНЕНКО Ирина Николаевна - доцент кафедры высшей алгебры и геометрии Института математики и естественных наук Северо-Кавказского федерального университета, кандидат физико-математических наук.
355029, Россия, г. Ставрополь, пр. Кулакова, д. 2.
E-mail: [email protected]
LAVRINENKO, Irina N. North-Caucasus Federal University.
355029, Kulakov Ave. 2, Stavropol, Russia.
E-mail: [email protected]
ЛЯГИН Алексей Михайлович - доцент кафедры прикладной математики и математического моделирования Института математики и естественных наук Северо-Кавказского федерального университета, кандидат технических наук.
355029, Россия, г. Ставрополь, пр. Кулакова, д. 2.
E-mail: [email protected]
LYAGIN, Aleksey M. North-Caucasus Federal University.
355029, Kulakov Ave. 2, Stavropol, Russia.
E-mail: [email protected]
© Санкт-Петербургский государственный политехнический университет, 2014