Вычислительные технологии
Том 19, № 4, 2014
Методика выбора базисных оснований для рекурсивной модулярной арифметики
Р. А. Соловьёв, Д. В. ТЕльпухов Институт проблем проектирования в микроэлектронике РАН, Москва, Россия e-mail: [email protected], [email protected]
Соловьёв Р.А., Тельпухов Д.В. Методика выбора базисных оснований для рекурсивной модулярной арифметики // Вычислительные технологии. 2014. Т. 19, № 4. С. 99-106.
Предложена методика выбора базисных и рабочих оснований для рекурсивной модулярной арифметики, которая базируется на идее выразить систему модулей традиционной модулярной арифметики через систему субмодулей, имеющую меньшую размерность. Новое рекурсивное представление данных позволяет устранить часть известных недостатков традиционной модулярной арифметики. Рекурсивная модулярная арифметика в зависимости от выполняемых операций накладывает ограничения на систему модулей. Детально изучены эти ограничения и предложена методика построения модульного базиса для рекурсивной модулярной арифметики.
Ключевые слова: модулярная арифметика, система остаточных классов, конечные поля, китайская теорема об остатках, вычет.
Solovyev R.A., Telpukhov D.V. Methodology for basic selection in recursive residue number system // Computational Technologies. 2014. Vol. 19, No. 4. P. 99-106.
Recently, a new method for the representation of numbers in residue number system (RNS), called recursive residue number system (RRNS) was proposed. In this method, it becomes possible to represent large numbers using sets of modules with very small modules using the recursive decomposition. RRNS preserves all the advantages of traditional RNS related to parallel independent computations for each module. The method can increase the speed of computation by reducing complexity of arithmetic operations for each modular channel. But then RRNS increases the number of channels and imposes significant restrictions when choosing sets of modules. First-of-a-kind research on the choice of optimal sets of modules in RRNS is proposed in this paper. An algorithm for selecting a RRNS basis for the two given values: the required dynamic range (DR) and the maximum bit length of basic modules (MBLBM) (i. e. modules, which will be used for arithmetic operations in modular channels) are proposed in this paper. It is shown under which combinations of DR and MBLBM RRNS the proposed method has the advantage over traditional RNS. The graphs of data redundancy in RRNS and examples of RRNS for construction of sets of modules are presented. According to the results shown in the article it is appropriate to use MBLBM from 3 to 7 bits for typical tasks. Moreover, if DR is less than 64 bits, the most effective MRBM is from 3 up to 5 bits depending on the possible redundancy in the RRNS representation.
Keywords: modular arithmetic, residue number system, finite field, Chinese remainder theorem, remainder.
1. Введение в рекурсивную модулярную арифметику
Модулярная арифметика (система остаточных классов (СОК)) является непозиционной системой счисления. Представление числа в модулярной арифметике основано на понятии вычета и китайской теореме об остатках [1, 2]. Система остаточных классов определяется набором взаимно простых модулей (p^p2,... ,Рг,... ,pn) с произведением M = pi • p2^,... , •Рп так, что каждому целому числу x из отрезка [0; M — 1] ставится в соответствие набор вычетов (xi, x2,... , xn), где xi = x mod pi, x2 = x mod p2,... , xn = x mod pn. Китайская теорема об остатках при этом гарантирует взаимную однозначность представления для чисел из отрезка [0; M — 1].
Использование модулярной арифметики при проектировании специализированных вычислителей имеет преимущества, основными из которых являются параллелизм вычислений, возможность обнаружения и коррекции ошибок при выполнении арифметических операций и энергоэффективность вычислителей на базе СОК [3]. Получение этих преимуществ особенно важно для целого ряда новых приложений, в частности для активно развивающегося направления мобильных навигационных систем на основе распределённого множества сенсоров [4]. Известен также ряд недостатков: большие накладные расходы в виде преобразователей из позиционного кода в модулярный и обратно; представление модульных операций посредством операций двоичной арифметики, что приводит к избыточности оборудования при их реализации; неравномерность модульных вычислителей по сложности и времени выполнения операций.
Для преодоления части указанных недостатков был предложен новый подход к проектированию модулярных вычислителей, который получил название рекурсивная модулярная арифметика (РМА) [5]. Идея РМА основана на принципе глубокого распараллеливания модульных операций модулярной арифметики с основаниями pi, p2,... , pn посредством рекурсивного редуцирования модульных операций по каждому рабочему основанию pj (i < j < n) к модульным вычислениям по предшествующим основаниям pi,p2,... ,pi-i, имеющим то или иное технологическое преимущество, называемое базисным. При этом редукция допустима только при выполнении условия согласования вычислительных диапазонов по каждому рабочему модулю pj с вычислительными диапазонами по соответствующим комплексам базисных оснований.
2. Представление данных в рекурсивной модулярной арифметике
Пусть заданы система модулей (pi,p2,... ,pj,... ,pn) и некоторый вектор A = (ai, a2, ..., aj,..., an). Выразим ai через систему субмодулей (pi,i,pi,2,... ,pi,k), для которой Pi = pi,i ■ pi,2',..., •pi,k и значение ai строго меньше P^ Тогда ai = (ai,i, a^2,..., a^), и в этом случае вектор A можно представить в следующем виде: (ai, a2,... , ai-i, (ai,i, ai,2,..., ai,k), ai+i,..., an), где элемент ai заменён на соответствующий вектор.
Описанная процедура является основой при построении структуры РМА. Совокупность k младших модулей (qi, q2,... , qk) называется системой базовых модулей с произведением Q = qi ■ q2-,... , -qk. Все следующие модули (pi,p2,... ,pm) с произведением P = pi ■ p2',... , -pm называются рабочими и последовательно выражаются через предыдущие. Модуль pi выражается через вектор ri = (qi, q2,..., qk ), модуль p2 — через вектор r2 = (qi, q2,... , qk,pi) и т. д. Таким образом формируется рекурсивное представ-
ление каждого последующего модуля через предыдущие. Суммарное число модулей в системе п = к + т. Полученное преобразование представлено в формуле (1) и схематично изображено на рис. 1:
( _2_\
Г1
Г1
qi, q2, • • •,Qk, (qi, q2, ■■•, Qk), I qi, q2,. . ., Qk, (Qi,Q2, ...,qk)
V
(1)
/
Поясним процедуру рекурсивных преобразований на примере. Рассмотрим в качестве базисных модулей трёхбитные простые числа qi =5, q2 = 7. Очевидно, что вычетами по модулям 5 и 7, для которых Q = 5 • 7 = 35, можно однозначно представить любой вычет по модулю pi = 31. В то же время вычетами по модулям 5, 7 и 31, где вычеты по модулю 31 представимы по модулям 5 и 7, можно однозначно представить любой вычет по модулю p2 = 997. Динамический диапазон для заданной системы модулей M = P • Q = 5 • 7 • 31 • 997 = 1081 745.
Разложим число A = 1100, заданное в позиционной системе счисления, в вектор по обычному модулярному базису: A = (|1100|5, |1100|7, 1110013i, |1100|997) = (0,1,15,103). Далее разложим число A по рекурсивному базису: A = (|1100|5, |1100|7, (||1100|3i|5,
) , (||1100U5, I 11100199717, (| || 1100199713i I5, |||1100|997|3i|7))) = (0, 1, (0,1) ,
3i 17 )
||1100
(3,5, (0, 3))).
Количество бит, необходимых для представления числа 1100 в разных модулярных базисах, будет следующим:
Двоичный вид Модулярный базис Рекурсивный
модулярный базис 21 21 24
Очевидно, что каждый из первых к элементов представляется в виде одного числа. Элемент к + 1 содержит к вычетов, поскольку выражается через к остатков системы субмодулей: ак+1 = (ак+1д, ак+1,2,..., ак+1,к). Элемент под номером к + 2 содержит
Рис. 1. Представление чисел в рекурсивной системе вычетов для т = 2, т. е. при задании двух рабочих модулей
2к вычетов, так как выражается через к остатков системы субмодулей и к остатков вектора а^+ь Таким образом, продолжая рассуждения, можно заключить, что число элементов Ьг для вектора аг выражается формулой
1, г< к,
Ь 2г-к-1 ■ к, к < г < и.
Общее же число элементов Ь вектора А можно рассчитать, воспользовавшись формулой суммы геометрической прогрессии [6]:
i-n / 2™-fc — 1
L = £ Li =k 1 + =2n-k ■ k.
i=i ^ '
Количество бит, требуемых для представления числа в РМА, можно рассчитать по формуле
i<fc
B=2n-k ■ ^ riog2(qi-1) 1. (2)
i=i
При вычислениях в традиционной модулярной арифметике (ТМА) каналом, определяющим быстродействие модулярной структуры, вероятнее всего будет канал по модулю 997, так как производительность зависит от значения модуля. В РМА все вычисления будут проводиться по трёхбитным модулям 5 и 7, что позволит достичь более высоких показателей быстродействия. Кроме того, при использовании рекурсивных структур наблюдается большая степень распараллеливаемости и появляется регулярность.
Однако применение рекурсивной структуры при проектировании модулярных устройств накладывает ряд ограничений, которые приводят к усложнению устройств, выполненных по предлагаемой методологии. Рассмотрим эти ограничения.
Пусть задана система базисных модулей (pi,p2,... ,pm) и необходимо представить вычеты по модулю pm+i через вычеты по системе базовых модулей. Очевидно, что максимальный вычет по модулю pm+i МАХ = pm+i — 1. Зная это значение и последовательность выполняемых операций, можно рассчитать максимальное значение MAX результата арифметической операции по данному модулю. Очевидно, что для однозначного представления результата арифметических операций необходимо соблюдение неравенства MAX < Q, где Q = pi ■ p2-,... , -pm. Для остальных модулей расчёт производится аналогично.
В случае примера с базовыми модулями 2 и 3 Q = 2 ■ 3 = 6. Наименьшее простое число (конечно, после 2 и 3) есть 5 (МАХ = 4). Здесь мы не можем выполнить ни операцию сложения, так как 2 ■ МАХ > Q (8 > 6), ни, тем более, операцию умножения, так как МАХ2 > Q (16 > 6). Чтобы выполнить любую из арифметических операций (сложение или умножение), необходимо увеличить число Q (т. е. значения базисных модулей и/или их количество). Возьмём в качестве базисных модулей все взаимно простые трёхбитные числа 4, 5 и 7. В этом случае Q = 4 ■ 5 ■ 7 = 140. Чтобы выполнялось неравенство MAX < Q, для операции умножения необходимо выполнение условия МАХ2 < Q, или pi- i — 1 < y/Q (pi-i — 1 < 11.8). Таким образом, выбираем ближайшее к 7 простое число pi = 11. Далее совокупность рабочих модулей строится без каких-либо проблем с помощью аналогичного расчёта до тех пор, пока не будет достигнут требуемый вычислительный диапазон.
3. Сравнение ТМА и РМА
В предыдущем примере был рассмотрен РМА-базис (5, 7, (31, 997)), который покрывает динамический диапазон [0; 1081745). Однако сравнение его с модулярным базисом (5, 7, 31, 997) не является корректным, поскольку в традиционной модулярной арифметике базис строился бы исходя из принципа минимизации используемых модулей. Наиболее очевидным подходом в ТМА является стратегия последовательного выбора простых оснований вплоть до покрытия требуемого динамического диапазона. Например, для динамического диапазона 1 081 745 набор модулей в ТМА может быть следующим: (5, 7, 11, 13, 17, 19). Видно, что максимальный рабочий модуль в ТМА равен 19, тогда как в РМА он равен 7.
Базовые модули в РМА для заданного динамического диапазона можно выбирать по двум параметрам: максимальному значению старшего модуля и количеству базовых модулей. Для относительно небольших динамических диапазонов использование РМА может не дать существенного преимущества над ТМА. Например, для динамического диапазона 14 бит и разрядности базовых модулей 4 бита РМА будет иметь вид (7, 11, 13, (17)), тогда как ТМА — (2, 3, 5, 7, 11, 13). В этом случае старший модуль 13 в вычислениях один и тот же, однако накладные расходы на РМА больше, чем на ТМА.
Ниже представлено, при какой разрядности динамического диапазона (в битах) эффективнее применять РМА (расчёт сделан для случая, когда РМА поддерживает операцию умножения):
Максимальная разрядность
базовых модулей РМА 3 4 5 6 7 8 9
Разрядность динамического
диапазона 8 15 38 77 162 332 703
Видно, что в качестве базовых модулей РМА использовать простые числа большой разрядности целесообразно только в случае очень больших динамических диапазонов, необходимых, например, для многоразрядных вычислений в прикладной и вычислительной теории чисел [7, 8]. В остальных случаях ТМА будет эффективнее.
4. Алгоритм поиска рекурсивного модулярного базиса
При выборе оснований для РМА значение максимального базисного модуля фиксируется, в то время как динамический диапазон покрывается рабочими основаниями, которые не принимают непосредственного участия в выполнении модульных операций. В ТМА максимальное значение модуля увеличивается с ростом динамического диапазона (рис. 2).
Выбор базиса в РМА и ТМА начинается с нахождения динамического диапазона, который определяется решаемой задачей. Для РМА дополнительно необходимо определиться с максимальной разрядностью базовых модулей: чем меньше будет эта разрядность, тем больше бит потребуется для представления данных. Таким образом, возникает вопрос о поиске баланса между необходимым быстродействием и итоговой разрядностью представления.
200 180 160 140 120 100 80 60 40 20
8 24 40 56 72 88 104 120 136 152 168 184 200 216 232 248
Рис. 2. Зависимость значения максимального модуля ТМА от покрываемого динамического диапазона (в битах)
Итак, на вход алгоритма подаются DD — динамический диапазон в битах, MBit — максимальная разрядность базисных рекурсивных модулей и операция (обычно умножение).
Шаг 1. В цикле перебираются количество модулей N рекурсивного базиса от 3 до 10.
Шаг 2. Выбираются максимальные простые числа (Pi,P2, • • • ,Pn) значением меньше 2MBit в количестве N, если это возможно для заданного N, иначе — возвращаемся к шагу 1.
Шаг 3. Считаем произведение M = pi • • • •, •Pn и далее в зависимости от операции последовательно выбираем рабочие модули. Для операции умножения каждый последующий модуль равен максимальному простому числу, удовлетворяющему условию Pnew — 1 < д/Pl • P2 • • • , •PD. При Этом, если Pnew меньше или равно любому из Pi, то построить рекурсивный базис с такой конфигурацией невозможно. Поиск останавливается, когда произведение всех базисных и рабочих модулей покрывает требуемый динамический диапазон.
Шаг 4. Считаем количество бит B, требуемых для представления чисел в найденном базисе, по формуле (2). При B < Bmin сохраняем этот набор модулей как оптимальный на данный момент и, если N < 10, переходим к шагу 1, иначе — возвращаем найденный оптимальный набор модулей и завершаем алгоритм.
5. Экспериментальные результаты
В рамках эксперимента проверялось, насколько эффективны с точки зрения разрядности данных могут быть рекурсивные базисы, полученные с помощью представленного алгоритма. Для этого была написана программа на языке программирования PHP, которая доступна онлайн [9].
На рис. 3, а приведено сравнение разрядности полученных базисов для РМА с ограничением по количеству бит на максимальный базисный модуль. Разрядность варьи-
руется от 3 до 7 бит. На этом же рисунке приведен аналогичный график для ТМА. Как видно, для представления данных РМА ожидаемо требует больше бит, чем ТМА. Для больших динамических диапазонов рост разрядности представления данных РМА с малобитными базисными основаниями становится очень большим.
На рис. 3, б для наглядности приведена часть графика, построенная для диапазона от 8 до 64 бит. Видно, что в этом случае оправданно использование даже трёхбитных (простые числа до 8) и четырёхбитных (простые числа до 16) базисов РМА.
5000
4000
3000
2000
1000
РМА (3 бита)
РМА (4 бита)
РМА (5 бит)
РМА (6 бит) РМА (7 бит )
ТМА
8 24 40 56 72
104 120 136 152 168 184 200 216 232 248
5
600
РМА (3 бита)
а
500
400
300
200
,—- РМА (4 бита)
100
----------РМА (5 бит)
__РМА (б бит)
-РМА (7 бит )
-' ТМА
16
24
32
40
48
56
64
Рис. 3. Зависимость размерности данных РМА от требуемого динамического диапазона 8-256 бит (а), 8-64 бит (б)
200 180 160 140 120 100 80 60 40 20 0
8 32 56 80 104 128 152 176 200 224 248 Рис. 4. Значения максимальных модулей из базисных оснований РМА и ТМА
Для сравнения эффективности РМА на рис. 4 приведены графики максимального значения базисных модулей в РМА и ТМА. Для РМА эти графики горизонтальны, поскольку значения базисных модулей ограничены сверху. При этом отчетливо видно, где именно с точки зрения скорости вычислений в модулярных каналах использование РМА в сравнении с ТМА становится более эффективным.
Список литературы
[1] Ленг С. Алгебра. М.: Мир, 1968.
[2] ÜSPENSKY J.V., Heaslet M.A. Elementary Number Theory. New York: McGraw-Hill, 1939.
[3] Эрдниева Н.С. Использование системы остаточных классов для маломощных приложений цифровой обработки сигналов // Инженерный вестник Дона. 2013. № 2.
[4] Соловьёв А.Н., Алексеев В.Е. Безгироскопная инерциальная система на основе акселерометров // Нано- и микросистемная техника. 2012. № 4(141). С. 26-31.
[5] Амербаев В.М., СтЕМПКОвсКИй А.Л., Соловьёв Р.А. Принципы рекурсивных модулярных вычислений // Информ. технологии. 2013. № 2. C. 22-27.
[6] Abramowitz M., Stegün I.A. Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, 9th Printing. New York: Dover, 1972.
[7] Инютин С.А. Модулярные вычисления в сверхбольших компьютерных диапазонах // Изв. вузов. Электроника. 2001. № 6. C. 81-87.
[8] Инютин С.А. Вычислительные задачи большой алгоритмической сложности и модулярная арифметика // Вестник Тюменского гос. ун-та. 2002. № 3. C. 14-23.
[9] ИППМ РАН. Генератор рекурсивных базисов [Электронный ресурс]. http://vscripts.ru/2014/recursieve_rns_basis_generator.php
Поступила в редакцию 29 мая 2014 г-