Конфликт по управлению
Ситуация, когда конвейер не знает, какую инструкцию загружать следующей, потому что исход перехода (ветвления) ещё не определён.
Проблема: глубокий конвейер подгружает новые инструкции каждый такт, а условный переход (if, цикл) разрешается лишь через несколько стадий. Ожидание ответа создавало бы большой «пузырь» на каждом ветвлении, а код полон ветвлений — каждая 5–10-я инструкция. Решение — предсказание ветвлений: угадать исход и спекулятивно загружать инструкции по предполагаемому пути. Если предсказатель прав (в современных процессорах — более чем в 95 % случаев), конвейер работает без остановок; если ошибся, все спекулятивно загруженные инструкции приходится отбросить (сброс при ошибке предсказания — обычно 15–20 потерянных тактов). Поэтому предсказание ветвлений так важно для производительности, а непредсказуемые ветвления (if, зависящий от данных) обходятся дорого. Один из трёх типов конфликтов конвейера.