Как процессор предсказывает ветвления
Псевдотранскрипт доклада объясняет тему с нуля. Конвейер начинает следующую инструкцию до завершения предыдущей, но после условного перехода ещё не знает её адрес. Процессор выбирает путь заранее, а при ошибке отбрасывает начатую работу.
В учебной модели ветвления составляют 20% инструкций, а промах стоит 20 тактов. Без предсказания получается 4,8 такта на инструкцию, с идеальным — один. Прогноз по последнему результату ветвления повышает точность до 85%.
Материал «Branch prediction» ведёт от статических правил к таблице истории и объясняет, почему разные переходы могут занять одну её ячейку. Читать стоит тем, кто исследует низкоуровневую производительность или хочет понимать работы о предсказателях. Расчёты сделаны на упрощённой модели, поэтому цену ветвлений в коде нужно измерять.
Post #3022
164