Любой ЦП с конвейером за несколько этапов требует, по крайней мере, некоторого предсказания примитивного перехода, в противном случае он может остановить ожидание результатов вычислений, чтобы решить, каким путем идти.Intel Atom представляет собой ядро в порядке, но с довольно глубоким конвейером, и поэтому для него требуется довольно приличный предсказатель ветвления.
Старые разработки ARM 7 были всего тремя этапами.Объедините это с такими вещами, как интервалы задержки перехода (требуется для MIPS, необязательно для SPARC) и прогнозирование перехода не очень полезно.
Кстати, когда MIPS решил повысить производительность, выйдя за пределы 4 этапов конвейера,Слот задержки ветки стал раздражением.В оригинальном дизайне это было необходимо, потому что не было предсказателя ветвлений.Следовательно, вы должны были упорядочить инструкцию ветвления до последней инструкции, выполняемой перед ветвью.При использовании более длинного конвейера им требовался предиктор ветвления, что устраняло необходимость в слоте задержки ветвления, но им все равно приходилось эмулировать его для запуска старого кода.
Проблема со слотом задержки ветвления заключается в том, что онможно заполнить только полезной инструкцией примерно в 50% случаев.В остальное время вы либо заполняете его инструкцией, результат которой, вероятно, будет отброшен, либо используете NO-OP.