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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Υ07 Παράλληλα Συστήματα /11/2013 Οργάμωση κοιμής μμήμης (ΙΙ)

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

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

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

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

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

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

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

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

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

Ασκήσεις Caches

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

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

Parallel Architectures

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα

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

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

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

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

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

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

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

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

Parallel Architectures

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

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

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

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

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

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

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

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

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

Parallel Architectures

ΕΠΛ 605: ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2018 ΕΡΓΑΣΙΑ 3 (13/10/2018) Ηµεροµηνία Παράδοσης δεύτερου µέρους: 18/10/2018

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

Cach O p i timisati tions

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

5/3/2012. Εισαγωγή στα Παράλληλα Συστήµατα (Οργάνωση-Προγραµµατισµός) Β. Δημακόπουλος Α. Ευθυμίου

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

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

ΘΕΜΑ PROJECT COMPILER FLAGS ΤΡΑΧΑΝΗΣ ΔΗΜΗΤΡΗΣ 6108 ΤΡΑΧΑΝΗΣ ΓΕΩΡΓΙΟΣ 5789

Η ιεραρχία της μνήμης

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

Οργάνωση Κοινόχρηστης Μνήμης 2

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

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

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

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

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

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

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

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

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

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

Υ07. Διδάσκων: ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ. Β. Δημακόπουλος.

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

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

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

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

Max Planck Institute for Software Systems (MPI-SWS)

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

Διαχείριση Κύριας Μνήμης


Parallel Architectures

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

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

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

Transcript:

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

Ιεραρχία μνήμης & cache Επεξεργαστής: ταχύτατος Μνήμη: αργή (και μάλιστα η διαφορά ταχύτητας αυξάνεται) Βασική λύση: κρυφή μνήμη (cache) ΕΠ ΕΠ cache Πολύ γρήγορη, πολύ ακριβή, πολύ μικρή Στηρίζεται στο γεγονός ότι οι εφαρμογές διαθέτουν χωρική και χρονική τοπικότητα (locality) Ποσοστά επιτυχίας (hit rate) 70% 95% δεν είναι σπάνια Επικοινωνία με επεξεργαστή: λέξεις Μ Μ Επικοινωνία με μνήμη: blocks λέξεων» τοποθετούνται στις γραμμές της cache (cache lines) 2

(Κάποια από τα) Ζητήματα των cache Μέγεθος cache vs. μέγεθος cache line Τύπος αποθήκευσης: Split (ξεχωριστοί χώροι για αποθήκευση εντολών / δεδομένων) Unified (ενιαίος χώρος για όλα) Οργάνωση / συσχετιστικότητα Direct-mapped Set-associative (2- or 4-ways common) Fully associative Πολιτικές αντικατάστασης (replacement) LRU, FIFO, random, (pseudo-lru common) 3

Συμπεριφορά σε αναγνώσεις (read) Read hit Η ζητούμενη λέξη ξεχωρίζει από την γραμμή της cache και παραδίδεται στον επεξεργαστή. Read miss Το μπλοκ που περιλαμβάνει τη ζητούμενη λέξη προσκομίζεται από τη μνήμη, τοποθετείται σε μία γραμμή της cache και η λέξη παραδίδεται στον επεξεργαστή Μεγάλη καθυστέρηση Hit ration = # προσπελάσεων που ήταν hit / συνολικό # προσπελάσεων 4

Συμπεριφορά σε εγγραφές 1. Στην περίπτωση που το δεδομένο υπάρχει στην cache (write hit) Διεγγραφή (write-through): άμεση εγγραφή και στην κύρια μνήμη Υστεροεγγραφή (write-back): ΔΕΝ ενημερώνεται η κύρια μνήμη Πώς / πότε ενημερώνεται η κύρια μνήμη; Μόνο όταν έρθει η ώρα να αντικατασταθεί το τροποποιημένο (dirty) δεδομένο στην cache. Η υστεροεγγραφή προτιμάται: δημιουργεί λιγότερη κίνηση προς τη μνήμη (αλλά επίσης και προβλήματα ενημέρωσης ). Βελτίωση της διεγγραφής γίνεται με write-buffers. 2. Στην περίπτωση που το δεδομένο ΔΕΝ υπάρχει στην cache (write miss) No-allocate: γίνεται εγγραφή κατευθείαν στην κύρια μνήμη Write-allocate: το δεδομένο έρχεται πρώτα στην cache (όπως στο read) και στη συνέχεια τροποποιείται (πιο χρονοβόρο/χωροβόρο αλλά προτιμάται μιας και ελπίζουμε ότι θα υπάρξει read αργότερα έτσι κι αλλιώς) 5

