Рекурсивная модулярная арифметика — различия между версиями
| Isaeva  (обсуждение | вклад) | Isaeva  (обсуждение | вклад)  | ||
| Строка 29: | Строка 29: | ||
| Таким образом, выбираем <math> p_{i} = 11 </math> (ближайшее к 7 простое число). Далее совокупность рабочих модулей строится с помощью аналогичного расчета, пока не будет достигнут требуемый вычислительный диапазон. | Таким образом, выбираем <math> p_{i} = 11 </math> (ближайшее к 7 простое число). Далее совокупность рабочих модулей строится с помощью аналогичного расчета, пока не будет достигнут требуемый вычислительный диапазон. | ||
| − | Наконец рассмотрим реальный случай. Пусть нам нужно реализовать преобразователь Фурье для 24-битных аргументов при количестве точек 1024.   | + | Наконец, рассмотрим реальный случай. Пусть нам нужно реализовать преобразователь Фурье для 24-битных аргументов при количестве точек 1024.   | 
| Для этого потребуется вычислять сумму 1024 произведений, т.е. обеспечить <math> 1024 \cdot max^2 < Q </math>. Здесь уже не обойтись системой только трехбитных базисных модулей. Добавим к ним четырехбитные: 5, 7, 8, 9, 11 и 13 (Q = 360360).   | Для этого потребуется вычислять сумму 1024 произведений, т.е. обеспечить <math> 1024 \cdot max^2 < Q </math>. Здесь уже не обойтись системой только трехбитных базисных модулей. Добавим к ним четырехбитные: 5, 7, 8, 9, 11 и 13 (Q = 360360).   | ||
| − | Для выбора ближайшего рабочего модуля необходимо <math>\frac{ | + | Для выбора ближайшего рабочего модуля необходимо <math> \sqrt \frac{Q}{1024}</math>. | 
| Получаем <math>p_{i}-1 < 32 </math>.   | Получаем <math>p_{i}-1 < 32 </math>.   | ||
| Строка 118: | Строка 118: | ||
| == Ограничения на выбор базиса == | == Ограничения на выбор базиса == | ||
| + | |||
| + | Максимальное значение, которое можно представить с помощью <math> P_{m+1} </math>, равно <math> max = p_{m+1} - 1 </math> . Чтобы была возможность выполнять арифметические операции над числами, требуется, чтобы результат операции для <math> p_{m+1} </math> -го элемента был меньше <math> Q = (p_1 \cdot p_2 \cdot \ldots \cdot p_m) </math> .Для сложения это будет <math> 2 \cdot max </math> , а для умножения - <math> max^2 </math> . | ||
| + | Рассмотрим следующий пример. Пусть задан базис <math> (2, 3, 5)</math> . Выберем систему базовых модулей <math> (2, 3)</math> . В этом случае <math> Q = 2 \cdot 2 = 6 </math> , <math> max = 4 </math> . Поскольку для сложения потребуется максимально представимое число 8, что больше 6, а для умножения 16, что тоже больше 6, то в таком базисе можно выполнять взаимно-однозначное разложение чисел, но для базовых арифметических операций он не подходит. Для реальных задач требуется увеличение числа <math> Q </math> . | ||
| + | Как именно выбирать элементы базиса? Рассмотрим следующий пример. Пусть задана система базовых модулей <math> (4, 5, 7) </math> . Требуется определить <math>p_4 </math> таким образом, чтобы в рамках полученного рекурсивного базиса можно было использовать операцию умножения. | ||
| + | |||
| + | <math> Q > MAX </math> => <math> Q > max^2 </math> => <math> Q > (p_4 – 1)^2 </math> => <math> p_4 < \sqrt{Q} + 1 </math> => <math>  p_4 < \sqrt{140} + 1 </math> => <math>  p_4 < 12.8 </math> | ||
| == Обратное преобразование числа из рекурсивного представления в позиционное == | == Обратное преобразование числа из рекурсивного представления в позиционное == | ||
| == Сложение и умножение в рекурсивной модулярной арифметике == | == Сложение и умножение в рекурсивной модулярной арифметике == | ||
Версия 08:55, 29 апреля 2014
Содержание
Принцип рекурсивных модулярных вычислений
Рекурсивная модулярная арифметика основана на принципе глубокого распараллеливания модульных операций модулярной арифметики с основаниями  посредством сведения модульных операций по каждому рабочему основанию
 посредством сведения модульных операций по каждому рабочему основанию  ,
,  к модульным вычислениям по предшествующим рабочим основаниям
 к модульным вычислениям по предшествующим рабочим основаниям  , имеющим то или иное технологическое преимущество (например, малобитным), которые называются базисными основаниями. Такая редукция допустима только при выполнении так называемого условия согласования вычислительных диапазонов по каждому рабочему модулю
, имеющим то или иное технологическое преимущество (например, малобитным), которые называются базисными основаниями. Такая редукция допустима только при выполнении так называемого условия согласования вычислительных диапазонов по каждому рабочему модулю  с вычислительными диапазонами по соответствующим комплексам базисных оснований. 
Принцип согласования гарантирует, во-первых, изоморфизм кольцевых операций по соответствующим им комплексам базисных оснований, и во-вторых, выполнимость обращения каждого шага рекурсии посредством перевода соответствующих модулярных кодов по базисным основаниям в позиционный код (например, на основе китайской теоремы об остатках, или переводом их в полиадический код). 
Несмотря на ограничения, которые накладываются на систему модулей, предложенный метод обеспечивает выигрыш по скорости и может быть применен в параллельных высокоскоростных вычислительных устройствах.
 с вычислительными диапазонами по соответствующим комплексам базисных оснований. 
Принцип согласования гарантирует, во-первых, изоморфизм кольцевых операций по соответствующим им комплексам базисных оснований, и во-вторых, выполнимость обращения каждого шага рекурсии посредством перевода соответствующих модулярных кодов по базисным основаниям в позиционный код (например, на основе китайской теоремы об остатках, или переводом их в полиадический код). 
Несмотря на ограничения, которые накладываются на систему модулей, предложенный метод обеспечивает выигрыш по скорости и может быть применен в параллельных высокоскоростных вычислительных устройствах.
Пример
Поясним процедуру рекурсивных преобразований на простом примере. Возьмем в качестве базисных модулей двухбитные простые числа  . Очевидно, что вычетами по модулям 2 и 3 можно однозначно представить любой вычет по модулю 5. В то же время вычетами по модулям 2, 3 и 5, где вычеты по модулю 5 представимы по модулям 2 и 3, можно однозначно представить любой вычет по модулю 29. Вычетами по модулям 2, 3, 5 и 29 можно однозначно представить любой вычет по модулю 863. И так далее пока не получим нужный набор рабочих оснований: 2, 3, 5, 29, 863,… Данный пример наглядно иллюстрирует 4 факта:
. Очевидно, что вычетами по модулям 2 и 3 можно однозначно представить любой вычет по модулю 5. В то же время вычетами по модулям 2, 3 и 5, где вычеты по модулю 5 представимы по модулям 2 и 3, можно однозначно представить любой вычет по модулю 29. Вычетами по модулям 2, 3, 5 и 29 можно однозначно представить любой вычет по модулю 863. И так далее пока не получим нужный набор рабочих оснований: 2, 3, 5, 29, 863,… Данный пример наглядно иллюстрирует 4 факта:
1) Аппаратные и временные затраты на представление чисел по базовым модулям 2 и 3 примерно одинаковы (оба базисных модуля двухбитные);
2) Наблюдается более высокая степень распараллеливаемости;
3) Появляется регулярность (все вычисления проводятся по модулям 2 и 3);
4) Столь малая разрядность базовых модулей позволяет эффективно реализовать модульные операции по базисным модулям в комбинационных схемах.
Однако имеется ряд ограничений, которые должны быть выполнены и которые приводят к усложнению устройств, созданных по данной методике. Рассмотрим эти ограничения.
Пусть есть система базисных модулей  и необходимо представить вычеты по модулю
 и необходимо представить вычеты по модулю  через вычеты по этой системе базовых модулей. Очевидно, что максимальный вычет по модулю
 через вычеты по этой системе базовых модулей. Очевидно, что максимальный вычет по модулю  равен
 равен  . Зная это значение и последовательность выполняемых операций, можно рассчитать максимальное значение
