Lidando com desvios de pipeline
Um pipeline simples tem penalidades na execução de uma instrução de desvio, pois precisa buscar duas instruções e pode fazer a escolha errada.
● A estratégia é replicar os estágios iniciais do pipeline, permitindo que as duas instruções possíveis do desvio sejam buscadas, cada uma num fluxo independente.
● Os problemas envolvidos com essa estratégia são:
– Atrasos no acesso à memória e aos registradores com múltiplos fluxos. – Instruções de desvio adicionais podem entrar no pipeline antes que a decisão de desvio original seja resolvida, resultando em fluxos adicionais. ● Ex.: IBM 370/168 e IBM 3033.
Busca Antecipada da Instrução-alvo de desvio:
Quando um desvio condicional é reconhecido, o “alvo” (instrução a ser executada) do desvio é lido antecipadamente, além da instrução que segue o desvio.
● Esse alvo é salvo até que a instrução de desvio seja executada.
● Se o desvio for tomado, o alvo já foi obtido.
● Ex.: IBM 360/91.
Memória de Laço de Repetição:
Memória pequena e rápida mantida pelo estágio de busca de instrução do pipeline, a qual armazena as N instruções lidas mais recentemente na sequência.
● Se o desvio está para ser tomado, o hardware primeiro procura se o alvo do desvio já está no buffer. Se estiver, a próxima instrução é obtida do buffer.
● Benefícios:
– Buffer armazena as N próximas instruções, sem necessidade de acesso à memória. – Se o alvo do desvio estiver apenas algumas posições à frente da instrução de desvio, o alvo já estará no buffer. Caso típico de instruções
IF-THEN-ELSE.
– Estratégia adequada para tratar laços/iterações, especialmente se todas as instruções do laço puderem ser armazenadas no buffer. Custo de acesso somente na primeira vez.
● Semelhante à cache de instruções, porém com menor tamanho e menor custo.
● Ex.: máquinas CDC (Star-100, 6600, 7600), CRAY-1, Motorola
68010 => instrução DBcc (decremento e desvio de condição).
[pic]
Previsão de Desvio:
● A