✅ Перевірена відповідь на це питання доступна нижче. Наші рішення, перевірені спільнотою, допомагають краще зрозуміти матеріал.
Un aléa structurel survient lorsque deux instructions ou plus, se trouvant à des phases d'exécution différentes, demandent l'accès à la même ressource matérielle (mémoire, unité d'exécution, etc.). En MIPS, ce problème est facilement observable lors de l'utilisation de l'unité de division en virgule flottante. Le programme ci-dessous illustre cette situation.
v: .double 0.0 y: .double 5.0 .text div.d f5,f3,f2 ;f5=x/y div.d f6,f2,f3 ;f6=y/x add.d f8,f5,f6 ;f8=(x/y)+(y/x) add.d f4,f3,f3 mul.d f13,f2,f4 .dataA: .word 3x: .double 10.0z: .double 0.0 main: LDC1 f2,x(r0) ;f2=x (ld.d f2,x(r0) ) LDC1 f3,y(r0) ;f3=y (ld.d f3,y(r0) ) mul.d f7,f13,f2 mul.d f9,f4,f13 SDC1 f8,z(r0) SDC1 f9,v(r0) syscall 0
Analysez ce programme et calculez manuellement le nombre de cycles d'horloge nécessaires à son exécution sur un processeur séquentiel. Supposons que l'exécution de chaque instruction prenne 5 cycles d'horloge, que l' instruction div.d prenne 23 cycles d'horloge supplémentaires, mul.d 6 cycles d'horloge supplémentaires et add.d 3 cycles d'horloge supplémentaires .
Combien de cycles d'horloge sont nécessaires pour exécuter ce programme sur un processeur séquentiel ?