Γενίκευση σε πολλαπλά επίπεδα (ιεραρχία caches) Για μείωση του κόστους αστοχίας (miss) 2-3 επίπεδα από αυξανόμενου μεγέθους και μειούμενου κόστους / ταχύτητας caches: ΕΠ I$ D$ L1 cache L2 cache ~ 16 64 KB, 1-4 cycles, split, writethrough ~ 256 KB 8 MB, 6-15 cycles L3 cache ~ 4 32 MB, 30-50 cycles Μ ~ Gbytes, 100+ cycles 6

Inclusion / exclusion Πού αποθηκεύεται ένα δεδομένο (δηλ. σε ποιο από όλα τα επίπεδα); Τρεις βασικές επιλογές: Inclusive cache: Η cache μεγαλύτερου επιπέδου φυλάει ΟΛΕΣ τις γραμμές των μικρότερων επιπέδων. Π.χ. L3 cache στους Intel Nehalem (Xeon 55xx) Exclusive cache: Η cache μεγαλύτερου επιπέδου δεν φυλάει καμία γραμμή των μικρότερων επιπέδων (άρα κάθε επίπεδο αποθηκεύει εντελώς διαφορετικά πράγματα). Π.χ. L3 cache στους AMD Shangai (Opteron 238x) Non-Inclusive/Non-exclusive cache: Δεν εξασφαλίζεται τίποτε από τα δύο παραπάνω. Π.χ. η L2 των Intel Sandy Bridge Πλεονεκτήματα / μειονεκτήματα; Οι inclusive είναι γενικά πιο εύκολες στον χειρισμό των misses αλλά απαιτούν πολύ μεγαλύτερο χώρο (π.χ. η L2 θα πρέπει ένα μέρος της να το αφιερώσει στο να κρατά αντίγραφο της L1). Στις inclusive ακύρωση (π.χ. αντικατάσταση) σε μεγαλύτερο επίπεδο απαιτεί ακύρωση και στα μικρότερα 7

Caches σε παράλληλα συστήματα κοινής μνήμης Εκτός του λόγου της «αργής» κύριας μνήμης, είναι απαραίτητες διότι επιπλέον: Υπάρχει συναγωνισμός επεξεργαστών στις κοινές μνήμες Το δίκτυο σύνδεσης επεξεργαστών-μνημών εισάγει επιπλέον καθυστερήσεις 8

Το πρόβλημα Πρόβλημα συνοχής εφόσον κάποιος μπορεί να τροποποιήσει το δικό του αντίγραφο (cache coherence) Χ Χ Χ 9

Λύσεις Αποτροπή του προβλήματος (δεν αφήνουμε το πρόβλημα να εμφανιστεί καν): Μόνο με software με ειδικό compiler που διαχωρίζει τα κοινά δεδομένα και δεν τους επιτρέπει να αντιγραφτούν στις κρυφές μνήμες Με software και hardware: Ειδική διάταξη που λειτουργεί σε συνδυασμό με τον compiler Το αφήνουμε και το λύνουμε κατά την εκτέλεση, με hardware πρωτόκολλα συνοχής (coherence protocols) πρωτόκολλα παρακολούθησης (snoopy/snooping protocols) πρωτόκολλα καταλόγων (directory-based protocols) 10

Πρωτόκολλα παρακολούθησης (snooping protocols)

Πρωτόκολλα παρακολούθησης Δύο είδη: εγγραφής ενημέρωσης (write-update) εγγραφής ακύρωσης (write-invalidate) Συνήθως λανθάνουσες μνήμες με πολιτική υστεροεγγραφής (write-back) Μάλλον (?) εγγραφής-ακύρωσης Μοντέρνες CPU (Pentium, UltraSparc, κλπ): όλες διαθέτουν hardware για πρωτόκολλα παρακολούθησης (multiprocessor-ready) 12

