Остановка конвейера

редактировать

В конструкции конвейерных компьютерных процессоров остановка конвейера - это задержка выполнение инструкции для устранения опасности.

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

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

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

Содержание
  • 1 Примеры
    • 1.1 Временная шкала
    • 1.2 Классический конвейер RISC
  • 2 См. Также
  • 3 Ссылки
Примеры

Временная шкала

Ниже приведены два выполнения тех же четырех инструкций через 4-этапный конвейер, но по какой-либо причине задержка в выборке фиолетовой инструкции в цикле № 2 приводит к созданию пузыря, задерживающего также все инструкции после него.

Конвейер, 4 stage.svg Конвейер, 4 стадии с bubble.svg
Нормальное выполнениеВыполнение с пузырьком

Классический конвейер RISC

В приведенном ниже примере показано, как пузырь вставляется в классический конвейер RISC, с пятью этапами (IF = выборка инструкции, ID = декодирование инструкции, EX = выполнение, MEM = доступ к памяти, WB = обратная запись в регистр). В этом примере данные, доступные после этапа MEM (4-й этап) первой инструкции, требуются как входные для этапа EX (3-й этап) второй инструкции. Без пузыря стадия EX (3-я стадия) имеет доступ только к выходу предыдущей стадии EX. Таким образом, добавление пузыря разрешает временную зависимость без необходимости передавать данные назад во времени (что невозможно).

Обход назад во времениПроблема решена с помощью пузырька
Пересылка данных (двухэтапная, ошибка).svg Пересылка данных (двухэтапная).svg
См. Также
Ссылки
Последняя правка сделана 2021-06-02 06:38:02
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте