Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Συνάφεια Κρυφής (Λανθάνουσας) Μνήμης- -Συνέπεια Μνήμης

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Συνάφεια Κρυφής (Λανθάνουσας) Μνήμης- -Συνέπεια Μνήμης"— Μεταγράφημα παρουσίασης:

1 Συνάφεια Κρυφής (Λανθάνουσας) Μνήμης- -Συνέπεια Μνήμης
(Cache Coherence-Memory Consistency) …για Πολυεπεξεργαστές Μοιραζόμενης Μνήμης (Shared Memory Multiprocessors)

2 Shared Memory Multiprocessors
Η κύρια μνήμη προσπελαύνεται με τον ίδιο τρόπο και ταχύτητα από όλους τους επεξεργαστές Κάθε επεξεργαστής έχει το δικό του χώρο φυσικών διευθύνσεων κρυφής μνήμης (cache memory) Έχουν κυριαρχήσει στην αγορά συστημάτων εξυπηρετητών (servers) Είναι ιδιαίτερα πλεονεκτικοί ως I/O (throughput) servers και για παράλληλα προγράμματα Υποστηρίζουν μηχανισμούς προσπέλασης δεδομένων φαινομενικά όμοιους με τα μονο-επεξεργαστικά συστήματα (reads and writes)

3 Τρόποι επέκτασης του συστήματος μνήμης

4 Κρυφή (λανθάνουσα) μνήμη Cache Memory
Ο ρόλος της κρυφής μνήμης: Μειώνει το μέσο χρόνο πρόσβασης των δεδομένων Μειώνει τη ζήτηση εύρους ζώνης στο μοιραζόμενο μέσο διασύνδεσης

5 Συνάφεια Κρυφής μνήμης (Cache memory Coherence)
Αλλά οι τοπικές μονάδες κρυφής μνήμης για κάθε επεξεργαστή δημιουργούν πρόβλημα: Αντίγραφα μιας μεταβλητής μπορεί να υπάρχουν σε πολλές μονάδες κρυφής μνήμης Μια λειτουργία εγγραφής από κάποιον επεξεργαστή μπορεί να μην είναι ορατή από τους άλλους Θα εξακολουθούν να προσπελαύνουν την παλιά τιμή που υπάρχει στις τοπικές μονάδες κρυφής μνήμης Πρόβλημα Συνάφειας Κρυφής Μνήμης (Cache Coherence) Χρειάζεται να διασφαλιστεί η ορατότητα των τελευταίων αλλαγών

6 Κεντρική Μνήμη με διάδρομο
Μοιραζόμενη Κρυφή Μνήμη Low-latency sharing and prefetching across processors Μοιραζόμενα σύνολα εργασίας Δεν υπάρχει πρόβλημα συνάφειας Ανάγκη μεγάλου εύρους ζώνης Αυξημένη καθυστέρηση είτε σε cache hit είτε σε cache miss λόγω του διαδρόμου και του μεγέθους της κρυφής μνήμης : Συνέδεε ζεύγη επεξεργαστών σε μια πλακέτα (Encore, Sequent) Σήμερα: Για πολυεπεξεργαστές στο ίδιο chip (για συστήματα κόμβων μικρής κλίμακας) Συνέπεια Όχι πλέον δημοφιλής λύση: Όλα είναι το ίδιο μακριά

7 Κεντρική Μνήμη με διάδρομο
Κατανεμημένη Μνήμη Πιο δημοφιλής τεχνική για κατασκευή επεκτάσιμων συστημάτων (θα συζητηθεί στη συνέχεια)

8 Περίγραμμα Παρουσίασης
Συνάφεια (Coherence) και Συνέπεια (Consistency) Μνήμης Πρωτόκολλο Συνάφειας Κρυφής Μνήμης με Κατασκοπεία Ποσοτική αποτίμηση Πρωτοκόλλων Συνάφειας Κρυφής Μνήμης Συγχρονισμός

9 Σύστημα με Συνάφεια Κρυφής Μνήμης: Γενική Ιδέα
Η λειτουργία ανάγνωσης μιας θέσης μνήμης πρέπει να επιστρέφει την τιμή που γράφτηκε τελευταία (από οποιαδήποτε διεργασία) Εύκολο σε μονο-επεξεργαστικά συστήματα Θα θέλαμε να ισχύει το ίδιο όταν οι διεργασίες τρέχουν σε διαφορετικούς επεξεργαστές Αλλά το πρόβλημα της συνάφειας μνήμης είναι πολύ πιο δύσκολο σε συστήματα πολυεπεξεργαστών

10 Από την Αρχιτεκτονική Υπολογιστών…
Memory blocks vs Cache lines Πόσες λέξεις σε ένα cache-line? Write-back Write-through Write allocate Write-no-allocate write/read miss/hit …..θα τα δούμε στο κεφάλαιο «Ιεραρχία Μνήμης» ! (Προηγμένα Θέματα Οργάνωσης Υπολογιστών)

11 Ιεραρχία μνήμης Magnetic Disc Optical Disk or Magnetic Tape Cache
‘Όσο απομακρυνόμαστε από τη CPU : Μικρότερο κόστος/Bit Μεγαλύτερη χωρητικότητα Μεγαλύτερος χρόνος πρόσβασης-καθυστέρηση Χαμηλότερος ρυθμός εξόδου Part of The On-chip CPU Datapath Registers Registers Cache Main Memory Magnetic Disc Optical Disk or Magnetic Tape One or more levels (Static RAM): Level 1: On-chip 16-64K Level 2: On or Off-chip K Level 3: Off-chip 128K-8M Dynamic RAM (DRAM) 16M-16G Interface: SCSI, RAID, IDE, 1394 4G-100G

12 Μηχανισμοί εγγραφής σε memory block
Σε περίπτωση write-hit, γνωστοποιείται η αλλαγή στην κύρια μνήμη ; ναι: write-through όχι: write-back σε περίπτωση miss, τοποθετείται το memory block στην cache; ναι: write-allocate (συνήθως με write-back) όχι: write-no-allocate (συνήθως με write-through)

13 Write-Back & Write-Through (σε περίπτωση write-hit)
write-back : ενημέρωση της μνήμης μόνο κατά την απομάκρυνση του block από την cache οι εγγραφές πραγματοποιούνται με την ταχύτητα της cache dirty bit κατά την τροποποίηση – αντικατάσταση των “clean” block χωρίς ενημέρωση της μνήμης Χαμηλό ποσοστό misses Πολλές εγγραφές σε μία ενημέρωση write-through : ενημέρωση της μνήμης σε κάθε εγγραφή το κατώτερο ιεραρχικά επίπεδο περιέχει τα εγκυρότερα δεδομένα εύκολη υλοποίηση αυξημένη μετακίνηση δεδομένων προς τη μνήμη συχνά χρησιμοποιείται ένας write buffer για αποφυγή καθυστερήσεων όσο ενημερώνεται η μνήμη

14 Write-Allocate & write-no-Allocate (στη περίπτωση write-miss)
Write-allocate: το block φορτώνεται από τη μνήμη στη cache και στη συνέχεια μεταβάλλουμε τα δεδομένα του (χωρίς να ενημερώσουμε τα “κατώτερα” (πιο κοντινά στη κεντρική μνήμη) επίπεδα μνήμης) write-no-allocate: οι μετατροπές των δεδομένων γίνεται απευθείας στα χαμηλότερα επίπεδα της ιεραρχίας μνήμης (χωρίς να εμπλακεί η cache) “Allocate” a cache line to store the memory block !

15 Read hit / misses read hit : ανάγνωση των δεδομένων από την cache
read miss : μεταφορά ολόκληρου του block που περιέχει τα δεδομένα που αναζητάμε στην cache και στη συνέχεια όπως στο read hit

16 Write hit / misses Write-back & Write-allocate
write hit: εγγραφή των δεδομένων στην cache (μόνο). Η κύρια μνήμη ενημερώνεται μόνο όταν απομακρυνθεί το block από την cache και το block είναι dirty write miss: το block μεταφέρεται στην cache (στη σωστή θέση) και στη συνέχεια όπως στο write hit

17 Write hit / misses Write-through & No-write-allocate
write hit : εγγραφή των νέων δεδομένων στην cache και ενημέρωση της κύρια μνήμης write miss : η εγγραφή γίνεται μόνο στην κύρια μνήμη, ενώ δεν εμπλέκεται καθόλου η cache

18 Παράδειγμα Προβλήματος Συνάφειας Κρυφής Μνήμης
Οι επεξεργαστές βλέπουν διαφορετική τιμή για τη μεταβλητή u μετά τη λειτουργία 3 Με τις write back caches, η τιμή που γράφεται πίσω στη μνήμη εξαρτάται από το ποια cache και πότε διώχνει ή αντιγράφει δεδομένα Απαράδεκτο, αλλά συμβαίνει συχνά!

19 Παράδειγμα Προβλήματος Συνάφειας Κρυφής Μνήμης
Παρόμοια προβλήματα αντιμετωπίζουμε ακόμη και σε μονο- επεξεργαστικά συστήματα, όπου πρόσβαση στη μνήμη έχουν Οι λειτουργίες εισόδου / εξόδου (I/O operations) Οι συσκευές άμεσης προσπέλασης της μνήμης (DMA devices)

20 Προβλήματα με τη γενική ιδέα
Υπενθύμιση: Η τιμή που επιστρέφεται από μια λειτουργία ανάγνωσης πρέπει να είναι η τελευταία που γράφτηκε Αλλά η «τελευταία» δεν έχει οριστεί επαρκώς Ακόμη και στην περίπτωση σειριακού προγράμματος, η τελευταία ορίζεται σύμφωνα με τη σειρά που επιβάλλεται από το πρόγραμμα, όχι από το χρόνο Στην περίπτωση παράλληλου προγράμματος, η σειρά του προγράμματος ορίζεται εντός της διεργασίας Πρέπει να οριστεί και μια σειρά που να αφορά όλες τις διεργασίες

21 Εξειδίκευση της Γενικής Ιδέας
Έστω ότι υπάρχει μία μόνο μοιραζόμενη μνήμη και καθόλου μονάδες κρυφής μνήμης Κάθε λειτουργία ανάγνωσης και εγγραφής σε μια θέση μνήμης προσπελαύνει την ίδια φυσική θέση Η μνήμη επιβάλλει μια καθολική σειρά στις λειτουργίες σε αυτή τη θέση Οι λειτουργίες στη θέση αυτή από έναν επεξεργαστή γίνονται με τη σειρά που επιβάλλει το πρόγραμμα Η σειρά των λειτουργιών από διαφορετικούς επεξεργαστές είναι μια παρεμβολή που διατηρεί τις σειρές που επιβάλλονται από τα ανεξάρτητα προγράμματα «Τελευταία» τώρα σημαίνει την πιο πρόσφατη σε μια υποθετική ακολουθιακή σειρά που ικανοποιεί τις παραπάνω ιδιότητες

22 Εξειδίκευση της Γενικής Ιδέας
Για να είναι συνεπής η ακολουθιακή σειρά, πρέπει οι επεξεργαστές να βλέπουν τις εγγραφές στην ίδια θέση μνήμης με την ίδια σειρά Η καθολική σειρά δεν κατασκευάζεται ποτέ σε πραγματικά συστήματα Αλλά τα προγράμματα πρέπει να συμπεριφέρονται σαν να υπήρχε αυτή η καθολική σειρά

23 Ορισμός της Συνάφειας Μνήμης (Coherence)
Αποτελέσματα ενός προγράμματος: Οι τιμές που επιστρέφονται από τις λειτουργίες ανάγνωσης Ένα σύστημα μνήμης είναι συναφές αν τα αποτελέσματα κάθε εκτέλεσης ενός προγράμματος είναι τέτοια ώστε σε κάθε θέση μπορούμε να κατασκευάσουμε μια υποθετική ακολουθιακή σειρά όλων των λειτουργιών στη συγκεκριμένη θέση, που είναι συνεπής με τα αποτελέσματα της εκτέλεσης και στην οποία: 1. Οι λειτουργίες που καλούνται από κάθε διεργασία συμβαίνουν με τη σειρά στην οποία κλήθηκαν από τη διεργασία αυτή 2. Η τιμή που επιστρέφεται από μια λειτουργία ανάγνωσης είναι η τιμή της τελευταίας εγγραφής στη συγκεκριμένη θέση σύμφωνα με την καθολική σειρά

24 Ορισμός της Συνάφειας Μνήμης (Coherence)
Απαραίτητα χαρακτηριστικά: Διάδοση εγγραφών: Η τιμή που γράφεται πρέπει να γίνεται αμέσως ορατή στους άλλους Σειριοποίηση εγγραφών: Οι εγγραφές σε μια θέση φαίνονται στην ίδια σειρά για όλους Αν εγώ βλέπω στην εγγραφή w1 πριν από την w2, δεν πρέπει εσύ να βλέπεις την w2 πριν από την w1 Δεν χρειάζεται όμοια σειριοποίηση των λειτουργιών ανάγνωσης, αφού οι λειτουργίες ανάγνωσης δεν είναι ορατές από τους υπόλοιπους

25 Συνάφεια Κρυφής Μνήμης με τη χρήση Διαδρόμου
Στηρίζεται σε δυο βασικά χαρακτηριστικά των μονο-επεξεργαστικών συστημάτων 1. Bus transactions 2. Διάγραμμα μετάβασης καταστάσεων στην κρυφή μνήμη

26 Συνάφεια Κρυφής Μνήμης με τη χρήση Διαδρόμου
1. Bus transaction σε έναν επεξεργαστή: Τρεις φάσεις: διαιτησία, εντολή/διεύθυνση, μεταφορά δεδομένων Όλες οι συσκευές παρακολουθούν τις διευθύνσεις, μία είναι υπεύθυνη 2. Καταστάσεις κρυφής μνήμης για έναν επεξεργαστή: Ουσιαστικά, κάθε block είναι μια μηχανή πεπερασμένων καταστάσεων Write-through, write no-allocate έχουν δύο καταστάσεις: έγκυρη, άκυρη Writeback caches έχουν μία επιπλέον κατάσταση: τροποποιημένη

27 Συνάφεια Κρυφής Μνήμης με τη χρήση Διαδρόμου
Οι πολυεπεξεργαστές επεκτείνουν και τα δύο αυτά χαρακτηριστικά για να υλοποιήσουν τη συνάφεια κρυφής μνήμης

28 Κατασκοπευτική (snooping) Συνάφεια Μνήμης
Βασική Ιδέα: Οι transactions στο διάδρομο είναι ορατές σε όλους τους επεξεργαστές Οι επεξεργαστές ή οι αντιπρόσωποί τους μπορούν να κατασκοπεύουν το διάδρομο και να παίρνουν τα ανάλογα μέτρα (π.χ. Αλλαγή κατάστασης)

