Бимодульная модулярная арифметика — различия между версиями
Isaeva (обсуждение | вклад) |
Isaeva (обсуждение | вклад) |
||
Строка 37: | Строка 37: | ||
Введем понятие модифицированного вычета по модулю: | Введем понятие модифицированного вычета по модулю: | ||
− | <math> {|\tilde x|}_p = {\lambda}_p \cdot \delta \cdot ((p-1)-|x|_p) + {||x|_p|}_{p-1} \cdot {\hat \delta} \cdot ((p-1)-|x|_p)</math>, | + | :<math> {|\tilde x|}_p = {\lambda}_p \cdot \delta \cdot ((p-1)-|x|_p) + {||x|_p|}_{p-1} \cdot {\hat \delta} \cdot ((p-1)-|x|_p)</math>, |
где | где | ||
Строка 45: | Строка 45: | ||
0, & \mbox{if } u\ne 0, | 0, & \mbox{if } u\ne 0, | ||
\end{cases} | \end{cases} | ||
− | </math> | + | </math> - функция Кронекера , |
− | |||
− | <math> {\hat \delta}(u) = 1-{\delta}(u) </math> - кофункция Кронекера. | + | :<math> {\hat \delta}(u) = 1-{\delta}(u) </math> - кофункция Кронекера. |
Для представления второй компоненты пары операнда будем использовать дискретно-логарифметическое представление. Этот способ представления является эффективным при использовании небольших значений модулей порядка 8 бит, что является достаточным при проектировании большинства вычислительных устройств, предназначенных для решения специальных задач из области применения модулярной арифметики. Тем самым вторая компонента пары операндов будет иметь вид: | Для представления второй компоненты пары операнда будем использовать дискретно-логарифметическое представление. Этот способ представления является эффективным при использовании небольших значений модулей порядка 8 бит, что является достаточным при проектировании большинства вычислительных устройств, предназначенных для решения специальных задач из области применения модулярной арифметики. Тем самым вторая компонента пары операндов будет иметь вид: | ||
− | <math> log_w{|\tilde x|}_p = \delta({|\tilde x|}_p) \cdot {\lambda}_p + {\hat \delta}({|\tilde x|}_p) \cdot ind_w (x_p)</math> , где | + | :<math> log_w{|\tilde x|}_p = \delta({|\tilde x|}_p) \cdot {\lambda}_p + {\hat \delta}({|\tilde x|}_p) \cdot ind_w (x_p)</math> , где |
− | <math> ind_w|{\tilde x}|_p </math> - индекс вычета <math> |{\tilde x}|_p </math> по основанию <math> w </math>, т.е. | + | :<math> ind_w|{\tilde x}|_p </math> - индекс вычета <math> |{\tilde x}|_p </math> по основанию <math> w </math>, т.е. |
− | <math> |{\tilde x}|_p \ne 0 \Leftrightarrow |{w^{ind_w|{\tilde x}|_p}| = |{\tilde x}|_p} </math> . | + | :<math> |{\tilde x}|_p \ne 0 \Leftrightarrow |{w^{ind_w|{\tilde x}|_p}| = |{\tilde x}|_p} </math> . |
В этом случае полагается, что при t-битном простом числе <math> p </math> константный символ <math> {\lambda}_p = 2^t-1 </math>. Очевидно, что при любом простом <math> p </math> <math> {\lambda}_p \notin Z_{p-1} </math> . | В этом случае полагается, что при t-битном простом числе <math> p </math> константный символ <math> {\lambda}_p = 2^t-1 </math>. Очевидно, что при любом простом <math> p </math> <math> {\lambda}_p \notin Z_{p-1} </math> . | ||
Строка 79: | Строка 78: | ||
:<math>(x \cdot y) \text{mod }p = \begin{cases} | :<math>(x \cdot y) \text{mod }p = \begin{cases} | ||
{\lambda}_p, & \mbox{if } {\delta(log_w|{\tilde x}|_p - {\lambda}_p})\vee {\delta(log_w|{\tilde y}|_p - {\lambda}_p}) = 1, \\ | {\lambda}_p, & \mbox{if } {\delta(log_w|{\tilde x}|_p - {\lambda}_p})\vee {\delta(log_w|{\tilde y}|_p - {\lambda}_p}) = 1, \\ | ||
− | ||{log_w|{\tilde x}|_p + log_w|{\tilde y}|_p}|_{p-1}|_{p-1} | + | ||{log_w|{\tilde x}|_p + log_w|{\tilde y}|_p}|_{p-1}|_{p-1} ; |
\end{cases} | \end{cases} | ||
</math> | </math> | ||
− | + | Логика выполнения аддитивных операций усложнится за счет введения дополнительных логических функций, связанных с переходом к однородному представлению. Аддитивные операции выполняются согласно выражению: | |
+ | если | ||
− | + | :<math> <|{\tilde x}|_{p}, log_w{|{\tilde x}|}_p> </math>, <math> <|{\tilde y}|_{p}, log_w{|{\tilde y}|}_p> </math>, | |
− | + | то | |
+ | |||
+ | :<math> (x + y) \text{mod }p \longrightarrow < |{\tilde x} + {\tilde y}|_{p-1} , log_w(|{\tilde x} + {\tilde y}|_{p-1}) > </math>, | ||
+ | |||
+ | |||
+ | т.е. | ||
+ | |||
+ | :<math>(x + y) \text{mod }p = \begin{cases} | ||
+ | p-2, & \mbox{if } {\tilde x} = {\tilde y} = p-1 , \\ | ||
+ | {\lambda}_p, & \mbox{if } {\tilde x} + {\tilde y} = p-1 , \\ | ||
+ | {\tilde x}-1, & \mbox{if } {\tilde x}\ne 0 , {\tilde y} = {\lambda}_p , \\ | ||
+ | {\tilde y}-1, & \mbox{if } {\tilde y}\ne 0 , {\tilde x} = {\lambda}_p , \\ | ||
+ | {\tilde x} + {\tilde y}, & \mbox{if } {\tilde x} + {\tilde y} < p-1 , \\ | ||
+ | |{\tilde x} + {\tilde y}|_{p-1}-1, & \mbox{if } {\tilde x} + {\tilde y} > p-1 ; | ||
+ | \end{cases} | ||
+ | </math> | ||
Тем самым, переход к однородному представлению операндов позволил выполнять аддитивные и мультипликативные операции на одном оборудовании, а именно на сумматоре по модулю ''р-1''. Что положительно влияет и на требования к затратам по занимаемой площади и на контроль выполнения арифметических операций, при этом сохраняется требование однотипности используемого оборудования. | Тем самым, переход к однородному представлению операндов позволил выполнять аддитивные и мультипликативные операции на одном оборудовании, а именно на сумматоре по модулю ''р-1''. Что положительно влияет и на требования к затратам по занимаемой площади и на контроль выполнения арифметических операций, при этом сохраняется требование однотипности используемого оборудования. | ||
+ | |||
+ | = Ссылки = | ||
* [1] Поспелов Д.А. Арифметические основы вычислительных машин дискретного действия. М.: Высш. шк., 1970. | * [1] Поспелов Д.А. Арифметические основы вычислительных машин дискретного действия. М.: Высш. шк., 1970. |
Версия 05:38, 31 мая 2014
Аддитивный характер вычислений в кольце вычетов порождает дополнительные расходы на выполнение арифметических операций. Это обусловлено тем, что результат выполненной операции может выйти за диапазон , тогда требуется корректировка результата, т.е. взятие результата выполненной операции по модулю. Мультипликативная операция над остатками x, y mod p более трудоемка, поэтому наиболее эффективным способом избежать прямой реализации мультипликативной операции является переход к индексам вычетов по основанию первообразного корня, однозначно связанных с данным модулярным кодом.
В случае индексной арифметики операция «+» выполняется за один такт модульного суммирования, а операция «*» за такт модульного суммирования и два такта табличной операции.
Кодовая конструкция проф. Д.А. Поспелова
Для того, чтобы сбалансировать выполнение модульных операций Д.А. Поспелов ввел представление исходных операндов в виде пар >, где есть вычет по модулю , - соответствующий вычету индекс, при этом условно считается, что вычету 0 соответствует специальный символ , который обладает свойством для любого для любого индекса . Таким образом, все операции поля выполняются над парами: если требуется найти сумму двух операндов по модулю , то суммируются по модулю первые компоненты пар; для формирования второй компоненты пары результата этот результат преобразуется в индекс путем выборки значения из таблицы индексов (рис.1). Если требуется найти произведение двух операндов по модулю , то суммируются по модулю вторые компоненты пар; для формирования первой компоненты пары результата этот результат преобразуется в антилогарифм (вычет) путем выборки значения из таблицы вычетов (рис.2):
Арифметику, построенную на парном представлении операндов, будем называть бимодульной арифметикой поля .
Таким образом, операции сложения и умножения сведены к операциям сложения по модулю и модулю , соответственно, и одной табличной операции выбора второй компоненты пары результата. Такое решение позволяет сократить время выполнения мультипликативной операции на один такт табличной операции и площадь на хранение двух таблиц преобразования в индексы, размерность каждой таблицы . При этом, Д.А. Поспелов утверждает [1, стр. 296], что, несмотря на то, что логика операции умножения по модулю стала более сложной, чем в обычной системе кода в остатках, выигрыш состоит в «однотипности оборудования для производства операций сложения и умножения». Данное утверждение справедливо в общем случае, когда сумматоры по модулям и проектируются по методу прямой логической реализации с использованием двоичных функциональных блоков. В этом случае суммирование по модулю для двух операндов и , находящихся в диапазоне , выполняется по следующей формуле:
Модифицированная кодовая конструкция
Рассмотренный метод построения сумматоров по модулю, во-первых, позволяет в полной мере использовать современные наработки в области проектирования двоичных устройств, во-вторых, предоставляет большую гибкость при реализации каждого компонента в составе всего вычислительного блока в зависимости от требований к занимаемой площади и быстродействию. В-третьих, метод универсален, т.е. независим от специфики используемого базового модуля m.
Однако в настоящее время все большую популярность завоевывают гибридные методы построения базовых арифметических узлов модулярной арифметики. Такие методы представляют собой комбинацию методов прямой логической реализации и методов на основе таблиц состояний. Использование гибридных методов обеспечивает компромисс между быстродействием и затратами на занимаемую площадь для некоторых значений модулей. В случае же реализации арифметики в кодах Д.А. Поспелова требуется оценивать проектирование сумматоров не только относительно базового модуля , но и модуля , иначе теряется основная идея данного кодирования, а именно, однотипность оборудования.
Следующая модификация кода Д.А. Поспелова развивает его идею однотипности. Развитие идеи однотипности состоит в том, чтобы аддитивные и мультипликативные операции модульной арифметики выполнялись не только аппаратно однотипно, но и однотипно в кодовом представлении операндов. Это достигается путем перехода от предствления компонент пар операндов по модулям , и к однородному представлению по модулю .
Введем понятие модифицированного вычета по модулю:
- ,
где
- - функция Кронекера ,
- - кофункция Кронекера.
Для представления второй компоненты пары операнда будем использовать дискретно-логарифметическое представление. Этот способ представления является эффективным при использовании небольших значений модулей порядка 8 бит, что является достаточным при проектировании большинства вычислительных устройств, предназначенных для решения специальных задач из области применения модулярной арифметики. Тем самым вторая компонента пары операндов будет иметь вид:
- , где
- - индекс вычета по основанию , т.е.
- .
В этом случае полагается, что при t-битном простом числе константный символ . Очевидно, что при любом простом .
Распишем, как в бимодульной арифметике будут выполняться арифметические операции.
Реализация мультипликативных операций останется без изменений:
если
- , ,
то
т.е.
Логика выполнения аддитивных операций усложнится за счет введения дополнительных логических функций, связанных с переходом к однородному представлению. Аддитивные операции выполняются согласно выражению:
если
- , ,
то
- ,
т.е.
Тем самым, переход к однородному представлению операндов позволил выполнять аддитивные и мультипликативные операции на одном оборудовании, а именно на сумматоре по модулю р-1. Что положительно влияет и на требования к затратам по занимаемой площади и на контроль выполнения арифметических операций, при этом сохраняется требование однотипности используемого оборудования.
Ссылки
- [1] Поспелов Д.А. Арифметические основы вычислительных машин дискретного действия. М.: Высш. шк., 1970.