Научная статья на тему 'ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ВЫЧИСЛЕНИЯ С ИСПОЛЬЗОВАНИЕМ СИСТЕМЫ ОСТАТОЧНЫХ КЛАССОВ'

ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ВЫЧИСЛЕНИЯ С ИСПОЛЬЗОВАНИЕМ СИСТЕМЫ ОСТАТОЧНЫХ КЛАССОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
758
92
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СИСТЕМА ОСТАТОЧНЫХ КЛАССОВ / НЕМОДУЛЬНЫЕ ОПЕРАЦИИ / ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ВЫЧИСЛЕНИЯ / ПАРАЛЛЕЛЬНЫЕ АЛГОРИТМЫ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Исупов Константин Сергеевич

Система остаточных классов (СОК) .-- это непозиционная система счисления, являющаяся альтернативой двоичному представлению чисел. В~СОК большое целое число представляется в виде набора меньших чисел, являющихся остатками от деления исходной величины на выбранные модули. СОК выполняет сложение, вычитание и умножение с каждым остатком по отдельности. Это приводит к параллельной, свободной от переносов и высокоскоростной компьютерной арифметике для высокопроизводительных вычислений. Однако немодульные операции, требующие оценки величины числа по остаткам, являются сложными для реализации в СОК, так как для них не существует параллельной формы. В вопросах практического использования СОК выполнение немодульных операций занимает центральное место. Представлен обзор исследований в области разработки и применения на~практике методов высокопроизводительных вычислений на основе СОК: Рассмотрены существующие техники выполнения важнейших немодульных операций, таких как обратное преобразование, сравнение чисел, вычисление знака и деление. Акцент сделан на методы, пригодные для произвольных наборов модулей. Показано, каким образом арифметика на основе СОК находит практическое применение в облачных средах, блокчейн-технологиях, вычислениях многократной точности и глубоких нейронных сетях. Обзор ориентирован на развитие новых направлений исследований, посвященных применению непозиционных систем счисления с параллельной структурой в ресурсоемких приложениях.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Исупов Константин Сергеевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

AN OVERVIEW OF HIGH-PERFORMANCE COMPUTING USING THE RESIDUE NUMBER SYSTEM

A residue number system (RNS) is a non-positional number system, an alternative to a binary representation of numbers. In RNS, a large integer is represented as a set of smaller numbers, which are the remainders (``residues'') of dividing its original value by some moduli. An exciting feature of the RNS is that addition, subtraction, and multiplication with each residue are performed independently, which provides parallel, carry-free, and high-speed computer arithmetic. On the other hand, non-modular operations that require estimating the magnitude of a number by its residues are challenging to implement in RNS since there is no parallel form for them. This paper provides an overview of research on the implementation and practical application of high-performance computational techniques for RNS. More specifically, the paper addresses the following two aspects: { Existing techniques for performing the most critical non-modular operations: reverse conversion, magnitude comparison, sign identification, and division; How RNS arithmetic finds practical application in cloud environments, blockchain technologies, multiple-precision computation, and deep neural networks. } The research was aimed at the wider use of non-positional number systems in resource-intensive applications.

Текст научной работы на тему «ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ВЫЧИСЛЕНИЯ С ИСПОЛЬЗОВАНИЕМ СИСТЕМЫ ОСТАТОЧНЫХ КЛАССОВ»

ББК 32.971.32:32.971.321.1 ГРНТИ 50.33.04 УДК 004.222+004.272

К. С. Исупов

Высокопроизводительные вычисления с использованием системы остаточных классов

Аннотация. Система остаточных классов (СОК) — это непозиционная система счисления, являющаяся альтернативой двоичному представлению чисел. В СОК большое целое число представляется в виде набора меньших чисел, являющихся остатками от деления исходной величины на выбранные модули. СОК выполняет сложение, вычитание и умножение с каждым остатком по отдельности. Это приводит к параллельной, свободной от переносов и высокоскоростной компьютерной арифметике для высокопроизводительных вычислений. Однако немодульные операции, требующие оценки величины числа по остаткам, являются сложными для реализации в СОК, так как для них не существует параллельной формы. В вопросах практического использования СОК выполнение немодульных операций занимает центральное место.

Представлен обзор исследований в области разработки и применения на практике методов высокопроизводительных вычислений на основе СОК: Рассмотрены существующие техники выполнения важнейших немодульных операций, таких как обратное преобразование, сравнение чисел, вычисление знака и деление. Акцент сделан на методы, пригодные для произвольных наборов модулей. Показано, каким образом арифметика на основе СОК находит практическое применение в облачных средах, блокчейн-технологиях, вычислениях многократной точности и глубоких нейронных сетях.

Обзор ориентирован на развитие новых направлений исследований, посвященных применению непозиционных систем счисления с параллельной структурой в ресурсоемких приложениях.

Ключевые слова и фразы: система остаточных классов, немодульные операции, высокопроизводительные вычисления, параллельные алгоритмы.

Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта № 20-17-50166.

© К. С. Исупов, 2021

© Вятский государственный университет, 2021 © Программные системы: теория и приложения (дизайн), 2021

Г» 10.25209/2079-3316-2021-12-2-137-192^^^^^^^^^^^^^^^^^^^! Нк-Щ

Введение

Среди различных систем счисления наибольшее распространение получили позиционные Ь-ичные системы счисления, в частности, двоичная и десятичная системы. В Ь-ичной системе задается одно фиксированное основание Ь, и каждой цифре числа присваивается вес Ъг, определяемый положением цифры в записи числа. Все цифры числа взаимозависимы, поскольку при выполнении арифметических операций необходимо распространять переносы от младших разрядов к старшим (значимость цифры определяется ее весом). Необходимость распространения переноса приводит к дополнительным накладным расходам, особенно в случае большой разрядности, и это является основным узким местом Ь-ичных систем счисления.

Иным образом устроены непозиционные системы счисления, в которых вклад каждой цифры в значение числа не зависит от положения цифры. Одной из наиболее известных таких систем является система остаточных классов (СОК) [1-4] которая определяется набором попарно взаимно простых целых чисел, называемых модулями. Большое целое число в СОК представляется в виде набора меньших чисел, являющихся остатками от деления исходной позиционной величины на модули. Особенность в том, что остатки являются взаимно независимыми, т.е. между ними не возникает переносов, что позволяет выполнять сложение, вычитание и умножение с каждым остатком по отдельности. Ввиду этого, обеспечивая возможность реализации высокоскоростной параллельной компьютерной арифметики произвольной разрядности, СОК является перспективным инструментом для высокопроизводительных вычислений.

В последние годы интерес к СОК заметно вырос в связи с активным развитием параллельных архитектур. В настоящее время эта система счисления находит применение во многих ресурсоемких приложениях, например,

• блокчейн [5,6],

• гомоморфное шифрование [7,8],

• стохастические вычисления [9],

• высоконадежные облачные среды [10,11],

• глубокие нейронные сети [12,13],

• анализ данных компьютерной томографии [14],

• цифровая обработка сигналов [15,16],

• обработка изображений [17].

Традиционно алгоритмы на основе СОК проектируются для аппаратных реализаций на базе программируемых логических интегральных схем (FPGA) или схем специального назначения (ASIC). В то же время современные массивно-параллельные архитектуры общего назначения, такие как графические процессоры видеокарт (GPU), позволяют эффективно использовать СОК в программном обеспечении. Именно так выполняются операции в асимметричных криптосистемах [18]. На этой же основе реализована арифметика многократной точности на GPU, позволяющая распараллелить вычисления вплоть до уровня отдельных цифр многоразрядных чисел [19,20].

С другой стороны, в отличие от сложения, вычитания и умножения, такие операции как сравнение, определение знака, масштабирование и деление, называемые немодульными, являются сложными для СОК. Эти операции требуют оценки величины числа по остаткам, и для них не существует параллельной формы. В вопросах практического использования СОК оценка величины числа занимает центральное место. В настоящее время для этого предложено большое количество методов, существенно различающихся по ряду базовых характеристик, определяющих эффективность их применения в реальных приложениях.

Цель настоящей статьи — предоставить литературный обзор исследований, связанных с разработкой и применением на практике методов высокопроизводительных вычислений на основе СОК. Статья имеет следующую структуру. Раздел 1 кратко излагает математические основы и особенности представления чисел в СОК. В разделе 2 исследованы существующие методы выполнения важнейших немодульных операций. В разделе 3 представлены современные ресурсоемкие приложения, для которых использование СОК оказывается полезным. Из рассмотрения исключены такие достаточно хорошо освещенные в литературе приложения, как цифровая обработка сигналов и криптография. Вместо этого обсуждаются применение СОК в облачных хранилищах,

блокчейн-технологиях, вычислениях многократной точности и глубоких нейронных сетях. Статья завершается разделом 4, содержащим заключительные положения.

1. Система остаточных классов

СОК основана на широко известной китайской теореме об остатках (Chinese Remainder Theorem, CRT) [2,21]. Она утверждает, что, зная наименьшие неотрицательные остатки от деления целого числа X на целые модули mi, m2,..., mn, возможно однозначно определить остаток от деления X на произведение этих модулей, при условии, что модули попарно взаимно просты. СОК в отличие от классических b-ич-ных систем счисления задаётся не одним фиксированным основанием, а набором модулей {mi, m-2,..., mn} таких, что gcd(mj, mj) = 1 для всех i, j € {1, 2,..., n}, i = j, где gcd() — наибольший общий делитель. Произведение этих модулей M = ПП= mj определяет динамический диапазон СОК. Целое число X € [0, M — 1] представляется в виде вектора, составленного из наименьших неотрицательных остатков, получаемых при делении X на mj:

X = (Ж1,Ж2, ... ,xn),

где xj = X mod mj, что также обозначается xj = |X|m..

Отрицательные числа также могут быть представлены в СОК. В общем случае, если X — это целое число со знаком, то диапазон возможных значений X, имеющих уникальное представление в СОК, определяется ограничением —M ^ 2X < M.

Над числами в СОК определены базовые операции, которые подразделяются на две группы. К операциям первой группы, которые иногда называются модульными, относятся сложение и вычитание чисел без возможности определения знака результата, умножение, а также деление без остатка (когда заранее известно, что делимое кратно делителю). Такие операции выполняются покомпонентно с остатками, т.е. без образования переносов между ними. Пусть числа X, Y и Z представлены в виде (xi, Х2,... ,x„), (yi, У2,..., Уп) и (zi, Z2,..., z„),

соответственно. Тогда для всякой модульной операции о имеем

0 у1 |Ш1 7 0 У2 |Ш2 7 ■■■ 7 |хп 0 уп |т„ )7

т.е. ¿-я цифра результата в СОК, г^, определяется только в терминах о Уí|m¿ и не зависит ни от какой другой цифры г^. Это позволяет реализовать свободную от переносов, высокоскоростную (параллельную) компьютерную арифметику и делает СОК привлекательной системой счисления для использования в ресурсоемких приложениях, в особенности связанных с обработкой больших чисел. Это также обеспечивает высокую надежность вычислений, поскольку ошибка в ¿-й цифре не оказывает влияния на другие цифры и поэтому может быть эффективно локализована и устранена [22].

В свою очередь, для операций второй группы, часто называемых немодульными, недостаточно знания значений отдельных остатков и требуется оценка величины чисел: результат такой операции либо вообще не является числом в СОК, либо значение каждой его цифры (остатка) не является только лишь функцией значений соответствующих цифр операндов, а зависит от величины этих операндов. К сожалению, непозиционная структура СОК не позволяет эффективно оценить величину числа по остаткам, и это обстоятельство является основным фактором, сдерживающим широкое распространение СОК в качестве альтернативы Ь-ичным системам счисления.

2. Методы немодульных вычислений в СОК

В этом разделе рассмотрены методы обратного преобразования, сравнения чисел, определения знака числа, а также деления чисел в СОК. Известно, что на эффективность арифметики в СОК существенно влияет выбор набора модулей, подходящего для решения конкретной задачи [23]. В современных исследованиях часто используются наборы специального вида, состоящие из близких к степени двойки модулей, таких как {2п - 1, 2п, 2п + 1}, {22п, 22п-1 - 1, 22п-1 + 1} и {2п + 1, 2п — 1, 2п7 22п+1 — 1}, для некоторого фиксированного параметра п. Определенные математические свойства таких модулей обеспечивают эффективную реализацию многих немодульных операций в СОК, в первую очередь обратное преобразование и сравнение чисел.

С другой стороны, современным приложениям часто требуется большой динамический диапазон вычислений, состоящий из сотен и даже тысяч бит, и единственным приемлемым вариантом для таких приложений является использование наборов модулей произвольного вида. Кроме этого, наборы произвольного вида с близкими по величине модулями являются наиболее экономичными с точки зрения затрат памяти. Поэтому далее рассматриваются методы, пригодные для наборов модулей произвольного вида.

Мы начнем обзор с обратного преобразования, т.е. восстановления целого значения числа по его остаткам, поскольку принципы, лежащие в основе обратного преобразования, используются во многих техниках выполнения других немодульных операций.

2.1. Обратное преобразование

Обратное преобразование является важной частью вычислений в СОК [24]. Базовые методы обратного преобразования основаны на CRT [2,21] или переходе в промежуточную систему счисления со смешанными основаниями (mixed radix conversion, MRC) [15, 25], а другие существующие техники, как правило, являются их модификациями или комбинациями.

2.1.1. Китайская теорема об остатках (Chinese Remainder Theorem)

Классический метод восстановления целого значения числа по остаткам, получаемый из конструктивного доказательства CRT [26], заключается в вычислении b-ичной суммы по модулю M:

(1) X =

^Mj\xjWj\mi

M

г-II

где Mi = M/mj, а величины wi = |M— |m известны как мультипликативные (модулярные) инверсии от Mj по модулю mi, удовлетворяющие wiMi = 1 mod mi. Легко заметить, что 1 < wi < mi.

Проблемы при реализации (1) возникают в связи с необходимостью трудоемкой финальной редукции по большому модулю M, т.е. в нахождении остатка от деления вычисленной суммы на M, особенно когда M

состоит из нескольких сотен бит. Поэтому проводимые исследования в основном посвящены разработке алгоритмов, исключающих редукцию по модулю M из процесса вычислений.

2.1.2. Перевод в смешанную систему (Mixed-Radix Conversion)

Другой классический метод обратного преобразования не требует модулярной редукции и выражает число X в виде

(2) X = xi Wi + X2W2 + ••• + xn Wn,

где Wi, W2,..., Wn — основания смешанной системы счисления:

Wi = 1, W2 = mi,

(3) W3 = mim2,

^п = ТО1И2 • • • Шп-1.

