Бимодульная модулярная арифметика
Аддитивный характер вычислений в кольце вычетов порождает дополнительные расходы на выполнение арифметических операций. Это обусловлено тем, что результат выполненной операции может выйти за диапазон
, тогда требуется корректировка результата, т.е. взятие результата выполненной операции по модулю. Мультипликативная операция над остатками
более трудоемка, поэтому наиболее эффективным способом избежать прямой реализации мультипликативной операции является переход к индексам вычетов по основанию первообразного корня, однозначно связанных с данным модулярным кодом.
В случае индексной арифметики операция «+» выполняется за один такт модульного суммирования, а операция «*» за такт модульного суммирования и два такта табличной операции. Бимодульная модулярная арифметика направлена на то, чтобы сбалансировать выполнение модульных операций.
Содержание
Кодовая конструкция проф. Д.А. Поспелова
Д.А. Поспелов ввел представление исходных операндов в виде пар >, где
есть вычет
по модулю
,
- соответствующий вычету
индекс по основанию
, при этом условно считается, что вычету 0 соответствует специальный символ
(этот элемент, так называемая "сингулярность", не является элементом кольца Z_p, может быть обозначен
), который обладает свойством
для любого для любого индекса
. Таким образом, все операции поля выполняются над парами.
Если требуется найти сумму двух операндов по модулю , то суммируются по модулю
первые компоненты пар; для формирования второй компоненты пары результата этот результат преобразуется в индекс путем выборки значения из таблицы индексов (рис.1):
Если требуется найти произведение двух операндов по модулю , то суммируются по модулю
вторые компоненты пар; для формирования первой компоненты пары результата этот результат преобразуется в антилогарифм (вычет) путем выборки значения из таблицы вычетов (рис.2):
Арифметику, построенную на парном представлении операндов, будем называть бимодульной арифметикой поля .
Таким образом, операции сложения и умножения сведены к операциям сложения по модулю и модулю
, соответственно, и одной табличной операции выбора второй компоненты пары результата. Такое решение позволяет сократить время выполнения мультипликативной операции на один такт табличной операции и площадь на хранение двух таблиц преобразования в индексы, размерность каждой таблицы
. При этом, Д.А. Поспелов утверждает [1, стр. 296], что, несмотря на то, что логика операции умножения по модулю
стала более сложной, чем в обычной системе кода в остатках, выигрыш состоит в «однотипности оборудования для производства операций сложения и умножения». Данное утверждение справедливо в общем случае, когда сумматоры по модулям
и
проектируются по методу прямой логической реализации с использованием двоичных функциональных блоков. В этом случае суммирование по модулю
для двух операндов
и
, находящихся в диапазоне
, выполняется по следующей формуле:
Пример
Пусть надо выполнить сложение и умножение:
,
,
где
,
,
– простое число,
– операция нахождения остатка по модулю.
Рассмотрим пример для модуля . Первообразный корень
для этого значения модуля равен 2. А именно, возведение
в степень 0, 1, … 9 дает неповторяющиеся результаты:
Для получения таблицы преобразования между обычным и индексным представлением расположим полученные пары значений в порядке возрастания. Для модуля таблицы будет выглядеть следующим образом.
Таблица прямого преобразования:
Число | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Индекс | 0 | 1 | 8 | 2 | 4 | 9 | 7 | 3 | 6 | 5 |
Таблица обратного преобразования:
Индекс | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Число | 1 | 2 | 4 | 8 | 5 | 10 | 9 | 7 | 3 | 6 |
В качестве примера возьмем числа 8 и 6. Эти числа представляются парами <8,3> и <6,9>.
Найдем значение выражения (8+6) mod 11 обычным образом. Это первое число пары, представляющей результат сложения. (8+6) mod 11 = 14 mod 11 = 3. По таблице прямого преобразования находим, что числу 3 соответствует значение индекса 8. Это второе число пары. Итак.
.
Найдем значение выражения (8*6) mod 11 используя средства логарифметики. Числа 8 и 6 имеют соответствующие индексы 3 и 9 (см. таблицу прямого преобразования). Просуммировав эти индексы по модулю (11-1) = 10 получим результат (3+9) mod 10 = 12 mod 10 = 2. Это второе число пары, представляющей результат умножения. По таблице обратного преобразования находим для индекса 2 конечный результат, равный 4. Это первое число пары. Итак,
.
Модифицированная кодовая конструкция
Рассмотренный метод построения сумматоров по модулю, во-первых, позволяет в полной мере использовать современные наработки в области проектирования двоичных устройств, во-вторых, предоставляет большую гибкость при реализации каждого компонента в составе всего вычислительного блока в зависимости от требований к занимаемой площади и быстродействию. В-третьих, метод универсален, т.е. независим от специфики используемого базового модуля m.
Однако в настоящее время все большую популярность завоевывают гибридные методы построения базовых арифметических узлов модулярной арифметики. Такие методы представляют собой комбинацию методов прямой логической реализации и методов на основе таблиц состояний. Использование гибридных методов обеспечивает компромисс между быстродействием и затратами на занимаемую площадь для некоторых значений модулей. В случае же реализации арифметики в кодах Д.А. Поспелова требуется оценивать проектирование сумматоров не только относительно базового модуля , но и модуля
, иначе теряется основная идея данного кодирования, а именно, однотипность оборудования.
Следующая модификация кода Д.А. Поспелова развивает его идею однотипности.
Развитие идеи однотипности состоит в том, чтобы аддитивные и мультипликативные операции модульной арифметики выполнялись не только аппаратно однотипно, но и однотипно в кодовом представлении операндов. Это достигается путем перехода от предствления компонент пар операндов по модулям и
к однородному представлению по модулю
.
Введем понятие модифицированного вычета по модулю:
,
где
- функция Кронекера ,
- кофункция Кронекера.
Для представления второй компоненты пары операнда будем использовать дискретно-логарифметическое представление. Этот способ представления является эффективным при использовании небольших значений модулей порядка 8 бит, что является достаточным при проектировании большинства вычислительных устройств, предназначенных для решения специальных задач из области применения модулярной арифметики. Тем самым вторая компонента пары операндов будет иметь вид:
, где
- индекс вычета
по основанию
, т.е.
.
В этом случае полагается, что при -битном простом числе
константный символ
. Очевидно, что при любом простом
.
Распишем, как в бимодульной арифметике будут выполняться арифметические операции.
Реализация мультипликативных операций останется без изменений:
если
,
,
то
т.е.
Логика выполнения аддитивных операций усложнится за счет введения дополнительных логических функций, связанных с переходом к однородному представлению. Аддитивные операции выполняются согласно выражению:
если
,
,
то
,
т.е.
Тем самым, переход к однородному представлению операндов позволил выполнять аддитивные и мультипликативные операции на одном оборудовании, а именно на сумматоре по модулю . Это положительно влияет и на требования к затратам по занимаемой площади и на контроль выполнения арифметических операций, при этом сохраняется требование однотипности используемого оборудования.
Ссылки
- [1] Поспелов Д.А. Арифметические основы вычислительных машин дискретного действия. М.: Высш. шк., 1970.