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

Переключение так же плохо, как если бы?
Я читал в StackOverflow, что с помощью if(someCondition) { someCode(); } else { alternateCode(); } может быть неэффективным из-за подверженности неправильному предсказанию перехода (см., например, этот вопрос ). То же самое и с...
263 просмотров

Ошибочные предсказания ветвей
Этот вопрос может показаться глупым, но я все равно его задам. Я слышал о предсказании переходов от этот ответ Mysticial , и я хочу знать, возможно ли следующее Допустим, у меня есть этот фрагмент кода C++ while(memoryAddress =...
499 просмотров
schedule 19.10.2022

предсказание ветвления против предсказания цели ветвления
Правильно ли я понял, что операторы if больше зависят от предсказания ветвления, а поиск в v-таблице больше зависит от предсказания цели ветвления? Что касается v-таблиц, то нет «предсказания ветвей», только целевое предсказание? Попытка понять,...
849 просмотров

Где/как хранятся данные предсказания переходов?
Мне всегда было интересно, где/как хранятся данные прогноза? Есть ли предел? Это только последние ветки? Меня больше всего беспокоит архитектура Intel, но все, что я могу узнать о любой архитектуре, ценится.
640 просмотров
schedule 21.08.2023

Сбрасывает ли ошибочное предсказание ветвление весь конвейер, даже для очень короткого тела оператора if?
Все, что я читал, похоже, указывает на то, что неверное предсказание ветвления всегда приводит к очистке всего конвейера, что означает много потраченных впустую циклов. Я никогда не слышал, чтобы кто-нибудь упоминал какие-либо исключения для коротких...
5416 просмотров

Очередь инструкций процессоров Intel обеспечивает предсказание статического перехода?
В томе 3 руководств Intel содержится описание счетчика аппаратных событий: BACLEAR_FORCE_IQ Подсчитывает, сколько раз BACLEAR был принудительно инициирован очередью инструкций. IQ также отвечает за обеспечение направления условного...
675 просмотров

Программирование с учетом филиалов
Я читаю о том, что неправильное предсказание ветвления может стать узким местом для производительности приложения. Как я вижу, люди часто показывают код сборки , который раскрывает проблему и заявляет, что программисты обычно могут предсказать, где...
6728 просмотров

предсказание ветвлений и объявление переменных
Как я понимаю, если у меня есть: if(case 1) { char x[] = "1"; printf("%s",x); } else if(case 2) { char x[] = "12"; printf("blah-blah-blah\n"); printf("%s",x); } тогда мой компилятор попытается предсказать ветку, в которую войдет...
106 просмотров
schedule 27.10.2023

Найдите размер целевого буфера ветки (BTB)
Можно ли каким-либо образом перепроектировать организацию предсказателя ветвления процессоров, чтобы найти размер целевого буфера ветвления (BTB) с помощью программы C? Если да, то есть ли у вас идеи, какой должна быть программа? Я могу...
462 просмотров

Дорогой прыжок с GCC 5.4.0
У меня была функция, которая выглядела так (показывала только важную часть): double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int shiftY) { ... for(std::size_t...
9870 просмотров

Почему логический оператор короткого замыкания должен быть быстрее
Этот вопрос касается не оптимизации кода, а технического вопроса о разнице в производительности логических операторов короткого замыкания и обычных логических операторов, которые могут сводиться к тому, как они выполняются на аппаратном уровне. В...
359 просмотров

Как предсказание ветвления взаимодействует с указателем инструкции
Насколько я понимаю, в начале конвейера процессора указатель инструкции (который указывает на адрес следующей инструкции для выполнения) обновляется предсказателем ветвления после выборки, так что этот новый адрес можно затем получить в следующем...
298 просмотров

Как ускорить динамическую отправку на 20% с помощью вычисленных gotos в стандартном C ++
Прежде чем проголосовать против или начать говорить, что goto ing является злом и устаревшим, пожалуйста, прочтите обоснование того, почему он жизнеспособен в данном случае. Прежде чем пометить его как дубликат, прочтите вопрос полностью. Я читал...
656 просмотров

Как именно работает статическое предсказание? а что такое слоты задержки?
Я знаю, что невыполненный прогноз всегда предполагает, что ветвление не выполнено, поэтому ПК продолжает работать нормально, если не доказано, что ветвление выполнено, поэтому удалите все инструкции за ветвью в конвейере (при условии, что ветвь...
26 просмотров

Cortex M4: инструкция cmp нарушена?
Это круто, и я чешу в затылке. Настраивать: Микроконтроллер ARM Cortex M4 (PAC5532). Отладчик Segger J-Link Plus. Компилятор GCC 7.2.0 GDB 8.0.1 Скомпилировано с -O0 (без оптимизации) Вот код. Это часть логики противодействия входу...
118 просмотров
schedule 04.02.2022

Правильное использование C++20 `[вероятно]]`/`[[маловероятно]]` в операторах `switch`
C++20 имеет удобные атрибуты [[likely]] / [[unlikely]] , которые определяют генерацию кода. Например, вы можете указать ветку, которая, вероятно, будет выбрана: if (b) [[likely]] { /*...*/ } Точно так же можно использовать эти атрибуты в...
172 просмотров

Почему безусловные переходы занимают место в BTB?
https://blog.cloudflare.com/branch-predictor/ содержит отличный анализ производительность филиалов на современном оборудовании. Одна вещь, которая меня удивила, заключалась в том, что безусловные переходы занимают место в целевом буфере...
22 просмотров