Buenas, escribo para realizar una consulta.
Suponiendo que tenemos el pipeline visto en clase con etapas IF, ID, EX, MEM, WB y las siguientes instrucciones:
Inst. 1 - lw r2, 20(r1)
Inst. 2 - and r4, r2, r3
Sería correcto que no haya espera en la segunda instrucción si se hace forwarding de la EX de la primera instrucción a la EX de la segunda?
O debería esperar 1 ciclo de reloj durante la ID de la instrucción 2, para tomar el valor temporal de r2 como salida de la etapa MEM de la primera instrucción dado a que la primera instrucción hace una carga de memoria?
Gracias!
Estimado:
Es correcto lo segundo que decís. La isntrucción 2 debe esperar un ciclo. El forwarding se hace desde el pipe MEM/WB hasta la entrada de la ALU.
Saludos,
Federico
Esto es porque la instrucción es una carga de memoria no? Si fuera un ADD de 2 registros por ejemplo, podría ir directo desde la salida de la ALU a la entrada de la ALU?