Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Формирование векторной команды
Для задания векторной команды необходимо установить флажки в соответствующих элементах управления. Программой отслеживается не верный ввод команды. Переключатели, соответствующие невозможной комбинации, становятся недоступными. Рекомендуется соблюдать следующий порядок формирования команды:
Действия пользователя по формированию команды отображаются в поле " Command". Обозначения, принятые при выводе команды, не соответствуют реальным устройствам процессора Л1879ВМ1. Например, команда маскирования может выглядеть следующим образом: rep 1 with mask M, shift X, activate Y; В реальной команде вместо операндов M, X и Y необходимо использовать существующие аппаратные ресурсы (data, ram, afifo и т. д.). Разбиение рабочей матрицы и запись весовых коэффициентов Для разбиения матрицы на строки и столбцы можно либо воспользоваться выпадающим списком стандартных разбиений (nbl, nbh, sbl, sbh), либо вводить константы разбиения в окна ввода, либо разбить матрицу в визуализаторе с помощью кнопок-переключателей. Все изменения в матрице отображаются в визуализаторе и в окнах ввода. Для удобства 64-х разрядные регистры разбиения (nb1 и sb) разделены на младшие и старшие части. При необходимости, можно скопировать значение младшей части регистра в старшую часть (кнопка " -> " ). Следует учитывать, что при работе с арифметико-логическими командами (в отличие от команд взвешенного суммирования) разбиение можно задать только в регистрах nbl и nbh, то есть вектора на входах X и Y будут иметь одинаковое разбиение. В операции взвешенного суммирования разбиение на столбцы (nbl, nbh) может отличаться от разбиения на строки (sbl, sbh). Весовые коэффициенты можно задать щелчком мыши в визуализаторе матрицы, устанавливая/сбрасывая необходимые биты. Альтернативный способ – вызов окна диалога из всплывающего меню. В этом случае, можно задать значение всей строке, либо одному весовому коэффициенту. В окне диалога предусмотрен ввод шестнадцатеричных и десятичных значений. Для просмотра всех введённых весов можно воспользоваться генератором кода (кнопка " Code" ). Весовые коэффициенты будут записаны в секцию данных в массиве Weights. Установка входных значений Входные значения (Entry X, Entry Y), маску (Mask X, Mask Y), пороги для функции активации можно задать щелчком мыши в визуализаторе матрицы на соответствующих регистрах, устанавливая/сбрасывая необходимые биты, либо вводя значения в соответствующие окна ввода. Генератор кода Сформированная пользователем команда, входные значения, константы разбиения и другая введённая пользователем информация используются для генерирования листинга ассемблерного кода. В листинге определены секция данных (значения, определённые пользователем) и секция кода – пример реализации функции с вызовом векторной команды. Генератор кода включается кнопкой " Code". Замечания. При работе с программой, следует помнить, что разрядность векторов в визуализаторе идет справа налево и снизу вверх. Все данные в окнах редактирования отображаются в 16-ричной системе. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
· Выберите операцию взвешенного суммирования, установив флажок на индикаторе vsum. · Разбейте рабочую матрицу на 16 строк по 4 бита. Для этого, выберите из выпадающего списка поля sbl нужное значение. При этом, это значение будет автоматически скопировано и в старшую часть этого регистра. · В результате такого разбиения получилась матрица из 16 ячеек. Теперь, в каждую ячейку запишите весовой коэффициент равный 1. Для этого, щёлкая правой кнопкой мыши на ячейке, выберите пункт всплывающего меню Set element … и в появившемся окне введите 1. На этом конфигурирование векторного процессора заканчивается и он настроен на выполнение определённой функции. Остаётся подать исходные данные на входы Х и Y рабочей матрицы, и мы получим результат вычислений в регистре afifo. При этом если введено/выведено менее 16-ти цифр, то предполагается, что слева число дополняется недостающими нулями. Итак, посмотрим, что же мы получили в результате. Если всё сделали правильно, то в afifo будет число 10 h (16), т.е. это просто сумма 16-ти 4-разрядных тетрад каждая из которых равна 1 h (0001 b ). Далее, выполните следующее: · Подайте на вход Y 2 h. Как видите, она прибавляется к результату. · Измените значение на входе X таким образом, чтобы результат снова стал равным 10 h. Занесите в отчет это значение. · Верните начальные значения входов Х (=1111111111111111 h ) и Y (=0 h ). · Изменим конфигурацию рабочей матрицы: установите в ноль значение весового коэффициента самой нижней ячейки. При этом значение результата должно стать на единицу меньше ( fh ). Объясните почему это происходит. Пояснения занесите в отчет. · Удалите одну единицу со входа Х. Какую по-вашему, единицу Вы удалили – старшую или младшую? Как при этом изменится результат? Запомните это для себя. · Теперь повторите последние 3 пункта, но весовой коэффициент надо установить в ноль не нижней ячейки, а самой верхней. Обратите внимание, что при удалении одной единицы со входа Х, т.е. замене его старшей тетрады на ноль, результат в afifo уже не уменьшается на 1 как прежде. Объясните почему это происходит. Пояснения занесите в отчет. · Верните начальные значения входов Х (=1111111111111111 h ), Y (=0 h ) и конфигурацию рабочей матрицы. · Разбейте рабочую матрицу на 2 столбца по 32 бита каждый. Задайте значения весовых коэффициентов рабочей матрицы в левом столбце следующими: самый нижний -1, второй снизу 2 h, а остальные оставьте равными 0. Для того чтобы ввести -1 не обязательно переводить её в ffffffffh, можно вводить прямо в десятичной системе, установив переключатель в окне ввода весового коэффициента на Decimal. Проанализируем результат: 100000010. Младшие 8 цифр (00000010) – это результат прошлой операции по сложению всех тетрад входа Х плюс младшие 32 разряда входа Y. А вот старшие 8 цифр (00000001) – это результат новой операции, которая равна удвоенному значению второй тетрады за вычетом первой тетрады и плюс старшие 32 разряда входа Y. Таким образом, мы запрограммировали векторный узел процессора на одновременное выполнение двух операций над одними и теми же входными данными. Например, можно разбить матрицу на три столбца следующим образом: 5/27/32 или 1/2/21/40. Допустимо использование не всей матрицы. · Измените слово на входе Х на следующее: 11 h. Выпишите результат операции в отчет и объясните его. · Измените слово на входе Х на следующее: 1 h. Выпишите результат операции в отчет и объясните его.
Значение входов Х, Y, выхода в afifo и конфигурацию рабочей матрицы (в виде таблицы весовых коэффициентов) занесите в отчет в 16-ричной системе.
ЛАБОРАТОРНАЯ РАБОТА № 2 Программирование нейромикропроцессора NeuroMatrix ® NM 6403 Ц ель работы: ознакомление с языком ассемблера нейромикропроцессора NeuroMatrix ® NM 6403 (Л18789 ВМ1) и возможностями, которые он предоставляет программисту. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ По материалам разделов 2 и 3 изучить структуру формат ассемблерных инструкций структуру микрокоманд (МК), порядок ввода данных, кодирование и выполнение МК. По материалам раздела 4 ознакомиться с порядком ввода микропрограмм и исходные данные. Выполнить упражнения из раздела 5 по указанию преподавателя. Популярное:
|
Последнее изменение этой страницы: 2016-08-31; Просмотров: 825; Нарушение авторского права страницы