#mips #cpu-architecture
#mips #архитектура процессора
Вопрос:
У меня возникли проблемы с реализацией инструкции jrlti. Я не имею права изменять ALU, поэтому он должен оставаться нетронутым.
Вот как определяется инструкция:
[rs] < SignImm ? PC = [rt]: PC = PC 4
Где обрабатывается сравнение [rs] < SignImm в пути данных за один цикл mips? Использую ли я ALU для ее обработки, если да, то как? Какую часть я должен добавить.
Как я могу выполнить PC = [rt], а не PC = PC 4 Пожалуйста, поправьте меня на любое ложное предположение, которое я, возможно, сделал при попытке реализовать инструкцию.
Ответ №1:
Очевидно, что если вы используете ALU для сравнения, вы не сможете использовать его ни для чего другого, поскольку вы используете архитектуру с одним циклом, и вы должны найти другой путь.
Сравнение выполняется между srcA (RD1) и Imm16. Таким образом, регистр для записи на ПК для перехода находится в RD2.
В настоящее время нет пути между RD2 и ПК. Единственные пути от RD2 ведут к памяти или входу ALU. Итак, вы должны добавить путь между RD2 и ПК.
Есть несколько способов сделать это, но проще всего добавить мультиплексор сразу после PCBranch, и он передаст на ПК либо адрес, вычисленный для ветвей, либо регистр RD2 для этой новой инструкции. В обеих ситуациях один и тот же сигнал (вывод сравнения ALU) используется для управления тем, какое значение записывается на ПК.
Также необходимо внести изменения в блок управления с помощью дополнительного сигнала для управления этим мультиплексором.