Necesito ayuda
-
Hola buenos días.
En la facultad me han realizado la siguiente pregunta y no me doy cuenta la respuesta.
" Out of order engine (motor de ejecución fuera de orden): los recursos que están siendo utilizados en una ejecución estén ocupados el mayor tiempo posible y en todo momento, esto es, cuando una instrucción se retrasa en ser ejecutada si las que le siguen no están dependiendo de esta, se ejecutan. Cuando estas últimas terminen de ejecutarse la que estaba retrasada ya tiene los operadnos que la retrasaban, se ejecuta y todo sigue de manera normal y fluida. Luego se vuelven a ordenar de modo original.
Este bloque permite ejecutar las instrucciones que no dependan unas de otras en el tiempo en que se encuentren listas y con los operandos necesario para ser ejecutadas."¿Se les ocurre un ejemplo de dos instrucciones (en Assembler) que sean independientes como para poder ejecutarse fuera de orden? ¿Y un par que no lo sean?
Si pueden tirarme una ayuda, muchas gracias.
-
El tema no es que instrucción, sino el orden. Por ejemplo, si tu tienes un add con dos registros, pero el valor no va a estar disponible, y en las que siguen el resultado de esa operación no se utiliza para nada, pues el procesador continua la ejecución de las instrucciones en el pipe.
Esto no es del todo asi, pero para que te hagas una idea
-
Pues dos instrucciones independientes es facil, dos operaciones aritmeticas cuyos operandos no presenten dependencias. En general dos operaciones cuyos operandos no presenten dependencias pueden ser ejecutadas fuera de orden.
Por ejemplo los dos siguientes no presenten dependencia:
ADD A, B, B ;Esto es sumo a y b lo guardo en B
ADD A, C, C ; Sumo A y C y lo guardo en C.Dos instrucciones que presenten dependencia como por ejemplo:
1. LD **, A ; Cargo desde la localidad de memoria a la que apunta B y lo guardo en A
2. ADD A, C, A; Sumo A con C y ,lo almaceno en ALas instrucciones anteriores no se pueden ejecutar fuera de orden, pues la instruccion 2 debe esperar a que el valor de la instruccion 1 este listo y que ademas avanace en el pipeline lo suficiente como para que el valor sea escrito en en el registro A y no se presente un hazard, aunque el hardware es el que se encarga de evitar estos hazards en las CPUs actuales.**