Πρωτόκολλο MSI (Write-back caches) Καταστάσεις γραμμής cache: Άκυρη (Invalid) ή δεν υπάρχει Είτε η γραμμή δεν υπάρχει στη cache (δηλαδή miss) ή μπορεί να υπάρχει αλλά έχει ακυρωθεί (γιατί κάποιος άλλος ζήτησε να την αλλάξει) Μοιραζόμενη (Shared) Η γραμμή δεν έχει αλλαχθεί, επομένως η κύρια μνήμη έχει ενήμερο αντίγραφο Μπορεί να υπάρχουν άλλα αντίγραφα σε άλλες caches Μπορεί και όχι γιατί οι αντικαταστάσεις γίνονται «αθόρυβα» Αλλαγμένη (Modified) Έχουμε το μοναδικό ενήμερο αντίγραφο της γραμμής 13

Διάγραμμα καταστάσεων γραμμής Συμβολισμός: Γεγονός/Ενέργεια PrXX γεγονός από τοπικό επεξεργαστή BusXX γεγονός από ή ενέργεια προς δίαυλο PrRd, PrWr ανάγνωση, εγγραφή από τον πυρήνα BusRd, BusRdX διαδικασία ανάγνωσης, αποκλειστικής ανάγνωσης στο δίαυλο Flush δίνω την τιμή της γραμμής στο δίαυλο και ανανεώνεται η κύρια μνήμη Παρόμοιο με BusRdX, χωρίς μεταφορά δεδομένων (Στο δίαυλο δεν φαίνονται τα write των άλλων, παρά μόνο τα flush και Upgr) 14

Πρωτόκολλο MESI ή Illinois Αν διαβάσουμε μια καινούρια γραμμή και αμέσως μετά θέλουμε να την αλλάξουμε, χωρίς να (θέλει να) παραμβληθεί άλλος επεξεργαστής Έχουμε 2 misses / κινήσεις στο δίαυλο μία για να φέρουμε τη γραμμή για πρώτη φορά (κατάσταση S) και άλλη μία μόνο για να αλλάξουμε τη κατάσταση σε M Αυτό γίνεται πολύ συχνά και σίγουρα γίνεται και σε σειριακά προγράμματα (τα οποία δε θέλουμε να βασανίζουμε!) Λύση: κρατάμε πληροφορία αν έχουμε (διαβάσει) το μοναδικό αντίγραφο της γραμμής μέχρι τώρα 4 η κατάσταση: αποκλειστική (exclusive) Στην κατάσταση αυτή έχουμε το μοναδικό αντίγραφο και η κύρια μνήμη είναι ενημερωμένη 15

Διάγραμμα καταστάσεων Σήμα S στον δίαυλο: Αν μια cache έχει αντίγραφο της γραμμής θέτει το σήμα (S) Αν κανείς δεν το θέσει (S) η γραμμή είναι αποκλειστική Από S -> M δεν υπάρχει κίνηση στον δίαυλο. Flush δίνω την τιμή της γραμμής στο δίαυλο και ανανεώνεται η κύρια μνήμη 16

Πρωτόκολλο MOESI Αν μετά την αλλαγή μιας γραμμής, η γραμμή χρησιμοποιηθεί για ανάγνωση, πρέπει να γραφτεί στη κύρια μνήμη flush έξω από κατάσταση M H κύρια μνήμη είναι γενικά αργή, οπότε συμφέρει να καθυστερήσουμε την εγγραφή όσο μπορούμε Χρειαζόμαστε μια επιπλέον κατάσταση όπου η γραμμή είναι αλλαγμένη αλλά υπάρχουν αντίγραφα σε άλλες caches: O owned HOMEWORK!! 17

Caches σε πολυεπεξεργαστές 18

Caches σε multicore 19

Pentium D Core 2 Duo Παραδείγματα AMD Bulldozer memory hierarchy 20

Πλεονεκτήματα κοινόχρηστων cache Μείωση χρόνου επικοινωνίας των πυρήνων μέσω της κοινής cache Επεξεργαστές που δουλεύουν σε επικαλυπτόμενες περιοχές δεδομένων Ο ένας μπορεί να φέρει δεδομένα που ίσως χρησιμοποιήσει κάποιος άλλος Μειώνεται ο χώρος που απαιτείται Ταχύτητα επικοινωνίας μείωση κίνησης στο δίαυλο Δυναμική διαμοίραση Αν ένας επεξεργαστής χρειάζεται λιγότερο χώρο, κάποιος άλλος μπορεί να πάρει περισσότερο Δεν υπάρχει θέμα συνοχής στην κοινόχρηστη cache Αποφυγή του false sharing 21

