УДК 004.272.42
ARM-ПРОЦЕССОР ДЛЯ ОБРАБОТКИ МАССИВОВ ПРОИЗВОЛЬНОЙ РАЗМЕРНОСТИ
Р. Н. Федюнин
ARM-PROCESSOR FOR CALCULATION MULTILEVEL ARRAYS
R. N. Fedyunin
Аннотация. Актуальность и цели. Работа на стыке нескольких областей математических и информационных дисциплин дает результаты, которые находят применение в прикладных областях, таких как цифровая обработка сигналов, криптография и иные. Это возможно, так как элементы матричной алгебры позволяют создать алгоритмы параллельной и распределенной обработки многомерных массивов, а реализация на ПЛИС позволяет сделать быструю и дешевую апробацию схемотехнической и программной реализации математического аппарата. Например, в российско-белорусском проекте СКИФ (2009 г.) и совместном проекте Пензенского государственного университета и НПО «Рубин» АПК РА (2009-2012 гг.) вышеописанные технологии нашли широкое применение. Материалы и методы. Исследование и реализация ARM-процессора для обработки матриц проведены на основе теории недетерминированных автоматов с последующим функциональным моделированием ARM-процессора в САПР Altera Quartus. В качестве основных алгоритмов исследования и реализации блоков взяты алгоритмы матричной алгебры. Результаты. Приведено подробное описание ARM-процессора для обработки многомерных массивов. Получена модель функционирования ARM-процессора на основе теории недетерминированных автоматов. Предложена система канонических уравнений на основе математической модели ARM-процессора. Произведена схемотехническая реализация функциональных блоков ARM-процессора с последующим моделированием в САПР Altera Quartus. Выводы. Предложенный способ реализации функциональных блоков ARM-процессора для выполнения операций матричной алгебры был использован в конкретных проектах ПГУ совместно с предприятиями РФ. Актуальность разработки доказана как практическим применением, так и свидетельствами на программное обеспечение.
Ключевые слова: ARM-процессор, ARM-ядро, функциональный блок обработки массивов произвольной разрядности, матричная алгебра, САПР Altera Quartus.
Abstract. Background. In the article introduce several areas of mathematical and computer sciences results that it are used in various applications, such as digital signal processing, cryptography, and more. The elements of matrix algebra algorithms allow create parallel and distributed processing of arrays. Implementation on FPGA allows make quick and cheap tests for hardware and software implementation. For example, these methods widely used in projects SKIF (2009) and APK RA (2009-2012). Materials and methods. Research and implementation of ARM processor for calculation arrays were carried out on the basis of the theory of nondeterministic, followed by functional simulation ARM processor CAD ALTERA QUARTUS. The basic algorithm research and implementation units taken algorithms of matrix algebra. Results. There is description of ARM processor for calculation arrays. A model of the functioning of ARM processor, based on the theory of non-deterministic automata. The system of canonical equations based on a mathematical model of ARM processor. Made of circuit implementation of the functional blocks ARM processor, followed by modeling in CAD Altera Quartus. Conclusions. The proposed method of implementation of the functional blocks of ARM-based processors to perform matrix alge-
bra has been implemented for use in specific projects in conjunction with the Penza State University.
Key words: ARM-processor, ARM-core, arithmetic logic unit, unit for calculation arrays, matrix, CAD Altera Quartus.
Введение
Для иллюстрации способа реализации ARM-процессора для обработки матриц в качестве примера возьмем схему ядра с RISC архитектурой [1] (рис. 1).
Рис. 1. Обобщенная структура ARM-процессора
Процессор представляет собой набор из ARM-блока управления (ARM Cortex), вычислительной матрицы, периферийных устройств и flash-матрицы. Flash-матрица позволяет хранить программное обеспечение soft-ядра ARM-процессора [2]. Блок управления выдает управляющие сигналы для выполнения операций вычислительной матрицей. Вычислительная матрица является набором элементов специализированных устройств обработки массивов (рис. 2), способных к выполнению следующего набора операций над матрицами:
1) определение коэффициентов характеристического уравнения;
2) нахождение геометрических кратностей матрицы для арифметических корней;
3) приведение матрицы к диагональному виду;
4) нахождение собственных векторов матрицы для арифметических корней в соответствии с геометрической кратностью;
5) запись полученных корней в виде жордановой матрицы;
6) составление матрицы переходов (Б) на основе собственных векторов;
7) нахождение определителя матрицы В;
8) нахождение матрицы миноров для матрицы В;
9) нахождение матрицы алгебраических дополнений на основании матрицы миноров для матрицы В;
10) нахождение транспонированной матрицы алгебраических дополнений для матрицы В;
11) получение обратной матрицы для матрицы В.
Поток команд к обработчикам | ■ матричных операций
matrix В matrix А
ор2
matrix В matrix А
орЗ
matrix В matrix А
MATRIX(+)
MATRIX(*)
MATRIX(/)
г 77 ^ г
matrix Y(op1) matrix Y(op2) matrix Y(op3)
Рис. 2. Вариант архитектуры устройств вычислительной матрицы для обработки массивов
1. Формальное описание вычислительного устройства умножения с помощью теории недетерминированных автоматов
На основании исследований, представленных в [3, 4], составляется математическая модель работы вычислительной матрицы (рис. 3).
Рис. 3. Модель функционального блока канонического разложения матрицы NхN
Представленные на рис. 3 события представляют собой состояния недетерминированного автомата в i единицу времени:
S0 - начальное состояние; S1 - вычисление det (A -XE); J1, J3, J5, J7 -
начало параллельного выполнения событий; S2 - находим алгебраическое дополнение для элемента (1, 1); S3 - находим алгебраическое дополнение для элемента (i, i); S4 - находим алгебраическое дополнение для элемента (n,n); J2, J4, J6, J8 - окончание параллельного выполнения событий; Ssum - суммирование значений, полученных в S2, S3, S4; S5 - подбор первого корня характеристического уравнения; S6 - операция деления на X-x для получения квадратного уравнения; S7 - нахождение корней характеристического уравнения и определение алгебраической кратности всех корней; S8, S9 - нахождение ранга матрицы, если есть отличные от 1 алгебраические кратности; S10 - нахождение ранга матрицы и геометрической кратности, если все алгебраические кратности равны 1; S11, S12 - нахождение геометрических кратностей в случае двух разных алгебраических кратностей; S13, S14 - проверка на равенство алгебраических и геометрических кратностей; Sk - окончание работы программы по причине неравенства алгебраических и геометрических кратностей; S15 - нахождение собственного вектора при кратности, равной 2; S16 - нахождение собственного вектора при кратности, равной 1; S17 - изменение одного из параметров для вычисления второго вектора; S18 - запись алгебраических корней с помощью жордановой формы; S19 - находим определитель матрицы В; S20 - находим матрицу миноров для матрицы В; S21 - находим матрицу алгебраических дополнений для матрицы В; S22 - транспонируем матрицу алгебраических дополнений; S23 - находим обратную матрицу В (делим транспонированную матрицу на определитель); Send - окончание работы алгоритма.
Описание сигналов, показанных на граф-схеме модели: A - начальная матрица; b - сигнал начала работы; с - составлена матрица для характеристического уравнения; d - сигнал для начала параллельного вычисления алгебраических дополнений для главной диагонали; e - сигнал окончания вычисления алгебраического дополнения для элемента матрицы (1,1); f - сигнал окончания вычисления алгебраического дополнения для элемента матрицы (2,2); g - сигнал окончания вычисления алгебраического дополнения для элемента матрицы (3,3); h - сигнал того, что все три алгебраических дополнения вычислены; se - сигнал того, что суммирование успешно выполнено; i - сигнал к переходу к следующему делителю свободного члена характеристического уравнения; j - сигнал того, что первый корень характеристического уравнения вычислен; k - сигнал об успешном окончании операции деления; l - сигнал для начала вычисления геометрической кратности матрицы; m - сигнал для начала параллельного вычисления рангов матрицы для каждого из алгебраических корней; n - сигнал окончания вычисления ранга матрицы для одного из двух алгебраических корней при алгебраической кратности одного из корней больше 1; o - сигнал окончания вычисления ранга матрицы для второго алгебраического корня при алгебраической кратности одного из корней больше 1; p - сигнал окончания вычисления ранга матрицы при равенстве алгебраической кратности все корней 1; q, r - сигналы окончания вычисления геометрических кратностей в случае не равенства одной из алгеб-
раических кратностей 1; s, u - сигнал того, что алгебраические и геометрические кратности совпали; t - сигнал наличия алгебраических корней характеристического уравнения и их кратности; v, w - сигналы того, что алгебраические и геометрические кратности не совпадают; x - сигнал того, что разрешено начинать вычисление собственных векторов матрицы; y - сигнал разрешения вычисления собственного вектора для алгебраических корней, кратность которых больше 1; z - сигнал разрешения вычисления собственного вектора для алгебраических корней, кратность которых равна 1; a1 - сигнал об окончании нахождения собственного вектора при алгебраической кратности, равной 2; b1 - сигнал для подбора следующего параметра с целью определения подходящего для собственного вектора; с1 - сигнал проверки: подходит или нет новый параметр для составления собственного вектора; d1 - сигнал об окончании нахождения собственного вектора при алгебраической кратности, равной 1; e1 - сигнал об окончании поиска собственных векторов для алгебраической кратности больше 1; f1 - сигнал об окончании поиска собственных векторов; g1 - сигнал того, что алгебраические корни были успешно приведены к жордановой форме; h - сигнал начала параллельного вычисления определителя жордановой матрицы и матрицы миноров; i\ - сигнал об окончании вычисления определителя жордановой матрицы; j - сигнал об окончании вычисления матрицы миноров; k1 - сигнал об окончании вычисления матрицы алгебраических дополнений; m1 - сигнал об успешном получении транспонированной матрицы; щ - сигнал того, что все подготовлено для вычисления обратной матрицы; o1 - обратная матрица успешно найдена.
Для последующей аппаратной реализации вычислительной матрицы ARM-процессора на основе описанных состояний и рис. 3 составляется система канонических уравнений алгоритма умножения больших чисел:
S0(t +1) = A а Хп ; S1(t + 1) = S0 a b ; J1(t + 1) = S1 a с ; S2(t + 1) = J1 a d ;
S3(t + 1) = J1 a d ; S4(t + 1) = J1 a d ; J2(t + 1) = S2 a e v S3 a f v S4 a g ;
Ssum (t + 1) = J2 A h ; s5 (t + 1) = Ssum A Se V s5 A ' ;
S6(t + 1) = S5 a j ; S7(t + 1) = S6 ak ; J3(t + 1) = S7 al ;
S8(t + 1) = J3 a m ; S9 (t + 1) = J3 a m ; S10(t +1) = J3 a m ;
Sn(t + 1) = S8 a n ; S12(t + 1) = S9 a o ; S13(t + 1) = Sjj a q v S12 a r v S7 a t ;
S14(t + 1) = S10 a p v S7 a t ; Sk (t + 1) = S13 a v v S14 a w ;
J4(t + 1) = S13 a s v S14 a u ; J5(t + 1) = J4 a x ;
S15(t +1) = J5 A y v S17 A C1; S16(t +1) = J5 A z v S16 A b1 ;
S17(t + 1) = S15 aa1 ; J6(t +1) = S17 ae1 vS16 ad^; S18(t +1) = J6 af1;
J7 (t +1) = S18 a g1 ; Sw(t + 1) = J7 a h ; S20 (t +1) = J7 a h ;
S21(t + 1) = S20 a j1; S22(t + 1) = S21 ak1; J8(t + 1) = S19 ai1 vS22 am1;
s23(t + 1) = J8 A nl; Send (t + 1) = s23 A °1 •
2. Схемотехническая реализация вычислительного ядра ARM-процессора
для обработки массивов
На аппаратном уровне ARM-процессор реализован на ПЛИС XILINX SPARTAN. Топология реализации выглядит следующим образом (рис. 4) [5].
Рис. 4. Топология ARM-процессора на ПЛИС XILINX SPARTAN
Устройство NEON unit состоит из устройства управления и операционной части. Операционная часть - это четыре независимых блока: блок работы с жордановой матрицей, блок обработки матрицы переходов, блок работы с обратной матрицей, запоминающее устройство. Все устройства объединены одной шиной данных шинами команд устройства управления (рис. 5).
Рис. 5. Обобщенная схема вычислительной матрицы для обработки массивов в блоке UNION
Устройство управления генерирует управляющие сигналы для независимой работы блоков операционного устройства: УС1 - занесение данных в первый блок, УС2 - вычисление жордановой матрицы (рис. 6), УС3 - вычисление матрицы переходов (рис. 7), УС4 - вычисление обратной матрицы (рис. 8), УС5 - запись полученных данных в ЗУ.
Схемотехническая реализация вычислительной матрицы в САПР HDL Designer Mentor Graphics показана на рис. 9.
Корни ЛгАут _^
Рис. 6. Блок вычислительной матрицы для составления жордановой матрицы
Составление и решение системы уравнений
Ай собственный вектор
Рис. 7. Блок вычислительной матрицы для составления матрицы переходов
Обратная матрица (на ШД) ^
Рис. 8. Блок вычислительной матрицы для составления обратной матрицы
sJLm sjLii,¡
S' Il |í'5 II |I'S
M Si-iii Ïl-Stlbi ТОП ffffl ■ .1 4f ,.
|||| I И^« Ж»
i SMf-и í г и JlîSU ¡111^ W-+,
a tHfflflttl
I jLts L-H-iii
51—IMP i iMMIi
Su-JLii ¡L-IIm Ш! 'TT13 i JÎ-IIS SUL11.Î
ílJLSÍ I fm
я1 ii l'a ffii |'s
Заключение
В заключении отметим, что данный вид устройства относится к классу специфических и узконаправленных [6]. Каждая конкретная задача требует разработки и реализации своего ядра. Вместе с тем, в мире вычислительной техники всегда найдутся задачи, для которых потребуется реализация нетривиальных и в чем-то уникальных вычислительных систем.
Список литературы
1. Пат. 2284568 Российская Федерация. Ячейка однородной вычислительной среды / Федюнин Р. Н., Князьков В. С. - Опубл. 27.09.2006, Бюл. № 27.
2. Федюнин, Р. Н. Способ реализации аппаратного слоя УЬ^ архитектуры на базе систолических структур / Р. Н. Федюнин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2013. - № 2. - С. 15-22.
3. Федюнин, Р. Н. Оценка пространственно-временной сложности и способы повышения скорости двоичных арифметических операций / Р. Н. Федюнин // Научное обозрение. - 2006. - № 3. -С. 100-111.
4. Вашкевич, Н. П. Недетерминированные автоматы в проектировании систем параллельной обработки : учеб. пособие / Н. П. Вашкевич. - Пенза : Изд-во Пенз. гос. ун-та, 2004. - 280 с.
5. Федюнин, Р. Н. Конвейерно-модульные умножители в системе остаточных классов / Р. Н. Федюнин, В. С. Князьков // Вопросы радиоэлектроники. - 2007. - Т. 1, № 1. - С. 1-14.
6. Свидетельство о государственной регистрации программы для ЭВМ 2014619242 Российская Федерация. Модуль параллельно-распределенного вычислителя, матричного типа // Федюнин Р. Н., Медведик М. Ю., Москалева М. А., Войнов А. С., Сенокосов И. В. ; заявитель и патентообладатель ФГБОУ ВПО ПГУ, г. Пенза. -№ 2014616959 ; заявл 17.07.2014 ; опубл. 11.09.2014.
7. Свидетельство о государственной регистрации программы для ЭВМ 2015613676 Российская Федерация. Программный модуль параллельной арифметико-логической обработки векторных данных // Федюнин Р. Н., Телюк И. С., Мартынов К. С. ; заявитель и патентообладатель ФГБОУ ВПО ПГУ, г. Пенза. -№ 2014663462 ; заявл. 23.12.2014 ; опубл. 23.03.2015.
Федюнин Роман Николаевич Fedyunin Roman Nikolaevich
кандидат технических наук, доцент, candidate of technical sciences,
кафедра вычислительной техники, associate professor,
Пензенский государственный университет sub-department of computer science,
E-mail: frn_penza@mail.ru Penza State University
УДК 004.272.42 Федюнин, Р. Н.
АЯМ-процессор для обработки массивов произвольной размерности /
Р. Н. Федюнин // Модели, системы, сети в экономике, технике, природе и обществе. -2015. - № 4 (16). - С. 195-204.