Os pipelines melhoram o desempenho da CPU, sobrepondo a execução de várias instruções. Em vez de esperar que uma instrução seja concluída completamente antes de iniciar o próximo, um pipeline interrompe a execução de instruções em estágios menores. Diferentes instruções podem estar em diferentes estágios de execução simultaneamente. Isso é análogo a uma linha de montagem em uma fábrica; Cada estágio executa uma tarefa específica na instrução e as instruções fluem através dos estágios simultaneamente.
Aqui está uma quebra de por que isso leva a ganhos de desempenho:
*
Aumento da taxa de transferência de instrução: O principal benefício é a capacidade de emitir uma nova instrução a cada ciclo de relógio, mesmo que cada instrução leve vários ciclos de relógio para concluir. Isso aumenta significativamente o número de instruções processadas por unidade de tempo.
*
Utilização aprimorada de recursos da CPU: O oleoduto mantém vários componentes da CPU ocupados. Enquanto uma instrução está realizando sua operação aritmética na ALU, outra instrução pode estar buscando a próxima instrução da memória e outra pode estar escrevendo o resultado para um registro. Isso maximiza a utilização de recursos.
*
Reduzido tempo de execução de instruções médias (embora não seja hora de instrução individual): Embora o tempo para executar uma instrução * single * possa permanecer em grande parte (ou até mesmo aumentar devido à sobrecarga dos estágios do pipeline), o tempo * médio * para executar uma sequência * de instruções é bastante reduzido devido à execução sobreposta.
No entanto, os pipelines não têm suas limitações: *
Riscos de pipeline: Essas são situações que podem interromper o fluxo suave de instruções através do pipeline. Os principais tipos são:
*
Riscos de dados: Uma instrução precisa de dados que ainda não foram produzidos por uma instrução anterior.
*
Riscos de controle: Uma instrução de ramificação altera o fluxo do programa, fazendo algumas instruções no oleoduto irrelevante.
*
riscos estruturais: O hardware não possui os recursos para executar várias instruções simultaneamente no pipeline (por exemplo, apenas um acesso à memória por vez).
Esses perigos requerem técnicas como encaminhamento, estagnação (inserindo bolhas) e previsão de ramificação para mitigar seu impacto negativo no desempenho. Apesar desses desafios, os benefícios da pipelining em termos de aumento da taxa de transferência superam em muito os custos na maioria das CPUs modernas. Técnicas sofisticadas estão sendo constantemente desenvolvidas para otimizar ainda mais o desempenho do pipeline e lidar com riscos com mais eficiência.