<div dir="ltr">Καλησπέρα,<br><div class="gmail_extra"><br></div><div class="gmail_extra" style>έχεις δίκιο για την παρατήρηση που κάνεις. Όπως είπα όμως και την προηγούμενη φορά, στις ασκήσεις κάνουμε κάποιες παραδοχές όσον αφορά τα Stores καθαρά για λόγους απλότητας και ευκολίας. Αποτελούν μια προσέγγιση και όχι την ακριβή πραγματικότητα για το πως γίνονται τα SD.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Στις ασκήσεις μας λοιπόν τα Stores μπαίνουν στη φάση του EX όταν όλα τα ορίσματα τους είναι διαθέσιμα. Επίσης φροντίζουμε να μην υπάρχουν RAW κίνδυνοι μεταξύ των stores και των επόμενων loads (οπότε και δεν καθυστερούμε τα LDs). </div>
<div class="gmail_extra"><br></div><div class="gmail_extra" style>Όσον αφορά την τελευταία παρατήρηση, προφανώς η απαίτηση το block να μην έχει γίνει evict προκύπτει από τις παραδοχές που κάνουμε (και δεν είναι πραγματική). Παρ'όλα αυτά, δεδομένου του μεγέθους και του associativity της cache, του μικρού αριθμού προσβάσεων στη μνήμη που μπορεί να μεσολαβήσουν μεταξύ του EX και του CMT (λόγω του μικρού μεγέθους των Load/Store queues) καθώς και των ιδιοτήτων της πολιτικής LRU, μπορούμε με πολύ μεγάλη πιθανότητα να πούμε ότι το block θα είναι ακόμα εκεί. Παρ'ολα αυτά δεν μας ενδιαφέρει ιδιαίτερα, καθώς όπως εξήγησα όλα αυτά είναι μια παραδοχή που κάνουμε για τις ασκήσεις.</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>Κ.</div><div class="gmail_extra"><br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Έχω τρεις απορίες σχετικές με την εκτέλεση των load/store εντολών:<br>
<br>
1) Επιτρέπεται σε εντολή SD να μπει στο στάδιο EX ακόμα κι αν δεν έχει διαθέσιμη την τιμή που θα γράψει;<br>
<br>
2) Αν το παραπάνω δεν επιτρέπεται, προκύπτει το εξής πρόβλημα: Σύμφωνα με τη διαφάνεια 26 του σετ "Lec6-speculation-13.pdf", τα LD γίνονται stall μέχρι τα SD που προηγούνται να υπολογίσουν τη διεύθυνσή τους. Σύμφωνα με την εκφώνηση της άσκησης, ο υπολογισμός της διεύθυνσης μιας εντολής LD/SD γίνεται στο στάδιο EX. Επομένως, στην άσκηση τα LD πρέπει να γίνονται stall μέχρι τα προηγούμενα SD να έχουν διαθέσιμα όλα τα ορίσματά, τόσο της διεύθυνσης όσο και της εγγραφόμενης τιμής. Λόγω της μεγάλης καθυστέρησης της DIVD, αυτή η παραδοχή δημιουργεί μεγάλη απόκλιση στον αλγόριθμο. Είναι σωστή;<br>
<br>
3) Θεωρούμε ότι η cache είναι write-allocate. Από όσα προηγήθηκαν στη λίστα καταλαβαίνω ότι μια εντολή SD που θέλει να γράψει στη μνήμη φέρνει στην cache τα απαραίτητα block στο στάδιο EX και γράφει σε αυτή στο στάδιο CMT. Πώς ξέρουμε ότι στο διάστημα που μεσολαβεί από το EX έως το CMT το block που θέλουμε είναι ακόμη στην cache και δεν έχει γίνει evict?<br>
<br>
Ευχαριστώ.<br>
<br>
Νικόλας Κορασίδης<br>
______________________________<u></u>_________________<br>
Advcomparch mailing list<br>
<a href="mailto:Advcomparch@lists.cslab.ece.ntua.gr" target="_blank">Advcomparch@lists.cslab.ece.<u></u>ntua.gr</a><br>
<a href="http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch" target="_blank">http://lists.cslab.ece.ntua.<u></u>gr/mailman/listinfo/<u></u>advcomparch</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Dr. Konstantinos Nikas<br>Computing Systems Laboratory<br>School of Electrical and Computer Engineering<br>National Technical University of Athens<br><br>Tel: +30-210-7724159<br>
e-mail: <a href="mailto:knikas@cslab.ece.ntua.gr" target="_blank">knikas@cslab.ece.ntua.gr</a><br><a href="http://www.cslab.ece.ntua.gr/~knikas" target="_blank">http://www.cslab.ece.ntua.gr/~knikas</a>
</div></div>