Speculative execution
Зачем это важно? Скорость процессора ограничена не только вычислениями, но и ожиданием данных, например из памяти. Спекуляция заполняет эти паузы полезной работой, не давая ядру простаивать. Без нее компьютеры были бы заметно медленнее, а энергопотребление выше, ведь пустые такты тоже расходуют энергию.
Интуитивно это работает как повар, который заранее готовит популярные блюда, не зная точного заказа. Пришел заказ — блюдо подано. Не совпал — выбрасывает лишнее. Блок предсказания ветвлений по истории выполнения угадывает нужную ветку и выполняет её. Если ошибся — конвейер очищается, результаты выбрасываются.
Пример: в видеоигре на каждом кадре проверяется, нажал ли игрок кнопку паузы. Процессор предсказывает «нет», продолжает просчет мира. Если игрок нажимает клавишу, процессор откатывает лишние действия и открывает меню. Игрок не замечает задержки, потому что откат происходит за доли такта.
Вывод: спекулятивное выполнение — это обмен лишней работы на скорость. Оно стало основой быстродействия процессоров, однако его побочные эффекты, такие как атаки Spectre, напоминают, что предсказания всегда несут риск.
Поделиться