Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

Σχετικά έγγραφα
ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Υ- 01 Αρχιτεκτονική Υπολογιστών Πολυεπεξεργαστές

Υ- 01 Αρχιτεκτονική Υπολογιστών Πολυεπεξεργαστές, 2ο μέρος

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

Πολυπύρηνοι επεξεργαστές Multicore processors

Συνάφεια Κρυφής (Λανθάνουσας) Μνήµης- -Συνέπεια Μνήµης (Cache Coherence-Memory Consistency)

8/3/2016 Οργάνωση κοινόχρηστης μνήμης (ΙΙ) Η λειτουργία της μνήμης

Υ- 07 Παράλληλα Συστήματα Συνοχή κρυφής μνήμης με σύστημα καταλόγων

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Υ- 07 Παράλληλα Συστήματα Transac9onal memory

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ. ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Δρασίδης Γεώργιος

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Σειρά Ασκήσεων 13: Συνοχή (Coherence) Κρυφών Μνημών, Προχωρημένοι Επεξεργαστές (Out-of-Order, Superscalar, Multithreading, Multicores)

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Parallel Architectures

Συνέπεια μνήμης σε πολυπύρηνα/πολυεπεξεργαστικά συστήματα

Συνοχή κρυφής μνήμης σε πολυπύρηνα/πολυεπεξεργαστικά συστήματα

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Πολυεπεξεργαστές Κοινής Μνήμης & Multi-cores. Κεφάλαιο ΙΙ

Αρχιτεκτονική υπολογιστών

Συνάφεια Κρυφής Μνήµης σε Επεκτάσιµα Μηχανήµατα

Υ- 07 Παράλληλα Συστήματα Συνχρονισμός, κρυφές μνήμες πολλαπλών επιπέδων

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

Πολυεπεξεργαστές Κοινόχρηστης Μνήμης & Multi-cores. Κεφάλαιο ΙΙ

Parallel Architectures

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΠΛΕ- 027 Μικροεπεξεργαστές

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Αρχιτεκτονική Υπολογιστών

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

Parallel Architectures

Οργάνωση Υπολογιστών (IΙI)

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Σημεία ελέγχου (Checkpoints)

Εικονική Μνήμη (Virtual Μemory)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Ας δούμε λίγο την θεωρία με την οποία ασχοληθήκαμε μέχρι τώρα.

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Λειτουργικά Συστήματα (ΗΥ321)

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

Εισαγωγή Θέματα H/W. Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης. Κατανεμημένα Συστήματα (Ε) Εισαγωγή: Θέματα H/W 1

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

Έλεγχος συγχρονικότητας Μέρος 1 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Λειτουργικά Συστήματα (ΗΥ321)

Οργάνωση Υπολογιστών (ΙI)

3 η ΑΣΚΗΣΗ. Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

Δημήτρης Ντόντος (AM: 976)

Caches for Parallel Architectures. (Coherence)

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ.

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης

Parallel Architectures

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

Τεχνολογίες Κύριας Μνήμης

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Κεντρική Μονάδα Επεξεργασίας

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Ασκήσεις Caches

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Max Planck Institute for Software Systems (MPI-SWS)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ

Transcript:

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Αρης Ευθυμίου

Λειτουργία μνήμης Η μνήμη είναι ένας πίνακας αποθήκευσης Οταν διαβάζουμε μια θέση, περιμένουμε να πάρουμε την τελευταία τιμή που έχει γραφτεί εκεί Με δεδομένο ότι οι κρυφές μνήμες είναι απαραίτητες για να έχουμε μια αξιοπρεπή ταχυτητα εκτέλεσης, το παραπάνω γίνεται δύσκολο να υλοποιηθεί σε ένα παράλληλο σύστημα Ενα σειριακό σύστημα δεν έχει πρόβλημα γιατί όλες οι προσπελάσεις μνήμης γίνονται στην ίδια ιεραρχία μνήμης Παράλληλα συστήματα 2

Παράδειγμα P1 4 read P2 P3 Cache Cache Cache u : 5 u : 5 3 write u=7 1 read Memory u : 5 2 read Το σύστημα μνήμης δεν έχει συνοχή (coherence)! Παράλληλα συστήματα 3

