Pipeline
Os ciclos de uma instrução podem ser divididos em etapas menores como busca, busca de operandos, execução e interrupção. A técnica de pipeline consistem em executar de forma paralela essas fazes entre varias instruções. Como exemplo imagine uma instrução sendo executada enquanto ao mesmo tempo uma outra esta sendo buscada. Este exemplo configura um pipeline de dois estágios com a técnica de busca antecipada.
Um pipeline mais realista teria por exemplo 6 estágios compostos por:
BI - Busca de instrução.
DI - Decodificação da instrução.
CD - Calculo dos endereços dos operandos.
BO - Busca dos operandos.
EI - Execução
EO - Escrita do resultado.
Quando o pipe estiver completo ele vai ser aproximadamente 6 vezes mais rápido do que uma arquitetura linear.
Os pipes não são perfeitos há vários problemas com esta técnica. Por exemplo se uma instrução buscada depender do resultado da instrução ainda em execução e não terminada no pipeline?
Há também o problema de acesso simultâneo a recursos, e o problema dos desvio.
Existem algumas técnicas que podem resolver estes problemas, como o uso de múltiplos fluxos, a busca antecipada da instrução-alvo do desvio, previsão de desvio usando upcode, previsão de desvio baseado em historias, dentre outra.
Uma coisa a ser notada é que o uso do pipeline não faz a execução de uma instrução mais rápida O ganho de desempenhos esta no fato de executar varias instruções ao mesmo tempo.
O pdf e abaixo da UFRJ aborda este tema com um pouco mais de profundidade.
http://equipe.nce.ufrj.br/gabriel/microarq/Pipeline.pdf
O pdf e abaixo da UFRJ aborda este tema com um pouco mais de profundidade.
http://equipe.nce.ufrj.br/gabriel/microarq/Pipeline.pdf

Comentários
Postar um comentário