Архитектура MIPS: что произойдет, если r1 не равно r3 при выполнении чего-то вроде beq r1, r3,00? - PullRequest
0 голосов
/ 20 апреля 2020

Какая инструкция поступит в конвейер и что будет с этими инструкциями, уже загруженными и в конвейере?

1 Ответ

0 голосов
/ 20 апреля 2020

Это зависит от реализации процессора.

Некоторые процессоры предсказывали бы, что ветвь провалится, а не будет взята. В случае вашего вопроса такой процессор, который правильно предсказал, не будет подвергаться штрафу.

Сложность механизма прогнозирования и время определения успешного / неудачного прогнозирования сильно различаются. В случае неправильного прогноза один или несколько циклов могут быть потеряны, но, опять же, это зависит от реализации, и за многие годы их было много для MIPS.

За прошедшие годы прогноз улучшился от простого прогнозирования (все ответвления: прогнозирование не принято) до использования динамического прогнозирования на основе истории. В некоторой эволюции, делая динамическое предсказание, этап, который фактически делает предсказание, также перемещался назад в конвейере. Кроме того, этап конвейера, который в конечном итоге решает фактическое ответвление / не решение, также перемещается назад в конвейере. Эти улучшения ограничивают количество ошибочных прогнозов, а также потерянных циклов ошибочного прогноза.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...