Процессорный конвейер работает следующим образом: весь цикл выполнения команды
разбивается на несколько участков (обычно их называют стадиями), которые выполняют-
ся последовательно. Продолжительность выполнения каждой стадии значительно меньше
выполнения всей команды, как если бы она была одним целым. Так, например, команда
чтения данных в регистр из произвольного адреса в оперативной памяти может быть раз-
бита на следующие стадии :
1) Выборка команды из оперативной памяти
2) Декодирование команды
3) Выдача команды на исполнительные устройства
4) Установка адреса на адресной шине процессора
5) Чтение данных из выбранной ячейки оперативной памяти
6) Копирование считанных данных в заданный регистр
При конвейеризации происходит совмещение во времени различных стадий. Данные по-
ступают на первую стадию конвейера, обрабатываются и переходят на вторую стадию, в
то время как на первую стадию поступают новые данные.
При данной схеме первый результат будет получен только через промежуток времени
T = ∑ ti, но зато каждый следующий – через ti, что дает ускорение в 6 раз. На самом
=
i 1
деле, конечно, такое ускорение работы недостижимо, так как у конвейера редко бывает
загружены одновременно все ступени, поскольку разные команды процессора сильно раз-
личаются по времени выполнения. Так, например, если следующей командой будет ин-
крементирование содержимого загруженного регистра, 4, 5 и 6 стадии будут заменены од-
ной - собственно инкрементированием, так как запись в память не требуется, и конвейер
будет простаивать две стадии. Эти две стадии называются “пузырьком”, поскольку в те-
чение этих двух стадий данные просто передаются с одной ступени на другую – получает-
ся задержка на 2 стадии. При работе на реальных задачах ускорение в 30% считается
очень хорошим показателем. Но даже эти 30% были достигнуты без повышения тактовой
частоты процессора (которая ограничена технологическими возможностями производст-
ва), поэтому конвейеризация широко применяется в современных микропроцессорах.
Очевидно, что скорость работы конвейера равна скорости самой медленной его стадии.
Поэтому имеет смысл разбить медленные ступени конвейера дополнительно еще на не-
сколько стадий. В 486 процессоре конвейер имел 5 стадий, в процессоре Pentium 4 кон-
вейер имеет длину 20 стадий.
