Приведённые факторы, наряду с преимуществами модулярных
вычислителей в быстродействии и занимаемой площади, позволяют говорить о вычислениях в СОК как о перспективной технологии разработки высокопроизводительных систем, функционирующих в реальном времени.
Поскольку в СОК используются модулярные операции, для высокой эффективности необходимо использовать специально спроектированные для СОК сумматоры и умножители.
Существует достаточно большое количество подходов к реализации сумматоров по модулю m. Далее будут рассмотрены наиболее типичные и простые схемы модулярного суммирования (рис. 2).
Первая из них вычисляет модульную сумму
Для больших модулей, память LUT была бы значительного размера и другие схемы для суммирования оказываются в этом случае более предпочтительными. Следующее предложение основывается на обычном суммировании x + y и одной таблицы, содержащей все возможные значения для
Третья схема суммирования является самой распространённой и наиболее предпочтительной в большинстве случаев. В этой схеме используется два сумматора и мультиплексор для выбора результата в соответствии с выражением:
Умножители на основе закона квадратов (рис. 3) вычисляют модулярное произведение
где 0
и произведение
Существование операции деления на 2 ставит под угрозу целочисленность промежуточных вычислений и, соответственно, правильность результата после использования таблиц подстановок. Более того, существование обратного по умножению по модулю m для 2 элемента,
Метод работы этого умножителя связан с математическими свойствами полей Галуа обозначаемых GF(p), где p – простое число. Все ненулевые элементы поля Галуа могут быть получены путём многократного возведения в степень примитивного элемента – порождающёго /?/ поле GF(p) элемента g
Это свойство полей Галуа можно использовать для умножения в GF(m
обрабатывать случаи, когда один из операндов на входе умножителя равен нулю и в этом случае назначать нулевой результат произведения. Это происходит потому, что не определён элемент в степенном пространстве, соответствующий нулевому элементу группы Q.
Степени i
Рассмотрим в качестве примера работу этого умножителя на примере умножения двух чисел 14 и 28 по модулю 31. Так как 31 – простое число, существует порождающий элемент g, дающий возможность ассоциировать каждый элемент мультипликативной группы Q = {1, 2,…, 31} с элементом
аддитивной группы I = {0, 1,…, 30} . Соответствие задаётся выражением
Рассмотрим работу умножителя Галуа (рис. 4, рис. 5, табл. 1) на
примере умножения
Таблица 1. Содержание LUT-таблицы для умножителя Галуа по модулю 31
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 0 | 24 | 1 | 18 | 20 | 25 | 28 | 12 | 2 | 14 | 23 | 19 | 11 | 22 | 21 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 6 | 7 | 26 | 4 | 8 | 29 | 17 | 27 | 13 | 10 | 5 | 3 | 16 | 9 | 15 |