[Advcomparch] forwarding??
Nikos Anastopoulos
anastop at cslab.ece.ntua.gr
Thu May 29 14:27:42 EEST 2008
>Στις διαφάνειες , στο αρχείο Lec4-dynamic-2008.pdf
>απο την σελίδα 32 και μετά στο 1ο παράδειγμα Tomasulo
>στο "Register Result status" και στα "Reservation Stations"
>εμφανίζεται το "(M-M)" και αργότερα το (M-M+M).
>Μπορείτε να εξηγήσετε όσο αναλυτικά θέλετε εσείς τι σημαίνει αυτό;
Απλά με αυτόν το συμβολισμό σου λέει ότι το περιεχόμενο π.χ. του F8
που δίνεται από την SUBD, είναι στην ουσία το αποτέλεσμα της αφαίρεσης
των περιεχομένων δύο θέσεων μνήμης, δηλ. Μ(Α1)-Μ(Α2). Στις διαφάνειες
γράφουμε (Μ-Μ) πιο πολύ για λόγους χώρου, και είναι θέμα καθαρά
συμβολισμού. Το ίδιο ισχύει και για το (Μ-Μ+Μ) αργότερα.
Σημειώστε πάντως ότι στο register result status, όταν δεν εκκρεμεί
εγγραφή για κάποιον καταχωρητή (όταν δηλαδή δεν υπάρχει εντολή σε
κάποιο res. station η οποία θα γράψει τελικά στον καταχωρητή αυτό), η
τιμή του reg.res.status για τον καταχωρητή αυτό θα είναι 0.
Στο 1ο παράδειγμα των διαφανειών, γράφουμε επιπλέον (και καταχρηστικά
αν θέλετε) και το περιεχόμενο του καταχωρητή μετά την εγγραφή του
(π.χ. (M-M), M(A2), κλπ).
>Ήθελα να ρωτήσω αν υπάρχει 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.
More information about the Advcomparch
mailing list