Pipeline

Em processadores sem pipeline, as instruções são executadas uma atrás da outra.
Sem Pipeline
Já em processadores com pipeline, as várias etapas que compõem a instrução são sobrepostas na execução, o que requer uma unidade de controle mais complexa e registradores adicionais.
Pipeline
As etapas que compõem a pipeline exemplificada são:
  • BI - Busca de Instrução
  • DI - Decodificação de Instrução
  • BO - Busca dos Operandos
  • EI - Execução da Instrução
  • AR - Armazenamento do Resultado
Essas são as típicas etapas de uma pipeline de um processador RISC. No caso cinco etapas, que são chamadas tecnicamente de estágios. O ganho teórico de desempenho com uma pipeline é correspondente a quantidade de estágios, mas nunca é alcançado.

É importante ressaltar que o ganho de desempenho de uma CPU com uma pipeline decorre do aumento no fluxo de execução de instruções como pode ser visto na figura seguinte. Note que o tempo para se executar uma instrução é constante. Como a instrução é dividida em estágios, há um fluxo maior delas. É o que ocorre em uma linha de montagem, conceito do qual deriva a técnica de pipeline. Podemo até dizer que Henry Ford foi um gênio da informática, mas nunca soube disso!  ;)  :P
Comparativo com e sem pipeline
Mencionei que o ganho teórico nunca é obtido na prática. Isto se deve à ocorrência de conflitos (hazards) que provocarão a parada da pipeline (pipeline stall), também chamada de bolha. As causas desses conflitos são bastante triviais, como veremos a seguir
  • Conflito de Desvio => Uma instrução de desvio fez com que o desvio fosse tomado e as instruções carregadas na pipeline precisam ser descartadas;
  • Conflito de Dados => A instrução que está na pipeline depende de um valor que está sendo manipulado pela instrução anterior e terá que esperar. Algo muito comum em expressões matemáticas com a dependência de resultados intermediários;
  • Conflito Estrutural => Um recurso do hardware não pode ser usado porque já estava em uso (duas instruções não podem usar o mesmo componente da CPU ao mesmo tempo, assim como dois corpos não podem ocupar o mesmo lugar no espaço).
A figura a seguir mostra o que acontece na pipeline com um conflito de desvio:
Conflito de desvio

E agora, o que acontece em um conflito de dados. O conflito estrutural tem basicamente o mesmo comportamento.
Para tentar reduzir a ocorrência de conflitos são implementadas técnicas sofisticadas como:
  • Previsão de desvios;
  • Execução fora de ordem (out of order execution);
  • Execução especulativa.
Essas técnicas acabam desembocando na implementação de despacho múltiplo e o grau de complexidade a que elas conduziram, aliadas a questões de aquecimento, consumo de energia e dificuldades de implementação física dos chips levaram a era dos microprocessadores multicore, com mais de uma CPU em um único chip. Cada CPU com sua pipeline...

Referências:

Organização e Projeto de Computadores – A Interface Hardware/Software - David A. Patterson e John L. Hennessy.

Arquitetura e Organização de Computadores - William Stallings.

Organização Estruturada de Computadores - Andrew S. Tanenbaum e Todd Austin.