Κι όμως ακριβώς για αυτό το λόγο το γίνεται issue στον 8o. Πιο συγκεκριμένα:
Η εντολή LD που αναφέρεις είναι η 5η εντολή και αφού ο ROB έχει 6 θέσεις υπάρχει κενή θέση για να γίνει issue στον κύκλο 5. Δεν γίνεται όμως λόγω structural hazard, μιας και δεν υπάρχει κενή θέση στο Load Queue (έχουν καταληφθεί από τις 2 προηγούμενες LD).
Στον κύκλο 7 η πρώτη LD κάνει WR. Tο οποίο σημαίνει ότι γράφει το αποτέλεσμα της στον ROB και αδειάζει και το reservation station της, δηλαδή τη θέση που καταλαμβάνει στο Load queue. Επομένως, στον κύκλο 8 δεν υπάρχει πλέον structural hazard και η επόμενη LD μπορεί να γίνει κανονικά issue.
K.
2013/5/25 Orestis Vasios el08197@mail.ntua.gr
Καλησπέρα,
Με αφορμή αυτή την απάντηση, στις λύσεις των θεμάτων Ιουλίου 2012 ( http://www.cslab.ntua.gr/**courses/advcomparch/2012/** files/exams/adv_ca-Jul2012.pdfhttp://www.cslab.ntua.gr/courses/advcomparch/2012/files/exams/adv_ca-Jul2012.pdf **) δε θα έπρεπε η 5η εντολή (LD F0, 8(R1)) να γίνει issue στον 9ο κύκλο; Μέχρι να κάνει commit η 1η εντολή (LD F0, 0(R1)) φτάνουμε στον 8ο κύκλο, άρα στον επόμενό του θα δούμε ότι έχουμε κενή θέση στο load queue. Σωστά;
Ευχαριστώ εκ των προτέρων. Ορέστης Βάσιος
On Sat, 25 May 2013 12:35:18 +0300, Konstantinos Nikas wrote:
Καλημέρα,
τα κυκλώματα του pipeline είναι σύγχρονα, το οποίο σημαίνει ότι όλα τα στάδια του λειτουργούν σε κάποια (θετική ή αρνητική) ακμή του ρολογιού. Για αυτό το λόγο και ένα στάδιο μπορεί να δει τι αλλαγές που κάνει κάποιο άλλο στάδιο όταν έρθει η επόμενη ακμή του ρολογιού.
Επομένως, αν το CMT κάνει reset ένα entry του ROB στον κύκλο n τότε το IS θα δεί ότι είναι άδειο και θα στείλει τη νέα εντολή στο n+1.
Κ.
2013/5/23 Christos Sakaridis
Καλησπέρα!
Θα ήθελα να ρωτήσω κάτι που ίσως είχε διευκρινιστεί στο αντίστοιχο μάθημα αλλά δυστυχώς δεν είχα την ευκαιρία να το παρακολουθήσω.
Έστω ότι στον κύκλο k ο ROB είναι πλήρης και η εντολή που αντιστοιχεί στο entry στο οποίο δείχνει ο commit pointer κάνει Write Result, οπότε γίνεται ready για commit. Στον κύκλο k+1, στον οποίο θα γίνει commit η εντολή και θα αδειάσει αυτό το entry, θα μπει ταυτόχρονα σε αυτό η επόμενη προς έκδοση εντολή ή θα γίνει στον κύκλο k+2 το issue και η κατάληψη του άδειου entry από τη νέα εντολή;
Ευχαριστώ εκ των προτέρων για τον κόπο σας!
Χρήστος Σακαρίδης ______________________________**_________________ Advcomparch mailing list Advcomparch@lists.cslab.ece.**ntua.grAdvcomparch@lists.cslab.ece.ntua.gr[1] http://lists.cslab.ece.ntua.**gr/mailman/listinfo/**advcomparchhttp://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch[2]
-- Dr. Konstantinos Nikas Computing Systems Laboratory School of Electrical and Computer Engineering National Technical University of Athens
Tel: +30-210-7724159 e-mail: knikas@cslab.ece.ntua.gr [4] http://www.cslab.ece.ntua.gr/~**knikashttp://www.cslab.ece.ntua.gr/~knikas[5]
Links:
[1] mailto:Advcomparch@lists.**cslab.ece.ntua.grAdvcomparch@lists.cslab.ece.ntua.gr [2] http://lists.cslab.ece.ntua.**gr/mailman/listinfo/**advcomparchhttp://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch [3] mailto:christos.sakaridis@**yahoo.com christos.sakaridis@yahoo.com [4] mailto:knikas@cslab.ece.ntua.**gr knikas@cslab.ece.ntua.gr [5] http://www.cslab.ece.ntua.gr/~**knikashttp://www.cslab.ece.ntua.gr/~knikas
______________________________**_________________ Advcomparch mailing list Advcomparch@lists.cslab.ece.**ntua.grAdvcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.**gr/mailman/listinfo/**advcomparchhttp://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
Καλησπέρα,
Έχω τρεις απορίες σχετικές με την εκτέλεση των load/store εντολών:
1) Επιτρέπεται σε εντολή SD να μπει στο στάδιο EX ακόμα κι αν δεν έχει διαθέσιμη την τιμή που θα γράψει;
2) Αν το παραπάνω δεν επιτρέπεται, προκύπτει το εξής πρόβλημα: Σύμφωνα με τη διαφάνεια 26 του σετ "Lec6-speculation-13.pdf", τα LD γίνονται stall μέχρι τα SD που προηγούνται να υπολογίσουν τη διεύθυνσή τους. Σύμφωνα με την εκφώνηση της άσκησης, ο υπολογισμός της διεύθυνσης μιας εντολής LD/SD γίνεται στο στάδιο EX. Επομένως, στην άσκηση τα LD πρέπει να γίνονται stall μέχρι τα προηγούμενα SD να έχουν διαθέσιμα όλα τα ορίσματά, τόσο της διεύθυνσης όσο και της εγγραφόμενης τιμής. Λόγω της μεγάλης καθυστέρησης της DIVD, αυτή η παραδοχή δημιουργεί μεγάλη απόκλιση στον αλγόριθμο. Είναι σωστή;
3) Θεωρούμε ότι η cache είναι write-allocate. Από όσα προηγήθηκαν στη λίστα καταλαβαίνω ότι μια εντολή SD που θέλει να γράψει στη μνήμη φέρνει στην cache τα απαραίτητα block στο στάδιο EX και γράφει σε αυτή στο στάδιο CMT. Πώς ξέρουμε ότι στο διάστημα που μεσολαβεί από το EX έως το CMT το block που θέλουμε είναι ακόμη στην cache και δεν έχει γίνει evict?
Ευχαριστώ.
Νικόλας Κορασίδης
advcomparch@lists.cslab.ece.ntua.gr