Гарантируется однозначность представления (2) для всех целых чисел из отрезка [0, М — 1], что указывает на высокую степень сходства СОК и смешанной системы, в основе которых лежит один и тот же набор модулей-оснований.

Краеугольным камнем этого метода является перевод числа из СОК в смешанную систему, т.е. вычисление цифр Х1, ■ ■ ■, Хп. Для заданного числа X = (х, Х2, ■ ■ ■, хп), классический МИ.С алгоритм [25] последовательно вычисляет все цифры смешанного представления, начиная с наименее значимой:

Х1

Х2

(4) Хз

= xi , = 1 (x2 - xi )ci2 |m2 , = |((хз - Xi)ci3 - X2) C23 |

|((. . . (Xn - Xi)cin - X2) C2n -----Xn-i) Cn-i,n|r

n

причем все константы с^- = |ш- 1|т вычисляются заранее.

Для вычисления (4) требуется п(п — 1) арифметических операций по модулям ш;, а именно, п(п — 1)/2 вычитаний и столько же умножений. В работе [27] предложен улучшенный алгоритм, позволяющий сократить число умножений до п — 2. Однако он вводит дополнительные ограничения на выбор модулей СОК, так как должно выполняться условие |Ж-1 |т =1 для всех i = 1, 2, ■ ■ ■, п.

Хотя каждая следующая цифра зависит от предыдущей цифры Х, процесс (4) может быть частично распараллелен (конвейеризован) [26], как показано в алгоритме 1. В этом алгоритме к — индекс потока, а V — массив в общей памяти, к которому имеют доступ все п потоков. Необходимо отметить, что в конце каждой итерации цикла может потребоваться синхронизация для исключения гонок данных.

Алгоритм 1. Параллельная (конвейерная) реализация МИС

Vfc ^ Xfc

for j ^ 1 to n - 1 do if k > j then

vfc ^ (vfc - vj)cjk mod mfc end if end for

Xk ^ vk

1

Таким образом, вычисление смешанного представления выполняется за время O(n), что и является основным недостатком MRC. С другой стороны, в отличие от CRT, MRC алгоритм требует выполенния арифметических операций лишь по небольшим модулям m,.

В [28] предложена модификация MRC, названная MRC-II, для преобразования числа из СОК в десятичное представление. Алгоритм вычисляет рекуррентное соотношение

(5) X, = XiPi-i + Xi-i, 2 < i < n, n > 2,

где Pi-i = Пj.=i mj и Xi = Xi = Xi. В конечном итоге, Xn является двоичным представлением числа X = (Xi,X2,...,Xn). Все цифры смешанного представления (Xi, X2,..., Xn) вычисляются предварительно и сохраняются в таблицы размера mj log2 m,. Индексом таблицы

является значение \xi — Xj_i\mi для i > 2, а содержимое таблицы определяется из уравнения \xi — Xj_i\mi = \XiPi_i\mi. Хотя MRC-II и имеет линейную сложность по числу модулей СОК, требует хранения значительного объема подстановочных данных и поэтому пригоден для небольших наборов модулей.

2.1.3. New Chinese Remainder Theorem II

В [29] предложен оригинальный способ обратного преобразования, названный New CRT II, который основан на принципе «разделяй и властвуй». Пусть X = (xi, Х2,..., xn) и t = [n/2j. Двоичное значение X предлагается вычислять следующим образом:

(6) X = X2 + \ko(Xi — X2) \ м 1 M2,

где Xi — целое число, соответствующее остаткам (xi, Х2,..., xt) относительно модулей {mi, m-2,..., mt} с диапазоном Mi = mim-2 • • • mt. Аналогично, X2 — целое число, соответствующее вектору остатков (xt+i, xt+2,..., xn) относительно набора {mi+1, mi+2,..., mn} с диапазоном M2 = mj+imj+2 • • • mn. Константа ko = |M2-1|m —мультипликативная инверсия от M2 по модулю Mi.

Целые числа Xi и X2, в свою очередь, вычисляются посредством применения (6) с разбиением диапазонов M 1 и M2 на соответствующие поддиапазоны в два раза меньшей длины, и т.д. Рекурсивное разбиение продолжается до тех пор, пока каждый набор модулей не будет содержать только два элемента. Таким образом, обратное преобразование выполняется за log2 n шагов с возможностью распараллеливания вычислений на каждом шаге. Максимальный размер операции при этом сокращается с M до %/M.

На базе New CRT II разработаны эффективные обратные преобразователи для произвольных наборов модулей [30], а также для наборов вида {2n — 1, 2n + 1, 22n — 2, 22n+1 — 3} [31], {2n — 1, 2n, 2n + 1, 22n+1 — 1} [32]. Кроме этого, представленная техника недавно использована для обнаружения искаженной информации в оптимизированном механизме хранения данных блокчейна на основе СОК [5] (см. подробнее в подразделе 3.2).

Заметим, что не обязательно использовать рекурсивный подход для снижения размера операции редукции с M до %/M. Достаточно ограничиться однократным вычислением (6), а Xi и X2 вычислять с использованием обычной версии CRT, т.е. по формуле (1).

2.1.4. Mixed-Radix Chinese Remainder Theorem

В работе [33] предложен комбинированный метод преобразования из СОК в двоичную систему счисления—MR CRT, который совмещает достоинства CRT и MRC методов. Согласно MR CRT, восстановление целочисленного значения X выполняется в соответствии с (2), однако для вычисления цифр смешанного представления Xi, X2,..., Xn вместо (4) используются следующие выражения:

Xi = Xi,

X2 = |YiXi + Y2X2 |m2 ,

(7) X3 = ||_(yiXI + 72x2 + Y3X3)/m2_|| ,

Xn = ||_(YiXi + Y2X2 +-----+ YnXn)/m2m3 • • • mn-ij|mn .

Константы Yi, Y2,..., Yn вычисляются следующим образом:

{(Miwi - 1)/mi, если i =1, MjWj/mi, если 2 < i < n,

где Mj и Wj (мультипликативные инверсии по модулю) определяются так же, как в формуле (1).

Вычисление естественным образом распараллеливается, поскольку в (7) все X, являются взаимно независимыми (достоинство CRT). При этом не требуется редукция по большому модулю — все операции выполняются по модулям m, (достоинство MRC). Таким образом, MR CRT является эффективным методом обратного преобразования.

2.1.5. Диагональные и монотонные функции

Концепция диагональных функций, предложенная в [34] и развитая в [35], формулирует проблему выполнения немодульных операций

в терминах оценки индексов диагоналей, расчерчивающих п-мерное пространство, образованное модулями СОК. Первоначально предназначенная для сравнения чисел в СОК, данная концепция в дальнейшем была адаптирована для задачи обратного преобразования [36]. Диагональная функция для числа X = (жх, Ж2,..., жп) определяется следующим образом:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

(8) D(X)

^ ^ xiki

i=1

SQ

где SQ = Mi + M2 + • • • + M„, Mi = M/mi и k = |-m-11 sq (т.е. ki — это аддитивная инверсия мультипликативной инверсии от mi по модулю SQ). В свою очередь, преобразование X в двоичную систему счисления выполняется в соответствии с выражением [36]:

xiMi + X2M2 + • • • + i„M„ + M х D(X)

X = SQ '

причем числитель делится на модуль SQ без остатка. Таким образом, редукция по модулю M исключается из процесса вычислений, однако требуется деление на большую константу SQ.

Хотя преобразователи, построенные на базе диагональных функций, проигрывают аналогам по быстродействию, имеется возможность снижения аппаратных затрат путем построения совмещенных устройств, выполняющих функции сравнения чисел и обратного преобразования [36].

Монотонные функции [37] являются, по существу, обобщением диагональных функций. Зададим два множества I и J, такие что IU J = {1, 2,..., n}, IП J = 0 и I = 0, где n — количество модулей СОК. Пусть, как и прежде, Mi = M/mi и wi = | M-11 m . Определим следующие константы:

Mi = ^ Mi,

SlNV =

iei

i

I mi imi

iei

и вычислим коэффициенты bj, i = 1, 2,..., n, такие что

I —т- Im ' если i € I,

|Mj • SINy • wj|Mj , если i € J,

l

Для числа X = (жх, Ж2,..., ж„) монотонная функция Р/(X) определяется следующим образом:

Легко заметить, что диагональная функция Р(Х) является частным случаем монотонной функции Р/ (X), причем если множество J непустое, то с вычислительной точки зрения (9) эффективнее, чем (8), так как

На базе монотонных функций в [37] предложены алгоритмы сравнения и обратного преобразования, а в [36] разработана архитектура обратного преобразователя для 4-модульной СОК. Общим недостатком диагональных и монотонных функций является необходимость редукции по модулям SQ и М/, которые являются довольно большими числами, хотя и меньшими, чем М.

2.1.6. Дробная версия CRT (Fractional Representation)

M. A. Soderstrand предложил [38] вычислять дробное представление числа в СОК, которое получается при делении (1) на М:

где | |х - дробная часть суммы в интервале [0,1).

Умножив (10) на М получим двоичное значение числа X. В отличие от (1) для вычисления дробного представления (10), также называемого относительной величиной, не требуется трудоемкой редукции по модулю М; вместо этого выполняется более простая операция взятия дробной части суммы.

(9)

М/ < SQ.

(10)

Отбрасываемая целая часть в (10) имеет самостоятельное практическое значение, в частности, в алгоритмах расширения набора модулей (base extension). Действительно, формула (1) может быть переписана в следующем виде:

(11) X = ^Mi^U^ - rM.

Разделив обе части уравнения (11) на M, получим:

(12)

ш, 1 i

В свою очередь, зная г, остаток от X по модулю те, не входящему в основной набор модулей |тх, т2,..., тп}, вычисляется эффективно:

(13) |X |г

¿1 Mi IXiWilm | me - |rM|m

i=1

С момента появления оригинального метода вычисления дробного представления в 1983 году, различные его вариации и модификации активно развивались и в том или ином виде применялись для обратного преобразования и других немодульных операций, связанных с оценкой величины чисел в СОК [18,39-54].

Главная проблема заключается в том, что слагаемые /т^

в формулах (10) и (12), являясь в общем случае рациональными числами, не могут быть вычислены точно с использованием арифметики фиксированной разрядности. Соответственно, возникает ошибка округления, которая без должного внимания может привести к некорректному результату немодульной операции. Для решения этой проблемы существует два основных подхода:

(1) Вычисление многоразрядного (превышающего разрядность М) дробного представления [39,41,44,47,48,52-54]

(2) Учет ошибки округления и вычисление приближенного дробного представления в арифметике стандартной разрядности [18,40,43, 45,46,49,51]

m

Первый подход предполагает оценку числа бит точности (разрядности), с которой необходимо выполнять суммирование, чтобы гарантировать корректность дробного представления для любых входных данных. Основной недостаток—высокие затраты, связанные с поддержкой арифметики многократной точности. В FPGA и ASIC реализациях это приводит к длинным арифметическим схемам, обладающим большой задержкой. В программных реализациях возникает необходимость в эмуляции вычислений многократной точности средствами компиляторов либо специальных арифметических библиотек. При этом время вычислений возрастает существенно.

В рамках второго подхода вычисления выполняются быстро, так как не используется многоразрядная арифметика. Этот подход применим для операций, которые не требуют полного восстановления целого числа, например для сравнения двух чисел в СОК или определения знака алгебраической суммы. Здесь, однако, важно учитывать все факторы, которые могут повлиять на общую погрешность вычислений (чтобы она не оказалась недооцененной). В частности, если используется арифметика с плавающей точкой, что является наиболее естественным вариантом аппроксимации рациональных чисел, то точность результата зависит от многих параметров вычислений, включая порядок инструкций и опции компилятора [55]. При параллельной обработке контролировать порядок выполнения арифметических операций довольно сложно. С другой стороны, применение интервальной арифметики обеспечивает автоматический учет погрешностей округления [40,45,49].

2.1.7. Другие методы

Существует множество других исследований, посвященных разработке эффективных методов и реализаций преобразования чисел из СОК в двоичную систему счисления. В их основе лежат различные теоретико-числовые и арифметические концепции, такие как функция ядра (core function) [56], теорема о декомпозиции набора модулей [57], использование избыточного модуля [58] и вычисление функции ранга числа с помощью SRT-алгоритма [59].

J. Chen и R. Yao разработали алгоритм [60], в котором вначале вычисляется b-ичная сумма Xmedium первых n — 1 остатков числа

в СОК, а затем результат обратного преобразования определяется следующим образом:

вычитание и одно умножение по модулю шп. При некоторых незначительных ограничениях на выбор модулей использование разработанного алгоритма ведет к существенному снижению аппаратных затрат и времени обратного преобразования по сравнению с [30] и [48].

Недавно Р. Ра1гошк предложил похожую технику [61] для модулей вида {шх, Ш2,..., ш„_1, 2к}, где все то; — произвольные попарно взаимно простые числа и к — произвольная константа. Преобразователь формирует два слагаемых, Xs и Xc, такие что 0 < Xs + Xc < 2М, где М — полный динамический диапазон СОК с учетом модуля 2к. Искомая целочисленная величина получается простым выбором между

+ Xc) и + Xc) — М. Представленные в [61] результаты синтеза показывают, что разработанная архитектура более эффективна, чем [54] и [60].

