✅ The verified answer to this question is available below. Our community-reviewed solutions help you understand the material better.
Ce type d'aléa peut survenir lorsque l'instruction suivante (j) stocke le résultat de son exécution dans la ressource (registre ou emplacement mémoire) utilisée comme argument par l'instruction précédente (i). Le problème apparaît lorsque l'exécution de l'instruction précédente (i) est retardée et que l'instruction suivante (j) se termine avant que l'instruction précédente (i) puisse recevoir son argument. Cela peut entraîner un résultat erroné pour l'instruction (i). La méthode classique pour supprimer cette dépendance consiste à retarder l'exécution de l'instruction (j) jusqu'à la fin de l'exécution de l'instruction (i). Pour illustrer ce problème, le code suivant sera utilisé :
;WinMIPS64 WAR hazard example .dataA: .double 10.0B: .double 5.0C: .double 3.5D: .double 1.0E: .double 3.14.0res: .double 0.0 .textmain: LDC1 f2,A(r0) LDC1 f3,B(r0) LDC1 f4,C(r0) LDC1 f5,D(r0) LDC1 f6,E(r0) add.d f2,f2,f3 sub.d f2,f2,f4 mul.d f4,f5,f6 SDC1 f2,res(r0) syscall 0
Activez le mécanisme de transfert de données et exécutez le programme d'exemple. Analysez le diagramme du cycle d'horloge et identifiez l'instruction provoquant le blocage WAR .
Marquez l'instruction qui provoque le blocage de WAR.