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

У меня проблемы с реализацией инструкции jrlti. Я не имею права изменять ALU, поэтому он должен оставаться без изменений.

Вот как определяется инструкция:

[rs]

Где находится сравнение [rs]

This is the standard datapath I'm using

This is what I tried to do

Как я могу сделать ПК = [rt], а затем ПК = ПК + 4 Пожалуйста, исправьте меня в любом неверном предположении, которое я мог сделать, пытаясь выполнить инструкцию.

1 Ответ

1 голос
/ 16 апреля 2019

Очевидно, что если вы используете ALU для сравнения, вы не можете использовать его ни для чего другого, поскольку вы используете архитектуру с одним циклом, и вы должны найти другой путь.

Сравнение выполняется между SrcA (RD1) и Imm16.Таким образом, регистр для записи на ПК для перехода в RD2.

В настоящее время нет пути между RD2 и ПК.Единственные пути из RD2 ведут в память или на вход ALU.Таким образом, вы должны добавить путь между RD2 и ПК.

Есть несколько способов сделать это, но более простым является добавить мультиплексор сразу после PCBranch, который будет приводить к ПК либо адрес, вычисленный для ветвей, либо регистр RD2 для этой новой инструкции.В обеих ситуациях один и тот же сигнал (выход сравнения ALU) используется для управления тем, какое значение записывается на ПК.

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

...