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

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

Почему обработка отсортированного массива быстрее, чем обработка несортированного массива?

Вот фрагмент кода C++, который демонстрирует очень специфическое поведение. По какой-то странной причине сортировка данных чудесным образом делает код почти в шесть раз быстрее: #include <algorithm> #include <ctime> #include <iostream...
27 июн. '12 в 13:51
5

Почему (a * b!= 0) быстрее, чем (a!= 0 && b!= 0) в Java?

Я пишу какой-то код на Java, где в какой-то момент поток программы определяется тем, являются ли две переменные int "a" и "b" ненулевыми (примечание: a и b никогда не отрицательный и никогда не должен находиться в пределах целых чисел переполнени...
21 февр. '16 в 1:51
10

Каков эффект упорядочения, если... else, если утверждения по вероятности?

В частности, если у меня есть ряд операторов if... else if, и я как-то заранее знаю относительную вероятность того, что каждый оператор будет оценивать до true, насколько разница в времени выполнения делает это сортировать их в порядке вероятности? ...
19 окт. '17 в 15:17
7

Есть ли подсказка компилятора для GCC, чтобы заставить предсказание ветвей всегда идти определенным образом?

Для архитектуры Intel существует ли способ дать указание компилятору GCC генерировать код, который всегда форсирует предсказание ветвлений определенным образом в моем коде? Поддерживает ли это оборудование Intel? Как насчет других компиляторов или ап...
08 мая '15 в 18:54
5

Почему условный ход не уязвим для отказа от ветвления?

Прочитав этот пост (ответ на Qaru) (в разделе по оптимизации), мне стало интересно, почему условные перемещения не уязвимы для ошибки прогнозирования ветвлений. Я нашел на статью о перемещении cond здесь (PDF от AMD). Кроме того, они заявляют о преим...
02 янв. '13 в 23:52
7

В Java может & быть быстрее, чем &&?

В этом коде: if (value >= x && value <= y) { когда value >= x и value <= y являются такими же правдоподобными, как false, без определенного шаблона, использование оператора & выполняется быстрее, чем использование &&a...
20 сент. '16 в 7:34
5

Когда потоки должны быть предпочтительнее традиционных циклов для лучшей производительности? Используют ли потоки преимущества предсказания ветвей?

Я только что прочитал о Branch-Prediction и хотел попробовать, как это работает с потоками Java 8. Однако производительность с Streams всегда оказывается хуже традиционных циклов. int totalSize = 32768; int filterValue = 1280; int[] array = new in...
22 дек. '16 в 8:26
5

Переносные подсказки для прогнозирования отрасли

Есть ли какой-либо переносной способ подсказки предсказания ветвления? Рассмотрим следующий пример: if (unlikely_condition) { /* ..A.. */ } else { /* ..B.. */ } Разве это не так: if (!unlikely_condition) { /* ..B.. */ } else...
13 сент. '10 в 17:35
8

Программирование с учетом веток

Я читаю, что неверное предсказание отрасли может быть горячим узким местом для работы приложения. Как я вижу, люди часто показывают ассемблерный код, который раскрывает эту проблему, и заявляет, что программисты обычно могут предсказать, где ветка мо...
15 сент. '15 в 8:48
5

Почему эта функция С++ выдает так много неверных прогнозов отрасли?

Пусть A - массив, содержащий нечетное число нулей и единиц. Если n - размер A, то A построен таким образом, что первые ceil(n/2) элементы 0, а остальные элементы 1. Итак, если n = 9, A будет выглядеть так: 0,0,0,0,0,1,1,1,1 Цель состоит в том, ...
15 сент. '16 в 14:44
2

Внутреннее слияние без ветвей медленнее, чем внутреннее слияние с ветвью

Недавно я спросил вопрос в обзоре кода, чтобы просмотреть алгоритм сортировки с именем QuickMergeSort. Я не буду вдаваться в подробности, но в какой-то момент алгоритм выполняет внутренний слияние: вместо использования дополнительной памяти для хране...
13 дек. '16 в 19:53
2

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

Из моего университетского курса я слышал, что по соглашению лучше разместить более вероятное условие в if, а не в else, что может помочь предсказателю статической ветки. Например: if (check_collision(player, enemy)) { // very unlikely to be true ...
26 янв. '17 в 18:49
4

Отраслевое предсказание и разделение на ноль

Я писал код, который выглядел следующим образом: if(denominator == 0){ return false; } int result = value / denominator; ... когда я думал о ветвящем поведении в CPU. qaru.site/questions/1/... В этом ответе говорится, что ЦП будет пытаться п...
03 авг. '15 в 8:22
4

Оптимизация производительности сборки x86-64 - Выравнивание и прогнозирование ветвлений

Im в настоящее время кодирует высоко оптимизированные версии некоторых стандартных функций библиотеки библиотеки C99, таких как strlen(), memset() и т.д., используя сборку x86-64 с инструкциями SSE-2. Пока мне удалось добиться отличных результатов ...
07 авг. '13 в 21:18
5

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

Из-за огромного влияния на производительность я никогда не задаюсь вопросом, имеет ли мой текущий рабочий стол процессор с предсказанием ветвлений. Конечно. Но как насчет различных предложений ARM? У iPhone или Android-телефонов есть предсказание о в...
23 нояб. '11 в 11:31