Συνάφεια Κρυφής Μνήμης σε Επεκτάσιμα Μηχανήματα
Συστήματα με Κοινή ή Κατανεμημένη Μνήμη Σύστημα μοιραζόμενης μνήμης Σύστημα κατανεμημένης μνήμης
Σύστημα με Συνάφεια Κρυφής Μνήμης: Πρέπει να παρέχει ένα σύνολο καταστάσεων, και διάγραμμα μετάβασης καταστάσεων Υλοποίηση πρωτοκόλλου συνάφειας 1. Εύρεση πληροφοριών για την κατάσταση του block στις άλλες κρυφές μνήμες 2. Εντοπισμός αντιγράφων 3. Επικοινωνία με τους κατόχους των αντιγράφων (Ακύρωση/Ενημέρωση)
Συνάφεια σε Σύστημα με διάδρομο Όλα γίνονται με broadcast στο διάδρομο Θα μπορούσε να δουλέψει και σε επεκτάσιμα δίκτυα; broadcast σε όλους τους επεξεργαστής και ο καθένας να αποκριθεί Απλό στην αντίληψη, αλλά το broadcast δεν είναι αποδοτικό για πολλούς επεξεργαστές (p) Επεκτάσιμη Συνάφεια: Μπορεί να έχει τις ίδιες καταστάσεις και το ίδιο διάγραμμα μετάβασης καταστάσεων, Αλλά διαφορετικούς μηχανισμούς υλοποίησης του πρωτοκόλλου
Μία Προσέγγιση: Ιεραρχικό Snooping Διεύρυνση προσέγγισης snooping με ιεραρχία από μέσα διασύνδεσης Δέντρο από διαδρόμους ή rings Οι επεξεργαστές βρίσκονται στα φύλλα της ιεραρχίας Οι γονείς και τα παιδιά συνδέονται με αμφίδρομα snoopy interfaces Κατασκοπεύουν και τους δύο διαδρόμους και διαδίδουν τα κατάλληλα transactions Η κύρια μνήμη μπορεί να είναι κεντρική στη ρίζα, ή κατανεμημένη στα φύλλα Ο χειρισμός είναι όμοιος με το διάδρομο, αλλά δεν γίνεται πλήρες broadcast Ο επεξεργαστής στέλνει σήμα «αναζήτησης στο διάδρομό του Διαδίδεται πάνω και κάτω στην ιεραρχία, ανάλογα με τα αποτελέσματα της κατασκόπευσης
Μία Προσέγγιση: Ιεραρχικό Snooping Προβλήματα: Μεγάλη καθυστέρηση λόγω πολλών επιπέδων Bottleneck του εύρους ζώνης στη ρίζα Δεν είναι σήμερα δημοφιλές
Επεκτάσιμη Προσέγγιση: Κατάλογοι Κάθε block μνήμης έχει συνδεδεμένες πληροφορίες καταλόγου Γνωρίζει ποιες κρυφές μνήμες έχουν αντίγραφα και σε ποια κατάσταση Σε κάθε miss, πρέπει να βρεθεί η καταχώρηση του καταλόγου, και αν είναι απαραίτητο να γίνει επικοινωνία με τους κόμβους που έχουν αντίγραφα Στα επεκτάσιμα δίκτυα, η επικοινωνία με τον κατάλογο και τους κατόχους αντιγράφων γίνεται με network transactions Υπάρχουν πολλές εναλλακτικές λύσεις για την οργάνωση των πληροφοριών καταλόγου
Βασική Λειτουργία του Καταλόγου k επεξεργαστές Με κάθε block στη μνήμη: k presence-bits, 1 dirty-bit
Βασική Λειτουργία του Καταλόγου Ανάγνωση στην κύρια μνήμη από τον επεξεργαστή i: If dirty-bit OFF then { read from main memory; turn p[i] ON; } Ιf dirty-bit ON then { recall line from dirty proc (cache state to shared); update memory; turn dirty-bit OFF; turn p[i] ON; supply recalled data to i;} Εγγραφή στην κύρια μνήμη από τον επεξεργαστή i: If dirty-bit OFF then { supply data to i; send invalidations to all caches that have the block; turn dirty-bit ON; turn p[i] ON;... } ...
Βασικές Transactions Καταλόγου
Συνδυασμός: Ιεραρχία δύο επιπέδων
Οργάνωση Καταλόγου ΚεντρικόΚατανεμημένο Ιεραρχικό Επίπεδο Βάσει της μνήμηςΒάσει της κρυφής μνήμης Σχήματα καταλόγου Πώς βρίσκουμε τις πληροφορίες καταλόγου Πώς εντοπίζουμε τα αντίγραφα
Πώς βρίσκουμε τις πληροφορίες καταλόγου; Κεντρική Μνήμη και Κατάλογος Εύκολο, αλλά όχι επεκτάσιμο Κατανεμημένη μνήμη και κατάλογος Επίπεδα σχήματα Κατάλογος κατανεμημένος μαζί με τη μνήμη Η θέση βρίσκεται βάσει της διεύθυνσης (hashing) Ιεραρχικά σχήματα
Πώς αποθηκεύεται η θέση των αντιγράφων Σχήματα βάσει της μνήμης Όλες οι πληροφορίες για τα αντίγραφα αποθηκεύονται στην κύρια μνήμη μαζί με το block Σχήματα βάσει της κρυφής μνήμης Οι πληροφορίες για τα αντίγραφα είναι κατανεμημένες στα ίδια τα αντίγραφα Κάθε αντίγραφο δείχνει το επόμενο Scalable Coherent Interface (SCI: IEEE standard)
Επίπεδα σχήματα βάσει της μνήμης Οι πληροφορίες για τα αντίγραφα βρίσκονται μαζί με το block Απόδοση - Επεκτασιμότητα Κίνηση για μια εγγραφή: ανάλογη του αριθμού των αντιγράφων Καθυστέρηση: μπορεί να ξεκινήσει τις ακυρώσεις των αντιγράφων παράλληλα P M
Επίπεδα σχήματα βάσει της μνήμης Κόστος αποθήκευσης Απλούστερη αναπαράσταση: full bit vector, δηλ. ένα presence bit για κάθε κόμβο Το κόστος αποθήκευσης δεν είναι επεκτάσιμο συναρτήσει του P. 64-byte σε κάθε γραμμή σημαίνει 64 κόμβοι: 12.7% επιπλέον αποθηκευτικός χώρος 256 κόμβοι: 50% 1024 nodes: 200% για M blocks στην κύρια μνήμη, ο ζητούμενος επιπλέον αποθηκευτικός χώρος είναι ανάλογος του P*M P M
P M Μείωση του κόστους αποθήκευσης Βελτιστοποίηση σχημάτων με full bit vectors Αύξηση του μεγέθους των block Χρήση πολυ-επεξεργαστικών κόμβων Εξακολουθεί να είναι ανάλογο του P*M 256-επεξεργαστές 4 ανά κόμβο 128B block 6.25% επιπλέον χώρος Μείωση «πλάτους» Ρ Μείωση «ύψους» Μ
Μείωση του κόστους αποθήκευσης Παρατηρήσεις για το «πλάτος» : Τα περισσότερα blocks αντιγράφονται σε λίγους μόνο κόμβους Δεν χρειάζεται ένα bit ανά κόμβο, αλλά λίγα πεδία που να έχουν δείκτες στους κόμβους που μοιράζονται τη διεύθυνση αυτή P=1024 10 bit ανά δείκτη, με χρήση 100 δεικτών γλιτώνουμε χώρο Παρατηρήσεις για το «ύψος»: # blocks στην κύρια μνήμη >> # blocks στην κρυφή μνήμη Τα περισσότερα πεδία του καταλόγου δεν χρησιμοποιούνται Οργάνωση καταλόγου σαν κρυφή μνήμη, αντί να έχουμε ένα πεδίο για κάθε block μνήμης
Μείωση του κόστους αποθήκευσης
Επίπεδα σχήματα βάσει της κρυφής μνήμης Πώς δουλεύει: Ο οικείος κόμβος έχει μόνο ένα δείκτη σε έναν κάτοχο αντιγράφου Κάθε κάτοχος αντιγράφου έχει έναν δείκτη στον επόμενο Για ανάγνωση, πρόσθεσε τον εαυτό σου στην κορυφή της λίστας Για εγγραφή, διάδωσε μια αλυσίδα ακυρώσεων στη λίστα Scalable Coherent Interface (SCI) IEEE Standard Διπλά συνδεδεμένη λίστα
Επίπεδα σχήματα βάσει της κρυφής μνήμης
Εισαγωγή πρώτου στοιχείου στη λίστα
Εισαγωγή επόμενου στοιχείου
Αφαίρεση στοιχείου από τη λίστα
Επεκτασιμότητα (Cache-based) Κίνηση δικτύου για εγγραφή: ανάλογη του αριθμού των κατόχων αντιγράφου Καθυστέρηση για εγγραφή: ανάλογη του αριθμού των κατόχων αντιγράφου !!! Κόστος αποθήκευσης: αρκετά καλό Πολύ πολύπλοκο !!!