Πρόβλημα συνοχής Οι κρυφές μνήμες δημιουργούν το πρόβλημα και store buffers, write buffers Μπορούμε να απαγορέψουμε σε μοιραζόμενες μεταβλητές να κρατουνται στις κρυφές μνήμες Πολύ αργό και πολύ δουλειά για το προγραμματιστή Είναι πολύ πιο βολικό να αφεθεί στο υλικό η απαίτηση να κρατάει τις κρυφές μνήμες σε συνοχή Το πρόβλημα εμφανίζεται και σε σειριακούς υπολογιστές όταν και ο επεξεργαστής και περιφερειακά γράφουν στη μνήμη Παράλληλα συστήματα 4

Ορισμός προβλήματος Η ένοια της τελευταίας τιμής που γράφεται στη μνήμη δεν ειναι αρκετά καθαρή Τι γίνεται αν μια τιμή γράφεται ταυτόχρονα από πολλούς πυρήνες ή οι εγγραφές συμβαίνουν τόσο κοντά στο χρόνο που δεν υπάρχει χρόνος να μεταβιβαστεί η πρώτη πριν γίνει η δεύτερη; Δεν μπορούμε να βρούμε την ακριβή χρονολογική σειρά μας ενδιαφέρει η σειρά σύμφωνα με το πρόγραμμα Το πρόβλημα είναι ότι δεν υπάρχει μία (καθ)ολική σειρά εντολών σε ένα παράλληλο πρόγραμμα και αν την επιβάλαμε θα γινόταν σειριακό! Παράλληλα συστήματα 5

Πότε γίνεται μια προσπέλαση; Πότε καταλαβαίνει ένας πυρήνας ότι έγινε μια πράξη μνήμης; Δεν μας ενδιαφέρει τι πραγματικά γίνεται στη μνήμη, αλλά πώς αντιλαμβάνεται ο πυρήνας τις αλλαγές Μια εγγραφή από τον πυρήνα φαίνεται ότι έγινε αν μια επόμενη ανάγνωση από τον ίδιο φέρνει την τιμή που γράφτηκε ή μια επόμενη τιμή Μια ανάγνωση από τον πυρήνα φαίνεται ότι έγινε, όταν εγγραφές που γίνονται αργότερα από τον ίδιο δεν μπορούν να αλλάξουν την τιμή που επιστρέφεται Παράλληλο σύστημα: αλλάζουμε τα «από τον ίδιο» σε «από οποιονδήποτε» Παράλληλα συστήματα 6

Συνοχή 1. Εγγραφές σε κάθε θέση μνήμης πρέπει να γίνονται ορατές με την ίδια σειρά απ όλα τα νήματα ονομάζεται write serialisaron 2. Μια πράξη εγγραφής πρέπει να γίνεται ορατή από όλους τους πυρήνες μπορεί να αργήσει όσο θέλουμε αρκεί να μην επηρεάζει την πρώτη ιδιότητα Αν ένας πυρήνας διαβάσει μια τιμή που έγραψε μια εντολή w1 πρίν τη τιμή που γράφει μια εντολή w2, τότε και οι άλλοι πυρήνες πρέπει να μήν μπορούν να διαβάσουν την τιμή της w2 πρίν τη w1 Παράλληλα συστήματα 7

Υλοποίηση συνοχής από το υλικό Δύο τρόποι: όταν γίνεται μια εγγραφή, είτε Ακύρωση (invalidaron) όλων των αντιγράφων σε κρυφές μνήμες άλλων πυρήνων Ενημέρωση (update) τιμών όλων των αντιγράφων Προβλήματα: write serialisaron πως δύο «ταυτόχρονες» εγγραφές γίνονται σε σειρά Πολλές λεπτομέρειες υλοποίησης περιπλέκουν την υλοποίηση Θα επιστρέψουμε σε αυτό το θέμα σύντομα 4.15 Εισαγωγή στους ΗΥ 2011-2012 8

Συνέπεια μνήμης (consistency) Λύνοντας το θέμα της συνοχής δεν είναι αρκετό Συχνά ένα παράλληλο πρόγραμμα κάνει υποθέσεις για τη σειρά εκτέλεσης πράξεων μνήμης σε διαφορετικές διευθύνσεις Παράδειγμα (αρχικά a=flag=0): Processor 1 a = func(); flag = 1; Processor 2 while (flag==0); print a; Υποθέτουμε ότι αν ο 2 διαβάσει το flag ως 1, θα διαβάσει επίσης την καινούρια τιμή του a Η συνοχή δεν το εξασφαλίζει αυτό! Παράλληλα συστήματα 9

