
- •Лабораторная работа №1 Архитектура нейромикропроцессоров семейства NeuroMatrix ® nm 640х и их функциональные возможности
- •1. Описание и порядок пользования программой nmcalculator
- •1.1 Общие сведения о программе
- •1.2 Формирование векторной команды
- •1.3 Разбиение рабочей матрицы и запись весовых коэффициентов
- •1.4 Установка входных значений
- •1.5 Генератор кода
- •2. Порядок выполнения работы
- •Лабораторная работа № 2
- •1.Порядок выполнения работы
- •2. Элементы языка ассемблера процессора nm 6403
- •2.1 Формат ассемблерных инструкций
- •2.2 Векторные инструкции процессора
- •2.3 Регистры процессора
- •2.3.1 Основные регистры
- •3. Примеры простейших программ Пример 1: Организация циклов и доступ к памяти
- •Пример 2: Копирование массива данных на скалярном процессоре
- •Пример 3: Копирование массива данных на векторном процессоре
- •Пример 4: Операция взвешенного суммирования
- •4. Порядок выполнения работы
- •5. Контрольные вопросы
- •Лабораторная работа № 3
- •2.3 Использование Меток в Макросах
- •2.4 Импорт Макросов из Макробиблиотек
- •3. Примеры простейших программ Пример 1: Пример использования макросов в программе
- •Пример 2: Создание Библиотеки Макросов
- •4. Порядок выполнения работы
- •Лабораторная работа №4 Кодирование и декодирование информации в нейромикропроцессоре NeuroMatrix ® nm 640х
- •Теоретическая часть
- •1.1 Описание алгоритма шифрования гост 28147-89
- •Замена по таблице
- •Сдвиг на 11 разрядов
- •Вторая итерация
- •Замена по таблице
- •Сдвиг на 11 разрядов
- •Третья итерация
- •Замена по таблице
- •Сдвиг на 11 разрядов
- •1.2 Реализация алгоритма шифрования на процессоре nm6403
- •Практическая часть
- •2.1 Реализация алгоритма гост 28147-89 на нейропроцессоре nm 6403/6404
- •2.2 Реализация алгоритма гост 28147-89 на эмуляторе векторе векторных команд
- •2.3 Варианты заданий
- •2.4 Удаленный доступа к плате NeuroMatrix
- •Список используемой литературы:
Лабораторная работа № 2
Программирование нейромикропроцессора NeuroMatrix ® NM 6403
Цель работы: ознакомление с языком ассемблера нейромикропроцессора NeuroMatrix ® NM 6403 (Л18789 ВМ1) и возможностями, которые он предоставляет программисту.
1.Порядок выполнения работы
По материалам разделов 2 и 3 изучить структуру формат ассемблерных инструкций структуру микрокоманд (МК), порядок ввода данных, кодирование и выполнение МК.
По материалам раздела 4 ознакомиться с порядком ввода микропрограмм и исходные данные.
Выполнить упражнения из раздела 5 по указанию преподавателя.
2. Элементы языка ассемблера процессора nm 6403
2.1 Формат ассемблерных инструкций
Процессор NM6403 работает с машинными командами 32-х и 64-х разрядного формата, причем в одной машинной команде содержится две операции процессора. В этом смысле NM6403 представляет собой скалярный микропроцессор со статической Very Long Instruction Word ( V LIW) - архитектурой. При этом используются короткие и длинные инструкции. При чем короткие инструкции не содержат константы и имеют разрядность 32 бита. А длинные инструкции содержат в коде команды 32-х разрядную константу. Поэтому их разрядность составляет 64 бита. Процессор адресуется к 32-х разрядным словам. На хранение коротких инструкций отводится одна ячейка памяти, для длинных – две.
Примечание Длинные инструкции всегда располагаются по четным адресам.
Если начало длинной инструкции при компиляции ассемблером приходится на нечетный адрес, перед ней автоматически вставляется пустая команда nul .
Процессор NM6403 за одно обращение к памяти считывает либо две коротких инструкции, либо одну длинную, поэтому регистр pc , определяющий адрес следующей считываемой инструкции, всегда имеет четное значение.
Все инструкции процессора NM6403 делятся на два типа:
скалярные инструкции , которые управляют работой скалярного RISC-ядра, таймеров, осуществляют загрузку/чтение всех регистров (доступных по чтению/записи) за исключением векторных регистров, образующих очереди FIFO;
векторные инструкции , которые управляют работой векторного процессора.
Обе части инструкции выполняются процессором одновременно за один такт. В левой части инструкции записываются только адресные операции , в правой все арифметическо-логические , не связанные с вычислением адресов и обращением к памяти. Левая и правая части инструкции соединяются воедино при помощи ключевого слова with .
Пример скалярной инструкции процессора:
gr 0 = [ ar 0++] with gr 1 = gr 3 + gr 0;
gr 1 = gr 3 + gr 0 – правая часть инструкции, арифметическая операция.
gr 0 = [ ar 0++] – левая часть инструкции, адресная операция.
В языке ассемблера левая или правая часть инструкции может быть опущена, однако поскольку процессор не может выполнить только левую или только правую часть команды, вместо опускаемой части при компиляции автоматически добавляется пустая операция nul. То есть ассемблерная инструкция, записанная как: gr0 = [ar0++];
трактуется ассемблером как: gr 0 = [ ar 0++] with nul ;
Аналогично с левой частью: gr1 = gr3 + gr 0;
рассматривается как: nul with gr 1 = gr 3 + gr 0;
Для улучшения читаемости программы, в случае если левая или правая часть инструкции не используется, связка with может опускаться.
Примечание: Векторные и скалярные инструкции не могут смешиваться в одной команде, даже если у одной из них опущена левая часть, а у другой правая.