29 Κατασκοπευτική Συνάφεια Μνήμης
Υλοποίηση Πρωτοκόλλου 1. Ο ελεγκτής της κρυφής μνήμης τώρα δέχεται είσοδο από δύο πλευρές: Αιτήσεις από τον επεξεργαστή Αιτήσεις / αποκρίσεις διαδρόμου από τον κατάσκοπο 2. Σε κάθε περίπτωση, αναλαμβάνει ή όχι δράση Ενημερώνει μια κατάσταση αποκρίνεται με δεδομένα παράγει νέες bus transactions 3. Η συνάφεια βασίζεται στο μέγεθος του block της κρυφής μνήμης Όπως η κατανομή στην κρυφή μνήμη και η μεταφορά από και προς την κρυφή μνήμη

30 Συνάφεια με Write-through Caches
Βασικές επεκτάσεις από τους μονο-επεξεργαστές: 1. κατασκοπεία 2. ακύρωση / ενημέρωση κρυφής μνήμης Δεν υπάρχουν νέες καταστάσεις ή bus transactions στην περίπτωση αυτή Πρωτόκολλα που στηρίζονται στην ακύρωση ή στην ενημέρωση

31 Συνάφεια με Write-through Caches
Διάδοση εγγραφών: Ακόμη και στην περίπτωση ακύρωσης, οι επόμενες αναγνώσεις θα δουν την καινούρια τιμή Η ακύρωση προκαλεί miss στην επόμενη προσπέλαση και συνεπώς ενημέρωση της μνήμης

32 Write-through, Write-no-allocate Διάγραμμα Μετάβασης Καταστάσεων
Σε κάθε κρυφή μνήμη υπάρχουν δύο καταστάσεις ανά block, όπως στους μονοεπεξεργαστές Hardware bits κατάστασης συνδέονται μόνο με τα blocks που υπάρχουν στη μνήμη Τα υπόλοιπα blocks θεωρούνται σε άκυρη κατάσταση στη συγκεκριμένη κρυφή μνήμη

33 Write-through Διάγραμμα Μετάβασης Καταστάσεων
Οι εγγραφές ακυρώνουν όλα τα άλλα αντίγραφα σε κρυφές μνήμες (όχι τοπική αλλαγή κατάστασης) Μπορούν ταυτόχρονα να υπάρχουν πολλοί αναγνώστες ενός block, αλλά μια εγγραφή τους ακυρώνει

34 Είναι Συναφές; Κατασκευάζεται καθολική σειρά που ικανοποιεί τη τη σειρά του προγράμματος και τη σειριοποίηση των εγγραφών; 1. Υποθέτουμε ατομικές bus transactions και λειτουργίες μνήμης 2. Όλες οι εγγραφές περνούν από το διάδρομο Οι εγγραφές σειριοποιούνται σύμφωνα με τη σειρά που εμφανίζονται στο διάδρομο Οι ακυρώσεις εφαρμόζονται στις κρυφές μνήμες με τη σειρά που καθορίζει ο διάδρομος Πώς παρεμβάλλουμε τις αναγνώσεις στη σειρά αυτή;

35 Σειριοποίηση αναγνώσεων
Read misses: εμφανίζονται στο διάδρομο και βλέπουν την τελευταία εγγραφή σύμφωνα με τη σειρά που καθορίζει ο διάδρομος Read hits: δεν εμφανίζονται στο διάδρομο Αλλά η τιμή που διαβάζεται τοποθετήθηκε στην κρυφή μνήμη από Την πιο πρόσφατη εγγραφή από αυτόν τον επεξεργαστή, ή Την πιο πρόσφατη read miss από αυτόν τον επεξεργαστή Και οι δύο αυτές transactions εμφανίζονται στο διάδρομο Άρα οι reads hits βλέπουν τις τιμές με τη σειρά που καθορίζει ο διάδρομος

36 Καθορισμός Σειράς-Γενικά
Μια λειτουργία μνήμης Μ2 ακολουθεί μια λειτουργία μνήμης Μ1 αν οι λειτουργίες καλούνται από τον ίδιο επεξεργαστή και η Μ2 έπεται της Μ1 στη σειρά του προγράμματος. Μια ανάγνωση έπεται μιας εγγραφής W αν η ανάγνωση παράγει bus transaction που έπεται του bus transaction της W. Μια εγγραφή έπεται μια ανάγνωσης ή εγγραφής M αν η M παράγει bus xaction και η xaction για την εγγραφή έπεται αυτήν της M. Μια εγγραφή έπεται μιας ανάγνωσης αν η εγγραφή δεν παράγει bus xaction και δεν σειριοποιείται σε σχέση με τη εγγραφή από μια άλλη bus xaction.

37 Καθορισμός Σειράς-Γενικά
Οι εγγραφές καθορίζουν μια μερική σειριοποίηση Δεν περιορίζει τη σειριοποίηση των εγγραφών, αν και ο διάδρομος σειριοποιεί επίσης κάποιες read misses Κάθε διάταξη των αναγνώσεων μεταξύ των εγγραφών είναι ικανοποιητική, αρκεί να διατηρεί τη σειρά που ορίζεται από το πρόγραμμα