Μειονεκτήματα κοινόχρηστης cache Πολλαπλοί πυρήνες Απαίτηση για μεγαλύτερο μέγεθος cache (και άρα και πιο αργή) Απαίτηση για μεγαλύτερο ρυθμό μεταφοράς (μιας και προσπελαύνεται από αρκετές cache μικρότερου επιπέδου ταυτόχρονα) Προσπέλαση από πολλαπλές cache μικρότερου επιπέδου => συνήθως crossbar switch => κάποια αύξηση καθυστέρησης προσπέλασης Πολυπλοκότερη σχεδίαση Ένας πυρήνας μπορεί να είναι «μοναχοφάης» και να την γεμίζει με δικά του δεδομένα, προκαλώντας προβλήματα στους άλλους 22

Πρωτόκολλα καταλόγων (directory protocols)

Πρωτόκολλα με καταλόγους Δεν υπάρχει κοινό μέσο (π.χ. διασύνδεση με διακοπτικά δίκτυα ή συστήματα NUMA που θα δούμε αργότερα) Άρα αδύνατα / ασύμφορα τα πρωτόκολλα παρακολούθησης Η μνήμη είναι υπεύθυνη για όλα Κατάλογος όπου καταγράφεται ποιες cache έχουν αντίγραφο των δεδομένων Επικοινωνία για συνοχή μόνο με αυτές τις cache Κεντρικός κατάλογος (κακό) ή Κατανεμημένοι κατάλογοι 24

Κατανεμημένοι κατάλογοι Πεδία «παρουσίας» στους καταλόγους Κατανεμημένοι κατάλογοι: πλήρεις (full-map directories) περιορισμένοι (limmited directories) αλυσιδωτοί (chained directories) IEEE SCI (Scalable Coherent Interface) 25

Πλήρεις κατάλογοι Για συστήματα μεσαίου μεγέθους Π.χ. 128 cpus block size / cache line = 64 bytes ποιο το μέγεθος του directory? Για 1024 cpus? 26

Μερικοί κατάλογοι Για 1024 cpus block size / cache line = 64 bytes Κ = χώρος για 10 αντίγραφα ποιο το μέγεθος του directory? Κ = 5 είναι αρκετός χώρος για να περιορίσει πολύ τις συχνές εξώσεις. 27

Αλυσιδωτοί κατάλογοι Στέλνονται τα data και το id της κεφαλής Write hit στην cache C: Η cache C στέλνει Write Request στη μνήμη Η μνήμη στέλνει πακέτο (Invalidate, C) στην κεφαλή της λίστας Το πακέτο ακυρώνει το αντίγραφο και προωθείται στον επόμενο κόμβο Ο τελευταίος κόμβος στέλνει Invalidate Acknowledge στον C. Replacement σε μία cache: Η cache στέλνει Invalidate στη μνήμη Το Invalidate προωθείται και ακυρώνεται όλη η αλυσίδα. 28

Αλυσιδωτοί κατάλογοι διπλή σύνδεση Παράδειγμα υλοποίησης: Replacement: Roll out της cache με επικοινωνία με προηγούμενο + επόμενο κόμβο Write hit: η cache C πρέπει να πάρει exclusive access Διαβάζει πάλι το δεδομένο ώστε να μπει στην κορυφή της λίστας Στέλνει purge (invalidation) στον επόμενο κόμβο ο οποίος ακυρώνει το αντίγραφό του και επιστρέφει acknowledgement + το id του επόμενου Συνεχίζεται μέχρι να στείλει acknowledgement ο τελευταίος στη λίστα Τυπικό παράδειγμα: IEEE Scalable Coherent Interface (SCI) Θα τα ξαναδούμε όταν μιλήσουμε για μηχανές ccnuma 29

Συνέπεια μνήμης (memory consistency)

