Duda con el ejemplo al final de las notas

Duda con el ejemplo al final de las notas

de Federico Paredes Giacosa -
Número de respuestas: 1

En la seccion final de ejecucion fuera de orden hay un ejemplo:

add r1, r2, r3
add r5, r2, r4
sub r4, r1, r3

En el que las primeras dos instrucciones pueden ejecutarse en cualquier orden, pero luego dice que la tercer instruccion depende de que termine la primer instruccion y una vez que lo haga se pondrá como pronta para ejecutar la tercera. ¿No debería decir que debe esperar también a que termine la segunda instruccion? porque si se ejecutase la tercera antes que la segunda se produciría un WAR con r4, ¿no?

En respuesta a Federico Paredes Giacosa

Re: Duda con el ejemplo al final de las notas

de Federico Rivero -

Estimado:

Según lo explicado en las notas es correcta tu aclaración, la instrucción tres no debería terminar de ejecutar antes de que la segunda haya comenzado a hacerlo, puesto que de ese modo se estaría violando el orden lógico del programa. Dicho esto, generalmente lo procesadores que ejecutan fuera de orden utilizan otras técnicas para evitar los hazards WaW y WaR, como por ejemplo renombrado de registros, el cual básicamente consiste en mantener un juego de registros invisible en el cual mantener los resultados parciales de instrucciones antes de que sean escritos en el banco de registros de la arquitectura.

Estas y otras técnicas avanzadas son vistas en el curso de Aspectos Avanzados de Arquitectura de Computadoras, el cual ¡está buenísimo y te re conviene hacerlo :D!

Saludos!

       Federico