Considere el siguiente programa de instrucciones (incompleto) para una canalización MIPS donde las cargas y las tiendas toman tres ciclos:
0 1 2 3 4 5 6
...
ADDI R1,R1,#1 F D E M W
SUB R4,R3,R2 F D E M W
SW R1,0(R3) F D E M W
...
Esto es parte de una solución al problema de la tarea donde nos dijeron que solo hay hardware de reenvío para ex > ex y mem- > ex.
Mi pregunta es: ¿cómo obtiene el SW el valor correcto para R1? Claramente depende del resultado del ADDI. Pero cuando SW intenta leer R1 desde el archivo de registro, ADDI aún no ha escrito el resultado en el archivo de registro.
Creo que este es un malentendido fundamental de la mina con respecto a los registros de tuberías y el reenvío. Mi conjetura es que el ADDI podría reenviar el valor de R1 a través del reenvío de mem > ex, y se "quedaría", siendo empujado hacia adelante a través de los registros de la tubería hasta que sea necesario en la etapa mem. Pero cada descripción que he visto de reenviar a la etapa ex implica empujar el resultado en la ALU, lo que sería inútil aquí.