Ένα απλό πρόγραμμα Initially A = B = 0 Process P1 A = 1; /* write(a) */ B = 1; /* write(b) */ Process P2 printf( %d, B); /* read(b) */ printf( %d, A); /* read(a) */ Εκτύπωση: 10 (!? Call service?) Αποδεκτές εκτυπώσεις: 00, 11, 11 Το πρωτόκολλο συνέπειας (cache coherency) εξασφαλίζει ότι τα αντίγραφα μίας μεταβλητής θα είναι πάντα ενημερωμένα. Αν τροποποιούνται δύο άσχετες μεταξύ τους μεταβλητές; Δεν εξασφαλίζει πώς / πότε / με ποια σειρά γίνονται οι ενημερώσεις τους (κάθε μία θα είναι τελικά ΟΚ αλλά μέχρι να ενημερωθούν τα αντίγραφα της μίας, μπορεί να ενημερώνονται ανεξάρτητα και ταυτόχρονα της άλλης). 31

Σειρά προγράμματος Θέλουμε το read από μία θέση μνήμης να επιστρέφει πάντα την πιο πρόσφατη τιμή που έγινε write εκεί, όχι μία παλιότερη τιμή. Δεν αρκεί μόνο αυτό όμως! Πρέπει οι προσπελάσεις σε διαφορετικές θέσεις να ακολουθούν μία γενικότερη σειρά. Το μοντέλο συνέπεια μνήμης (memory consistency model) καθορίζει τη σειρά με την οποία οι προσπελάσεις φαίνονται στους επεξεργαστές Η «λογική» λειτουργία εξασφαλίζεται από την «ακολουθιακή συνέπεια» (sequential consistency) 32

Ακολουθιακή συνέπεια Κάθε CPU ολοκληρώνει τις αναφορές της στη μνήμη με τη σειρά προγράμματός της Όλες οι αναφορές στη μνήμη γίνονται αδιαίρετα ατομικότητα σειριοποίηση CPU 1 CPU 2 CPU N MNHMH 33

SC Ικανές (όχι αναγκαίες) συνθήκες για SC: 1. κάθε νήμα ξεκινάει προσπελάσεις μνήμης με τη σειρά του προγράμματος 2. όταν ένα νήμα ξεκινάει μια εγγραφή, το νήμα πρέπει να περιμένει να ολοκληρωθεί η εγγραφή πριν ξεκινήσει την επόμενη προσπέλαση 3. όταν ένα νήμα ξεκινήσει μια ανάγνωση, το νήμα πρέπει να περιμένει να ολοκληρωθεί η ανάγνωση και η εγγραφή την τιμή της οποίας η ανάγνωση φέρνει, πριν ξεκινήσει την επόμενη προσπέλαση Το πιο λογικό μοντέλο, δουλεύουν όλοι οι αλγόριθμοι συγχρονισμού χαμηλού επιπέδου, π.χ. αλγόριθμος Dekker: Initially A = B = 0 Process P1 A = 1; if (B == 0) <critical section> Process P2 B = 1; if (A == 0) <critical section> 34

SC Για να εγγυηθεί την ακολουθιακή συνέπεια, ένα παράλληλο σύστημα δεν μπορεί να χρησιμοποιεί μια σειρά από αρχιτεκτονικές τεχνικές αύξησης απόδοσης. Υποχρεωτικά περιορισμοί στη σχεδίαση CPU και compilers: Most ILP techniques (e.g. pipelining with overlapping memory operations), out-of-order execution, speculative execution etc. Register allocation, subexpression elimination, loop transformations BE CAREFUL: avoid register variables for sensitive data USE: volatile for sensitive variables Λόγω των παραπάνω, υλοποιείται πολύ σπάνια. Παράδειγμα: SGI Origin 2000 (helios.cc.uoi.gr) based on MIPS R10000 processors CPU overlaps memory operations (i.e. NON-ATOMIC) but COMPLETES them in program order Memory subsystem guarantees atomicity. Thus machine has SC. 35

