Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3222

.pdf
Скачиваний:
5
Добавлен:
15.11.2022
Размер:
3.54 Mб
Скачать

МИНИСТРЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГБОУ ВО «Воронежский государственный технический университет»

К.А. Разинкин

АРХИТЕКТУРА И ПРОГРАММИРОВАНИЕ MIPS-ПРОЦЕССОРОВ

Утверждено учебно-методическим советом университета в качестве учебного пособия

Воронеж 2017

УДК 681.322

ББК 32.97

Разинкин К.А. Архитектура и программирование MIPSпроцессоров : учеб. пособие [Электронный ресурс]. Электрон. текстовые, граф. данные ( 3,37 Мб)/ К.А. Разинкин. Воронеж: ФГБОУ ВО «Воронежский государственный технический университет», 2017. 1 электрон. опт. диск (CD-ROM). цв. - Си-

стем. требования: ПК 500 и выше; 256 Мб ОЗУ; Windows XP; SVGA с разрешением 1024 768; Adobe Acrobat; CD-ROM дис-

ковод; мышь. Загл. с экрана.

Рассмотрены основные элементы архитектуры и система команд микропроцессоров MIPS (Microprocessor without Interlocked Pipeline Stages). Различные реализации MIPS ис-

пользуются в основном во встроенных системах, телекоммуникационном оборудовании.

Уделено внимание программированию на MIPSассемблере.

С практической точки зрения реализации MIPSассемблера рассмотрен GUI-эмулятор процессоров MIPS — MARS (MIPS Assembler and Runtime Simulator).

Издание соответствует требованиям Федерального государственного образовательного стандарта высшего образования по специальности 10.05.02 «Информационная безопасность телекоммуникационных систем», дисциплине «Аппаратные средства телекоммуникационных систем».

Табл. 8. Ил. 49. Библиогр.: 14 назв.

Рецензенты: кафедра технических комплексов охраны и связи Воронежского института ФСИН России

(нач. кафедры канд. техн. наук, доц. А.В. Паринов); д-р техн. наук, проф. А.П. Преображенский

©Разинкин К.А., 2017

©ФГБОУ ВО «Воронежский государственный технический университет»,

2017

ВВЕДЕНИЕ

В1981 г. команда Стендфордского университета, возглавляемая Джоном Хенесси (JohnHennesy) начала работу над проектом, который впоследствии привел к появлению первого MIPS-процессора. Базовая концепция заключалась в значительном повышении производительности за счет существенного упрощения архитектуры процессора, в основу которой была положена идея конвейеризации. При этом была решена проблема блокировок или вынужденных остановок конвейера, называемых interlocks, которая считалась главным препятствием распространению идеи конвейерного вычисления. Именно это свойство и дало название архитектуре MIPS: Microprocessor without Interlocked Pipeline Stages. Такая идеология потребовала исключить много полезных инструкций, требующих нескольких тактов на выполнение, однако общая производительность системы существенно увеличилась за счет повышения рабочей частоты процессора.

В1984 г. Джон Хенесси покинул Стенфордский университет и основал компанию MIPS Computer Systems. В 1985 г. на рынок был выпущен первый коммерческий микропроцессор R2000, а в 1988 г. — его улучшенная версия R3000. Эти 32разрядные процессоры в основном применялись в рабочих станциях компании Silicon GraphicsInc. (SGI). В 1991 г. MIPS

Computer Systems разработала 64-разрядный микропроцессор R4000, который стал первым коммерческим 64-разрядным RISC-микропроцессором, однако при выводе его на рынок возникли финансовые проблемы. Для сохранения компании и данного проекта в 1992 г. фирма SGI, для которой проект R4000 был жизненно важен, купила копанию MIPS Computer Systems, впоследствии переименованную в MIPS Technologies, Inc. (MTI).

На текущий момент компания MIPS Technologies предлагает для лицензирования достаточно большой набор 64- и 32-

3

разрядных IP-ядер [4, 5].64-разрядное семейство представлено двумя ядрами, появившимися в 2001 г., а именно MIPS64_5K и

MIPS64_20K.

Эти 64-разрядные ядра нашли широкое применение у потребителей, однако за прошедшее с 2001 г. время компания не представила ни одного нового 64-разрядного ядра, направив все усилия на развитие семейства 32-разрядных ядер.

Внижнем сегменте представлена группа ядер серии 4К, оптимизированных по площади кристалла и энергопотреблению и обеспечивающих высокую производительность. Серия представлена ядрами MIPS_4KE, MIPS_4KSd и MIPS_M4K.

Все ядра этой группы имеют традиционный пятиэтапный конвейер. Ниже приведены отличительные особенности каждого из ядер данного сегмента.

Ядро MIPS32_M4K, представленное в 2002 г., имеет встроенный конфигурируемый интерфейс с внешней памятью для систем без кэш-памяти. Эта возможность необходима для устройств, требующих предсказуемое время выполнения в сочетании с малой площадью кристалла.

