Скачать 1.44 Mb.
|
Часть 4 Процессор Nios II 4.1 Назначение и возможности процессора Nios II Процессор Nios II, представленный компанией Altera в 2004 году, предназначен для замены оригинального процессора Nios, характеризующегося 16 битным набором инструкций и 16 битным регистровым окном. По мнению компании Gartner [12] в настоящее время процессор Nios II признан самым популярным конфигурируемым в кристалле FPGA процессором, лидером по гибкости использования. Процессор Nios II может быть сконфигурирован под требуемую задачу. Существует 3 различные версии конфигурации процессора.
Процессор Nios II имеет RISC архитектуру, в которой арифметические и логические операции выполняются над операндами, находящимися в регистрах общего назначения. Обмен информацией между регистрами и памятью осуществляется путем выполнения команд “Load” и “Store”. Машинное слово процессора Nios II имеет ширину 32 бита, такой же размер имеют его регистры. Для адресации байтов в слове используется little-endian стиль, при котором менее значимые байты расположены по меньшим адресам в ОП. Процессор имеет гарвардскую архитектуру, то есть использует раздельные шины для данных и команд. Структурная схема процессора Nios II, представленная в [13], воспроизведена на рис. 4.1. Процессор Nios II может функционировать в следующих режимах.
Ниже приведены основные характеристики процессора Nios II/f:
Процессор Nios II и интерфейсы для сопряжения с оперативной памятью и другими периферийными компонентами системы реализуются в кристалле FPGA. Пример процессорной системы «DE2-70 Media Computer» приведен в предыдущем разделе учебного пособия. Для соединения компонентов процессорной системы используется синхронная шина Avalon. Как следует из [8], шина Avalon может содержать следующие типы:
Рис. 4.1 – Структурная схема процессора 4.2 Регистровая структура процессора Nios II Архитектура процессора Nios II поддерживает плоский регистровый файл, содержащий 32 регистра общего назначения и до 32 управляющих регистров. Регистры общего назначения и управляющие регистры, представлены в таблицах 4.1 и 4.2, соответственно. Как видно из таблицы 4.1, некоторые из регистров являются специализированными. То есть они предназначены для выполнения определенных функций, имеют специальное имя, понимаемое ассемблером. Таблица 4.1 Регистры общего назначения
Таблица 4.2 Регистры управления Nios II
В состав процессора Nios II может входить до 32 управляющих регистров. Их количество зависит от присутствия модуля защиты памяти или модуля управления памятью. В таблице 4.2 приведены форматы 6 основных базовых управляющих регистров. Причем имена, представленные там, понимаются ассемблером. Регистры используются следующим образом.
4.3 Адресация в процессоре Nios II Процессор Nios II использует для адресации 32-битный адрес, при этом память является адресуемой по байтам. С помощью команд можно записывать/считывать слова (32), полуслова (16) и байты данных(8). Чтение или запись данных по адресам, которые не связаны с памятью или периферийными устройствами, приводит к неопределенным результатам. В процессоре NIOS II используются следующие способы адресации. - Непосредственная адресация. 16 битный операнд присутствует в команде. Он может быть дополнен знаковым разрядом до 32 разрядов при выполнении арифметической операции. - Регистровая адресация. Операнды находятся в регистрах процессора. - Относительная регистровая адресация. Эффективный адрес операнда получается путем суммирования содержимого регистра и знакового 16 разрядного смещения, находящегося в самой команде. -Косвенная регистровая адресация. Содержимое регистра является эффективным адресом операнда. Этот способ эквивалентен предыдущему способу, когда смещение равно нулю. - Абсолютная адресация. 16-битный абсолютный адрес операнда может быть определен путем использования смещения относительно регистра r0, который всегда равен нулю. 4.4 Форматы команд Исполнимые команды кодируются 32 разрядными словами. В языке ассемблер могут применяться псевдокоманды, которые при трансляции будут заменены одной или двумя исполнимыми командами. В процессоре Nios II используются 3 различных формата команд [14].
Во всех случаях шесть младших битов команды определяют код операции, остальные биты используются для определения регистров, непосредственных операндов или для расширения поля кода операции. 3 формата команд: I – типа; 31 27 26 22 21 6 5 0
R – типа; 31 27 26 22 21 17 16 6 5 0
J – типа. 31 6 5 0
4.5 Список команд 4.5.1 Команды «load», «store» Команды загрузки/сохранения предназначены для пересылки данных между регистрами общего назначения процессора и оперативной памятью (устройствами ввода/вывода). Они относятся к формату I-типа. Ниже перечислены сами команды и краткие пояснения.
При загрузке операнда со знаком в 32-битный регистр операнд дополняется до 32 разрядов знаковым разрядом. При загрузке операнда без знака в 32-битный регистр операнд дополняется до 32 разрядов нулями.
Представленные выше две команды выполняют сохранение младшего байта (полуслова) регистра в ОП. Ниже приведены команды загрузки/сохранения операнда в устройствах ввода/вывода.
Команды загрузки/сохранения операнда в устройствах ввода/вывода выполняются без обращения к кэш памяти.
Арифметические команды бывают I и R типов. В первом случае в операции участвует непосредственный операнд, задаваемый в команде, и операнд, содержащийся в регистре процессора. Во втором случае оба операнда находятся в регистрах процессора. Результат в обоих случаях помещается в регистр процессора. Ниже приведены символические имена арифметических команд и примеры их использования:
Примеры: add rC, rA, rB rC ← rA + rB addi rB, rA, Immed16 rB ← rA + Immed16 sub rC, rA, rB rC ← rA – rB subi rB, rA, Immed16 ~ addi rB, rA, - Immed16 mul rC, rA, rB rC ← rA * rB muli rB, rA, Immed16 rB ← rA * Immed16 div rC, rA, rB rC ← целое rA/rB 4.5.3 Логические команды Логические команды бывают R и I типов. К R - типу относятся следующие команды:
В командах I - типа непосредственный операнд дополняется нулями до полного 32-разрядного слова.
Команды andhi, orhi, xorhi выполняют операции со старшей половиной слова в регистре. Младшая часть непосредственного операнда дополняется до полного слова нулями. 4.5.4 Команды сдвига Сдвиг вправо логический:
Выполняют сдвиг содержимого регистра rA вправо на количество разрядов, заданное в пяти младших разрядах rB (Immed5). Освободившиеся разряды заполняются нулями. Результат помещается в rC. Сдвиг вправо арифметический:
Выполняют сдвиг содержимого регистра rA вправо на количество разрядов, заданное в пяти младших разрядах rB (Immed5). Освободившиеся разряды заполняются знаковым. Результат помещается в rC. Сдвиг влево логический:
Выполняют сдвиг содержимого регистра rA влево на число разрядов, заданное в пяти младших разрядах rB (Immed5). Освободившиеся разряды заполняются нулями. Результат помещается в rC. Сдвиг циклический:
Выполняют циклический сдвиг вправо/влево содержимого регистра rA на значение, заданное в пяти младших разрядах rB (Immed5). Результат помещается в rC. 4.5.5 Команды пересылки Команды пересылки копируют данные из одного регистра в другой, либо помещают непосредственную величину в регистр процессора. Команды пересылки, по сути, являются псевдокомандами. То есть, при компиляции они будут заменены на одну или две исполнимых команды. Ниже приведены команды пересылки с краткими пояснениями и соответствующие выполняемые команды процессора.
Эта команда выполняется как orhi rB, r0, % hi (Label), где % hi (Label) старшие 16 бит Label ori rB, rB, % lo (Label), где % lo (Label) младшие 16 бит Label 4.5.6 Команды сравнения Сравнивают содержимое двух регистров и записывают 1 (если истинно) или 0 (если ложь) в регистр результата. Являются командами R типа. Команды сравнения соответствуют операторам отношения в языке С.
Псевдокоманда. Выполняется cmplt с заменой операндов в rA и rB.
Псевдокоманда. Выполняется cmpltu с заменой операндов в rA и rB.
Псевдокоманда. Выполняется cmpge с заменой операндов в rA и rB.
Псевдокоманда. Выполняется cmpgeu с заменой операндов в rA и rB.
Выполняют сравнение содержимого регистра с непосредственным операндом. Являются командами I типа. Причем, если выполняется сравнение операндов со знаком, то непосредственный операнд дополняется до 32 разрядов знаковым разрядом. Если сравниваются операнды без знака, то непосредственный операнд дополняется до 32 разрядов нулями.
Псевдокоманда. Выполняется cmgei с immed16+1.
Псевдокоманда. Выполняется cmpgeui с Immed16+1.
Псевдокоманда. Выполняется cmplti с Immed16+1.
Псевдокоманда. Выполняется cmpltui с Immed16+1. 4.5.8 Команды переходов Команды переходов предназначены для ветвления вычислительного процесса. Безусловный переход R – типа.
Безусловный переход I- типа.
Условные переходы I- типа.
Псевдокоманда. Выполняется blt с заменой операндов в rA и rB.
Псевдокоманда. Выполняется bltu с заменой операндов в rA и rB.
Псевдокоманда. Выполняется bge с заменой операндов в rA и rB.
Псевдокоманда. Выполняется bgeu с заменой операндов в rA и rB. 4.5.9 Команды вызова подпрограммы и возврата из неё Команда вызова подпрограммы J – типа.
Команда вызова подпрограмм R – типа.
Команда возврата из подпрограммы.
4.5.10 Команды управления Регистры управления процессора Nios II могут быть прочитаны или записаны с помощью следующих команд:
Команды trap и eret аналогичны командам call и ret, но используются для вызова/ возврата из обработчика исключений. Команды break и bret определяют контрольные точки и осуществляют возврат из процедуры обработки контрольных точек. Используются только программными средствами отладки. Для управления КЭШ памятью используются следующие команды:
4.5.11 Специализированные инструкции Специализированные инструкции представляют собой инструкции, реализованные аппаратно пользователем внутри кристалла FPGA и подключенные в SOPC Builder во время генерации процессорной системы. Доступ к специализированным инструкциям процессора Nios II осуществляется с помощью команды custom. Процессором допускается подключение до 256 специализированных инструкций, причем каждой инструкции присваивается свой номер. Символьное обозначение пользовательской инструкции: custom N, xC, xA, xB Формат инструкции следующий: 31 27 26 22 21 17 16 15 14 13 6 5 0
Поле N определяет номер специализированной инструкции. Каждая инструкция может использовать до двух операндов, которые могут размещаться в РОНах процессора, либо в пользовательских регистрах, входящих в состав пользовательской логики. Аналогичным образом, запись результата может выполняться либо в РОНы, либо в специализированные регистры. Для того, чтобы определить какие из регистров используются, применяются однобитные поля readra, readrb и writerc. Если в этом поле установлено единичное значение, тогда используются РОНы, и пользовательские регистры – в противном случае. Например, инструкция custom 0, c3, r5, r0 выполняет специализированную инструкцию с номером 0, которая использует операнды в регистрах общего назначения r5 и r0, после чего сохраняет результат в пользовательском регистре c3. Более подробное описание применения специализированных инструкций приводится в [13]. 4.6 Директивы ассемблера Ассемблер процессора Nios II соответствует широко распространенному ассемблеру GNU, который находится в свободном доступе в сети Internet. Поэтому в программах для процессора Nios II могут использоваться директивы ассемблера GNU. Все директивы начинаются с точки. Ниже приведены часто используемые директивы. .ascii “string”… Эта директива побайтно записывает строку string в память. Могут быть определены несколько строк в одной директиве, при этом строки разделяются запятыми. .asciz “string”… Данная директива аналогична предыдущей, но в отличие от нее, добавляет нулевой байт в конец каждой строки. .byte expressions Данная директива размещает выражения размером один байт в памяти. Примеры выражений следующие: 8, 5 и K – 6. .hword expression Определяет выражения, разделенные запятой, и отображает их в 16 битные слова в памяти. .word expression Определяет выражения, разделенные запятой, и отображает их в 32 битные слова в памяти. .data Директива определяет сегмент данных программы. .text Директива определяет сегмент кода программы. После компиляции сегменты кода и данных будут размещены в тех областях ОП, которые определены в настройках аппаратной части проекта в Altera Monitor Program. .end Эта директива отмечает конец программы. Все строки, размещенные после нее, игнорируются ассемблером. .equ symbol, expression Данная директива устанавливает значение symbol, равным выражению expression. .global symbol Директива делает видимым символ, за пределами объектного ассемблерного файла. .include “filename” Директива подключает внешние файлы с исходным кодом. .org new-lc Данная директива изменяет текущее значение счетчика команд на значение new-lc. При этом new-lc представляет собой смещение от начала программы. Директива может либо увеличить счетчик, либо оставить его без изменений. .skip size Пропуск определенного количества байт, определяемых в size. Пропускаемые байты заполняются нулями. 4.7 Обработка исключений Исключением называется нарушение естественного хода выполнения программы. Исключение может возникнуть в следующих случаях:
В случае возникновения исключения процессор Nios II выполняет следующую последовательность действий:
Адрес обработчика исключений задается при генерации процессорной системы в SOPC Builder, и он не может быть изменен после этого момента. Программная ловушка Программное исключение возникает при выполнении в программе инструкции trap. Эта инструкция сохраняет адрес следующей команды в регистре ea. После чего, она запрещает все прерывания и передает управление обработчику. Последней инструкцией в обработчике должна быть команда eret, которая возвращает управление программе, во время выполнения которой возникло прерывание, а также восстанавливает содержимое регистра состояния процессора. Чаще всего программную ловушку используют для передачи управления другой программе, например, процедуре операционной системы. Аппаратные прерывания Аппаратные прерывания могут быть вызваны внешними источниками, такими как, например, устройства ввода/вывода. Каждое такое устройство использует один из 32 входов запросов прерывания процессора. Прерывания происходят при выполнении следующих условий:
Содержимое регистра ipending отражает прерывания, требующие обработки. Обработчик прерываний определяет, какие из них имеют наибольший приоритет, и передает управление в соответствующую подпрограмму. Возврат из обработчика прерывания в основную программу осуществляется с помощью команды eret, описанной выше. Следует отметить, что перед выполнением этой команды необходимо модифицировать регистр ea. Модификация состоит в вычитании 4 из его содержимого. Это необходимо сделать, так как при возникновении сигнала прерывания выполнение текущей инструкции прекращается, а в регистр ea записывается адрес следующей команды. Нереализованные инструкции Такое исключение возникает, когда процессор в ходе своей работы обнаруживает инструкцию, которая не реализована аппаратно. Такая ситуация может произойти, например, в случае использования инструкций mul или div в процессоре Nios II/е. Обработчик исключений, выяснив причину исключения, может вызвать подпрограмму, эмулирующую выполнение этой инструкции. Следует напомнить, что в экономичной версии процессора не поддерживается аппаратное выполнение умножения и деления. Определение типа исключения. В случае возникновения исключения, обработчик исключений должен определить его тип. Для этого он выполняет следующие действия.
4.8 КЭШ и сильносвязанная память Процессорная система Nios II может содержать кэш команд и данных, которые реализуются с помощью блоков встроенной памяти в FPGA. Параметры КЭШ памяти определяются во время создания системы, путем заполнения соответствующей вкладки (см. раздел 1.5.2). Добавление этой памяти значительно повышает производительность процессорной системы, особенно если в качестве основной памяти используется внешняя SDRAM память. КЭШ инструкций и данных является КЭШем прямого отображения. КЭШ память инструкций может быть использована в стандартной и быстрой версиях процессора. При этом она организуется по 8 слов в одной строке, а ее размер определяется пользователем во время создания системы. КЭШ память данных может быть реализована только в быстрой версии процессора Nios II/f. Она может быть организована по 4, 16 или 32 байта в одной строке. Общий размер также определяется пользователем при генерации системы. Управление КЭШем осуществляется программным путем. Для этих целей в процессоре Nios II используются инструкции представленные в разделе 4.5.10. Процессор Nios II использует КЭШ память стандартным образом. Однако существует два способа обхода КЭШа. Одним из них является использование специальных версий инструкций загрузки/сохранения, таких как ldwio,ldbio, lduio, ldhio, ldhuio, stwio, stbio и sthio. Вторым способом является использование старшего (31 бита) адреса в качестве тега, который указывает должен ли процессор Nios II загружать или считывать данные с использованием КЭШа или без него. Если данный бит, равен 1, то считывание или загрузка данных происходит в обход механизма кэширования. Данная возможность доступна только для быстрой версии процессора. Следует заметить, что совмещать доступ к кэшированным и не кэшированным данным следует с осторожностью, так как это может привести к проблемам когерентности данных. Сильносвязанная память (Tightly Coupled Memory) представляет собой память, реализованную внутри кристалла FPGA и подключенная к процессору напрямую без использования шины Avalon. В этой памяти могут храниться как инструкции, так и данные. Доступ к этой памяти осуществляется всегда в обход КЭШ памяти. Настройка параметров этой памяти, также как и КЭШ памяти осуществляются во время проектирования процессорной системы в SOPC Builder. |
Учебное пособие Москва Издательство Московского государственного... Рекомендовано к изданию Редакционно-издательским советом университета в качестве учебного пособия для студентов направления 230100... |
Учебное пособие Издательство Иркутского государственного технического университета 2012 Тимофеева С. С. Защита литосферы и обращение с опасными отходами : учеб пособие. – Иркутск : Изд-во Иргту, 2012. – 159 с |
||
Учебное пособие Издательство Иркутского государственного технического университета 2012 Тимофеева С. С. Защита литосферы и обращение с опасными отходами : учеб пособие. – Иркутск : Изд-во Иргту, 2012. – 159 с |
2015 удк 378 вестник рыбинского государственного авиационного технического... ... |
||
2015 удк 378 вестник рыбинского государственного авиационного технического... ... |
Учебное пособие «Основы современной социологии» Год издания: 2001... Григорьев С. И., Растов Ю. Е. Основы современной социологии. Учебное пособие. Барнаул: Издательство Алтайского государственного университета,... |
||
Учебное пособие (Краткий курс) Москва Издательство Российского университета дружбы народов Учебное пособие предназначено для студентов, обучающихся в магистратуре и специализирующихся по защите растений |
Учебное пособие Москва Издательство Российского Университета дружбы народов 1998 ... |
||
Учебное пособие Часть 1 Р89 Русский язык и культура речи для студентов-нефилологов. Ч. 1: учебное пособие/ Колпакова Л. В., Максименко Е. В., Михайлова О.... |
Рабочая программа размещена на сайте Университета http :// utmn ru... Н. В. Бакша, А. А. Данилюк. Корпоративная социальная ответственность: учебное пособие. Тюмень: Издательство Тюменского государственного... |
||
Учебное пособие Издание третье, исправленное и дополненное Москва... Б 17 Литературное редактирование: Учеб пособие., изд. 3 – М.: Рудн, 2010. – 249 с |
Учебное пособие. М.: Издательство Московского университета, 2004 «Вся Россия», «Моя провинция», «Новости – время местное» и др Представлены также некоторые особенности совместной работы журналистов... |
||
Учебное пособие Часть II РФ, заведующая кафедрой детских болезней лечебного факультета I московского Государственного Медицинского университета им. И. М.... |
Учебное пособие Издательство Иркутского государственного технического университета 2014 Курышова И. В. История и теория местного самоуправления : учеб пособие. – Иркутск : Изд-во Иргту, 2014. – 112 с |
||
Методические рекомендации по подготовке и защите выпускной квалификационной... Печатается по решению Ученого совета Московского государственного медико-стоматологического университета им. А. И. Евдокимова (г.... |
Бурлюкина Е. В., Васильченко Н. Г. Экономика отрасли Учебное пособие... Рецензенты: Кафедра «Экономики и управления предприятием» Московского государственного университета инженерной экологии, зав кафедрой:... |
Поиск |