Έχω μια ερώτηση σχετικά με το effective address calculation. Έστω ο παρακάτω κώδικας (της άσκησης)<br><br> S.D F10 8 R1<br> DADDI R1 R1 #16<br><br>Η store θα κάνει το effective address calculation (memory[R1+8]) κατά το EX στάδιό της σύμφωνα με την εκφώνηση. Έστω τώρα ότι η store περιμένει όρισμα (F10), οπότε δεν μπορεί να αρχίσει να εκτελείται. Επίσης, έστω ότι δεν υπάρχει εξάρτηση στον R1.<br>
<br>Η add δεν μπορεί να αρχίσει να εκτελείται, γιατί αν τελειώσει (WB) πριν τη store, η store θα αποτύχει στο σωστό calculation του effective address (R1+8).<br>Σωστά ως εδώ;<br><br>Όμως, στις περσινές λύσεις της άσκησης tomasulo (πρώτο μέρος, χωρίς ROB), αυτό δε γίνεται. Στον κύκλο 10, η DADDUI γράφει αποτελέσμα στον R2, ενώ η store που είναι πριν από αυτήν εκτελείται (EX) στον κύκλο 27. Αν σε εκείνον τον κύκλο γίνει το effective address calculation (για το lea της store), η σημασιολογία του προγράμματος δεν είναι ορθή. Από ότι καταλαβαίνω, το effective address calculation (ο υπολογισμός R2+0 για αυτήν τη store) έγινε κατά το IS. Έτσι δε δημιουργείται πρόβλημα με εντολές που ακολουθούν και πειράζουν την τιμή του R2. Κατάλαβα λάθος;<br>
<br>Ζητώ προκαταβολικά συγγνώμη για την παιδαριώδη ερώτηση.<br>Ευχαριστώ για τυχόν διευκρίνηση<br><br>