В последние годы активно разрабатываются преобразователи для специальных наборов модулей, таких как {2П — 1, 2П, 2П + 1} [62], {2П + 1, 2П — 1, 2П, 22и+1 — 1} и {2П + 1, 2П — 1, 22п, 22и+1 — 1} [63], {2П, 2П — 1, 2П, 2"+1 — 1}, {2ш — 1, 2ш, 2ш +1} и {2П — 3, 2П — 1, 2П + 1, 2П + 3} [64], {22п, 22п-1 — 1, 22п-1 +1} [65] и других [66]. Модули специального вида обладают полезными арифметическими свойствами, делающими процесс обратного преобразования более эффективным. С дополнительной информацией по методам и архитектурам обратного преобразования читатель может ознакомиться в [1, глава 5].

Хотя обратное преобразование играет важную роль в вопросах практического использования СОК, его влияние на общую производительность может быть снижено, если все промежуточные вычисления будут осуществляться непосредственно в СОК, а в двоичную систему будет переводиться лишь финальный результат. Поэтому далее мы

в противном случае,

где М = Ш1Ш2 • • • ш„_1. Для вычисления к требуется лишь одно

рассмотрим методы выполнения немодульных операций, не требующие полного восстановления целочисленного представления чисел из остатков.

2.2. Сравнение и вычисление знака

Сравнение чисел в СОК является одной из наиболее важных операций и тесно связано с другими операциями, в частности, с вычислением знака и оценкой переполнения диапазона. Кроме этого, сравнение выступает строительным блоком в более сложных операциях, таких как масштабирование и деление. В связи с этим в литературе предложено большое количество алгоритмов сравнения.

Одним из очевидных вариантов реализации операции сравнения является вычисление коэффициентов (4) смешанных представлений чисел с использованием MRC алгоритма. Цифра Xi в смешанном представлении числа X является наименее значимой, а цифра xn — наиболее значимой, поэтому достаточно сравнить операнды покомпонентно, начиная со старших цифр, как показано в алгоритме 2.

Алгоритм 2. Сравнение чисел с использованием MRC

1: Вычислить [Xi, X2,..., xn] ^ MRC(X) 2: Вычислить [у1; y2,..., yn] ^ MRC(Y) 3: for i ^ n downto 1 do 4: if X, = y, then 5: return (X, > y,) ? 1 : —1

6: end if 7: end for 8: return 0

MRC метод также может быть использован для вычисления знака и оценки переполнения суммы двух чисел. Более того, если известно, что операнды имеют одинаковый знак, то их сравнение может быть выполнено в два раза быстрее за счет сравнения цифр смешанного представления разности с заранее вычисленными цифрами константы, соответствующей половине динамического диапазона.

Преимуществами MRC метода сравнения является полное отсутствие необходимости в многоразрядных вычислениях: для нахождения

всех коэффициентов смешанного представления требуется только целочисленная арифметика по модулям mj. Недостатком является последовательная природа MRC процесса, приводящая к минимальной оценке времени выполнения— O(n). Для ресурсоемких приложений, использующих большие наборы модулей, эта оценка часто оказывается неприемлемой. Другим недостатком MRC является необходимость в дополнительных массивах, хранящих цифры xj и yj. Этот недостаток становится существенным при реализации алгоритма на системах со сложной иерархией памяти, таких как GPU.

Алгоритм сравнения на базе техники New CRT II, рассмотренной в подразделе 2.1.3, был предложен в [67]. Он позволяет выполнить сравнение двух чисел за O(log n) шагов, но требует операций по модулю %/М, поэтому оказывается непрактичным, когда динамический диапазон СОК состоит из тысяч бит. Кроме этого, процедура RNS_Compare_size2 содержит большое количество условных операторов, что может стать причиной плохой производительности при реализации алгоритма на SIMD системах.

Алгоритм сравнения на основе MR CRT (см. подраздел 2.1.4) состоит в вычислении и последующем анализе коэффициентов (7), как описано в [33]. При достаточном количестве ресурсов вычисление может быть выполнено за время O(log n). Хотя редукция по большому

модулю в явном виде исключается, требуется выполнять умножение и

nj+1

j=2 mj

для всех j от 1 до n — 2. С другой стороны, в этой же работе авторы предложили и реализовали на базе MR CRT эффективный алгоритм сравнения для популярного набора из трех модулей {2n — 1, 2n, 2n + 1}.

В статье [34] разработан метод сравнения на основе диагональных функций (см. подраздел 2.1.5). Поскольку диагональная функция (8) монотонно возрастает на интервале [0, M — 1], для сравнения чисел X = (xi, Х2,..., xn) и Y = (yi, y2, • • •, yn) достаточно вычислить и сравнить их диагональные функции D(X) и D(Y). Совпадение значений функций указывает на то, что числа лежат на одной диагонали. В этом случае о результате сравнения можно судить по соотношению любой пары остатков (xj,yj). К сожалению, данный метод требует операций по большому модулю SQ = Y1 Г=1 M/mj и

поэтому непрактичен при программной реализации. С другой стороны, работа [68] ставит под сомнение эффективность его аппаратной реализации. Вместе с тем, диагональные и монотонные функции являются важными математическими концепциями, позволяющими лучше понять специфические свойства целых чисел [69].

В работе [52] предложен метод определения знака числа в СОК с использованием дробной версии CRT (см. подраздел 2.1.6). Приведенный анализ ошибки округления показывает, что для однозначного определения знака дробная часть каждого слагаемого, участвующего в вычислениях, должна содержать по меньшей мере t бит, где

t > l~l°g2 Mn] — 1 для четного M, t > [log2 Mn] для нечетного M.

M. Lu и J.-S. Chiang в рамках разработки алгоритма деления предложили метод на основе контроля четности для сравнения и оценки переполнения в СОК [39]. В соответствии с методом результат сравнения беззнаковых чисел X и Y определяется по следующим правилам, при условии, что набор модулей СОК состоит только из нечетных модулей.

(1) Пусть X и Y имеют одинаковую четность и Z = X — Y. Тогда X > Y, если Z — четное и X < Y, если Z — нечетное.

(2) Пусть X и Y имеют разную четность и Z = X — Y. Тогда X > Y, если Z — нечетное и X < Y, если Z — четное.

Аналогичные правила применяются для чисел со знаками. В [39] предложено два способа определения четности числа по остаткам. Первый основан на использовании подстановочной таблицы, хранящей признак четности для всех чисел из диапазона [0, M — 1]. Размер таблицы пропорционален M, поэтому способ подходит лишь для небольших наборов модулей. Второй способ предполагает вычисление признака четности следующим образом:

P = LSB(|xiwi|mi) © • • • © LSB(Kwn|mn) ® LSB(r),

где LSB —младший бит числа, w, — константы из формулы (1), а коэффициент r вычислялся с использованием дробной версии CRT

по формуле (12). Как и в [52], этот способ требует использования многоразрядной арифметики, причем количество бит в дробной части слагаемых |ж;и>;|т/ш; должно превышать log2 Мп.

Также в [39] отмечено, что все необходимые для вычисления г многоразрядные слагаемые могут быть вычислены заранее. Вместе с тем, их суммирование является непростой задачей и, более того, существенный объем подстановочных таблиц может стать проблемой при использовании больших наборов модулей.

В свою очередь, алгоритм сравнения чисел в СОК из [41] оперирует многоразрядными величинами с |7о$2Мр] битами в дробной части, где параметр р определяется как ^П=1 (ш; — 1).

В недавней работе [70] предложен алгоритм сравнения, сочетающий идеи диагональных функций и дробного представления. В алгоритме вычисляется модифицированная диагональная функция

^)

;=1

где к; = |~к; • 2«/80], а константы к; и 80 определяются так же как в (8). Операции по модулю 2« выполняются значительно проще и эффективнее, чем операции по модулю 80, необходимые для вычисления ) в оригинальной концепции. Действительно, чтобы найти остаток от деления на 2« достаточно игнорировать переносы из (Ж — 1)-го разряда двоичного представления. Сравнение чисел X и У сводится к сравнению их модифицированных диагональных функций ) и Р(У) в двоичной системе счисления. Однако алгоритм требует вычислений с многоразрядными числами, поскольку размер модуля 2« определяется следующим образом:

N > [~1о^2(80 • (ш„ — 1))].

Все рассмотренные выше методы для сравнения и вычисления знаков чисел в СОК, за исключением МИ.С метода, хотя и не требуют полного восстановления двоичного представления числа с трудоемкой редукцией по модулю М, но предполагают работу с многоразрядными целыми или дробными величинами, причем разрядность вычислений

часто превышает разрядность произведения модулей M. Это кажется приемлемым для высокопроизводительных аппаратных реализаций, предназначенных для приложений СОК, не требующих больших динамических диапазонов, например, цифровая обработка сигналов.

С другой стороны, это влечет серьезные проблемы при программной реализации, поскольку на вычислительных системах общего назначения многоразрядные (превышающие длину машинного слова) арифметические операции выполняются во много раз медленнее стандартных операций фиксированной разрядности, которые поддерживаются аппаратно. Поэтому далее рассмотрим методы сравнения и вычисления знака в СОК, не требующие использования многоразрядной арифметики.

В [46] предложено использовать округленные дробные числа для определения знака в СОК. Алгоритм включает в себя вычисление приближенного значения EFa(X) « X/M путем округления каждого слагаемого в уравнении (10) до некоторого числа бит, определяемого параметром а. Такие округленные слагаемые вычисляются заранее для всех возможных значений каждого из остатков и сохраняются в подстановочные таблицы, так что нахождение EFa(X) выполняется очень быстро, поскольку сводится к выборке и простому суммированию заранее вычисленных значений с последующим отбрасыванием дробной части суммы. Суммирование выполняется с округлением до в = а + [log n] бит. Последующее определение знака сводится к анализу

Метод эффективен с точки зрения скорости расчетов, однако он накладывает ограничения на диапазон вычислений: для однозначного определения знака требуется, чтобы входной аргумент X удовлетворял неравенствам

Кроме этого, метод не подходит для больших наборов модулей ввиду отсутствия механизма уточнения ЕРа(Х) в случае малой величины X. В самом деле, при постоянных а и п ошибка округления (14) ограничена сверху некоторой фиксированной границей, которая может оказаться больше, чем Х/М.

В [43] предложен более общий алгоритм вычисления знака, который также основан на округленном дробном представлении и использует только быструю стандартную арифметику с плавающей точкой, а также операции по модулям mj. Этот алгоритм, названный авторами «Recursive relaxation of the moduli», предоставляет элегантный механизм итерационного уточнения вычислений для небольших входных данных, состоящий в последовательном исключении из рассмотрения модулей mn, m„_i, mn-2, • • • с соответствующим сокращением динамического диапазона до тех пор, пока на j-й итерации вычисляемая дробная величина s (j) не окажется больше некоторой оценки ошибки округления £j. Шаги вычислений показаны в алгоритме 3.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Алгоритм 3. Recursive relaxation of the moduli [43]

j ^ n +1 repeat

j ^ j - 1

s(j) ^

5: until |S(j)| > £j or j 6: return sign(S(j))

Ej=l I xiw(j) I m M

В отличие от [46], алгоритм вычисления знака из [43] пригоден для произвольных и больших наборов модулей. Однако он также накладывает ограничение на входные данные:

(15) IX|< у(1 — £п),

где £„ — граница абсолютной ошибки округления.

С одной стороны, ограничения (14) и (15) кажутся мягкими, поскольку не приводят с существенному сокращению диапазона вычислений. Вместе с тем, гарантировать их выполнение на практике — не простая задача, в особенности если аргумент, т.е. число X = (жх, Х2,..., ж„) для которого требуется вычислить знак, сам по себе является результатом предыдущих вычислений в СОК.

Другой метод [40] для сравнения чисел в СОК и выполнения связанных немодульных операций основан на идее, что не обязательно вычислять точное значение X/M, а достаточно иметь интервал

1

l

I(X/M) = [X/M,X/М], такой что X/М < X/M < X/М. Этот интервал называется интервальной оценкой с плавающей точкой числа X (или просто интервальной оценкой числа X). Границы интервала — числа с плавающей точкой ограниченной разрядности. Вычисление I(X/M) по остаткам числа X = (xi, x2,..., xn) выполняется в среднем за время O(log n) при распараллеливании на n потоков и требует только операций по модулям и стандартных операций с плавающей точкой с направленными округлениями. Соответственно, метод пригоден для современных вычислительных платформ общего назначения, которые поддерживают быструю арифметику IEEE 754. Иллюстрация метода показана на рисунке 1.

Y = (yi,V2,-- -,Vn) X = (xi,X2, ...,x„)

Вычисления с плавающей точкой

[

]

[

]

X/M X/M

Возможные значения X/M

Y/M Y/M

Возможные значения Y/M

Рисунок 1. Использование интервальных оценок для сравнения чисел в СОК: X < У, так как X/ М < У / М

В вычислении I(Х/М) при малой величине аргумента X применяется итерационный механизм уточнения, схожий с алгоритмом 3. Существенным отличием является то, что каких-либо ограничений на диапазон изменения аргумента X не накладывается. Другими словами, обеспечивается корректное вычисление I(Х/М) для любого X € [0, М — 1]. В некоторых граничных случаях, когда аргумент находится слишком близко к 0 или М, могут потребоваться дополнительные шаги для разрешения неоднозначности. Над интервальными оценками определены арифметические операции, аналогичные операциям с обычными вещественными интервалами. Это позволяет

0

1

использовать их не только для сравнения и вычисления знака, но также для оценки переполнения при сложении и умножении чисел в СОК. Кроме того, применение интервальных формул позволяет вычислить I(X/M) за время O(1).

Работы [49] и [71] являются дальнейшим развитием метода интервальных оценок. В [49] предложен улучшенный алгоритм вычисления I(X/M), в котором для разрешения граничных (неоднозначных) случаев применяется MRC-техника, а в основных вычислительных циклах используется попарное суммирование, обеспечивающее лучшую точность по сравнению с классической рекурсивной схемой. Кроме того, в [49] разработаны новые алгоритмы сравнения и деления чисел в СОК на основе интервальных оценок и представлены результаты их реализации на GPU. В [71] опубликована модификация алгоритма вычисления I(X/M), позволяющая снизить число итераций уточняющего цикла в случае малых значений аргумента. Также в [71] представлена реализация параллельной схемы вычисления максимального элемента массива чисел в СОК на GPU. На основе инервальных оценок разработана CUDA библиотека высокопроизводительных вычислений в СОК, поддерживающая наборы модулей с диапазонами до нескольких тысяч бит1.

В [72] предложен метод определения знака числа и оценки переполнения при сложении и вычитании в СОК, основанный на анализе коэффициента реконструкции Rc , который является, по существу, тем же самым, что (12). Вычисление Rc выполняется за логарифмическое время (в среднем) в формате с фиксированной точкой с использованием алгоритма RPPR, который не накладывает ограничений на диапазон допустимых значений аргумента, но требует использования избыточного модуля me, взаимно простого со всеми остальными модулями системы. Максимальная длина операндов, участвующих в вычислениях, составляет [log2 пФ] бит, где Ф — некоторый парамтер точности. Результаты экспериментов, представленные в [72], показывают, что на больших динамических диапазонах СОК (от 512 до 5000+ бит) алгоритм RPPR выполняется существенно быстрее, чем вычисление многоразрядного дробного представления. В экспериментах были использованы значения Ф от 10 до 42.

1Доступна для скачивания по адресу https://github.com/kisupov/grns

В таблице 1 представлена сводная информация по рассмотренным алгоритмам.

Таблица 1. Оценки производительности алгоритмов сравнения и вычисления знака в СОК

Time Opsize Restrict Redund

MRC O(n) mod mi о о

