Size: a a a

cxx.Дискуссионная

2021 March 29

AZ

Alexander Zaitsev in cxx.Дискуссионная
Kirill
Объясните в двух словах как работает branch prediction
тебе подкапотный механизм или что он делает?
источник

K

Kirill in cxx.Дискуссионная
Alexander Zaitsev
тебе подкапотный механизм или что он делает?
Что он делает - это понятно из названия. Интересно, как он это делает
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Kirill
Что он делает - это понятно из названия. Интересно, как он это делает
ну в современных процах там какие-то совсем простые нейронки
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
"если 100 раз ты заходил в первую ветку, то и в 101 наверняка тоже в первую зайдешь"
источник

K

Kirill in cxx.Дискуссионная
а как он понимает что предсказание было неправильным?
источник

K

Kirill in cxx.Дискуссионная
то есть, если он на 101 раз зашёл в ветку, а на самом деле ему не надо было в неё заходить, как он это понимает?
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Kirill
то есть, если он на 101 раз зашёл в ветку, а на самом деле ему не надо было в неё заходить, как он это понимает?
ну тут же branch prediction твой нужен для speculative execution
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
а как понимает - он выполнил ветку, а потом на конвейере пришла другая. наверное какой-то механизм фидбэка есть. туда я не копал никогда
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
самому интересно было бы подробно почитать про механизм
источник

PO

PROLOG ONE LOVE in cxx.Дискуссионная
Вроде у амд и самсунгов - нейронки, а у интела - просто табличка подсчитывающая
источник

K

Kirill in cxx.Дискуссионная
Да пусть там хоть EMA будет, в общем то без разницы
Интересно, что он делает в случае ошибки и как он понимает, что ошибся
источник

K

Kirill in cxx.Дискуссионная
Фишка branch prediction в том, что не нужно вычислять условие захода в ветку, мне непонятно как процессор может понять что он ошибся в своём предсказании без вычисления условия
источник

K

Kirill in cxx.Дискуссионная
Или может я что-то не так понимаю, поправьте плиз
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Kirill
Фишка branch prediction в том, что не нужно вычислять условие захода в ветку, мне непонятно как процессор может понять что он ошибся в своём предсказании без вычисления условия
он его вычисляет, но потом
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
он сначала считает ветки, а потом условие
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
а зачем он так делает - иди читай про то, зачем вообще speculative execution нужен
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
TL;DR - чтобы проц не простаивал
источник

K

Kirill in cxx.Дискуссионная
Спасибо за наводку
источник

@N

@urandon Nikita Khom... in cxx.Дискуссионная
Kirill
а как он понимает что предсказание было неправильным?
Так же как и с префетчем и кешмиссами
источник

YM

Yaroslav Maximov in cxx.Дискуссионная
Alexander Zaitsev
самому интересно было бы подробно почитать про механизм
бляздец эти ваши современные куски кремния
источник