38 Πρόβλημα με Write-Through
Απαίτηση υψηλού εύρους ζώνης Οι Write-back κρύβουν τις περισσότερες εγγραφές από το διάδρομο ως cache hits

39 Συνέπεια Μνήμης-Memory Consistency
Οι εγγραφές σε μια θέση είναι ορατές από όλους με την ίδια σειρά. Αλλά πότε γίνεται ορατή μια εγγραφή; Πώς να καθορίσουμε τη σχετική σειριοποίηση μια εγγραφής και μιας ανάγνωσης από διαφορετικούς επεξεργαστές; Με συγχρονισμό των γεγονότων, χρησιμοποιώντας περισσότερες από μια θέσεις P 1 2 /*Υποθέστε ότι η αρχική τιμή της μεταβλητής Α είναι 0*/ A = 1; while (flag == 0); /*spin idly*/ flag = 1; print A;

40 Συνέπεια Μνήμης Η συνάφεια δεν εγγυάται τη γενική ιδέα
Μερικές φορές περιμένουμε να διατηρείται η σειρά των προσπελάσεων σε διαφορετικές θέσεις μνήμης από έναν δεδομένο επεξεργαστή Η έννοια της συνάφειας δεν βοηθάει: αναφέρεται σε μία μόνο θέση

41 Παράδειγμα P P 1 2 /*Assume initial values of A and B are 0*/ (1a) A = 1; (2a) print B; (1b) B = 2; (2b) print A; Όποια και αν είναι η γενική ιδέα, χρειαζόμαστε ένα μοντέλο σειριοποίησης Για διαφορετικές θέσεις μνήμης Ώστε οι προγραμματιστές να καθορίζουν τα δυνατά αποτελέσματα με βάση τη λογική Χρειαζόμαστε ένα μοντέλο συνέπειας της μνήμης

42 Μοντέλο Συνέπειας Μνήμης
Περιορίζει τις πιθανές διατάξεις με τις οποίες οι λειτουργίες μνήμης (από κάθε διεργασία) μπορούν να εμφανιστούν η μία σε σχέση με την άλλη Χωρίς αυτήν, δεν μπορούμε να πούμε τίποτα για το αποτέλεσμα της εκτέλεσης ενός προγράμματος SAS Συνέπειες για τους προγραμματιστές και τους σχεδιαστές συστήματος: Ο προγραμματιστής με βάση τη λογική αποφασίζει για την ορθότητα και τα πιθανά αποτελέσματα Ο σχεδιαστής συστήματος πρέπει να περιορίσει πόσο μπορούν να αναδιατάσσονται οι προσπελάσεις από τον compiler ή το hardware

43 Ακολουθιακή Συνέπεια Σαν να μην υπήρχαν κρυφές μνήμες, μία μόνο μνήμη
Καθολική διάταξη επιτυγχάνεται παρεμβάλλοντας μεταξύ τους τις προσπελάσεις από διαφορετικές διεργασίες Διατηρεί τη διάταξη του προγράμματος, και οι λειτουργίες της μνήμης, από όλες τις διεργασίες, εμφανίζονται να [καλούνται, εκτελούνται, ολοκληρώνονται] ατομικά σε σχέση με τις άλλες Διατηρείται η διαίσθηση του προγραμματιστή

44 Ακολουθιακή Συνέπεια “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]

45 Τι είναι η διάταξη του προγράμματος;
Διαισθητικά, η σειρά με την οποία εμφανίζονται οι λειτουργίες στον πηγαίο κώδικα Όχι όμως ίδια με τη σειρά που εμφανίζεται στο hardware από τον compiler Άρα, τι είναι η διάταξη του προγράμματος; Εξαρτάται από το ποιο επίπεδο και ποιος κάνει τη συσχέτιση Υποθέτουμε τη σειρά, όπως την βλέπει ο προγραμματιστής

46 Παράδειγμα Ακολουθιακής Συνέπειας
Αυτό που μετράει είναι η σειρά που φαίνεται ότι εκτελούνται οι εντολές, όχι που πραγματικά εκτελούνται P 1 2 /*Υποθέστε ότι οι αρχικές τιμές των Α,Β είναι 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, που οδηγεί σε άτοπο

47 Υλοποίηση Ακολουθιακή Συνέπειας
Δύο είδη απαιτήσεων: Σειρά του προγράμματος Οι λειτουργίες της μνήμης που καλούνται από μια διεργασία πρέπει να γίνονται ορατές (στους άλλους, αλλά και στην ίδια) με τη σειρά που υπαγορεύει το πρόγραμμα Ατομικότητα Στην καθολική σειρά, μια λειτουργία μνήμης πρέπει να φαίνεται ότι ολοκληρώνεται ως προς τις άλλες διεργασίες πριν κληθεί η επόμενη

48 Ατομικότητα εγγραφών Ατομικότητα εγγραφών: Η θέση στην καθολική σειρά στην οποία μια εγγραφή εμφανίζεται πρέπει να είναι η ίδια για όλες τις διεργασίες Τίποτα από αυτά που κάνει μια διεργασία αφού έχει δει την καινούρια τιμή που παράχθηκε από μια εγγραφή W δεν πρέπει να γίνεται ορατό στις άλλες διεργασίες πριν δουν την W Άρα, επεκτείνεται η σειριοποίηση των εγγραφών στις εγγραφές από πολλαπλές διεργασίες

49 Ορισμοί Η σειρά του προγράμματος κάθε διεργασίας επιβάλλει μια μερική διάταξη στο σύνολο των λειτουργιών Παρεμβάλλοντας μεταξύ τους αυτές τις μερικές διατάξεις, προκύπτει μια καθολική σειρά για όλες τις διεργασίες Περισσότερες από μία καθολικές σειρές μπορεί να είναι ακολουθιακά συνεπείς

50 Ορισμοί Ακολουθιακά συνεπής Εκτέλεση: H εκτέλεση ενός προγράμματος είναι ακολουθιακά συνεπής αν τα αποτελέσματα που παράγονται είναι όμοια με αυτά που θα μπορούσα να παραχθούν από μία πιθανή καθολική σειρά Ακολουθιακά συνεπές Σύστημα: Ένα σύστημα είναι ακολουθιακά συνεπές αν κάθε πιθανή εκτέλεση σε αυτό είναι μια ακολουθιακά συνεπής εκτέλεση

51 Ικανές Συνθήκες για Ακολουθιακή Συνέπεια
Κάθε διεργασία καλεί λειτουργίες της μνήμης με τη σειρά του προγράμματος Αφού κληθεί μια λειτουργία εγγραφή, η καλούσα διεργασία περιμένει να ολοκληρωθεί η εγγραφή πριν καλέσει την επόμενη λειτουργία Αφού κληθεί μια λειτουργία ανάγνωσης, η καλούσα διεργασία περιμένει να ολοκληρωθεί η ανάγνωση, καθώς και η εγγραφή της οποίας η τιμή επιστρέφεται, πριν καλέσει την επόμενη λειτουργία (παρέχει ατομικότητα των εγγραφών) Ικανές, όχι αναγκαίες συνθήκες Οι compilers δεν πρέπει να αναδιατάσσουν το πρόγραμμα για να έχουμε ακολουθιακή συνέπεια, αλλά το κάνουν! Ακόμα και αν καλούνται με τη σειρά, το hardware μπορεί να τις αναδιατάσσει για καλύτερη απόδοση Οι ικανές συνθήκες είναι πολύ περιοριστικές για να επιτευχθεί υψηλή απόδοση

52 Πώς χειριζόμαστε τη σειριοποίηση
Υποθέστε, (προς το παρόν), ότι ο compiler δεν αναδιατάσσει Το hardware χρειάζεται μηχανισμούς για να: Ανιχνεύσει την ολοκλήρωση των εγγραφών Εξασφαλίσει την ατομικότητα των εγγραφών Για όλα τα πρωτόκολλα και τις υλοποιήσεις θα δούμε: Πώς ικανοποιούν τη συνάφεια, ιδιαίτερα τη σειριοποίηση των εγγραφών Πώς ικανοποιούν τις ικανές συνθήκες για ακολουθιακή συνέπεια Πώς εξασφαλίζουν την ακολουθιακή συνέπεια, όχι μέσω των ικανών συνθηκών Θα δούμε ότι ο κεντρικός διάδρομος διασύνδεσης τα κάνει ευκολότερα

53 Ακολουθιακή Συνέπεια σε Write-Through Παράδειγμα
Παρέχει ακολουθιακή συνέπεια, όχι μόνο συνάφεια Επέκταση των επιχειρημάτων που χρησιμοποιούνται για τη συνάφεια Οι εγγραφές και οι read misses σε όλες τις θέσεις σειριοποιούνται πάνω στο διάδρομο Αν μια ανάγνωση παίρνει τιμή από μια εγγραφή W, η W σίγουρα έχει ολοκληρωθεί Αφού προκάλεσε bus transaction Όταν η εγγραφή W πραγματοποιείται ως προς τους άλλους επεξεργαστές, όλες οι προηγούμενες εγγραφές έχουν ολοκληρωθεί σύμφωνα με τη διάταξη που επιβάλλει ο διάδρομος Mexri edo eipame

54 Σχεδίαση για Κατασκοπευτικά Πρωτόκολλα
Δεν χρειάζεται να αλλάξουμε επεξεργαστή, κύρια μνήμη, κρυφή μνήμη … Επεκτείνουμε τον ελεγκτή της κρυφής μνήμης και εκμεταλλευόμαστε το διάδρομο (παρέχει σειριοποίηση) Επικεντρωνόμαστε στα πρωτόκολλα για write-back caches Η τροποποιημένη κατάσταση δείχνει αποκλειστική ιδιοκτησία Αποκλειστικότητα: Η μόνη κρυφή μνήμη με έγκυρο αντίγραφο (μπορεί να έχει και η κύρια μνήμη) Ιδιοκτήτης: υπεύθυνος να παρέχει το block αν ζητηθεί Σχεδίαση Πρωτόκολλα με ακύρωση ή με ενημέρωση Ορισμός καταστάσεων

55 Πρωτόκολλα με ακύρωση Αποκλειστικότητα σημαίνει ότι μπορεί να τροποποιεί χωρίς να ειδοποιεί κανέναν Δηλ. χωρίς bus transaction Πρέπει πρώτα να αποκτήσει την αποκλειστικότητα του block πριν γράψει σε αυτό Ακόμη και αν βρίσκεται σε έγκυρη κατάσταση, χρειάζεται transaction, άρα έχουμε write miss Αποθήκευση σε μη τροποποιημένα δεδομένα προκαλεί μια read-exclusive bus transaction Ειδοποιεί τους άλλους για την επερχόμενη εγγραφή, αποκτά την αποκλειστική ιδιοκτησία Μία μόνο RdX μπορεί να επιτύχει τη φορά για ένα block: σειριοποιούνται στο διάδρομο

56 Πρωτόκολλα με ενημέρωση
Μια λειτουργία εγγραφής ενημερώνει τις τιμές στις άλλες κρυφές μνήμες Πλεονεκτήματα Μειωμένη καθυστέρηση για τους άλλους επεξεργαστές στην επόμενη προσπέλαση Μία μόνο bus transaction ενημερώνει όλες τις κρυφές μνήμες Επίσης, μόνο η συγκεκριμένη λέξη μεταφέρεται, όχι όλο το block Μειονεκτήματα Πολλαπλές εγγραφές από τον ίδιο επεξεργαστή προκαλούν πολλές ενημερώσεις

57 Ακύρωση - Ενημέρωση Ένα block, που γράφεται από έναν επεξεργαστή, διαβάζεται από άλλους πριν ξαναγραφεί; Ακύρωση: Ναι  Οι αναγνώστες θα έχουν miss  Όχι  πολλές εγγραφές χωρίς επιπλέον κίνηση  Και εκκαθάριση των αντιγράφων που δεν θα ξαναχρησιμοποιηθούν  Ενημέρωση: Ναι  Οι αναγνώστες δεν θα χάσουν αν είχαν αντίγραφα  Με μία μόνο bus transaction ενημερώνονται όλα τα αντίγραφα  Όχι  Πολλές άχρηστες ενημερώσεις, ακόμα και σε νεκρά αντίγραφα  Πρέπει να εξετάσουμε τη συμπεριφορά των προγραμμάτων και την πολυπλοκότητα του hardware

58 MSI Writeback Πρωτόκολλο με Ακύρωση
Καταστάσεις: Άκυρη - Invalid (I) Μοιραζόμενη - Shared (S): (για ένα ή περισσότερους) Τροποποιημένη - Modified (M): (μόνο ένας) Γεγονότα επεξεργαστών: PrRd (ανάγνωση) PrWr (εγγραφή) Bus Transactions: BusRd: Ζητά αντίγραφο χωρίς σκοπό να το τροποποιήσει BusRdX: Ζητά αντίγραφο με σκοπό να το τροποποιήσει BusWB: Ενημερώνει τη μνήμη Δραστηριότητες: Ενημέρωση κατάστασης, Εκτέλεση bus transaction, Τοποθέτηση τιμής στο διάδρομο

59 Διάγραμμα Μετάβασης Καταστάσεων

60 Παράδειγμα Ενέργεια στον επεξεργαστή Κατάσταση Ρ1 Κατάσταση Ρ2
Ενέργεια στον επεξεργαστή Κατάσταση Ρ1 Κατάσταση Ρ2 Κατάσταση Ρ3 Ενέργεια στο διάδρομο Τα δεδομένα παρέχονται από Ρ1 διαβάζει u S --- BusRd Κύρια Μνήμη Ρ3 διαβάζει u Ρ3 γράφει u I M BusRdX Κρυφή Μνήμη Ρ3 Ρ2 διαβάζει u

61 Συνάφεια στο Πρωτόκολλο MSI
Η διάδοση των εγγραφών είναι προφανής Η σειριοποίηση των εγγραφών; Όλες οι εγγραφές που εμφανίζονται στο διάδρομο (BusRdX) διατάσσονται από αυτόν Οι αναγνώσεις που εμφανίζονται στο διάδρομο διατάσσονται ως προς αυτές Για τις εγγραφές που δεν εμφανίζονται στο διάδρομο: Μια ακολουθία τέτοιων εγγραφών μεταξύ δύο bus xactions για το ίδιο block πρέπει να προέρχονται από τον ίδιο επεξεργαστή P Στη σειριοποίηση, η ακολουθία εμφανίζεται μεταξύ αυτών των δύο bus xactions Οι αναγνώσεις από τον Ρ θα τις βλέπουν με τη σειρά αυτή ως προς τις άλλες bus xactions Οι αναγνώσεις από άλλους επεξεργαστές διαχωρίζονται από την ακολουθία με μία bus xaction, η οποία τις τοποθετεί σε σειρά ως προς τις εγγραφές Άρα οι αναγνώσεις από όλους τους επεξεργαστές βλέπουν τις εγγραφές με την ίδια σειρά

62 Ακολουθιακή Συνέπεια στο Πρωτόκολλο MSI
Ο διάδρομος επιβάλλει καθολική σειρά στις bus xactions για όλες τις θέσεις Ανάμεσα στις xactions, οι επεξεργαστές διαβάζουν / γράφουν τοπικά με τη σειρά του προγράμματος Άρα κάθε εκτέλεση ορίζει μια φυσική μερική διάταξη Η Mj έπεται της Mi αν (I) έπεται στη σειρά του προγράμματος στον ίδιο επεξεργαστή, (ΙΙ) η Mj δημιουργεί bus xaction που έπεται της λειτουργίας μνήμης Mi Σε ένα τμήμα ανάμεσα σε δύο bus transactions, κάθε παρεμβολή των λειτουργιών διαφορετικών επεξεργαστών δίνει συνεπή καθολική σειρά Σε ένα τέτοιο τμήμα, οι εγγραφές είναι ορατές στον επεξεργαστή P σειριοποιημένες ως εξής: Writes from other processors by the previous bus xaction P issued Writes from P by program order

63 MESI - Πρωτόκολλο με Ακύρωση
Πρόβλημα πρωτοκόλλου MSI Ανάγνωση και τροποποίηση δεδομένων με 2 bus xactions, ακόμη και αν κανείς δεν τα μοιράζεται Π.χ. Σε ένα σειριακό πρόγραμμα BusRd (I->S) ακολουθούμενο από BusRdX ή BusUpgr (S->M)

64 MESI - Πρωτόκολλο με Ακύρωση
Προσθέτουμε τη κατάσταση αποκλειστικότητας (exclusive): γράφεται τοπικά χωρίς xaction, αλλά δεν τροποποιείται Καταστάσεις: Άκυρη - invalid Αποκλειστική - exclusive (μόνο αυτή η κρυφή μνήμη έχει αντίγραφο, όχι τροποποιημένο) Μοιραζόμενη - shared (δύο ή περισσότερες κρυφές μνήμες μπορούν να έχουν αντίγραφο) Τροποποιημένη – modified Μετάβαση I -> E στο σήμα PrRd αν κανείς δεν έχει αντίγραφο Χρειάζεται σήμα “shared” στο διάδρομο ως απάντηση στο BusRd

65 Διάγραμμα Μετάβασης Καταστάσεων MESI

66 Τα δεδομένα παρέχονται από
Παράδειγμα Ενέργεια στον επεξεργαστή Κατάσταση Ρ1 Κατάσταση Ρ2 Κατάσταση Ρ3 Ενέργεια στο διάδρομο Τα δεδομένα παρέχονται από Ρ1 διαβάζει u Ε --- BusRd Κύρια Μνήμη Ρ1 γράφει u Μ Ρ3 διαβάζει u S Κρυφή Μνήμη Ρ1 Ρ3 γράφει u I M BusRdX Κρυφή Μνήμη Ρ3 Ρ2 διαβάζει u

67 Dragon Write-back Πρωτόκολλο με Ενημέρωση
4 καταστάσεις Αποκλειστική - Exclusive (E): Την έχουμε εγώ και η μνήμη Μοιραζόμενη καθαρή - Shared clean (Sc): Εγώ, άλλοι και ίσως η μνήμη, Δεν είμαι ιδιοκτήτης Μοιραζόμενη τροποποιημένη - Shared modified (Sm): Εγώ και άλλοι, αλλά όχι η μνήμη, Είμαι ο ιδιοκτήτης Οι Sm και Sc μπορούν να συνυπάρχουν δε διαφορετικές κρυφές μνήμες, με μία μόνο Sm Τροποποιημένη ή βρώμικη - Dirty (D): Εγώ και κανένας άλλος Δεν υπάρχει άκυρη κατάσταση Νέα γεγονότα επεξεργαστών: PrRdMiss, PrWrMiss Νέα bus transaction: BusUpd

68 Dragon Διάγραμμα Μετάβασης Καταστάσεων
E Sc Sm M PrW r/— PrRd/— PrRdMiss/BusRd(S) rMiss/(BusRd(S); BusUpd) rMiss/BusRd(S) r/BusUpd(S) BusRd/— BusRd/Flush BusUpd/Update

69 Τα δεδομένα παρέχονται από
Παράδειγμα Ενέργεια στον επεξεργαστή Κατάσταση Ρ1 Κατάσταση Ρ2 Κατάσταση Ρ3 Ενέργεια στο διάδρομο Τα δεδομένα παρέχονται από Ρ1 διαβάζει u Ε --- BusRd Κύρια Μνήμη Ρ3 διαβάζει u Sc Ρ3 γράφει u Sm BusUpd Κρυφή Μνήμη Ρ3 Ρ2 διαβάζει u


Κατέβασμα ppt "Συνάφεια Κρυφής (Λανθάνουσας) Μνήμης- -Συνέπεια Μνήμης"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google