- •Лабораторная работа №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.2 Векторные инструкции процессора
Векторные инструкции процессора, также как и скалярные, разделены на левую и правую части. Однако помимо этого они имеют дополнительное поле, которое присутствует во всех векторных инструкциях за исключением одиночных инструкций ftw и wtw . Поле, о котором идет речь, называется полем количества повторений. Вот пример того, как выглядит векторная инструкция:
rep 32 data = [ar1++] with vsum , data, afifo;
Левая и правая часть векторной инструкции разделены ключевым словом with , поле количества повторений (подчеркнуто) определяет, сколько длинных слов будет обработано данной командой. В большинстве случаев векторная команда будет выполняться столько тактов, каково значение счетчика, поскольку операция над длинным словом в векторном процессоре выполняется за один такт.
В случае, если левая часть инструкции опущена, поле повторения и слово-связка with остаются при написании инструкции, например:
rep 16 with ram - 1; // правильная инструкция
Любые другие формы записи инструкции, как то
rep 16 ram - 1; или with ram - 1; // содержат ошибки
являются ошибочными, о чем сообщит компилятор.
2.3 Регистры процессора
2.3.1 Основные регистры
К основным регистрам процессора относятся 8 адресных регистров: ar0 - ar7( sp ) и 8 регистров общего назначения: gr0 - gr0, которые используются в большинстве вычислительных операций процессора. Все они 32-х разрядные, доступны как по чтению, так и по записи.
Адресные регистры
Адресные регистры делятся на две равноправные группы. В первую входят ar0-ar3 , а во вторую ar4..ar7 . Это связано с наличием двух адресных устройств в процессоре.
Существуют ограничения на возможность использовать адресные регистры из разных групп в одной процессорной инструкции. При этом адресные регистры могут использоваться только в левой части ассемблерной инструкции.
Примеры использования адресных регистров:
ar0 = ar5; // копирование .
ar2 = ar3 + gr3; // модификация.
[ar4++] = gr7 with gr7 -= gr4 ; // запись в память.
Адресный регистр ar7 используется процессором в качестве указателя стека адресов возврата sp(Stack Pointer) . Это означает, что ar7 модифицируется автоматически, когда происходит вызов функции или прерывания, а также возврат из функции или из прерывания.
Регистры общего назначения
Регистры общего назначения в отличии от адресных не имеют разделения на группы, могут использоваться как в левой, так и в правой частях ассемблерной инструкции. С их помощью можно выполнять арифметические и логические преобразования, адресоваться по памяти. Хотя регистры общего назначения могут использоваться для адресации по памяти, например:
[gr0] = gr4; // запись значения регистра gr4 в память
// по адресу, хранящемуся в gr0.
Однако адресные регистры обладают в этом смысле значительно более широкими возможностями.
Примеры использования регистров общего назначения:
gr0 = gr5; // копирование.
gr2 = gr1 + gr3; // модификация.
[ar4++] = gr7 with gr7 -= gr4 ; // запись в память.
Примечание В процессоре NM6403 не предусмотрены специальные регистры для организации программных циклов.