[67] O(log n) mod \[M о о

[33] O(log n) « E?=i M/mi о о

[34] O(log n) mod SQ = £i=1 M/mi о о

[52] O(log n) log2 Mn бит^ о о

[39] O(log n) log2 Mn бит^ о о

[46] O(log n) a + [log n] • о

[43] O(log n)t 32/64 бит • о

[41] O(log n) log2 M J2n=1(m-i - 1) бит* о о

[40] O(log n)t 32/64 бит о о

[70] O(log n) mod 2N, N > [log2 SQ(mn - 1)] о о

[72] O(log n)t log2 пФ бит* о •

^ Указана оценка для «среднего» случая, в граничных случаях оценка выше. ^ С округлением «вверх» до целого.

Обозначения столбцов таблицы расшифровываются следующим образом:

Time временная сложность алгоритма;

Opsize наибольшая операция редукции по модулю либо наибольшие целые числа, участвующие в вычислениях, либо разрядность в битах дробной части операндов; значение «32/64 бит» указывает на то, что не требуется работать с длинными числами, выходящими за пределы разрядной сетки вычислительной системы, т.к. вычисления

выполняются в целочисленной арифметике по модулям mj или в стандартной арифметике с плавающей точкой;

Restrict наличие ограничений, накладываемых на возможные значения аргумента;

Redund необходимость использования избыточных модулей. 2.3. Деление

Для заданных чисел X = (xi, Х2, • • •, xn) и Y = (yi, У2, • • •, yn) деление состоит в вычислении Z = (zi, Z2, • • •, zn), такого что Z = [X/YJ. Согласно теореме о делении с нулевым остатком [25], частное Z может быть найдено простым покомпонентным умножением X на мультипликативную инверсию Y, но только если заранее известно, что X кратно Y. В общем же случае деление — одна из наиболее сложных операций в системе остаточных классов. В литературе описаны различные способы ее реализации, которые, как и двоичные алгоритмы деления, можно разделить на два класса: алгоритмы на основе вычитания и алгоритмы на основе умножения, причем большинство существующих техник относятся к первому классу.

В [39] представлен алгоритм деления чисел в СОК со знаками, который вначале вычисляет 2k, такое что (2k • Y) < X < (2fc+1 • Y), а затем находит разность межу 2k и истинным частным методом бинарного поиска. Вычисление 2k выполняется итерационно, и на каждой г-й итерации (2j • Y) сравнивается с X. Кроме этого, (2j+1 • Y) сравнивается с (M — 1)/2 для контроля переполнения. Как уже упоминалось выше, для сравнения и оценки переполнения используется техника контроля четности. При большом динамическом диапазоне алгоритм требует многоразрядной арифметики для вычисления (12).

Алгоритм, предложенный в [44], основан на вычислении наиболее значимых ненулевых бит делимого (остатка) и делителя, j = h(X) и k = h(Y), соответственно. Если j > k, то к частному прибавляется 2j-k-1 и процесс повторяется. Алгоритм не требует вычисления знака и контроля переполнения, а для вычисления j и k предложено две реализации. Реализация I основана на использовании подстановочной таблицы большого размера, из которой выбираются j и k. Реализация II

вычисляет многоразрядные дробные представления чисел, X/M и Y/M, после чего j = h(X/M) и k = h(Y/M). Для исключения трудоемкого деления при вычислении (12), слагаемые |xjWj|mi/mj вычисляются заранее и сохраняются в n таблиц; адресом для выборки i-го слагаемого является остаток xj. При большом числе модулей объем таблиц может быть существенным. В [73] предложена оптимизация алгоритма для двух специальных наборов: {2k, 2k - 1, 2k-1 - 1} и {2k + 1, 2k, 2k - 1}.

В статье [47] показано, что количество итераций алгоритма [44] может быть снижено, если допустить получение временного частного, превышающего истинное частное. Для определения знака делимого на каждой итерации используется техника контроля четности. В свою очередь, в алгоритме деления из [74] значения h(X) и h(Y) вычисляются только на первой итерации, а для дальнейшего уточнения частного используется метод половинного деления.

Алгоритм [75] также основан на анализе дробных представлений делимого и делителя, F (X ) = X/M и F (Y ) = Y/M, которые представлены в формате с фиксированной точкой и вычисляются однократно перед началом итераций. Дальнейший процесс строится на базе F(X) и F (Y ) (исходные операнды в нем уже не участвуют) и состоит из двух этапов. На первом этапе F (Y ) сдвигается влево до тех пор, пока не превысит F(X). Количество сдвигов определяет потенциальную позицию старшей цифры частного. Второй этап схож с обычным делением в двоичной системе счисления. Здесь посредством повторяющихся вычитаний и сдвигов F (Y ) вправо вычисляется серия степеней двойки, формирующих итоговое частное. Таким образом, итерационный процесс деления состоит из сложений в СОК, а также вычитаний и сдвигов двоичных чисел, и поэтому выполняется эффективно. С другой стороны, как ив [41], при большом динамическом диапазоне для вычисления F (X ) и F (Y ) необходимо использовать многоразрядную арифметику, так как точность дробной части составляет N = |"log2 ™=i(mj — 1)] бит.

В [46] разработаны алгоритмы деления, общая структура которых аналогична известному алгоритму SRT (Sweeney, Robertson, Tocher) [77]: на каждой итерации основного цикла вычисляется знак остатка и выполняется соответствующая корректировка частного значением

— 1, 0 или 1 с последующим его удвоением. Для быстрого вычисления знака в СОК используется приближенная техника на основе вычисления округленного дробного представления EFa(X) « X/М (см. подраздел 2.2). Существенным достоинством алгоритмов является отсутствие многоразрядных операций — все вычисления выполняются с использованием величин ограниченной разрядности.

В [49] предложен алгоритм деления на основе вычисления интервальных оценок делителя и делимого. Пусть I(X/М) = [X/М, X/М] и I(Y/М) = [Y/М, Y/М] — интервальные оценки делимого (остатка) X и делителя Y. На каждой итерации алгоритма в арифметике с плавающей точкой вычисляется

q ^ flV (X/М - Y/M) ,

где flv означает, что вычисления внутри скобок выполняются с округлением «вниз» (к минус бесконечности). Поскольку q —число с плавающей точкой, оно имеет вид q = f х 2e, причем 1 < f < 2. Значение e используется в качестве адреса подстановочной таблицы для выбора очередного приближения частного Qi = (|2e|mi , |2e|m2 ,..., |2e|mn), после чего остаток X корректируется и I(X/M) вычисляется вновь. Итерации продолжаются до тех пор, пока X/М > Y/М. Таким образом, деление требует только операций по небольшим модулям mi и стандартных операций с плавающей точкой. В редких случаях после основного цикла может возникнуть неоднозначность, которая устраняется вызовом MRC алгоритма.

Также в [49] предложена улучшенная версия алгоритма деления, которая позволяет сократить количество вычислений I(X/М) путем анализа каждого ненулевого бита в q. Оба алгоритма были реализованы на GPU и протестированы на больших наборах модулей СОК с диапазонами от 64 до 4096 бит, показав существенное ускорение и экономию памяти по сравнению с многоразрядным алгоритмом из [44]. С другой стороны, как и в любых других алгоритмах на базе вычитания, если делитель значительно меньше делимого, то число итераций может быть большим.

В [76] разработан алгоритм, который вычисляет обратную величину делителя относительно диапазона СОК, используя итерации Ньютона.

Частное получается умножением делимого на обратную величину. Для промежуточных результатов используется расширенный набор модулей СОК, который обеспечивает приблизительно квадрат рабочего диапазона (т.е. разрядность расширенного диапазона в два раза больше разрядности рабочего диапазона), что может стать существенным ограничением. Кроме того, для получения финального результата требуется масштабирование (деление на М).

Алгоритм деления, предложенный в [79], итерационно вычисляет X = — У^, г = 1, 2, 3,..., начиная с Хо = X. Итерации

завершаются на г-й итерации, если Хг = 0 или = 0, а финальный результат деления вычисляется суммированием ^ с возможной прибавкой, определяемой значениями ^^, и Хг-1. На каждой итерации для нахождения очередной прибавки к частному ^ остаток Х4_1 преобразуется из СОК в систему со смешанными основаниями, что является довольно медленным. Кроме этого, алгоритм требует использования предварительно вычисленных таблиц, содержащих в общей сложности (ш„ — 1)(ш„ — 2)/2 + (п — 2)(п — 1)/2 слов. В [78] представлен улучшенный алгоритм деления, основанный на тех же принципах, но позволяющий снизить объем предварительно вычисляемых данных до Б да < ^Г=1(т» — 1) + (п — 2)(п — 1)/2 слов и имеющий на 5% меньшее среднее время выполнения.

В [80] и [81] деление выполняется путем нахождения новых делимого и делителя, которые меньше исходных операндов, но имеют то же соотношение. Целью является получение делителя, равного 1, так как в этом случае делимое будет являться искомым результатом деления. Процесс итерационный и предполагает на каждом шаге умножение делителя на мультипликативную инверсию по модулю М. Недостатком является необходимость в использовании вспомогательной СОК с диапазоном, не меньшим исходного диапазона, для избежания переполнения промежуточных результатов.

В таблице 2 сведены особенности рассмотренных алгоритмов деления, которые могут оказать существенное влияние на эффективность реализации, в первую очередь при использовании больших наборов модулей с динамическими диапазонами из сотен и тысяч бит.

Столбцы таблицы 2 обозначают следующее:

ROM объем предварительно вычисляемых данных может быть слишком большим;

MultiPrec используется многоразрядная арифметика;

FlPoint используется арифметика с плавающей точкой стандартной разрядности (32/64 бит);

MRC требуется преобразование в систему со смешанными основаниями (mixed-radix conversion);

BaseExt требуется расширение набора модулей СОК, т.е.

вычисление остатков по модулям на базе имеющихся остатков по другим модулям;

Restrict накладываются дополнительные ограничения на величину делимого или делителя.

Таблица 2. Ключевые особенности алгоритмов деления чисел в СОК

ROM Multiprec FlPoint MRC BaseExt Restrict

[39] • • о о о о

[44]* • о о о о о

[44]* • • о о о о

[46]* о о • • о •

[47] • • о о о о

[49]* о о • • о о

[74] • • о о о о

[75] о • о о о о

[76] о о о • • о

[79] • о о • • о

[78] • о о • • о

[80] • о о о • о

[81] о о о о • о

^ Реализация I. ^ Реализация II.

* ЫР.О требуется только в отдельных (неоднозначных) случаях.

3. Использование СОК в высокопроизводительных приложениях

В этом разделе представлено несколько современных приложений, в которых применяется система остаточных классов. Мы не рассматриваем такую классическую область, как цифровая обработка сигналов, поскольку данной теме посвящено множество работ (см, например, [15,16]). Другим известным приложением СОК является криптография [7,8,18,82,83], которую однако мы также исключили из рассмотрения, поскольку существуют современные обширные обзоры по данной теме [84,85].

3.1. Долгосрочная доступность и конфиденциальность данных в облачном хранилище

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Ежедневно во всем мире генерируются колоссальные объемы данных, требующие эффективного и безопасного хранения. Часто для этих целей используется облачное хранилище, состоящее из совокупности распределенных в сети серверов, управляемых хостинговой компанией (провайдером) и предоставляемых клиенту как единый логический пул с возможностью доступа через веб-интерфейс или API. Важнейшими задачами, стоящими перед сервисами облачного хранения, являются обеспечение долгосрочной доступности и конфиденциальности данных пользователей. Для решения этих задач M. Villari и др. [10] предложили механизм, основанный на использовании избыточной СОК с p + r модулями: модули mi • • • mp определяют рабочий диапазон системы, а модули mp+i • • • mp+r определяют избыточный диапазон. Механизм работает следующим образом.

Предварительно зашифрованные данные (файлы) пользователя посредством преобразования в СОК разбиваются на p + r сегментов, каждый из которых ассоциирован со своим модулем mj. Далее эти сегменты кодируются в BASE-64, записываются в специальные XML-оболочки и загружаются различным провайдерам облачных хранилищ, причем, по возможности каждому провайдеру загружается только один сегмент данных. Сводная информация по загруженным сегментам записывается в отдельный метафайл определенной структуры, который

либо хранится у пользователя, либо после определенных преобразований также загружается в облачное хранилище. Для получения данных сегменты загружаются из облачных хранилищ и декодируются из BASE-64, после чего восстанавливаются с использованием CRT формулы (1).

Описанный механизм распределенного хранения позволяет достичь двух важных целей:

(1) Высокая конфеденциальность, так как каждый провайдер обладает только г-й частью данных, соответствующих одному модулю СОК, и поэтому не сможет восстановить их.

(2) Долгосрочная доступность, так как даже если r сегментов данных по каким-либо причинам с течением времени окажутся недоступными, оставшихся p сегментов будет достаточно для однозначного CRT декодирования.

Таким образом, коэффициент избыточности СОК определяет максимальное число узлов (серверов), выход из строя которых не препятствует успешному восстановлению данных пользователя.

В [11] предложен улучшенный механизм распределенного хранения, в котором шифрование с использованием симметричного алгоритма (например, AES) применяется не к исходным данным, а по отдельности к каждому из p + r сегментов , т.е. уже после преобразования исходных данных в СОК. При этом ключи, необходимые для дальнейшего расшифрования, остаются у пользователя и недоступны для поставщиков облачных сервисов.

3.2. Оптимизированная схема хранения в сети блокчейна

Блокчейн—это распределенная база данных (реестр), представляющая собой выстроенную определенным образом непрерывную цепочку блоков с информацией, каждый из которых содержит свою собственную хеш-сумму и хеш-сумму предыдущего блока. Для обеспечения согласованности данных и их защиты от неправомерного изменения, копии цепочек блоков хранятся на множестве независящих друг от друга узлов сети. Первой известной реализацией блокчейна стала пиринговая платежная система Bitcoin, появившаяся в октябре 2008 года. С тех пор блокчейн-технологии привлекают к себе все больше внимания и

находят применение не только в банковском секторе, инвестициях и биржах, но также в медицине, образовании и государственном секторе.

Одним из главных узких мест блокчейна является огромный объем данных, которые необходимо хранить на каждом узле сети. Например, по состоянию на конец марта 2021 г., объем сети Bitcoin составлял более 335 ГБ. Поэтому оптимизация хранения данных без ущерба децентрализации и без изменения общей структуры цепочки блоков является важной проблемой технологии блокчейн.

H. Mei и др. предложили [6] оптимизированный механизм хранения данных блокчейна, функционирующий на базе распределенной СОК с набором модулей {mi, ..., mn}. При подключении к сети новый узел выбирает один модуль mj и хранит данные транзакций только по этому модулю, т.е. разные узлы хранят одни и те же данные, но по разным модулям. Полагая, что полные данные составляют k бит, а размер модуля— b бит, степень сжатия составляет b/k. Поскольку операции сложения и умножения в СОК выполняются независимо по разным модулям, каждый узел обновляет данные транзакций только по своему локальному модулю и взаимодействие между узлами не требуется. В свою очередь, для проверки достоверности данных транзакции узел собирает недостающие остатки по всем модулям с других узлов и восстанавливает их с использованием метода New CRT II, который рассматривался в разделе 2.1.3.

Помимо оптимизированного механизма хранения, в [6] предложена гибридная схема организации узлов, обеспечивающая консенсус в сети блокчейна (рисунок 2).

Согласно этой схеме, вся сеть узлов логически разбивается на три подсети. Первые две подсети, образованные узлами по модулям mi и m-2, имеют небольшой масштаб. Консенсус в этих подсетях обеспечивается алгоритмом Raft [86].

Третья подсеть формируется всеми другими узлами и синхронизируется на основе метода New CRT II. Зная, что данные по модулям mi и m-2 являются достоверными, New CRT II позволяет рекурсивно обнаружить некорректные остатки по оставшимся модулям шз, m-4,..., mn, тем самым выявить узлы, которые ненамеренно (вследствие сбоя) или намеренно (по злому умыслу) предоставляют недостоверные данные.

Подсеть 1 Подсеть 3 Подсеть 2

ущ/ 1

СлГ

У

/

\1 газ те 1/

т.................. т-2

Рисунок 2. Отказоустойчивая схема сети блокчейна на основе СОК (адаптация рисунка из [6])

3.3. Вычисления многократной точности

Арифметика с плавающей точкой является основой научных вычислений. Форматы чисел одинарной и двойной точности IEEE 754 (binary32 и binary64, соответственно) обеспечивают высокую производительность на современных компьютерах, но вместе с тем приводят к ошибке округления почти в каждой арифметической операции. Для многих типовых задач эти ошибки не препятствуют получению корректного результата. Вместе с тем, в связи с быстрым ростом масштаба вычислений, возникает все больше крупных задач, для которых точности стандартных форматов IEEE 754 оказывается недостаточно. В этом случае распространенным подходом является арифметика многократной точности [87], позволяющая выполнять операции с числами, разрядность которых превышает стандартные форматы, а в общем случае ограничена лишь объемом доступной памяти вычислительной системы.

Традиционный формат чисел многократной точности предполагает представление мантиссы в виде массива взвешенных цифр по фиксированному основанию, обычно равному некоторой степени двойки. Цифры мантиссы являются числами машинной точности [88]. Одно из узких мест алгоритмов, основанных на таком представлении — необходимость распространения переносов между цифрами мантиссы, приводящая к сильному ветвлению и медленной работе алгоритмов.

В этом отношении привлекательной альтернативой является СОК, в которой между остатками числа не возникает переносов.

В работе [20] использован формат представления чисел с плавающей точкой многократной точности на основе СОК, изображенный на рисунке 3.

Основная часть _Л_

Дополнительная информация

Ж]

Х2

хз

Хц

-Мантисса X в СОК-

х/м

х/м

1(Х/М)

Рисунок 3. Формат с плавающей точкой многократной точности

Число x представляется в виде объекта, состоящего из знака s, мантиссы X, целочисленного порядка (экспоненты) e, а также дополнительной информации о величине мантиссы — ее интервальной оценки I(X/M) = [X /M,X7M].

Знак интерпретируется так же, как и в двоичном дополнительном коде: знак равен единице, когда x положительное и нулю, когда оно отрицательное. Мантисса выражает абсолютное значение числа x и представлена в СОК остатками xi,x2,... ,xn относительно набора модулей {mi, m2,..., mn}. Остатки — обычные целые числа в дополнительном коде.

Значение числа можно вычислить, используя CRT формулу (1):

(-1)s

y^Mj|xjWi|r

х 2e

M

Для быстрой оценки величины мантиссы при выполнении немодульных операций в формат числа дополнительно включена ее интервальная оценка I(Х/М), рассмотренная в подразделе 2.2. Интервальная оценка вычисляется по остаткам (жх,ж2,...,!„) при преобразовании числа в многоразрядный формат. В свою очередь, при выполнении какой-либо арифметической операции интервальная оценка результата вычисляется с использованием формул интервальной арифметики за время 0(1), но также при необходимости может быть заново вычислена по остаткам

х

x

(xi, x2,... ,xn). Границы X/М и X/М являются числами с плавающей точкой стандартной разрядности, но с расширенным диапазоном экспоненты, что предотвращает потерю значимости в случае большой величины М (при М < 21000 для хранения границ достаточно стандартного формата binary64).

В [20] представлены алгоритмы выполнения основных арифметических операций в представленном числовом формате. Точность этих операций с учетом округления составляет « [log2 VMj — 1 бит. Таким образом, желаемая точность может быть достигнута выбором соответствующего набора модулей.

Также в [20] предложены оптимизированные алгоритмы для покомпонентной обработки векторов многократной точности с полностью параллельным вычислением всех цифр многоразрядных мантисс, ориентированные на GPU. В этих алгоритмах арифметические операции разбиваются на части, каждая из которых выполняется как отдельное CUDA ядро, как показано на рисунке 4. Впоследствии алгоритмы были

Хост

>

>

- Синхронизация -

Запуск Ядра 3

GPU

Ядро 1

Вычисление интервальных оценок

gridlhml biockDiml

■ ■■■■

Ядро 2

Полностью паралле

вычисление многоразрядных

мантисс в СОК

■ ■■■■ gridDimS

□ □□□□ х

■ ■■■■ blockDimS

Ядро 3

Округление результатов

■■■■■ ,

gridJJimj

blockDimS

■ ■■■■

Глобальная память

(йо,Й1,Й2,^,Йлг-1) (C0,Ci,C2,...,CA4)

Рисунок 4. Параллельная покомпонентная обработка векторов многократной точности на GPU (адаптация рисунка из [20])

расширены и адаптированы для вычислений с матрицами, и на их основе разработана библиотека базовых подпрограмм линейной алгебры многократной точности для GPU—MPRES-BLAS [19]. Эксперименты показали, что во многих случаях подпрограммы из MPRES-BLAS выполняются быстрее при одинаковой точности, чем аналогичные реализации, построенные на базе существующих позиционных библиотек многократной точности для CPU и GPU.

3.4. Глубокие нейронные сети

Глубокое обучение является одной из наиболее ярких технологий настоящего времени и применяется во многих сферах человеческой деятельности, связанных с обработкой больших объемов данных, включая поиск новых лекарственных препаратов, анализ медицинских изображений, прогнозирование качества сна, обнаружение финансового мошенничества и борьбу с отмыванием денег, предоставление таргети-рованной рекламы, распознавание речи, восстановление изображений и обработку естественного языка.

Однако применение глубоких нейронных сетей требует высокой пропускной способности памяти, так как вначале необходимо выполнить загрузку всех обученных весов, а затем сохранить результаты работы сети. Интенсивный обмен данными между процессором и памятью приводит к затратам времени и повышенному энергопотреблению и зачастую оказывается основным узким местом, особенно в условиях применения нейронных сетей в мобильных устройствах. Одним из многообещающих подходов к решению данной проблемы является концепция «вычислений в памяти» (processing-in-memory), предполагающая выполнение операций с данными непосредственно в памяти, т.е. без их загрузки в регистры процессора.

В работе [12] авторы использовали СОК для реализации глубокой нейронной сети RNSnet, работающей непосредственно в памяти устройства. RNSnet упрощает основные операции, выполняемые в сети, сводя их к сложению/вычитанию и выборке из памяти. В представленной реализации все входные данные и обученные веса преобразуются в СОК; функциональность каждого нейрона внутреннего слоя также реализована в СОК и не предполагает какого-либо обратного преобразования.

Использование набора модулей вида |24 — 1, 24, 24 + 1} позволило реализовать непосредственно в памяти все необходимые арифметические операции в RNSnet, в том числе умножение входов и весов нейронов. Умножение выполняется посредством нескольких сложений, вычитаний и выборок предварительно вычисленных значений. Сеть RNSnet поддерживает линейные и нелинейные функции активации, причем нелинейные функции аппроксимируются с использованием нескольких первых членов разложения в ряд Тейлора. Для слоя пулинга и некоторых функций активации, например ReLU, требуется выполнение операции сравнения. Поэтому авторы реализовали эффективный алгоритм сравнения чисел в СОК, использующий свойства модулей ± 1.

Ускоритель RNSnet реализован на языке описания аппаратуры SystemVerilog и синтезирован с использованием компилятора Synopsys Design по 45-нм технологии. Представленные в [12] экспериментальные результаты показывают, что использование СОК позволяет гибко настроить разрядность вычислений под конкретную задачу, решаемую нейронной сетью. Это обеспечивает более высокую производительность и низкое энергопотребление, а также существенную экономию памяти. На некоторых задачах RNSnet показала ускорение до 35 раз и снижение энергопотребления до 145 раз по сравнению с GPU реализациями глубоких нейронных сетей.

4. Заключение

Система остаточных классов — перспективная система счисления, популярность которой возрастает с развитием параллельных вычислительных архитектур. Независимость вычислений с остатками для операций сложения, вычитания и умножения делает эту систему привлекательным инструментом для многих приложений, критичных к скорости вычислений. С другой стороны, использование СОК на двоичных компьютерах требует поддержки эффективного обратного преобразования, а также сравнения, вычисления знака, деления и ряда других операций, которые являются сложными в силу непозиционной структуры системы.

Недостатком классического метода обратного преобразования является необходимость редукции по большому модулю M. Методы на основе техники New CRT II, диагональных и монотонных функций, хотя и не исключают полностью операцию редукции по модулю, но позволяют снизить ее размер до %/M, SQ и Mi, соответственно. Все эти методы требуют выполнения O(log n) операций при параллельной реализации. Метод на основе перехода к системе счисления по смешанным основаниям (MRC) исключает полностью операцию редукции, однако является медленным при большом размере набора модулей в силу своего последовательного характера, обладая сложностью O(n) при конвейерной реализации.

В связи с этим наиболее эффективным представляется метод на основе техники MR CRT, который не требует редукции по большому модулю и обладает сложностью O(log n). С другой стороны, если поддерживаются быстрые операции с дробными числами (в форматах с фиксированной или с плавающей точкой), то перспективными также выглядят методы, основанные на дробной версии CRT. В этих методах редукция по модулю M заменяется редукцией по модулю 1, которая сводится к простому отбрасыванию целой части вычисленной суммы. Однако из-за ошибок округления эти методы требуют вычислений с дробными величинами, разрядность которых превышает M.

Операции сравнения, определения знака и контроля переполнения диапазона играют ключевую роль при реализации высокопроизводительных алгоритмов в СОК на вычислительных системах общего назначения, таких как CPU и GPU. Ввиду ограниченной разрядной сетки, поддержка многоразрядной арифметики в таких системах реализуется посредством программной эмуляции и оказывается крайне затратной. Поэтому важно иметь возможность сравнения величин и выполнения связанных операций в СОК с использованием только небольших арифметических операций, ограниченных разрядной сеткой. Подходящим вариантом в данном контексте является MRC метод, требующий только операций по модулям mj для вычисления всех цифр смешанных представлений чисел. В свою очередь, почти все современные системы общего назначения поддерживают быстродействующую арифметику с плавающей точкой IEEE 754. Поэтому в качестве более эффективной альтернативы MRC может быть рекомендован

метод, основанный на вычислении интервальной оценки для дробного представления числа в СОК.

Производительность алгоритмов деления в СОК определяется соотношением между делимым и делителем, поскольку большинство алгоритмов деления позволяют за одну итерацию вычислить одну либо несколько цифр частного Q и, таким образом, обладают сложностью O(log Q). Среди различных вариантов деления популярны алгоритмы, основанные на вычислении и анализе старших (наиболее значимых) разрядов делимого и делителя. Для определения наиболее значимых разрядов числа X в СОК может быть использовано его дробное представление X/M, причем в аппаратных реализациях одно и то же устройство, вычисляющее X/M, может быть использовано как для деления, так и для обратного преобразования. В свою очередь, как уже упоминалось выше, в программных реализациях использование многоразрядных дробных представлений неэффективно, поэтому предпочтительны алгоритмы деления, вычисляющие приближенное (округленное) дробное представление. В любом случае операция деления является одной из наиболее трудоемких для СОК, поэтому следует по возможности избегать множественных делений, например, выполняя определенные модификации алгоритма.

Последние исследования показывают, что эффективное использование СОК уже не ограничивается задачами цифровой обработки сигналов и криптографии. Высоконадежные облачные хранилища, блокчейн-технологии, вычисления многократной точности и глубокие нейронные сети представляют далеко не полный перечень областей, в которых применение параллельной арифметики на основе СОК является целесообразным. Поэтому важно продолжать исследования, направленные на создание эффективных аппаратных и программных реализаций, позволяющих преодолеть основные узкие места этой непозиционной системы счисления.

Список литературы

[1] P. V. Ananda Mohan. Residue Number Systems: Theory and Applications,

Birkhäuser, Basel, 2016, ISBN 978-3-319-41385-3, x+351 pp. I ' 138 161

[2] A. Omondi, B. Premkumar. Residue Number Systems: Theory And

Implementation, Imperial College Press, London, UK, 2007, ISBN 978-186094-866-4. 138 140 142

[3] A. S. Molahosseini, L. Sousa. "Introduction to residue number system: structure and teaching methodology", Embedded Systems Design with Special Arithmetic and Number Systems, eds. A. S. Molahosseini, L. S. de Sousa, C. Chang, Springer, Cham, 2017, ISBN 978-3-319-49742-6, pp. 3-17. i 138

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

[4] И. Я. Акушинский, Д. И. Юдицкий. Машинная арифметика в остаточных классах, Сов. радио, М., 1968, 439 с. t138

[5] Z. Guo, Z. Gao, H. Mei, M. Zhao, J. Yang. "Design and optimization for storage mechanism of the public blockchain based on redundant residual number system", IEEE Access, 7 (2019), pp. 98546-98554. 138 146

[6] H. Mei, Z. Gao, Z. Guo, M. Zhao, J. Yang. "Storage mechanism optimization in blockchain system based on residual number system", IEEE Access, 7 (2019), pp. 114539-114546. I 1138 le8 169

[7] A. Qaisar Ahmad Al Badawi, Y. Polyakov, K. M. M. Aung, B. Veeravalli, K. Rohloff. "Implementation and performance evaluation of RNS variants of the BFV homomorphic encryption scheme", IEEE Transactions on Emerging Topics in Computing, 9:2 (2019), pp. 941-956. I ' 138 166

[8] J. Bajard, J. Eynard, M.A. Hasan, V. Zucca. "A full RNS variant of FV like somewhat homomorphic encryption schemes", Selected Areas in Cryptography, SAC 2016, Lecture Notes in Computer Science, vol. 10532, eds. R. Avanzi, H. Heys, Springer International Publishing, Cham, 2017, ISBN 978-3-319-69453-5, pp. 423-442. 138 166

[9] K. Givaki, R. Hojabr, M.H. Najafi, A. Khonsari, M.H. Gholamrezayi, S. Gorgin, D. Rahmati. "Using residue number systems to accelerate deterministic bit-stream multiplication", Proc. 2019 IEEE 30th International Conference on Application-Specific Systems, Architectures and Processors, ASAP (15-17 July 2019, New York, NY, USA), 2019, pp. 40. I 1138

[10] M. Villari, A. Celesti, F. Tusa, A. Puliafito. "Data reliability in multi-provider cloud storage service with RRNS", Advances in Service-Oriented and Cloud Computing, Communications in Computer and Information Science, vol. 393, eds. C. Canal, M. Villari, Springer, Berlin-Heidelberg, 2013, ISBN 978-3-642-45364-9, pp. 83-93. I ti38 iee

[11] A. Celesti, M. Fazio, M. Villari, A. Puliafito. "Adding long-term availability, obfuscation, and encryption to multi-cloud storage systems", Journal of Network and Computer Applications, 59 (2016), pp. 208-218. I ' 138 167

[12] S. Salamat, M. Imani, S. Gupta, T. Rosing. "RNSnet: in-Memory neural network acceleration using residue number system", Proc. 2018 IEEE International Conference on Rebooting Computing, ICRC, 7-9 Nov. 2018, McLean, VA, USA, pp. 1-12. I ' 13

139 172,173

[13] N. Samimi, M. Kamal, A. Afzali-Kusha, M. Pedram. "Res-DNN: A residue number system-Based DNN accelerator unit", IEEE Transactions on Circuits and Systems I: Regular Papers, 67:2 (2020), pp. 658-671. 1 139

[14] O. L. Usman, R. C. Muniyandi. "CryptoDL: predicting dyslexia biomarkers from encrypted neuroimaging dataset using energy-efficient residue number system and deep convolutional neural network", Symmetry, 12:5 (2020), 836, 24 pp. ti39

[15] P. V. Ananda Mohan. "RNS-Based arithmetic circuits and applications", Arithmetic Circuits for DSP Applications, Ch. 6, eds. P. K. Meher, T. Stouraitis, John Wiley and Sons, Ltd, 2017, ISBN 9781119206804, pp. 186-236.

^139,142,166

[16] G. C. Cardarilli, A. Nannarelli, M. Re. "RNS applications in digital signal processing", Embedded Systems Design with Special Arithmetic and Number Systems, eds. A. S. Molahosseini, L. S. de Sousa, C. Chang, Springer, Cham, 2017, ISBN 978-3-319-49742-6, pp. 181-215. I " 139 166

[17] D. Younes, P. Steffan. "Efficient image processing application using residue number system", Proc. 20th International Conference Mixed Design of Integrated Circuits and Systems, MIXDES 2013, 20-22 June 2013, Gdynia, Poland, pp. 468-472. 139

[18] E. Ochoa-Jimenez, L. Rivera-Zamarripa, N. Cruz-Cortes, F. Rodriguez-Henriquez. "Implementation of RSA signatures on GPU and CPU architectures", IEEE Access, 8 (2020), pp. 9928-9941. i ' 139 149 166

[19] K. Isupov, V. Knyazkov. "Multiple-Precision BLAS library for graphics processing units", RuSCDays 2020: Supercomputing, Communications in Computer and Information Science, vol. 1331, Springer International Publishing, Cham, 2020, ISBN 978-3-030-64616-5, pp. 37-49. I " 139 172

[20] K. Isupov, V. Knyazkov, A. Kuvaev. "Design and implementation of multiple-precision BLAS level 1 functions for graphics processing units", Journal of Parallel and Distributed Computing, 140 (2020), pp. 25-36.

^139,170,171

[21] V. Shoup. A Computational Introduction to Number Theory and Algebra, Cambridge University Press, Cambridge, UK, 2005, ISBN 9781139165464.

^140,142

[22] V. T. Goh, M. U. Siddiqi. "Multiple error detection and correction based on redundant residue number systems", IEEE Transactions on Communications, 56:3 (2008), pp. 325-330. d 141

[23] L. Sousa. "Nonconventional computer arithmetic circuits, systems and applications", IEEE Circuits and Systems Magazine, 21:1 (2021), pp. 6-40.

[24] C. Chang, A. S. Molahosseini, A. A. E. Zarandi, T. F. Tay. "Residue number systems: A new paradigm to datapath optimization for low-power and high-performance digital signal processing applications", IEEE Circuits and Systems Magazine, 15:4 (2015), pp. 26-44. ' 142

[25] N. S. Szabo, R. I. Tanaka. Residue Arithmetic and its Application to Computer Technology, McGraw-Hill, New York, USA, 1967, ISBN 978-0070626591,

236 pp. tl42,143,161

[26] D. E. Knuth. The Art of Computer Programming. V. 2: Seminumerical Algorithms, 3rd ed., Addison-Wesley, USA, 1997, ISBN 0201896842, 784 pp.

^142,144

[27] H. M. Yassine, W. R. Moore. "Improved mixed-radix conversion for residue number system architectures", IEE Proceedings G (Circuits, Devices and Systems), 138:1 (1991), pp. 120-124. d 144

[28] M. Akkal, P. Siy. "A new mixed radix conversion algorithm MRC-II",

Journal of Systems Architecture, 53:9 (2007), pp. 577-586. 144

[29] Y. Wang. "New Chinese remainder theorems", Conference Record of Thirty-Second Asilomar Conference on Signals, Systems and Computers. V. 1 (1-4 Nov. 1998, Pacific Grove, CA, USA), 1998, ISBN 0-7803-5148-7, pp. 165-171.

[30] Y. Wang. "Residue-to-binary converters based on new Chinese remainder theorems", IEEE Transactions on Circuits and Systems II: Analog and

Digital Signal Processing, 47:3 (2000), pp. 197-205. 1146 161

[31] W. Zhang, P. Siy. "An efficient design of residue to binary converter for four moduli set {2" - 1, 2" + 1, 22" - 2, 22,1+1 - 3} based on new CRT II", Information Sciences, 178:1 (2008), pp. 264-279. I ti45

