MIPS Pipeline Forwarding to MEM

2

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í.

    
pregunta Justin

1 respuesta

3

Recuerde que el resultado de ADDI se conocerá al final del ciclo 2, específicamente nuestro nuevo valor para R1 estará disponible:

  • en ciclo 3 (etapa M) en E / M , y
  • en ciclo 4 (etapa W) en M / W

(donde E / M y M / W son registros de canalización).

Está disponible en ambos lugares porque debemos continuar llevándolo hasta que lleguemos a la fase de reescritura.

Luego, viendo solo una instrucción SW , hay dos lugares donde podríamos enviar los datos de la palabra a tiempo para SW :

  • en ciclo 4 (etapa E) que reemplaza el valor de R1 que estaba en D / E
  • en ciclo 5 (etapa M) que reemplaza el valor de R1 que estaba en E / M

Sus restricciones de problemas permiten el reenvío M- > E y el reenvío E- > E. M- > E funciona aquí cuando miras ciclo 4 . Esto se debe a que el ciclo 4 no es demasiado tarde para reenviar el SW , y nuestro valor R1 está disponible en ese momento en el registro M / W .

    
respondido por el DuckMaestro

Lea otras preguntas en las etiquetas