Конвейеризация (или конвейерная обработка) в общем случае основана на разделении подлежащей исполнению функции на более мелкие части, называемые ступенями, и выделении для каждой из них отдельного блока аппаратуры. Так обработку любой машинной команды можно разделить на несколько этапов (несколько ступеней), организовав передачу данных от одного этапа к следующему. При этом конвейерную обработку можно использовать для совмещения этапов выполнения разных команд. Производительность при этом возрастает благодаря тому, что одновременно на различных ступенях конвейера выполняются несколько команд. Конвейерная обработка такого рода широко применяется во всех современных быстродействующих процессорах.
Выполнение типичной команды можно разделить на следующие этапы:
· выборка команды - IF (по адресу, заданному счетчиком команд, из памяти извлекается команда);
· декодирование команды / выборка операндов из регистров - ID;
· вып-е опер-и / вычисление эффективного адреса памяти - EX;
· обращение к памяти - MEM;
· запоминание результата - WB.
Команда
Такт
Команда i
IF
ID
EX
MEM
WB
Команда i+1
IF
ID
EX
MEM
WB
Команда i+2
IF
ID
EX
MEM
WB
Команда i+3
IF
ID
EX
MEM
WB
Команда i
IF
ID
EX
MEM
WB
Работу конвейера можно условно представить в виде временной диаграммы (табл. выше), на которой обычно изображаются выполняемые команды, номера тактов и этапы выполнения команд.
Конвейеризация увеличивает пропускную способность процессора (количество команд, завершающихся в единицу времени), но она не сокращает время выполнения отдельной команды. В действительности, она даже несколько увеличивает время выполнения каждой команды из-за накладных расходов, связанных с управлением регистровыми станциями. Однако увеличение пропускной способности означает, что программа будет выполняться быстрее по сравнению с простой неконвейерной схемой.
Тот факт, что время выполнения каждой команды в конвейере не уменьшается, накладывает некоторые ограничения на практическую длину конвейера. Кроме ограничений, связанных с задержкой конвейера, имеются также ограничения, возникающие в результате несбалансированности задержки на каждой его ступени и из-за накладных расходов на конвейеризацию. Частота синхронизации не может быть выше, а, следовательно, такт синхронизации не может быть меньше, чем время, необходимое для работы наиболее медленной ступени конвейера.