Η cache A έχει το block X σε κατάσταση Μ. Όταν η cache Β ζητήσει το Χ (και εφόσον έχουμε διάδρομο) τότε θα γίνει 1 BusRdX transaction, στο οποίο θα πάρουν τα δεδομένα τόσο η B όσο και η μνήμη.
Κ.
2014-04-03 14:43 GMT+03:00 Ανδρέας Παντελόπουλος padelopoulos@gmail.com:
Συνεχίζοντας την ερώτηση μου λοιπόν, αφού ισχύουν τα παραπάνω και έστω κάποια cache φύγει από το M και πρέπει να γράψει στην μνήμη κάποιο block αλλά και να κάνει κάποια cache-to-cache transfer. Έστω λοιπόν ότι το καθένα απο αυτά κοστίζει x κύκλους. Τότε το συνολικό κόστος και των 2 λειτουργιών θα είναι x ή 2x?
Αντίστοιχο θέμα είχε πέσει και στην κανονική. Το δίλημα μου προκύπτει από το γεγονός ότι στο bus κάνεις broadcast κάτι και το ακούνε όλοι. Ελπίζω να έγινα κατανοητός.
Ευχαριστώ πολύ.
Στις 3 Απριλίου 2014 - 1:22 μ.μ., ο χρήστης Konstantinos Nikas knikas@cslab.ece.ntua.gr έγραψε:
Καλημέρα,
όταν η cache είναι Μ, προφανώς έχεις cache-to-cache. Η υλοποίηση παίζει ρόλο στο ποιος απαντάει όταν ζητηθεί κάτι που το έχει μια άλλη cache S. Εμείς υποθέτουμε ότι σε αυτή την περίπτωση απαντά η cache, αλλά σε κάποια "χαζή" υλοποίηση θα μπορούσε να παρέχει τα δεδόμενα και το επόμενο επίπεδο μνήμης.
Στο 2ο ερώτημα δε νομίζω ότι χρειάζεται να απαντήσω :-).
K.
2014-04-03 13:08 GMT+03:00 Ανδρέας Παντελόπουλος padelopoulos@gmail.com:
Καλημέρα στο πρωτόκολλο MESI θα ήθελα να ξεκαθαρίσω κάτι.
Συγκεκριμένα cache-to-cache μεταφορά δεδομένων πότε ακριβώς έχουμε? Στις διαφάνειες λέει μόνο ότι στο M state η cache είναι υπεύθυνη για να παρέχει τα δεδομένα σε όποιον τα ζητήσει, αν και νομίζω ότι έχει ειπωθεί ότι είναι και θέμα υλοποίησης.
Επίσης, στο ίδιο πρωτόκολλο με τις write-back caches, η εγγραφή στην μνήμη ενός block θα γίνει από την cache που ήταν στο state M σε αυτό το block, την στιγμή που αναγκάζεται να φύγει από αυτό το state? Λόγω μίας άλλης εγγραφής στο ίδιο block από άλλον επεξεργαστή, ή λόγω ενός read.
Ευχαριστώ πολύ. Παντελόπουλος Ανδρέας.
Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
-- 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 http://www.cslab.ece.ntua.gr/~knikas
Ωραία ως εδώ κατανοητό, και ευχαριστώ πολύ για τις άμεσες απαντήσεις. Με βάση το περσινό θέμα όμως η ερώτηση που μου είχε προκύψει και μου ξαναήρθε τώρα συνοψίζεται ως εξής:
Το State ενός block αφορά το συγκεκριμένο cache line κάποιας cache κάποιου επεξεργαστή. Τι συμβαίνει όμως σχετικά με το πρωτόκολλο και το ποια πραγματικά δεδομένα έχει αποθηκεύσει κάποια cache?
Δηλαδή αν o P1 έχει στο block0 την μεταβλητή x που είναι όσο το μέγεθος του block και είναι σε state M, και o P2 κάνει read την μεταβλητή y που γίνεται mapped στο block0 της cache του ( και στο block0 του P1 αντίστοιχα ) τι θα συμβεί? Θα πάνε και οι 2 στο state S επειδή διαβάζουν το ίδιο cache block, ή θα καταλάβουν ότι πρόκειται περί διαφορετικών μεταβλητών με κάποιο τρόπο και θα πάνε αντίστοιχα στο E και στο I ?
Η απάντηση σε αυτό δεν μου είναι ξεκάθαρη ακόμα, αν και τείνω προς την 1η περίπτωση. Ευχαριστώ πολύ.
Νομίζω ότι όταν ολοκληρώσεις το διάβασμα σου και συγκερκιμένα το θέμα του false sharing, θα έχεις βρει την απάντηση.
Κ.
2014-04-03 16:11 GMT+03:00 Ανδρέας Παντελόπουλος padelopoulos@gmail.com:
Ωραία ως εδώ κατανοητό, και ευχαριστώ πολύ για τις άμεσες απαντήσεις. Με βάση το περσινό θέμα όμως η ερώτηση που μου είχε προκύψει και μου ξαναήρθε τώρα συνοψίζεται ως εξής:
Το State ενός block αφορά το συγκεκριμένο cache line κάποιας cache κάποιου επεξεργαστή. Τι συμβαίνει όμως σχετικά με το πρωτόκολλο και το ποια πραγματικά δεδομένα έχει αποθηκεύσει κάποια cache?
Δηλαδή αν o P1 έχει στο block0 την μεταβλητή x που είναι όσο το μέγεθος του block και είναι σε state M, και o P2 κάνει read την μεταβλητή y που γίνεται mapped στο block0 της cache του ( και στο block0 του P1 αντίστοιχα ) τι θα συμβεί? Θα πάνε και οι 2 στο state S επειδή διαβάζουν το ίδιο cache block, ή θα καταλάβουν ότι πρόκειται περί διαφορετικών μεταβλητών με κάποιο τρόπο και θα πάνε αντίστοιχα στο E και στο I ?
Η απάντηση σε αυτό δεν μου είναι ξεκάθαρη ακόμα, αν και τείνω προς την 1η περίπτωση. Ευχαριστώ πολύ.
advcomparch@lists.cslab.ece.ntua.gr