Эффективность удара BTB более очевидна в суперскарных процессорах. Супер скаляр означает, что процессор имеет несколько идентификаторов (декодеры команд). Для процессоров Intel Core пример 4-го поколения (Haswell) имеют 4 декодеров, ARM A15 части имеют 3 декодеров и т.д.
Будучи в состоянии предсказать, какая ветвь ваш код будет принимать, позволит получать и декодировать несколько инструкций заранее и попробуйте заполнить все декодеры, не останавливая трубопровод.
Кроме того, зная полученную ветвь, процессор может произвести переопределение входящих инструкций.
Если у нас нет прогноза ветвления (с BTB), то ЦП должен ждать оценки условных инструкций, а между тем остальные идентификаторы ничего не сделают, пока условие оценивается, не используя преимущества " супер-скалярность ":).
Почему важное значение имеет предсказание ветвей ... оно помогает CPU выполнить как можно больше инструкций за цикл. Например, процессоры Haswell теоретически могут выполнять 4 команды в одном цикле. BTB помогает в этом.
Даже для такого мелкого скалярного трубопровода отсутствие BTB (или отложенной ветви) будет означать, что принятые ветви имеют индекс CPI 2 (одна сброшенная команда).При примерно одной ветви в каждых пяти инструкциях и примерно половине из них CPI без BTB будет 1,1 (0,9 * 1 CPI + 0,1 * 2 CPI). Для современных высокопроизводительных процессоров задержка между началом выборки и вычислением адреса больше 1 цикла * и * выдается несколько инструкций за цикл. Косвенные прыжки обычно страдают еще большим штрафом. –