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



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

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

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

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

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

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

Κατανεμημένα Συστήματα

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

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

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

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

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

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Νήµατα. ιεργασίες και νήµατα Υλοποίηση νηµάτων Ελαφριές διεργασίες Αξιοποίηση νηµάτων. Κατανεµηµένα Συστήµατα 10-1

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 6 : Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Δρ.

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

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

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

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

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

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

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

Caches for Parallel Architectures

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

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

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

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

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

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

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

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

Caches for Parallel Architectures. (Coherence)

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

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ << ΜΕΛΕΤΗ ΤΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CUDA ΚΑΙ ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΡΤΩΝ GPU ΤΗΣ NVIDIA >> Αρ. Μητρώου: 04/2519

Διαχείριση και Επεξεργασία Μεγάλου Όγκου Δεδομένων 19/02/ / 43

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

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

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

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

Κατανεμημένα Συστήματα

ΚΕΦΑΛΑΙΟ 2: Χειρισμός Δεδομένων

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

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

Επιτεύγµατα των Λ.Σ.

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

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

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

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

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

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1

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

Ε-85: Ειδικά Θέµατα Λογισµικού

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

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

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

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

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

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

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

ΑΣΚΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΓΙΑ ΤΗ ΘΕΩΡΙΑ

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

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

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

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

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

Parallel Architectures

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

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

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

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

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

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

Βασίλειος Κοντογιάννης ΠΕ19

Transcript:

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

Μετάβαση στους πολυπύρηνους(1) Απόδοση των µονοεπεξεργαστών 25% ετήσια βελτίωση της απόδοσης από το 1978 έως το 1986 Κυρίως από την εξέλιξη της τεχνολογίας κατασκευής των επεξεργαστών 52% ετήσια βελτίωση της απόδοσης από το 1986 έως το 2003 Κυρίως από την εµφάνιση της αρχιτεκτονικής RISC 22% ετήσια βελτίωση της απόδοσης από το 2003 έως σήµερα Η απόδοση περιορίζεται από: Την κατανάλωση ισχύος (power wall) Τον περιορισµό στην παραλληλία επιπέδου εντολής (ILP wall) Τον λανθάνοντα χρόνο µνήµης (memory wall) 2

Μετάβαση στους πολυπύρηνους(2) 3

Intel Core i7 Πηγή: Intel 4

Ταξινόµηση υπολογιστών (Flynn) SISD - Single Instruction Single Data Μονοεπεξεργαστής MISD - Multiple Instructions Single Data εν υπάρχουν παραδείγµατα SIMD - Single Instruction Multiple Data Πολυεπεξεργαστής (π.χ. vector ή array processor) Παραλληλισµός επιπέδου δεδοµένων MIMD - Multiple Instructions Multiple Data Τυπικοί πολυεπεξεργαστές Χρησιµοποιείται πολυεπεξεργασία (multi-processing) ή πολυνηµάτωση (multi-threading) (παραλληλισµός σε επίπεδο νήµατος) 5

Είδη πολυεπεξεργαστών MIMD Commodity clusters (Συστοιχίες) Κατασκευάζονται από ευρέως διαδεδοµένα στοιχεία υλικού Μικρό κόστος Custom clusters Eιδικές υπολογιστικές πλατφόρµες Οι υπερυπολογιστές Πολυπύρηνοι επεξεργαστές (multi-cores) Πολλαπλοί επεξεργαστές (πυρήνες) σε ένα τσιπ Μοιράζονται κάποιους πόρους (π.χ. µνήµη cache) 6

Single-Chip Multiprocessors (Multicores) Πολυεπεξεργαστές κοινόχρηστης µνήµης Όλοι οι πυρήνες µοιράζονται µια κοινή µνήµη cache µέσα στο τσιπ Οµοιόµορφη προσπέλαση στη κοινόχρηστη cache και στη µνήµη Πηγή: D. Patterson & J. Hennessy: Computer Architecture, 5 th Edition 7

Πολυεπεξεργαστές κατανεµηµένης µνήµης Πηγή: D. Patterson & J. Hennessy: Computer Architecture, 5 th Edition 8

Είδη Παραλληλίας Παραλληλία σε επίπεδο διεργασίας ιεργασίες δροµολογούνται παράλληλα για να εκτελεστούν σε πολλαπλούς επεξεργαστές Παραλληλία σε επίπεδο νηµάτων (Threads) Ένα πρόγραµµα διασπάται σε πολλαπλά νήµατα Ενδείκνυται για πολυεπεξεργαστές κοινόχρηστης µνήµης Παραλληλία σε επίπεδο δεδοµένων Παραλληλία δεδοµένων µέσα σε µοναδικό νήµα Παραλληλία σε επίπεδο εντολής Εντολές εκτελούνται σε πολλαπλές λειτουργικές µονάδες (συναντάται σε επεξεργαστές superscalar) 9