Είναι πράγματι πρόβλημα; Μήπως δε γράψαμε καλά τον κώδικα; έπρεπε να βάλουμε κάποιο σαφή συνχρονισμό μεταξύ παραγωγού καταναλωτή; Processor 1 a = func(); Barrier(); Ακόμα υπάρχουν προβλήματα: Processor 2 Barrier(); print a; Η ρουτίνα Barrier δεν εγγυάται ότι εγγραφές πριν το Barrier θα έχουν φτάσει σε όλους μέχρι να βγούν από αυτό Η ρουτίνα Barrier χρησιμοποιεί εντολές προσπέλασης μνήμης σε κοινές μεταβλητές Παράλληλα συστήματα 10

Συνέπεια μνήμης Δεν αρκεί ότι η μνήμη επιστρέφει την τελευταία τιμή για μία θέση, χρειαζόμαστε κάποιες φορές την ιδιότητα οι εγγραφές και αναγνώσεις σε διαφορετικές θέσεις να γίνονται με τη κατάλληλη σειρά. Το μοντέλο συνέπειας μνήμης θέτει περιορισμούς ως προς τη σειρά με την οποία φαίνονται (στους πυρήνες) να γίνονται οι προσπελάσεις μνήμης Είναι υπερσύνολο της συνοχής μνήμης 4.15 Εισαγωγή στους ΗΥ 2011-2012 11

Ακολουθιακή συνέπεια Κάθε πυρήνας εκτελεί προσπελάσεις σύμφωνα με τη σειρά προγράμματος Κάθε προσπέλαση γίνεται αδιαίρετα (atomically): ολοκληρώνεται πρίν ξεκινήσει η επόμενη 4.15 Εισαγωγή στους ΗΥ 2011-2012 12

Παράδειγμα αρχικά a=b=0 Processor 1 1a: a = 1; 1b: b = 2; Processor 2 2a: print b; 2b: print a; Ποιά είναι τα όλα τα επιτρεπόμενα αποτελέσματα (b,a) υποθέτοντας SC; (0,0), (2,1), (0,1) 4.15 Εισαγωγή στους ΗΥ 2011-2012 13

Ποιές είναι όλες οι δυνατές ακολουθίες εντολών; 1a, 1b, 2a, 2b: (1,2) 2a, 2b, 1a, 1b: (0,0) 1a, 1b, 2b, 2a: (1,2) 2a, 2b, 1b, 1a: (0,0) 1a, 2a, 1b, 2b: (1,0) 2a, 1a, 2b, 1b: (1,0) 1a, 2a, 2b, 1b: (1,0) 2a, 1a, 1b, 2b: (1,0) 1a, 2b, 1b, 2a: (1,2) 2a, 1b, 2b, 1a: (0,0) 1a, 2b, 2a, 1b: (1,0) 2a, 1b, 1a, 2b: (1,0) 1b, 1a, 2a, 2b: (1,2) 2b, 2a, 1a, 1b: (0,0) 1b, 1a, 2b, 2a: (1,2) 2b, 2a, 1b, 1a: (0,0) 1b, 2a, 1a, 2b: (1,2) 2b, 1a, 2a, 1b: (0,0) 1b, 2a, 2b, 1a: (0,2) 2b, 1a, 1b, 2a: (0,2) 1b, 2b, 1a, 2a: (0,2) 2b, 1b, 2a, 1a: (0,2) 1b, 2b, 2a, 1a: (0,2) 2b, 1b, 1a, 2a: (0,2) 4.15 Εισαγωγή στους ΗΥ 2011-2012 14

Παράδειγμα 2 P1 a = 1; P2 while (a==0); b = 1; P3 while (b==0); print a; Αφού ο P2 περιμένει την τιμή του a πριν γράψει το b και ο P3 περιμένει την τιμή του b, είναι λογικό να περιμένουμε ότι ο P3 θα δεί την καινούρια τιμή του a Τι μπορεί να πάει στραβά; Αν ο P2 αλλάξει το b, πριν η αλλαγή του a γίνει γνωστή στον P3, Πώς μπορεί να γίνει κάτι τέτοιο; 4.15 Εισαγωγή στους ΗΥ 2011-2012 15

Αδιαίρετες εγγραφές write atomicity Η σειρά με την οποία μια εγγραφή γίνεται (σε σχέση με την υποθετική σειρά όλων των προσπελάσεων όλων των νημάτων) πρέπει να φαίνεται η ίδια σε όλους τους πυρήνες Αν κάποιος πυρήνας πάρει μια τιμή που γράφτηκε, τίποτα απ ότι κάνει μετά δεν πρέπει να εμφανιστεί πριν όλοι οι άλλοι πυρήνες δουν την εγγραφή 4.15 Εισαγωγή στους ΗΥ 2011-2012 16

Ικανές συνθήκες Ικανές (όχι αναγκαίες) συνθήκες για SC: 1. κάθε νήμα ξεκινάει προσπελάσεις μνήμης με τη σειρά του προγράμματος 2. όταν ένα νήμα ξεκινάει μια εγγραφή, το νήμα πρέπει να περιμένει να ολοκληρωθεί η εγγραφή πριν ξεκινήσει την επόμενη προσπέλαση 3. όταν ένα νήμα ξεκινήσει μια ανάγνωση, το νήμα πρέπει να περιμένει να ολοκληρωθεί η ανάγνωση και η εγγραφή την τιμή της οποίας η ανάγνωση φέρνει, πριν ξεκινήσει την επόμενη προσπέλαση 4.15 Εισαγωγή στους ΗΥ 2011-2012 17

Συνέπειες για το υλικό Ενα παράλληλο σύστημα που εγγυάται την ακολουθιακή συνέπεια δεν μπορεί να χρησιμοποιεί μια σειρά από αρχιτεκτονικές τεχνικές αύξησης απόδοσης: Εκτέλεση εκτός σειράς store buffers non- blocking caches και βελτιστοποιήσεις του μεταφραστή Οι πυρήνες των παράλληλων μηχανών θα είναι πολύ αργοί! Μεγάλο μέρος του κέρδους από τον παραλληλισμό, χάνεται 4.15 Εισαγωγή στους ΗΥ 2011-2012 18

Χαλαρή συνέπεια μνήμης Γι αυτό τα περισσότερα παράλληλα συστήματα δεν υποστηρίζουν ακολουθιακή συνέπεια αλλά πιο χαλαρά μοντέλα συνέπειας μνήμης (relaxed mem consistency) επιτρέπουν αλλαγές σειράς ή επικαλυπτόμενη εκτέλεση εντολών π.χ. total Store order (TSO) - μια read μπορεί να εκτελεστεί πριν από μια προηγούμενη, σύμφωνα με το πρόγραμμα, write Για να μπορεί ο προγραμματιστής να εξασφαλίσει τη σειρά εκτέλεσης υπάρχουν εντολές «φράκτες μνήμης» (fence): οι εντολές πριν το φράκτη πρέπει να ολοκληρωθούν πριν ξεκινήσουν οι εντολές μετά 4.15 Εισαγωγή στους ΗΥ 2011-2012 19

Συνέπειες για προγραμματισμό Πολύ λίγοι προγραμματιστές στηρίζονται σε SC οι περισσότεροι χρησιμοποιούν υψηλού επιπέδου συγχρονισμό Ενα καλά συγχρονισμένο πρόγραμμα προστατεύει τις μοιραζόμενες μεταβλητές του ώστε να μην υπάρχει ανταγωνισμός όταν ανανεώνονται οι τιμές τους υπάρχει όμως ανταγωνισμός για τις μεταβλητές συγχρονισμού Με αυτές τις συνθήκες, η αλλαγή της σειράς εκτέλεσης εντολών δεν επηρεάζει το παράλληλο πρόγραμμα, αρκεί να εξασφαλίσουμε ότι κατά την είσοδο ή έξοδο από ένα κλείδωμα, οι τιμές έχουν ανανεωθεί παντού στη μνήμη 4.15 Εισαγωγή στους ΗΥ 2011-2012 20

Παράδειγμα... lock(); read and modify shared data unlock();... όλες οι επόμενες αναγνώσεις διαβάζουν τις τελευταίες τιμές όλες οι εγγραφές έχουν ολοκληρωθεί 4.15 Εισαγωγή στους ΗΥ 2011-2012 21

Ενα σειριακό σύστημα δεν χρειάζεται να γνωρίζει πότε ολοκληρώθηκε μια εγγραφή Ενα παράλληλο σύστημα, ακόμα και με ένα χαλαρό μοντέλο συνοχής, πρέπει να παίρνει αυτή τη πληροφορία επιβεβαίωση (acknowledgement) εγγραφής όταν εκτελείται μια εγγραφή δεν γνωρίζουμε αν ακολουθεί μια fence οπότε η επιβεβαίωση είναι απαραίτητη πάντα 4.15 Εισαγωγή στους ΗΥ 2011-2012 22

