Execução Especulativa
Vamos supor que uma dessas instruções genéricas é um desvio condicional. O que a execução fora de ordem vai fazer? Se o processador implementar uma função chamada execução especulativa (todos os processadores modernos fazem isso), ele executará ambos os desvios. Considere o exemplo abaixo:1. instrução genérica
2. instrução genérica
3. se a=<b vá para instrução 15
4. instrução genérica
5. instrução genérica
6. instrução genérica
7. instrução matemática
8. instrução genérica
9. instrução genérica
10. instrução matemática
…
15. instrução matemática
16. instrução genérica
…
Quando o mecanismo da execução fora de ordem analisar este programa, ele vai puxar a instrução 15 para uma das FPUs, já que ele vai precisar de uma instrução matemática para preencher uma das FPUs que estariam ociosas. Então, em um dado momento, podemos ter ambos os desvios sendo processados ao mesmo tempo. Se quando o processador terminar de processar a terceira instrução a for maior que a b, então o processador irá simplesmente descartar o processamento da instrução 15. Você pode achar que isso é perda de tempo, mas na verdade não é. Não custa nada ao processador executar aquela instrução específica, porque a FPU estaria ociosa de qualquer maneira. Por outro lado, se a=<b o processador terá um aumento no desempenho, já que quando a instrução 3 pedir a instrução 15 ela já terá sido processada, indo direto para a instrução 16 ou até mais longe, se a instrução 16 também já tiver sido processada em paralelo pelo mecanismo de execução fora de ordem.
É claro que tudo que explicamos neste tutorial é uma simplificação para fazer com que esse tema tão técnico fique um pouco mais fácil de ser entendido.
- 2
- 2
Respostas recomendadas
Crie uma conta ou entre para comentar
Você precisa ser um usuário para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar agora