Νήµατα (Threads) Ένα νήµα περιλαµβάνει ένα σύνολο εντολών. Αποτελεί την µικρότερη µονάδα που µπορεί να δροµολογηθεί από το λειτουργικό σύστηµα για να εκτελεστεί Ένα πρόγραµµα/διεργασία περιέχει ένα ή περισσότερα νήµατα, τα οποία µπορούν να εκτελεστούν παράλληλα Κάθε νήµα περιλαµβάνει: Ένα µετρητή προγράµµατος Ένα σύνολο καταχωρητών Μία στοίβα Ένα νήµα µοιράζεται µε άλλα νήµατα που ανήκουν στην ίδια διεργασία το τµήµα κώδικά του, το τµήµα δεδοµένων του 10

Multithreading (Πολυνηµάτωση) Πολυνηµάτωση: εκτελούνται πολλαπλά νήµατα Σε ένα µοναδικό επεξεργαστή η πολυνηµάτωση επιτυγχάνεται µε time division multiplexing: Ο επεξεργαστής εναλλάσσεται µεταξύ νηµάτων KME: Χρόνος thread1 thread2 thread3 Σε ένα πολυεπεξεργαστή η πολυνηµάτωση επιτυγχάνεται µε την εκτέλεση των νηµάτων την ίδια στιγµή, µε κάθε επεξεργαστή να εκτελεί και ένα νήµα 11

Hyper threading (Υπερνηµάτωση) Ένας πυρήνας (core) µε ενσωµατωµένη τεχνολογία hyper threading γίνεται αντιληπτός από το λειτουργικό σύστηµα ως δύο «λογικοί» πυρήνες Οι δύο λογικοί πυρήνες µοιράζονται φυσικές µονάδες επεξεργασίας Η υπερνηµάτωση απαιτεί την ύπαρξη λειτουργικού συστήµατος το οποίο όχι µόνο θα πρέπει να υποστηρίζει πολλαπλούς πυρήνες επεξεργασίας αλλά και να είναι ειδικά σχεδιασµένο να εκµεταλλεύεται τη τεχνολογία αυτή Ένας τετραπύρηνος επεξεργαστής µε τεχνολογία hyper threading εµφανίζεται στο λειτουργικό σύστηµα ως ένας οκταπύρηνος επεξεργαστής 12

Cache coherence problem Το πρόβληµα συνοχής των cache (cache coherence problem) δηµιουργείται από τις τοπικές cache που διαθέτει ο κάθε πυρήνας Αντίγραφα µιας κοινόχρηστης µεταβλητής µπορεί να υπάρχουν σε διαφορετικές cache και στην µνήµη Πώς συγχρονίζονται οι cache µεταξύ τους; Πώς και πότε ενηµερώνεται η κύρια µνήµη; Πώς ξέρουµε ότι αυτό που διαβάσαµε από την cache είναι σωστό; Μεταβλητή Χ στην μνήμη Cache του πυρήνα Α Cache του πυρήνα Β Cache του πυρήνα Γ Ο πυρήνας Α διαβάζει την Χ 2 2 Ο πυρήνας Β διαβάζει την Χ 2 2 2 Ο πυρήνας Α αποθηκεύει το 4 στην Χ 2 4 2 Ο πυρήνας Γ διαβάζει την Χ 2 4 2 2 13

Συνθήκες συνοχής µνήµης (1) Τα συστήµατα µνήµης διαθέτουν συνοχή αν: 1. Η ανάγνωση της θέσης Χ από τον επεξεργαστή P, η οποία ακολουθεί µία εγγραφή της θέσης Χ από τον P, χωρίς να πραγµατοποιείται καµία εγγραφή του Χ από κάποιον άλλο επεξεργαστή στο διάστηµα που µεσολαβεί µεταξύ της εγγραφής και της ανάγνωσης της Χ από τον P, επιστρέφει την τιµή που εγγράφηκε από τον P 2. Η ανάγνωση της θέσης Χ από κάποιον επεξεργαστή, η οποία ακολουθεί µία εγγραφή της θέσης Χ από κάποιον άλλο επεξεργαστή, επιστρέφει, σε περίπτωση που µεταξύ της ανάγνωσης και της εγγραφής µεσολαβεί επαρκής χρόνος και παράλληλα δεν πραγµατοποιείται καµία άλλη εγγραφή της θέσης Χ µεταξύ των δύο προσπελάσεων, την εγγεγραµµένη τιµή Πηγή: D. Patterson & J. Hennessy: Computer Architecture, 5 th Edition 14