Κατασκοπευτικά(snoopy) πρωτόκολλα συνοχής P1 P2 P3 Cache Cache Cache Memory Τα πρώτα παράλληλα συστήματα χρησιμοποιούσαν για δίκτυο ένα κοινό δίαυλο (bus) Τα μηνύματα είναι ορατά σε όλους τους επεξεργαστές που συνδέονται στο δίαυλο Αυτή η ιδιότητα μπορεί να εκμεταλευτεί για πρωτόκολλα συνοχής κάθε απαραίτητη ενέργεια πρέπει να φαίνεται στο δίαυλο κάθε cache κατασκοπεύει το δίαυλο και κάνει τις απαραίτητες ενέργειες για cache blocks που έχει 4.15 Εισαγωγή στους ΗΥ 2011-2012 23

Snoopy πρωτόκολλα Κάθε cache πλεον εκτός από τις εντολές που δέχεται από τον πυρήνα (ανάγνωση, εγγραφή), δέχεται και «εντολές» από το δίαυλο: κάποιος διαβάζει μια γραμμή κάποιος (θέλει να) γράφει μια γραμμή Ο ελεγκτής χρειάζεται να ψάχνει στην cache και για τους δύο αιτούμενους χρειάζεται διπλή πόρτα πρόσβασης στα tags όχι για τα δεδομένα, λόγω μεγάλου κόστους μερικές φορές κάποιος πρέπει να περιμένει... 4.15 Εισαγωγή στους ΗΥ 2011-2012 24

Πρωτόκολλο MSI - μηνύματα Θεωρούμε 1 επίπεδο κρυφής μνήμης (ανά πυρήνα) write back, write- allocate (write- through είναι ευκολότερο) Ανάγνωση, cache hit: η τιμή επιστρέφεται στον πυρήνα Εγγραφή, cache hit: αν η γραμμή είναι dirty, το αντίγραφό μας είναι αποκλειστικό, μπορούμε να το αλλάξουμε χωρίς να ειδοποιήσουμε κανέναν Αλλιώς, παρόλο που έχουμε τη γραμμή, πρέπει να ειδοποιήσουμε τις υπόλοιπες caches ότι σκοπεύουμε να το αλλάξουμε write miss 4.15 Εισαγωγή στους ΗΥ 2011-2012 25

Πρωτόκολλο MSI μηνύματα Ανάγνωση, cache miss: Διαδικασία ανάγνωσης στο δίαυλο Αν κάποια άλλη cache έχει τη γραμμή (αλλαγμένη dirty), πρέπει να απαντήσει δίνοντας τη γραμμή. Πρέπει επίσης να σημειώσει ότι η γραμμή δεν είναι πια αποκλειστικά δική του... Αν δεν απαντήσει καποια cache, η κύρια μνήμη απαντάει με τα δεδομένα Εγγραφή, cache miss: Διαδικασία readexclusive στο δίαυλο Ολες οι cache που έχουν αντίγραφο, πρέπει να το ακυρώσουν (Invalidate) αν μια cache έχει τη γραμμή αλλαγμένη, απαντάει με τα δεδομένα (και ακυρώνει το αντίγραφό της), αλλιώς απαντάει η κύρια μνήμη 4.15 Εισαγωγή στους ΗΥ 2011-2012 26

Αντικατάσταση γραμμών Οταν η επιλεγμένη γραμμή είναι «καθαρή», δεν χρειάζεται καμιά ενέργεια silent drop Αν έχει τροποποιημένα δεδομένα (dirty), διαδικασία επανεγραφής (write back) αφορά μόνο τη κύρια μνήμη αφού είναι dirty, καμιά άλλη cache δεν έχει αντίγραφο 4.15 Εισαγωγή στους ΗΥ 2011-2012 27

Καταστάσεις γραμμής Ακυρη (Invalid) ή δεν υπάρχει Είτε η γραμμή δεν υπάρχει στη cache (δηλαδή miss) ή μπορεί να υπάρχει αλλά έχει ακυρωθεί (γιατί κάποιος άλλος ζήτησε να την αλλάξει) Μοιραζόμενη (Shared) Η γραμμή δεν έχει αλλαχθεί, επομένος η κύρια μνήμη έχει ενήμερο αντίγραφο Μπορεί να υπάρχουν άλλα αντίγραφα σε άλλες caches Μπορεί και όχι γιατί οι αντικαταστάσεις γίνονται «αθόρυβα» Αλλαγμένη (Modified) Εχουμε το μοναδικό ενήμερο αντίγραφο της γραμμής 4.15 Εισαγωγή στους ΗΥ 2011-2012 28

