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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

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

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

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

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

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Μετακινούμενος Κώδικας (Mobile Code) Κατανεμημένα Συστήματα 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 13: Κατανεμημένη Κοινόχρηστη Μνήμη. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Caches for Parallel Architectures. (Coherence)

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

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

Διάλεξη 12 Καθυστερήσεις (Stalls)

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

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

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

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

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

Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή. 30 min κάθε «φάση»

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

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

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

2 η Ενδιάμεση Εξέταση Λύσεις/Απαντήσεις

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

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

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

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

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

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

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

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

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

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

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Τεχνολογία Πολυμέσων. Ενότητα # 16: Πολυεκπομπή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

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

Parallel Architectures

Λιβανός Γιώργος Εξάμηνο 2017Β

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

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

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

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

Caches for Parallel Architectures

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

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

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

J. Glenn Brookshear. Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

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

Εντοπισμός αδιεξόδου. Κατανεμημένα Συστήματα 1

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

Το υλικό του υπολογιστή

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

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

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

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

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

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

5. Παράλληλα Συστήματα: Εισαγωγή

Ροή πολυμέσων. Εισαγωγή Ροή από εξυπηρετητές ιστοσελίδων Ροή από εξυπηρετητές μέσων Το πρωτόκολλο RTSP

Διάλεξη 14: Ατομική ΚΚΜ Εγγραφής/Ανάγνωσης στην Παρουσία Σφαλμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Transcript:

Συνοχή κρυφής μνήμης σε πολυπύρηνα/πολυεπεξεργαστικά συστήματα ΙΙΙ 1 lalis@inf.uth.gr

Απλοποιημένο μοντέλο συστήματος CPU/cores πάνω σε δίαυλο/δίκτυο (bus/interconnect) για απλότητα, εδώ CPU = core Η κυρίως μνήμη είναι ξεχωριστή από τις CPU Η ταχύτητα πρόσβασης της μνήμης είναι αργή, σε σχέση με την ταχύτητα εκτέλεσης της CPU Αν η CPU προσπελάζει την μνήμη πολύ συχνά, επιβραδύνεται σημαντικά η εκτέλεση του κώδικα Στόχος Α: μείωση της αλληλεπίδρασης με την μνήμη Στόχος Β: επικάλυψη της επικοινωνίας με εκτέλεση ΙΙΙ 2 lalis@inf.uth.gr

Κρυφή μνήμη Κάθε CPU έχει ξεχωριστή κρυφή μνήμη Η ταχύτητα πρόσβασης της κρυφής μνήμης είναι πολύ μεγαλύτερη από αυτή της κυρίως μνήμης Στην κρυφή μνήμη τοποθετούνται δεδομένα (και εντολές!) που χρησιμοποιεί συχνά η CPU Μειώνονται (ιδανικά εξαλείφονται) οι «διπλές» φορτώσεις δεδομένων από την μνήμη Μειώνεται (ιδανικά εξαλείφεται) ο αριθμός «ενδιάμεσων» αποθηκεύσεων στην μνήμη Η καλή χρήση κρυφής μνήμης είναι διπλά σημαντική για την επίτευξη καλής απόδοσης μειώνει την καθυστέρηση φόρτωσης/αποθήκευσης μειώνει την κίνηση πάνω από το bus/interconnect ΙΙΙ 3 lalis@inf.uth.gr

CPU CPU CPU memory system cache cache cache main memory bus fast slow very slow external memory ΙΙΙ 4 lalis@inf.uth.gr

Μοντέλο προσπέλασης μνήμης Η μνήμη ως «ανεξάρτητο» υποσύστημα Προσφέρει «υπηρεσίες» αποθήκευσης Η αλληλεπίδραση γίνεται μέσα από τις λειτουργίες πρόσβασης για διάβασμα/γράψιμο της μνήμης Φόρτωμα/Διάβασμα (load): αίτηση προς την μνήμη, και απάντηση (με την τιμή) από την μνήμη Αποθήκευση/Γράψιμο (store): αίτηση της CPU προς την μνήμη θεωρούμε ότι δεν αποτυγχάνει Οι λειτουργίες θεωρούνται ατομικές ΙΙΙ 5 lalis@inf.uth.gr

Βασικά προβλήματα Memory consistency Οι σειρά με την οποία αλλάζουν τα περιεχόμενα της μνήμης δεν είναι δεδομένη / προφανής Σημασία έχει και η σειρά με την οποία μεταδίδονται αλλαγές που γίνονται σε διαφορετικές μεταβλητές Cache coherence Η συνέπεια των «αντιγράφων» των δεδομένων που βρίσκονται μέσα στο σύστημα της μνήμης της δεν είναι δεδομένη / προφανής Σημασία έχει το αν και πως μεταδίδονται οι αλλαγές που γίνονται σε μεμονωμένες μεταβλητές ΙΙΙ 6 lalis@inf.uth.gr

Πρόβλημα συνέπειας κρυφής μνήμης program view P1 tmp=a; a=tmp+1; load store variable a load store P2 tmp=a; a=tmp+2; hardware view CPU Main Memory CPU memory system a cache a a cache bus ΙΙΙ 7 lalis@inf.uth.gr

Στόχοι cache coherence Single Writer Multiple Reader (SWMR) invariant: για κάθε διεύθυνση μνήμης Α, ανά πάσα (λογική) στιγμή, είτε το πολύ μια CPU μπορεί να γράψει-διαβάσει την θέση Α, είτε μια ή περισσότερες CPU μπορούν (μόνο) να διαβάσουν την Α Value invariant: η τιμή που αντιστοιχεί στην διεύθυνση μνήμης Α στην αρχή μιας «εποχής πρόσβασης» είναι ίδια με αυτήν στο τέλος της πιο πρόσφατης «εποχής γραψίματος-διαβάσματος» Cache controller: ο μηχανισμός που διαχειρίζεται την κρυφή μνήμη και υλοποιεί αυτές τις ιδιότητες ΙΙΙ 8 lalis@inf.uth.gr

Cache & memory controller interactions CPU Memory coherence agnostic stores loads vals Cache Cache Controller LLC/Memory Controller Last Level Cache outgoing coherence requests/replies incoming coherence requests/replies outgoing coherence replies incoming coherence requests bus/interconnect ΙΙΙ 9 lalis@inf.uth.gr

Cache coherence protocol Η CPU ζητά να προσπελάσει μια διεύθυνση μνήμης, είτε για διάβασμα (load) είτε για γράψιμο (store) Αν δεν υπάρχει αντίστοιχη άδεια χρήσης τότε στέλνεται μια αίτηση σε έναν ή περισσότερους cache controllers ή/και τον memory controller Coherence protocol: Το πρωτόκολλο / κανόνες της αλληλεπίδρασης των cache και memory controllers Ορίζεται ως finite state machine Αφορά ολόκληρα memory blocks (cache lines) Υλοποιείται σε hardware ΙΙΙ 10 lalis@inf.uth.gr

Απλό πρωτόκολλο: καταστάσεις Valid (V): το μπλοκ στην cache είναι read-write, πιθανώς dirty και σίγουρα επίκαιρο (το μπλοκ στην μνήμη μπορεί να είναι παλιό) nvalid (): το μπλοκ είτε δεν υπάρχει στην cache είτε δεν είναι εγγυημένα επίκαιρο V*: το μπλοκ έχει ζητηθεί αλλά δεν έχει ληφθεί ακόμα (ενδιάμεση κατάσταση, από Ι προς V) Στην μνήμη, ένα μπλοκ μπορεί να είναι V ή Write-back caches: οι αλλαγές στο μπλοκ μένουν τοπικά γράφονται πίσω στην μνήμη μόνο όταν ένα μπλοκ εξωθείται λόγω έλλειψης χώρου (eviction) ΙΙΙ 11 lalis@inf.uth.gr

Απλό πρωτόκολλο: αλληλεπιδράσεις Μοντέλο επικοινωνίας Totally ordered broadcast: τα μηνύματα φτάνουν σε όλους και με την ίδια σειρά (π.χ., κοινό bus) Atomic requests: μόνο μια αίτηση μπορεί να βρίσκεται καθοδόν ανά πάσα χρονική στιγμή Atomic transactions: η απάντηση σε μια αίτηση στέλνεται άμεσα, χωρίς παρεμβολή άλλης αίτησης Αλληλεπιδράσεις GetD transaction: αίτηση και παραλαβή μπλοκ PutD transaction: αποθήκευση μπλοκ στην μνήμη ΙΙΙ 12 lalis@inf.uth.gr

Διάγραμμα καταστάσεων* *χωρίς ενδιάμεσες καταστάσεις V V o-getd my-putd my-getd GetD PutD Cache Memory ΙΙΙ 13 lalis@inf.uth.gr

Cache controller FSM for cache & memory controller CPU Events my transactions Bus Events other transactions states load / store evict my-getd my- my-putd o-getd o- o-putd GetD V* V* stall stall nop V hit PutD+ copy/hit V nop nop nop nop (Α) (Α) (Α) Memory controller Bus Events states GetD PutD+ V ΙΙΙ 14 lalis@inf.uth.gr nop copy V

Ενδεικτικό σενάριο εκτέλεσης cycle Cache CPU1 Cache CPU2 MEM Request on bus on bus nit V 1 load miss; GetD V* 2 GetD (CPU1) 3 nop nop 4 5 copy & hit V nop nop 6 store miss; GetD V* 7 GetD (CPU2) 8 nop nop 9 10 nop copy & hit V nop 11 load miss; GetD V* 12 GetD (CPU1) 13 nop nop 14 15 copy & hit V nop nop 16 evict; Put+ 17 Put (CPU1) 18 nop nop copy V ΙΙΙ 15 lalis@inf.uth.gr

Καλύτερο πρωτόκολλο: καταστάσεις MS Modified (M): Το μπλοκ είναι valid, exclusively owned για read-write, πιθανώς dirty και επίκαιρο (το αντίγραφο στην μνήμη πιθανώς να είναι παλιό) Shared (S): Το μπλοκ είναι valid, αλλά non-exclusive owned για read-only και non-dirty (άλλα caches πιθανώς να έχουν και αυτά αντίγραφα σε S mode) nvalid (Ι): Το μπλοκ δεν μπορεί να χρησιμοποιηθεί, είτε γιατί τα περιεχόμενα δεν υπάρχουν τοπικά, είτε γιατί πιθανώς να μην είναι πλέον επίκαιρα Στην μνήμη, ένα μπλοκ έχει είτε κατάσταση SM (επίκαιρο) είτε κατάσταση (πιθανώς παλιό) Όπως πριν, τo cache είναι write-back ΙΙΙ 16 lalis@inf.uth.gr

Καλύτερο πρωτόκολλο: αλληλεπιδράσεις Μοντέλο επικοινωνίας (όπως πριν) Totally ordered broadcast Atomic requests & transactions Αλληλεπιδράσεις GetS transaction: αίτηση και παραλαβή μπλοκ με άδεια read-only GetΜ transaction: αίτηση και παραλαβή μπλοκ με άδεια read-write PutD transaction: αποθήκευση μπλοκ στην μνήμη ΙΙΙ 17 lalis@inf.uth.gr

Διάγραμμα καταστάσεων* Μ *χωρίς τις αντίστοιχες ενδιάμεσες καταστάσεις o-gets my-getm o-getm my-putd S SΜ o-getm silent my-gets GetM GetS PutD Cache States Memory States ΙΙΙ 18 lalis@inf.uth.gr

FSM for cache controller CPU Events my transactions Bus Events other transactions states load store evict my-gets my-getm my-put my- o-gets o-getm o-put GetS S* GetM M* nop nop nop nop S* stall stall stall nop M* stall stall stall nop copy/hit S copy/hit M (A) (A) (A) (A) (A) (A) S hit GetM SM* nop nop nop SM* hit stall stall nop copy/hit M (A) (A) (A) M hit hit PutD+ S ΙΙΙ 19 lalis@inf.uth.gr

