Конвейеризация и опасности
Конвейеризация обеспечивает перекрытие выполнения последовательных инструкций путем разделения обработки инструкций на стадии, что увеличивает пропускную способность; опасности — это ситуации (конфликты ресурсов, зависимости данных и ветвления), которые препятствуют выполнению следующей инструкции в следующем цикле.
Definition
Конвейеризация — это метод, который обеспечивает перекрытие выполнения нескольких инструкций путем разделения их обработки на последовательные стадии, а опасность — это любое условие, которое заставляет стадию простаивать, поскольку она не может корректно продолжить работу в следующем тактовом цикле.
Scope
Эта тема охватывает классический конвейер инструкций и три класса опасностей, которые его ограничивают: структурные опасности (конфликты ресурсов), опасности данных (зависимости между инструкциями) и опасности управления (ветвления). Она включает стандартные методы устранения — пересылку/обход, задержку и обработку ветвлений. Она исключает углубленное рассмотрение расширенного параллельного выполнения (параллелизм на уровне инструкций), предсказания направления ветвлений (предсказание ветвлений) и динамического переупорядочивания (внеочередное выполнение).
Core questions
- Как разделение выполнения инструкций на стадии увеличивает пропускную способность без уменьшения задержки?
- Что такое структурные опасности, опасности данных и опасности управления, и что вызывает каждую из них?
- Как пересылка разрешает многие опасности данных без задержки?
- Какова стоимость ветвлений в конвейере и как она смягчается?
Key concepts
- стадии конвейера (выборка, декодирование, выполнение, память, обратная запись)
- пропускная способность против задержки
- структурные опасности
- опасности данных
- опасности управления
- пересылка и обход
- задержки и «пузырьки» конвейера
- штраф за ветвление
Key theories
- Пропускная способность конвейера и опасности
- k-стадийный конвейер в идеале завершает одну инструкцию за такт после заполнения, но структурные опасности, опасности данных и опасности управления вызывают задержки, которые снижают пропускную способность ниже идеальной; проектирование конвейера сосредоточено на минимизации этих задержек.
Mechanisms
Обработка инструкций разделяется на стадии, так что пока одна инструкция выполняется, другие извлекаются и декодируются. Структурная опасность возникает, когда две инструкции нуждаются в одном и том же ресурсе; опасность данных — когда инструкция нуждается в результате, который еще не был произведен; опасность управления — когда следующая инструкция зависит от неразрешенного ветвления. Пересылка направляет результаты непосредственно между стадиями, задержки вставляют «пузырьки», когда пересылки недостаточно, а обработка ветвлений уменьшает штрафы, связанные с опасностями управления.
Clinical relevance
Конвейеризация является фундаментальным методом повышения производительности практически в каждом процессоре, и понимание опасностей объясняет, почему порядок инструкций и поведение ветвлений влияют на скорость. Планирование инструкций компилятором и осведомленность программиста о зависимостях и шаблонах ветвлений могут существенно улучшить производительность на конвейерном оборудовании.
History
Конвейеризация появилась в ранних высокопроизводительных машинах, таких как IBM Stretch и CDC 6600, в начале 1960-х годов. Простой пятиступенчатый конвейер стал канонической учебной и проектной моделью с появлением RISC-процессоров в 1980-х годах, а систематическая классификация опасностей и методов их устранения была кодифицирована в текстах Хеннесси-Паттерсона.
Key figures
- John L. Hennessy
- David A. Patterson
- Seymour Cray
Related topics
Seminal works
- hennessy2019
- patterson2020
Frequently asked questions
- Ускоряет ли конвейеризация выполнение одной инструкции?
- Нет. Конвейеризация не уменьшает время выполнения одной инструкции (задержку); она увеличивает количество инструкций, завершаемых за единицу времени (пропускную способность), путем перекрытия их выполнения, подобно тому, как сборочная линия увеличивает выпуск продукции, не ускоряя производство ни одного отдельного изделия.
- Что такое пересылка?
- Пересылка, или обход, направляет свежевычисленный результат непосредственно со стадии, которая его произвела, на более позднюю стадию, которая в нем нуждается, вместо того чтобы ждать его записи обратно в файл регистров. Это разрешает многие опасности данных без задержки конвейера.