[32] A. S. Molahosseini, K. Navi, C. Dadkhah, O. Kavehei, S. Timarchi. "Efficient reverse converter designs for the new 4-Moduli sets {2n - 1, 2n, 2n + 1, 22n+1 - 1} and {2n - 1, 2n + 1, 22n, 22n + 1} based on new CRTs", IEEE Transactions on Circuits and Systems I: Regular Papers, 57:4 (2010), pp. 823-835. 146

[33] S. Bi, W. Gross. "The mixed-Radix Chinese remainder theorem and its applications to residue comparison", IEEE Transactions on Computers, 57:12 (2008), pp. 1624-1632. 1 ' 146 163 190

[34] G. Dimauro, S. Impedovo, G. Pirlo. "A new technique for fast number comparison in the residue number system", IEEE Transactions on Computers, 42:5 (1993), pp. 608-612. d - 146'163 160

[35] G. Dimauro, S. Impedovo, G. Pirlo, A. Salzo. "RNS architectures for the implementation of the 'diagonal function'", Information Processing Letters, 73:5-6 (2000), pp. 189-198. 146

[36] P. V. Ananda Mohan. "RNS to binary conversion using diagonal function and Pirlo and Impedovo monotonic function", Circuits, Systems, and Signal Processing, 35:3 (2016), pp. 1063-1076. 147 148

