Конвейер в вычислительной технике
Конве́йер в вычислительной технике, способ организации параллельной обработки процессором команд программы, который основан на разделении процесса обработки команды на несколько этапов (ступеней, стадий конвейера) и выделении для каждого из них отдельного функционального блока аппаратуры. Например, отдельными функциональными блоками реализуются: чтение команды из памяти, декодирование команды и выборка операндов, выполнение операции, запись результата. Результат работы предыдущего функционального блока передаётся на вход следующего. Конвейерную обработку используют для совмещения стадий выполнения разных команд. Производительность при этом возрастает благодаря тому, что одновременно на различных стадиях конвейера выполняются несколько команд. Современные процессоры имеют достаточно длинный конвейер, например процессор UltraSPARC III – 14 стадий, Pentium IV – от 20 до 30. Увеличение длины конвейера позволяет повысить тактовую частоту работы процессора, однако для обеспечения поступления на вход конвейера непрерывного потока команд требуется наличие дополнительной аппаратуры (кэш-память, блок предсказания переходов). Вершиной конвейерных архитектур центрального процессора (ЦП) стали т. н. суперскалярные микропроцессоры, у которых более одного конвейера. Однако при управлении конвейерной обработкой команд часто возникают ситуации, когда в программе встречается команда перехода – тогда конвейер приходится очищать и загружать в него новую порцию команд, начиная с того адреса, куда произошёл переход. Это заметно снижает производительность ЦП, так как переходы – один из наиболее часто исполняемых типов команд (в среднем каждая пятая команда). Для борьбы с этим явлением в суперскалярных ЦП применяется предсказание адресов переходов, заключающееся в опережающей выборке (англ. instruction prefetch) и исполнении процессором команд программы по результатам предсказания адресов переходов, содержащихся в выбранном в текущий момент фрагменте кода. В случае неверного предсказания результат опережающего вычисления, хранящийся в отдельном буфере, аннулируется, и происходит выборка нужной ветви программы. Точность предсказания переходов 90–95 %.