Pipeline (PIPELINING ou CANALIZAÇÃO) – É o processo pelo qual uma instrução de processamento é subdividida em etapas. Podendo colocar mais de uma instrução em execução simultaneamente.
Vamos utilizar no estudo um pipeline com 6 estágios:
ü (BI) Busca de Instrução (FETCH INSTRUCTION): o processador lê uma instrução da memória;
ü (DI) Decodificação de Instrução (DECODE INSTRUCTION): a instrução é decodificada para determinar qual ação é requerida;
ü (CO) Cálculo de Operandos (CALCULATE OPERANDS): calcular o endereço dos operandos;
ü (BO) Busca de Operandos (FETCH OPERANDS): obter cada operando da memória;
ü (EI) Execução da Instrução (EXECUTE INSTRUCTION): efetuar a operação indicada;
ü (EO) Escrita de Operando (WRITE OPERAND): armazenar o resultado na memória.
OBS.: O pipeline não reduz o tempo gasto para completar cada instrução individualmente (NÃO melhora a latência de uma única tarefa, ou seja, o tempo de execução de uma única instrução é o mesmo “com ou sem” pipeline), porém, melhora o THROUPHPUT do trabalho como um todo. Quanto maior a quantidade de estágios maior o SPEEDUP (ganho de desempenho que pode ser obtido ao melhorar determinada característica do processamento). Porém, aumenta o custo da implementação.
O tempo gasto no processamento de M instruções em um pipeline com K estágios e ciclo de máquina igual a T é dado por:
T = [K + (M – 1) ] * t