FSM for memory controller Bus Events my transactions states GetS GetM PutD+ nop SM* nop copy SM nop SM* (A) (A) copy SM SM SM nop ΙΙΙ 20 lalis@inf.uth.gr

Παρατηρήσεις Στο GetS transaction, αν το memory δεν έχει την επίκαιρη έκδοση (κάποιο cache είχε πάρει άδεια Μ), υποκλέπτει την μετάδοση ενός μπλοκ ανάμεσα στο cache που είχε άδεια Μ και το cache που λαμβάνει άδεια S έτσι αποκτά πάλι την επίκαιρη έκδοση Αν ένα cache έχει άδεια S, σε περίπτωση eviction ή παραχώρησης άδειας M, «αγνοεί» το μπλοκ χωρίς καμία επικοινωνία με άλλα caches ή το memory Οι αιτήσεις GetS και GetM εξυπηρετούνται από όποιον έχει άδεια M, διαφορετικά από το memory ΙΙΙ 21 lalis@inf.uth.gr

Ενδεικτικό σενάριο εκτέλεσης cycle Cache CPU1 Cache CPU2 MEM Request on bus on bus nit SM 1 load miss; GetS S* 2 GetS (CPU1) 3 nop nop SM 4 5 copy & hit S nop nop 5 store miss; GetM M* 6 GetM (CPU2) 7 nop nop 8 9 nop copy & hit M nop 10 load miss; GetS S* 11 GetS (CPU1) 12 nop S SM* 13 14 copy & hit S nop copy SM 15 evict 16 evict ΙΙΙ 22 lalis@inf.uth.gr

Snooping protocols Τα προηγούμενα πρωτόκολλα βασίζονται στην υπόθεση ότι οι cache & memory controllers βλέπουν κάθε μήνυμα που στέλνεται, ακόμα και όταν το μήνυμα δεν προορίζεται για αυτούς Ονομάζονται και snooping protocols Αυτά τα πρωτόκολλα έχουν πρόβλημα κλιμάκωσης Είναι δύσκολο (και ακριβό) να υλοποιηθούν κανάλια επικοινωνίας totally ordered broadcast για μεγάλο αριθμό πυρήνων/επεξεργαστών Η λύση του κοινού διαύλου περιορίζει την απόδοση, αφού ο δίαυλος γίνεται κεντρικό σημείο συμφόρησης ΙΙΙ 23 lalis@inf.uth.gr

Directory-based protocols Η κατάσταση του συστήματος (ποια caches έχουν πιο μπλοκ σε ποια κατάσταση) καταγράφεται σε ένα κεντρικό σημείο/κατάλογο: directory Ο κατάλογος είναι συνήθως στον memory controller Οι αιτήσεις στέλνονται μόνο στον κατάλογο Ο κατάλογος είτε στέλνει την απάντηση άμεσα είτε προωθεί την αίτηση στον «ιδιοκτήτη» του μπλοκ Η επικοινωνία βασίζεται σε point-to-point ανταλλαγή μηνυμάτων, και μπορεί να γίνει χωρίς να υπάρχει κάποιος κοινός δίαυλος επικοινωνίας (bus) Καλύτερη κλιμάκωση, αλλά μεγαλύτερη καθυστέρηση ΙΙΙ 24 lalis@inf.uth.gr

Απλό directory-based MS protocol GetS transaction memory S/M: στέλνεται το μπλοκ memory Ι: η αίτηση προωθείται στον owner GetM transaction memory M: στέλνεται το μπλοκ memory Ι: η αίτηση προωθείται στον owner memory S: στέλνεται το μπλοκ, και ειδοποιούνται όλοι οι sharers να ακυρώσουν το μπλοκ αναμονή για επιβεβαιώσεις PutS/PutM transaction memory: ακύρωση άδειας / & αποθήκευση μπλοκ ΙΙΙ 25 lalis@inf.uth.gr

Ι S: directory is owner/sharer requestor directory S GetS S/M S S S ΙΙΙ 26 lalis@inf.uth.gr

