Ήθελα να ρωτήσω αν υπάρχει forwarding μεταξύ των εντολών που εκτελούνται στην ίδια μονάδα. Για παράδειγμα: DSGTUI R3, R1, #800 BEQZ R3, foo Μπορεί το αποτέλεσμα της DSGTUI να διοχετευτεί στην επόμενη εντολή αμέσως μετά το στάδιο execute ή πρέπει να περιμένει και το στάδιο WB??
Aν υποθέσουμε ότι στον κύκλο k ολοκληρώνεται η εκτέλεση της DSGTUI, τότε η εγγραφή στο CDB της τιμής του R3 θα γίνει στον κύκλο k+1, οπότε η εγγραφή της τιμής αυτής στο αντίστοιχο πεδίο Vj του res. station όπου βρίσκεται η BEQZ (το οποίο είναι στην ουσία κάποιο είδος forwarding) θα γίνει και αυτή στον κύκλο k+1 (το CDB μεταφέρει μια τιμή στους προορισμούς που την χρειάζονται ταυτόχρονα). H εκτέλεση επομένως της BEQZ (η αντίστροφη μέτρηση στην ουσία των κύκλων που διαρκεί) θα αρχίσει από τον κύκλο k+2.
N.
Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
Αν έχουμε εκτέλεση μιας εντολής μονάδας ακεραίων στον κύκλο K τότε γίνεται ή όχι να έχουμε στον ιδιο κύκλο Load/Store ή εντολή στην FPU με διαφορετικά ορίσματα ?
Εννοώ, να έχουμε στην αλλαγή του loop απο το 1ο στο 2ο, ταυτόχρονη χρησιμοποίηση του EX στον ίδιο κύκλο απο τη τελευταία εντολή του 1ου loop και την πρώτη εντολή του 2oυ loop.
Αν αντιλαμβάνομαι σωστά στην περίπτωση μας κάτι τέτοιο δεν γίνεται οπότε θέλουμε stall και τώρα που το σκέφτομαι θα θέλαμε ο επεξεργαστής να υποστηρίζει SMT για κάτι τέτοιο.