Микропрограммирование в MIPS
Я изучаю микропрограммирование и не понимаю, что такое микро-инструкция. Я использую архитектуру MIPS. Мои вопросы следующие
Скажем, например, у меня есть инструкция ДОБАВИТЬ, как бы выглядели микро-инструкции для этого? Сколько есть микро-инструкций для инструкции добавления. Где-нибудь в сети я могу увидеть список микро-инструкций для основных инструкций MIPS?
Как определить битовую строку для микропрограммированной инструкции ADD?
2 ответа
Микропрограммирование - это метод реализации архитектуры сложного набора команд (например, x86) в терминах более простых "микрокоманд". MIPS - это архитектура набора команд RISC, которая обычно не реализуется с помощью микропрограммирования, поэтому для инструкции ADD существуют нулевые микроинструкции.
Чтобы ответить на ваш конкретный вопрос, нужно знать, каково определение вашей конкретной микроархитектуры.
Это пример того, как загрузить EPC
в один из регистров и добавьте в него 4 байта:
lw t0, 20(sp) // Load EPC
addi t0, 4 // Add 4 to the return adress
sw t0, 20(sp) // Save EPC
Существует множество инструкций, которые вы можете использовать, вы можете ознакомиться с инструкцией MIPS здесь. По моему скромному мнению, MIPS действительно опрятен и прост в освоении! Интересным фактом является то, что первая Playstation использовала процессор MIPS.
Пример инструкции
lw
= загрузить словоla
= адрес загрузкиsw
= сохранить словоaddi
добавить добавить
Тогда у вас есть много условных инструкций, таких как:
bne
= ветвь не равнаbnez
= ветвь не равна нулю
И с этим вы используете j
прыгать по адресу.
Вот пример из обработчика исключений, который я однажды написал для MIPS, это обработчик внешнего источника:
External:
mfc0 t0, C0_CAUSE // We could aswell use 24(sp) to load CAUSE
and t0, t0, 0x02000 // Mask the CAUSE
bnez t0, Puls // If the only character left is
// "not equal zero" jump to Puls
j DisMiss // Else jump to DisMiss
В приведенном выше примере я определяю точку входа под названием External
что я могу прыгнуть, как я делаю с DisMiss
Зацикливаясь, вы обычно прыгаете к себе.
Здесь также есть несколько других инструкций:
mfc0
= перейти от сопроцессора 0
Чтобы работать с ярлыками, я бы посоветовал вам проверить этот вопрос / ответ.
Вот пара ресурсов по микропрограммированию с MIPS:
- Некоторая общая информация
- Вот немного более мощная презентация в формате PowerPoint по этому вопросу из Принктона ( PDF)
- Вот статья из другого университета, которая является одной из лучших среди этих трех ( PDF).