S: other cache is owner requestor directory owner S GetS S Fwd-GetS M S S S S S ΙΙΙ 27 lalis@inf.uth.gr

M: directory is owner requestor directory M GetM M [acks=0] M M ΙΙΙ 28 lalis@inf.uth.gr

M: other cache is owner requestor directory owner M GetM Fwd-GetM M [acks=0] M M ΙΙΙ 29 lalis@inf.uth.gr

/S M: other caches are sharers requestor directory sharer sharer M S SM GetM S nv [acks=2] S S nv-ack nv-ack M M SM M ΙΙΙ 30 lalis@inf.uth.gr

S : directory may become owner requestor directory S S PutS Put-Ack S S/M* (*) if #sharers = 0 S ΙΙΙ 31 lalis@inf.uth.gr

M : directory becomes owner requestor directory M M PutM+ M Put-Ack M ΙΙΙ 32 lalis@inf.uth.gr

FSM for cache controller load store evict F-GetS F-GetM nv GetS S D GetM M A,D S D stall stall stall stall M A,D stall stall stall stall stall M A stall stall stall stall stall S hit GetM SM A PutS S A SM A,D hit stall stall stall stall SM A hit stall stall stall stall M hit hit PutM, M A M A stall stall stall S A stall stall stall ΙΙΙ 33 lalis@inf.uth.gr A stall stall stall (+d) S (+d) S A A nv-ack nv-ack M A,D nv-ack A Put- Ack nop nop nop Dir/0 cpy/hit S cpy/hit M hit M Dir/N cpy/hit M A hit SM A Ownr cpy/hit S cpy/hit M hit M nv-ack ack--; ack==0 M ack--; ack==0 M ack--; ack==0 M ack--; ack==0 M

FSM for memory controller (directory) GetS GetM PutS PutM+ Ownr PutM+ non-ownr M S Put-Ack Put-Ack share += req; own = req; S share += req; nv to all sharers own = req; Put-Ack share -= req; share==0 M Put-Ack share -= req; Fwd-GetS to own S D share += req; share += own; own = 0; Fwd-GetM to own own = req; Put-Ack Put-Ack,cpy M own = 0; Put-Ack S D stall stall Put-Ack share -= req; Put-Ack share -= req; cpy S ΙΙΙ 34 lalis@inf.uth.gr

Μη ατομικότητα requests/transactions, ξεχωριστά κανάλια επικοινωνίας Μηνύματα διαφορετικού τύπου μπορεί να στέλνονται πάνω από ξεχωριστές συνδέσεις επικοινωνίας Μπορεί να προκύψουν «παράδοξα» φαινόμενα CPU: nv σε κατάσταση S D directory λαμβάνει GetS από την CPU1, και στέλνει στην CPU1 την άδεια S μαζί με τα δεδομένα directory λαμβάνει GetM από την CPU2, και στέλνει nv στην CPU1, που φτάνει πριν τα CPU1: Fwd-GetS σε κατάσταση M A directory λαμβάνει GetM από την CPU1, και στέλνει nv στις CPU με άδεια S, που στέλνουν nv-ack στην CPU1 directory λαμβάνει GetS από την CPU2, και προωθεί στην CPU1 αίτηση Fwd-GetS, που φτάνει πριν τα nv-acks Παρόμοια φαινόμενα υπάρχουν και στο directory ΙΙΙ 35 lalis@inf.uth.gr

Πολλές διαφορετικές υλοποιήσεις Υπάρχουν πολλές παραλλαγές πρωτοκόλλων, τόσο snooping όσο και directory-based Η γενική αρχή είναι να εισάγονται περισσότερες ενδιάμεσες/τελικές καταστάσεις έτσι ώστε να αποφεύγονται τα «περιττά» stalls ή/και μεταδόσεις δεδομένων πάνω από το bus / interconnect Βεβαίως, όσο περισσότερες (ενδιάμεσες) καταστάσεις τόσο μεγαλύτερη η πολυπλοκότητα υλοποίησης ΙΙΙ 36 lalis@inf.uth.gr