УСТРОЙСТВО РАСШИРЕНИЯ ОСНОВАНИЙ МОДУЛЯРНОГО КОДА
APPARATUS FOR EXPANDING MODULAR CODE BASES

Изобретение относиться к вычислительной технике и, в частности к непозиционным компьютерным системам, и предназначено для обеспечения требуемой точности при вычислении с использованием модулярного кода
1
2
n
i
Одним из основных достоинств полиномиального модулярного кода (ПМК) является параллельная обработка данных по основаниям ПМК p(z), p(z), …, p(z), где p(z) - неприводимый полином поля GF(2). Данное свойство полиномиального модулярного кода позволяет не только повысить скорость обработки данных за счет использования малоразрядных остатков, но и обеспечить построение отказоустойчивых вычислительных систем.
Так как информация обрабатывается в параллельно функционирующих вычислительных каналах по числу оснований ПМК, то при возникновении отказов несправный канал можно отключить. Это приводит к деградации структуры вычислительного устройства и уменьшению точности вычисления. Поэтому для обеспечения требуемой точности осуществляется процедура расширения оснований.
n+1
При расширении набора оснований полиномиального модулярного кода на основании p(z) диапазон представления чисел
Расширяется до значения
n+1
n+1
Задача расширения системы оснований заключается в нахождении остатка α(z) по модулю p(z), удовлетворяющего
1
2
n
1
2
n
где A(z)=(α(z), α(z), …, α(z)) - результат вычислений в модулярном коде, представленный в системе оснований p(z), p(z), …, p(z)
В работе [1] (Червяков Н.И., Сахнюк П.А., Шапошников А.В., Макоха А.Н. Нейрокомпьютеры в остаточных классах. Кн.11. - М.: Радиотехника, 2003, 272 с. - С.138-139) представлен алгоритм реализации процедуры расширения системы оснований.
В основу данного алгоритма положена китайская теорема об остатках (КТО), с помощью которой осуществляется перевод из модулярного кода в позиционный код
i
A
где B - ортогональный базис i-го основания; r(z) - ранг A(z) в модулярном коде.
n+1
Тогда для вычисления остатка α(z) справедливо выражение ([1 с.138])
Таким образом, для расширения системы оснований необходимо:
A
1. Вычислить значение ранга r(z)
i
где ; m(z) - вес ортогонального базиса;
n+1
2. Найти остаток α(z) по формуле (5).
Основным недостатком представленного алгоритма расширения оснований являются значительные аппаратные затраты.
n+1
Целью изобретения является уменьшение аппаратных затрат на вычисление остатка α(z). Цель достигается за счет применения нового алгоритма расширения системы оснований.
Техническим результатом, достигнутым при осуществлении заявленного изобретения, является снижение аппаратурных затрат на расширение системы основания.
Рассмотрим алгоритм перевода из полиномиального модулярного кода в позиционный код согласно китайской теореме об остатках (КТО), имеем
<mrow><mi>P</mi><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mo>∏</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><msub><mi>p</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow>
где
- рабочий диапазон.
i
Воспользуемся определением ортогональных базисов B(z), тогда выражение (7) можно представить в виде
i
где ; m(z) - вес ортогонального базиса.
i
i
i
A
Умножение остатка α(z) на вес ортогонального базиса m(z) по модулю p(z) с учетом, что суммирование в ПКМ выполняется по модулю два, позволяют отказаться от вычисления ранга r(z) при использовании китайской теоремы об остатках при переводе к позиционному коду.
n+1
n+1
Тогда для вычисления нового остатка α(z) по основанию p(z) воспользуемся следующим выражением:
1
2
3
2
4
3
2
Пример. Пусть задана упорядоченная система оснований p(z)=z+1, p(z)=z+z+1, p(z)=z+z+z+z+1.
В этом случае диапазон составляет
i
i
Вычислим значения P(z) и m(z). Имеем
1
2
3
2
4
3
2
6
4
3
2
P(z)=p(z)*p(z)=(z+z+1)*(z+z+z+z+1)=z+z+z+z+1
2
1
3
4
3
2
5
P(z)=p(z)*p(z)=(z+1)*(z+z+z+z+1)=z+1
3
1
2
2
3
P(z)=p(z)*p(z)=(z+1)*(z+z+1)=z+1
i
Вычислим значение веса ортогонального базиса m(z) из условия
Тогда имеем
1
m(z)=1;
2
m(z)=z+1;
3
2
m(z)=z+z+1.
Следовательно, ортогональные базисы такой системы оснований равны
1
1
1
6
4
3
2
B(z)=m(z)*P(z)=z+z+z+z+1;
2
2
2
6
5
B(z)=m(z)*P(z)=z+z+z+1;
3
3
3
5
4
3
2
B(z)=m(z)*P(z)=z+z+z+z+z+1.
6
Пусть задан полином A(z)=z. Данный полином в модулярном коде представляется A(z)=(1, 1, z).
В качестве основания расширения выбираем
n+1
4
4
p(z)=p(z)=z+z+1
i
4
Вычислим значения P(z)modp(z)
Определим произведение
Подставим полученные значения в выражение (9)
Определим остаток
Структура устройства расширения оснований модулярного кода представлена на фиг.1.
i
i
n+1
<mrow><msubsup><mrow><mrow><mo>|</mo><mrow><msub><mi>P</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>|</mo></mrow></mrow><mrow><msub><mi>p</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow></msub></mrow><mo>+</mo></msubsup></mrow>
Устройство содержит вход устройства 1, первый блок умножителей 2, который содержит n умножителей по модулю p(z), где i=1, 2, …, n, первый блок памяти 3, для хранения ортогональных весов m(z); второй блок умножителей 4, который содержит n умножителей по модулю p(z), второй блок памяти 5 для хранения
, сумматор 6 по модулю два, выход устройства 7.
i
i
n+1
Причем вход устройства 1 подключен к первому входу каждого из умножителей p(z), i=1, …, n, (обозначение диапазона) первого блока умножителей 2, вторые входы умножителей этого блока подключены к выходу первого блока памяти 3. Выход умножителя 2.i, выполняющего операцию умножения по модулю p(z) первого блока умножителей 2, подключен к первому входу умножителя 4.i, выполняющего операцию умножения по модулю p(z), второго блока умножителей 4. Второй вход умножителя 4.i второго блока умножителей 4 подключен к входу второго блока памяти 5. Выход умножителя 4.i подается на вход сумматора 6 по модулю 2, выход которого является выходом устройства 7.
1
2
n
i
i
n+1
<mrow><msubsup><mrow><mrow><mo>|</mo><mrow><mo stretchy="false">(</mo><msub><mi>α</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow><mo>∗</mo><msub><mi>m</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>|</mo></mrow></mrow><mrow><msub><mi>p</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>+</mo></msubsup></mrow>
<mrow><msubsup><mrow><mrow><mo>|</mo><mrow><msub><mi>P</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>|</mo></mrow></mrow><mrow><msub><mi>p</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>z</mi><mo>)</mo></mrow></mrow><mo>+</mo></msubsup></mrow>
Устройство работает следующим образом. На вход устройства 1 поступает модулярный код (α(z), α(z), …, α(z)). Остаток α(z) подается на вход умножителя 2.i первого блока умножителей 2. На второй вход умножителя 2.i подается вес ортогонального базиса m(z) с выхода первого блока памяти 3. С выхода умножителя 2.i первого блока 2 умножителей снимаются значения
. Это значение подается на первый вход умножителя 4.i, выполняющего умножение по модулю p(z). На второй вход умножителя 4.i второго блока умножителей 4 подается значение
с выхода второго блока памяти 5. С выхода умножителя 4.i, второго блока умножителей 4 снимаем значение
n+1
n+1
Вычисленные значения произведения подаются на входы сумматора 6 по модулю 2. На входе сумматора 6 по модулю два появляется значение остатка α(z) в расширенной системе оснований. Вычисленное значение остатка α(z)поступает на выход устройства 7.