O termo pipelining designa um método de busca e descodificação de instruções (pré-processamento) no qual, a cada instante, várias instruções do programa se encontram em estágios diversos de busca ou descodificação. Numa situação ideal, o pipelining acelera o tempo de execução, garantindo que o microprocessador não seja obrigado a esperar pelas instruções. Quando a execução de uma instrução é concluída, a outra já está pronta e à espera.
Os processadores de computador podem lidar com milhões de instruções por segundo. Uma vez que uma instrução é processada, a próxima linha é processada, e assim por diante. Um pipeline permite que várias instruções possam ser processadas ao mesmo tempo. Enquanto uma instrução está a ser processada, outras instruções podem ser sujeitas a tratamento num local diferente. Sem um pipeline, cada instrução teria que esperar que a anterior termine antes que pudesse ser acedida.
Para entender o benefício de um pipeline, podemos imaginar que uma fábrica de automóveis teria que esperar que cada carro estivesse totalmente concluído antes de iniciar o próximo. Isso seria terrivelmente ineficiente. Faz muito mais sentido trabalhar em muitos carros de uma só vez, completando-os numa etapa de cada vez. Isto é o que um pipeline permite num computador. Pipelining, como é chamado, consegue manter cerca de seis instruções ao mesmo tempo no processador em diferentes fases de processamento. Pipelining é o processo de acumulação e execução de instruções de computador e as tarefas do processador através de um pipeline lógico. Ele permite armazenar, gerar e executar tarefas e instruções num processo ordenado.
Os pipelines podem ser utilizado tanto para o processador como para aceder à memória (DRAM).
Desenvolvimentos do pipelining
A fim de tornar os processadores ainda mais rápidos, vários métodos de optimização de pipelines têm sido desenvolvidos.
O Superpipelining refere-se a dividir o pipeline em mais passos. Quanto mais fases pipelines existir, mais rápido o pipeline é, porque cada fase é mais curta. Idealmente, um pipeline com cinco etapas deve ser cinco vezes mais rápido que um processador sem pipeline (ou melhor, um pipeline com uma fase). As instruções são executadas na velocidade a que se completa cada fase, e cada fase tem um quinto da quantidade de tempo que uma instrução pipeline de uma fase leva. Assim, um processador com um pipeline de 8 etapas (o MIPS R4000) será ainda mais rápido do que o seu homólogo de 5 etapas. O MIPS R4000 corta o seu pipeline em mais fases, e divide alguns passos em dois. A pesquisa de instruções, por exemplo, agora é feito em duas etapas, em vez de uma. As fases são como é apresentado:
- Pesquisa de instruções (primeira metade)
- Pesquisa de instruções (segunda metade)
- Pesquisa de Registos
- Instrução Executar
- Data Cache Access (primeira metade)
- Data Cache Access (segunda metade)
- Verificação do tag
- Escrever novamente
Pipelining Superscalar envolve múltiplos pipelines em paralelo. Os componentes internos do processador são replicados para que ele possa lançar múltiplas instruções em algumas ou todas as suas fases de pipeline. O Sistema RISC / 6000 tem um pipeline bifurcado com caminhos diferentes para instruções de números racionais e inteiros. Se houver uma mistura de ambos os tipos num programa, o processador pode manter as duas bifurcações e funcionar simultaneamente. Ambos os tipos de instruções partilham as duas etapas iniciais (pesquisa de instrução e expedição de instruções) antes da bifurcação. Muitas vezes, porém, o pipelining superscalar refere-se a várias cópias de todos as fases de pipeline. Muitas das máquinas de hoje, tentam encontrar duas a seis instruções que podem ser executadas em cada fase do pipeline. Se algumas das instruções são dependentes, apenas a primeira instrução ou instruções são emitidas.
Os pipelines dinâmicos têm a capacidade de programar. Um pipeline dinâmico é dividido em três unidades: a pesquisa de instrução e unidade de descodificação, e unidades funcionais. Cada unidade tem de executar fases de reserva, que atuam como buffers e mantenham os operandos e operações.
Enquanto as unidades funcionais têm a liberdade de executar fora de ordem, a pesquisa de instrução / descodificação e as unidades devem operar de maneira a manter o comportamento do pipeline simples. Quando a instrução é executada e o resultado é calculado, a unidade decide quando é seguro armazenar o resultado. O processador pode programar outras instruções para serem executadas até que o bloqueio seja resolvido. Isso, juntamente com a eficiência de múltiplas unidades de execução das instruções, simultaneamente, faz do pipeline dinâmico uma alternativa atraente.