Шукаєте відповіді та рішення тестів для CA & OS (Computer Architecture) - EFREI - Fall 2026? Перегляньте нашу велику колекцію перевірених відповідей для CA & OS (Computer Architecture) - EFREI - Fall 2026 в moodle.lab.ii.agh.edu.pl.
Отримайте миттєвий доступ до точних відповідей та детальних пояснень для питань вашого курсу. Наша платформа, створена спільнотою, допомагає студентам досягати успіху!
Calculez l'accélération par rapport à l'exécution du programme sur le processeur séquencé.
accélération = CPIseq / CPIpip
Quelle est la valeur d'accélération ?
L'aléa RAW est l'un des problèmes les plus courants liés à l'exécution pipelinée et parallèle des instructions par le processeur. Ce type d'aléa survient lorsqu'une instruction ultérieure (j) requiert le résultat d'une instruction précédente (i) pour s'exécuter, mais que l'exécution de cette dernière (i) n'est pas encore terminée (fin de la phase WB du cycle d'instruction en MIPS). Si l'exécution du programme n'est pas interrompue, il se peut que l'instruction ultérieure (j) effectue des opérations sur un argument incorrect : la valeur correcte de l'argument de l'instruction (j) n'est pas disponible avant la fin de l'exécution de l'instruction précédente (i). Ce type d'aléa peut être observé lors de l'exécution du programme d'exemple :
;MIPS64 RAW hazard example .dataA: .word 2B: .word 3C: .word 7D: .word 0 .textmain: ld r1,A(r0) ld r2,B(r0) dadd r3,r1,r2 sw r3,C(r0) lw r4,C(r0) dadd r5,r1,r4 sw r5,D(r0) halt
Analysez ce programme et calculez le nombre de cycles d'horloge nécessaires à son exécution sur le processeur séquentiel. Supposons que l'exécution de chaque instruction prenne 5 cycles d'horloge.
Combien de cycles d'horloge sont nécessaires pour exécuter ce programme sur un processeur séquentiel ?
Dans cette section, vous tenterez d'évaluer l'impact de l'exécution en pipeline du programme sur ses performances.
Préparez et chargez le programme de test (copiez et collez le code suivant) : .dataA: .word 10B: .word 8C: .word 0 .textmain: ld r4,A(r0) ld r5,B(r0) dadd r3,r4,r5 sd r3,C(r0) halt
Dans le menu « Configurer », cochez et activez l’option « Activer le transfert ».
Exécutez le programme en mode d'instruction monocycle . Observez la fenêtre du pipeline et le diagramme du cycle d'horloge.
Quel est le nombre de cycles d'horloge ( n ) utilisés pour l'exécution de ce programme qui apparaît dans la fenêtre « Statistiques » ?
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: l.d f2,A(r0) l.d f3,B(r0) l.d f4,C(r0) l.d f5,D(r0) l.d f6,E(r0) add.d f2,f2,f3 sub.d f2,f2,f4 mul.d f4,f5,f6 s.d f2,res(r0) halt
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.
Analysez le programme et essayez d'évaluer la valeur de res si l'exécution de l'instruction qui provoque le blocage WAR a été poursuivie sans attendre la fin de l'exécution de l'instruction précédente.
Valeur de ressource « incorrecte » calculée :
Analysez le programme et essayez d'évaluer la valeur de res si l'exécution de l'instruction qui provoque le blocage WAW a été poursuivie sans attendre la fin de l'exécution de l'instruction précédente.
Valeur de ressource « incorrecte » calculée :
This type of hazard may occur when two adjacent instructions (i) and (j) save the result of their execution to the same resource (register, memory cell) and the time of the execution of the earlier instruction (i) is longer than the time of the execution instruction (j). It may cause an erroneous result of executing this sequence of instructions to be written into the resource. The typical way to remove such a dependency is to delay the completion of the execution instruction (j) until the execution of the instruction (i) is completed. To illustrate this problem, the following code will be used:
;WinMIPS64 WAW hazard example .dataA: .double 15.0B: .double 5.0C: .double 4.4D: .double 1.0E: .double 3.14.0res: .double 0.0 .textmain: l.d f2,A(r0) l.d f3,B(r0) l.d f4,C(r0) l.d f5,D(r0) l.d f6,E(r0) nop mul.d f6,f2,f4 sub.d f6,f2,f3 add.d f3,f6,f4
s.d f3,res(r0) halt
Note très importante ! Avant d’exécuter ce programme, assurez-vous que le mécanisme de transfert de données est désactivé . Si le transfert de données est activé, le matériel MIPS ne peut pas détecter, signaler et prévenir les risques liés aux courants d’arrêt automatiques (WAW).
Exécutez le programme d'exemple. Analysez le diagramme du cycle d'horloge et trouvez l'instruction qui provoque le blocage WAW.
Indiquez l'instruction qui a causé le risque de WAW.
Quelle est la valeur stockée dans la variable res à la fin de l'exécution du programme ?
Expliquez pourquoi l'exécution de l'instruction indiquée dans la réponse à la question précédente a dû être suspendue.
Calculez le gain de vitesse par rapport à l'exécution en pipeline du programme avec le mécanisme DF désactivé.
speedupDF = CPIpip / CPIpipDF
Quelle est la valeur d'accélération ?