Конвейер.Этапывыполненияопераций.

Конвейерная архитектура (pipelining) была введена в центральный процессор с целью повышения быстродействия. Обычно для выполнения каждой команды требуется осуществить некоторое количество однотипных операций, например: выборка команды из ОЗУ, дешифровка команды, адресация операнда в ОЗУ, выборка операнда из ОЗУ, выполнение команды, запись результата в ОЗУ. Каждую из этих операций сопоставляют одной ступени конвейера. Например, простейший конвейер RISC-процессоров можно представить пятью стадиями с наборами триггеров между стадиями:

1) получение инструкции (англ. InstructionFetch);

2) декодирование инструкции (англ. InstructionDecode) и чтение регистров (англ. Registerfetch);

3) выполнение (англ. Execute);

4) доступ к памяти (англ. Memoryaccess);

5) запись в регистр (англ. Registerwriteback);

Конвейер.Этапывыполненияопераций. - student2.ru

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

После освобождения Конвейер.Этапывыполненияопераций. - student2.ru -й ступени конвейера она сразу приступает к работе над следующей командой. Если предположить, что каждая ступень конвейера тратит единицу времени на свою работу, то выполнение команды на конвейере длиной в Конвейер.Этапывыполненияопераций. - student2.ru ступеней займёт Конвейер.Этапывыполненияопераций. - student2.ru единиц времени, однако в самом оптимистичном случае результат выполнения каждой следующей команды будет получаться через каждую единицу времени.

Действительно, при отсутствии конвейера выполнение команды займёт Конвейер.Этапывыполненияопераций. - student2.ru единиц времени (так как для выполнения команды по-прежнему необходимо выполнять выборку, дешифровку и т. д.), и для исполнения Конвейер.Этапывыполненияопераций. - student2.ru команд понадобится Конвейер.Этапывыполненияопераций. - student2.ru единиц времени; при использовании конвейера (в самом оптимистичном случае) для выполнения Конвейер.Этапывыполненияопераций. - student2.ru команд понадобится всего лишь Конвейер.Этапывыполненияопераций. - student2.ru единиц времени.

Факторы, снижающие эффективность конвейера:

1.) Простой конвейера, когда некоторые ступени не используются (например, адресация и выборка операнда из ОЗУ не нужны, если команда работает с регистрами).

2.) Ожидание: если следующая команда использует результат предыдущей, то последняя не может начать выполняться до выполнения первой (это преодолевается при использовании внеочередного выполнения команд — out-of-orderexecution).

3.) Очистка конвейера при попадании в него команды перехода (эту проблему удаётся сгладить, используя предсказание переходов).

Некоторые современные процессоры имеют более 30 ступеней в конвейере, что повышает производительность процессора, но, однако, приводит к увеличению длительности простоя (например, в случае ошибки в предсказании условного перехода). Не существует единого мнения по поводу оптимальной длины конвейера: различные программы могут иметь существенно различные требования.



Наши рекомендации