[37] G. Pirlo, D. Impedovo. "A new class of monotone functions of the residue number system", International Journal of Mathematical Models and Methods in Applied Sciences, 7:9 (2013), pp. 802-809. url 147 148

[38] M. Soderstrand, C. Vernia, J. Chang. "An improved residue number system digital-to-analog converter", IEEE Transactions on Circuits and Systems, 30:12 (1983), pp. 903-907. t148

[39] M. Lu, J. Chiang. "A novel division algorithm for the residue number

system", IEEE Transactions on Computers, 41:8 (1992), pp. 1026-1032.

^149,154,155,160,161,165

[40] K. Isupov, V. Knyazkov. "Interval estimation of relative values in residue number system", Journal of Circuits, Systems and Computers, 27:1 (2018), pp. 1850004.

[41] Н. И. Червяков, М. Г. Бабенко, П. А. Ляхов, И. Н. Лавриненко. «Приближенный метод сравнения модулярных чисел и его применение для деления чисел в системе остаточных классов», Кибернетика и системный анализ, 50:6 (2014), с. 176-186. t149 155 160 162

[42] Jin Yul Kim, Kyu Ho Park, Hwang Soo Lee. "Efficient residue-to-binary conversion technique with rounding error compensation", IEEE Transactions on Circuits and Systems, 38:3 (1991), pp. 315-317. I

[43] H. Bronnimann, I. Z. Emiris, V. Y. Pan, S. Pion. "Sign determination in residue number systems", Theoretical Computer Science, 210:1 (1999), pp. 173-197.

[44] A. A. Hiasat, H. S. Abdel-Aty-Zohdy. "Design and implementation of an RNS division algorithm", Proc. 13th IEEE Sympsoium on Computer Arithmetic (6-9 July 1997, Asilomar, CA, USA), 1997, ISBN 0-8186-7846-1, pp. 240-249.

d t

149 161 162 163 165

[45] А. С. Коржавина, В. С. Князьков. «Реализация высокоточных вычислений в базисе модулярно-интервальной арифметики», Программные

системы: теория и приложения, 10:3(42) (2019), с. 81—127. I 160

[46] C. Y. Hung, B. Parhami. "An approximate sign detection method for residue numbers and its application to RNS division", Computers & Mathematics

with Applications, 27:4 (1994), pp. 23-35. ti49 ise is- ieo 162 165

[47] J. Yang, C. Chang , C. Chen. "A high-speed division algorithm in residue number system using parity-checking technique", International Journal of

Computer Mathematics, 81:6 (2004), pp. 775-780. I ' 149 162 166

[48] R. Conway, J. Nelson. "New CRT-based RNS converter using restricted moduli set", IEEE Transactions on Computers, 52:5 (2003), pp. 572-578.

^149,151

[49] K. Isupov. "Using floating-point intervals for non-modular computations

in residue number system", IEEE Access, 8 (2020), pp. 58603-58619.

^149,150,159,163,165

[50] S. Arthireena, G. Shanmugavadivel. "Efficient sign detection using parallel prefix adder", Proc. 2017 IEEE International Conference on Electrical, Instrumentation and Communication Engineering, ICEICE, IEEE, 27-28 April 2017, Karur, India, pp. 1-5. 149

[51] S. Kawamura, M. Koike, F. Sano, A. Shimbo. "Cox-Rower architecture for fast parallel Montgomery multiplication", Advances in Cryptology, EUROCRYPT 2000, Lecture Notes in Computer Science, vol. 1807, ed. B. Preneel, Springer, Berlin-Heidelberg, 2000, ISBN 978-3-540-45539-4, pp. 523-538.

[52] T. V. Vu. "Efficient implementations of the Chinese remainder theorem for sign detection and residue decoding", IEEE Transactions on Computers, C-34:7 (1985), pp. 646-651. d t149 154 155 ieo

[53] S. J. Meehan, S. D. O'Neil, J. J. Vaccaro. "An universal input and output RNS converter", IEEE Transactions on Circuits and Systems, 37:6 (1990), pp. 799-803.

[54] N. Chervyakov, A. S. Molahosseini, P. A. Lyakhov, M. G. Babenko, M. A. Deryabin. "Residue-to-binary conversion for general moduli sets based on approximate Chinese remainder theorem", International Journal of

Computer Mathematics, 94:9 (2017), pp. 1833-1849. i 149 161

[55] N. Whitehead, A. Fit-Florea. Precision & performance: floating point and IEEE 754 compliance for NVIDIA CPUs, 2011 (Accessed 20 March 2021), 7 PP. © 150

[56] N. Burgess. "Scaled and unscaled residue number system to binary conversion techniques using the core function", Proc. 13th IEEE Sympsoium on Computer Arithmetic, 6-9 July 1997, Asilomar, CA, USA, ISBN 0-8186-7846-1, pp. 250-257.

[57] Shaoqiang Bi, Wei Wang, A. Al-Khalili. "New modulo decomposed residue-to-binary algorithm for general moduli sets", Proc. 2004 IEEE International Conference on Acoustics, Speech, and Signal Processing. V. V, 17-21 May 2004, Montreal, QC, Canada, ISBN 0-7803-8484-9, pp. 141-144. f160

[58] A. Omondi. "Fast residue-to-binary conversion using base extension and the Chinese remainder theorem", Journal of Circuits, Systems and Computers, 16:3 (2007), pp. 379-388. I ' 160

[59] N. Burgess. "Efficient RNS to binary conversion using high-radix SRT division", Conference Record of Thirty-Second Asilomar Conference on Signals, Systems and Computers. V. 2, 1-4 Nov. 1998, Pacific Grove, CA, USA, 1998, ISBN 0-7803-5148-7, pp. 1240-1243. 160

[60] J. Chen, R. Yao. "Efficient CRT-based residue-to-binary converter for the arbitrary moduli set", Science China Information Sciences, 54:1 (2011), PP- 70-78.

[61] P. Patronik. "On reverse converters for arbitrary multi-moduli RNS", Integration, 75 (2020), pp. 158-167. tisi

[62] A. Hiasat. "A residue-to-binary converter with an adjustable structure for an extended RNS three-moduli set", Journal of Circuits, Systems and Computers, 28:08 (2019), 1950126. 161

[63] L. Sousa, S. Antao. "MRC-based RNS reverse converters for the four-moduli sets {2n + 1, 2n - 1, 2n, 22n+1 - 1} and {2n + 1, 2n - 1, 22n, 22n+1 - 1}", IEEE Transactions on Circuits and Systems II: Express Briefs, 59:4 (2012), pp. 244-248. 161

[64] P. V. Ananda Mohan. "Reverse conversion using core function, CRT and mixed radix conversion", Circuits, Systems, and Signal Processing, 36:7 (2017), pp. 2847-2874. 161

[65] E.K. Bankas, K.A. Gbolagade. "An efficient VLSI design of residue to binary converter circuit for a new moduli set {22n, 22n-1 - 1, 22n-1 + 1}", Proc. 2019 IEEE 4th International Conference on Integrated Circuits and Microsystems, ICICM (25-27 Oct. 2019, Beijing, China), pp. 24-28. 161

[66] A. S. Molahosseini, A. A. E. Zarandi, P. Martins, L. Sousa. "A multifunctional unit for designing efficient RNS-Based datapaths", IEEE Access, 5 (2017), pp. 25972-25986. I 1161

