Об опасности данных и пересылке с помощью beq в MIPS? - PullRequest
0 голосов
/ 08 января 2019

Почему первый add нуждается в пересылке?

                    # stage:
add $1, $2, $3      # WB
add $4, $5, $6      # MEM
nop                 # EX
beq $1, $4, target  # ID

Поскольку beq требуется $1, если первый add собирается выполнить WB-этап, разве не требуется переадресация с beq на ID-этапе, который собирается прочитать регистр файл? В моей книге говорится, что вторая и третья инструкции перед beq потребуют пересылки во избежание опасности данных.


Редактировать : Я нашел именно то, что имел в виду на эту ссылку слайд страница 11 ; Еще один слайд, который решает мою другую путаницу, что первый add не нужен, - это другая техника специальное оборудование, страница слайда 58 .

1 Ответ

0 голосов
/ 08 января 2019

В синхронной цифровой системе во время цикла есть две разные фазы. На первом этапе операнды читаются и преобразуются с помощью операторов. На втором этапе результирующие данные записываются в регистры. В зависимости от реализации эти фазы могут соответствовать первому и второму полупериоду или полному периоду и переднему фронту часов.

В любом случае, важным аспектом является то, что можно прочитать (на первом этапе) и изменить (в конце) один и тот же регистр. Вот почему можно делать такие действия, как

pc <= pc+4

за один цикл.

В проблеме, которую вы поднимаете, именно так и происходит.

Акция

  add $1, $2, $3      # WB

будет считывать регистр конвейера с результатом на первом этапе и записывать в $ 1 в конце цикла. в то время как

 beq $1, $4, target  # ID

будет читать $ 1 и $ 4 на первом этапе и записывать результат, который ppline регистрирует в конце цикла. Следовательно, без пересылки будет записано предыдущее значение $ 1.

(отредактировано в соответствии с комментариями ниже)

Все эти объяснения верны, если ветвь имеет дело со стандартным HW. В этом случае сравнение выполняется ALU на этапе «EX», а компьютер обновляется в конце этого этапа.

Но это приводит к штрафу за ветвь в два цикла. Чтобы уменьшить этот штраф, можно добавить HW, чтобы выполнить сравнение на этапе идентификации. В этом случае, если для сравнения требуется вычислить значение (например, $ 1 в вашем примере), потребуется остановка.

...