Introdução
Pipeline é uma técnica de implementação de processadores que permite a sobreposição temporal das diversas fases de execução das instruções.
Aumenta o número de instruções executadas simultaneamente e a taxa de instruções iniciadas e terminadas por unidade de tempo.
O pipeline não reduz o tempo gasto para completar cada instrução individualmente.
Exemplo
Vamos supor uma lavandaria, em que cada etapa possa ser realizada em 30 minutos:
1) Colocar a roupa na máquina de lavar
2) Depois de lavada, colocá-la na máquina de secar roupa
3) Depois de seca, passar a ferro
4) Depois de passada, arrumá-la no armário
Instrução sem pipeline |
Instrução com pipeline |
Supondo-se que cada uma destas etapas leve 30 minutos para ser realizada, a lavagem de um cesto de roupas continuará levando 2 horas para ser realizada.
Entretanto, podemos iniciar a lavagem de um cesto de roupas a cada 30 minutos, até que tenhamos 4 cestos sendo lavados simultaneamente, um em cada etapa do “pipeline”.
Depois das primeiras 2 horas, teremos um cesto de roupa lavada a cada 30 minutos. Ao final do dia teremos lavado muito mais cestos de roupa do que sem o uso de pipeline.
Formula de pipeline |
Síntese final
Não melhora a latência de cada tarefa individualmente.
Melhora o throughput de todo o trabalho.
Várias tarefas executam simultaneamente usando recursos diferentes.
Speedup potencial = número de estágios do pipeline.