Τι χάνουμε από την SC Υποθέστε: Πρωτόκολλο καταλόγων με 5 CPUs να έχουν αντίγραφο μίας μεταβλητής, και η CPU 1 θέλει να την τροποποιήσει (write) Για ατομικότητα της εγγραφής: Η CPU 1 ζητά exclusiveness (20 cycles) Η μνήμη στέλνει στις υπόλοιπες invalidations (10 cycle κάθε μία) Cache invalidation + acknowledgement στη μνήμη (50 cycles) για κάθε μία από τις 4 caches Η μνήμη παραχωρεί exclusiveness στη CPU 1 (20 cycles) Συνολικός απαιτούμενος χρόνος: 20 + 4 10 + 50 + 20 = 130 cycles. ΕΡΩΤΗΣΗ: Γιατί όχι μόνο 20? ΑΠΑΝΤΗΣΗ: Κανένα πρόβλημα! Ξεχνάμε όμως της ατομικότητα και την ακολουθιακή συνέπεια. 36

Χαλαρά μοντέλα συνέπειας Ξεχνάμε τη σειρά προγράμματος Επιτρέπονται οι προσπελάσεις εκτός σειράς (εφόσον είναι σε διαφορετικές θέσεις μνήμης) Άρα επιτρέπονται τεχνικές ILP στους επεξεργαστές και optimization στους compilers Μερικές φορές θυσιάζεται και η ΑΤΟΜΙΚΟΤΗΤΑ των εγγραφών (π.χ. PC processor consistency, Intel) Τα διάφορα χαλαρά μοντέλα χαρακτηρίζονται από το ποιες προσπελάσεις επιτρέπεται να αναδιαταχτούν. Οι τέσσερις πιθανοί συνδυασμοί είναι: Write(x); Read(y) ; Write(x); Write(y); Read(x); Read(y); Read(x); Write(y); ή απλά: W->R, W->W, R->R, R->W 37

Π.χ. χαλαρώνοντας τη σειρά W->R (σχετικά «ανώδυνο») Επιτρέπεται ένα επόμενο read να ξεκινήσει πριν από προηγούμενο write Sun SPARC (TSO total store order) Intel Pentium Pro, MMX (PC processor consistency τα write είναι μη-ατομικά) Initially A = flag = 0 A = 1; flag = 1; Process P1 Process P2 while (flag == 0) ; print( %d, A); Initially A = B = 0 Process P1 Process P2 Process P3 A = 1; while (A == 0) ; B = 1; while (B == 0) ; printf( %d, A); 38

Χαλαρώνοντας όλες τις σειρές Επιτρέπεται να αναδιαταχτούν οποιεσδήποτε προσπελάσεις σε διαφορετικές θέσεις μνήμης. Π.χ. weak order (sync and non-sync memory accesses) και release consistency (acquire, release and normal accesses) Πάντα παρέχονται εντολές memory barriers ή fences οι οποίες όταν εισάγονται σε ένα σημείο του προγράμματος εξασφαλίζουν ότι: Όλες οι προηγούμενες προσπελάσεις έχουν ολοκληρωθεί πριν ξεκινήσουν οι προσπελάσεις που έπονται. Κανονικά σε γλώσσα μηχανής, ο gcc όμως παρέχει «συνάρτηση» που μπορεί να κληθεί από C: sync_synchronize(); 39

Συμπερασματικά Οι προγραμματιστές υποθέτουν συνήθως το «λογικό» μοντέλο της ακολουθιακής συνέπειας Η ακολουθιακή συνέπεια απαγορεύει αρκετές βελτιστοποιήσεις σε επεξεργαστές και μεταφραστές Τα χαλαρότερα μοντέλα έχουν δυνατότητα αυξημένων επιδόσεων (όχι εξωφρενικά καλύτερες όμως ) και είναι σχεδόν πάντα αυτά που χρησιμοποιούνται Όμως, σχεδόν καμία εφαρμογή δε χρειάζεται να απασχολείται με το μοντέλο συνέπειας που υποστηρίζει το hardware Εκτός αν η εφαρμογή χρησιμοποιεί χαμηλού επιπέδου συγχρονισμό μεταξύ νημάτων Π.χ. προγραμματισμός συστήματος (λειτουργικά συστήματα, βιβλιοθήκες, μεταφραστές κλπ) Βιβλιογραφία Βλ. προπτυχιακό μάθημα ΠΛΕ-079 Παλιό αλλά καλό survey: Sarita V. Adve, Kourosh Gharachorloo, Shared Memory Consistency Models: A Tutorial, IEEE Computer 29 (12): 66 76, Dec. 1996 Οποιοδήποτε σύγχρονο βιβλίο αρχιτεκτονικής παράλληλων συστημάτων. 40