. Зная это значение и последовательность выполняемых операций, можно рассчитать максимальное значение  результата арифметической операции. Очевидно, что для однозначного представления результата арифметических операций необходимо, чтобы
 результата арифметической операции. Очевидно, что для однозначного представления результата арифметических операций необходимо, чтобы  , где
, где  . Для остальных модулей расчет производится аналогично.
. Для остальных модулей расчет производится аналогично.
Для примера с базовыми модулями 2 и 3  . Наименьшее простое число (после 2 и 3) - это 5, следовательно,
. Наименьшее простое число (после 2 и 3) - это 5, следовательно,  .
Нельзя выполнить ни операцию сложения, т.к.
.
Нельзя выполнить ни операцию сложения, т.к.  
   , ни, тем более, операцию умножения, т.к.
 , ни, тем более, операцию умножения, т.к.  
  .
Чтобы выполнять любую из арифметических операций (сложение или умножение) надо увеличить число
.
Чтобы выполнять любую из арифметических операций (сложение или умножение) надо увеличить число  (т.е. увеличить значения базисных модулей и/или их количество).
 (т.е. увеличить значения базисных модулей и/или их количество).
Возьмем в качестве базисных модулей все взаимно простые трехбитные числа: 4, 5 и 7. В этом случае  .
.
Таким образом, выбираем  (ближайшее к 7 простое число). Далее совокупность рабочих модулей строится с помощью аналогичного расчета, пока не будет достигнут требуемый вычислительный диапазон.
 (ближайшее к 7 простое число). Далее совокупность рабочих модулей строится с помощью аналогичного расчета, пока не будет достигнут требуемый вычислительный диапазон.
