Καλησπέρα,

 

Θα ήθελα να ρωτήσω τι προβλέπει ο αλγόριθμος tomasulo στην ακόλουθη περίπτωση. Θα χρησιμοποιήσω σαν παράδειγμα την περσινή άσκηση, όπως αυτή λύνεται στο site:

 

Η εντολή DIV.D της γραμμής 3 μαρκάρει τον καταχωρητή F2. Έπειτα η SUB.D της γραμμής 10 σημειώνει πως πρέπει να περιμένει να απομακρυνθεί η σημαία Mul1 πριν δεσμεύσει τον πόρο της F2. Οι δύο αυτές εντολές περιμένουν ως τον κύκλο 18 οπότε και η DIV.D της γραμμής 11 γίνεται issue. Τότε αυτή κάνει overwrite την σημαία Mul1 στον F2 και την αντικαθιστά με τη δική της Mul3.

 

Τι πρέπει να κάνει τότε η SUB.D; Να δει πως η σημαία Mul1 έχει διαγραφεί και να γίνει execute. Αυτό θα ήταν λάθος, καθώς η πρώτη DIV.D δεν έχει επιστρέψει ακόμα αποτέλεσμα.

Να περιμένει να απομακρυνθεί η σημαία Mul3; Και αυτό θα ήταν λάθος γιατί αυτή θέλει το αποτέλεσμα της πρώτης DIV.D.

 

Στην λύση φαίνεται πάντως πως η SUB.D «αισθάνεται» το τέλος της πρώτης DIV.D στον κύκλο 39 και ξεκινά το execute της.