[67] Y. Wang, X. Song, M. Aboulhamid. "A new algorithm for RNS magnitude comparison based on New Chinese remainder theorem II", Proc. Ninth Great Lakes Symposium on VLSI (4-6 March 1999, Ypsilanti, MI, USA), ISBN 0-7695-0104-4, pp. 362-365. f163 iso

[68] S. J. Piestrak. "A note on RNS architectures for the implementation of the diagonal function", Information Processing Letters, 115:4 (2015), pp. 453-457.

[69] G. Pirlo. "Non-modular operations of the residue number system: functions for computing", Embedded Systems Design with Special Arithmetic and Number Systems, eds. A. S. Molahosseini, L. S. de Sousa, C. Chang, Springer, Cham, 2017, ISBN 978-3-319-49742-6, pp. 49-64. f164

[70] M. Babenko, M. Deryabin, S. J. Piestrak, P. Patronik, N. Chervyakov, A. Tchernykh, A. Avetisyan. "RNS number comparator based on a modified diagonal function", Electronics, 9:11 (2020), 1784, 16 pp. I ' 166 160

[71] K. Isupov. "High-performance computation in residue number system using floating-point arithmetic", Computation, 9:2 (2021), 9, 15 pp. 169

[72] D. S. Phatak, S. D. Houston. "New distributed algorithms for fast sign detection in residue number systems (RNS)", Journal of Parallel and Distributed Computing, 97 (2016), pp. 78-95. I flsg 160

[73] A. A. Hiasat, H. Abdel-Aty-Zohdy. "Semi-Custom VLSI design and implementation of a new efficient RNS division algorithm", The Computer Journal, 42:3 (1999), pp. 232-240. 1162

[74] C. Chang, J. Yang. "A division algorithm using bisection method in residue number system", International Journal of Computer, Consumer and Control (IJSC), 2:1 (2013), pp. 59-66. .url 162 166

[75] N. Chervyakov, P. Lyakhov, M. Babenko, A. Nazarov, M. Deryabin, I. Lavrinenko, A. Lavrinenko. "A high-speed division algorithm for modular numbers based on the Chinese remainder theorem with fractions and its hardware implementation", Electronics, 8:3 (2019), 261, 17 pp. 166

[76] M. A. Hitz, E. Kaltofen. "Integer division in residue number systems", IEEE Transactions on Computers, 44:8 (1995), pp. 983-989. 163 166

[77] M. Mccann, N. Pippenger. "SRT division algorithms as dynamical systems", Proc. 2003 16th IEEE Symposium on Computer Arithmetic (15-18 June 2003, Santiago de Compostela, Spain), ISBN 0-7695-1894-X, pp. 46-53. ^162

[78] W. A. Chren Jr.. "A new residue number system division algorithm",

Computers & Mathematics with Applications, 19:7 (1990), pp. 13-29.

^164,165

[79] D. K. Banerji, T. Cheung, V. Ganesan. "A high-speed division method in residue arithmetic", 5th IEEE Symposium on Computer Arithmetic (18-19 May 1981, Ann Arbor, Michigan, USA), 1981, pp. 158-164. url 164 166

[80] D. Gamberger. "New approach to integer division in residue number systems", Proc. 10th IEEE Sympsoium on Computer Arithmetic (26-28 June 1991, Grenoble, France), ISBN 0-8186-9151-4, pp. 84-91. 1 164 166

[81] C. Chang, Y. Lai. "A division algorithm for residue numbers", Appl. Math. Comput., 172:1 (2006), pp. 36 8-378. 1164 166

[82] N. Mukhtar, L. Papachristodoulou, A. P. Fournaris, L. Batina, Y. Kong. Machine-learning assisted side-channel attacks on RNS-based elliptic curve implementations using hybrid feature engineering, Cryptology ePrint Archive, Report 2020/1065, 2020, 31 pp. url 166

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

[83] S. Kawamura, Y. Komano, H. Shimizu, T. Yonemura. "RNS Montgomery reduction algorithms using quadratic residuosity", Journal of Cryptographic Engineering, 9:4 (2019), pp. 313-331. 166

[84] D. Schoinianakis. "Residue arithmetic systems in cryptography: a survey on modern security applications", Journal of Cryptographic Engineering, 10:3 (2020), pp. 249-267. 166

[85] P. Martins, L. Sousa. "The role of non-positional arithmetic on efficient emerging cryptographic algorithms", IEEE Access, 8 (2020), pp. 59533-59549. d t

166

[86] D. Ongaro, J. Ousterhout. "In search of an understandable consensus algorithm", Proceedings of USENIX ATC'14: 2014 USENIX Annual Technical Conference (June 19-20, 2014, Philadelphia, PA, USA), ISBN 978-1-931971-10-2, pp. 305-320. .url 168

[87] D. Bailey, J. Borwein. "High-precision arithmetic in mathematical physics",

Mathematics, 3:2 (2015), pp. 337-367. I 1169

[88] R. Brent, P. Zimmermann. Modern Computer Arithmetic, Cambridge University Press, Cambridge, 2010, ISBN 9780511921698. 169

Поступила в редакцию 02.04.2021 Переработана 22.05.2021

Опубликована 28.06.2021

Рекомендовал к публикации

проф. НН. Непейвода

Пример ссылки на эту публикацию:

К. С. Исупов. «Высокопроизводительные вычисления с использованием системы остаточных классов». Программные системы: теория и приложения, 2021, 12:2(49), с. 137-192. 10.25209/2079-3316-2021-12-2-137-192

url; http : //psta.psiras . ru/read/psta2021_2_137- 192. pdf

Об авторе:

Константин Сергеевич Исупов

Кандидат технических наук, доцент кафедры электронных вычислительных машин Вятского государственного университета. Область научных интересов: высокоточные вычисления, система остаточных классов, компьютерная арифметика, параллельные алгоритмы, программирование для графических процессоров, GPGPU.

[Dra 0000-0003-0239-0404 e-mail: ks_isup0v@vyatsu.ru

CSCSTI 50.33.04 UDC 004.222+004.272

Konstantin S. Isupov. An overview of high-performance computing using the residue number system.

Abstract. A residue number system (RNS) is a non-positional number system, an alternative to a binary representation of numbers. In RNS, a large integer is represented as a set of smaller numbers, which are the remainders ("residues") of dividing its original value by some moduli. An exciting feature of the RNS is that addition, subtraction, and multiplication with each residue are performed independently, which provides parallel, carry-free, and high-speed computer arithmetic. On the other hand, non-modular operations that require estimating the magnitude of a number by its residues are challenging to implement in RNS since there is no parallel form for them.

This paper provides an overview of research on the implementation and practical application of high-performance computational techniques for RNS. More specifically, the paper addresses the following two aspects:

• Existing techniques for performing the most critical non-modular operations: reverse conversion, magnitude comparison, sign identification, and division;

• How RNS arithmetic finds practical application in cloud environments, blockchain technologies, multiple-precision computation, and deep neural networks.

The research was aimed at the wider use of non-positional number systems in resource-intensive applications.

Key words and phrases: system of residual classes, non-modular operations, high performance computing, parallel algorithms.

2020 Mathematics Subject Classification: 68W10; 68W35, 68M07

The reported study was funded by RFBR, project number 20-17-50166.

© K. S. Isupov, 2021

© Vyatka State University, 2021

© Program Systems: Theory and Applications (design), 2021

DO 10.25209/2079-3316-2021-12-2-137-192^^^^^^^^^^^^^^^^^^^! lY&Jj1

References

[1] P. V. Ananda Mohan. Residue Number Systems: Theory and Applications, Birkhauser, Basel, 2016, ISBN 978-3-319-41385-3, x+351 pp. I f138 161

[2] A. Omondi, B. Premkumar. Residue Number Systems: Theory And Implementation, Imperial College Press, London, UK, 2007, ISBN 978-1-86094-866-4. 138 140 142

[3] A. S. Molahosseini, L. Sousa. "Introduction to residue number system: structure and teaching methodology", Embedded Systems Design with Special Arithmetic and Number Systems, eds. A. S. Molahosseini, L. S. de Sousa, C. Chang, Springer, Cham, 2017, ISBN 978-3-319-49742-6, pp. 3-17. d 1138

[4] I. Ya. Akushinskiy, D. I. Yuditskiy. Computer Arithmetic in Residue Classes, Sov. radio, M., 1968 (in Russian), 439 pp.f138

[5] Z. Guo, Z. Gao, H. Mei, M. Zhao, J. Yang. "Design and optimization for storage mechanism of the public blockchain based on redundant residual number system", IEEE Access, 7 (2019), pp. 98546-98554. d - 138 146

[6] H. Mei, Z. Gao, Z. Guo, M. Zhao, J. Yang. "Storage mechanism optimization in blockchain system based on residual number system", IEEE Access, 7 (2019), pp. 114539-114546. I f138 168 169

[7] A. Qaisar Ahmad Al Badawi, Y. Polyakov, K. M. M. Aung, B. Veeravalli, K. Rohloff. "Implementation and performance evaluation of RNS variants of the BFV homomor-phic encryption scheme", IEEE Transactions on Emerging Topics in Computing, 9:2 (2019), pp. 941-956. d - 138 166

[8] J. Bajard, J. Eynard, M. A. Hasan, V. Zucca. "A full RNS variant of FV like somewhat homomorphic encryption schemes", Selected Areas in Cryptography, SAC 2016, Lecture Notes in Computer Science, vol. 10532, eds. R. Avanzi, H. Heys, Springer International Publishing, Cham, 2017, ISBN 978-3-319-69453-5, pp. 423-442.

[9] K. Givaki, R. Hojabr, M.H. Najafi, A. Khonsari, M. H. Gholamrezayi, S. Gorgin, D. Rahmati. "Using residue number systems to accelerate deterministic bit-stream multiplication", Proc. 2019 IEEE 30th International Conference on Application-Specific Systems, Architectures and Processors, ASAP (15-17 July 2019, New York, NY, USA), 2019, pp. 40. d - 138

[10] M. Villari, A. Celesti, F. Tusa, A. Puliafito. "Data reliability in multi-provider cloud storage service with RRNS", Advances in Service-Oriented and Cloud Computing, Communications in Computer and Information Science, vol. 393, eds. C. Canal, M. Villari, Springer, Berlin-Heidelberg, 2013, ISBN 978-3-642-45364-9, pp. 83-93.

138 166

[11] A. Celesti, M. Fazio, M. Villari, A. Puliafito. "Adding long-term availability, obfuscation, and encryption to multi-cloud storage systems", Journal of Network and, Computer Applications, 59 (2016), pp. 208—218. 138 167

[12] S. Salamat, M. Imani, S. Gupta, T. Rosing. "RNSnet: in-Memory neural network acceleration using residue number system", Proc. 2018 IEEE International Conference on Rebooting Computing, ICRC, 7-9 Nov. 2018, McLean, VA, USA, pp. 1-12. f139 172 173

[13] N. Samimi, M. Kamal, A. Afzali-Kusha, M. Pedram. "Res-DNN: A residue number system-Based DNN accelerator unit", IEEE Transactions on Circuits and Systems I: Regular Papers, 67:2 (2020), pp. 658-671. I f139

[14] O. L. Usman, R. C. Muniyandi. "CryptoDL: predicting dyslexia biomarkers from encrypted neuroimaging dataset using energy-efficient residue number system and deep convolutional neural network", Symmetry, 12:5 (2020), 836, 24 pp. 139

[15] P. V. Ananda Mohan. "RNS-Based arithmetic circuits and applications", Arithmetic Circuits for DSP Applications, Ch. 6, eds. P. K. Meher, T. Stouraitis, John Wiley and Sons, Ltd, 2017, ISBN 9781119206804, pp. 186-236. 139 142 166

[16] G. C. Cardarilli, A. Nannarelli, M. Re. "RNS applications in digital signal processing", Embedded Systems Design with Special Arithmetic and Number Systems, eds. A. S. Molahosseini, L. S. de Sousa, C. Chang, Springer, Cham, 2017, ISBN 978-3-319-49742-6, pp. 181-215. 139 166

[17] D. Younes, P. Steffan. "Efficient image processing application using residue number system", Proc. 20th International Conference Mixed Design of Integrated Circuits and Systems, MIXDES 2013, 20-22 June 2013, Gdynia, Poland, pp. 468-472. 139

[18] E. Ochoa-Jiménez, L. Rivera-Zamarripa, N. Cruz-Cortés, F. Rodríguez-Henríquez. "Implementation of RSA signatures on GPU and CPU architectures", IEEE Access, 8 (2020), pp. 9928-9941. d - 139 149 166

[19] K. Isupov, V. Knyazkov. "Multiple-Precision BLAS library for graphics processing units", RuSCDays 2020: Supercomputing, Communications in Computer and Information Science, vol. 1331, Springer International Publishing, Cham, 2020, ISBN 978-3-030-64616-5, pp. 37-49. d 139 172

[20] K. Isupov, V. Knyazkov, A. Kuvaev. "Design and implementation of multiple-precision BLAS level 1 functions for graphics processing units", Journal of Parallel

and, Distributed Computing, 140 (2020), pp. 25—36. I ^^ 170 171

[21] V. Shoup. A Computational Introduction to Number Theory and Algebra, Cambridge University Press, Cambridge, UK, 2005, ISBN 9781139165464. 140 142

[22] V. T. Goh, M. U. Siddiqi. "Multiple error detection and correction based on redundant residue number systems", IEEE Transactions on Communications, 56:3 (2008), pp. 325-330. i f141

[23] L. Sousa. "Nonconventional computer arithmetic circuits, systems and applications", IEEE Circuits and Systems Magazine, 21:1 (2021), pp. 6-40. I f141

[24] C. Chang, A. S. Molahosseini, A. A. E. Zarandi, T. F. Tay. "Residue number systems: A new paradigm to datapath optimization for low-power and high-performance digital signal processing applications", IEEE Circuits and Systems Magazine, 15:4 (2015), pp. 26-44.

[25] N. S. Szabo, R. I. Tanaka. Residue Arithmetic and its Application to Computer Technology, McGraw-Hill, New York, USA, 1967, ISBN 978-0070626591, 236 pp.

^142,143,161

[26] D. E. Knuth. The Art of Computer Programming. V. 2: Seminumerical Algorithms, 3rd ed., Addison-Wesley, USA, 1997, ISBN 0201896842, 784 pp. 142 144

[27] H. M. Yassine, W. R. Moore. "Improved mixed-radix conversion for residue number system architectures", IEE Proceedings G (Circuits, Devices and Systems), 138:1 (1991), pp. 120-124. i ti44

[28] M. Akkal, P. Siy. "A new mixed radix conversion algorithm MRC-II", Journal of Systems Architecture, 53:9 (2007), pp. 577-586. 144

[29] Y. Wang. "New Chinese remainder theorems", Conference Record of Thirty-Second Asilomar Conference on Signals, Systems and Computers. V. 1 (1—4 Nov. 1998, Pacific Grove, GA, USA), 1998, ISBN 0-7803-5148-7, pp. 165-171. 146

[30] Y. Wang. "Residue-to-binary converters based on new Chinese remainder theorems", IEEE Transactions on Circuits and Systems II: Analog and Digital Signal Processing, 47:3 (2000), pp. 197-205. d 146 161

[31] W. Zhang, P. Siy. "An efficient design of residue to binary converter for four moduli set {2" - 1, 2" + 1, 22" - 2, 22,I+1 - 3} based on new CRT II", Information Sciences, 178:1 (2008), pp. 264-279. d f146

