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

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

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

Вот кусок кода на С++, который кажется очень своеобразным. По какой-то странной причине сортировка данных чудом делает код почти в шесть раз быстрее. #include <algorithm> #include <ctime> #include <iostream> int main() { // Ge...
27 июня '12 в 16:51
5 отв.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Является ли "==" в отсортированном массиве не быстрее, чем несортированный массив?

Примечание: предполагаемый дублирующий вопрос, я думаю, в основном связан с "<" и " > " сравнение, но не сравнение "==" и, следовательно, не отвечает на мой вопрос об эффективности оператора "==" . Долгое время я считал, что "обработка"...
18 авг. '15 в 6:51