Наличие такого конвейера позволяет повысить производительность в раз (в идеальном случае)
Создание конвейера осложняется следующими обстоятельствами:
длительность этапов может быть различной
- результат предыдущей операции используется в качестве операнда в последующей (например, результат команды «К» должен быть использован в качестве источника в команде «К+3») или команда «К» является передачей управления, то есть после неё должна следовать команда К+М.
- в программе нарушается линейность, т.е. появляются ветвления (переходы): команда «К» является передачей управления, то есть после неё должна следовать команда К+М.
- в некоторых операциях присутствуют не все этапы.
Эти проблемы решаются либо компилятором, который старается выстраивать команды в порядке наиболее удобном для конвейера и при необходимости вставляет команды холостого хода, либо аппаратно.
Предполагается, что все этапы по длительности одинаковы или хотя бы были кратны по длительности. В последнем случае можно организовать перекрытие частей этапов. Такая организация называется суперконвейером.
Тем не менее, введение пятистадийного конвейера в Интел 486 позволило, по сравнению с Интел 386, повысить тактовую частоту в три раза, а время выполнения команд (в тактах) – сократить вдвое.
Дальнейшим развитием конвейеризации является использование нескольких устройств обработки с собственным конвейером, так называемая, разнесенная архитектура. В простейшем случае это введение дополнительных сопроцессоров, каждый из которых управляется собственным потоком команд. Например, адресный процессор и процессор с плавающей запятой. Не вдаваясь в подробности, метод предполагает наличие нескольких конвейеров данных: очередь адресов чтения и записи, очередь данных чтения и записи. Проблема расщепления программы на отдельные ветви для каждого
процессора решается компилятором или посредством специальной аппаратуры расщепления.
Например, начиная с Р2 реализована концепция динамического выполнения команд, которая реализуется тремя концепциями: предсказания переходов, динамическом анализе потока данных и спекулятивном выполнении команд.
Концепция предсказания переходов заключается в том, что при появлении в потоке команд операций ветвления в конвейер загружается наиболее вероятная ветвь.
Стратегии предсказания переходов подразделяют на статическое предсказание и динамическое предсказание.
Статическое предсказание закладывается на стадии компиляции.
- Никогда
- Всегда
- Всегда первый в цикле
- Никогда, если не первый в цикле
- Наиболее вероятные переходы (по статистике тестовых задач).
- По виду перехода (>0, <0, =0 и т.д.)
- По направлению перехода (вперёд - назад)
Динамическое предсказание переходов основывается на запоминании истории событий.
не будет
">
будет
">Например, может описываться конечным автоматом с двумя (или более) состояниями.
1 0 Не был Был
не был
Концепция динамического анализа потока данных заключается в частности в том, что производится выборка тех данных из памяти, которые потребуются позже, пока, например, выполняются предыдущие операции над регистрами.
Концепция спекулятивного выполнения команд – это способность процессора выполнять команды в порядке отличном от входного потока команд (с опережением) в том случае, если отсутствует зависимость по данным.
Реализация концепций динамического выполнения команд обеспечивает более полную загрузку процессора и соответственно позволяет получить большую производительность.