Bonjour à tous,
Je suis en train de reprendre mes études et j'ai attaqué un master en informatique embarquée...hélas, venant du coté obscur (a.k.a : le développement web) j'ai de grosses lacunes en architecture.
Or me voici donc face à un problème concernant des bouts de code d'assembleurs (très courts) et je dois dire comment se comporte le pipeline.
Voici le détail de l'exercice sur lequel je bloque (ensuite j'indique aussi mes idées de réponses...
On a donc un pipeline en 5 étapes.
IF : on fetch les instructions
ID : on décode l'instruction et on lit les registres
X : on exécute ce qu'il y a à faire
M : on accède à la mémoire si nécessaire (load ou store)
W : on écrit dans le registre ce qui a été calculé
Il faut donc que j'indique comment les instruction des différents morceaux de code d'assembleur ci-dessous sont exécutées dans le cadre de ce pipeline.
Voici les bouts de code![]()
Code 1
Code 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CMP R1, #0 ; compare R1 to zero BEQ label1 ; branch to label1 if equal (assume R1 ≠ 0) ADD R2, R1 ; add R1 to R2 SUB R3, R4 ; subtract R4 from R3
Code 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ADD R0, R1 ; add R1 to R0 SUB R2, R0 ; subtract R0 from R2
Il faut décrire l’exécution de ces bouts de code avec un pipeline SANS forwarding et avec un pipeline AVEC forwarding. (forwarding = on peut utiliser un résultat directement après son exécution)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 LOAD R1, 20(R2) ; load the value at Mem(20+[R2]) into R1 SUB R0, R1 ; subtract R1 from R0 STORE R0, 20(R3) ; store R0 into Mem(20+[R3])
A cette adresse vous trouverez les résultats de mon travail :
http://www.scribd.com/doc/66268398
C'est un fichier Excel...Nettement plus facile de présenter mon travail dans un fichier Excel quand dans un tableau sur le SDZ.
Si ça pose problème dites le moi et je mettrai tout ça dans le forum.
Je vous remercie par avance si vous pouvez m'aider
Partager