Насколько распространено прогнозирование ветвления на текущих процессорах?

Из-за огромного влияния на производительность я никогда не задумываюсь, есть ли у моего текущего настольного процессора предсказание ветвления. Конечно, есть.Но как насчет различных предложений ARM? Есть ли у iPhone или Android-телефонов предсказание ветвления? Старая Nintendo DS? Как насчет Wii на базе PowerPC? PS 3?

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

Какое пороговое значение для процессоров с предсказанием ветвлений? В ручном калькуляторе десятилетней давности его явно нет, а в моем настольном. Но может ли кто-нибудь более четко обозначить, где можно ожидать динамического предсказания ветвления?

Если это неясно, я говорю о типе предсказания, при котором условие меняется, варьируя ожидаемый путь во время выполнения.

26
задан auselen 6 September 2012 в 09:11
поделиться

2 ответа

Любой ЦП с конвейером за несколько стадий требует, по крайней мере, некоторого примитивного предсказания ветвления, в противном случае он может затормозить в ожидании результатов вычисления, чтобы решить, каким путем идти. Intel Atom представляет собой ядро ​​в порядке, но с довольно глубоким конвейером, и поэтому для него требуется довольно приличный предсказатель ветвления.

Старые проекты ARM 7 были только три этапа. Объедините это с такими вещами, как интервалы задержки ветвления (требуются в MIPS, необязательны в SPARC) и предсказание ветвлений не так полезно.

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

Проблема с интервалом задержки ветвления состоит в том, что он может быть заполнен только полезной инструкцией примерно в 50% случаев. В остальное время вы либо заполняете его инструкцией, результат которой, вероятно, будет отброшен, либо используете NO-OP.

10
ответ дан 28 November 2019 в 17:17
поделиться

Не так много для ARM Cortex-A8 (хотя у него есть некоторое предсказание ветвления), но я считаю, что Cortex-A9 является суперскалярным не по порядку со сложным предсказанием ветвления.

0
ответ дан 28 November 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: