Насколько распространено прогнозирование ветвлений на современных процессорах? - PullRequest
26 голосов
/ 23 ноября 2011

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

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

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

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

Ответы [ 5 ]

10 голосов
/ 23 ноября 2011

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

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

10 голосов
/ 19 февраля 2012

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

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

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

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

4 голосов
/ 16 марта 2014

Прогноз ветвления становится все более важным и подчеркивается, в то время как ARM становится все более сложным.

Например, новая 64-битная архитектура ARM под названием ARMv8 отбрасывает большую часть использования условного выполнения (в основном из-за ограничений пространства кодирования команд с увеличениемчисло регистров) и опирается на прогнозирование ветвлений для поддержания производительности на приемлемом уровне.

Даже для более новых устройств ARMv7-a вы можете проверять ужасные случаи, такие как вопрос о несортированных данных в SO , который прогнозирует переходулучшение около 3х.

0 голосов
/ 19 мая 2014

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

Можно ожидать, что любой сервер будет иметь динамическое предсказание ветвления, в том числе настольные компьютеры, в прошлых встроенных системах, таких как микросхемы ARM в современных смартфонах, не было предсказаний ветвления, поскольку они имели меньшие конвейеры и не имеливыполнение заказа, но поскольку закон Мура дает нам больше транзисторов на область, вы увидите, что все больше и больше процессоров расширяют свою архитектуру.Таким образом, чтобы ответить на ваш вопрос, помимо очевидного поиска спецификаций ЦП, вы можете рассчитывать на предсказание ветвления для чипов 32 бит, более крупных конвейеров, вне очереди.Самые последние чипы от ARM движутся в каком-то уровне в этом направлении.

0 голосов
/ 23 ноября 2011

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

...