УСТРОЙСТВО ДЛЯ ПРЕОБРАЗОВАНИЯ ИЗ ПОЛИНОМИАЛЬНОЙ СИСТЕМЫ КЛАССОВ ВЫЧЕТОВ В ПОЗИЦИОННЫЙ КОД
DEVICE FOR CONVERSION FROM POLYNOMIAL SYSTEM OF RESIDUE CLASSES TO POSITION CODE

Изобретение относится к вычислительной технике, в частности к модулярным спецпроцессорам (СП), функционирующим в полиномиальной системе классов вычетов (ПСКВ) и способным сохранить работоспособное состояние при возникновении ошибки за счет реконфигурации структуры.
Известно устройство для преобразования из полиномиальной системы классов вычетов в позиционный код (Патент №2409840, G06F 11/07, опубликовано 20.01.2011, бюл. №2), которое содержит вход запуска устройства, группу сдвиговых регистров, блок синхронизации, выход устройства, группу блоков расчета ортогональных базисов, блоки трехвходовых элементов И, сумматор по модулю два, группу информационных входов, группу управляющих входов, при этом группа блоков расчета ортогональных базисов содержит первый блок памяти, умножитель, второй блок памяти, второй умножитель, регистр, выход регистра.
Недостатком данного устройства является низкая скорость преобразования из кода ПСКВ в позиционный код.
Техническим результатом изобретения является повышение скорости преобразования из кода ПСКВ в позиционный код за счет снижения времени вычисления ортогональных базисов модулярного кода
i
Указанный технический результат достигается за счет ввода в конструкцию блока расчета ортогональных базисов сумматора по модулю и преобразователя «индекс - элемент» вместо первого умножителя по модулю p(z), используемого в прототипе.
Предлагается устройство для преобразования из полиномиальной системы классов вычетов в позиционный код, содержащее вход запуска устройства, группу сдвиговых регистров, блок синхронизации, выход устройства, блоки элементов И, группу информационных входов, причем вход запуска устройства соединен с входом запуска блока синхронизации, выход которого соединен с входами разрешения сдвига сдвиговых регистров группы, информационные входы которых являются соответствующими информационными входами группы устройства, выход i-го сдвигового регистра группы соединен с первым входом элемента И i-й группы (i=1, 2, …, n), причем устройство содержит группу блоков расчета ортогональных базисов, сумматор по модулю два, управляющие входы устройства, причем выходы блока синхронизации подключены к первому входу блоков расчета ортогональных базисов, второй вход которых подключен к управляющим входам устройства, выход i-го блока расчета ортогональных базисов подключен ко второму входу элементов И i-го блока, третьи входы которых соединены с соответствующим управляющим входом группы, выходы элементов И соединены со входами сумматора по модулю два, выход которого является выходом устройства. При этом согласно изобретению блок расчета ортогональных базисов содержит синхровходы, n управляющих входов, первый и второй блоки памяти, умножитель, сумматор по модулю, регистр, преобразователь индекс-элемент, причем синхровходы подключены к первому и второму блокам памяти и регистру, n управляющих входов, подключенных к первому и второму блокам памяти, выход первого блока памяти подключен к первому входу сумматора по модулю, выход второго блока памяти подключен к второму входу умножителя, выход сумматора по модулю подключен ко входу регистра, первый выход регистра подсоединен ко входу преобразователя индекс-элемент, выход преобразователя индекс-элемент подключен к первому входу умножителя, ко второму входу умножителя подсоединен выход второго блока памяти, второй выход регистра подключен ко второму входу сумматора по модулю, выход умножителя является выходом блока.
Для перевода из кода ПСКВ в позиционный код используется китайская теорема об остатках (КТО), согласно которой
i
где B(z) - ортогональный базис i-го основания,
Ортогональный базис определяется как
i
где m(z) - вес ортогонального базиса i-го основания.
i
Применение m(z) позволяет обеспечить выполнение условия
.
Преобразуем выражение (2) к виду
Подставив равенство (3) в выражение (1), получаем
j
i
где  - обратная величина основания p(z) по модулю p(z); k - количество информационных оснований; r - количество контрольных оснований; k+r=n.
i
i
i
С целью повышения скорости вычисления ортогонального базиса B(z) предполагается отказаться от выполнения мультипликативной процедуры (4) вычисления веса m(z) и перейти к использованию индексного представления, которое позволяет свести вычисление m(z) в виде совокупности аддитивных операций.
A
Для эффективной реализации операций мультипликативного типа (умножение, деление, возведение в степень) характерно использование теории индексов. Число i, являющееся решением сравнения
A
называется индексом числа А и обозначается i=indA. Первообразный корень g называется основанием индекса.
1
2
k
Известно, что индекс J произведения простых целых чисел A, А, …, A по модулю p равен сумме индексов сомножителей, взятой по модулю р-1, т.е.
1
2
k
1
2
k
где i, i, …, i - индексы положительных чисел A, А, …, A по модулю p при первообразном коде g.
A
B
Таким образом, очевидна возможность сведения операции умножения двух операндов А и В по модулю р к операции суммирования индексов i, i этих операндов при первообразном корне g по модулю р-1.
Структура устройства показана на фиг.1. Устройство содержит вход 1 запуска устройства, группу сдвиговых регистров 2, блок 3 синхронизации, выход 4 устройства, группу блоков 5 расчета ортогональных базисов, блоки 6 трехвходовых элементов И, сумматор 7 по модулю два, группу информационных входов 8, группу управляющих входов 9 устройства.
Вход 1 запуска устройства соединен с входом запуска блока 3 синхронизации, выход которого соединен с входами разрешения сдвига сдвиговых регистров группы 2, информационные входы которых являются соответствующими информационными входами 8 группы устройства, выход i-го сдвигового регистра группы 2 соединен с первым входом элемента И i-ой группы (i=1, 2, …, n) блоков 6 трехвходовых элементов И. Выходы блока 3 синхронизации также подключены к первому входу блоков 5 расчета ортогональных базисов, второй вход которых подключен к управляющим входам устройства 9, выход i-го блока расчета ортогональных базисов 5 подключен ко второму входу элементов И i-го блока 6, третьи входы которых соединены с соответствующим управляющим входом группы 9, выходы элементов И блока 6 соединены со входами сумматора 7 по модулю два, выход которого является выходом устройства 4.
i
С целью повышения скорости вычисления ортогонального базиса в блоках 5 расчета ортогональных базисов вместо умножителя по модулю p(z), (где i=1, 2, … n), используемого в прототипе, устанавливаем сумматор по модулю , где  и преобразователь индекс-элемент.
Блок расчета ортогональных базисов содержит синхровходы 10, n управляющих входов 11, первый блок памяти 12, сумматор по модулю 13, регистр 14, преобразователь индекс-элемент 15, второй блок памяти 16, умножитель 17, выход 18 блока. Структура блока показана на фиг.2.
Синхровходы 10 подключены к синхровходам первого блока памяти 12, второго блока памяти 16, регистра 14, а управляющие входы 11 подключены адресным входам первого 12 блока памяти и второго блока памяти 16. Первый вход сумматора по модулю 13 подключен к выходу первого блока памяти 12, а второй вход сумматора по модулю подсоединен ко второму входа регистра 14. Вход регистра 14 подключен к выходу сумматора по модулю 13. Вход преобразователя индекс-элемент 15 подключен к первому выходу регистра 14, а выход подсоединен к первому входу умножителя 17, второй вход которого подключен к выходу второго блока памяти 16. Выход умножителя 17 является выходом 18 блока расчета ортогональных базисов.
1
2
n
Число, представляемое в коде ПСКВ, A(z)=(α(z), α(z), …, α(z)), через группу информационных входов 8 заносится на сдвиговые регистры 2 группы, причем вычеты по каждому из оснований ПСКВ заносятся в свой регистр 2. Работа устройства происходит по тактам. В каждом такте содержимое регистров 2 сдвигается вправо (в сторону младших разрядов) на один разряд. Алгоритм работы устройства может быть представлен в виде
где n - количество оснований ПСКВ;
- степень i-го основания ПСКВ;
- значение g-го разряда, i-го основания ПСКВ;
- пересчитанное значение i-го ортогонального базиса.
i
Из выражения (7) видно, что устройство реализует операцию последовательного суммирования произведений пересчитанных ортогональных базисов  назначения остатка α(z), представленного в двоичном коде.
Блок расчета ортогональных базисов 5 работает следующим образом. При поступлении первого синхросигнала от блока синхронизации 3 на входы 10 из первого блока памяти 12 на первый вход сумматора по модулю 13 подается первое значение индекса , которое суммируется с нулем и подается на вход регистра 14. При приходе второго синхросигнала на входы 10 полученный результат со второго выхода регистра 14 подается на второй вход сумматора по модулю 13, на первый вход которого поступает второе значение индекса  с выхода первого блока памяти 12.
i
Спустя n-1 такт в регистре 14 находится значение индекса веса ортогонального базиса m(z), согласно
Причем величины  определяются значением сигнала, поступающего c j-го управляющего входа 11, согласно условию
Значения сигналов, поступающих по управляющим входам 11, определяются из условия
i
i
i
Вычисленное значение индекс γ веса ортогонального базиса поступает на вход преобразователя индекс-элемент 15. Он предназначен для преобразования двоичного кода индекса γ в двоичный код веса m(z). Таким образом, данный преобразователь индекс-элемент 15 может быть реализован на основе кодопреобразователя.
i
Полученное значение m(z) веса ортогонального базиса по i-му основанию подается на первый вход умножителя 17, а на второй вход последнего поступает с выхода второго блока памяти 16 значение
отк
отк
i
где l∉U; U - множество отказавших оснований в процессе функционирования вычислительной системы ПСКВ; g=0, 1, …, deg p(z)-1.
g
*
Значение констант zP(z) хранится во втором блоке памяти 16 и выбирается согласно сигналам, поступающим по управляющим входам 11.
С выхода умножителя 17 снимается значение
которое поступает на выход 18 блока расчета ортогональных базисов.
Если в процессе функционирования вычислительной системы ПСКВ откажет b-е основание, то на управляющих входах 9 появится сигнал
i
Данный сигнал поступает на управляющие входы 11 блоков 5 расчета ортогональных базисов. Под управлением данного сигнала из первого блока 12 памяти значения индексов , а в сумматоре по модулю 13 за (n-2) такта вычисляется значение индекса γ согласно (8). При этом .
Под управлением сигналов, поступивших с управляющих входов 11, и синхровходов 10, из второго блока 16 памяти поступают значения, определенные выражением (11). Умножитель 17 реализует выражение (12), где
1
b-1
b
b+1
n
b
b
b
Одновременно с этим значения (y, …, y, y, y, …, y)=(1, …, 1, 0, 1, …, 1) подаются на третьи входы 6 элементов И блоков 6. Нулевой сигнал y=0 производит закрытие элементов И b-го блока 6. Таким образом, значения α(z)·B(z) в получении конечного результата согласно не участвуют, так как на сумматор 7 они не подаются.
Рассмотрим пример
1
2
3
4
5
2
4
3
2
4
3
4
Необходимо вычислить значение ортогональных базисов ПСКВ с основаниями p(z)=z+1, p(z)=z+z+1, p(z)=z+z+z+z+1, p(z)=z+z+1, p(z)=z+z+1.
i
Согласно (14) и учитывая, что отказавших оснований нет, определяем значения P(z)
1
2
3
4
5
14
13
12
11
10
9
8
7
6
5
4
3
2
P(z)=p(z)p(z)p(z)p(z)=z+z+z+z+z+z+z+z+z+z+z+z+z+z+1;
2
1
3
4
5
13
12
10
9
7
6
4
3
P(z)=p(z)p(z)p(z)p(z)=z+z+z+z+z+z+z+z+z+1;
3
1
2
4
5
11
10
6
5
Р(z)=p(z)p(z)p(z)p(z)=z+z+z+z+z+1;
4
1
2
3
5
11
10
9
8
6
4
3
P(z)=p(z)p(z)p(z)p(z)=z+z+z+z+z+z+z+1;
5
1
2
3
4
11
8
7
5
3
2
P(z)=p(z)p(z)p(z)p(z)=z+z+z+z+z+z+z+1;
1
2
3
4
5
3
3
Для выполнения условия  вычислим значения весов ортогональных базисов. Получаем m(z)=1; m(z)=z; m(z)=z+z; m(z)=z; m(z)=z.
1
Определим значения m(z). Тогда
1
2
2
2
m(z)=1; m(z)=z(z+1)mod(z+z+1)=z;
3
3
3
2
3
2
4
3
2
3
m(z)=[(z+z)(z+1)(z+1)(z+z+1)]mod(z+z+z+z+1)=z+z;
4
5
3
3
2
4
3
3
m(z)=[z(z+z+1)(z+z+z+1)]mod(z+z+1)=z;
5
3
2
3
2
3
2
4
m(z)=[(z+z+z)(z+z)(z+z)(z+z)]mod(z+z+1)=z.
5
5
4
4
Рассмотрим работу группы блоков расчета ортогональных базисов 5 на примере блока, функционирующего по модулю p(z)=z+z+1. Представим все основания ПСКВ в виде элементов поля, порождаемых модулем p(z)=z+z+1
Тогда имеем
1
5
4
p(z)mod p(z)=(z+1)mod(z+z+1)=z+1
2
5
2
4
2
p(z)mod p(z)=(z+z+1)mod(z+z+1)=z+z+1
3
5
4
3
2
4
3
2
p(z)mod p(z)=(z+z+z+z+1)mod(z+z+1)=z+z
4
5
4
3
4
3
p(z)mod p(z)=(z+z+1)mod(z+z+1)=z+z
В таблице 1 представлено соответствие значений оснований и используемых индексов
Таблица 1
Основание
Элемент поля
Мультипликативно обратный элемент
Индекс обратного элемента
p<sub>1</sub>(z)
z+1
z<sup>3</sup>+z<sup>2</sup>+z
11
p<sub>2</sub>(z)
z<sup>2</sup>+z+1
z<sup>2</sup>+z
5
p<sub>3</sub>(z)
z<sup>3</sup>+z<sup>2</sup>
z<sup>3</sup>+z
9
p<sub>4</sub>(z)
z<sup>3</sup>+z
z<sup>3</sup>+z<sup>2</sup>
6
1
2
3
4
5
Так как все каналы находятся в работоспособном состоянии, то на управляющих входах появится сигнал (y, y, y, y, y)=(1, 1, 1, 1, 1), который поступает на управляющие входы 11 блока расчета ортогонального базиса 5 при поступлении первого сигнала.
5
5
4
При поступлении первого сигнала по входу 10 с выхода первого блока памяти 12 выдается значение . Так, степень полинома р(z) равна deg p(z)=4, то сумматор 13 работает по модулю М=2-1=15. Поступившее значение  по первому входу сумматора 13 по модулю складывается с нулем. Полученный результат записывается в регистр 14.
При поступлении второго сигнала по входу 10 с выхода первого блока памяти 12 на первый вход сумматора 13 по модулю выдается значение . Это значение складывается по модулю 15, с результатом , поступившим по второму входу сумматора 13 из регистра 14. Результат операции
записывается в регистр 14.
При поступлении третьего сигнала по входу 10 с выхода первого блока памяти 12 на первый вход сумматора 13 по модулю выдается значение . Это значение складывается с предыдущим результатом, поступившим по второму входу сумматора 13 и с регистра 14. Результат операции (1+9) mod 15=10 записывается в регистр 14.
5
5
5
При поступлении четвертого сигнала по входу 10 с выхода первого блока памяти 12 на первый вход сумматора 13 по модулю выдается значении . Это значение складывается с предыдущим результатом, поступившим по второму входу сумматора 13 по модулю из регистра 4. В результате получаем значение индекса γ=(10+6) mod 15=1 для веса m(z) ортогонального базиса B(z).
Полученное значение с первого выхода регистра 14 поступает на вход преобразователя индекс-элемент 15. Данный преобразователь преобразует входной код индекса в двоичный код элемента согласно таблице 2.
Таблица 2
Соответствие индекса и значения элемента
Индекс
Входной код
Элемент
Двоичный код
0
0000
1
0001
1
0001
z
0010
2
0010
z<sup>2</sup>
0100
3
0011
z<sup>3</sup>
1000
4
0100
z+1
0011
5
0101
z<sup>2</sup>+z
0110
6
0110
z<sup>3</sup>+z<sup>2</sup>
1100
7
0111
z<sup>3</sup>+z+1
1011
8
1000
z<sup>2</sup>+1
0101
9
1001
z<sup>3</sup>+z
1010
10
1010
z<sup>2</sup>+z+1
0111
11
1011
z<sup>3</sup>+z<sup>2</sup>+z
1110
12
1100
z<sup>3</sup>+z<sup>2</sup>+z+1
1111
13
1101
z<sup>3</sup>+1
1101
14
1110
z<sup>3</sup>+1
1001
5
Тогда с выхода преобразователя индекс-элемент 15 снимается значение m(z)=z=0010. Полученное значение с выхода преобразователя 15 подается на первый вход умножителя 17, на второй вход которого подается значение
5
1
2
3
4
11
8
7
5
3
2
P(z)=p(z)p(z)р(z)p(z)=z+z+z+z+z+z+z+1
с выхода второго блока памяти 16. Данное значение определяется сигналом, поступающим по управляющим входам 11
1
2
3
4
5
(y, y, y, y, y)=(1, 1, 1, 1, 1).
В результате значения ортогонального базиса будет равно
5
5
5
l2
9
8
6
4
3
2
B(z)=m(z)P(z)=z+z+z+z+z+z+z+z.
Остальные блоки 5 работают аналогично.
Проведем сравнительный анализ скорости вычисления ортогональных базисов в прототипе и предложенном устройстве.
В прототипе для вычисления веса ортогонального базиса требуется (n-1) умножений по модулю. При использовании комбинационного типа умножения это время составит
умн
где Т - время выполнения операции умножения L-разрядных операндов;
сум
Т - время выполнения операции сложения; L - разрядность умножителя.
В предложенном устройстве для вычисления веса ортогонального базиса требуется выполнение (n-1) сложения по модулю и преобразование «индекс-элемент». Последняя операция может быть реализована с использованием последовательного соединения кодера и декодера, тогда время вычисления веса ортогонального базиса будет определяться
CD
DC
где T - время срабатывания кодера; T - время срабатывания декодера.
i
Анализ выражений (15) и (16) показывает, что замена мультипликативной операции получения веса m(z) аддитивной позволяет повысить скорость вычисления ортогонального базиса.