Parallel Architectures

Σχετικά έγγραφα
Caches for Parallel Architectures

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

Caches for Parallel Architectures. (Coherence)

Parallel Architectures

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

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

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

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

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

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

Parallel Architectures

Parallel Architectures

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

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

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

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

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

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

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

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

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

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

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

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

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

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ,

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

Ασκήσεις Caches

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

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

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

Είδη των Cache Misses: 3C s

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

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

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

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

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

Ασκήσεις Caches. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης. Cache Optimizations

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

Cach O p i timisati tions

Ασκήσεις Caches

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

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

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

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

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

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

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

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

Διάλεξη 15 Απόδοση της Ιεραρχίας Μνήμης Βελτιστοποίηση της απόδοσης

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

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Θέµατα Φεβρουαρίου

(advanced_ca, ακ. έτος Cache Optimisations

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Κρυφές μνήμες

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

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

Προχωρηµένα Θέµατα Αρχιτεκτονικής

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

Processor-Memory (DRAM) ιαφορά επίδοσης

Processor-Memory (DRAM) Διαφορά επίδοσης

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

Εικονική Μνήμη (virtual memory)

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

Οργάνωση Ιεραρχίας Μνήμης - Caches

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

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

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

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

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

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

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

Max Planck Institute for Software Systems (MPI-SWS)

Processor-Memory (DRAM) ιαφορά επίδοσης

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;

EM 361: Παράλληλοι Υπολογισμοί

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

Θέματα Μεταγλωττιστών

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

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

Τελική Εξέταση, Απαντήσεις/Λύσεις

Πανεπιστήμιο Πατρών. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Διαφορές single-processor αρχιτεκτονικών και SoCs

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

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

Έλεγχος Ταυτοχρονισμού

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

Παραλληλισμός σε επίπεδο εντολών

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

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

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης.

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

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

Transcript:

Parallel Architectures Coherence & Consistency cslab@ntua 2010 2011

Παράλληλες Αρχιτεκτονικές (1) Οι πολυεπεξεργαστές γνώρισαν ιδιαίτερη ανάπτυξη από τη δεκαετία των 90s : Servers Supercomputers για την επίτευξη μεγαλύτερης επίδοσης σε σύγκριση ένα επεξεργαστή Στις μέρες μας : Περιορισμένα περιθώρια περαιτέρω εκμετάλλευσης ILP Περιορισμοί ως προς την κατανάλωση ενέργειας (power consumption) Μείωση κόστους σχεδιασμού μέσω επαναχρησιμοποίησης (replication) σχεδίων Αποδοτική χρησιμοποίηση πολυεπεξεργαστών (ιδιαίτερα σε servers) όπου υπάρχει thread level parallelism Αύξηση η ενδιαφέροντος για σχεδίαση τη servers και την απόδοση τους 2 cslab@ntua 2010 2011

Παράλληλες Αρχιτεκτονικές (2) Όλα αυτά οδηγούν σε μια νέα εποχή όπου τον κύριο ρόλο διαδραματίζουν οι πολυεπεξεργαστές Desktop μηχανήματα για κάθε χρήστη με 2, 4, 6, 8, πυρήνες We are dedicating all of our future product development to multicore designs. We believe this is a key inflection point for the industry Intel President Paul Otellini, 2005 3 cslab@ntua 2010 2011

Παράλληλες Αρχιτεκτονικές (3) Single Instruction stream, Single Data stream (SISD) Single Instruction stream, Multiple Data streams (SIMD) Πολλαπλοί επεξεργαστές, ίδιες εντολές, διαφορετικά δεδομένα (data level parallelism). Multiple Instruction streams, Single Data stream (MISD) Μέχρι σήμερα δεν έχει εμφανιστεί στην αγορά κάποιο τέτοιο σύστημα. Multiple Instruction streams, Multiple Data streams (MIMD) O κάθε επεξεργαστής εκτελεί τις δικές του εντολές και επεξεργάζεται τα δικά του δεδομένα. Πολλαπλά παράλληλα νήματα (thread level parallelism). Θα ασχοληθούμε κυρίως με MIMD συστήματα. Thread level parallelism Ευελιξία: λξί Λειτουργία είτε ως single user multiprocessors εστιάζοντας στην απόδοση μιας εφαρμογής, είτε ως multiprogrammed multiprocessors εκτελώντας πολλαπλές λειτουργίες ταυτόχρονα. Πλεονεκτήματα κόστους απόδοσης χρησιμοποιώντας off the self επεξεργαστές. 4 cslab@ntua 2010 2011

MIMD Συστήματα (1) Παραδείγματα MIMD συστημάτων Clusters (commodity/custom clusters) Multicore systems Κάθε επεξεργαστής εκτελεί διαφορετικό process (διεργασία). process : A segment of code that can be executed independently. Σε ένα πολυπρογραμματιστικό περιβάλλον, οι επεξεργαστές εκτελούν διαφορετικά tasks κι επομένως κάθε process είναι ανεξάρτητη από τις υπόλοιπες. Όταν πολλαπλά processes μοιράζονται κώδικα και χώρο διευθύνσεων (address space) τότε ονομάζονται threads (νήματα). Σήμερα ο όρος thread χρησιμοποιείται για να περιγράψει γενικά πολλαπλές εκτελέσεις, οι οποίες μπορεί να πραγματοποιηθούν σε διαφορετικούς επεξεργαστές ανεξάρτητα από το αν μοιράζονται ή όχι το address space. Οι multithreaded (πολυνηματικές) αρχιτεκτονικές επιτρέπουν την ταυτόχρονη εκτέλεση πολλαπλών processes με διαφορετικό address space, καθώς και πολλαπλών threads που μοιράζονται το ίδιο address space. 5 cslab@ntua 2010 2011

MIMD Συστήματα (2) Για την αποδοτική χρήση ενός MIMD συστήματος με n επεξεργαστές, απαιτούνται τουλάχιστον n threads/processes. Δημιουργία από τον προγραμματιστή ρα α ή τον compiler Grain Size :To μέγεθος (amount of computation) του κάθε thread Fine grain : Μερικές δεκάδες εντολές (π.χ. κάποιες επαναλήψεις ενός loop, instruction level parallelism) Coarse grain : Εκατομμύρια εντολές (thread level parallelism) Τα MIMD συστήματα χωρίζονται σε 2 κατηγορίες με βάση την οργάνωση της ιεραρχίας της μνήμης τους. Centralized shared memory architectures (Αρχιτεκτονικές συγκεντρωμένης κοινής μνήμης) Distributed memory architectures (Αρχιτεκτονικές φυσικά κατανεμημένης μνήμης) 6 cslab@ntua 2010 2011

Centralized Shared Memory Architectures Μικρός αριθμός επεξεργαστών (λιγότεροι από 100 το 2006). Όλοι οι επεξεργαστές μοιράζονται μια κεντρική μνήμη Πολλαπλά λάbanks point to point connections, switches Περιορισμένο scalability Symmetric multiprocessors (SMPs) Η μνήμη έχει συμμετρική σχέση με τους επεξεργαστές Ομοιόμορφος χρόνος προσπέλασης (Uniform Memory Access UMA) 7 cslab@ntua 2010 2011

Distributed Memory Architectures (1) Η μνήμη μοιράζεται τοπικά σε κάθε επεξεργαστή. Πλεονεκτήματα Μεγαλύτερο εύρος ζώνης μνήμης αν η πλειοψηφία των προσπελάσεων γίνονται τοπικά σε κάθε κόμβο. Μείωση χρόνου πρόσβασης σε δεδομένα αποθηκευμένα στην μνήμη του κάθε κόμβου. Μειονεκτήματα Πολύπλοκη ανταλλαγή δεδομένων μεταξύ επεξεργαστών. Πιο δύσκολη παραγωγή software για την εκμετάλλευση του αυξημένου εύρους ζώνης της μνήμης. Δύο μοντέλα επικοινωνίας για ανταλλαγή δεδομένων Shared Address space Message Passing 8 cslab@ntua 2010 2011

Shared address space Distributed Memory Architectures (2) Οι φυσικά κατανεμημένες μνήμες χρησιμοποιούνται σαν ένας μοναδικός, διαμοιραζόμενος χώρος δεδομένων. Η ίδια φυσική διεύθυνση σε 2 επεξεργαστές αναφέρεται στην ίδια τοποθεσία στο ίδιο κομμάτι της φυσικής μνήμης. Επικοινωνία μέσω του κοινού χώρου (implicitly, με χρήση απλών Loads και Stores σε shared variables). Οι πολυεπεξεργαστές αυτοί ονομάζονται Distributed Shared Memory (DSM). Ο χρόνος πρόσβασης εξαρτάται από την τοποθεσία στην οποία βρίσκονται τα δεδομένα NUMA (Non Uniform Memory Access). 9 cslab@ntua 2010 2011

Distributed Memory Architectures (3) Private address space Ο κάθε επεξεργαστής έχει το δικό του address space, το οποίο δεν μπορεί να προσπελαστεί από κάποιον άλλο. Ηίδ ίδια φυσική ήδιεύθυνση σε 2 επεξεργαστές αναφέρεται σε διαφορετικές τοποθεσίες σε διαφορετικά κομμάτια μνημών. Επικοινωνία (explicitly) μέσω μηνυμάτων Message Passing Multiprocessors. Κάθε συνδυασμός send receive πραγματοποιεί ένα συγχρονισμό ζεύγους (pairwise synchronization) καθώς και μια μεταφορά δεδομένων από μνήμη σε μνήμη (memory to memory copy) π.χ.clustersl t 10 cslab@ntua 2010 2011

Shared Memory Architectures (1) 11 cslab@ntua 2010 2011

Shared Memory Architectures (2) Βασική ιδιότητα των συστημάτων μνήμης Κάθε ανάγνωση μιας τοποθεσίας, θα πρέπει να επιστρέφει την τελευταία τιμή που γράφτηκε σε αυτή. Βασική ιδιότητα τόσο για τα σειριακά προγράμματα, όσο και για τα παράλληλα. Η ιδιότητα αυτή διατηρείται όταν πολλαπλά threads εκτελούνται σε ένα επεξεργαστή, καθώς βλέπουν την ίδια ιεραρχίαμνήμης. Στα πολυεπεξεργαστικά συστήματα, όμως, κάθε επεξεργαστής έχει τη δική του μονάδα κρυφής μνήμης (cache). Πιθανά προβλήματα : Αντίγραφα μίας μεταβλητής είναι πιθανόν να υπάρχουν σε παραπάνω από μία caches. Αν μια εγγραφή δε είναι ορατή από όλους τους επεξεργαστές, τότε υπάρχει περίπτωση κάποιοι να προσπελαύνουν την παλιά τιμή της μεταβλητής που είναι αποθηκευμένη στην cache τους. Πρόβλημα : Συνάφειας Κρυφής Μνήμης (Cache Coherence) 12 cslab@ntua 2010 2011

Παράδειγμα Προβλήματος Cache Coherence Write through caches Λάθος στη λειτουργία 4 Write back caches Λάθος και στη λειτουργία 5. H τιμή που θα γραφτεί στη κύρια μνήμη εξαρτάται από τη σειρά με την οποία οι caches διώχνουν τα dirty blocks. 13 cslab@ntua 2010 2011

Διατήρηση της βασικής ιδιότητας Cache Coherence (1) Κάθε ανάγνωση μιας τοποθεσίας, θα πρέπει να επιστρέφει την ΤΕΛΕΥΤΑΙΑ τιμή που γράφτηκε σε αυτή. Πώς ορίζεται το ΤΕΛΕΥΤΑΙΑ ; Σειριακά προγράμματα Ορίζεται σύμφωνα με τη σειρά που επιβάλλεται από τον κώδικα. Παράλληλα προγράμματα Δύο threads μπορεί να γράψουν στην ίδια διεύθυνση την ίδια χρονική στιγμή. Ένα thread μπορεί να διαβάσει μια μεταβλητή ακριβώς μετά την εγγραφή της από κάποιο άλλο, αλλά λόγω της ταχύτητας μετάδοσης η εγγραφή αυτή δεν έχει γίνει ακόμα ορατή. Η σειρά που επιβάλλει ο κώδικας ορίζεται εντός τουthread. d Απαιτείται όμως και ο ορισμός μιας σειράς που να αφορά όλα τα threads (global ordering). 14 cslab@ntua 2010 2011

Cache Coherence (2) Έστω ότι υπάρχει μια κεντρική μνήμη και καμία cache. Κάθε λειτουργία σε μια θέση μνήμης προσπελάζει την ίδια φυσική θέση. Η μνήμη επιβάλλει μια καθολική σειρά στις λειτουργίες όλων των threads σε αυτή τη θέση. Οι λειτουργίες κάθε thread διατηρούν τη σειρά του προγράμματος του. Κάθε δά διάταξη που διατηρεί τη σειρά των λειτουργιών τωνεπιμέρους προγραμμάτων είναι αποδεκτή / έγκυρη. Ως τελευταία ορίζεται η πιο πρόσφατη λειτουργία σε μια υποθετική ακολουθία που διατηρεί τις παραπάνω ιδιότητες. Σε ένα πραγματικό σύστημα δεν μπορεί να κατασκευαστεί αυτή η καθολική σειρά. Χρήση caches. Αποφυγή serialization. Το σύστημα πρέπει να είναι κατασκευασμένο ώστε τα προγράμματα να συμπεριφέρονται σαν να υπήρχε αυτή η καθολική σειρά. 15 cslab@ntua 2010 2011

Cache Coherence (3) Ένα σύστημα είναι coherent (συναφές) αν για κάθε εκτέλεση τα αποτελέσματα (οι τιμές που επιστρέφονται από τις λειτουργίες ανάγνωσης) είναι τέτοια, ώστε σε κάθε θέση να μπορούμε να κατασκευάσουμε μια υποθετική ακολουθιακή σειρά όλων των λειτουργιών στη θέση αυτή, που να είναι συνεπής με τα αποτελέσματα της εκτέλεσης και στην οποία: Οι λειτουργίες κάθε thread πραγματοποιούνται με την σειρά κατά την οποία κλήθηκαν από αυτό το thread. Η τιμή που επιστρέφεται από μια λειτουργία ανάγνωσης είναι η τιμή της τελευταίας εγγραφής στη συγκεκριμένη θέση σύμφωνα με την υποθετική ακολουθιακή σειρά. 3 συνθήκες για να είναι ένα σύστημα coherent. 16 cslab@ntua 2010 2011

Cache Coherence (4) 1. A read by processor P to a location X that follows a write by P to X, with no writes of X by another processor occurring between the write and the read by P, always returns the value written by P. Διατήρηση της σειράς του προγράμματος. Ισχύει και για uniprocessors. 2. A read by a processor to location X that follows a write by another processor to X returns the written value if the read and write are sufficiently separated in time and no other writes to X occur between the two accesses. write propagation Μια λειτουργία ανάγνωσης δεν μπορεί να επιστρέφει παλιότερες λό τιμές. έ 3. Writes to the same location are serialized; that is, two writes to the same location by any two processors are seen in the same order by all processors. (e.g. if values 1 and then 2 are written toalocation, ti processors can never the value of the location as 2 and then later read it as 1) write serialization. Χρειαζόμαστε read serialization; 17 cslab@ntua 2010 2011

Bus Snooping Cache Coherence (1) Χρήση διαδρόμου Προσφέρει μια απλή και κομψή υλοποίηση για cache coherence. Προβλήματα scalability. Όλες οι συσκευές που είναι συνδεδεμένες πάνω στο διάδρομο μπορούν να παρακολουθούν όλαταbusb transactions. ti Τρεις ςφάσεις σε κάθε transaction Διαιτησία : Ο bus arbiter αποφασίζει ποια συσκευή έχει το δικαίωμα να χρησιμοποιήσει το bus Αποστολή εντολής/διεύθυνσης : Η επιλεγμένη συσκευή μεταδίδει το είδος της εντολής (read / write) καθώς και τη διεύθυνση της αντίστοιχης θέσης. Όλοι παρακολουθούν και αποφασίζουν αν τους ενδιαφέρει ήόχι. Μεταφορά δεδομένων 18 cslab@ntua 2010 2011

Bus Snooping Cache Coherence (2) Εκμετάλλευση του cache block state tt Κάθε cache μαζί με τα tag και data αποθηκεύει και την κατάσταση στην οποία βρίσκεται το block (π.χ. invalid, valid, dirty). Ουσιαστικά κάθε block είναι μια μηχανή πεπερασμένων καταστάσεων (FSM) Κάθε πρόσβαση σε ένα block ή σε κάποια διεύθυνση που αντιστοιχεί στο ίδιο cache line με αυτό το block, προκαλεί μια μεταβολή του state ή αλλιώς μια αλλαγή κατάστασης στο FSM. Σε uniprocessor συστήματα write through, write no allocate caches : 2 states (valid, invalid) write back caches : 3 states (valid, invalid, dirty/modified) Σε multiprocessor συστήματα το state ενός block είναι ένας πίνακας μήκους p, όπου p οαριθμόςτωνcaches. To ίδιο FSM καθορίζει τις αλλαγές καταστάσεων για όλα τα blocks σε όλες τις caches. To state ενός block μπορεί να διαφέρει από cache σε cache. 19 cslab@ntua 2010 2011

Bus Snooping Cache Coherence (3) Υλοποίηση Πρωτοκόλλου Ο ελεγκτής της cache δέχεται είσοδο από 2 μεριές Αιτήσεις πρόσβασης στη μνήμη από τον επεξεργαστή. Ο κατάσκοπος (bus snooper) ενημερώνει για bus transactions που πραγματοποιούν οι υπόλοιπες caches. Σε κάθε περίπτωση ανταποκρίνεται Ενημερώνει την κατάσταση του block με βάση το FSM. Αποστολή δεδομένων. Παραγωγή νέων bus transactions. ti Κάθε πρωτόκολλο αποτελείται από τα παρακάτω δομικά στοιχεία Το σύνολο των επιτρεπτών states για κάθε block στις caches. To state transition diagram που με είσοδο το state του block καιτηαίτησητου επεξεργαστή ή το παρατηρούμενο bus transaction υποδεικνύει ως έξοδο το επόμενο επιτρεπτό state για το block αυτό. Τις ενέργειες που επιβάλλεται να πραγματοποιηθούν κατά την αλλαγή κατάστασης του block. 20 cslab@ntua 2010 2011

Simple Invalidation based protocol (1) write through, write no allocate caches 2 states για κάθε block Valid Invalid Σε περίπτωση εγγραφής ενός block Ενημερώνεται η κύρια μνήμη μέσω ενός bus transaction. Κάθε bus snooper ενημερώνει τον cache controller του, ο οποίος ακυρώνει το τοπικό αντίγραφο αν υπάρχει. Επιτρέπονται πολλαπλές ταυτόχρονες αναγνώσεις (multiple readers). Μια εγγραφή όμως τους ακυρώνει. Είναι coherent ; 21 cslab@ntua 2010 2011

Simple Invalidation based protocol (2) Μπορούμε να κατασκευάσουμε μια καθολική σειρά που να ικανοποιεί τη σειρά του προγράμματος και τη σειριοποίηση των εγγραφών; Υποθέτουμεatomic bus transactions και memory operations. Ένα transaction κάθε φορά στο bus. Κάθε επεξεργαστής περιμένει να ολοκληρωθεί μια πρόσβαση του στη μνήμη πριν αιτηθεί καινούρια. Οι εγγραφές (και οι ακυρώσεις) ολοκληρώνονται κατά τη διάρκεια του bus transactions. Όλες οι εγγραφές εμφανίζονται στο bus (write through h protocol). Οι εγγραφές σε μια θέση σειριοποιούνται σύμφωνα με τη σειρά με την οποία εμφανίζονται στο bus. (bus order) Οιακυρώσεις πραγματοποιούνται επίσης σύμφωνα με το bus order. Πως παρεμβάλλουμε τις αναγνώσεις στη σειρά αυτή; Οι αναγνώσεις δεν είναι υποχρεωτικό να προκαλέσουν bus transaction και μπορούν ναεκτελούνται ανεξάρτητα και ταυτόχρονα στις caches. 22 cslab@ntua 2010 2011

Simple Invalidation based protocol (3) Σειριοποίηση αναγνώσεων Read hit ή read miss? Read Miss Ικανοποιείται μέσω bus transaction. Επομένως σειριοποιείται μαζί με τις εγγραφές. Θα δει την τιμή της τελευταίας εγγραφής σύμφωνα με το bus order. Read Hit Ικανοποιείται από την τιμή που βρίσκεται μέσα στην cache. Βλέπει την τιμή της πιο πρόσφατης εγγραφής από τον ίδιο επεξεργαστή ή της πιο πρόσφατης ανάγνωσης (read miss). Και τα 2(writeκαι read miss) ικανοποιούνται μέσω bus transactions. Επομένως και τα read hits βλέπουν τις τιμές σύμφωνα με το bus order. 23 cslab@ntua 2010 2011

Καθορισμός Σειράς (1) Μπορούμε να κατασκευάσουμε μια υποθετική global order χρησιμοποιώντας τις partial orders όπως αυτές ορίζονται από το πρωτόκολλο. Μια λειτουργία μνήμης Μ 2 ακολουθεί μια λειτουργία Μ 1 αν οι λειτουργίες καλούνται από το ίδιο thread και η Μ 2 έπεται της Μ 1 σύμφωνα με τη σειρά του προγράμματος. Μια ανάγνωση έπεται μιας εγγραφής W αν η ανάγνωση δημιουργεί bus transaction που έπεται του bus transaction της W. Μια εγγραφή έπεται μιας λειτουργίας μνήμης M αν η Μ δημιουργεί bus transactionti και το transactionti της εγγραφής ακολουθεί αυτό της M. Μια εγγραφή έπεται μιας ανάγνωσης αν η ανάγνωση δε δημιουργεί bus transaction (read hit) και δεν υπάρχει μεταξύ τους άλλο bus transaction. 24 cslab@ntua 2010 2011

Καθορισμός Σειράς (2) Οι εγγραφές καθορίζουν μια μερική σειριοποίηση. Δεν υπάρχει κάποιος περιορισμός για τα read bus transactions από διαφορετικά threads μεταξύ 2 εγγραφών. Κάθε διάταξη των αναγνώσεων μεταξύ 2 εγγραφών είναι ικανοποιητική, αρκεί να μην παραβιάζεται η σειρά του προγράμματος. Κάθε σειρά που διατηρεί αυτή τη μερική σειριοποίηση είναι coherent. 25 cslab@ntua 2010 2011

Memory Consistency (1) Ησυνάφειαμνήμης(coherence) διασφαλίζει ότι η τιμή της τελευταίας εγγραφής σε μια τοποθεσία θα γνωστοποιηθεί σε όλους τους τυχόν αα αναγνώστες. Πότε όμως ςγίνεται ορατή αυτή η εγγραφή; Σε ένα παράλληλο πρόγραμμα είναι πιθανό να θέλουμε να διασφαλίσουμε ότι μια ανάγνωση επιστρέφει την τιμή κάποιας συγκεκριμένης εγγραφής. Θέλουμε να διασφαλίσουμε μια σειρά μεταξύ ενός write και ενός read. Χρησιμοποιούμε κάποια μορφή συγχρονισμού. 26 cslab@ntua 2010 2011

Memory Consistency (2) Ο προγραμματιστής θέλει ο Ρ 2 να τυπώσει Α =1. Η συνάφεια διασφαλίζει ότι η καινούρια τιμή του Α κάποια στιγμή θα γίνει ορατή από τον Ρ 2. Όχι όμως απαραίτητα πριν τη νέα τιμή του flag! Λύση με barrier 27 cslab@ntua 2010 2011

Memory Consistency (3) Λύση με barrier Υποθέτουμε ότι τα threads περιμένουν όχι απλά να φτάσουν όλα στο barrier αλλά και όλες οι εγγραφές πριντο barrier να γίνουν ορατές από όλους. Το barrier υλοποιείται με reads και writes σε shared variables. Επομένως η συνάφεια και πάλι δεν καθορίζει τίποτα για τη σχετική σειρά μεταξύ αυτών των προσβάσεων. 28 cslab@ntua 2010 2011

Memory Consistency (4) Μερικές φορές πρέπει να διασφαλίσουμε τη σειρά προσπελάσεων σε διαφορετικές θέσεις μνήμης. Η συνάφεια δεν αναφέρεται στη σειρά με την οποία γίνονται ορατές εγγραφές σε διαφορετικές θέσεις μνήμης. Τί θα τυπώσει τελικά αυτός ο κώδικας; Χρειαζόμαστε ένα μοντέλο σειριοποίησης για λειτουργίες μνήμης : Σε ίδιες ή διαφορετικές θέσεις μνήμης Από ένα ή πολλαπλά threads/processes Μοντέλο συνέπειας μνήμης 29 cslab@ntua 2010 2011

Μοντέλο Συνέπειας Μνήμης Περιορίζει τις πιθανές διατάξεις με τις οποίες οι λειτουργίες μνήμης μπορούν να εμφανιστούν η μια σε σχέση με την άλλη. Χωρίς αυτή δεν μπορούμε να πούμε τίποτα για το αποτέλεσμα της εκτέλεσης ενός προγράμματος. Συνέπειες : Ο προγραμματιστής αποφασίζει για την ορθότητα και τα πιθανά αποτελέσματα Ο σχεδιαστής του συστήματος περιορίζει πόσο μπορούν να αναδιατάσσονται οι λειτουργίες μνήμης από τον compiler ήτοhardware. 30 cslab@ntua 2010 2011

Sequential Consistency (1) 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 occur in this sequence in the order specified by its program. [Lamport, 1979] 31 cslab@ntua 2010 2011

Sequential Consistency (2) Σαν να μην υπήρχαν κρυφές μνήμες, παρά μόνο μια μνήμη. Κάθε thread δρομολογεί και ολοκληρώνει μια λειτουργία μνήμης σύμφωνα με τη σειρά του προγράμματος της. Η μνήμη ικανοποιεί τις προσπελάσεις σύμφωνα με κάποια σειρά. Κάθε λειτουργία σε αυτή τη σειρά φαίνεται σα να εκτελείται και να ολοκληρώνεται ατομικά (πριν ξεκινήσουν οι επόμενες). 32 cslab@ntua 2010 2011

Sequential Consistency (3) Ορισμός program order Διαισθητικά η σειρά με την οποία εμφανίζονται οι εντολές στον πηγαίο κώδικα. Η σειρά με την οποία εμφανίζονται οι λειτουργίες μνήμης στην assembly που προκύπτει από απευθείας μετατροπή του πηγαίου κώδικα. Δεν είναι υποχρεωτικά η ίδια σειρά με αυτή που παράγει ο compiler και εκτελείται στο hardware Ένας optimizing compiler μπορεί να αναδιατάξει τις εντολές του πηγαίου κώδικα. Άρα η σειρά του προγράμματος εξαρτάται από το επίπεδο που κοιτάζουμε. Εμείς υποθέτουμε τη σειρά έτσι όπως τη βλέπει ο προγραμματιστής. 33 cslab@ntua 2010 2011

Sequential Consistency (4) Παράδειγμα Πιθανά αποτελέσματα για (Α,Β): (0,0), (1,0), (1,2) Επιτρέπει η SC το (0,2); Σύμφωνα με SC πρέπει 1a 1b και 2a 2b (program order). Αν Α = 0, τότε 2b 1a. Άρα και 2a 1a. Όμως Β =2,μόνο αν 1b 2a! Επομένως μη επιτρεπτό αποτέλεσμα. 34 cslab@ntua 2010 2011

Sequential Consistency (5) Ανακεφαλαιώνοντας, για την SC έχουμε 2 απαιτήσεις. Program Order Οι λειτουργίες μνήμης ενός thread πρέπει να γίνονται ορατές (στους άλλους και στον εαυτό του) με τη σειρά που υπαγορεύει το πρόγραμμα. Atomicity Μια λειτουργία μνήμης ολοκληρώνεται λ προτού κληθεί η επόμενη σύμφωνα με την καθολική σειρά (ανεξάρτητα από το σε ποιο thead ανήκει η επόμενη λειτουργία). Δυσκολία υλοποίησης της ατομικότητας για λειτουργίες εγγραφής. 35 cslab@ntua 2010 2011

Write atomicity (1) Write atomicity Η θέση όπου εμφανίζεται να εκτελείται ένα write σύμφωνα με την καθολική σειρά, πρέπει να είναι ίδια για όλα τα threads. Τίποτα από αυτά που κάνει ένα thread αφού δει την καινούρια τιμή που παράγει μια εγγραφή W δεν πρέπει να γίνει ορατό από στα υπόλοιπα threads πριν δουν και αυτά τη W. Ουσιαστικά, επεκτείνουμε την σειριοποίηση ηεγγραφών που απαιτεί η συνάφεια. Write serialization : Όλες οι εγγραφές σε μια τοποθεσία θα πρέπει να εμφανίζονται σε όλα τα threads με την ίδια σειρά Write atomicity : Όλες οι εγγραφές σε κάθε τοποθεσία θα πρέπει να εμφανίζονται σε όλα τα threads με την ίδια σειρά 36 cslab@ntua 2010 2011

Write atomicity (2) Έστω ότι επιτρέπουμε στον P2 να προχωρήσει στο B=1 πριν η εγγραφή του Α γίνει ορατή από τον P3. Μπορεί ο P3 να διαβάσει την παλιά τιμή του Α και την καινούρια του Β. Παραβίαση της SC! 37 cslab@ntua 2010 2011

Sequential Consistency (6) Ισχύουν τα εξής : Η σειρά του προγράμματος κάθε thread επιβάλλει μια μερική διάταξη στο σύνολο των λειτουργιών. Κάθε παρεμβολή αυτών των μερικών διατάξεων δημιουργεί μια καθολική σειρά για όλες τις λειτουργίες. Η SC δεν ορίζει τον ακριβή τρόπο παρεμβολής κι επομένως παραπάνω από μια σειρές μπορούν να είναι ακολουθιακά συνεπείς. Sequential Consistent Execution H εκτέλεση ενός προγράμματος είναι ακολουθιακά συνεπής αν τα αποτελέσματα που παράγονται είναι ίδια για κάθε πιθανή καθολική σειρά. Sequential Consistent System Ένα σύστημα είναι ακολουθιακά συνεπές αν κάθε πιθανή εκτέλεση σε αυτό είναι ακολουθιακά συνεπής. 38 cslab@ntua 2010 2011

Sequential Consistency (7) Ικανές συνθήκες 1. Κάθε thread καλεί τις λειτουργίες μνήμης με τη σειρά του προγράμματος του. 2. Αφού κληθεί μια λειτουργία εγγραφής του, το thread περιμένει να ολοκληρωθεί η εγγραφή πριν καλέσει την επόμενη λειτουργία. 3. Αφού κληθεί μια λειτουργία ανάγνωσης του, το thread περιμένει να ολοκληρωθεί τόσο η ανάγνωση όσο και τυχόν εγγραφή της οποίας την τιμής θα επιστρέψει η ανάγνωση. Η 3 η συνθήκηπαρέχειτηνατομικότητατωνεγγραφώνκαιείναιηπιο πολύπλοκη. Οι συνθήκες αυτές είναι ικανές και όχι αναγκαίες. Υπάρχουν περιπτώσεις όπου διατηρείται η SC με λιγότερη σειριοποίηση. 39 cslab@ntua 2010 2011

Sequential Consistency (8) Program Order Οι compilers δεν πρέπει να αναδιατάσσουν τις εντολές του προγράμματος προκειμένου να διασφαλιστεί η SC από τη μεριά του προγραμματιστή. Το κάνουν όμως! Αναδιάταξη (ακόμα και εξάλειψη) προσβάσεων σε διαφορετικές θέσεις στη μνήμη : subexpression elimination, constant propagation, register allocation, loop transformations κτλ. Χρήση του volatile: Απαγορεύει το register allocation της μεταβλητής καθώς και την αναδιάταξη των λειτουργιών μνήμης σε αυτή. Ακόμα και αν ο compiler δεν αλλάξει τη σειρά του προγράμματος, είναι πιθανό να την αλλάξει το hardware. write buffers, interleaved memory, pipelining, out of order execution Οι ικανές συνθήκες για SC είναι πολύ αυστηρές και περιορίζουν την απόδοση. Weaker consistency models 40 cslab@ntua 2010 2011

Sequential Consistency (9) Υποθέτουμε ότι ο compiler δεν αναδιατάσσει τις εντολές. Το hardware χρειάζεται μηχανισμούς : Για την ανίχνευση της ολοκλήρωσης των εγγραφών. Για την εξασφάλιση της ατομικότητας των εγγραφών. Για τα πρωτόκολλα που θα μελετήσουμε, θα εστιάσουμε στο : Πώς ικανοποιούν τη συνάφεια και υλοποιούν τη σειριοποίηση των εγγραφών. Πώς ικανοποιούν τις ικανές συνθήκες για ακολουθιακή συνέπεια. Πώς μπορούν να εξασφαλίσουν την ακολουθιακή συνέπεια με άλλες πιο χαλαρές συνθήκες. 41 cslab@ntua 2010 2011

Sequential Consistency (10) Η ύπαρξη κεντρικού διαδρόμου κάνει ευκολότερη την υλοποίηση μέσω της σειριοποίησης των transactions που εμφανίζονται στο διάδρομο. Παράδειγμα : Για write through caches Οι λειτουργίες μνήμης για όλες τις θέσεις σειριοποιούνται πάνω στον διάδρομο. Αν μια ανάγνωση επιστρέφει την τιμή μιας εγγραφής W, τότε η W έχει σίγουρα ολοκληρωθεί (αφού προκάλεσε bus transaction). Όταν η W πραγματοποιείται όσον αφορά τα άλλα threads, όλες οι προηγούμενες εγγραφές έχουν ήδη ολοκληρωθεί σύμφωνα με τη διάταξη που επιβάλλει ο διάδρομος. 42 cslab@ntua 2010 2011

Snooping Protocols Διατηρούμε τον επεξεργαστή, τη κύρια μνήμη και τις caches. Επέκταση του cache controller εκμετάλλευση του bus. Write back caches Αποδοτική αξιοποίηση του περιορισμένου bus bandwidth. Δεν προκαλούν bus transactions όλες οι λειτουργίες μνήμης. Πιο δύσκολη υλοποίηση ητης συνάφειας. Χρήση του modified state (τροποποιημένη κατάσταση) Αποκλειστική ιδιοκτησία δεν υπάρχει άλλο έγκυρο αντίγραφο. Η κύρια μνήμη μπορεί να έχει ή να μην έχει αντίγραφο. Η cache είναι υπεύθυνη να παρέχει το block σε όποιον το ζητήσει. Exclusivity (αποκλειστικότητα) η Η cache μπορεί να τροποποιήσει το block χωρίς να ειδοποιήσει κανένα χωρίς bus transaction Πριν την εγγραφή πρέπει να αποκτήσει αποκλειστικότητα. Ακόμα και αν τοblock είναι valid write miss 43 cslab@ntua 2010 2011

Invalidation Protocols Write miss Προκαλεί ένα ειδικό transaction : read exclusive (RdX) Ειδοποιεί τους υπόλοιπους ότι ακολουθεί εγγραφή και αποκτά αποκλειστική ιδιοκτησία. Όλοι όσοι διαθέτουν αντίγραφο του block το διαγράφουν. Μόνο μια RdX επιτυγχάνει κάθε φορά. Πολλαπλές αιτήσεις σειριποιούνται από το διάδρομο. Τελικά τα νέα δεδομένα γράφονται στην κύρια μνήμη όταν το block εκδιωχθεί από την cache. Αν ένα block δεν έχει τροποποιηθεί (modified state), τότε δεν χρειάζεται να γραφτεί στην κύρια μνήμη όταν εκδιωχθεί από την cache. 44 cslab@ntua 2010 2011

Update Protocols Μια λειτουργία εγγραφής ενημερώνει και τυχόν αντίγραφα του block στις υπόλοιπες caches. Πλεονεκτήματα Μικρότερη ρηκαθυστέρηση η πρόσβασης στο block από τις άλλες caches. Όλοι ενημερώνονται με ένα μόνο transaction. Μειονεκτήματα Πολλαπλές εγγραφές στο block από τον ίδιο επεξεργαστή προκαλούν πολλαπλά transactions για τις ενημερώσεις. 45 cslab@ntua 2010 2011

Invalidation vs. Update Protocols Σε κάποια cache γίνεται εγγραφή σε ένα block. Πριν την επόμενη εγγραφή στο ίδιο block, θέλει κάποιος άλλος να το διαβάσει; Ναι : Όχι : Invalidation Read miss πιθανώς πολλαπλά transactions Update Read hit αν είχαν από πριν αντίγραφα ενημέρωση με ένα μόνο transaction Invalidation Πολλαπλές εγγραφές χωρίς επιπλέον κίνηση στο bus Εκκαθάριση αντιγράφων που δε χρησιμοποιούνται Update Πολλαπλές αχρείαστες ενημερώσεις (και σε πιθανώς νεκρά αντίγραφα) 46 cslab@ntua 2010 2011

MSI Write Back Invalidation Protocol (1) 3 καταστάσεις (states) 1. Τροποποιημένη [Modified(M)] 2. Μοιραζόμενη [Shared(S)] 3. Άκυρη [Invalid(I)] 2 τύποι αιτήσεων από τον επεξεργαστή PrRd : ανάγνωση PrWr : εγγραφή 3 bustransactions BusRd : Ζητά αντίγραφο χωρίς σκοπό να το τροποποιήσει BusRdX : Ζητά αντίγραφο για να το τροποποιήσει BusWB : Ενημερώνει τη μνήμη 47 cslab@ntua 2010 2011

MSI Write Back Invalidation Protocol (2) Διάγραμμα Μετάβασης Καταστάσεων Μεταβάσεις εξαιτίας λειτουργιών του τοπικού επεξεργαστή. Μεταβάσεις εξαιτίας των παρατηρούμενων bus transactions. Α/Β Αν ο cache controller παρατηρήσει το Α, τότε εκτός από τη μετάβαση στη νέα κατάσταση προκαλεί και το Β. Καμία ενέργεια. Δεν περιλαμβάνονται οι μεταβάσεις και οι ενέργειες κατά την αντικατάσταση ενός block στην cache. Όσο πιο ψηλά στο διάγραμμα βρίσκεται ένα block, τόσο πιο στενά συνδεδεμένο (bound) είναι με τον επεξεργαστή. 48 cslab@ntua 2010 2011

MSI Παράδειγμα Ενέργεια στον επεξεργαστή Κατάσταση Ρ1 Κατάσταση Ρ2 Κατάσταση Ρ3 Ενέργεια στο διάδρομο Τα δεδομένα παρέχονται από Ρ1 διαβάζει u S BusRd Mem Ρ3 διαβάζει u S S BusRd Mem Ρ3 γράφει u I M BusRdX Mem Ρ1 διαβάζει u S S BusRd Ρ3 Cache Ρ2 διαβάζει u S S S BusRd Mem 49 cslab@ntua 2010 2011

MSI Coherence Η διάδοση των εγγραφών είναι προφανής. Σειροποίηση εγγραφών : Όλες οι εγγραφές που εμφανίζονται στο διάδρομο (BusRdX) διατάσσονται από αυτόν. Οι αναγνώσεις που εμφανίζονται στο διάδρομο διατάσσονται ως προς τις εγγραφές. Για τις εγγραφές που δεν εμφανίζονται στο διάδρομο: Μια ακολουθία τέτοιων εγγραφών μεταξύ 2 bus transactions γιατοίδιοblock πρέπει να προέρχονται από τον ίδιο επεξεργαστή P. Στη σειριοποίηση η ακολουθία εμφανίζεται μεταξύ αυτών των 2transactions. Οι αναγνώσεις από τον Ρ θα βλέπουν τις εγγραφές με αυτή τη σειρά ως προς τις υπόλοιπες εγγραφές. Οι αναγνώσεις από άλλους επεξεργαστές διαχωρίζονται από την ακολουθία με ένα bus transaction, η οποία τις τοποθετεί έτσι σε σειρά ως προς τις εγγραφές. Οι αναγνώσεις από όλους τους επεξεργαστές βλέπουν τις εγγραφές με την ίδια σειρά. 50 cslab@ntua 2010 2011

MSI Sequential Consistency Ο διάδρομος επιβάλει καθολική σειρά για όλα τα bus transactions για όλες τις θέσεις. Όλοι οι cache controllers παρατηρούν Rd και RdX transactions με την ίδια σειρά και πραγματοποιούν ακυρώσεις με βάση αυτή. Μεταξύ διαδοχικών transactions, κάθε επεξεργαστής διαβάζει/γράφει τοπικά σύμφωνα με τη σειρά του προγράμματος του. Άρα κάθε εκτέλεση ορίζει μια φυσική μερική διάταξη : ΗλειτουργίαΜ j έπεται της Μ i αν (1) έπεται στη σειρά του προγράμματος στον ίδιο επεξεργαστή ήή ή (2) η Μ j προκαλεί transaction που έπεται της Μ i. Μεταξύ transactions, κάθε παρεμβολή των λειτουργιών διαφορετικών επεξεργαστών δίνει συνεπή καθολική σειρά. Μεταξύ 2transactions,ένας επεξεργαστής P παρακολουθεί : τις εγγραφές των άλλων σειριοποιημένες ως προς το προηγούμενο bus transaction. τις δικές του εγγραφές σειριοποιημένες με τη σειρά του προγράμματος. 51 cslab@ntua 2010 2011

Πρόβλημα MSI MΕSI Write Back Invalidation Protocol (1) 2transactionsγια ανάγνωση και τροποποίηση ενός block, ακόμα και αν δεν τα μοιράζεται κανείς. 4 καταστάσεις (states) 1. Τροποποιημένη [Modified(M)] 2. Αποκλειστική [Exclusive(E)] Μόνο αυτή η cache έχει αντίγραφο (μη τροποποιημένο). 3. Μοιραζόμενη [Shared(S)] Δύο ή περισσότερες caches έχουν αντίγραφο. 4. Άκυρη [Invalid(I)] Αν κανείς δεν έχει αντίγραφο του block, τότε ένα PrRd έχει σαν αποτέλεσμα την μετάβαση Ι Ε. Στο διάδρομο χρειάζεται ένα σήμα shared ως απάντηση σε ένα BusRd. 52 cslab@ntua 2010 2011

MESI Write Back Invalidation Protocol (2) Διάγραμμα Μετάβασης Καταστάσεων Μεταβάσεις εξαιτίας λειτουργιών του τοπικού επεξεργαστή. Μεταβάσεις εξαιτίας των παρατηρούμενων bus transactions. Α/Β Αν ο cache controller παρατηρήσει το Α, τότε εκτός από τη μετάβαση στη νέα κατάσταση προκαλεί και το Β. Καμία ενέργεια. Ένα block μπορεί να βρίσκεται σε κατάσταση S ενώ δεν υπάρχουν άλλα αντίγραφα. Πώς; 53 cslab@ntua 2010 2011

MΕSI Παράδειγμα Ενέργεια στον επεξεργαστή Κατάσταση Ρ1 Κατάσταση Ρ2 Κατάσταση Ρ3 Ενέργεια στο διάδρομο Τα δεδομένα παρέχονται από Ρ1 διαβάζει u Ε BusRd Mem Ρ1 γράφει u Μ Ρ3 διαβάζει u S S BusRd Ρ1 Cache Ρ3 γράφει u I M BusRdX Ρ1 διαβάζει u S S BusRd Ρ3 Cache Ρ2 διαβάζει u S S S BusRd Mem 54 cslab@ntua 2010 2011

Dragon Write Back Update Protocol (1) 4 καταστάσεις (states) tt 1. Αποκλειστική [Exclusive (E)] Μόνο αυτή η cache έχει αντίγραφο (μη τροποποιημένο). Η κύρια μνήμη είναι ενημερωμένη (up to date). 2. Μοιραζόμενη καθαρή [Shared clean (Sc)] Δύο ή περισσότερες caches έχουν αντίγραφο. Η κύρια μνήμη δεν είναι υποχρεωτικά up to date. 3. Μοιραζόμενη τροποποιημένη [Shared modified (Sm)] Δύο ή περισσότερες caches έχουν αντίγραφο, ηκύριαμνήμηδεν είναι up to date και η cache αυτή έχει την ευθύνη να ενημερώσει την κύρια μνήμη όταν εκδιώξει το block. 4. Τροποποιημένη [Modified (M)] Μόνο η cache αυτή διαθέτει το τροποποιημένο block ενώ η κύρια μνήμη δεν είναι up to date. Δεν υπάρχει Invalid state. To πρωτόκολλο διατηρεί πάντα τα blocks που βρίσκονται στις caches up todate. Δύο νέες αιτήσεις από τον επεξεργαστή : PrRdMiss, PrWrMiss Ένα νέο bus transaction : BusUpd 55 cslab@ntua 2010 2011

Dragon Write Back Update Protocol (2) 56 cslab@ntua 2010 2011

Dragon Παράδειγμα Ενέργεια στον επεξεργαστή Κατάσταση Ρ1 Κατάσταση Ρ2 Κατάσταση Ρ3 Ενέργεια στο διάδρομο Τα δεδομένα παρέχονται από Ρ1 διαβάζει u Ε BusRd Mem Ρ3 διαβάζει u Sc Sc BusRd Mem Ρ3 γράφει u Sc Sm BusUpd Ρ3 Cache Ρ1 διαβάζει u Sc Sm Ρ2 διαβάζει u Sc Sc Sm BusRd Ρ3 Cache 57 cslab@ntua 2010 2011

Protocol Design Tradeoffs (1) Η σχεδίαση πολυεπεξεργαστικών συστημάτων είναι πολύπλοκη Αριθμός επεξεργαστών Ιεραρχία μνήμης (levels, size, associativity, bs, ) Διάδρομος Memory System (interleaved banks, width of banks, ) I/O subsystem + Cache Coherence Protocol (Protocol class, states, actions, ) Το πρωτόκολλο επηρεάζει χαρακτηριστικά του συστήματος, όπως latency και bandwitdh. Η επιλογή του πρωτοκόλλου επηρεάζεται από τη ζητούμενη απόδοση και συμπεριφορά του συστήματος καθώς και από την οργάνωση της ιεραρχίας μνήμης και της επικοινωνίας. 58 cslab@ntua 2010 2011

Protocol Design Tradeoffs (2) Write Update vs. Write Invalidate Wit Write run: Μια σειρά εγγραφών από ένα επεξεργαστή σε ένα block μνήμης, η αρχή και το τέλος της οποίας ορίζονται από λειτουργίες σε αυτό το block από άλλους επεξεργαστές. W2, R1, W1, W1, R1, W1, R3 Write run length = 3 Write Invalidate: Ένα write run οποιουδήποτε μήκους θα δημιουργήσει ένα μοναδικό coherence miss. Write Update: Έναwrite runrun μήκους L θα προκαλέσειl updates. 59 cslab@ntua 2010 2011

Compulsory misses (cold) Πρώτη πρόσβαση σε ένα block. Αύξηση του block size. Capacity misses 4C Cache Misses Model To block δε χωρά στην cache (ακόμα και σε full associative cache). Αύξηση η cache size. Conflict misses To block δε χωρά στο set που γίνεται mapped. Αύξηση associativity. i i Coherence misses (communication) True sharing : Όταν ένα data word χρησιμοποιείται από 2 ή παραπάνω επεξεργαστές. False sharing : Όταν ανεξάρτητα data words που χρησιμοποιούνται από διαφορετικούς επεξεργαστές ανήκουν στο ίδιο cache block. 60 cslab@ntua 2010 2011

cslab@ntua 2010 2011

Protocol Design Tradeoffs (3) Cache Block Size Αύξηση του block size μπορεί να οδηγήσει : Μείωση του miss rate (goodspatial locality). Х Αύξηση του miss penalty και ίσως του hit cost. Х Αύξηση του miss rate εξαιτίας false sharing (poor spatial locality). Х Αύξηση του traffic στο bus, λόγω μεταφοράς «αχρείαστων» δεδομένων (mismatch fetch/access size, false sharing). Υπάρχειητάσηγιαχρησιμοποίησημεγαλύτερωνcache blocks. Απόσβεση κόστους του bus transaction και της πρόσβασης στη μνήμη μεταφέροντας περισσότερα δεδομένα. Hardware και software μηχανισμοί για αντιμετώπιση του false sharing. 62 cslab@ntua 2010 2011

False sharing reduction 1. Βελτιωμένο data layout προκειμένου να αποφευχθεί η τοποθέτηση ανεξάρτητων δεδομένων στο ίδιο block. Data Padding eg. Dummy variables μεταξύ lock variables που είναι τοποθετημένες κοντά η μια στην άλλη. Tradeoff : locality vs. false sharing Χρήση array of arrays ώστε να βεβαιωθούμε ότι κάθε submatrix είναι τοποθετημένο συνεχόμενα στη μνήμη. Tradeoff : false sharing vs. instruction overhead 2. Partial Block Invalidation To block σπάει σε sub blocks, για κάθε ένα από τα οποία διατηρείται το state. Σε κάθε miss φέρνουμε όλα τα invalid sub blocks. Κάνουμε invalidate μόνο το sub block που περιέχει τα δεδομένα που θα τροποποιηθούν. Tradeoff : less false sharing miss vs. more invalidation messages 63 cslab@ntua 2010 2011

Scalable Multiprocessor Systems Τα συστήματα που στηρίζονται στη χρήση διαδρόμου δεν είναι scalable. Όλα τα modules (cores, memories, etc) συνδέονται με ένα set καλωδίων. Περιορισμένο bandwidth Δεν αυξάνεται με την πρόσθεση παραπάνω επεξεργαστών Saturation (κορεσμός). Μεγαλύτερο bus Μεγαλύτερο latency. Ένα scalable σύστημα πρέπει να αντιμετωπίζει αυτά τα προβλήματα. Το συνολικό bandwidth θα πρέπει να αυξάνει με τον αριθμό των επεξεργαστών. Ο χρόνος που απαιτείται για κάποια ενέργεια δε θα πρέπει να αυξάνει πολύ (πχ. Εκθετικά) με το μέγεθος του συστήματος. Πρέπει να είναι cost effective. Χάνουμε βασικές ιδιότητες του διαδρόμου. Άγνωστος αριθμός ταυτόχρονων transactions. Δεν υπάρχει global arbitration. Τα αποτελέσματα (πχ. αλλαγές στο state) γίνονται απευθείας ορατά μόνο από τους κόμβους που συμμετέχουν στο transaction. 64 cslab@ntua 2010 2011

Directory Based Cache Coherence (1) To cache block state δεν μπορεί να καθοριστεί πλέον παρακολουθώντας τα requests στο shared db bus. (implicit itdt determination) ti Καθορίζεται και διατηρείται σε ένα μέρος (directory) όπου τα requests μπορούν να απευθυνθούν και να το ανακαλύψουν. (explicit determination) Κάθε memory block έχει ένα directory entry Book keeping keeping (ποιοι nodes έχουν αντίγραφα, το state του memorycopy, ) Όλα τα requests για το block πηγαίνουν στο directory. 65 cslab@ntua 2010 2011

Directory Based Cache Coherence (2) 66 cslab@ntua 2010 2011

Directory Based Cache Coherence (3) 67 cslab@ntua 2010 2011

Directory Protocol Taxonomy 68 cslab@ntua 2010 2011

Βελτίωση Παραλληλισμού Η απόδοση των συστημάτων περιορίζεται από διάφορους παράγοντες. Αναμονή σε κάθε λειτουργία μνήμης. Κάθε επεξεργαστής περιμένει να ολοκληρωθεί μια λειτουργία μνήμης προτού δρομολογήσει την επόμενη (SC). Περιορισμένη δυνατότητα δημιουργίας αντιγράφων. Τα δεδομέναδ δημιουργούν αντίγραφα μόνο στις caches και όχι στις local main memories. Δημιουργούνται έτσι capacity misses όταν τα working sets είναι μεγάλα και περιλαμβάνουν nonlocal data ή όταν υπάρχουν αρκετά conflict misses. Υψηλό κόστος σχεδιασμού και υλοποίησης. Πολύπλοκα πρωτόκολλα και μηχανισμοί επικοινωνίας απαιτούν μεγάλο χρόνο σχεδιασμού και υλοποίησης. Ταυτόχρονα είναι πιθανό να αυξάνουν και τη δυσκολία προγραμματισμού. 69 cslab@ntua 2010 2011

Relaxed Consistency Models (1) Η ακολουθιακή συνέπεια (SC) είναι πολύ αυστηρή. Απαγορεύει Architectural enhancements (ooo, write buffering, ) Compiler optimizations (reordering, register allocation, ) Δημιουργία relaxed models. Απαιτούν αλλαγές σε όλα τα επίπεδα : System specification : Ποια program orders μεταξύ λειτουργιών μνήμης διατηρούνται; ; Και αν δε διατηρούνται όλα ποιοι μηχανισμοί μ προσφέρονται ρ στο προγραμματιστή για να επιβάλει κάποιο συγκεκριμένο order; Programming Model : Ordering semantics Translation mechanism 70 cslab@ntua 2010 2011

Relaxed Consistency Models (2) Μπορούμε να οργανώσουμε τα μοντέλα σε 3 διαφορετικές κατηγορίες. 1. Επιτρέπεται σε ένα Read να ολοκληρωθεί λ προτού ολοκληρωθεί λ κάποιο προηγούμενο (σύμφωνα με το program order) Write. Total Store Order (TSO), Processor Consistency (PC) 2. Επιτρέπεται και σε ένα Write να προσπεράσει κάποιο προηγούμενο (σύμφωνα με το program order) Write. ProcessorStoreOrder(PSO) 3. Επιτρέπεται σε ένα Read ή ένα Write να προσπεράσει κάποια προηγούμενη (σύμφωνα με το program order) λειτουργία μνήμης, είτε Read είτε Write. Weak Ordering (WO), Release Consistency (RC), RMO, Alpha, PowerPC. 71 cslab@ntua 2010 2011

Relaxing Write to Read Order Αντιμετώπιση της καθυστέρησης για writes που κάνουν miss στην L1 cache. Όσο το write είναι στο write buffer, οεπεξεργαστήςολοκληρώνειreads που κάνουν hit στην cache. Οσυγχρονισμόςμέσω spinning on a flag δουλεύει κανονικά. Χρήση memory barrier ή fence instructions (SUN Sparc V9) για υλοποίηση SC semantics. 72 cslab@ntua 2010 2011

Relaxing Write to Read & Write to Write Order Κίνητρο : Περαιτέρω μείωση της καθυστέρησης εξαιτίας ενός write miss και βελτίωση της επικοινωνίας μεταξύ των επεξεργαστών κάνοντας ορατές τις καινούριες τιμές νωρίτερα. Επιτρέπεται το merging πολλαπλών writes που βρίσκονται στο write buffer. Τα writes μπορεί να γίνουν ορατά εκτός σειράς! Δεν υπάρχει εγγύηση ότι δουλεύει ο συγχρονισμός με τη χρήση flags. 73 cslab@ntua 2010 2011

Relaxing All Memory Orders Κίνητρο : Όταν η σειρά μεταξύ λειτουργιών είναι κρίσιμη, τα παράλληλα προγράμματα χρησιμοποιούν συγχρονισμό. Επομένως, μπορούμε χαλαρώσουμε όλους τους περιορισμούς ούς για τις λειτουργίες μεταξύ των λειτουργιών συγχρονισμού. Weak Ordering (WO) : Ξεχωρίζει μεταξύ απλών λειτουργιών και λειτουργιών συγχρονισμού. Release Consistency (RC) : Επεκτείνει το WO, διακρίνοντας τις λειτουργίες συγχρονισμού σε acquire και release (επιτρέποντας καλύτερη επικάλυψη των λειτουργιών) 74 cslab@ntua 2010 2011

Relaxed Consistency Models (3) Hardware optimizations H χρήση buffers επιτρέπει στον επεξεργαστή να μη κάνει stall εφόσον οι τοπικές εξαρτήσεις δεδομένων διατηρούνται. Το hardware πρέπει να μπορεί να ξεχωρίσει ποιες προσβάσεις στη μνήμη γίνονται για συγχρονισμό και ποιες όχι. Software optimizations Αναδιάταξη τωνεντολών μεταξύ των σημείων συγχρονισμού. Επιτρέπονται compiler optimizations όπως register allocation. Το πρόγραμμα πρέπει να περιέχει τα κατάλληλα annotations και τυχόν memory races να επιλύονται με χρήση συγχρονισμού. 75 cslab@ntua 2010 2011

Tradeoffs between Relaxed Consistency Models Sequential Consistency Οιλειτουργίεςμνήμηςπρέπειναολοκληρώνονταιμεβάσητησειράτου προγράμματος. Η καθυστέρηση μπορεί να μειωθεί ίσως με χρήση speculation. Δεν επιτρέπονται τα περισσότερα compiler optimizations TSO & PC Επιτρέπεται η χρήση write buffers. Δεν επιτρέπονται και πάλι τα περισσότερα compiler optimizations. WO & RC Επιτρέπεται η χρήσηread και write buffers. Επιτρέπονται compiler optimizations μεταξύ των σημείων συγχρονισμού. Το πρόγραμμα πρέπει να περιέχει τα κατάλληλα annotations για να εκτελεστεί σωστά. 76 cslab@ntua 2010 2011