Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

61
1 Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

description

Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης. Shared Memory Multiprocessors. Η κύρια μνήμη προσπελαύνεται μ ε τ ο ν ίδιο τρόπο και ταχύτητα από όλο υ ς τους επεξεργαστές Κάθε επεξεργαστής έχει το δικό του χώρο φυσικών διευθύνσεων κρυφής μνήμης ( cache memory) - PowerPoint PPT Presentation

Transcript of Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

Page 1: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

1

Shared Memory Multiprocessors

Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

Page 2: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

2

Shared Memory Multiprocessors

Η κύρια μνήμη προσπελαύνεται με τον ίδιο τρόπο και ταχύτητα από όλους τους επεξεργαστές

Κάθε επεξεργαστής έχει το δικό του χώρο φυσικών διευθύνσεων κρυφής μνήμης (cache memory)

Έχουν κυριαρχήσει στην αγορά συστημάτων εξυπηρετητών (servers)

Είναι ιδιαίτερα πλεονεκτικοί ως throughput servers και για παράλληλα προγράμματα

Υποστηρίζουν μηχανισμούς προσπέλασης δεδομένων φαινομενικά όμοιους με τα μονο-επεξεργαστικά συστήματα (reads and writes)

Page 3: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

3

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

I/O devicesMem

P1

$ $

Pn

P1

Switch

Main memory

Pn

(Interleaved)

(Interleaved)

P1

$

Interconnection network

$

Pn

Mem Mem

(b) Bus-based shared memory

(c) Dancehall

(a) Shared cache

First-level $

Bus

P1

$

Interconnection network

$

Pn

Mem Mem

(d) Distributed-memory

Page 4: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

4

Κρυφή μνήμη

Ο ρόλος της κρυφής μνήμης:

Μειώνει το μέσο χρόνο πρόσβασης των δεδομένων

Μειώνει τη ζήτηση εύρους ζώνης στο μοιραζόμενο μέσο διασύνδεσης

Page 5: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

5

Συνάφεια Κρυφής μνήμηςΑλλά οι τοπικές μονάδες κρυφής μνήμης για κάθε επεξεργαστή

δημιουργούν πρόβλημα:

Αντίγραφα μιας μεταβλητής μπορεί να υπάρχουν σε πολλές μονάδες κρυφής μνήμης

Μια λειτουργία εγγραφής από κάποιον επεξεργαστή μπορεί να μην είναι ορατή από τους άλλους

• Θα εξακολουθούν να προσπελαύνουν την παλιά τιμή που υπάρχει στις τοπικές μονάδες κρυφής μνήμης

Πρόβλημα Συνάφειας Κρυφής Μνήμης (Cache Coherence)

Χρειάζεται να διασφαλιστεί η ορατότητα των τελευταίων αλλαγών

Page 6: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

6

Στίγμα: Κεντρική Μνήμη με διάδρομο

Μοιραζόμενη Κρυφή Μνήμη+Low-latency sharing and prefetching across processors+Μοιραζόμενα σύνολα εργασίας+Δεν υπάρχει πρόβλημα συνάφειας- Ανάγκη μεγάλου εύρους ζώνης- Αυξημένη καθυστέρηση είτε σε cache hit είτε σε cache miss λόγω του

διαδρόμου και του μεγέθους της κρυφής μνήμης

1980 - 1990: Συνέδεε ζεύγη επεξεργαστών σε μια πλακέτα (Encore, Sequent)

Σήμερα: Για πολυεπεξεργαστές στο ίδιο chip (για συστήματα κόμβων μικρής κλίμακας)

Συνέπεια • Όχι πλέον δημοφιλής λύση: Όλα είναι το ίδιο μακριά

Page 7: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

7

Στίγμα: Κεντρική Μνήμη με διάδρομο

Κατανεμημένη Μνήμη

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

Page 8: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

8

Περίγραμμα Παρουσίασης

Συνάφεια (Coherence) και Συνέπεια (Consistency) Μνήμης

Πρωτόκολλο Συνάφειας Κρυφής Μνήμης με Κατασκοπεία

Ποσοτική αποτίμηση Πρωτοκόλλων Συνάφειας Κρυφής Μνήμης

Συγχρονισμός

Page 9: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

9

Σύστημα με Συνάφεια μνήμης:Γενική Ιδέα

Η λειτουργία ανάγνωσης μιας θέσης μνήμης πρέπει να επιστρέφει την τιμή που γράφτηκε τελευταία (από οποιαδήποτε διεργασία)

Εύκολο σε μονο-επεξεργαστικά συστήματαΘα θέλαμε να ισχύει το ίδιο όταν οι διεργασίες τρέχουν σε

διαφορετικούς επεξεργαστές

Αλλά το πρόβλημα της συνάφειας μνήμης είναι πολύ πιο δύσκολο σε συστήματα πολυεπεξεργαστών

Page 10: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

10

Παράδειγμα Προβλήματος Συνάφειας Κρυφής Μνήμης

Οι επεξεργαστές βλέπουν διαφορετική τιμή για τη μεταβλητή u μετά τη λειτουργία 3

Με τις write back caches, η τιμή που γράφεται πίσω στη μνήμη εξαρτάται από το ποια cache και πότε διώχνει ή αντιγράφει δεδομένα

Απαράδεκτο, αλλά συμβαίνει συχνά!

I/O devices

Memory

P1

$ $ $

P2 P3

12

34 5

u = ?u = ?

u:5

u:5

u:5

u = 7

Page 11: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

11

Παράδειγμα Προβλήματος Συνάφειας Κρυφής Μνήμης

Παρόμοια προβλήματα αντιμετωπίζουμε ακόμη και σε μονο-επεξεργαστικά συστήματα, όπου πρόσβαση στη μνήμη έχουν

Οι λειτουργίες εισόδου / εξόδου (I/O operations)Οι συσκευές άμεσης προσπέλασης της μνήμης (DMA devices)

Page 12: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

12

Προβλήματα με τη γενική ιδέα

Υπενθύμιση: Η τιμή που επιστρέφεται από μια λειτουργία ανάγνωσης πρέπει να είναι η τελευταία που γράφτηκε

Αλλά η «τελευταία» δεν έχει οριστεί επαρκώςΑκόμη και στην περίπτωση σειριακού προγράμματος, η τελευταία

ορίζεται σύμφωνα με τη σειρά που επιβάλλεται από το πρόγραμμα, όχι από το χρόνο

Στην περίπτωση παράλληλου προγράμματος, η σειρά του προγράμματος ορίζεται εντός της διεργασίας

Πρέπει να οριστεί και μια σειρά που να αφορά όλες τις διεργασίες

Page 13: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

13

Εξειδίκευση της Γενικής Ιδέας

Έστω ότι υπάρχει μία μόνο μοιραζόμενη μνήμη και καθόλου μονάδες κρυφής μνήμηςΚάθε λειτουργία ανάγνωσης και εγγραφής σε μια θέση μνήμης

προσπελαύνει την ίδια φυσική θέση

Η μνήμη επιβάλλει μια καθολική σειρά στις λειτουργίες σε αυτή τη θέσηΟι λειτουργίες στη θέση αυτή από έναν επεξεργαστή γίνονται με τη

σειρά που επιβάλλει το πρόγραμμαΗ σειρά των λειτουργιών από διαφορετικούς επεξεργαστές είναι μια

παρεμβολή που διατηρεί τις σειρές που επιβάλλονται από τα ανεξάρτητα προγράμματα

«Τελευταία» τώρα σημαίνει την πιο πρόσφατη σε μια υποθετική ακολουθιακή σειρά που ικανοποιεί τις παραπάνω ιδιότητες

Page 14: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

14

Εξειδίκευση της Γενικής Ιδέας

Για να είναι συνεπής η ακολουθιακή σειρά, πρέπει οι επεξεργαστές να βλέπουν τις εγγραφές στην ίδια θέση μνήμης με την ίδια σειρά

Η καθολική σειρά δεν κατασκευάζεται ποτέ σε πραγματικά συστήματα

Αλλά τα προγράμματα πρέπει να συμπεριφέρονται σαν να υπήρχε αυτή η καθολική σειρά

Page 15: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

15

Ορισμός της Συνάφειας Μνήμης (Coherence)

Αποτελέσματα ενός προγράμματος: Οι τιμές που επιστρέφονται από τις λειτουργίες ανάγνωσης

Ένα σύστημα μνήμης είναι συναφές αν τα αποτελέσματα κάθε εκτέλεσης ενός προγράμματος είναι τέτοια ώστε σε κάθε θέση μπορούμε να κατασκευάσουμε μια υποθετική ακολουθιακή σειρά όλων των λειτουργιών στη συγκεκριμένη θέση, που είναι συνεπής με τα αποτελέσματα της εκτέλεσης και στην οποία:

1. Οι λειτουργίες που καλούνται από κάθε διεργασία συμβαίνουν με τη σειρά στην οποία κλήθηκαν από τη διεργασία αυτή

2. Η τιμή που επιστρέφεται από μια λειτουργία ανάγνωσης είναι η τιμή της τελευταίας εγγραφής στη συγκεκριμένη θέση σύμφωνα με την καθολική σειρά

Page 16: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

16

Ορισμός της Συνάφειας Μνήμης (Coherence)

Απαραίτητα χαρακτηριστικά:

• Διάδοση εγγραφών: Η τιμή που γράφεται πρέπει να γίνεται αμέσως ορατή στους άλλους

• Σειριοποίηση εγγραφών: Οι εγγραφές σε μια θέση φαίνονται στην ίδια σειρά για όλους

Αν εγώ βλέπω στην εγγραφή w1 πριν από την w2, δεν πρέπει εσύ να βλέπεις την w2 πριν από την w1

Δεν χρειάζεται όμοια σειριοποίηση των λειτουργιών ανάγνωσης, αφού οι λειτουργίες ανάγνωσης δεν είναι ορατές από τους υπόλοιπους

Page 17: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

17

Συνάφεια Κρυφής Μνήμης με τη χρήση Διαδρόμου

Στηρίζεται σε δυο βασικά χαρακτηριστικά των μονο-επεξεργαστικών συστημάτων

1. Bus transactions

2. Διάγραμμα μετάβασης καταστάσεων στην κρυφή μνήμη

Page 18: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

18

Συνάφεια Κρυφής Μνήμης με τη χρήση Διαδρόμου

1. Bus transaction σε έναν επεξεργαστή:

Τρεις φάσεις: διαιτησία, εντολή/διεύθυνση, μεταφορά δεδομένωνΌλες οι συσκευές παρακολουθούν τις διευθύνσεις, μία είναι υπεύθυνη

2. Καταστάσεις κρυφής μνήμης για έναν επεξεργαστή:

Ουσιαστικά, κάθε block είναι μια μηχανή πεπερασμένων καταστάσεωνWrite-through, write no-allocate έχουν δύο καταστάσεις: έγκυρη,

άκυρηWriteback caches έχουν μία επιπλέον κατάσταση: τροποποιημένη

Page 19: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

19

Συνάφεια Κρυφής Μνήμης με τη χρήση Διαδρόμου

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

Page 20: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

20

Κατασκοπευτική Συνάφεια ΜνήμηςΒασική Ιδέα:

Οι transactions στο διάδρομο είναι ορατές σε όλους τους επεξεργαστές

Οι επεξεργαστές ή οι αντιπρόσωποί τους μπορούν να κατασκοπεύουν το διάδρομο και να παίρνουν τα ανάλογα μέτρα (π.χ. Αλλαγή κατάστασης)

Page 21: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

21

Κατασκοπευτική Συνάφεια ΜνήμηςΥλοποίηση Πρωτοκόλλου

1.1. Ο ελεγκτής της κρυφής μνήμης τώρα δέχεται είσοδο από δύο πλευρές: Αιτήσεις από τον επεξεργαστήΑιτήσεις / αποκρίσεις διαδρόμου από τον κατάσκοπο

2.2. Σε κάθε περίπτωση, αναλαμβάνει ή όχι δράσηΕνημερώνει μια κατάστασηαποκρίνεται με δεδομέναπαράγει νέες bus transactions

3.3. Η συνάφεια βασίζεται στο μέγεθος του block της κρυφής μνήμηςΌπως η κατανομή στην κρυφή μνήμη και η μεταφορά από και προς την

κρυφή μνήμη

Page 22: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

22

Συνάφεια με Write-through Caches

Βασικές επεκτάσεις από τους μονο-επεξεργαστές: 1. κατασκοπεία 2. ακύρωση / ενημέρωση κρυφής μνήμης

Δεν υπάρχουν νέες καταστάσεις ή bus transactions στην περίπτωση αυτήΠρωτόκολλα που στηρίζονται στην ακύρωση ή στην ενημέρωση

I/O devicesMem

P1

$

Bus snoop

$

Pn

Cache-memorytransaction

Page 23: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

23

Συνάφεια με Write-through Caches

Διάδοση εγγραφών: Ακόμη και στην περίπτωση ακύρωσης, οι επόμενες αναγνώσεις θα δουν την καινούρια τιμή

Η ακύρωση προκαλεί miss στην επόμενη προσπέλαση και συνεπώς ενημέρωση της μνήμης

I/O devicesMem

P1

$

Bus snoop

$

Pn

Cache-memorytransaction

Page 24: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

24

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

Σε κάθε κρυφή μνήμη υπάρχουν δύο καταστάσεις ανά block, όπως στους μονο-επεξεργαστές

Hardware bits κατάστασης συνδέονται μόνο με τα blocks που υπάρχουν στη μνήμη

Τα υπόλοιπα blocks θεωρούνται σε άκυρη κατάσταση στη συγκεκριμένη κρυφή μνήμη

I

V

PrRd/BusRd

PrRd/—

PrWr/BusWr

BusWr/—

Processor-initiated transactions

Bus-snooper-initiated transactions

PrWr/BusWr

Page 25: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

25

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

Οι εγγραφές ακυρώνουν όλα τα άλλα αντίγραφα σε κρυφές μνήμες (όχι τοπική αλλαγή κατάστασης)

Μπορούν ταυτόχρονα να υπάρχουν πολλοί αναγνώστες ενός block, αλλά μια εγγραφή τους ακυρώνει

I

V

PrRd/BusRd

PrRd/—

PrWr/BusWr

BusWr/—

Processor-initiated transactions

Bus-snooper-initiated transactions

PrWr/BusWr

Page 26: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

26

Είναι Συναφές;

Κατασκευάζεται καθολική σειρά που ικανοποιεί τη τη σειρά του προγράμματος και τη σειριοποίηση των εγγραφών;

1. Υποθέτουμε ατομικές bus transactions και λειτουργίες μνήμης

2. Όλες οι εγγραφές περνούν από το διάδρομοΟι εγγραφές σειριοποιούνται σύμφωνα με τη σειρά που εμφανίζονται

στο διάδρομοΟι ακυρώσεις εφαρμόζονται στις κρυφές μνήμες με τη σειρά που

καθορίζει ο διάδρομος

Πώς παρεμβάλλουμε τις αναγνώσεις στη σειρά αυτή;

Page 27: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

27

Σειριοποίηση αναγνώσεων

Read misses: εμφανίζονται στο διάδρομο και βλέπουν την τελευταία εγγραφή σύμφωνα με τη σειρά που καθορίζει ο διάδρομος

Read hits: δεν εμφανίζονται στο διάδρομοΑλλά η τιμή που διαβάζεται τοποθετήθηκε στην κρυφή μνήμη από

Την πιο πρόσφατη εγγραφή από αυτόν τον επεξεργαστή, ήΤην πιο πρόσφατη read miss από αυτόν τον επεξεργαστή

Και οι δύο αυτές transactions εμφανίζονται στο διάδρομοΆρα οι reads hits βλέπουν τις τιμές με τη σειρά που καθορίζει ο

διάδρομος

Page 28: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

28

Καθορισμός Σειράς ΓενικάΜια λειτουργία μνήμης Μ2 ακολουθεί μια λειτουργία μνήμης Μ1 αν οι λειτουργίες καλούνται από τον ίδιο επεξεργαστή και η Μ2 έπεται της Μ1 στη σειρά του προγράμματος.

Μια ανάγνωση έπεται μιας εγγραφής W αν η ανάγνωση παράγει bus transaction που έπεται του bus transaction της W.

Μια εγγραφή έπεται μια ανάγνωσης ή εγγραφής M αν η M παράγει bus xaction και η xaction για την εγγραφή έπεται αυτήν της M.

Μια εγγραφή έπεται μιας ανάγνωσης αν η εγγραφή δεν παράγει bus xaction και δεν σειριοποιείται σε σχέση με τη εγγραφή από μια άλλη bus xaction.

R W

R

R R

R R

RR R W

R

R

R R

RR

R

P0:

P1:

P2:

Page 29: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

29

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

σειριοποιεί επίσης κάποιες read missesΚάθε διάταξη των αναγνώσεων μεταξύ των εγγραφών είναι ικανοποιητική,

αρκεί να διατηρεί τη σειρά που ορίζεται από το πρόγραμμα

R W

R

R R

R R

RR R W

R

R

R R

RR

R

P0:

P1:

P2:

Page 30: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

30

Πρόβλημα με Write-Through

Απαίτηση υψηλού εύρους ζώνης

Οι Write-back κρύβουν τις περισσότερες εγγραφές από το διάδρομο ως cache hits

Page 31: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

31

Συνέπεια ΜνήμηςΟι εγγραφές σε μια θέση είναι ορατές από όλους με την ίδια σειράΑλλά πότε γίνεται ορατή μια εγγραφή;

Πώς να καθορίσουμε τη σχετική σειριοποίηση μια εγγραφής και μιας ανάγνωσης από διαφορετικούς επεξεργαστές;

Με συγχρονισμό των γεγονότων, χρησιμοποιώντας περισσότερες από μια θέσεις

P1 P2

/*Υποθέστε ότι η αρχική τιμή της μεταβλητής Α είναι 0*/

A = 1; while (flag == 0); /*spin idly*/

flag = 1; print A;

Page 32: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

32

Συνέπεια Μνήμης

Η συνάφεια δεν εγγυάται τη γενική ιδέα

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

Η έννοια της συνάφειας δεν βοηθάει: αναφέρεται σε μία μόνο θέση

Page 33: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

33

Παράδειγμα

Όποια και αν είναι η γενική ιδέα, χρειαζόμαστε ένα μοντέλο σειριοποίησης

Για διαφορετικές θέσεις μνήμηςΏστε οι προγραμματιστές να καθορίζουν τα δυνατά αποτελέσματα με

βάση τη λογικήΧρειαζόμαστε ένα μοντέλο συνέπειας της μνήμης

P1 P2

/*Assume initial values of A and B are 0*/

(1a) A = 1; (2a) print B;

(1b) B = 2; (2b) print A;

Page 34: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

34

Μοντέλο Συνέπειας Μνήμης

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

Χωρίς αυτήν, δεν μπορούμε να πούμε τίποτα για το αποτέλεσμα της εκτέλεσης ενός προγράμματος SAS

Συνέπειες για τους προγραμματιστές και τους σχεδιαστές συστήματος:Ο προγραμματιστής με βάση τη λογική αποφασίζει για την ορθότητα

και τα πιθανά αποτελέσματαΟ σχεδιαστής συστήματος πρέπει να περιορίσει πόσο μπορούν να

αναδιατάσσονται οι προσπελάσεις από τον compiler ή το hardware

Page 35: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

35

Ακολουθιακή Συνέπεια

Σαν να μην υπήρχαν κρυφές μνήμες, μία μόνο μνήμηΚαθολική διάταξη επιτυγχάνεται παρεμβάλλοντας μεταξύ τους τις

προσπελάσεις από διαφορετικές διεργασίεςΔιατηρεί τη διάταξη του προγράμματος, και οι λειτουργίες της

μνήμης, από όλες τις διεργασίες, εμφανίζονται να [καλούνται, εκτελούνται, ολοκληρώνονται] ατομικά σε σχέση με τις άλλες

Διατηρείται η διαίσθηση του προγραμματιστή

Processors issuing memory references as per program order

P1 P2 Pn

Memory

The “switch” is randomly set after each memoryreference

Page 36: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

36

Ακολουθιακή Συνέπεια

“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]

Processors issuing memory references as per program order

P1 P2 Pn

Memory

The “switch” is randomly set after each memoryreference

Page 37: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

37

Τι είναι η διάταξη του προγράμματος;

Διαισθητικά, η σειρά με την οποία εμφανίζονται οι λειτουργίες στον πηγαίο κώδικα

Όχι όμως ίδια με τη σειρά που εμφανίζεται στο hardware από τον compiler

Άρα, τι είναι η διάταξη του προγράμματος;

Εξαρτάται από το ποιο επίπεδο και ποιος κάνει τη συσχέτιση

Υποθέτουμε τη σειρά, όπως την βλέπει ο προγραμματιστής

Page 38: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

38

Παράδειγμα Ακολουθιακής Συνέπειας

Πιθανά αποτελέσματα για (A,B): (0,0), (1,0), (1,2); Αδύνατον υποθέτοντας ακολουθιακή συνέπεια: (0,2)

Γνωρίζουμε ότι 1a->1b και 2a->2b από τη διάταξη του προγράμματοςA = 0 προϋποθέτει 2b->1a, άρα 2a->1bB = 2 προϋποθέτει 1b->2a, που οδηγεί σε άτοπο

Αυτό που μετράει είναι η σειρά που φαίνεται ότι εκτελούνται οι εντολές, όχι που πραγματικά εκτελούνται

P1 P2

/*Υποθέστε ότι οι αρχικές τιμές των Α,Β είναι 0*/

(1a) A = 1; (2a) print B;

(1b) B = 2; (2b) print A;

Page 39: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

39

Υλοποίηση Ακολουθιακή Συνέπειας

Δύο είδη απαιτήσεων:

Σειρά του προγράμματοςΟι λειτουργίες της μνήμης που καλούνται από μια διεργασία πρέπει να

γίνονται ορατές (στους άλλους, αλλά και στην ίδια) με τη σειρά που υπαγορεύει το πρόγραμμα

ΑτομικότηταΣτην καθολική σειρά, μια λειτουργία μνήμης πρέπει να φαίνεται ότι

ολοκληρώνεται ως προς τις άλλες διεργασίες πριν κληθεί η επόμενη

Page 40: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

40

Ατομικότητα εγγραφώνΑτομικότητα εγγραφών: Η θέση στην καθολική σειρά στην οποία

μια εγγραφή εμφανίζεται πρέπει να είναι η ίδια για όλες τις διεργασίεςΤίποτα από αυτά που κάνει μια διεργασία αφού έχει δει την

καινούρια τιμή που παράχθηκε από μια εγγραφή W δεν πρέπει να γίνεται ορατό στις άλλες διεργασίες πριν δουν την W

Άρα, επεκτείνεται η σειριοποίηση των εγγραφών στις εγγραφές από πολλαπλές διεργασίες

P1 P2 P3

A=1; while (A==0);

B=1; while (B==0);

print A;

Page 41: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

41

Ορισμοί

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

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

Περισσότερες από μία καθολικές σειρές μπορεί να είναι ακολουθιακά συνεπείς

Page 42: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

42

Ορισμοί

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

Ακολουθιακά συνεπές Σύστημα: Ένα σύστημα είναι ακολουθιακά συνεπές αν κάθε πιθανή εκτέλεση σε αυτό είναι μια ακολουθιακά συνεπής εκτέλεση

Page 43: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

43

Ικανές Συνθήκες για Ακολουθιακή Συνέπεια

Κάθε διεργασία καλεί λειτουργίες της μνήμης με τη σειρά του προγράμματος

Αφού κληθεί μια λειτουργία εγγραφή, η καλούσα διεργασία περιμένει να ολοκληρωθεί η εγγραφή πριν καλέσει την επόμενη λειτουργία

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

Ικανές, όχι αναγκαίες συνθήκες

Οι compilers δεν πρέπει να αναδιατάσσουν το πρόγραμμα για να έχουμε ακολουθιακή συνέπεια, αλλά το κάνουν!

Ακόμα και αν καλούνται με τη σειρά, το hardware μπορεί να τις αναδιατάσσει για καλύτερη απόδοσηΟι ικανές συνθήκες είναι πολύ περιοριστικές για να επιτευχθεί υψηλή

απόδοση

Page 44: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

44

Πώς χειριζόμαστε τη σειριοποίηση

Υποθέστε, προς το παρόν, ότι ο compiler δεν αναδιατάσσει

Το hardware χρειάζεται μηχανισμούς για να:Ανιχνεύσει την ολοκλήρωση των εγγραφώνΕξασφαλίσει την ατομικότητα των εγγραφών

Για όλα τα πρωτόκολλα και τις υλοποιήσεις θα δούμε:Πώς ικανοποιούν τη συνάφεια, ιδιαίτερα τη σειριοποίηση των εγγραφώνΠώς ικανοποιούν τις ικανές συνθήκες για ακολουθιακή συνέπειαΠώς εξασφαλίζουν την ακολουθιακή συνέπεια, όχι μέσω των ικανών

συνθηκών

Θα δούμε ότι ο κεντρικός διάδρομος διασύνδεσης τα κάνει ευκολότερα

Page 45: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

45

Ακολουθιακή Συνέπεια σε Write-Through Παράδειγμα

Παρέχει ακολουθιακή συνέπεια, όχι μόνο συνάφεια

Επέκταση των επιχειρημάτων που χρησιμοποιούνται για τη συνάφειαΟι εγγραφές και οι read misses σε όλες τις θέσεις σειριοποιούνται

πάνω στο διάδρομοΑν μια ανάγνωση παίρνει τιμή από μια εγγραφή W, η W σίγουρα έχει

ολοκληρωθείΑφού προκάλεσε bus transaction

Όταν η εγγραφή W πραγματοποιείται ως προς τους άλλους επεξεργαστές, όλες οι προηγούμενες εγγραφές έχουν ολοκληρωθεί σύμφωνα με τη διάταξη που επιβάλλει ο διάδρομος

Page 46: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

46

Σχεδίαση για Κατασκοπευτικά Πρωτόκολλα

Δεν χρειάζεται να αλλάξουμε επεξεργαστή, κύρια μνήμη, κρυφή μνήμη …

Επεκτείνουμε τον ελεγκτή της κρυφής μνήμης και εκμεταλλευόμαστε το διάδρομο (παρέχει σειριοποίηση)

Επικεντρωνόμαστε στα πρωτόκολλα για write-back caches

Η τροποποιημένη κατάσταση δείχνει αποκλειστική ιδιοκτησία

Αποκλειστικότητα: Η μόνη κρυφή μνήμη με έγκυρο αντίγραφο (μπορεί να έχει και η κύρια μνήμη)

Ιδιοκτήτης: υπεύθυνος να παρέχει το block αν ζητηθεί

Σχεδίαση

Πρωτόκολλα με ακύρωση ή με ενημέρωση

Ορισμός καταστάσεων

Page 47: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

47

Πρωτόκολλα με ακύρωση

Αποκλειστικότητα σημαίνει ότι μπορεί να τροποποιεί χωρίς να ειδοποιεί κανένανΔηλ. χωρίς bus transactionΠρέπει πρώτα να αποκτήσει την αποκλειστικότητα του block πριν

γράψει σε αυτόΑκόμη και αν βρίσκεται σε έγκυρη κατάσταση, χρειάζεται transaction,

άρα έχουμε write miss

Αποθήκευση σε μη τροποποιημένα δεδομένα προκαλεί μια read-exclusive bus transactionΕιδοποιεί τους άλλους για την επερχόμενη εγγραφή, αποκτά την

αποκλειστική ιδιοκτησίαΜία μόνο RdX μπορεί να επιτύχει τη φορά για ένα block:

σειριοποιούνται στο διάδρομο

Page 48: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

48

Πρωτόκολλα με ενημέρωση

Μια λειτουργία εγγραφής ενημερώνει τις τιμές στις άλλες κρυφές μνήμες

ΠλεονεκτήματαΜειωμένη καθυστέρηση για τους άλλους επεξεργαστές στην επόμενη

προσπέλασηΜία μόνο bus transaction ενημερώνει όλες τις κρυφές μνήμες

Επίσης, μόνο η συγκεκριμένη λέξη μεταφέρεται, όχι όλο το block

ΜειονεκτήματαΠολλαπλές εγγραφές από τον ίδιο επεξεργαστή προκαλούν πολλές

ενημερώσεις

Page 49: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

49

Ακύρωση - Ενημέρωση

