Конвейерная обработка: архитектура, преимущества и недостатки

Попробуйте наш инструмент устранения неполадок





Увеличение скорости выполнения программы, следовательно, увеличивает скорость процессор. Было изобретено множество способов, как аппаратная реализация, так и программная архитектура, для увеличения скорости выполнения. Было замечено, что при одновременном выполнении инструкций время, необходимое для выполнения, может быть сокращено. Концепция параллелизма в программирование было предложено. В соответствии с этим за один такт может выполняться более одной инструкции. Эту концепцию программист может применить на практике с помощью различных методов, таких как Конвейерная обработка, несколько исполнительных модулей и несколько ядер . Среди всех этих методов параллелизма наиболее распространена конвейерная обработка. Итак, как можно выполнить инструкцию в методе конвейерной обработки? Как это увеличивает скорость исполнения?

Что такое конвейерная обработка?

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




Последовательность выполнения инструкций

Последовательность выполнения инструкций

  • IF: загружает инструкцию в регистр инструкций.
  • ID: Instruction Decode, декодирует инструкцию для кода операции.
  • AG: Генератор адресов, генерирует адрес.
  • DF: Data Fetch, выбирает операнды в регистр данных.
  • EX: Выполнение, выполняет указанную операцию.
  • WB: обратная запись, запись результата в реестр.

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



Инструкции по конвейеру

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

Инструкции по конвейеру

Инструкции по конвейеру

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

Для третьего цикла первая операция будет в фазе AG, вторая операция будет в фазе ID, а третья операция будет в фазе IF. Таким образом, инструкции выполняются одновременно, и после шести циклов процессор выводит полностью выполненную инструкцию за такт.


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

Конвейерная архитектура

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

Конвейерный процессор

Конвейерный процессор

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

Конвейерная обработка в процессорах RISC

Самый популярный RISC-архитектура Процессор ARM следует 3-ступенчатой ​​и 5-ступенчатой ​​конвейерной обработке. При трехэтапной конвейерной обработке используются следующие этапы: выборка, декодирование и выполнение. Эта конвейерная обработка имеет задержку в 3 цикла, поскольку для выполнения отдельной инструкции требуется 3 такта.

ARM 3 этап конвейерной обработки

ARM 3 этап конвейерной обработки

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

3-ступенчатая конвейерная обработка данных ARM

3-ступенчатая конвейерная обработка данных ARM

В 5 этапов конвейерной обработки входят следующие этапы: выборка, декодирование, выполнение, буфер / данные и обратная запись.

Опасности при прокладке трубопровода

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

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

Опасность конвейерной обработки при чтении после записи

Опасность конвейерной обработки при чтении после записи

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

Конвейерное поведение ветви

Конвейерное поведение ветви

Преимущества конвейерной обработки

  • Увеличивается пропускная способность инструкций.
  • Увеличение числа этапов конвейера увеличивает количество инструкций, выполняемых одновременно.
  • При использовании конвейерной обработки можно разработать более быстрый ALU.
  • Конвейерный процессор работает на более высоких тактовых частотах, чем оперативная память.
  • Конвейерная обработка увеличивает общую производительность ЦП.

Недостатки конвейерной обработки

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

Конвейерная обработка дает преимущества всем инструкциям, которые следуют аналогичной последовательности шагов для выполнения. Процессоры со сложными инструкциями, в которых каждая инструкция ведет себя иначе, чем другая, сложно конвейерно обработать. У переработчиков есть разумное оборудование с 3 или 5 ступенями конвейера, потому что с увеличением глубины конвейера возрастают связанные с ним опасности. Назовите некоторые конвейерные процессоры с их этапами конвейера?