Откуда предсказатель ветки узнал, что сделал неверное предположение?

Мой вопрос исходит из ответа Мистикала. Как я понял, у вас есть инструкция перехода, она может либо перейти к другой инструкции, скажем, как, 0x123344 или он может продолжать выполняться.

Если предсказатель ветвления делает предположение на основе любого из них из прошлых паттернов, как он осознает, что совершил ошибку, и вернул ее?

1 ответ

Решение

Все это происходит от поэтапных процессоров, где части ЦП в прошлом оставались бездействующими, теперь мы максимально используем каждый маленький кусочек. Если бы не было ветвлений или условных событий, это было бы гладко, но время от времени нам нужно менять то, что происходит.

Таким образом, как упомянул Mystical, предсказатель делает предположение, что большую часть времени простоя вычислительная мощность не ждет. Процессор продолжает работу с тем, о чем предполагалось, и когда предыдущая инструкция, которая ожидалась, завершает работу, сравнивается предиктор. Если он угадал, ничего не происходит, если он угадал, посылается сигнал, и этапы после точки прогнозирования отбрасываются и снова запускаются с правильными значениями.

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

Другие вопросы по тегам