Описание тега branch-prediction
In computer architecture, a branch predictor is a digital circuit that tries to guess which way a branch (e.g. an if-then-else structure) will go before this is known for sure. The purpose of the branch predictor is to improve the flow in the instruction pipeline. Branch predictors play a critical role in achieving high effective performance in many modern pipelined microprocessor architectures such as x86.
2
ответа
Безотраслевой способ условно очистки реестра
Существует ли способ ветвления для очистки 32-битного регистра в зависимости от состояния регистра состояния? Это может быть достигнуто с помощью дополнительного четкого регистра и CMOVcc, но это слишком дорого для x86 в 32-битном режиме для меня. г…
10 фев '18 в 17:49
4
ответа
Прогноз ветвления в цикле Java для
Я видел этот комментарий рядом с if состояние: // branch prediction favors most often used condition в исходном коде JavaFX SkinBase учебный класс. protected double computeMinWidth(double height, double topInset, double rightInset, double bottomInse…
21 май '15 в 09:44
1
ответ
Небольшие ветки в современных процессорах
Как современные процессоры, такие как Kaby Lake, справляются с небольшими ветвями? (в приведенном ниже коде это переход к метке LBB1_67). Из того, что я знаю, ветвь не будет вредной, потому что переход уступает 16-байтовому размеру блока, который яв…
02 мар '19 в 22:58
0
ответов
Какие процессоры лучше?
Почему компьютерные архитекторы уделяют больше внимания точности предиктора ветвления динамического процессора не по порядку, чем предиктора ветвления простого пятиступенчатого процессора по порядку?
25 янв '15 в 17:45
2
ответа
Лучшее ожидание от C++ вероятно
В соответствии с C++ предсказание с учетом ветвлений, я подготовил тест, чтобы увидеть, насколько он эффективен. Итак, в контрольном образце я пишу: int count=0; for (auto _ : state) { if(count%13==0) { count+=2; } else count++; benchmark::DoNotOpti…
27 сен '18 в 14:40
1
ответ
Использование __builtin_expected для проверки границ
У меня есть эта функция, которая, учитывая код Грея, возвращает следующий код Грея. Вы можете найти более полное объяснение о том, как это работает здесь. Дело в том, что я хотел сделать эту функцию приращения модульной, чтобы приращение кода Грея с…
17 июн '15 в 09:31
4
ответа
C/C++ наиболее эффективен, если оценка оператора
X верно в 99,9% случаев, но мне также нужно справиться с Y и Z. Хотя тело условия X пусто, я думаю, что это должно быть быстрее, чем проверка 2 других условий Y и Z, если условие X опущено. Как вы думаете? if (likely(X)) { } else if (unlikely(Y)) { …
19 янв '12 в 21:45
1
ответ
Превращение цикла в арифметику для ускорения функции
Привет, я нахожусь на пути к оптимизации функции, которая должна дать мне "что-то следующее". Пока что у меня есть int fun(int a){ const int k = ...; for(;test_value(a++) != k;); return a; } Это был быстрый и грязный способ проверить, что мой алгори…
09 апр '16 в 14:21
1
ответ
Реализация предиктора ветки персептрона в C
Я читал газету http://www.cs.utexas.edu/~lin/papers/hpca01.pdf, посвященную прогнозированию динамических ветвлений с помощью персептронов. Мне было интересно, как реализовать предиктор ветвления персептрона в C, если ему дан список из 1000 адресов П…
29 окт '13 в 02:18
1
ответ
Почему бы просто не предсказать обе ветви?
Процессор использует предсказание ветвления для ускорения кода, но только в том случае, если первая ветвь фактически взята. Почему бы просто не взять обе ветви? То есть, предположим, что обе ветви будут поражены, кешировать обе стороны, а при необхо…
03 апр '18 в 03:56
0
ответов
Можно ли предоставить подсказки веток в коде asm.js?
Я JITing язык высокого уровня в asm.js. Для данной функции я JITing, у меня есть информация в точках ветвления относительно того, берется ли ветвь или нет. Можно ли изменить порядок условных операторов asm.js, чтобы воспользоваться этой информацией?…
14 май '16 в 04:34
2
ответа
Позднее обновление lhr / ghr в длинном конвейере
Мне интересно, является ли это жизнеспособным сценарием в длинных конвейерах, когда младшая инструкция ветвления уже обрабатывается механизмом предсказания ветвления, но соответствующий lhr (или ghr, в зависимости от реализации) все еще не обновлен …
06 сен '16 в 20:37
1
ответ
Имеет ли Python прогноз ветвления?
Я реализовал физическое моделирование в Python (большая часть тяжелой работы в любом случае выполняется в числовых библиотеках, поэтому производительность достаточно хорошая). Теперь, когда проект немного вырос, я добавил дополнительную функциональн…
26 окт '18 в 09:14
1
ответ
Размер BTB для Haswell, Sandy Bridge, Ivy Bridge и Skylake?
Есть ли какой-нибудь способ определить или какой-нибудь ресурс, где я могу найти размер целевого буфера филиала для процессоров Haswell, Sandy Bridge, Ivy Bridge и Skylake Intel?
21 июл '16 в 19:33
1
ответ
Откуда предсказатель ветки узнал, что сделал неверное предположение?
Мой вопрос исходит из ответа Мистикала. Как я понял, у вас есть инструкция перехода, она может либо перейти к другой инструкции, скажем, как, 0x123344 или он может продолжать выполняться. Если предсказатель ветвления делает предположение на основе л…
12 июл '12 в 17:02
1
ответ
Когда будет полезно динамическое предсказание ветвления?
Для статического предсказания ветвления всегда предполагается, что ветвление не занято, в то время как для динамического предсказания ветвления, если ветвление берется раньше, тогда более вероятно, что оно будет взято снова. Но я не могу придумать с…
15 дек '18 в 16:10
1
ответ
Предсказание ветвлений и оптимизированный код
У меня есть следующий набор блоков кода, назначение обоих блоков одинаково. Мне пришлось реализовать 2-й блок, чтобы избежать обратной логики и повысить читабельность. Кстати, в производственном коде условие очень сложное. Вопрос - я знаю, что ветвл…
23 янв '18 в 15:19
0
ответов
__builtin_expect - как определить, влияет ли это на мой процессор?
Я понимаю, что это делает: Встроенная функция: long __builtin_expect (long exp, long c) но я не знаю, как определить, действительно ли это влияет на мой процессор. Будет ли это отображаться в сборке?
05 фев '19 в 18:34
3
ответа
Внутренняя работа Призрака (v2)
Я немного читал о Spectre v2, и, очевидно, вы получите нетехнические объяснения. У Питера Кордеса есть более глубокое объяснение, но он не полностью рассматривает некоторые детали. Примечание: я никогда не проводил атаку Spectre v2, поэтому у меня н…
05 фев '19 в 18:49
3
ответа
gpgpu: Почему мы не нуждаемся в предсказании ветвления в многопоточности мелкого зерна?
Когда волновой фронт выполняется, он обеспечивает тонкозернистую многопоточность. Одним из последствий этого является отсутствие требования прогнозирования ветвления, как показано на следующем слайде: Но я не могу этого понять. Может кто-нибудь объя…
24 авг '14 в 17:40