Срыв трубопровода - Pipeline stall

В дизайне конвейерные компьютерные процессоры, а стойло трубопровода задержка в исполнении инструкция чтобы решить опасность.[1]

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

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

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

Примеры

График

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

Трубопровод, 4 этап.svgТрубопровод, 4 ступень с bubble.svg
Нормальное исполнениеКазнь с пузырем

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

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

Обходя назад во времениПроблема решена с помощью пузыря
Пересылка данных (двухэтапный, ошибка) .svgПересылка данных (двухэтапный) .svg

Смотрите также

Рекомендации

  1. ^ Паттерсон, Дэвид А .; Хеннесси, Джон Л., Компьютерная организация и дизайн (4-е изд.), Морган Кауфманн, п. 338
  2. ^ Паттерсон, Дэвид А; Хеннесси, Джон Л. (2014), Компьютерная организация и дизайн: аппаратно-программный интерфейс (5-е изд.), С. 318, OCLC  1130276006, получено 2020-05-25
  3. ^ Паттерсон, Дэвид А .; Хеннесси, Джон Л., Компьютерная организация и дизайн (4-е изд.), Морган Кауфманн, п. 373