:: Organização de Computadores II ::






Pipelining

É uma forma de acelerar a máquina, construindo o hardware a partir de várias unidades funcionais e colocá-las como numa linha de montagem.Entenda unidades funcionais como estágios.

Estágios comuns a um Pipelining:
E1) Busca de instrução;
E2) Decodificação de instrução;
E3) Cálculo de endereço;
E4) Busca de operando;
E5) Execução de instrução.


A animação acima.: Um pipeline de cinco estágios. Os números são usados para rotular as instruções. A instrução marcada B é um desvio condicional.

Se uma dessas instruções for um desvio a máquina terá que esperar a execução do desvio para saber se vai apontar para a instrução seguinte ou se vai desviar efetivamente o controle para o chamado destino do desvio. Como o estágio que busca a instrução não sabe qual é até que o desvio seja executado, ele pára,e não pode ir adiante até que o desvio tenha sido executado.Em conseqüência disso o pipelining se esvazia, e somente depois de mais 5 ciclos que ele torna a executar instruções, isto é chamado penalidade de desvio.
Para contornar este problema o mais simples a fazer é assumir que o desvio não será realizado e continuar com todos os estágios mesmo que existam desvios. Conseqüentemente, se o desvio não for realizado, não perdemos tempo. Porém se o for, teremos que apagar as instruções que estiverem atrás do desvio, ou seja, esvaziar o pipelining.Esse processo de esvaziamento do pipelining se chama squashing.

Voltar