Ένα block, που γράφεται από έναν επεξεργαστή, διαβάζεται από άλλους πριν ξαναγραφεί;

Ακύρωση:Ναι Οι αναγνώστες θα έχουν miss Όχι πολλές εγγραφές χωρίς επιπλέον κίνηση

Και εκκαθάριση των αντιγράφων που δεν θα ξαναχρησιμοποιηθούν Ενημέρωση:

Ναι Οι αναγνώστες δεν θα χάσουν αν είχαν αντίγραφα Με μία μόνο bus transaction ενημερώνονται όλα τα αντίγραφα

Όχι Πολλές άχρηστες ενημερώσεις, ακόμα και σε νεκρά αντίγραφα

Πρέπει να εξετάσουμε τη συμπεριφορά των προγραμμάτων και την πολυπλοκότητα του hardware

Page 50: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

50

MSI Writeback Πρωτόκολλο με Ακύρωση

Καταστάσεις:Άκυρη - Invalid (I)Μοιραζόμενη - Shared (S): (για ένα ή περισσότερους)Τροποποιημένη - Modified (M): (μόνο ένας)

Γεγονότα επεξεργαστών: PrRd (ανάγνωση)PrWr (εγγραφή)

Bus Transactions:BusRd: Ζητά αντίγραφο χωρίς σκοπό να το τροποποιήσειBusRdX: Ζητά αντίγραφο με σκοπό να το τροποποιήσειBusWB: Ενημερώνει τη μνήμη

Δραστηριότητες:Ενημέρωση κατάστασης, Εκτέλεση bus transaction, Τοποθέτηση τιμής

στο διάδρομο

Page 51: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

51

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

PrRd/—

PrRd/—

PrWr/BusRdXBusRd/—

PrWr/—

S

M

I

BusRdX/Flush

BusRdX/—

BusRd/Flush

PrWr/BusRdX

PrRd/BusRd

Page 52: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

52

Παράδειγμα

Ενέργεια στον επεξεργαστή

Κατάσταση Ρ1

Κατάσταση Ρ2

Κατάσταση Ρ3

Ενέργεια στο διάδρομο

Τα δεδομένα παρέχονται από

Ρ1 διαβάζει u S --- --- BusRdΚύρια Μνήμη

Ρ3 διαβάζει u S --- S BusRdΚύρια Μνήμη

Ρ3 γράφει u I --- M BusRdXΚύρια Μνήμη

Ρ1 διαβάζει u S --- S BusRdΚρυφή Μνήμη Ρ3

Ρ2 διαβάζει u S S S BusRdΚύρια Μνήμη

Page 53: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

53

Συνάφεια στο Πρωτόκολλο MSIΗ διάδοση των εγγραφών είναι προφανής

Η σειριοποίηση των εγγραφών;Όλες οι εγγραφές που εμφανίζονται στο διάδρομο (BusRdX)

διατάσσονται από αυτόνΟι αναγνώσεις που εμφανίζονται στο διάδρομο διατάσσονται ως προς

αυτέςΓια τις εγγραφές που δεν εμφανίζονται στο διάδρομο:

Μια ακολουθία τέτοιων εγγραφών μεταξύ δύο bus xactions για το ίδιο block πρέπει να προέρχονται από τον ίδιο επεξεργαστή P

Στη σειριοποίηση, η ακολουθία εμφανίζεται μεταξύ αυτών των δύο bus xactions Οι αναγνώσεις από τον Ρ θα τις βλέπουν με τη σειρά αυτή ως προς τις άλλες bus

xactions Οι αναγνώσεις από άλλους επεξεργαστές διαχωρίζονται από την ακολουθία με μία

bus xaction, η οποία τις τοποθετεί σε σειρά ως προς τις εγγραφές Άρα οι αναγνώσεις από όλους τους επεξεργαστές βλέπουν τις εγγραφές με την ίδια

σειρά

Page 54: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

54

Ακολουθιακή Συνέπεια στο Πρωτόκολλο MSI

Ο διάδρομος επιβάλλει καθολική σειρά στις bus xactions για όλες τις θέσεις

Ανάμεσα στις xactions, οι επεξεργαστές διαβάζουν / γράφουν τοπικά με τη σειρά του προγράμματος

Άρα κάθε εκτέλεση ορίζει μια φυσική μερική διάταξηΗ Mj έπεται της Mi αν (I) έπεται στη σειρά του προγράμματος στον ίδιο

επεξεργαστή, (ΙΙ) η Mj δημιουργεί bus xaction που έπεται της λειτουργίας μνήμης Mi

Σε ένα τμήμα ανάμεσα σε δύο bus transactions, κάθε παρεμβολή των λειτουργιών διαφορετικών επεξεργαστών δίνει συνεπή καθολική σειρά

Σε ένα τέτοιο τμήμα, οι εγγραφές είναι ορατές στον επεξεργαστή P σειριοποιημένες ως εξής:

