и можно сказать были ли данные по адресу в кше
ЧТобы понять - поговорим про предсказание ветвлений
может встретится место в виде:
if (raining) { take_umbrella(); } else { do_something_else(); };
if (raining) { take_umbrella(); } else { do_something_else(); };
а можно попытаться предсказать куда мы пойдем дальше
процессор переходит в специальный режим - speculation
каждая инструкция анотируется флагом (speculative)
если процессор угадал - он работает быстрее
и если вдруг мы ошиблись и пошли не по той ветке - то происходит сброс данных
если не угадал - то данные удалятся и мы пойдем по другой ветке
и это не замедлит процессор по сравнению со случаем когда мы бы остановились
если мы выполним невилидные инструкции - то ничего не случится пока не поймем в какую втеку попали
Предполагается что из кода программы не узнать было ли предсказание успешным или нет
Предсказатель ветвлений так или иначе записывает историю
ер если мы встретили 10 раз условие true значит в 11ый вероятно будет true
в некоторых случаях даже может быть предсказатель закончится ли цикл