[Advcomparch] Περί Tomasulo WAW Hazard

Alex Dimo divol.alex at hotmail.com
Sat Jun 2 18:00:13 EEST 2012


Μελετάω τον Tomasulo αλγόριθμο και νομίζω πως έχω καταλάβει πώς δουλεύει,
όμως δεν μου είναι σαφές το πώς αποφεύγονται τα WAW Hazards.

 

Πιο συγκεκριμένα στις διαλέξεις λέγεται πως όταν ολοκληρώσει τον υπολογισμό
της μία εντολή (κύκλος που γράφεται στο field Exec-Comp), στον επόμενο κύκλο
ελευθερώνεται το αποτέλεσμα στον Common Data Bus (και το παίρνει όποιος το
χρειαστεί), ενώ ταυτόχρονα πηγαίνει και γράφει το αποτέλεσμα στον αντίστοιχο
καταχωρητή στο Register File. Στον επόμενο κύκλο ο πίνακας Register Result
Status ΔΕΝ θα έχει περιεχόμενο στο αντίστοιχο field που αφορά αυτόν τον
Register (εφόσον δεν έχει γίνει δέσμευση του καταχωρητή μετά την δέσμευση
της εντολής μας που μόλις έφερε αποτέλεσμα), ή θα έχει αντιστοίχιση σε άλλο
RS, το οποίο «κλείδωσε» τον συγκεκριμένο καταχωρητή αργότερα (εντολή που
γράφει στον ίδο καταχωρητή, επόμενη στην ροή του προγράμματος).

 

Στην τελευταία περίπτωση όμως, αν η επόμενη εντολή που «κλείδωσε» αργότερα
τον καταχωρητή, επιστρέψει γρηγορότερα αποτέλεσμα, τότε πρώτη θα γράψει στο
Common Data Bus (που δεν μας πειράζει, αφού θα φέρει ταυτότητα το δεδομένο,
από ποιον RS προήλθε) και πρώτη θα γράψει στο Register File, σύμφωνα με τον
παραπάνω συλλογισμό, κάτι το οποίο θα δηιουργούσε WAW Hazard, παρά το
Register Renaming.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cslab.ece.ntua.gr/pipermail/advcomparch/attachments/20120602/8d95b868/attachment.htm>


More information about the Advcomparch mailing list