Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_СИИ.doc
Скачиваний:
48
Добавлен:
09.11.2019
Размер:
917.5 Кб
Скачать

Контрольные вопросы

  1. Перечислите основные внутренние блоки процессора NM6403 и поясните их назначение.

  2. Какова разрядность интерфейса с внешней памятью процессора NM6403?

  3. Состав и назначение скалярного процессора.

  4. Перечислите основные элементы векторного процессора и поясните их назначение.

  5. Какова разрядность узлов векторного процессора?

  6. Как может быть сформировано и обработано слово упакованных векторных данных?

  7. Какие операции способен выполнять векторный процессор?

  8. Поясните суть операции взвешенного суммирования и приведите примеры её использования.

  9. Какие операции способно выполнять векторное АЛУ? Чем оно отличается от скалярного АЛУ?

  10. Каковы особенности выполнения операций на векторном АЛУ при возникновении переполнений?

  11. Чем определяется разбиение на элементы при операциях на рабочей матрице и на векторном АЛУ?

  12. Поясните суть операции маскирования с векторным умножением.

  13. Поясните суть операции логического маскирования, с какими операциями она используется?

  14. Поясните суть операции арифметической активации, с какими операциями она используется?

  15. Поясните суть операции логической активации, с какими операциями она используется?

  16. Поясните суть операции циклического сдвига вправо операнда Х, с какими операциями она используется?

  17. Каков порядок выполнения преобразований над данными на векторном процессоре?

Лабораторная работа № 7 Программирование процессора NeuroMatrix ® nm 6403

7.1. Цель работы.

Целью работы является ознакомление с языком ассемблера процессора NeuroMatrix® NM6403 (Л18789 ВМ1) и возможностями, которые он предоставляет программисту.

7.2 Краткий обзор элементов языка ассемблера процессора NM 6403

7.2.1 Введение

Данная работа предполагает наличие общего представления об особенностях архитектуры процессора NM6403, которые рассматривалась в предыдущей лабораторной работе [ ]. Поэтому, описание функциональных узлов и выполняемых ими операций не рассматривается в данной работе. При необходимости, рекомендуется обратиться к методическому пособию по прошлой работе.

7.2.2 Формат ассемблерных инструкций

Процессор NM6403 работает с машинными командами 32-х и 64-х разрядного формата, причем в одной машинной команде содержится две операции процессора. В этом смысле NM6403 представляет собой скалярный микропроцессор со статической VLIW-архитектурой.

Разрядность инструкций процессора

Короткие инструкции не содержат константы и имеют разрядность 32 бита.

Длинные инструкции содержат в коде команды 32-х разрядную константу, поэтому их разрядность составляет 64 бита. Процессор адресуется к 32-х разрядным словам. На хранение коротких инструкций отводится одна ячейка памяти, для длинных – две.

ПримечаниеДлинные инструкции всегда располагаются по четным адресам.

Если начало длинной инструкции при компиляции ассемблером приходится на нечетный адрес, перед ней автоматически вставляется пустая команда nul.

Процессор NM6403 за одно обращение к памяти считывает либо две коротких инструкции, либо одну длинную, поэтому регистр pc, определяющий адрес следующей считываемой инструкции, всегда имеет четное значение.

Типы инструкций процессора

Все инструкции процессора NM6403 делятся на:

  • скалярные инструкции, которые управляют работой скалярного RISC-ядра, таймеров, осуществляют загрузку/чтение всех регистров (доступных по чтению/записи) за исключением векторных регистров, образующих очереди FIFO;

  • векторные инструкции, которые управляют работой векторного процессора.

Структура инструкций процессора

Каждая инструкция процессора NM6403 состоит из двух частей, называемых условно «левой» и «правой». Обе части инструкции выполняются процессором одновременно за один такт.

В левой части инструкции записываются только адресные операции, в правой все арифметическо-логические, не связанные с вычислением адресов и обращением к памяти. Левая и правая части инструкции соединяются воедино при помощи ключевого слова 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++];

трактуется ассемблером как:

gr0 = [ar0++] with nul ;

Или то же самое с левой частью:

gr1 = gr3 + gr0 ;

рассматривается как:

nul with gr1 = gr3 + gr0;

Для улучшения читаемости программы, в случае если левая или правая часть инструкции не используется, связка with может опускаться.

Примечание Векторные и скалярные инструкции не могут смешиваться в одной команде, даже если у одной из них опущена левая часть, а у другой правая.

Особенности структуры векторных инструкций процессора

Векторные инструкции процессора, также как и скалярные, разделены на левую и правую части. Однако помимо этого они имеют дополнительное поле, которое присутствует во всех векторных инструкциях за исключением одиночных инструкций ftw и wtw . Поле, о котором идет речь, называется полем количества повторений. Вот пример того, как выглядит векторная инструкция:

rep 32 data = [ar1++] with vsum , data, afifo;

Левая и правая часть векторной инструкции разделены ключевым словом with, поле количества повторений (подчеркнуто) определяет, сколько длинных слов будет обработано данной командой. В большинстве случаев векторная команда будет выполняться столько тактов, каково значение счетчика, поскольку операция над длинным словом в векторном процессоре выполняется за один такт.

В случае, если левая часть инструкции опущена, поле повторения и слово-связка with остаются при написании инструкции, например:

rep 16 with ram - 1; // правильная инструкция

Любые другие формы записи инструкции, как то

rep 16 ram - 1; или with ram - 1; // содержат ошибки

являются ошибочными, о чем сообщит компилятор.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]