Entendiendo la ramificación de instrucciones

0

Necesito ayuda para entender la solución del manual de la solución. La pregunta es del ejercicio 4.22.1 del capítulo 4 en el libro Organización y diseño de computadoras por Patterson y Hannessey (4ª edición). La pregunta es sobre la ramificación en la línea de instrucciones.

  

La pregunta
    Suponemos que el siguiente código MIPS se ejecuta en un procesador canalizado   con un pipeline de 5 etapas, un reenvío completo y un predictor de ramificación basado en la predicción.     Considere la secuencia de instrucciones:
Label1: LW R2,0(R2)
BEQ R2,R0,Label ; Taken once, then not taken
OR R2,R2,R3
SW R2,0(R5)
    Dibuje el diagrama de ejecución de la tubería para este código, asumiendo   no hay ranuras de retardo y las ramas se ejecutan en la etapa EX.

La solución dada es la siguiente:

  

La solución

La duda
No entiendo por qué en el 4º ciclo LW tiene *** (subrayado en azul). ¿No podemos ejecutar ID de LW en el cuarto ciclo? ¿Es una regla no dicha que si la etapa de toma de decisiones de la rama (que está subrayada en rojo EX de BEQ ) se retrasa (aquí debido a la dependencia de los datos en el primer LW para R2 ), entonces retrase toda la correspondientes etapas siguientes en las siguientes instrucciones?

    
pregunta Mahesha999

1 respuesta

1

Entonces, se insertan "burbujas" o paradas debido a las dependencias después de que la instrucción decodifique la instrucción con la dependencia (el BEQ). Parece que te sientes cómodo con esto. Sin embargo, como resultado, el resto de la tubería (que contiene la segunda LW) también se detiene.

Considérelo así: no es posible detener una instrucción y no detener las instrucciones que la siguen. Eso requeriría que dos instrucciones estuvieran en la misma etapa de canalización al mismo tiempo: si LW no se detuviera también, entonces el EX de la BEQ y el EX de la LW se producirían en el mismo ciclo de reloj: ¡no es posible!

    
respondido por el uint128_t

Lea otras preguntas en las etiquetas