Διάγραμμα καταστάσεων Εντολή/πράξη PrRd, PrWr ανάγνωση, εγγραφή από τον πυρήνα BusRd, BusRdX διαδικασία ανάγνωσης, αποκλειστικής ανάγνωσης στο δίαυλο Flush δίνω την τιμή της γραμμής στο δίαυλο και ανανεώνεται η κύρια μνήμη Παρόμοιο με BusRdX, χωρίς μεταφορά δεδομένων 4.15 Εισαγωγή στους ΗΥ 2011-2012 29

Πρωτόκολλο MESI Αν διαβάσουμε μια καινούρια γραμμή και αμέσως μετά θέλουμε να την αλλάξουμε, χωρίς να (θέλει να) παραμβληθεί άλλος επεξεργαστής Εχουμε 2 misses μία για να φέρουμε τη γραμμή για πρώτη φορά (κατάσταση S) και άλλη μία μόνο για να αλλάξουμε τη κατάσταση σε M Αυτό γίνεται πολύ συχνά Λύση: κρατάμε πληροφορία αν έχουμε (διαβάσει) το μοναδικό αντίγραφο της γραμμής μέχρι τώρα αποκλειστική (exclusive) κατάσταση 4.15 Εισαγωγή στους ΗΥ 2011-2012 30

Διάγραμμα καταστάσεων Σήμα S στον δίαυλο: Αν μια cache έχει αντίγραφο της γραμμής θέτει το σήμα Αν κανείς δεν το θέσει η γραμμή είναι αποκλειστική Flush δίνω την τιμή της γραμμής στο δίαυλο και ανανεώνεται η κύρια μνήμη 4.15 Εισαγωγή στους ΗΥ 2011-2012 31

Πρωτόκολλο MOESI Αν μετά την αλλαγή μιας γραμμής, η γραμμή χρησιμοποιηθεί για ανάγνωση, πρέπει να γραφτεί στη κύρια μνήμη flush έξω από κατάσταση M H κύρια μνήμη είναι γενικά αργή, οπότε συμφέρει να καθυστερήσουμε την εγγραφή όσο μπορούμε Χρειαζόμαστε μια επιπλέον κατάσταση όπου η γραμμή είναι αλλαγμένη αλλά υπάρχουν αντίγραφα σε άλλες caches: O - owned 4.15 Εισαγωγή στους ΗΥ 2011-2012 32

Διάγραμμα καταστάσεων AMD64 Architecture programmer s manual 4.15 Εισαγωγή στους ΗΥ 2011-2012 33

Κατάταξη MSI MESI MOESI 4.15 Εισαγωγή στους ΗΥ 2011-2012 34

Πρωτόκολλα ενημέρωσης Οταν γίνεται μια αλλαγή, τα πρωτόκολλα που εξετάσαμε ακυρώνουν τα υπόλοιπα αντίγραφα (της γραμής cache) Αντί για ακύρωση, θα μπορούσαμε να ενημερώσουμε τις τιμές (update protocols) Ανάλογα με τον τρόπο που μοιράζονται τα δεδομένα τα νήματα μιας εφαρμογής, συμφέρει το ένα ή το άλλο είδος πρωτοκόλλου update καλύτερα σε producer- consumer παραλληλισμό αλλά προκαλούν πολύ περισσότερα μηνύματα στο δίκτυο 4.15 Εισαγωγή στους ΗΥ 2011-2012 35

Ενδιάμεσες καταστάσεις Η μέχρι τώρα παρουσίαση ήταν ωραιοποιημένη (!) Οι αλλαγές κατάστασης δεν είναι αδιαίρετες (atomic) Παράδειγμα (MESI): Δύο πυρήνες (A, B) έχουν τοπικό αντίγραφο γραμμής X και ζητούν (ταυτόχρονα) να αλλάξουν τη γραμμή: busupgrade Τα αιτήματα φτάνουν στους ελεγκτές cache και έστω ότι ο Β καταφέρνει και «παίρνει» το δίαυλο πρώτος H cache του Α, θα δει το παραπάνω και θα ακυρώσει το τοπικό αντίγραφο της γραμμής Χ. Αλλά ο ελεγκτής έχει ήδη ζητήσει το δίαυλο με σκοπό να κάνει BusUpgrade. Τώρα πρέπει να ζητήσει αποκλειστική ανάγνωση... Πρέπει να ελέγχεται κάθε αίτημα που είναι σε εκρεμότητα για τυχόν αλλαγές 4.15 Εισαγωγή στους ΗΥ 2011-2012 36