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

Post on 30-Dec-2015

51 views 2 download

description

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

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

1

Shared Memory Multiprocessors

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

2

Shared Memory Multiprocessors

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

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

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

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

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

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

4

Κρυφή μνήμη

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

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

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

5

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

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

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

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

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

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

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

6

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

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

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

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

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

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

7

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

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

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

8

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

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

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

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

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

9

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

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

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

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

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

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

11

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

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

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

12

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

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

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

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

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

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

13

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

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

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

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

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

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

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

14

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

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

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

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

15

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

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

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

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

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

16

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

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

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

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

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

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

17

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

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

1. Bus transactions

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

18

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

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

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

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

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

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

19

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

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

20

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

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

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

21

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

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

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

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

κρυφή μνήμη

22

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

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

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

I/O devicesMem

P1

$

Bus snoop

$

Pn

Cache-memorytransaction

23

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

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

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

I/O devicesMem

P1

$

Bus snoop

$

Pn

Cache-memorytransaction

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

25

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

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

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

I

V

PrRd/BusRd

PrRd/—

PrWr/BusWr

BusWr/—

Processor-initiated transactions

Bus-snooper-initiated transactions

PrWr/BusWr

26

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

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

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

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

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

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

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

27

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

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

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

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

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

διάδρομος

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:

29

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

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

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

R W

R

R R

R R

RR R W

R

R

R R

RR

R

P0:

P1:

P2:

30

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

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

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

31

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

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

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

P1 P2

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

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

flag = 1; print A;

32

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

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

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

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

33

Παράδειγμα

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

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

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

P1 P2

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

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

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

34

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

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

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

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

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

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

35

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

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

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

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

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

Processors issuing memory references as per program order

P1 P2 Pn

Memory

The “switch” is randomly set after each memoryreference

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

37

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

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

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

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

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

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

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;

39

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

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

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

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

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

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

40

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

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

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

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

P1 P2 P3

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

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

print A;

41

Ορισμοί

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

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

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

42

Ορισμοί

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

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

43

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

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

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

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

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

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

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

απόδοση

44

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

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

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

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

συνθηκών

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

45

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

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

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

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

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

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

46

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

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

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

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

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

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

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

Σχεδίαση

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

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

47

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

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

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

άρα έχουμε write miss

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

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

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

48

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

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

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

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

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

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

ενημερώσεις

49

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

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

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

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

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

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

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

50

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

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

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

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

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

στο διάδρομο

51

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

PrRd/—

PrRd/—

PrWr/BusRdXBusRd/—

PrWr/—

S

M

I

BusRdX/Flush

BusRdX/—

BusRd/Flush

PrWr/BusRdX

PrRd/BusRd

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Κύρια Μνήμη

53

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

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

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

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

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

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

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

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

σειρά

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

55

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

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

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

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

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

56

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

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

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

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

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

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

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)

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Κύρια Μνήμη

59

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

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

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

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

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

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

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

Νέα bus transaction: BusUpd

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)

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