Вопросы с тегом '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 в 12:08
1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Прогнозы ветвей были рассмотрены пару раз в StackOverflow. Однако я специально не нашел ответ на то, что я ищу. Во время фазы оптимизации мне нужно избегать неверного предсказания отрасли. И у меня есть ряд проверок, которые мне нужно сделать. Это вы...
05 янв. '18 в 21: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 в 7:53
1

С++ 20: разница между [[вероятным]], [[маловероятным]] и __builtin_expect?

Предварительная информация: согласно последнему отчету о поездке комитета ISO C++ атрибуты [[ likely ]] и [[ unlikely ]] для условного ветвления будут добавлены в C++20 и доступны в самой последней версии GNU GCC ( вы можете поиграть с ним на онлайн...
18 июл. '19 в 12:22
1

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

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