Συνθήκες συνοχής µνήµης (2) Τα συστήµατα µνήµης διαθέτουν συνοχή αν: 3. Οι λειτουργίες εγγραφής της ίδιας θέσης είναι σειριοποιηµένες (serialized): ηλαδή, δύο λειτουργίες εγγραφής της ίδιας θέσης που έχουν πραγµατοποιηθεί από δύο οποιουσδήποτε επεξεργαστές γίνονται αντιληπτές µε την ίδια σειρά για όλους τους επεξεργαστές. Για παράδειγµα, αν οι τιµές 1 και 2 εγγραφούν σε κάποια θέση, τότε οι επεξεργαστές δεν µπορούν ποτέ να διαβάσουν αρχικά την τιµή της θέσης όταν αυτή ισούται µε 2 και στη συνέχεια να διαβάσουν την τιµή 1 Πηγή: D. Patterson & J. Hennessy: Computer Architecture, 5 th Edition 15

Πρωτόκολλα Cache Coherence Τα πρωτόκολλα διατήρησης της συνοχής των πολυεπεξεργαστών ονοµάζονται πρωτόκολλα συνοχής της µνήµης cache (cache coherence protocols) ύο κατηγορίες: Snooping (κατασκοπίας) Κάθε cache διαθέτει πληροφορίες για όλα τα block της κύριας µνήµης που κατέχει, σχετικά µε την κατάσταση κοινής χρήσης των block Κάθε cache παρακολουθεί ένα δίαυλο (bus) για να προσδιορίσει αν έχει ή όχι ένα αντίγραφο κάποιου block που ζητείται Βασιζόµενα σε κατάλογο (directory based) Η πληροφορία για τα κοινόχρηστα block διατηρείται κάπου κεντρικά, σε έναν κατάλογο 16

Πρωτόκολλα κατασκοπίας Εγγραφής και ακύρωσης (write invalidate) Όταν ένας πυρήνας πραγµατοποιεί µια εγγραφή σε κάποιο block, πρέπει να έχει την αποκλειστική πρόσβαση σε αυτό Εξασφαλίζεται µε την ακύρωση όλων των αντιγράφων του block που βρίσκονται σε άλλες cache. Αυτό γίνεται µε την αποστολή σχετικού µηνύµατος µέσω του κοινού διαύλου επικοινωνίας Σε περίπτωση ταυτόχρονης εγγραφής των ίδιων δεδοµένων από δύο πυρήνες, ο ένας κερδίζει τον ανταγωνισµό Εγγραφής και ενηµέρωσης (write update) Όταν ένας πυρήνας πραγµατοποιεί µια εγγραφή σε κάποιο block, ενηµερώνει και όλα τα αντίγραφα του block που βρίσκονται σε άλλες cache Απαιτείται υψηλό εύρος ζώνης αφού εκπέµπονται όλες οι λειτουργίες εγγραφής ε χρησιµοποιείται στους σύγχρονους πολυεπεξεργαστές 17

Πρωτόκολλο εγγραφής και ακύρωσης Ο πυρήνας που πρόκειται να κάνει εγγραφή αποκτά πρόσβαση στον κοινό δίαυλο επικοινωνίας και εκπέµπει τη διεύθυνση που πρόκειται να εγγραφεί µε σκοπό να ακυρωθεί από όσους κατέχουν αντίγραφο Όλοι οι πυρήνες κατασκοπεύουν το δίαυλο παρακολουθώντας τις διευθύνσεις που εκπέµπονται Αν η διεύθυνση που εκπέµπεται βρίσκεται και στην τοπική τους cache τα αντίστοιχα δεδοµένα ακυρώνονται Αν δοκιµάσουν να γράψουν σε κοινόχρηστα block δύο πυρήνες ταυτόχρονα, οι προσπάθειές τους να εκπέµψουν µια ακυρωτική λειτουργία θα µπουν σε σειρά όταν αποκτήσουν την κυριότητα του διαύλου 18

