tl; dr
Tubulações mais curtas significam velocidades de clock mais rápidas, mas podem reduzir o rendimento. Além disso, veja as respostas 2 e 3 na parte inferior (são curtas, prometo).
Versão mais longa:
Há algumas coisas a considerar aqui:
- Nem todas as instruções levam o mesmo tempo
- Nem todas as instruções dependem do que foi feito imediatamente (ou mesmo dez ou vinte) instruções de volta
Um pipeline muito simplificado (o que acontece nos modernos chips Intel está além do complexo) possui vários estágios:
Buscar -> Decodificar -> Acesso à Memória -> Executar -> Writeback -> Atualização do contador de programa
Em cada -> há um custo de tempo incorrido. Além disso, a cada tick (ciclo do relógio), tudo se move de um estágio para o próximo, de modo que o estágio mais lento se torna a velocidade para TODOS os estágios (realmente vale a pena que tenham o maior comprimento possível).
Digamos que você tenha 5 instruções e queira executá-las (foto tirada na wikipedia, aqui a atualização do PC não foi concluída). Seria assim:
Embora cada instrução precise de 5 ciclos de relógio para ser concluída, uma instrução finalizada sai do pipeline a cada ciclo. Se o tempo necessário para cada estágio for de 40 ns e 15 ns para os bits intermediários (usando meu pipeline de seis estágios acima), serão necessários 40 * 6 + 5 * 15 = 315 ns para obter a primeira instrução.
Por outro lado, se eu eliminasse completamente o pipeline (mas mantivesse tudo o mesmo), seriam necessários apenas 240 ns para obter a primeira instrução. (Essa diferença de velocidade para obter a "primeira" instrução é denominada latência. Geralmente é menos importante que a taxa de transferência, que é o número de instruções por segundo).
A diferença é que, no exemplo em pipeline, recebo uma nova instrução (após a primeira) a cada 60 ns. No não-pipelined, são necessários 240 todas as vezes. Isso mostra que os pipelines são bons para melhorar a taxa de transferência.
Indo um passo adiante, parece que no estágio de acesso à memória, precisarei de uma unidade adicional (para fazer cálculos de endereço). Isso significa que, se houver uma instrução que não use o estágio mem desse ciclo, eu posso fazer outra adição. Assim, eu posso executar dois estágios de execução (sendo um no estágio de acesso à memória) em um processador em um único tick (o agendamento é um pesadelo, mas não vamos lá. Além disso, o estágio de atualização do PC também precisará de uma unidade adicional no caso de um salto, para que eu possa executar três estados de execução de adição em um tick). Por ter um pipeline, ele pode ser projetado de modo que duas (ou mais) instruções possam usar estágios diferentes (ou estágios de salto em distância, etc.), economizando um tempo valioso.
Observe que, para fazer isso, os processadores fazem muita "mágica" ( execução fora de ordem , previsão de ramificação e muito mais), mas isso permite que várias instruções sejam publicadas mais rapidamente do que sem um pipeline (observe que os pipelines que são muito longos são muito difíceis de gerenciar e incorrem em um custo mais alto apenas esperando entre os estágios). Por outro lado, se você prolongar o pipeline por muito tempo, poderá obter uma velocidade de relógio insana, mas perderá muitos dos benefícios originais (de ter o mesmo tipo de lógica que pode existir em vários lugares e ser usado ao mesmo tempo )
Resposta nº 2:
Os processadores SIMD (instrução única de dados múltiplos) (como a maioria das GPUs) trabalham muito em muitos bits de informação, mas isso leva mais tempo. A leitura de todos os valores leva mais tempo (significa um relógio mais lento, embora esse deslocamento tenha um barramento muito mais amplo, em certa medida), mas você pode obter muito mais instruções por vez (instruções mais eficazes por ciclo).
Resposta nº 3:
Como você pode "enganar" e prolongar artificialmente a contagem de ciclos, é possível executar duas instruções a cada ciclo (reduza pela metade a velocidade do relógio). Também é possível fazer algo a cada dois ticks em vez de um (dando uma velocidade de clock 2x, mas não alterando as instruções por segundo).