67Close69
SCPCDOn the 2022-01-29 at 06:50pm
Voici le fichier avec le profiling.
Colonne 1 : Cycle 1 (en général lecture des registres)
Colonne 2 : Cycle 2 (en général tout ce qui est compute)
Colonne 3 : Cycle 3 (en général tout ce qui Writeback)

dans les colonnes :
R : read
W : write
M : Memory access
- : rien de spécial à indiquer

en résumé :
si il y a un "-" dans la colonne 1, c'est qu'il y a un équivalent du "nop" de fait à cause de plusieurs raisons possible (conflit de registres, accès mémoire, traitement plus long de l’instruction...)
si il y a un "-" dans la colonne 3, c'est qu'il y a un cycle mort

Le but est de minimiser les "-" dans la colonne 3 au maximum.
pour cela, il est possible de :
- réorganiser les instructions
- utiliser plus de registres (notamment retirer le max de movei par des moveta/movefa)
- remplacer les add successifs par des muls ou utiliser plusieurs registres pour faire le calcul afin de faire la moitié du calcul en parallèle et d'add les 2 à la fin

J'ai pris comme hypothese (pour me simplifier la vie) que tout tourne en mémoire interne
Je l'ai fait rapidement donc y a peut être des erreurs, mais je pense que dans l'ensemble ça doit être bon.


tromb Fichier joint : lsp_SCPCD.s

PS :
je vais donner plus d'explication plus tard, on m’appelle smile