Writes from other processors by the previous bus xaction P issuedWrites from P by program order

Page 55: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

55

MESI - Πρωτόκολλο με Ακύρωση

Πρόβλημα πρωτοκόλλου MSI

Ανάγνωση και τροποποίηση δεδομένων με 2 bus xactions, ακόμη και αν κανείς δεν τα μοιράζεται

Π.χ. Σε ένα σειριακό πρόγραμμα

BusRd (I->S) ακολουθούμενο από BusRdX ή BusUpgr (S->M)

Page 56: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

56

MESI - Πρωτόκολλο με Ακύρωση

Προσθέτουμε τη κατάσταση αποκλειστικότητας (exclusive): γράφεται τοπικά χωρίς xaction, αλλά δεν τροποποιείται

Καταστάσεις:Άκυρη - invalidΑποκλειστική - exclusive (μόνο αυτή η κρυφή μνήμη έχει αντίγραφο, όχι

τροποποιημένο)Μοιραζόμενη - shared (δύο ή περισσότερες κρυφές μνήμες μπορούν να

έχουν αντίγραφο)Τροποποιημένη – modified

Μετάβαση I -> E στο σήμα PrRd αν κανείς δεν έχει αντίγραφοΧρειάζεται σήμα “shared” στο διάδρομο ως απάντηση στο BusRd

Page 57: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

57

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

PrWr/—

BusRd/Flush

PrRd/

BusRdX/Flush

PrWr/BusRdX

PrWr/—

PrRd/—

PrRd/—BusRd/Flush

E

M

I

S

PrRd

BusRd(S)

BusRdX/Flush

BusRdX/Flush

BusRd/Flush

PrWr/BusRdX

PrRd/BusRd (S)

Page 58: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

58

ΠαράδειγμαΕνέργεια στον επεξεργαστή

Κατάσταση Ρ1

Κατάσταση Ρ2

Κατάσταση Ρ3

Ενέργεια στο

διάδρομο

Τα δεδομένα παρέχονται

από

Ρ1 διαβάζει u Ε --- --- BusRdΚύρια Μνήμη

Ρ1 γράφει u Μ --- --- --- ---

Ρ3 διαβάζει u S --- S BusRdΚρυφή

Μνήμη Ρ1

Ρ3 γράφει u I --- M BusRdXΚύρια Μνήμη

Ρ1 διαβάζει u S --- S BusRdΚρυφή

Μνήμη Ρ3

Ρ2 διαβάζει u S S S BusRdΚύρια Μνήμη

Page 59: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

59

Dragon Write-back Πρωτόκολλο με Ενημέρωση

4 καταστάσειςΑποκλειστική - Exclusive (E): Την έχουμε εγώ και η μνήμηΜοιραζόμενη καθαρή - Shared clean (Sc): Εγώ, άλλοι και ίσως η

μνήμη, Δεν είμαι ιδιοκτήτηςΜοιραζόμενη τροποποιημένη - Shared modified (Sm): Εγώ και άλλοι,

αλλά όχι η μνήμη, Είμαι ο ιδιοκτήτηςΟι Sm και Sc μπορούν να συνυπάρχουν δε διαφορετικές κρυφές μνήμες,

με μία μόνο SmΤροποποιημένη ή βρώμικη - Dirty (D): Εγώ και κανένας άλλος

Δεν υπάρχει άκυρη κατάσταση

Νέα γεγονότα επεξεργαστών: PrRdMiss, PrWrMiss

Νέα bus transaction: BusUpd

Page 60: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

60

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

E Sc

Sm M

PrWr/—PrRd/—

PrRd/—

PrRd/—

PrRdMiss/BusRd(S)PrRdMiss/BusRd(S)

PrWr/—

PrWrMiss/(BusRd(S); BusUpd) PrWrMiss/BusRd(S)

PrWr/BusUpd(S)

PrWr/BusUpd(S)

BusRd/—

BusRd/Flush

PrRd/— BusUpd/Update

BusUpd/Update

BusRd/Flush

PrWr/BusUpd(S)

PrWr/BusUpd(S)

Page 61: Shared Memory Multiprocessors Πολυεπεξεργαστές Μοιραζόμενης Μνήμης

61

Παράδειγμα

Ενέργεια στον επεξεργαστή

Κατάσταση Ρ1

Κατάσταση Ρ2

Κατάσταση Ρ3

Ενέργεια στο

διάδρομο

Τα δεδομένα παρέχονται

από

Ρ1 διαβάζει u Ε --- --- BusRdΚύρια Μνήμη

Ρ3 διαβάζει u Sc --- Sc BusRdΚύρια Μνήμη

Ρ3 γράφει u Sc --- Sm BusUpdΚρυφή

Μνήμη Ρ3

Ρ1 διαβάζει u Sc --- Sm --- ---

Ρ2 διαβάζει u Sc Sc Sm BusRdΚρυφή

Μνήμη Ρ3