[Advcomparch] 3η Άσκηση - register flags overwrte

Nikos Anastopoulos anastop at cslab.ece.ntua.gr
Thu May 26 23:15:49 EEST 2011


Καλησπέρα,

On 05/26/2011 09:53 PM, George Z.P. wrote:
> Καλησπέρα,
> 
>  
> 
> Θα ήθελα να ρωτήσω τι προβλέπει ο αλγόριθμος tomasulo στην ακόλουθη
> περίπτωση. Θα χρησιμοποιήσω σαν παράδειγμα την περσινή άσκηση, όπως αυτή
> λύνεται στο site:
> 
>  
> 
> Η εντολή DIV.D της γραμμής 3 μαρκάρει τον καταχωρητή F2. Έπειτα η SUB.D της
> γραμμής 10 σημειώνει πως πρέπει να περιμένει να απομακρυνθεί η σημαία Mul1
> πριν δεσμεύσει τον πόρο της F2. 

Δεν είναι ακριβώς έτσι. Για να γίνει πιο κατανοητό, θυμίζω λίγο τη
σημασία του Register Result Status: ανά πάσα στιγμή, δείχνει ποιος
reservation station είναι εκείνος που θα παράξει την πιο πρόσφατη τιμή
(στη σειρά προγράμματος) για έναν συγκεκριμένο καταχωρητή (εφόσον βέβαια
υπάρχουν μία ή περισσότερες εντολές εν εκτελέσει που τον έχουν σαν
output operand, διαφορετικά προσπελάζεται κατευθείαν το register file).

Τη στιγμή που γίνεται issue η SUB.D επομένως συμβουλεύεται τον RSS και
βλέπει ότι ο F2 θα παραχθεί από την εντολή που εκείνη τη στιγμή
βρίσκεται στον Mul1, την 1η DIV.D δηλαδή. Η SUB.D κρατά αυτήν την
πληροφορία στο πεδίο Q, *και δεν χρειάζεται να ξανασυμβουλευθεί στο
μέλλον τον RSS* -- μόλις η DIV.D στον Mul1 ολοκληρωθεί, o αλγόριθμος θα
κάνει αναζήτηση στα πεδία Q όλων των reservation stations για να δει
ποιος περιμένει το αποτέλεσμά της, και έτσι θα μεταδόσει την τιμή αυτή
στους res. stations (στα πεδία V) μέσω του CDB.

Όταν με τη σειρά της η DIV.D της γραμμής 11 γίνει issue, θα κάνει update
τον RSS για τον F2 γράφοντας τη "διεύθυνση" του reservation station όπου
θα εκτελεστεί (Mul3), πληροφορώντας έτσι όλες τις επόμενες εντολές ότι,
όποια χρειαστεί τον F2, θα τον πάρει από τον Mul3. Και με τη σειρά της
αυτή η πληροφορία θα είναι έγκυρη μέχρι την επόμενη εντολή που θα έχει
σαν output operand τον F2.

Ν.





More information about the Advcomparch mailing list