2015-12-06 2 views
1

Я рассматриваю пять этапов MIPS-конвейера (ID, IF, EXE, MEM, WB) в H & P 3rd ed. и мне кажется, что решение филиала разрешено на этапе ID, так что, пока команда перехода достигает стадии EXE, вторая команда после ветви может быть выполнена правильно (может быть выбрана). Но это оставляет нам проблему, возможно, по-прежнему растрачивая 1-ю инструкцию вскоре после инструкции ветвления.Это правда, если мы всегда можем заполнить слот задержки, нет необходимости в предсказании ветвления?

Я также столкнулся с концепцией задержки задержки ветвления, что означает, что вы хотите заполнить 1-ю инструкцию вскоре после ветви с чем-то полезным, а также «безвредным», независимо от того, выполняется ли ветка или нет, инструкция выполняется по желанию и 1-я инструкция после ветвления не будет потрачена впустую.

Мой вопрос, прежде всего, это мое понимание правильное? Если это правильно, то проблема исходит из концепции предсказания ветвей, которая, кажется, пытается заполнить первую инструкцию инструкцией из предсказанного места, к которому идет программа. Но если мы всегда можем найти какую-то инструкцию для заполнения слота задержки ветвления, нам не нужна функция предсказания ветвления, правильно?

ответ

3

Для классического трубопровода MIPS (R2000), слот задержки ветви делает предсказания ветвлений бесполезным вы понимаете. (Технически, конструкция могла бы комбинировать предиктор/индикатор того, является ли команда временного интервала nop с предсказателем ветвления, что позволит пропустить nop, скромно улучшая производительность при правильном предсказании ветвления.)

Однако, процессорные конвейеры часто бывают достаточно длинными и достаточно широкими (и оценка состояния ветвления достаточно задерживается), что один временной интервал задержки недостаточен для заполнения задержки между тем, когда необходим адрес после ответвления, и направление ветвления и цель известны.

Например, следующий процессор MIPS R4000 значительно удлинил конвейер и, как результат, не смог определить местоположение инструкции после отделения достаточно рано. Дизайнеры предпочли использовать простую статическую стратегию, не предполагаемую.

Если вам не нужна бинарная совместимость, можно добавить дополнительные интервалы задержки. Однако найти полезные инструкции для заполнения таких слотов увеличивается с трудом по мере увеличения количества слотов. Для определенного кода, богатого циклами, регулярное заполнение двух слотов задержки может быть практичным, и я думаю, что по крайней мере один DSP имел два слота задержки.

Прогнозирование ветвления также может использоваться для отторжения выборки от выполнения, так что даже если условие не может быть оценено (например, в зависимости от результата операции с высокой задержкой, например, промаха кэша данных или деления), выборка может продолжаться , Такая развязка может быть использована для раннего запуска пропусков кэша команд (скрыть некоторую задержку) и уменьшить влияние переменной пропускной способности на разных этапах (поэтому более ранний этап может продолжать работать с максимальной пропускной способностью, когда более поздний этап останавливается или уменьшает пропускную способность и буферизованные команды могут затем скрыть более поздние киоски или уменьшить пропускную способность на ранней стадии).

0

Дело в том, что нарушитель не всегда может найти инструкцию для заполнения слота задержки. Более того, инструкция очень предсказуема.

Перед IF стадии, у даже не знаю, является ли это команда ветвления. (И должны извлечь его из памяти инструкции)

0

в ядре mips, как будто с нулевым состоянием ожидания, случайно доступным с уверенностью. но в зависимости от того, как выполняется выборка и кэширование, вам все же может понадобиться/нужна концепция прогнозирования ветвей, чтобы начать эти выборки раньше. трубопровод - это лишь небольшая часть более крупной системы.системные шины обычно не являются одиночным циклом, вот мой адрес. Я хочу, чтобы мои данные к концу этого цикла, есть адресные шины и шины данных и теги, которые пересекают их, чтобы вы могли одновременно выполнять несколько транзакций в полете, например, трубопровод пытаясь оптимизировать пропускную способность шины данных, зная, что периферийные устройства и память на дальней стороне слишком медленны для этой шины.

предсказание «может» использоваться, чтобы помочь другим функциям в получении инструкций в трубе быстрее или эффективнее.

из академического смысла, хотя идея слота - дать трубе цикл для переключения передач по другому пути выполнения. Это только на самом деле спасает вас, если входящий конец трубы может быть передан любой случайной вещи, которую он хочет каждый такт. который не является реальным миром.

Еще одно научное решение - это одно из условных исполнений на каждой инструкции, вы можете выполнять последовательности исполнения, чтобы поддерживать целостность трубы, и не нужно сбрасывать или останавливаться ... снова, пока то, что питает трубу, может идти в ногу. ..arm сбросил идею условной инструкции в новый 64-битный набор команд. некоторые/новые mips вы можете отключить слот тени/задержки ветви.