Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόµενης Μνήµης 1
Shared Memory Multiprocessors Ηκύρια µνήµη προσπελαύνεται µε τον ίδιο τρόπο και ταχύτητα από όλους τους επεξεργαστές Κάθε επεξεργαστής έχει το δικό του χώρο φυσικών διευθύνσεων κρυφής µνήµης (cache memory) Έχουν κυριαρχήσει στην αγορά συστηµάτων εξυπηρετητών (servers) Είναι ιδιαίτερα πλεονεκτικοί ως throughput servers και για παράλληλα προγράµµατα Υποστηρίζουν µηχανισµούς προσπέλασης δεδοµένων φαινοµενικά όµοιους µε τα µονο-επεξεργαστικά συστήµατα (reads and writes) 2
Τρόποι επέκτασης του συστήµατος µνήµης P 1 P n Switch P 1 P n (Interleaved) First-level $ $ $ Bus (Interleaved) Main memory Mem I/O devices (a) Shared cache (b) Bus-based shared memory P 1 P n P 1 P n $ $ $ $ Mem Mem Interconnection network Mem Mem Interconnection network (c) Dancehall (d) Distributed-memory 3
Κρυφή µνήµη Ο ρόλος της κρυφής µνήµης: Μειώνει το µέσο χρόνο πρόσβασης των δεδοµένων Μειώνει τη ζήτηση εύρους ζώνης στο µοιραζόµενο µέσο διασύνδεσης 4
Συνάφεια Κρυφής µνήµης Αλλά οι τοπικές µονάδες κρυφής µνήµης για κάθε επεξεργαστή δηµιουργούν πρόβληµα: Αντίγραφα µιας µεταβλητής µπορεί να υπάρχουν σε πολλές µονάδες κρυφής µνήµης Μια λειτουργία εγγραφής από κάποιον επεξεργαστή µπορεί να µην είναι ορατή από τους άλλους Θα εξακολουθούν να προσπελαύνουν την παλιά τιµή που υπάρχει στις τοπικές µονάδες κρυφής µνήµης Πρόβληµα Συνάφειας Κρυφής Μνήµης (Cache Coherence) Χρειάζεται να διασφαλιστεί η ορατότητα των τελευταίων αλλαγών 5
Στίγµα: Κεντρική Μνήµη µε διάδροµο Μοιραζόµενη Κρυφή Μνήµη +Low-latency sharing and prefetching across processors +Μοιραζόµενα σύνολα εργασίας + εν υπάρχει πρόβληµα συνάφειας - Ανάγκη µεγάλου εύρους ζώνης - Αυξηµένη καθυστέρηση είτε σε cache hit είτε σε cache miss λόγω του διαδρόµου και του µεγέθους της κρυφής µνήµης 1980-1990: Συνέδεε ζεύγη επεξεργαστών σε µια πλακέτα (Encore, Sequent) Σήµερα: Για πολυεπεξεργαστές στο ίδιο chip (για συστήµατα κόµβων µικρής κλίµακας) Συνέπεια Όχι πλέον δηµοφιλής λύση: Όλα είναι το ίδιο µακριά 6
Στίγµα: Κεντρική Μνήµη µε διάδροµο Κατανεµηµένη Μνήµη Πιο δηµοφιλής τεχνική για κατασκευή επεκτάσιµων συστηµάτων (θα συζητηθεί στη συνέχεια) 7
Περίγραµµα Παρουσίασης Συνάφεια (Coherence) και Συνέπεια (Consistency) Μνήµης Πρωτόκολλο Συνάφειας Κρυφής Μνήµης µε Κατασκοπεία Ποσοτική αποτίµηση Πρωτοκόλλων Συνάφειας Κρυφής Μνήµης Συγχρονισµός 8
Σύστηµα µε Συνάφεια µνήµης: Γενική Ιδέα Η λειτουργία ανάγνωσης µιας θέσης µνήµης πρέπει να επιστρέφει την τιµή που γράφτηκε τελευταία (από οποιαδήποτε διεργασία) Εύκολο σε µονο-επεξεργαστικά συστήµατα Θα θέλαµε να ισχύει το ίδιο όταν οι διεργασίες τρέχουν σε διαφορετικούς επεξεργαστές Αλλά το πρόβληµα της συνάφειας µνήµης είναι πολύ πιο δύσκολο σε συστήµατα πολυεπεξεργαστών 9
Παράδειγµα Προβλήµατος Συνάφειας Κρυφής Μνήµης P 1 P 2 P 3 u =? u =? u = 7 $ 4 $ 5 $ 3 u:5 u:5 1 I/O devices u:5 2 Memory Οι επεξεργαστές βλέπουν διαφορετική τιµή για τη µεταβλητή uµετά τη λειτουργία 3 Με τις write back caches, η τιµή που γράφεται πίσω στη µνήµη εξαρτάται από το ποια cache και πότε διώχνει ή αντιγράφει δεδοµένα Απαράδεκτο, αλλά συµβαίνει συχνά! 10
Παράδειγµα Προβλήµατος Συνάφειας Κρυφής Μνήµης Παρόµοια προβλήµατα αντιµετωπίζουµε ακόµη και σε µονοεπεξεργαστικά συστήµατα, όπου πρόσβαση στη µνήµη έχουν Οι λειτουργίες εισόδου / εξόδου (I/O operations) Οι συσκευές άµεσης προσπέλασης της µνήµης (DMA devices) 11
Προβλήµατα µε τη γενική ιδέα Υπενθύµιση: Η τιµή που επιστρέφεται από µια λειτουργία ανάγνωσης πρέπει να είναι η τελευταία που γράφτηκε Αλλά η «τελευταία» δεν έχει οριστεί επαρκώς Ακόµη και στην περίπτωση σειριακού προγράµµατος, η τελευταία ορίζεται σύµφωνα µε τη σειρά που επιβάλλεται από το πρόγραµµα, όχι από το χρόνο Στην περίπτωση παράλληλου προγράµµατος, η σειρά του προγράµµατος ορίζεται εντός της διεργασίας Πρέπει να οριστεί και µια σειρά που να αφορά όλες τις διεργασίες 12
Εξειδίκευση της Γενικής Ιδέας Έστω ότι υπάρχει µία µόνο µοιραζόµενη µνήµη και καθόλου µονάδες κρυφής µνήµης Κάθε λειτουργία ανάγνωσης και εγγραφής σε µια θέση µνήµης προσπελαύνει την ίδια φυσική θέση Η µνήµη επιβάλλει µια καθολική σειρά στις λειτουργίες σε αυτή τη θέση Οι λειτουργίες στη θέση αυτή από έναν επεξεργαστή γίνονται µε τη σειρά που επιβάλλει το πρόγραµµα Η σειρά των λειτουργιών από διαφορετικούς επεξεργαστές είναι µια παρεµβολή που διατηρεί τις σειρές που επιβάλλονται από τα ανεξάρτητα προγράµµατα «Τελευταία» τώρα σηµαίνει την πιο πρόσφατη σε µια υποθετική ακολουθιακή σειρά που ικανοποιεί τις παραπάνω ιδιότητες 13
Εξειδίκευση της Γενικής Ιδέας Για να είναι συνεπής η ακολουθιακή σειρά, πρέπει οι επεξεργαστές να βλέπουν τις εγγραφές στην ίδια θέση µνήµης µε την ίδια σειρά Η καθολική σειρά δεν κατασκευάζεται ποτέ σε πραγµατικά συστήµατα Αλλά τα προγράµµατα πρέπει να συµπεριφέρονται σαν να υπήρχε αυτή η καθολική σειρά 14
Ορισµός της Συνάφειας Μνήµης (Coherence) Αποτελέσµατα ενός προγράµµατος: Οι τιµές που επιστρέφονται από τις λειτουργίες ανάγνωσης Ένα σύστηµα µνήµης είναι συναφές αν τα αποτελέσµατα κάθε εκτέλεσης ενός προγράµµατος είναι τέτοια ώστε σε κάθε θέση µπορούµε να κατασκευάσουµε µια υποθετική ακολουθιακή σειρά όλων των λειτουργιών στη συγκεκριµένη θέση, που είναι συνεπής µε τα αποτελέσµατα της εκτέλεσης και στην οποία: 1. Οι λειτουργίες που καλούνται από κάθε διεργασία συµβαίνουν µε τη σειρά στην οποία κλήθηκαν από τη διεργασία αυτή 2. Η τιµή που επιστρέφεται από µια λειτουργία ανάγνωσης είναι η τιµή της τελευταίας εγγραφής στη συγκεκριµένη θέση σύµφωνα µε την καθολική σειρά 15
Ορισµός της Συνάφειας Μνήµης (Coherence) Απαραίτητα χαρακτηριστικά: ιάδοση εγγραφών: Η τιµή που γράφεται πρέπει να γίνεται αµέσως ορατή στους άλλους Σειριοποίηση εγγραφών: Οι εγγραφές σε µια θέση φαίνονται στην ίδια σειρά για όλους Αν εγώ βλέπω στην εγγραφή w1 πριν από την w2, δεν πρέπει εσύ να βλέπεις την w2 πριν από την w1 εν χρειάζεται όµοια σειριοποίηση των λειτουργιών ανάγνωσης, αφού οι λειτουργίες ανάγνωσης δεν είναι ορατές από τους υπόλοιπους 16
Συνάφεια Κρυφής Μνήµης µε τη χρήση ιαδρόµου Στηρίζεται σε δυο βασικά χαρακτηριστικά των µονο-επεξεργαστικών συστηµάτων 1. Bus transactions 2. ιάγραµµα µετάβασης καταστάσεων στην κρυφή µνήµη 17
Συνάφεια Κρυφής Μνήµης µε τη χρήση ιαδρόµου 1. Bus transaction σε έναν επεξεργαστή: Τρεις φάσεις: διαιτησία, εντολή/διεύθυνση, µεταφορά δεδοµένων Όλες οι συσκευές παρακολουθούν τις διευθύνσεις, µία είναι υπεύθυνη 2. Καταστάσεις κρυφής µνήµης για έναν επεξεργαστή: Ουσιαστικά, κάθε block είναι µια µηχανή πεπερασµένων καταστάσεων Write-through, write no-allocate έχουν δύο καταστάσεις: έγκυρη, άκυρη Writeback caches έχουν µία επιπλέον κατάσταση: τροποποιηµένη 18
Συνάφεια Κρυφής Μνήµης µε τη χρήση ιαδρόµου Οι πολυεπεξεργαστές επεκτείνουν και τα δύο αυτά χαρακτηριστικά για να υλοποιήσουν τη συνάφεια κρυφής µνήµης 19
Κατασκοπευτική Συνάφεια Μνήµης Βασική Ιδέα: Οι transactions στο διάδροµο είναι ορατές σε όλους τους επεξεργαστές Οι επεξεργαστές ή οι αντιπρόσωποί τους µπορούν να κατασκοπεύουν το διάδροµο και να παίρνουν τα ανάλογα µέτρα (π.χ. Αλλαγή κατάστασης) 20
Κατασκοπευτική Συνάφεια Μνήµης Υλοποίηση Πρωτοκόλλου 1. Ο ελεγκτής της κρυφής µνήµης τώρα δέχεται είσοδο από δύο πλευρές: Αιτήσεις από τον επεξεργαστή Αιτήσεις / αποκρίσεις διαδρόµου από τον κατάσκοπο 2. Σε κάθε περίπτωση, αναλαµβάνει ή όχι δράση Ενηµερώνει µια κατάσταση αποκρίνεται µε δεδοµένα παράγει νέες bus transactions 3. Η συνάφεια βασίζεται στο µέγεθος του block της κρυφής µνήµης Όπως η κατανοµή στην κρυφή µνήµη και η µεταφορά από και προς την κρυφή µνήµη 21
Συνάφεια µε Write-through Caches P 1 Bus snoop P n $ $ Mem I/O devices Cache-memory transaction Βασικές επεκτάσεις από τους µονο-επεξεργαστές: 1. κατασκοπεία 2. ακύρωση / ενηµέρωση κρυφής µνήµης εν υπάρχουν νέες καταστάσεις ή bus transactions στην περίπτωση αυτή Πρωτόκολλα που στηρίζονται στην ακύρωση ή στην ενηµέρωση 22
Συνάφεια µε Write-through Caches P 1 Bus snoop P n $ $ Mem I/O devices Cache-memory transaction ιάδοση εγγραφών: Ακόµη και στην περίπτωση ακύρωσης, οι επόµενες αναγνώσεις θα δουν την καινούρια τιµή Η ακύρωση προκαλεί miss στην επόµενη προσπέλαση και συνεπώς ενηµέρωση της µνήµης 23
Write-through ιάγραµµα Μετάβασης Καταστάσεων PrRd/ PrWr/BusWr V PrRd/BusRd BusWr/ I PrWr/BusWr Processor-initiated transactions Bus-snooper-initiated transactions Σε κάθε κρυφή µνήµη υπάρχουν δύο καταστάσεις ανά block, όπως στους µονο-επεξεργαστές Hardware bits κατάστασης συνδέονται µόνο µε τα blocks που υπάρχουν στη µνήµη Τα υπόλοιπα blocks θεωρούνται σε άκυρη κατάσταση στη συγκεκριµένη κρυφή µνήµη 24
Write-through ιάγραµµα Μετάβασης Καταστάσεων PrRd/ PrWr/BusWr V PrRd/BusRd BusWr/ I PrWr/BusWr Processor-initiated transactions Bus-snooper-initiated transactions Οι εγγραφές ακυρώνουν όλα τα άλλα αντίγραφα σε κρυφές µνήµες (όχι τοπική αλλαγή κατάστασης) Μπορούν ταυτόχρονα να υπάρχουν πολλοί αναγνώστες ενός block, αλλά µια εγγραφή τους ακυρώνει 25
Είναι Συναφές; Κατασκευάζεται καθολική σειρά που ικανοποιεί τη τη σειρά του προγράµµατος και τη σειριοποίηση των εγγραφών; 1. Υποθέτουµε ατοµικές bus transactions και λειτουργίες µνήµης 2. Όλες οι εγγραφές περνούν από το διάδροµο Οι εγγραφές σειριοποιούνται σύµφωνα µε τη σειρά που εµφανίζονται στο διάδροµο Οι ακυρώσεις εφαρµόζονται στις κρυφές µνήµες µε τη σειρά που καθορίζει ο διάδροµος Πώς παρεµβάλλουµε τις αναγνώσεις στη σειρά αυτή; 26
Σειριοποίηση αναγνώσεων Read misses: εµφανίζονται στο διάδροµο και βλέπουν την τελευταία εγγραφή σύµφωνα µε τη σειρά που καθορίζει ο διάδροµος Read hits: δεν εµφανίζονται στο διάδροµο Αλλά η τιµή που διαβάζεται τοποθετήθηκε στην κρυφή µνήµη από Την πιο πρόσφατη εγγραφή από αυτόν τον επεξεργαστή, ή Την πιο πρόσφατη read miss από αυτόν τον επεξεργαστή Και οι δύο αυτές transactions εµφανίζονται στο διάδροµο Άρα οι reads hits βλέπουν τις τιµές µε τη σειρά που καθορίζει ο διάδροµος 27
Καθορισµός Σειράς Γενικά Μια λειτουργία µνήµης Μ2 ακολουθεί µια λειτουργία µνήµης Μ1 αν οι λειτουργίες καλούνται από τον ίδιο επεξεργαστή και η Μ2 έπεται της Μ1 στη σειρά του προγράµµατος. Μια ανάγνωση έπεται µιας εγγραφής W αν ηανάγνωση παράγει bus transaction που έπεται του bus transaction της W. Μια εγγραφή έπεται µια ανάγνωσης ή εγγραφής M αν η M παράγει bus xaction και η xaction για την εγγραφή έπεται αυτήν της M. Μια εγγραφή έπεται µιας ανάγνωσης αν η εγγραφή δεν παράγει bus xaction και δεν σειριοποιείται σε σχέση µε τη εγγραφή από µια άλλη bus xaction. P 0 : R R R W R R P 1 : R R R R R W P 2 : R R R R R R 28
Καθορισµός Σειράς Γενικά Οι εγγραφές καθορίζουν µια µερική σειριοποίηση εν περιορίζει τη σειριοποίηση των εγγραφών, αν και ο διάδροµος σειριοποιεί επίσης κάποιες read misses Κάθε διάταξη των αναγνώσεων µεταξύ των εγγραφών είναι ικανοποιητική, αρκεί να διατηρεί τη σειρά που ορίζεται από το πρόγραµµα P 0 : R R R W R R P 1 : R R R R R W P 2 : R R R R R R 29
Πρόβληµα µε Write-Through Απαίτηση υψηλού εύρους ζώνης Οι Write-back κρύβουν τις περισσότερες εγγραφές από το διάδροµο ως cache hits 30
Συνέπεια Μνήµης Οι εγγραφές σε µια θέση είναι ορατές από όλους µε την ίδια σειρά Αλλά πότε γίνεται ορατή µια εγγραφή; Πώς να καθορίσουµε τη σχετική σειριοποίηση µια εγγραφής και µιας ανάγνωσης από διαφορετικούς επεξεργαστές; Με συγχρονισµό των γεγονότων, χρησιµοποιώντας περισσότερες από µια θέσεις P 1 P 2 /*Υποθέστε ότι η αρχική τιµή της µεταβλητής Α είναι 0*/ A = 1; while (flag == 0); /*spin idly*/ flag = 1; print A; 31
Συνέπεια Μνήµης Η συνάφεια δεν εγγυάται τη γενική ιδέα Μερικές φορές περιµένουµε να διατηρείται η σειρά των προσπελάσεων σε διαφορετικές θέσεις µνήµης από έναν δεδοµένο επεξεργαστή Η έννοια της συνάφειας δεν βοηθάει: αναφέρεται σε µία µόνο θέση 32
Παράδειγµα P 1 P 2 /*Assume initial values of A and B are 0*/ (1a) A = 1; (2a) print B; (1b) B = 2; (2b) print A; Όποια και αν είναι η γενική ιδέα, χρειαζόµαστε ένα µοντέλο σειριοποίησης Για διαφορετικές θέσεις µνήµης Ώστε οι προγραµµατιστές να καθορίζουν τα δυνατά αποτελέσµατα µε βάση τη λογική Χρειαζόµαστε ένα µοντέλο συνέπειας της µνήµης 33
Μοντέλο Συνέπειας Μνήµης Περιορίζει τις πιθανές διατάξεις µε τις οποίες οι λειτουργίες µνήµης (από κάθε διεργασία) µπορούν να εµφανιστούν η µία σε σχέση µε την άλλη Χωρίς αυτήν, δεν µπορούµε να πούµε τίποτα για το αποτέλεσµα της εκτέλεσης ενός προγράµµατος SAS Συνέπειες για τους προγραµµατιστές και τους σχεδιαστές συστήµατος: Ο προγραµµατιστής µε βάση τη λογική αποφασίζει για την ορθότητα και τα πιθανά αποτελέσµατα Ο σχεδιαστής συστήµατος πρέπει να περιορίσει πόσο µπορούν να αναδιατάσσονται οι προσπελάσεις από τον compiler ή το hardware 34
Ακολουθιακή Συνέπεια Processors issuing memory references as per program order P 1 P 2 P n The switch is randomly set after each memory reference Memory Σαν να µην υπήρχαν κρυφές µνήµες, µία µόνο µνήµη Καθολική διάταξη επιτυγχάνεται παρεµβάλλοντας µεταξύ τους τις προσπελάσεις από διαφορετικές διεργασίες ιατηρεί τη διάταξη του προγράµµατος, και οι λειτουργίες της µνήµης, από όλες τις διεργασίες, εµφανίζονται να [καλούνται, εκτελούνται, ολοκληρώνονται] ατοµικά σε σχέση µε τις άλλες ιατηρείται η διαίσθηση του προγραµµατιστή 35
Ακολουθιακή Συνέπεια Processors issuing memory references as per program order P 1 P 2 P n The switch is randomly set after each memory reference Memory A multiprocessor is sequentially consistent if the result of any execution is the same as if the operations of all the processors were executed in some sequential order, and the operations of each individual processor appear in this sequence in the order specified by its program. [Lamport, 1979] 36
Τι είναι η διάταξη του προγράµµατος; ιαισθητικά, η σειρά µε την οποία εµφανίζονται οι λειτουργίες στον πηγαίο κώδικα Όχι όµως ίδια µε τη σειρά που εµφανίζεται στο hardware από τον compiler Άρα, τι είναι ηδιάταξη του προγράµµατος; Εξαρτάται από το ποιο επίπεδο και ποιος κάνει τη συσχέτιση Υποθέτουµε τη σειρά, όπως την βλέπει ο προγραµµατιστής 37
Παράδειγµα Ακολουθιακής Συνέπειας Αυτό που µετράει είναι η σειρά που φαίνεται ότι εκτελούνται οι εντολές, όχι που πραγµατικά εκτελούνται P1 P2 /*Υποθέστε ότι οι αρχικές τιµές των Α,Β είναι 0*/ (1a) A = 1; (2a) print B; (1b) B = 2; (2b) print A; Πιθανά αποτελέσµατα για (A,B): (0,0), (1,0), (1,2); Αδύνατον υποθέτοντας ακολουθιακή συνέπεια: (0,2) Γνωρίζουµε ότι 1a->1b και 2a->2b από τη διάταξη του προγράµµατος A = 0 προϋποθέτει 2b->1a, άρα 2a->1b B = 2 προϋποθέτει 1b->2a, που οδηγεί σε άτοπο 38
Υλοποίηση Ακολουθιακή Συνέπειας ύο είδη απαιτήσεων: Σειρά του προγράµµατος Οι λειτουργίες της µνήµης που καλούνται από µια διεργασία πρέπει να γίνονται ορατές (στους άλλους, αλλά και στην ίδια) µε τη σειρά που υπαγορεύει το πρόγραµµα Ατοµικότητα Στην καθολική σειρά, µια λειτουργία µνήµης πρέπει να φαίνεται ότι ολοκληρώνεται ως προς τις άλλες διεργασίες πριν κληθεί η επόµενη 39
Ατοµικότητα εγγραφών Ατοµικότητα εγγραφών: Η θέση στην καθολική σειρά στην οποία µια εγγραφή εµφανίζεται πρέπει να είναι η ίδια για όλες τις διεργασίες Τίποτα από αυτά που κάνει µια διεργασία αφού έχει δει την καινούρια τιµή που παράχθηκε από µια εγγραφή W δεν πρέπει να γίνεται ορατό στις άλλες διεργασίες πριν δουν την W Άρα, επεκτείνεται η σειριοποίηση των εγγραφών στις εγγραφές από πολλαπλές διεργασίες P 1 P 2 P 3 A=1; while (A==0); B=1; while (B==0); print A; 40
Ορισµοί Η σειρά του προγράµµατος κάθε διεργασίας επιβάλλει µια µερική διάταξη στο σύνολο των λειτουργιών Παρεµβάλλοντας µεταξύ τους αυτές τις µερικές διατάξεις, προκύπτει µια καθολική σειρά για όλες τις διεργασίες Περισσότερες από µία καθολικές σειρές µπορεί να είναι ακολουθιακά συνεπείς 41
Ορισµοί Ακολουθιακά συνεπής Εκτέλεση: Η εκτέλεση ενός προγράµµατος είναι ακολουθιακά συνεπής αν τα αποτελέσµατα που παράγονται είναι όµοια µε αυτά που θα µπορούσα να παραχθούν από µία πιθανή καθολική σειρά Ακολουθιακά συνεπές Σύστηµα: Ένα σύστηµα είναι ακολουθιακά συνεπές αν κάθε πιθανή εκτέλεση σε αυτό είναι µια ακολουθιακά συνεπής εκτέλεση 42
Ικανές Συνθήκες για Ακολουθιακή Συνέπεια Κάθε διεργασία καλεί λειτουργίες της µνήµης µε τη σειρά του προγράµµατος Αφού κληθεί µια λειτουργία εγγραφή, η καλούσα διεργασία περιµένει να ολοκληρωθεί η εγγραφή πριν καλέσει την επόµενη λειτουργία Αφού κληθεί µια λειτουργία ανάγνωσης, ηκαλούσα διεργασία περιµένει να ολοκληρωθεί η ανάγνωση, καθώς και η εγγραφή της οποίας η τιµή επιστρέφεται, πριν καλέσει την επόµενη λειτουργία (παρέχει ατοµικότητα των εγγραφών) Ικανές, όχι αναγκαίες συνθήκες Οι compilers δεν πρέπει να αναδιατάσσουν το πρόγραµµα για να έχουµε ακολουθιακή συνέπεια, αλλά το κάνουν! Ακόµα και αν καλούνται µε τη σειρά, το hardware µπορεί να τις αναδιατάσσει για καλύτερη απόδοση Οι ικανές συνθήκες είναι πολύ περιοριστικές για να επιτευχθεί υψηλή απόδοση 43
Πώς χειριζόµαστε τη σειριοποίηση Υποθέστε, προς το παρόν, ότι ο compiler δεν αναδιατάσσει Το hardware χρειάζεται µηχανισµούς για να: Ανιχνεύσει την ολοκλήρωση των εγγραφών Εξασφαλίσει την ατοµικότητα των εγγραφών Για όλα τα πρωτόκολλα και τις υλοποιήσεις θα δούµε: Πώς ικανοποιούν τη συνάφεια, ιδιαίτερα τη σειριοποίηση των εγγραφών Πώς ικανοποιούν τις ικανές συνθήκες για ακολουθιακή συνέπεια Πώς εξασφαλίζουν την ακολουθιακή συνέπεια, όχι µέσω των ικανών συνθηκών Θα δούµε ότι ο κεντρικός διάδροµος διασύνδεσης τα κάνει ευκολότερα 44
Ακολουθιακή Συνέπεια σε Write-Through Παράδειγµα Παρέχει ακολουθιακή συνέπεια, όχι µόνο συνάφεια Επέκταση των επιχειρηµάτων που χρησιµοποιούνται για τη συνάφεια Οι εγγραφές και οι read misses σε όλες τις θέσεις σειριοποιούνται πάνω στο διάδροµο Αν µια ανάγνωση παίρνει τιµή από µια εγγραφή W, η W σίγουρα έχει ολοκληρωθεί Αφού προκάλεσε bus transaction Όταν η εγγραφή W πραγµατοποιείται ως προς τους άλλους επεξεργαστές, όλες οι προηγούµενες εγγραφές έχουν ολοκληρωθεί σύµφωνα µε τη διάταξη που επιβάλλει ο διάδροµος 45
Σχεδίαση για Κατασκοπευτικά Πρωτόκολλα εν χρειάζεται να αλλάξουµε επεξεργαστή, κύρια µνήµη, κρυφή µνήµη Επεκτείνουµε τον ελεγκτή της κρυφής µνήµης και εκµεταλλευόµαστε το διάδροµο (παρέχει σειριοποίηση) Επικεντρωνόµαστε στα πρωτόκολλα για write-back caches Η τροποποιηµένη κατάσταση δείχνει αποκλειστική ιδιοκτησία Αποκλειστικότητα: Η µόνη κρυφή µνήµη µε έγκυρο αντίγραφο (µπορεί να έχει και η κύρια µνήµη) Σχεδίαση Ιδιοκτήτης: υπεύθυνος να παρέχει το block αν ζητηθεί Πρωτόκολλα µε ακύρωση ή µε ενηµέρωση Ορισµός καταστάσεων 46
Πρωτόκολλα µε ακύρωση Αποκλειστικότητα σηµαίνει ότι µπορεί να τροποποιεί χωρίς να ειδοποιεί κανέναν ηλ. χωρίς bus transaction Πρέπει πρώτα να αποκτήσει την αποκλειστικότητα του block πριν γράψει σε αυτό Ακόµη και αν βρίσκεται σε έγκυρη κατάσταση, χρειάζεται transaction, άρα έχουµε write miss Αποθήκευση σε µη τροποποιηµένα δεδοµένα προκαλεί µια readexclusive bus transaction Ειδοποιεί τους άλλους για την επερχόµενη εγγραφή, αποκτά την αποκλειστική ιδιοκτησία Μία µόνο RdX µπορεί να επιτύχει τη φορά για ένα block: σειριοποιούνται στο διάδροµο 47
Πρωτόκολλα µεενηµέρωση Μια λειτουργία εγγραφής ενηµερώνει τις τιµές στις άλλες κρυφές µνήµες Πλεονεκτήµατα Μειωµένη καθυστέρηση για τους άλλους επεξεργαστές στην επόµενη προσπέλαση Μία µόνο bus transaction ενηµερώνει όλες τις κρυφές µνήµες Επίσης, µόνο η συγκεκριµένη λέξη µεταφέρεται, όχι όλο το block Μειονεκτήµατα Πολλαπλές εγγραφές από τον ίδιο επεξεργαστή προκαλούν πολλές ενηµερώσεις 48
Ακύρωση - Ενηµέρωση Ένα block, που γράφεται από έναν επεξεργαστή, διαβάζεται από άλλους πριν ξαναγραφεί; Ακύρωση: Ναι Οι αναγνώστες θα έχουν miss Όχι πολλές εγγραφές χωρίς επιπλέον κίνηση Και εκκαθάριση των αντιγράφων που δεν θα ξαναχρησιµοποιηθούν Ενηµέρωση: Ναι Οι αναγνώστες δεν θα χάσουν αν είχαν αντίγραφα Με µία µόνο bus transaction ενηµερώνονται όλα τα αντίγραφα Όχι Πολλές άχρηστες ενηµερώσεις, ακόµα και σε νεκρά αντίγραφα Πρέπει να εξετάσουµε τη συµπεριφορά των προγραµµάτων και την πολυπλοκότητα του hardware 49
MSI Writeback Πρωτόκολλο µε Ακύρωση Καταστάσεις: Άκυρη - Invalid (I) Μοιραζόµενη - Shared (S): (για ένα ή περισσότερους) Τροποποιηµένη - Modified (M): (µόνο ένας) Γεγονότα επεξεργαστών: PrRd (ανάγνωση) PrWr (εγγραφή) Bus Transactions: BusRd: Ζητά αντίγραφο χωρίς σκοπό να το τροποποιήσει BusRdX: Ζητά αντίγραφο µε σκοπό να το τροποποιήσει BusWB: Ενηµερώνει τη µνήµη ραστηριότητες: Ενηµέρωση κατάστασης, Εκτέλεση bus transaction, Τοποθέτηση τιµής στο διάδροµο 50
ιάγραµµα Μετάβασης Καταστάσεων PrRd/ PrWr/ M BusRd/Flush PrWr/BusRdX S BusRdX/Flush BusRdX/ PrRd/BusRd PrWr/BusRdX PrRd/ BusRd/ I 51
Ενέργεια στον επεξεργαστή Ρ1 διαβάζει u Ρ3 διαβάζει u Ρ3 γράφει u Ρ1 διαβάζει u Ρ2 διαβάζει u Κατάσταση Ρ1 S S I S S Παράδειγµα Κατάσταση Ρ2 Κατάσταση Ρ3 --- --- --- S --- M --- S S S Ενέργεια στο διάδροµο BusRd BusRd BusRdX BusRd BusRd Τα δεδοµένα παρέχονται από Κύρια Μνήµη Κύρια Μνήµη Κύρια Μνήµη Κρυφή Μνήµη Ρ3 Κύρια Μνήµη 52
Συνάφεια στο Πρωτόκολλο MSI Η διάδοση των εγγραφών είναι προφανής Η σειριοποίηση των εγγραφών; Όλες οι εγγραφές που εµφανίζονται στο διάδροµο (BusRdX) διατάσσονται από αυτόν Οι αναγνώσεις που εµφανίζονται στο διάδροµο διατάσσονται ως προς αυτές Για τις εγγραφές που δεν εµφανίζονται στο διάδροµο: Μια ακολουθία τέτοιων εγγραφών µεταξύ δύο bus xactions για το ίδιο block πρέπει να προέρχονται από τον ίδιο επεξεργαστή P Στη σειριοποίηση, η ακολουθία εµφανίζεται µεταξύ αυτών των δύο bus xactions Οι αναγνώσεις από τον Ρ θα τις βλέπουν µε τη σειρά αυτή ως προς τις άλλες bus xactions Οι αναγνώσεις από άλλους επεξεργαστές διαχωρίζονται από την ακολουθία µε µία bus xaction, η οποία τις τοποθετεί σε σειρά ως προς τις εγγραφές Άρα οι αναγνώσεις από όλους τους επεξεργαστές βλέπουν τις εγγραφές µε την ίδια σειρά 53
Ακολουθιακή Συνέπεια στο Πρωτόκολλο MSI Ο διάδροµος επιβάλλει καθολική σειρά στις bus xactions για όλες τις θέσεις Ανάµεσα στις xactions, οι επεξεργαστές διαβάζουν / γράφουν τοπικά µε τη σειρά του προγράµµατος Άρα κάθε εκτέλεση ορίζει µια φυσική µερική διάταξη Η M j έπεται της M i αν (I) έπεται στη σειρά του προγράµµατος στον ίδιο επεξεργαστή, (ΙΙ) η M j δηµιουργεί bus xaction που έπεται της λειτουργίας µνήµης M i Σε ένα τµήµα ανάµεσα σε δύο bus transactions, κάθε παρεµβολή των λειτουργιών διαφορετικών επεξεργαστών δίνει συνεπή καθολική σειρά Σε ένα τέτοιο τµήµα, οι εγγραφές είναι ορατές στον επεξεργαστή P σειριοποιηµένες ως εξής: Writes from other processors by the previous bus xaction P issued Writes from P by program order 54
MESI - Πρωτόκολλο µε Ακύρωση Πρόβληµα πρωτοκόλλου MSI Ανάγνωση και τροποποίηση δεδοµένων µε 2 bus xactions, ακόµη και αν κανείς δεν τα µοιράζεται Π.χ. Σε ένα σειριακό πρόγραµµα BusRd (I->S) ακολουθούµενο από BusRdX ή BusUpgr (S->M) 55
MESI - Πρωτόκολλο µε Ακύρωση Προσθέτουµε τη κατάσταση αποκλειστικότητας (exclusive): γράφεται τοπικά χωρίς xaction, αλλά δεν τροποποιείται Καταστάσεις: Άκυρη - invalid Αποκλειστική - exclusive (µόνο αυτή η κρυφή µνήµη έχει αντίγραφο, όχι τροποποιηµένο) Μοιραζόµενη - shared (δύο ή περισσότερες κρυφές µνήµες µπορούν να έχουν αντίγραφο) Τροποποιηµένη modified Μετάβαση I -> E στο σήµα PrRd αν κανείς δεν έχει αντίγραφο Χρειάζεται σήµα shared στο διάδροµο ως απάντηση στο BusRd 56
ιάγραµµα Μετάβασης Καταστάσεων MESI PrRd PrWr/ M BusRd/Flush BusRdX/Flush PrWr/ PrWr/BusRdX E PrWr/BusRdX PrRd/ BusRd/ Flush BusRdX/Flush S PrRd/ BusRd (S) PrRd/ BusRd/Flush BusRdX/Flush PrRd/ BusRd(S) I 57
Ενέργεια στον επεξεργαστή Ρ1 διαβάζει u Ρ1 γράφει u Ρ3 διαβάζει u Ρ3 γράφει u Ρ1 διαβάζει u Ρ2 διαβάζει u Κατάσταση Ρ1 Ε Μ S I S S Παράδειγµα Κατάσταση Ρ2 Κατάσταση Ρ3 --- --- --- --- --- S --- M --- S S S Ενέργεια στο διάδροµο BusRd --- BusRd BusRdX BusRd BusRd Τα δεδοµένα παρέχονται από Κύρια Μνήµη --- Κρυφή Μνήµη Ρ1 Κύρια Μνήµη Κρυφή Μνήµη Ρ3 Κύρια Μνήµη 58
Dragon Write-back Πρωτόκολλο µε Ενηµέρωση 4 καταστάσεις Αποκλειστική - Exclusive (E): Την έχουµε εγώ και η µνήµη Μοιραζόµενη καθαρή - Shared clean (Sc): Εγώ, άλλοι και ίσως η µνήµη, εν είµαι ιδιοκτήτης Μοιραζόµενη τροποποιηµένη - Shared modified (Sm): Εγώ και άλλοι, αλλά όχι η µνήµη, Είµαι ο ιδιοκτήτης Οι Sm και Sc µπορούν να συνυπάρχουν δε διαφορετικές κρυφές µνήµες, µε µία µόνο Sm Τροποποιηµένη ή βρώµικη - Dirty (D): Εγώ και κανένας άλλος εν υπάρχει άκυρη κατάσταση Νέα γεγονότα επεξεργαστών: PrRdMiss, PrWrMiss Νέα bus transaction: BusUpd 59
Dragon ιάγραµµα Μετάβασης Καταστάσεων PrRd/ PrRd/ BusUpd/Update BusRd/ E Sc PrRdMiss/BusRd(S) PrRdMiss/BusRd(S) PrWr/ PrWr/BusUpd(S) BusUpd/Update PrWr/BusUpd(S) BusRd/Flush PrWrMiss/(BusRd(S); BusUpd) PrWrMiss/BusRd(S) Sm M PrWr/BusUpd(S) PrRd/ PrWr/BusUpd(S) BusRd/Flush PrRd/ PrWr/ 60
Ενέργεια στον επεξεργαστή Ρ1 διαβάζει u Ρ3 διαβάζει u Ρ3 γράφει u Ρ1 διαβάζει u Ρ2 διαβάζει u Κατάσταση Ρ1 Ε Sc Sc Sc Sc Παράδειγµα Κατάσταση Ρ2 Κατάσταση Ρ3 --- --- --- Sc --- Sm --- Sm Sc Sm Ενέργεια στο διάδροµο BusRd BusRd BusUpd --- BusRd Τα δεδοµένα παρέχονται από Κύρια Μνήµη Κύρια Μνήµη Κρυφή Μνήµη Ρ3 --- Κρυφή Μνήµη Ρ3 61