МНОГОПОТОЧНОЕ СОФТ-ПРОЦЕССОРНОЕ ЯДРО ДЛЯ СИСТЕМ УПРАВЛЕНИЯ И ИИ НА БАЗЕ ПЛИС
|
ВВЕДЕНИЕ 5
ГЛАВА 1. РАЗРАБОТКА И ТЕСТИРОВАНИЕ ПРОЦЕССОРНЫХ
АРХИТЕКТУР В СОВРЕМЕННОМ МИРЕ 7
1.1. Физика процессов внутри кристалла 7
1.2. Языки описания аппаратуры 9
1.3. Системы управления и искусственный интеллект в них 10
1.4. Симулирование и тестирование в языках описания аппаратуры 11
1.5. Теория автоматов 12
1.6. Язык ассемблера 13
ГЛАВА 2. БАЗОВЫЕ ТИПЫ ПРОЦЕССОРОВ, ИХ ОСОБЕННОСТИ, ФУНКЦИОНАЛЬНЫЕ БЛОКИ И ВОЗМОЖНОСТИ 15
2.1. Типы процессоров и базовые блоки 15
2.2. Анализ производительности 16
2.3. Однотактный процессор 17
2.4. Многотактный процессор 18
2.5. Конвейерный процессор 20
2.6. Суперскалярный процессор и внеочередного выполнения 24
2.7. Реализация функций в процессоре 25
2.8. Многопоточность и многоядерность 25
2.9. Сравнение реализаций многопоточности в MIPS, PROPELLER, XMOS. 26
ГЛАВА 3. РАЗРАБОТКА МНОГОПОТОЧНОГО СОФТ-ПРОЦЕССОРНОГО ЯДРА ДЛЯ СИСТЕМ УПРАВЛЕНИЯ И ИИ НА БАЗЕ ПЛИС 32
3.1. Арифметико-логическое устройство 32
3.2. Блоки арифметических операций 32
3.3. Блоки логических операций 38
3.4. Блоки операций сдвига 41
3.5. Временной анализатор 43
3.6. Цифровой компаратор 45
3.7. Порты ввода/вывода 48
3.8. Буфферы входа 49
3.9. Маска адресов 51
3.10. Счетчик команд 56
3.11. Память ОЗУ 58
3.12. Память программ 63
3.13. Схема архитектуры проектируемого ядра процессора 69
3.14. Язык ассемблера и пример написания программы 72
ЗАКЛЮЧЕНИЕ 74
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
ГЛАВА 1. РАЗРАБОТКА И ТЕСТИРОВАНИЕ ПРОЦЕССОРНЫХ
АРХИТЕКТУР В СОВРЕМЕННОМ МИРЕ 7
1.1. Физика процессов внутри кристалла 7
1.2. Языки описания аппаратуры 9
1.3. Системы управления и искусственный интеллект в них 10
1.4. Симулирование и тестирование в языках описания аппаратуры 11
1.5. Теория автоматов 12
1.6. Язык ассемблера 13
ГЛАВА 2. БАЗОВЫЕ ТИПЫ ПРОЦЕССОРОВ, ИХ ОСОБЕННОСТИ, ФУНКЦИОНАЛЬНЫЕ БЛОКИ И ВОЗМОЖНОСТИ 15
2.1. Типы процессоров и базовые блоки 15
2.2. Анализ производительности 16
2.3. Однотактный процессор 17
2.4. Многотактный процессор 18
2.5. Конвейерный процессор 20
2.6. Суперскалярный процессор и внеочередного выполнения 24
2.7. Реализация функций в процессоре 25
2.8. Многопоточность и многоядерность 25
2.9. Сравнение реализаций многопоточности в MIPS, PROPELLER, XMOS. 26
ГЛАВА 3. РАЗРАБОТКА МНОГОПОТОЧНОГО СОФТ-ПРОЦЕССОРНОГО ЯДРА ДЛЯ СИСТЕМ УПРАВЛЕНИЯ И ИИ НА БАЗЕ ПЛИС 32
3.1. Арифметико-логическое устройство 32
3.2. Блоки арифметических операций 32
3.3. Блоки логических операций 38
3.4. Блоки операций сдвига 41
3.5. Временной анализатор 43
3.6. Цифровой компаратор 45
3.7. Порты ввода/вывода 48
3.8. Буфферы входа 49
3.9. Маска адресов 51
3.10. Счетчик команд 56
3.11. Память ОЗУ 58
3.12. Память программ 63
3.13. Схема архитектуры проектируемого ядра процессора 69
3.14. Язык ассемблера и пример написания программы 72
ЗАКЛЮЧЕНИЕ 74
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
На данный момент в мире широко используются искусственный интеллект и всевозможные системы управления. С каждым годом человечеству все больше и больше необходимы технические решения, удовлетворяющие потребности тех задач, которые перед собой оно ставит. И как показывает практика высокоскоростные задачи такие как цифровая обработка сигнала, обработка радиолокационной информации, криптографические операции, задачи искусственного интеллекта, в основном исполняются на ПЛИС либо с помощью больших кластеров (объединенных в одну сеть компьютеров, ведущих вычисления части одной задачи). При этом задачи требуют параллелизма выполнения.
Параллелизм выполнения задач для микроконтроллеров и микропроцессоров на сегодняшний день выполняется с помощью суперскалярных ядер работающих вместе с общей кэш-памятью. Каждое из ядер может образовать отдельный полноценный поток, чем и обеспечивается аппаратная многопоточность, но если для обычных ПК на этих ядрах используется множество и так программных потоков (THREAD). Производительность достигается разгоном микропроцессора, добавлением ядер и быстрым выполнением последовательных команд, а в микроконтроллерах чаще всего используется одно ядро, при этом чаще всего с помощью прерываний по таймеру и прерываний по событию создается параллелизм управления устройствами. Что зачастую не всегда очевидно, а применение операционных систем таких как FreeRTOS требует дополнительной памяти и не тривиально в изучении.
Есть предположение, что если поменять архитектуру ядра микро-контроллера, то можно добиться более простого параллельного управления модулями в системе. По предположению это должно дать более простую модель управления параллельными процессами, что может быть использовано в системах управления и системах на основе ИИ.
Исходя из вышесказанного, было принято решение необходимости разработки многопоточного софт-процессорного ядра для систем управления и ИИ на базе ПЛИС, а также проведение симуляции процессов внутри получившейся схемы.
Для разработки ядра было принято решение использовать современные инструменты проектирования Vivado 2019.2.
Параллелизм выполнения задач для микроконтроллеров и микропроцессоров на сегодняшний день выполняется с помощью суперскалярных ядер работающих вместе с общей кэш-памятью. Каждое из ядер может образовать отдельный полноценный поток, чем и обеспечивается аппаратная многопоточность, но если для обычных ПК на этих ядрах используется множество и так программных потоков (THREAD). Производительность достигается разгоном микропроцессора, добавлением ядер и быстрым выполнением последовательных команд, а в микроконтроллерах чаще всего используется одно ядро, при этом чаще всего с помощью прерываний по таймеру и прерываний по событию создается параллелизм управления устройствами. Что зачастую не всегда очевидно, а применение операционных систем таких как FreeRTOS требует дополнительной памяти и не тривиально в изучении.
Есть предположение, что если поменять архитектуру ядра микро-контроллера, то можно добиться более простого параллельного управления модулями в системе. По предположению это должно дать более простую модель управления параллельными процессами, что может быть использовано в системах управления и системах на основе ИИ.
Исходя из вышесказанного, было принято решение необходимости разработки многопоточного софт-процессорного ядра для систем управления и ИИ на базе ПЛИС, а также проведение симуляции процессов внутри получившейся схемы.
Для разработки ядра было принято решение использовать современные инструменты проектирования Vivado 2019.2.
В ходе выполнения выпускной квалификационной работы были исследованы основные принципы построения архитектур процессоров, принципы работы частей процессоров, основные инструменты для достижения успехов в выполнении поставленной задачи, а именно в разработке архитектуры для многопоточного софт-процессорного ядра для систем управления и ИИ на базе ПЛИС. По результатом анализа спроса человечества на умные средства управления и необходимости разработки умных систем было доказано, что разработка такой архитектуры на данный момент актуальна и даже необходима.
Разработана новая архитектура ядра процессора содержащая в себе самые эффективные принципы многопоточности таких архитектур как XMOS, PROPELLER, MIPS. А именно - в разработанной архитектуре присутствует принцип от XMOS отсутствия как таковой общей памяти ОЗУ и наличие арбитра для переноса значений в другой поток. В спроектированной архитектуре таким арбитром выступает маска адресов, которую можно настроить на передачу данных от одного программного потока ОЗУ другому программному потоку.
Принципом взятым от архитектуры PROPELLER является наличие у программного потока собственной памяти программ.
Принципом взятым от архитектуры MIPS является аппаратная многопоточность. Она состоит из наличия отдельных блоков АЛУ, которые либо заняты либо нет, и если блоки не заняты, то их можно использовать, собственно здесь сохраняется принцип использования блоков процессора не участвующих в выполнении операции другого потока.
Полученная архитектура процессора позволяет решать задачи, а именно цепочки одних и тех же действий над многими переменными, к примеру нахождение значения веса для алгоритма классического perceptron[41]. Либо легко воспроизвести цепочку для ПИД-регулятора для систем управления, где для работы не нужны серьезные интеллектуальные системы.
Параметры и возможные расширения для получившейся архитектуры:
- максимальный размер памяти программ для одного программного потока - 4 Гб;
- максимальный размер ОЗУ для одного потока - 4 Гб;
- разрядность с оперируемыми данными - 32 бита;
- максимальное количество блоков АЛУ, цифровых компараторов и любых других вычислительных устройств - 255 шт.
Такие параметры как количество портов ввода/вывода, входных и выходных портов для ОЗУ могут варьироваться в зависимости от надобности и возможности расположения на кристалле. Параметры объема буферов входов и объем памяти маски адресов напрямую зависит от возможных расширений в данной архитектуре.
Существенными недостатками спроектированной архитектуры оказа-лось требование наличия отличной программы синтеза для программиста, которая бы сообщала о наличии колец или других конфликтных ситуаций при проектировании программы наподобие сред разработки для ПЛИС.
Все блоки памяти данной архитектуры описаны на языке VHDL и были просимулированы в среде разработки Vivado 2019.2, что и представлено в 3-ей главе данной работы.
Разработана новая архитектура ядра процессора содержащая в себе самые эффективные принципы многопоточности таких архитектур как XMOS, PROPELLER, MIPS. А именно - в разработанной архитектуре присутствует принцип от XMOS отсутствия как таковой общей памяти ОЗУ и наличие арбитра для переноса значений в другой поток. В спроектированной архитектуре таким арбитром выступает маска адресов, которую можно настроить на передачу данных от одного программного потока ОЗУ другому программному потоку.
Принципом взятым от архитектуры PROPELLER является наличие у программного потока собственной памяти программ.
Принципом взятым от архитектуры MIPS является аппаратная многопоточность. Она состоит из наличия отдельных блоков АЛУ, которые либо заняты либо нет, и если блоки не заняты, то их можно использовать, собственно здесь сохраняется принцип использования блоков процессора не участвующих в выполнении операции другого потока.
Полученная архитектура процессора позволяет решать задачи, а именно цепочки одних и тех же действий над многими переменными, к примеру нахождение значения веса для алгоритма классического perceptron[41]. Либо легко воспроизвести цепочку для ПИД-регулятора для систем управления, где для работы не нужны серьезные интеллектуальные системы.
Параметры и возможные расширения для получившейся архитектуры:
- максимальный размер памяти программ для одного программного потока - 4 Гб;
- максимальный размер ОЗУ для одного потока - 4 Гб;
- разрядность с оперируемыми данными - 32 бита;
- максимальное количество блоков АЛУ, цифровых компараторов и любых других вычислительных устройств - 255 шт.
Такие параметры как количество портов ввода/вывода, входных и выходных портов для ОЗУ могут варьироваться в зависимости от надобности и возможности расположения на кристалле. Параметры объема буферов входов и объем памяти маски адресов напрямую зависит от возможных расширений в данной архитектуре.
Существенными недостатками спроектированной архитектуры оказа-лось требование наличия отличной программы синтеза для программиста, которая бы сообщала о наличии колец или других конфликтных ситуаций при проектировании программы наподобие сред разработки для ПЛИС.
Все блоки памяти данной архитектуры описаны на языке VHDL и были просимулированы в среде разработки Vivado 2019.2, что и представлено в 3-ей главе данной работы.



