Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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