Пособие посвящено в основном реализации ядра MIPS32_M4K и сгруппировано по трём разделам: архитектура, программирование и практикум.

Вразделе «АрхитектураMIPS» рассмотрены структура ядра в архитектуре MIPS с кратким обзором входящих в него основных устройств.

Вразделе «Программирование» представлена структура команд и данных MIPS-ассемблера и их связь с основными объектами архитектуры.

Вразделе «Практикум» рассмотрен эмулятор процессоров MIPS –MARS, приведён подход к моделированию микроконтроллера MIPS в Simulink, а также предложены задания и упражнения рекомендованные к выполнению на MIPSассемблере в среде MARS.

Учебное пособие предназначено для студентов специальности 10.05.02 «Информационная безопасность телекоммуникационных систем», изучающих дисциплину «Аппаратные средства телекоммуникационных систем».

4

1. АРХИТЕКТУРА MIPS

Обзор архитектуры MIPS начнём с рассмотрения ядра M4K. Ядро M4K является представителем 32-разрядного семейства процессорных ядер компании MIPS Technologies. Эти ядра рекомендуются производителем для множества задач, начиная от встраиваемых приложений реального времени и заканчивая высокопроизводительными системами с функциямицифровой обработки. Ядро M4K является самым миниатюрным по занимаемой площади на кристалле и самым экономичным поэнергопотреблению ядром компании MIPS. На базе ядра M4K построены, например, микроконтроллеры семейства

PIC32 компании Microchip.

Краткая спецификация M4K:

- производительность - 1.5 DMIPS/MHz.

Буква D в аббревиатуре DMIPS означает прохождение данным процессором теста Dhrystone, который не содержит операций над числами с плавающей запятой. Результатом теста является Dhrystones per second (количество итераций основного цикла в секунду). DMIPS можно делить на частоту процессора, чтобы получить DMIPS/MHz. Такие единицы позволяют сравнивать процессоры с разной тактовой частотой.

-технологический процесс - 90 nm(при такой технологии ядро может работать на частоте 340MHz). В MicrochipPIC32 работает на частоте 80 MHz;

-разрядность шины данных и шины адреса – 32 бита;

- стадии

конвейера

– 5 (Fetch (выборка),

Decode

(дешифрация),

Execute

(выполнение), Memory(доступ к

памяти) и Writeback (запись результатов));

 

-Площадь кристалла, мм2 - 0.185

-области применения – мобильные устройства, встраиваемые системы, в том числе телекоммуникационное оборудование.

5

1.1. Структура ядра в архитектуре MIPS

Ядро M4K содержит как обязательные, так и дополнительные (опциональные) блоки (рис.1.1).Обязательные блоки составляют основу MIPS архитектуры. Дополнительный блок может быть добавлен к M4Kядру исходя из особенностей внедрения.

Рис.1.1. Структурна схема взаимодействия функциональных блоков ядра M4K MIPS архитектуры

Обязательные блоки следующие: исполнительное ядро, блок умножения/деления (MDU), системный сопроцессор (CP0), модуль управления памятью (MMU), FixedMappingTranslation (FMT), интерфейс SRAM, управление электропитанием

Дополнительные или конфигурируемые блоки включают: Блок интеграции с разработанным пользователем сопроцессором Coprocessor 2 (СP2), Расширение системы команд с помо-

щью CorExtend(User Defined Instructions) –UDI, улучшенный JTAG (EJTAG) контроллер.

6

1.1.1. Исполнительное ядро (регистровый файл (RF), АЛУ, сдвиговый регистр)

Висполнительном ядре M4K реализуется архитектура загрузки/сохранения с одиночным циклом АЛУ следующих операций: логических, сдвиговых, сложения, вычитания, а также автономный блок умножения/деления.

Исполнительное ядро включает в себя:32-х битный сумматор, используемый для вычисления адреса данных; адресное устройство для вычисления адреса следующей команды; логика определения перехода и вычисления адреса перехода; блок выравнивания при загрузке данных; мультиплексоры обходных путей передачи данных для исключения остановок конвейера в тех случаях, когда команды, производящие данные и команды, использующие эти данные, расположены в программе достаточно близко; блок обнаружения Нуля/Единицы для реализации командCLZ(команды подсчета количества старших нулевых битов) и CLO (единичных битов)внутри 32-разрядного слова); АЛУ для выполнения побитных операций; сдвигающее устройство и устройство выравнивания при сохранении данных.

Вядре M4K содержится тридцать два 32-битных регистров общего назначения, использующихся используются для операций с целыми числами и вычисления адресов. Соответственно в регистр размером в 32 бита целиком помещается од-

но значение типа int. Для хранения переменной типа long необходимо использовать сразу два регистра. К каждому регистру можно обратиться по его порядковому названию и по его общему названию.