Наконец, рассмотрим реальный случай. Пусть нам нужно реализовать преобразователь Фурье для 24-битных аргументов при количестве точек 1024. 
Для этого потребуется вычислять сумму 1024 произведений, т.е. обеспечить  . Здесь уже не обойтись системой только трехбитных базисных модулей. Добавим к ним четырехбитные: 5, 7, 8, 9, 11 и 13 (Q = 360360). 
Для выбора ближайшего рабочего модуля необходимо
. Здесь уже не обойтись системой только трехбитных базисных модулей. Добавим к ним четырехбитные: 5, 7, 8, 9, 11 и 13 (Q = 360360). 
Для выбора ближайшего рабочего модуля необходимо  .
.
Получаем  . 
Выбираем
. 
Выбираем  .
.
Аналогичным расчетом реализуем рекурсивное дерево рабочих оснований целиком. Чтобы сделать такое устройство, нужно спроектировать блок из 6 вычислителей (для каждого базисного модуля) и таких блоков нужно будет 16. Вот где работает регулярность. Заметим, что все вычислители будут иметь высокую скорость модульных операций (суперраспараллеливание) и небольшие аппаратные затраты в силу малости базисных модулей или их близости к степеням двойки.
Таким образом, предложенный аппарат рекурсивных модулярных вычислений дает следующие преимущества:
- 1. Устранение дисбаланса в операциях с малыми и большими модулями (аппаратные и временные затраты примерно одинаковы, т.к. в идеале все базисные модули имеют одинаковое число бит).
- 2. Существенно более высокая степень распараллеливаемости, а значит и более высокое быстродействие.
- 3. Появляется регулярность (большое количество одинаковых базисных модулей).
- 4. Малая разрядность базисных модулей позволяет реализовать модульные операции на комбинационных схемах, оптимизированных в базисе булевых функций.
Представление данных и основные операции рекурсивной модулярной арифметики
Идея, на которой базируется рекурсивная модулярная арифметика: выразить систему модулей через систему субмодулей, имеющую меньшую размерность.
Пусть задана система модулей  и задан некоторый вектор
 и задан некоторый вектор  . Выразим
. Выразим  через систему субмодулей
 через систему субмодулей 
 , где , где и и : : . .
В этом случае вектор A можно представить в следующем виде:
 , см. рис. 1. , см. рис. 1.
Назовем систему из m младших модулей системой базовых модулей, а их произведение обозначим   .
 . 
Пусть  , а
 , а  , тогда при
 , тогда при  имеет место рекурсия.
 имеет место рекурсия.  по системе модулей
 по системе модулей  или, раскрывая рекурсию:
 или, раскрывая рекурсию:  . На рис.2 приведен частный случай разложения элемента
 . На рис.2 приведен частный случай разложения элемента  для случая
 для случая  и
 и  .
