УДК 004.383.3
В.А. Романчук
РАЗРАБОТКА И ОПТИМИЗАЦИЯ ПРОГРАММНОГО КОДА НЕЙРОПРОЦЕССОРНОЙ СИСТЕМЫ УПРАВЛЕНИЯ ДИНАМИЧЕСКИМИ ОБЪЕКТАМИ НА ПРИМЕРЕ ГЕКСАПОДА
Рассматриваются вопросы разработки и оптимизации однопроцессорного варианта программного кода матричных вычислений управляющих воздействий по алгоритму вычисления коэффициентов регуляторов двигателей ног на примере гексапода и вычисления задаваемых и измеряемых перемещений.
нейропроцессор, вычислительная система, гексапод, управление динамическим объектом, программирование, оптимизация.
Целью работы является разработка и оптимизация однопроцессорного варианта программного кода матричных вычислений управляющих воздействий по алгоритму вычисления коэффициентов регуляторов двигателей ног на примере гекса-пода и вычисления задаваемых и измеряемых перемещений.
Исходными данными для разработки алгоритмического обеспечения являются: описание цифровых сигналов датчиков; описание алгоритмов форми-
© Романчук В.А., 2015 их сигналов; математическая модель, реализованная в виде модели модуля SIMULINK программного комплекса MATLAB.
Входными данными разработанных алгоритмов являются описание сигналов датчиков, полученных посредством преобразования аналоговых сигналов с гексапода в цифровой вид с помощью аналогово-цифрового преобразователя.
Выходными данными разработанных алгоритмов являются: управляющие сигналы, преобразуемые в аналоговое представление посредством использования цифроаналогового преобразователя; информационные сигналы вспомогательного и служебного характера.
Для реализации алгоритмов была выбрана аппаратная база: нейропроцес-сорные устройства на базе процессоров особого класса шестого поколения, широко используемые в настоящее время в военной и космической промышленности [2]. Было выбрано семейство процессоров NeuroMatrix 640x, процессоры которого выпускаются научно-техническим центром «Модуль» (г. Москва).
Практические исследования производились с использованием нейропро-цессора NM6406 на базе инструментального модуля MC 51.03 и микрокомпьютера MB 77.07.
Процессор NM6406 (1879ВМ5Я) представляет собой высокопроизводительный микропроцессор цифровой обработки сигналов с векторно-конвейерной
VLIW/SIMD архитектурой на базе 64-разрядного процессорного ядра NeuroMatrix. Тактовая частота процессора 320 МГц, технология 90нм КМОП, потребляемая мощность 1,2 Вт, условия эксплуатации -60 °C ... +85 °C [4].
В составе процессора имеются вычислительные устройства:
- 32/64-разрядный RISC-процессор (разрядность данных — 32 бита; разрядность команд - 32 и 64 бита); размер адресного пространства — 4Гх32 бит, выполнение трех скалярных операций за такт (АЛУ-операция, модификация адреса и операция ввода/вывода);
- 64-разрядный векторный сопроцессор VECTOR COPROCESSOR (разрядность данных программно задается от 2 до 64 бит, при этом все данные упакованы в 64-разрядные слова; базовая операция представляет собой умножение матрицы целочисленных данных на матрицу целочисленных данных; одновременное выполнение двух функций насыщения над потоком входных данных.
Производительность процессора имеет следующие показатели: 300 MIPS или 900 MOPS; 2 MAC для 32-разрядных данных, 4 MAC для 16-разрядных данных, 24 MAC для 8-разрядных данных, 80 MAC для 4-разрядных данных, 224 MAC для 2-разрядных данных (МАС — количество операций умножения с накоплением, выполняемых за один процессорный такт).
Все подпрограммы реализованы для целочисленных вычислений, но возможно искусственное введение целой и вещественной части числа путем использования аппаратного разбиения входных и выходных данных в процессоре.
Эффективное распараллеливание вычислений достигается за счет оптимизации и аппаратной поддержки операции векторно-матричного умножения на процессоре NeuroMatrix NM6406 [3]. Все арифметические вычисления, относящиеся непосредственно к вычислению управляющих воздействий, производятся на векторном сопроцессоре. Так как векторный сопроцессор позволяет оперировать данными переменной разрядности, то для хранения входных данных и результатов вычислений удобно отводить на целую и вещественную части по 32 разряда, а для хранения комплексных коэффициентов W — соответственно по 8 бит.
Для разработки программы были реализованы подпрограммы приведенных ниже функциональных элементов математической модели специализированного вычислительного устройства.
1. Матричный умножитель и матричный умножитель с накоплением
Дифференциальные уравнения, описывающие динамику гексапода, могут быть представлены в виде разностных величин в векторно-матричной форме, которые удобны для реализации средствами вычислительной техники. Поэтому основная операция, которую должно выполнять специализированное матричное устройство — перемножение матриц, которые могут быть разбиты на парные элементарные операции «умножение — сложение» (умножение с накоплением). Для этой операции используется векторный сопроцессор, который представляет собой общий матричный узел для выполнения операций умножения с накопле-
нием арифметических и логических операций, маскирования, функций активации над векторами и матрицами.
Основной функциональный элемент с набором регистров общего назначения представляет собой матричную структуру 64х64, произвольно разделенную на столбцы и строки.
Операция умножения с накоплением выполняется в рабочей матрице процессора:
2, = у + £ (хгж,);/ = 1т 7 = Щ,
где X — элемент данных, поступающих на вход информационного узла векторного процессора; У^ — частичная сумма, накопленная на предыдущем этапе взвешенного суммирования; У0 — элемент входного вектора; Ж — весовой
коэффициент, расположенный в соответствующей ячейке рабочей матрицы процессоров; т — количество столбцов; п — количество строк рабочей матрицы. Рабочая матрица имеет 2 входа:
X = (х1, х2,..., хп} — 64 разряда; У = {у^ ^^ Ут}.
Данные на входе х умножаются на ячейки матрицы, после чего суммируются в пределах столбца и в результате получается накапливаемая сумма г .
Данные со входа у добавляются к результатам умножения со сложением, выполненным над данными входа х .
В рабочую матрицу либо непосредственно, либо через теневую маску предварительно загружаются весовые коэффициенты Ж. Последний способ наиболее
целесообразен, так как по времени он осуществляется за один рабочий такт.
Разбиение матрицы на строки определяется рабочим регистром Sb2. Код разбиения в виде 64-разрядных слов входных данных, поступающих по входу у , заранее записывается в Sb2. Разбиение рабочей матрицы на столбцы задается рабочим регистром пЬ2, который определяет разбиение 64-разрядных слов на входе у и также предварительно заносится в виде слов в регистр. Этот же регистр определяет разрядность результатов вычисления, которые содержатся в буфере AFIFO.
В макроячейках происходит умножение элемента входных данных X, на
весовой коэффициент Ж и сложение со значением верхней ячейки с учетом
входного сигнала У7.
Для сложения разрядности выходных данных и защиты от арифметического переполнения используется программируемая функция насыщения.
Операнды и выходные значения упаковываются в 64-разрядные слова. Все операции в матрице производятся параллельно за 1 такт. Загрузка весовых коэффициентов производится за 32 такта.
В векторном процессоре для ускорения работы существует теневая маска, в которую весовые коэффициенты загружаются в фоновом режиме. Переключение теневой маски в рабочую матрицу происходит за один такт.
2. Сумматор двух и более операндов
Сумматор двух и более операндов реализуется с использованием векторного блока процессора и операции взвешенного суммирования с пустым оператором умножения, то есть с «единичной» теневой и рабочей матрицей (все биты 64x32 заполнены единичными битами). Эффективность использования этой операции зависит от разрядности входных данных, так как за счет использования разбиения матрицы на строки и столбцы увеличивается скорость вычислений в связи с одновременной работой с несколькими операндами. Важной особенностью векторного процессора является реализация работы с операндами различной длины.
3. Интегратор значений
Для реализации операции интегрирования используются вычислительные методы, цель которых — заменить операцию интегрирования на комплекс операций вида «сложение — умножение». Согласно алгоритму работы специализированного вычислительного устройства, требуется около 3100 операций суммирования с умножением (см. рис.).
Рис. Алгоритм специализированного вычислительного устройства
Ф, Ф, S, S, G, Ф — рабочие матрицы, полученные из матриц параметров гексапода и матриц параметров корректирующих фильтров; P', P — матрицы параметров корректирующих связей (6x100); a* (t) — вектор-функция программы (18x1); Y(t) — вектор-функция наблюдения (сигналы, поступающие от измерительной системы) (30x1); X(t), X*(t) — вектор-функция текущего и программного состояния системы на i-м шаге управления (100x1); X(t+h), X*(t+h) — то же на (i +1)-м шаге (100x1); U(t) и U(t + h) — вектор управляющих воздействий на i-м и (i + 1)-м шагах управления (30x1); h — шаг интегрирования (0,001) ; © — значение отклонения фокальной оси гексапода HEX от линии визирования объекта^!); С*, R*, R — постоянные матрицы размерностью (3x3, 3x100, 3x100).
Из алгоритма управления гексаподом следует, что основной процедурой в специализированном вычислительном устройстве СВУ является процедура умножения матрицы на вектор:
Фх X =
Фп Ф
12
Ф 21 Ф 22
Ф , Ф „ Ф
m1 m 2 m
Ф1П X1 Ф11X1 + Ф12 X 2 +
Ф 2n X 2 Ф 21X1 + Ф 22 X 2 +
_ х - _ _
Ф mn _ Xn . _Ф m1 X1 + Ф m 2 X 2 +
n
n
Одна компонента вектор-результата получается суммированием произведения элементов строки матрицы на соответствующие элементы вектора-столбца. Эта последовательность операции повторяется столько раз, сколько строк в матрице. Для вычисления произведения матрицы на вектор необходимо выполнять Тувм = m х п операций умножения, где т — число строк матрицы; п — число столбцов и ^смв операций сложения, определяемых по формуле Nсмв = ш х (п — 1) для операций сложения, или около 3000 пар операций «умножение — сложение».
4. Функции активации (насыщения)
Функции активации реализованы с использованием векторного блока процессора и операции взвешенного суммирования. Реализованы подпрограммы двух типов функций активации: пороговая функция и функция насыщения. В блоках активации осуществляются вычисления над упакованными словами данных, что позволяет применять функции активации ко всем элементам упакованного слова одновременно. Основную роль в управлении функциями активации играют регистры Асг и £2сг. Блоки активации размещаются между устройством маскирования и рабочей матрицей или векторным вычислителем. Функ-
ции активации могут быть подвергнуты либо данные, поступающие на вход X, либо на Y, либо на оба входа сразу.
Пороговая активация реализуется следующим образом.
Значения битов поля данных, соответствующих единичным битам регистра АсгА
- если одинаковы, то поле данных не изменяется при обработке арифметической функцией активации (функцией насыщения);
- если не одинаковы и старший бит равен 0, то значение заменяется на положительное пороговое;
- если не одинаковы и старший бит равен 1, то значение заменяется на отрицательное пороговое.
Функция насыщения переводит неотрицательные значения элементов полей данных в 0, отрицательные — в -1.
Элементарные базовые операторы реализуются в виде макросов на языке нейроассемблера. Макросы в языке ассемблера для процессора NM6406 — это определяемые разработчиком фрагменты текста программы, которые содержат законченные, синтаксически правильные языковые элементы. Макросы могут содержать определения констант и переменных времени компиляции, определения данных, команды и пр. (кроме секций). При их использовании проверка синтаксической правильности происходит дважды: первый раз — при обработке тела макроса, второй раз — при подстановке тела макроса с учетом текущего контекста. Подстановка макроса возможна в любом месте программы, где разрешено использование всех содержащихся в макросе конструкций.
После обработки макросов происходит процесс оптимизации программного кода с целью уменьшения избыточности.
Заключение
В результате работы был представлен оптимизированный однопроцессорный вариант программного кода матричных вычислений управляющих воздействий по алгоритму вычисления коэффициентов регуляторов двигателей ног и вычисления задаваемых и измеряемых перемещений на примере динамического объекта гексапода.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Галушкин, А.И. Нейрокомпьютеры [Текст]. — М. : ИПРЖР, 2000. — Кн. 3. — 528с.
2. Галушкин, А.И. Нейронные ЭВМ — перспективное направление развития вычислительной техники [Текст]. — М. : Препринт, 1991. — 615 с.
3. НТЦ «Модуль» [Электронный ресурс] : сайт НТЦ «Модуль», 2011. — Режим доступа : http:// www.module.ru.
4. Ручкин, В.Н. Когнитология и искусственный интеллект [Текст] / В.Н. Ручкин, В.А. Романчук, В.А. Фулин. — Рязань : Узорочье, 2012. — 260 с.
5. Романчук, В.А. Алгоритмы анализа вычислительных структур на базе нейро-процессоров [Текст] / В.А. Романчук, В.Н. Ручкин // Вестник Рязанского государственного радиотехнического университета. — 2012. — № 2. — Вып. 40. — С. 60-66.
6. Романчук, В.А. Разработка математической модели реструктуризуемого под классы задач, виртуализируемого кластера GRID-системы на базе нейропроцессоров [Текст] / В.А. Романчук, В.В. Лукашенко // Вестник Рязанского государственного университета имени С.А.Есенина. — 2014. — № 1/42. — C. 177-182.
7. Ruchkin, V. Clustering, Restorability and Designing Of Embedded Computer System Based On Neuroprocessors [Text] / V. Ruchkin, V. Romanchuk, R. Sulitsa // Proceedings of the 2nd Mediterranean Conference on Embedded Computing (MECO). — Budva (Montenegro), 2013. — С. 58-62.
REFERENCES
1. Galushkin, A.I. Neyrokomp'yutery [Neurocomputers]. — M. : HnP^P, 2000. — B. 3. — 528 p.
2. Galushkin, A.I. Neyronnyye EVM — perspektivnoye napravleniye razvitiya vychis-litel'noy tekhniki [Neural computers — a promising direction of development of computer technology]. — M. : Preprint, 1991. — 615 p.
3. STC "Module" [Electronic resource] : website STC "Module", 2011. — Access mode : http:// www.module.ru.
4. Romanchuk, V.A. Algoritmy analiza vychislitel'nykh struktur na baze neyroprotses-sorov [Analysis algorithms based on computational structures neuroprocessors] / V.A. Romanchuk, V.N. Ruchkin // Bulletin of the Ryazan State University named after S.A. Yessenin. — Ryazan, 2012. — № 2 / 40. — P. 60-66.
5. Romanchuk, V.A. Razrabotka matematicheskoy modeli restrukturizuyemogo pod klassy zadach, virtualiziruyemogo klastera GRID-sistemy na baze neyroprotsessorov [Development of Mathematical Model of restructured under the classes of problems are sequencing cluster GRID-based systems neuroprocessors] / V.A. Romanchuk, V.V. Lukashenko // Bulletin of the Ryazan State University named after S.A. Yessenin. — 2014. — № 1/42. — P. 177-182.
6. Ruchkin, V.N. Kognitologiya i iskusstvennyy intellekt [Cognitive science and artificial intelligence] / V.N. Ruchkin, V.A. Romanchuk, V.A. Fulin. — Ryazan : Uzorochye, 2012. — 260.
7. Ruchkin, V. Clustering, Restorability and Designing Of Embedded Computer System Based On Neuroprocessors / V. Ruchkin, V. Romanchuk, R. Sulitsa // Proceedings of the 2nd Mediterranean Conference on Embedded Computing (MECO). — Budva (Montenegro), 2013. — P. 58-62.
V.A. Romanchuk
DEVELOPMENT AND OPTIMIZATION TECHNIQUES FOR NEUROPROCESSOR SYSTEM OF DYNAMIC OBJECT MANAGEMENT ON THE EXAMPLE OF HEXAPOD
The article deals with the development and optimization of single-core control code of action sequences in matrixes computed with the algorithm of limb movement on the example of hexapods.
Neuroprocessor, Calculation system, hexapod, dynamic object control, programming, optimization.