Имеются следующие регистры:

$zero ($0) – регистр, всегда содержащий значение 0 и доступный только для чтения;

7

$at ($1) – временный регистр процессора;

$v0-$v1 ($2-$3) – для результатов, возвращаемых функциями;

$a0-$a3 ($4-$7) – для аргументов функций;

$t0-$t9 ($8-$15, $24-$25) – для временных данных,

можно использовать как угодно;

$s0-$s8 ($16-$23, $30) – для постоянных дан-

ных, можно использовать как угодно;

$k0-$k1 ($26-$27) – зарезервировано для ядра операционной системы;

$gp ($28) – указатель для глобальных переменных, практически не используется;

$sp ($29) – указатель стека, его значение всегда равно верхнему адресу стека;

$ra ($31) –адрес инструкции, из которой была вызвана

функция;

$f0 – для результатов, возвращаемых функциями, с плавающей запятой;

$f4, $f6, $f8, $f10, $f16, $f18 – для временных данных

сплавающей запятой;

$f12, $f14 – для параметров функций с плавающей за-

пятой;

hi,lo — используется при умножении и делении.

pc — программный счетчик.

Чтобы команды могли быстро выполняться, они должны быстро получать доступ к операндам. Но чтение операндов из памяти занимает много времени, поэтому большинство архитектур предоставляют небольшое количество регистров для хранения наиболее часто используемых операндов. Архитектура MIPS использует 32 регистра, которые называют набором регистров или регистровым файлом. Чем меньше количество регистров, тем быстрее к ним доступ.

Найти необходимую информацию получится гораздо быстрее в небольшом количестве тематически подобранных

8

книг, лежащих на столе, а не в многочисленных книгах, находящихся на полках в библиотеке. То же самое и с чтением данных из регистров и памяти.

Прочитать данные из небольшого набора регистров (например, из 32 регистров) можно гораздо быстрее, чем из 1000 регистров или из большой памяти. Небольшие регистровые файлы обычно состоят из маленького массива памяти SRAM. Такой массив использует небольшой дешифратор адреса, подключенный битовыми линиями к относительно малому количеству ячеек памяти, благодаря чему цепи с наибольшей задержкой получаются короче, чем при доступе к большой памяти.

В примере показана инструкция add с регистровыми операндами. Имена регистров MIPS начинаются со знака $.

Переменные a, b и c произвольно размещены в регистрах $s0, $s1 и $s2. Имя $s1 произносят как «регистр s1» или «доллар s1». Инструкция складывает 32-битные значения, хранящиеся в $s1 (b) и $s2 (c) и записывает 32-битный результат в $s0 (a).

a = b + c

# $s0 = a, $s1 = b, $s2 = c

add $s0, $s1, $s2 # a = b + c

MIPS обычно хранит переменные в 18 из 32 регистров: $s0–$s7 и $t0–$t9. Регистры, имена которых начинаются на $s, называют сохраняемыми (англ.: saved) регистрами. В соответствии с соглашением об использовании регистров MIPS эти регистры используются для размещения в них переменных таких,

как a, b и c.

Сохраняемые регистры имеют особое значение в контексте вызова процедур. Регистры, имена которых начинаются с $t, называют временными (англ.: temporary) регистрами. Они используются для хранения временных переменных.Следующий пример кода показывает написанный на ассемблере MIPS код, использующий временныйрегистр $t0 для вычисленного промежуточного значения c – d.

9

Код на языке высокого уровня

 

a = b + c − d;

 

 

Коднаязыкеассемблера MIPS

 

# $s0 = a, $s1 = b, $s2 = c, $s3

= d

sub $t0, $s2, $s3

# t = c − d

 

add $s0, $s1, $t0

# a = b + t

1.1.2. Модуль умножения/деления (MDU )

ВM4K Core включёнблок умножения/деления (MDU), который предполагает наличие отдельного конвейера для операций умножения и деления. Этот конвейер работает параллельно с блоком целочисленной арифметики.

MDUвыполняет операции умножения за 17 тактов, операции умножения с накоплением за 18 тактов, операции деления за 33 такта и операции деления с накоплением за 34 такта. Попытка активизировать следующую команду умножения/деления до завершения выполнения предыдущей, так же как и использование результата этой операции до того, как она закончена, вызывает остановку конвейера. В MDU имеется вывод, определяющий формат операции – знаковый или беззнаковый.

1.1.3. Системный сопроцессор

Сопроцессор отвечает за преобразование виртуального адреса в физический, протоколы кэш, систему управления исключениями, выбор режима функционирования (Kernel/User) и за разрешение/запрещение прерываний.

Системный Управляющий Сопроцессор (CP0) обеспечивает регистровый интерфейс с процессорным ядром MIPS32 и поддерживает управление памятью, преобразование адреса, обработку исключений и другие привилегированные операции. Каждому регистру CP0 соответствует определяющий его уни-

10

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