3222
.pdfjr $ra greater:
slt $v0, $a1, $a0 jr $ra
3.2.36. Покажите инструкции MIPS, которые реализуют следующие псевдокоманды. Вы можете использовать регистр $at для хранения временных данных, но вам запрещается портить содержимое (затирать) другие регистры.
a) addi $t0, $s2, imm31:0 (прим. переводчика: под imm31:0 подразумевается 32-битный непосредственный операнд)
b)lw $t5, imm31:0($s0)
c)rol $t0, $t1, 5 (циклически сдвинуть $t1 влево
на 5 разрядов и поместить результат в $t0)
d) ror $s4, $t6, 31 (циклически сдвинуть $t6 вправо на 31 разряд и поместить результат в $s4).
121
ЗАКЛЮЧЕНИЕ
Ядро М4К на базе MIPS32 превосходит процессоры ARM семейства Cortex-M по производительности, экономичности расхода энергии и компактности кристалла. Попробуем разобраться, за счет чего удалось этого достичь.
Во-первых, в ядре М4К предусмотрена возможность увеличения количества РОН до 16 наборов по 32 регистра. Эти регистры используются для хранения параметров и значений операндов на кристалле, чтобы уменьшить количество пересылок в модуль памяти и тем самым сократить количество циклов, повысить быстродействие. Регистры общего назначения могут также использоваться в качестве «теневых» для ускорения обработки прерываний.
При обработке прерывания или исключения ЦП определяет, какой из теневых наборов следует использовать. Выбранный набор переводится в активное состояние, после чего вектор прерывания продолжает выполнение. При этом не требуется ни сохранение контекста, ни выполнение восстановления, поскольку только подпрограмма прерывания имеет доступ к активному в текущий момент регистру. Соответственно, сокращается время обработки прерывания и уменьшается количество обращений к памяти, т.к. содержимое регистров сохраняется после обработки предыдущего прерывания или исключения, и загрузка значений из SRAM не производится.
Повышение производительности обеспечено за счет блока MDU и быстродействующей памяти SRAM, доступ к которой осуществляется с малой задержкой. Ядро М4К выполняет операции умножения с накоплением и умножения 32×16 за один цикл, а 32×32 — за 2 цикла. Как мы упоминали выше, благодаря отдельному функциональному блоку, работающему независимо от конвейера, операции умножения и деления выполняются параллельно арифметическим и сдвиговым.
Адресное пространство памяти разделено на область данных D-SRAM и область инструкций I-SRAM, что позволяет одновременно выполнять транзакции с инструкциями и данны-
122
ми. При желании эти области можно объединить, переведя модуль памяти в соответствующий режим (Unified).
В отличие от ARM, где нет возможности управления памятью, интерфейс I-SRAM позволяет использовать память программ для хранения энергонезависимых данных. Также SRAM позволяет прерывать длительные транзакции или отменять выполнение транзакции на любой стадии конвейера и мгновенно реагировать на внешние события, такие как исключения и пре-
рывания (EJTAG).
Еще одна уникальная особенность MIPS32 — аппаратнопрограммный модуль CorExtend, позволяющий добавлять собственные устройства и расширять набор инструкций пользовательскими командами UDI. Это позволяет осуществлять тонкую оптимизацию всех «проблемных» мест системы, ускорив работу приложения. Например, с помощью CorExtend можно реализовать блок обработки графики, TCP/IP ускоритель, логические схемы безопасности и криптографии, беспроводное управление или интерфейс реального времени.
Модульность архитектуры М4К делает ее очень гибкой. Из большого количества опциональных блоков можно выбрать нужные, сократив количество вентилей и, соответственно, размер кристалла и энергопотребление. К таким блокам относятся модуль отслеживания и отладки (EJTAG), интерфейс для сопроцессора и расширения CorExtend. Кроме того, предусмотрены возможности подключения и отключения функций отладки, установки точек останова, а также выбор количества файлов регистров, скорости работы MDU и типа интерфейса SRAM. Все это позволяет варьировать характеристики ядра, в первую очередь быстродействие, в широких пределах.
Немаловажное значение имеет набор аппаратных и программных инструментов, которые предлагаются производителем для упрощения разработки, ускорения тестирования и оценки конечного проекта. Среди них можно отметить отладочный щуп EJTAG SystemNavigator™, набор инструментов GNU с поддержкой ОСРВ и Linux, симуляторы CycleAccurate и
123
InstructionAccurate, оценочные платы и пакет NavigatorIntegratedComponentSuite. Помимо этого компания
MIPS Technologies предлагает программную среду разработки с поддержкой всего спектра инструментов для MIPS. Наконец, создано сообщество сторонних производителей средств разработки. Вместе эти инструменты обеспечивают всестороннюю и полную поддержку проектирования на базе MIPS.
124
ПРИЛОЖЕНИЕ
Таблица П1 Инструкции, отсортированные по полю opcode
125
Продолжение табл.П1
126
Продолжение табл. П1
127
Таблица П2 Инструкции типа R, отсортированные по полю funct
128
Продолжение табл. П2
129
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1.Дэвид М. Хэррис, Сара Л. Харрис. Цифровая схемотехника и архитектура компьютера. ДМК-Пресс, 2017, 772 с.
2.Паттерсон Д., Хеннеси Д., Архитектура компьютеров
ипроектирование компьютерных систем, 4-е изд., СПб. Питер,
2012, 784 с., ISBN 978-5-459-00291-1
3.Попов А.Ю. Организация суперскалярных процессоров [Электронный ресурс]: учебное пособие по курсу «Организация ЭВМ»/ А.Ю. Попов— Электрон. текстовые данные.— М.: Московский государственный технический университет имени Н.Э. Баумана, 2011.— 60 c.— Режим доступа: http://www.iprbookshop.ru/31132.html.— ЭБС «IPRbooks»
4.Таненбаум Э.С., Архитектура компьютера, 5-е изд. -
СПб.: 2007. — 844 с.
5.Угрюмов Е.П. Цифровая схемотехника.Уч пособие для ВУЗов. 2-е изд. – СПб.: БХВ-Петербург,2007.-800с.
6.Dominic Sweetman. See MIPS Run, 2nd edition. — Morgan Kaufmann Publishers. — ISBN 0-12088-421-6.
7.Dominic Sweetman. See MIPS Run. — Morgan Kaufmann Publishers. — ISBN 1-55860-410-3.
8.EduMIPS64 Free cross-platform educational MIPS64 CPU Simulator, http://www.edumips.org
9.Erin Farquhar. MIPS Programmer's Handbook. — Morgan Kaufmann Publishers. — ISBN 1-55860-297-6.
10.MARS (MIPS Assembler and Runtime Simulator) An IDE for MIPS Assembly Language Programming, http://courses.missouristate.edu/KenVollmar/Mars
11.MARS: An Education-Oriented MIPS Assembly Language Simulator, cs.missouristate.edu/~vollmar/MARS/fp288vollmar.pdf.
12.MIPS32 Instruction Set Quick Reference, https://imagination-technologies-cloudfront- asets.s3.amazonaws.com/documentation/MD00565-2B-MIPS32- QRC-01.01.pdf
130