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

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

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

Вот кусок кода на С++, который кажется очень своеобразным. По какой-то странной причине сортировка данных чудом делает код почти в шесть раз быстрее. #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
8
ответов

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

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

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

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

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

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

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

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

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

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