.
Прямое преобразование числа из позиционной системы счисления в представление рекурсивной модулярной арифметики
Если в традиционной модулярной арифметике число элементов вектора равно числу элементов в системе модулей, то в рекурсивной модулярной арифметике количество элементов вектора увеличивается в зависимости от заданных  и
 и  .
Очевидно, что каждый из первых
 .
Очевидно, что каждый из первых  элементов представляется в виде одного числа.
 элементов представляется в виде одного числа.  -й элемент содержит
-й элемент содержит  элементов, поскольку выражается через
 элементов, поскольку выражается через  элементов системы субмодулей:
 элементов системы субмодулей: 
 . .
 -й элемент содержит
-й элемент содержит  элементов, поскольку выражается через
 элементов, поскольку выражается через  элементов системы субмодулей и
 элементов системы субмодулей и  элементов вектора
 элементов вектора  . Таким образом, продолжая рассуждения, можно заключить, что число элементов
 . Таким образом, продолжая рассуждения, можно заключить, что число элементов  для вектора
 для вектора  может быть выражено следующей формулой:
 может быть выражено следующей формулой:
Общее же число элементов вектора
вектора  можно рассчитать, воспользовавшись формулой суммы геометрической прогрессии:
 можно рассчитать, воспользовавшись формулой суммы геометрической прогрессии:
Рассмотрим численный пример. Пусть задана система модулей: 
 .
 .
 .
Также необходимо убедиться что
 .
Также необходимо убедиться что
 ,
,  .
 .
Выберем систему базовых модулей  . 
В этом случае
 . 
В этом случае  ,
 ,  .
Число элементов вектора
 .
Число элементов вектора  .
 .
Разложим число  , заданное в позиционной системе счисления в вектор по обычному базису.
 , заданное в позиционной системе счисления в вектор по обычному базису.
 . .
Теперь разложим число  по рекурсивному базису:
 по рекурсивному базису:
 . .
 
Поскольку все числа в этом векторе не превышают 3, то для хранения вектора потребуется 16*2=32 бит вместо 20 бит для хранения числа в позиционной системе счисления. Степень избыточности составит 1.6. Иллюстрацию к примеру смотрите на рисунке 3.
Ограничения на выбор базиса
Максимальное значение, которое можно представить с помощью  , равно
, равно  . Чтобы была возможность выполнять арифметические операции над числами, требуется, чтобы результат операции для
 . Чтобы была возможность выполнять арифметические операции над числами, требуется, чтобы результат операции для  -го элемента был меньше
 -го элемента был меньше  .Для сложения это будет
 .Для сложения это будет  , а для умножения -
 , а для умножения -  .
Рассмотрим следующий пример. Пусть задан базис
 .
Рассмотрим следующий пример. Пусть задан базис  . Выберем систему базовых модулей
 . Выберем систему базовых модулей  . В этом случае
 . В этом случае  ,
 ,  . Поскольку для сложения потребуется максимально представимое число 8, что больше 6, а для умножения 16, что тоже больше 6, то в таком базисе можно выполнять взаимно-однозначное разложение чисел, но для базовых арифметических операций он не подходит. Для реальных задач требуется увеличение числа
 . Поскольку для сложения потребуется максимально представимое число 8, что больше 6, а для умножения 16, что тоже больше 6, то в таком базисе можно выполнять взаимно-однозначное разложение чисел, но для базовых арифметических операций он не подходит. Для реальных задач требуется увеличение числа  .
Как именно выбирать элементы базиса? Рассмотрим следующий пример. Пусть задана система базовых модулей
 .
Как именно выбирать элементы базиса? Рассмотрим следующий пример. Пусть задана система базовых модулей  . Требуется определить
 . Требуется определить  таким образом, чтобы в рамках полученного рекурсивного базиса можно было использовать операцию умножения.
 таким образом, чтобы в рамках полученного рекурсивного базиса можно было использовать операцию умножения.
 =>
 =>  => Невозможно разобрать выражение (лексическая ошибка):  Q > (p_4 – 1)^2
 => Невозможно разобрать выражение (лексическая ошибка):  Q > (p_4 – 1)^2 
=>=>
=>

 
 
 
 
 
 