Τι γίνεται σε περίπτωση αστοχίας στην cache (ανάγνωση); Write through caches: Ο εντοπισµός µιας πρόσφατης τιµής ενός στοιχείου δεδοµένων είναι εύκολος αφού, το πρόσφατο τροποποιηµένο block βρίσκεται ταυτόχρονα και στη cache και στη µνήµη Write back caches: Ο εντοπισµός µιας πρόσφατης τιµής ενός στοιχείου δεδοµένων είναι πιο δύσκολος αφού, το πρόσφατο τροποποιηµένο block µπορεί να βρίσκεται µόνο στη cache και όχι και στη µνήµη. Αυτές οι cache παρακολουθούν το δίαυλο και εάν διαπιστώσουν ότι διαθέτουν κάποιο τροποποιηµένο αντίγραφο που ζητείται, τότε παρέχουν αυτό το block και διακόπτεται η περαιτέρω πρόσβαση στη µνήµη Επειδή δεν απαιτούν υψηλό εύρος ζώνης µπορούν να υποστηρίξουν περισσότερους και ταχύτερους επεξεργαστές. Αποτελούν την προσέγγιση που χρησιµοποιείται σήµερα Οι ετικέτες των cache µπορούν να χρησιµοποιηθούν για τη διαδικασία της κατασκοπείας, ενώ το έγκυρο bit (valid bit) κάθε block χρησιµοποιείται για τη διαδικασία της ακύρωσης 19

Υλοποίηση πρωτοκόλλου Κάθε cache περιλαµβάνει έναν ελεγκτή, ο ποίος εκτελεί το πρωτόκολλο συνάφειας έχεται αιτήσεις από τον επεξεργαστή για πρόσβαση στη µνήµη «Κατασκοπεύει» όλες τις «κινήσεις» (transactions) που συµβαίνουν στο κοινόχρηστο µέσο επικοινωνίας (bus ή switch) Μία «κίνηση» είναι σχετική, εάν η διεύθυνσή της συµπίπτει µε κάποια ετικέτα που βρίσκεται στην cache Για κάθε block στην cache λειτουργεί µια µηχανή πεπερασµένων καταστάσεων (Finite State Machine-FSM), όπου η µετάβαση από µια κατάσταση σε κάποιαν άλλη προκαλείται από συγκεκριµένο αίτιο και προκαλεί συγκεκριµένες δράσεις 20

MSI πρωτόκολλο εγγραφής και ακύρωσης Το πρωτόκολλο MSI αποτελεί το ακρωνύµιο των τριών καταστάσεων στις οποίες µπορεί να βρεθεί ένα block στην cache Κάθε block σε µια cache µπορεί να βρίσκεται σε µία από τρεις καταστάσεις: M(modified) Τροποποιηµένο (Exclusive-αποκλειστικό): έχει τροποποιηθεί εντός της cache που βρίσκεται και είναι διαφορετικό από το αντίγραφο που βρίσκεται στην µνήµη. Η cache το στέλνει σε όποιον το ζητήσει για ανάγνωση ή εγγραφή και ενηµερώνει το αντίγραφο στην µνήµη σε περίπτωση αντικατάστασης. Η κατάσταση αυτή υπαινίσσεται ότι το block είναι αποκλειστικό S(shared)-µοιραζόµενο: µοιράζεται (δηλ. είναι το ίδιο) µε άλλα αντίγραφά του που βρίσκονται στην µνήµη ή σε άλλες cache I(invalid)- Άκυρο: δεν περιέχει έγκυρα δεδοµένα και αν χρειαστεί από την cache θα πρέπει να διαβαστεί από την µνήµη ή από άλλη cache 21

Αιτήµατα από τη CPU και από το δίαυλο Πηγή: D. Patterson & J. Hennessy: Computer Architecture, 5 th Edition 22

ιάγραµµα µετάβασης καταστάσεων Με κανονική γραφή: το αίτιο της µετάβασης σε άλλη κατάσταση Με έντονη γραφή: ενέργειες του διαύλου ως αποτέλεσµα της αλλαγής κατάστασης Πηγή: D. Patterson & J. Hennessy: Computer Architecture, 5 th Edition 23

Παράδειγµα(1) 1. To block Α, που περιέχει την µεταβλητή Χ, βρίσκεται στην κατάσταση Invalid στην cache της CPU_1. Η CPU_1 διαβάζει την µεταβλητή Χ: Στέλνει στον δίαυλο το αίτηµα read miss και διαβάζει το block A από τη µνήµη (ή από άλλη cache). Το block Α αλλάζει σε κατάσταση Shared 2. Η CPU_1 διαβάζει την µεταβλητή Χ. Έχουµε Read hit (το block στην κατάσταση Shared είναι το ίδιο µε άλλα αντίγραφά του που βρίσκονται στην µνήµη ή σε άλλες cache) και το block Χ παραµένει στην κατάσταση Shared 3. Η CPU_2 διαβάζει την µεταβλητή Χ: Στέλνει στον δίαυλο το αίτηµα read miss και διαβάζει το block A από τη µνήµη (ή από άλλη cache). Το block Α στην cache της CPU_2 βρίσκεται στην κατάσταση Shared Πηγή: D. Patterson & J. Hennessy: Computer Architecture, 5 th Edition 24

Παράδειγµα(2) 4. Η CPU_1 γράφει στη µεταβλητή Χ: τοποθετεί το αίτηµα write miss στον δίαυλο και το block A αλλάζει σε κατάσταση exclusive ( modified ) 5. Η CPU_2, χρησιµοποιώντας το διάγραµµα του διαύλου, διαβάζει το αίτηµα write miss και αλλάζει το block A που βρίσκεται στην τοπική της cache σε κατάσταση Invalid 6. Η CPU_1 γράφοντας ή διαβάζοντας την µεταβλητή Χ, παραµένει (το block A) στην κατάσταση exclusive ( modified ) 7. Η CPU_2 διαβάζει την µεταβλητή Χ: τοποθετεί στον δίαυλο το αίτηµα read miss. H CPU_1, χρησιµοποιώντας το διάγραµµα του διαύλου, παρέχει το σωστό block A στην CPU_2 και αλλάζει σε κατάσταση Shared. H CPU_2 αλλάζει σε κατάσταση Shared Πηγή: D. Patterson & J. Hennessy: Computer Architecture, 5 th Edition 25

Παράδειγµα πρωτοκόλλου MSI(1) Πυρήνας1 Πυρήνας2 Πυρήνας3 Cache X=10 S Cache Cache BusRead Bus ΜΝΗΜΗ X=10 Ενέργειες πυρήνα Π1 διαβάζειx Κατά/ση Π1 Shared Κατά/ση Π2 --- Κατά/ση Π3 --- Κίνηση στο δίαυλο BusRead Πηγή δεδοµένων Μνήμη 26

Παράδειγµα πρωτοκόλλου MSI(2) Πυρήνας1 Πυρήνας2 Πυρήνας3 Cache Cache Cache X=10 S X=10 S BusRead Bus ΜΝΗΜΗ X=10 Ενέργειες πυρήνα Π1 διαβάζειx Π3 διαβάζειx Κατά/ση Π1 Shared Shared Κατά/ση Π2 --- --- Κατά/ση Π3 --- Shared Κίνηση στο δίαυλο BusRead BusRead Πηγή δεδοµένων Μνήμη Μνήμη 27

Παράδειγµα πρωτοκόλλου MSI(3) Πυρήνας1 Πυρήνας2 Πυρήνας3 Cache Cache Cache ---- I X=-25 M BusReadX Bus ΜΝΗΜΗ X=10 Ενέργειες πυρήνα Π1 διαβάζειx Π3 διαβάζειx Π3 γράφειx Κατά/ση Π1 Shared Shared Invalid Κατά/ση Π2 --- --- --- Κατά/ση Π3 --- Shared Modified Κίνηση στο δίαυλο BusRead BusRead BusReadX Πηγή δεδοµένων Μνήμη Μνήμη Μνήμη 28

Παράδειγµα πρωτοκόλλου MSI(4) Πυρήνας1 Πυρήνας2 Πυρήνας3 Cache Cache Cache X=-25 S X=-25 S BusRead Bus ΜΝΗΜΗ X=-25 Ενέργειες πυρήνα Π1 διαβάζειx Π3 διαβάζειx Π3 γράφειx Π1 διαβάζειx Κατά/ση Π1 Shared Shared Invalid Shared Κατά/ση Π2 --- --- --- --- Κατά/ση Π3 --- Shared Modified Shared Κίνηση στο δίαυλο BusRead BusRead BusReadX BusRead Πηγή δεδοµένων Μνήμη Μνήμη Μνήμη Π3 cache 29

Παράδειγµα πρωτοκόλλου MSI(5) Πυρήνας1 Πυρήνας2 Πυρήνας3 Cache Cache Cache X=-25 S X=-25 S X=-25 S BusRead Bus ΜΝΗΜΗ X=-25 Κατά/ση Π1 Κατά/ση Π2 Κατά/ση Π3 Κίνηση στο δίαυλο Πηγή δεδοµένων Ενέργειες πυρήνα Π1 διαβάζειx Shared --- --- BusRead Μνήμη Π3 διαβάζειx Shared --- Shared BusRead Μνήμη --- Π3 γράφειx Invalid Modified BusReadX Μνήμη Π1 διαβάζειx Shared --- Shared BusRead Π3 cache Π2 διαβάζειx Shared Shared Shared BusRead Μνήμη 30