Как я могу реализовать инструкцию jrlti (переходный регистр, если меньше, чем немедленный) в пути данных за один цикл MIPS?

#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) используется для управления тем, какое значение записывается на ПК.

Также необходимо внести изменения в блок управления с помощью дополнительного сигнала для управления этим мультиплексором.