Вопросы с тегом 'branch-prediction'

В компьютерной архитектуре предсказатель ветвления представляет собой цифровую схему, которая пытается угадать, к какой ветке (например, структура if-then-else) будет идти, прежде чем это будет известно наверняка. Целью прогнозирования ветвей является улучшение потока в конвейере команд. Отраслевые предиктора играют решающую роль в достижении высокой эффективности во многих современных конвейерных микропроцессорных архитектурах, таких как x86.
0 отв.

Восстановить буфер стека?

Как я понял, Buffer Stack Buffer поддерживает только 4-16 записей (из wiki: http://en.wikipedia.org/wiki/Branch_predictor#Prediction_of_function_returns) и не является парой ключей- значение (на основе индексации по положению команды ret). Это правда...
05 дек. '12 в 15:08
1 отв.

Насколько велик буфер прогнозирования ветвлений для типичного современного процессора?

Приложение, с которым я имею дело, имеет большое количество if-операторов с характеристиками, которые в любом одном исполнении, только одна из ветвей выполняется в 90% случаев. Теперь я могу проверить влияние предсказания ветвления на один оператор ...
10 сент. '12 в 18:59
2 отв.

Есть ли способ получить RTTI непосредственно в С++ для улучшения прогноза ветвления в виртуальных вызовах?

Итак, я создаю библиотеку, которая будет иметь класс someBase {}; который будет выведен нижестоящими пользователями в нескольких классах. class someBase { public: virtual void foo()=0; }; То, что у меня также есть, является вектором указател...
19 сент. '12 в 23:01
2 отв.

Как быстро сделать этот python script? (сравнительный анализ, связанный с предсказанием отрасли от должности отсюда)

Из здесь - проблема прогнозирования ветвления, я начал писать версию программы Python для проверки времени выполнения отсортированных/несортированных версий в Python. Сначала я попробовал отсортировать. Здесь код: import time from random import * ...
21 сент. '12 в 15:41
1 отв.

Дополнительный условный оператор ускоряет выполнение программы

После прочтения Почему быстрее обрабатывается отсортированный массив, чем несортированный массив?, я добавил еще один тест в первичном цикле. Кажется, что этот дополнительный тест ускоряет выполнение программы. int main() { // Generate data ...
01 дек. '12 в 23:29
3 отв.

Реалистичные примеры оптимизации путем удаления веток

Согласно Intel, удаление ветки является одним из наиболее эффективных способов оптимизации кода C для использования в узких циклах. Однако примеры на связанной странице только охватывают цикл разворачивания и перемещения инвариантных ветвей вне петел...
04 мая '13 в 1:39
0 отв.

Weird Infinite Loop (gcc 4.7.3, ошибка компилятора?)

У меня есть следующий код: Где я тупо перебираю контейнер (самозапись). Если я скомпилирую эту функцию с помощью cout, она будет работать, и программа завершится правильно после итерации! Примечание: cout не вмешивается в самодельный контейнер! ...
04 июня '14 в 20:44
3 отв.

прогнозирование ветвления на указателе функции

У меня есть цикл, который работает снова и снова. Логика внутри этого цикла зависит от режима, в котором находится программа. Чтобы повысить производительность, я думал, что массив указателей функций можно инициализировать, functionPtr [], так что пр...
07 окт. '14 в 18:29
2 отв.

Филиал "Ожидание" в современных процессорах

Недавно я думал о предсказании ветвей в современных процессорах. Насколько я понимаю, требуется предсказание ветвления, потому что при выполнении инструкций в конвейере мы не знаем результат условной операции непосредственно перед тем, как взять ветк...
30 июня '15 в 19:01
2 отв.

Соответствует ли итерация цикла for как ветки?

Когда я программирую в обычный день, я уверен, что все ветки скорее всего не будут приняты. int retval = do_somting(); if(!retval) { /* Less-than-likely event*/ } Это предсказания ветвей оптимистов, в результате чего бит предсказателя процессора у...
26 янв. '17 в 19:03
1 отв.

Почему нужны буферы для целевых буферов для инструкций о неперечислении?

Для конвейера 5-го этапа MIPS цель ветвления известна на этапе декодирования, потому что ее можно легко извлечь, если смещение ветки находится в инструкции, а также вы читаете регистры на этапе декодирования. Итак, тогда для конвейера вне очереди вы...
06 дек. '17 в 3:34
1 отв.

Перспектива предсказания переносимых ветвей в С++

Прогнозы ветвей были рассмотрены пару раз в StackOverflow. Однако я специально не нашел ответ на то, что я ищу. Во время фазы оптимизации мне нужно избегать неверного предсказания отрасли. И у меня есть ряд проверок, которые мне нужно сделать. Это вы...
06 янв. '18 в 0:42
0 отв.

почему процессор "insn за цикл" отличается в аналогичном процессоре и как "MONITOR-MWAIT" работает в Linux?

Справочная информация: у меня есть 2 сервера, все версии ядра ОС 4.18.7, который имеет CONFIG_BPF_SYSCALL = y Я создаю сценарий оболочки "x.sh" i=0 while (( i < 1000000 )) do (( i ++ )) done и выполните команду: perf stat./x.sh вся версия ...
17 янв. '19 в 10:53
1 отв.

Почему бы просто не предсказать обе ветки?

CPU использует предсказание ветвления для ускорения кода, но только если первая ветвь фактически выполнена. Почему бы просто не взять обе ветки? То есть предположим, что обе ветки будут удалены, кэш обеими сторонами, и при необходимости возьмите пра...
03 апр. '18 в 6:56
1 отв.

Как измерить неверные предсказания для отдельной ветки в Linux?

Я знаю, что во время выполнения программы с perf stat я могу получить общий процент неверных предсказаний ветки. Но как я могу получить статистику для конкретной ветки (if или switch в коде C)?
04 нояб. '15 в 16:35