[Advcomparch] lea stalls

Geoffrey Tolwyn aarbron.86 at gmail.com
Tue Jun 23 17:13:28 EEST 2009


Έχω μια ερώτηση σχετικά με το effective address calculation. Έστω ο παρακάτω
κώδικας (της άσκησης)

    S.D    F10    8    R1
    DADDI    R1    R1    #16

Η store θα κάνει το effective address calculation (memory[R1+8]) κατά το EX
στάδιό της σύμφωνα με την εκφώνηση. Έστω τώρα ότι η store περιμένει όρισμα
(F10), οπότε δεν μπορεί να αρχίσει να εκτελείται. Επίσης, έστω ότι  δεν
υπάρχει εξάρτηση στον R1.

Η add δεν μπορεί να αρχίσει να εκτελείται, γιατί αν τελειώσει (WB) πριν τη
store, η store θα αποτύχει στο σωστό calculation του effective address
(R1+8).
Σωστά ως εδώ;

Όμως, στις περσινές λύσεις της άσκησης tomasulo (πρώτο μέρος, χωρίς ROB),
αυτό δε γίνεται. Στον κύκλο 10, η DADDUI γράφει αποτελέσμα στον R2, ενώ η
store που είναι πριν από αυτήν εκτελείται (EX) στον κύκλο 27. Αν σε εκείνον
τον κύκλο γίνει το effective address calculation (για το lea της store), η
σημασιολογία του προγράμματος δεν είναι ορθή. Από ότι καταλαβαίνω, το
effective address calculation (ο υπολογισμός R2+0 για αυτήν τη store) έγινε
κατά το IS. Έτσι δε δημιουργείται πρόβλημα με εντολές που ακολουθούν και
πειράζουν την τιμή του R2. Κατάλαβα λάθος;

Ζητώ προκαταβολικά συγγνώμη για την παιδαριώδη ερώτηση.
Ευχαριστώ για τυχόν διευκρίνηση
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cslab.ece.ntua.gr/pipermail/advcomparch/attachments/20090623/52b6ab10/attachment.htm>


More information about the Advcomparch mailing list