[32] A. S. Molahosseini, K. Navi, C. Dadkhah, O. Kavehei, S. Timarchi. "Efficient reverse converter designs for the new 4-Moduli sets {2n — 1, 2n, 2n + 1, 22n+1 — 1} and {2" - 1, 2" + 1, 22" , 22" + 1} based on new CRTs", IEEE Transactions on Circuits and, Systems I: Regular Papers, 57:4 (2010), pp. 823—835. d 146

[33] S. Bi, W. Gross. "The mixed-Radix Chinese remainder theorem and its applications to residue comparison", IEEE Transactions on Computers, 57:12 (2008), pp. 16241632. 146 163 160

[34] G. Dimauro, S. Impedovo, G. Pirlo. "A new technique for fast number comparison in the residue number system", IEEE Transactions on Computers, 42:5 (1993), pp. 608-612. d 146 163 160

[35] G. Dimauro, S. Impedovo, G. Pirlo, A. Salzo. "RNS architectures for the implementation of the 'diagonal function'", Information Processing Letters, 73:5-6 (2000), pp. 189-198. d f146

[36] P. V. Ananda Mohan. "RNS to binary conversion using diagonal function and Pirlo and Impedovo monotonic function", Circuits, Systems, and Signal Processing, 35:3 (2016), pp. 1063-1076. d 1147148

[37] G. Pirlo, D. Impedovo. "A new class of monotone functions of the residue number system", International Journal of Mathematical Models and Methods in Applied Sciences, 7:9 (2013), pp. 802-809. url: 147 148

[38] M. Soderstrand, C. Vernia, J. Chang. "An improved residue number system digital-to-analog converter", IEEE Transactions on Circuits and Systems, 30:12 (1983), pp. 903-907. i f148

[39] M. Lu, J. Chiang. "A novel division algorithm for the residue number system", IEEE Transactions on Computers, 41:8 (1992), pp. 1026-1032. d - 149 164 166 160 161 166

[40] K. Isupov, V. Knyazkov. "Interval estimation of relative values in residue number system", Journal of Circuits, Systems and Computers, 27:1 (2018), pp. 1850004.

^149,150,157,160

[41] N.I. Chervyakov, M. G. Babenko, P. A. Lyakhov, I.N. Lavrinenko. "An approximate method for comparing modular numbers and its application to the division of

numbers in residue number systems", Cybernetics and Systems Analysis, 50:6 (2014), pp. 977-984. d f149 155 ieo 162

[42] Jin Yul Kim, Kyu Ho Park, Hwang Soo Lee. "Efficient residue-to-binary conversion technique with rounding error compensation", IEEE Transactions on Circuits and Systems, 38:3 (1991), pp. 315-317. d - 149

[43] H. Bronnimann, I. Z. Emiris, V. Y. Pan, S. Pion. "Sign determination in residue number systems", Theoretical Computer Science, 210:1 (1999), pp. 173—197.

^149,157,160

[44] A. A. Hiasat, H.S. Abdel-Aty-Zohdy. "Design and implementation of an RNS division algorithm", Proc. 13th IEEE Sympsoium on Computer Arithmetic (6—9 July 1997, Asilomar, CA, USA), 1997, ISBN 0-8186-7846-1, pp. 240-249.

tl49,161,162,163,165

[45] A. S. Korzhavina, V. S. Knyaz'kov. "High-precision computations using residue-interval arithmetic on FPGAs", Program Systems: Theory and Applications, 10:3(42) (2019), pp. 81—127 (in Russian), d 1149160

[46] C. Y. Hung, B. Parhami. "An approximate sign detection method for residue numbers and its application to RNS division", Computers & Mathematics with Applications, 27:4 (1994), pp. 23-35. d - 149 166 167 160 162 166

[47] J. Yang, C. Chang , C. Chen. "A high-speed division algorithm in residue number system using parity-checking technique", International Journal of Computer Mathematics, 81:6 (2004), pp. 775-780. 149 162 166

[48] R. Conway, J. Nelson. "New CRT-based RNS converter using restricted moduli set", IEEE Transactions on Computers, 52:5 (2003), pp. 572-578. f149 161

[49] K. Isupov. "Using floating-point intervals for non-modular computations in residue number system", IEEE Access, 8 (2020), pp. 58603-58619. 149 160 169 163 166

[50] S. Arthireena, G. Shanmugavadivel. "Efficient sign detection using parallel prefix adder", Proc. 2017 IEEE International Conference on Electrical, Instrumentation and Communication Engineering, ICEICE, IEEE, 27-28 April 2017, Karur, India, pp. 1-5. d 1149

[51] S. Kawamura, M. Koike, F. Sano, A. Shimbo. "Cox-Rower architecture for fast parallel Montgomery multiplication", Advances in Cryptology, EUROCRYPT 2000, Lecture Notes in Computer Science, vol. 1807, ed. B. Preneel, Springer, BerlinHeidelberg, 2000, ISBN 978-3-540-45539-4, pp. 523-538. 149

[52] T. V. Vu. "Efficient implementations of the Chinese remainder theorem for sign detection and residue decoding", IEEE Transactions on Computers, C-34:7 (1985), pp. 646-651. d 149 164 166 160

[53] S.J. Meehan, S. D. O'Neil, J.J. Vaccaro. "An universal input and output RNS converter", IEEE Transactions on Circuits and Systems, 37:6 (1990), pp. 799-803. " Î149

[54] N. Chervyakov, A. S. Molahosseini, P. A. Lyakhov, M. G. Babenko, M. A. Deryabin. "Residue-to-binary conversion for general moduli sets based on approximate Chinese remainder theorem", International Journal of Computer Mathematics, 94:9 (2017), pp. 1833-1849. 149 161

[55] N. Whitehead, A. Fit-Florea. Precision & performance: floating point and IEEE 754 compliance for NVIDIA CPUs, 2011 (Accessed 20 March 2021), 7 pp. urn 160

[56] N. Burgess. "Scaled and unscaled residue number system to binary conversion techniques using the core function", Proc. 13th IEEE Sympsoium on Computer Arithmetic, 6-9 July 1997, Asilomar, GA, USA, ISBN 0-8186-7846-1, pp. 250-257.

d tl50

[57] Shaoqiang Bi, Wei Wang, A. Al-Khalili. "New modulo decomposed residue-to-binary algorithm for general moduli sets", Proc. 2004 IEEE International Conference on Acoustics, Speech, and Signal Processing. V. V, 17-21 May 2004, Montreal, QC, Canada, ISBN 0-7803-8484-9, pp. 141-144. d - 160

[58] A. Omondi. "Fast residue-to-binary conversion using base extension and the Chinese remainder theorem", Journal of Circuits, Systems and Computers, 16:3 (2007), pp. 379-388. d 160

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

[59] N. Burgess. "Efficient RNS to binary conversion using high-radix SRT division", Conference Record of Thirty-Second Asilomar Conference on Signals, Systems and Computers. V. 2, 1-4 Nov. 1998, Pacific Grove, GA, USA, 1998, ISBN 0-7803-5148-7, pp. 1240-1243. 160

[60] J. Chen, R. Yao. "Efficient CRT-based residue-to-binary converter for the arbitrary moduli set", Science China Information Sciences, 54:1 (2011), pp. 70—78.

^150,151

[61] P. Patronik. "On reverse converters for arbitrary multi-moduli RNS", Integration, 75 (2020), pp. 158-167. 161

[62] A. Hiasat. "A residue-to-binary converter with an adjustable structure for an extended RNS three-moduli set", Journal of Circuits, Systems and Computers, 28:08 (2019), 1950126. 161

[63] L. Sousa, S. Antao. "MRC-based RNS reverse converters for the four-moduli sets {2n + 1, 2n — 1, 2n, 22n+1 — 1} and {2n + 1, 2n — 1, 22n, 22n+1 — 1}", IEEE Transactions on Circuits and Systems II: Express Briefs, 59:4 (2012), pp. 244-248.

d Î151

[64] P. V. Ananda Mohan. "Reverse conversion using core function, CRT and mixed radix conversion", Circuits, Systems, and Signal Processing, 36:7 (2017), pp. 2847-2874.

d Î151

[65] E. K. Bankas, K. A. Gbolagade. "An efficient VLSI design of residue to binary converter circuit for a new moduli set {22n, 22n-1 — 1, 22n-1 + 1}", Proc. 2019 IEEE 4th International Conference on Integrated Circuits and Microsystems, ICICM (25-27 Oct. 2019, Beijing, China), pp. 24-28. i f161

[66] A. S. Molahosseini, A. A. E. Zarandi, P. Martins, L. Sousa. "A multifunctional unit for designing efficient RNS-Based datapaths", IEEE Access, 5 (2017), pp. 25972-25986.

d Î151

[67] Y. Wang, X. Song, M. Aboulhamid. "A new algorithm for RNS magnitude comparison based on New Chinese remainder theorem II", Proc. Ninth Great Lakes Symposium on VLSI (4-6 March 1999, Ypsilanti, MI, USA), ISBN 0-7695-0104-4, pp. 362-365. d 163 160

[68] S. J. Piestrak. "A note on RNS architectures for the implementation of the diagonal function", Information Processing Letters, 115:4 (2015), pp. 453—457. i f164

[69] G. Pirlo. "Non-modular operations of the residue number system: functions for computing", Embedded Systems Design with Special Arithmetic and Number Systems, eds. A. S. Molahosseini, L. S. de Sousa, C. Chang, Springer, Cham, 2017, ISBN 978-3-319-49742-6, pp. 49-64. d 164

[70] M. Babenko, M. Deryabin, S. J. Piestrak, P. Patronik, N. Chervyakov, A. Tchernykh, A. Avetisyan. "RNS number comparator based on a modified diagonal function", Electronics, 9:11 (2020), 1784, 16 pp. 166 160

[71] K. Isupov. "High-performance computation in residue number system using floating-point, arithmetic", Computation, 9:2 (2021), 9, 15 pp. 169

[72] D.S. Phatak, S.D. Houston. "New distributed algorithms for fast sign detection in residue number systems (RNS)", Journal of Parallel and Distributed Computing, 97 (2016), pp. 78-95. d f169 160

[73] A. A. Hiasat, H. Abdel-Aty-Zohdy. "Semi-Custom VLSI design and implementation of a new efficient RNS division algorithm", The Computer Journal, 42:3 (1999), pp. 232-240. d 162

[74] C. Chang, J. Yang. "A division algorithm using bisection method in residue number system", International Journal of Computer, Consumer and Control (IJ3C), 2:1 (2013), pp. 59-66. url: 162 166

[75] N. Chervyakov, P. Lyakhov, M. Babenko, A. Nazarov, M. Deryabin, I. Lavrinenko, A. Lavrinenko. "A high-speed division algorithm for modular numbers based on the Chinese remainder theorem with fractions and its hardware implementation", Electronics, 8:3 (2019), 261, 17 pp. 162 166

[76] M. A. Hitz, E. Kaltofen. "Integer division in residue number systems", IEEE Transactions on Computers, 44:8 (1995), pp. 983—989. 163 166

[77] M. Mccann, N. Pippenger. "SRT division algorithms as dynamical systems", Proc. 2003 1 6th IEEE Symposium on Computer Arithmetic (15-18 June 2003, Santiago de Compost.ela, Spain), ISBN 0-7695-1894-X, pp. 46-53. 162

[78] W. A. Chren Jr.. "A new residue number system division algorithm", Computers & Mathematics with Applications, 19:7 (1990), pp. 13—29. d ' 164 166

[79] D.K. Banerji, T. Cheung, V. Ganesan. "A high-speed division method in residue arithmetic", 5th IEEE Symposium on Computer Arithmetic (18-19 May 1981, Ann Arbor, Michigan, USA), 1981, pp. 158-164. url 164 166

[80] D. Gamberger. "New approach to integer division in residue number systems", Proc. 10th IEEE Sympsoium on Computer Arithmetic (26-28 June 1991, Grenoble, France), ISBN 0-8186-9151-4, pp. 84-91. d f164_166

[81] C. Chang, Y. Lai. "A division algorithm for residue numbers", Appl. Math. Comput., 172:1 (2006), pp. 368-378. d - 164 166

[82] N. Mukhtar, L. Papachristodoulou, A. P. Fournaris, L. Batina, Y. Kong. Machine-learning assisted side-channel attacks on RNS-based elliptic curve implementations using hybrid feature engineering, Cryptology ePrint Archive, Report 2020/1065, 2020, 31 pp. url: 166

[83] S. Kawamura, Y. Komano, H. Shimizu, T. Yonemura. "RNS Montgomery reduction algorithms using quadratic residuosity", Journal of Cryptographic Engineering, 9:4 (2019), pp. 313-331. d f166

[84] D. Schoinianakis. "Residue arithmetic systems in cryptography: a survey on modern security applications", Journal of Cryptographic Engineering, 10:3 (2020), pp. 249-267. d 166

[85] P. Martins, L. Sousa. "The role of non-positional arithmetic on efficient emerging

cryptographic algorithms", IEEE Access, 8 (2020), pp. 59533-59549. 166

[86] D. Ongaro, J. Ousterhout. "In search of an understandable consensus algorithm", Proceedings of USENIX ATC'14: 2014 USENIX Annual Technical Conference (June 19-20, 2014, Philadelphia, PA, USA), ISBN 978-1-931971-10-2, pp. 305-320.

.url. 16g

[87] D. Bailey, J. Borwein. "High-precision arithmetic in mathematical physics",

Mathematics, 3:2 (2015), pp. 337-367. i f169

[88] R. Brent, P. Zimmermann. Modern Computer Arithmetic, Cambridge University Press, Cambridge, 2010, ISBN 9780511921698. d f169

Sample citation of this publication:

Konstantin S. Isupov. "An overview of high-performance computing using the residue number system". Program Systems: Theory and Applications, 2021, 12:2(49), pp. 137—192. (In Russian). 10.25209/2079-3316-2021-12-2-137-192

URL http://psta.psiras.ru/read/psta2021_2_137- 192 .pdf

i Надоели баннеры? Вы всегда можете отключить рекламу.