Конфликты по управлению могут приводить к бо́льшим потерям производительности конвейера, чем конфликты по данным и структурные.
Команда условного перехода (КУП) в ходе выполнения может либо изменить, либо не изменить значение счетчика команд. Если КУП изменяет значение счетчика команд на адрес, вычисленный в команде, то переход называется выполняемым; в противном случае он называется невыполняемым. Таким образом, пока КУП не выполнена (не определен целевой адрес перехода), неизвестно, какую операцию необходимо загрузить в конвейер следующей. Для устранения или частичного сокращения издержек, связанных с указанной неопределенностью, предложены различные методы, которые условно можно разделить на четыре группы: буферы предвыборки, множественные потоки, задержанный переход, предсказание переходов.
Классификация основных методов минимизации конфликтов по управлению:
Простейший метод работы с условными переходами заключается в приостановке конвейера. Как только обнаруживается КУП, конвейер приостанавливается до тех пор, пока она не достигнет ступени конвейера, которая вычисляет новое значение счетчика команд.
Приостановки конвейера из-за конфликтов по управлению должны реализовываться иначе, чем приостановки из-за конфликтов по данным, поскольку выборка команды, следующей за КУП, должна быть выполнена как можно быстрее, как только мы узнаем окончательное направление КУП.
Число тактов, теряемых при приостановках из-за условных переходов, может быть уменьшено двумя способами:
∙ выявлением характера условного перехода на более ранних ступенях конвейера;
∙ более ранним вычислением значения счетчика команд для выполняемого перехода (т. е. вычислением целевого адреса перехода).
В статических методах предсказания переходов прогнозируемое направление перехода фиксируется для каждой КУП на все время выполнения программы, т. е. такие методы применяются на уровне компилятора. В динамических методах предсказания переходов схемы прогнозирования условных переходов реализуются аппаратно.
Do'stlaringiz bilan baham: |