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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Parallel Architectures

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τεχνικές για διαμοιρασμό φορτίου και μακροεντολές Broadcast - Scatter για αποδοτικές πολύ-επεξεργαστικές εφαρμογές

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

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

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

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

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

Parallel Architectures

Max Planck Institute for Software Systems (MPI-SWS)

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

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

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

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

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

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

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

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

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

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

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

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

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

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

Εικονικοποίηση. Αρχιτεκτονική Υπολογιστών 5ο Εξάμηνο,

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

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

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

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

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

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

Θοδωρής Ανδρόνικος Τμήμα Πληροφορικής, Ιόνιο Πανεπιστήμιο

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

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

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

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

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

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

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

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

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Parallel Architectures

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

Parallel Architectures

Μετρικές & Επιδόσεις. Κεφάλαιο V

Εισαγωγικά & Βασικές Έννοιες

Εικονική Μνήμη (1/2)

Εισαγωγικά & Βασικές Έννοιες

Transcript:

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 Πολυπύρηνοι επεξεργαστές, μέρος 2 Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου

Cache coherence & scalability! Τα πρωτόκολλα snoopy απαιτούν επικοινωνία μεταξύ όλων των κρυφών μνημών για κάθε αστοχία δε χρειάζεται μια κεντρική δομή δεδομένων! Αρχικοί παράλληλοι υπολογιστές είχαν κεντρική μοιραζόμενη μνήμη και χωριστές cache λίγο επιπλέον υλικό για snoopy cache coherence! Μεγάλες απαιτήσεις για ρυθμό μεταφοράς δεδομένων από μνήμη και «εσωτερικό» δίκτυο Processor Processor Processor Processor One or more levels of cache One or more levels of cache One or more levels of cache One or more levels of cache Private caches Shared cache Main memory I/O system 2

Αύξηση bandwidth Multicore MP Multicore MP Multicore MP Multicore MP Memory I/O Memory I/O Memory I/O Memory I/O Interconnection network Memory I/O Memory I/O Memory I/O Memory I/O Multicore MP Multicore MP Multicore MP Multicore MP! Κατανέμοντας τη μνήμη! Εκμετάλευση τοπικότητας αναφορών διαχωρισμός «κίνησης» σε τοπική και απομακρυσμένη! Coherence αν κάθε miss εκπέμπεται σε όλες τις caches, το όφελος είναι μικρό 3

Πρωτόκολλα directory! Το directory κρατάει πληροφορίες για τη κατάσταση κάθε cache block ένας κεντρικός κατάλλογος! Μόνο οι cache που έχουν αντίγραφα ενός block χρειάζεται να συμμετέχουν σε ενέργειες σχετικές με τη συνέπεια του block! Απλή υλοποίηση μία καταχώρηση για κάθε block που βρίσκεται στη μνήμη συνολικά: αριθμός block x αριθμός πυρήνων (cache) 4

Μοναδικό directory = bodleneck?! Αν το directory βρισκόταν σε ένα κόμβο του συστήματος θα ήταν προβληματικό (bodleneck) πολλή κίνηση στο δίκτυο για το κόμβο του directory μεγάλος αποθηκευτικός χώρος σε ένα σημείο! Κατανεμημένο directory διαφορετικά block σε διαφορετικές «φέτες» (slices) του directory οι πληροφορίες για κάθε block βρίσκονται σε ένα σταθερό, γνωστό σημείο Memory Directory Multicore processor + caches I/O Memory Directory Multicore processor + caches I/O Memory Directory Interconnection network Multicore processor + caches I/O Memory Directory Directory Directory Directory Directory Multicore processor + caches Memory I/O Memory I/O Memory I/O Memory I/O Multicore processor + caches Multicore processor + caches Multicore processor + caches Multicore processor + caches I/O 5

Καταστάσεις (state) block Κάθε block στο directory μπορεί να είναι σε κατάσταση:! Shared Ενας ή περισσότεροι πυρήνες έχουν αντίγραφο και η μνήμη είναι ενήμερη! Uncached δεν υπάρχει αντίγραφο σε κανένα πυρήνα! Modified μόνο ένας πυρήνας (owner) έχει αντίγραφο. Η μνήμη δέν έχει τη σωστή τιμή Επιπλέον η καταχώρηση περιλαβάνει τις «ταυτότητες» (αριθμοί) των πυρήνων που έχουν αντίγραφα! Τα παραπάνω είναι τα ελάχιστα στοιχεία 6

! Για καλύτερη απόδοση οι cache επίσης κρατούν στοιχεία για τη κατάσταση κάθε block που έχουν ώστε να μη χρειάζεται να συμβουλεύονται το directory για κάθε ενέργεια αν δεν είναι απαραίτητο! Παρόμοιες καταστάσεις με snoopy Modified, Shared, Invalid! Ορολογία: local node ο πυρήνας/κόμβος που κάνει αίτημα home node ο κόμβος όπου βρίσκονται η μνήμη και το directory μιας διεύθυνσης. Υπολογίζεται από τη διεύθυνση remote node ένας κόμβος που έχει αντίγραφο 7

Μηνύματα 8

Διάγραμμα καταστάσεων Fetch invalidate Data write-back Invalid Send write miss message CPU write CPU read Send read miss message CPU read miss Data write-back; read miss Fetch Data write-back Send invalidate message CPU write hit CPU write miss Invalidate Send write miss message CPU read hit Shared (read only) CPU read miss Read miss Read/write miss περιμένουν απάντηση πριν αλλάξουν κατάσταση Το Invalidate message περιμένει μέχρι όλα τα αντίγραφα να έχουν ακυρωθεί πριν αλλάξει κατάσταση Αντικατάσταση block CPU write hit CPU read hit Modified (read/write) CPU write miss Data write-back Write miss 9

Διάγραμμα καταστάσεων directory Uncached Data value reply; Sharers = {P} Read miss Shared (read only) Data write-back Sharers = {} Data value reply; Sharers = {P} Exclusive (read/write) Write miss Read miss Fetch; data value reply; Sharers = Sharers + {P} Invalidate; Sharers = {P}; data value reply Write miss Fetch/invalidate Data value reply Sharers = {P} Write miss Read miss Data value reply Sharers = Sharers + {P} Το Invalidate message προκαλεί τις ίδιες μεταβολές με write miss συχνά ονομάζεται upgrade miss 10

Απλουστεύσεις Υπαρχουν πολύ σημαντικές απλουστεύσεις! Ολες οι πράξεις στο directory και γίνονται αδιαίρετα (atomic)! Η σειρά των μηνυμάτων δεν αλλάζει!... 11

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

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

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

Ακολουθιακή συνέπεια Κάθε πυρήνας εκτελεί προσπελάσεις σύμφωνα με τη σειρά προγράμματος Κάθε προσπέλαση γίνεται αδιαίρετα (atomically): ολοκληρώνεται πρίν ξεκινήσει η επόμενη 15

Παράδειγμα αρχικά a=b=0 Processor 1 1a: a = 1; 1b: b = 2; Processor 2 2a: print b; 2b: print a; Ποιά είναι τα όλα τα επιτρεπόμενα αποτελέσματα (b,a)υποθέτοντας SC;! (0,0), (2,1), (0,1) 16

Ποιές είναι όλες οι δυνατές ακολουθίες εντολών;! 1a, 1b, 2a, 2b: (1,2) 2a, 2b, 1a, 1b: (0,0)! 1a, 1b, 2b, 2a: (1,2) 2a, 2b, 1b, 1a: (0,0)! 1a, 2a, 1b, 2b: (1,0) 2a, 1a, 2b, 1b: (1,0)! 1a, 2a, 2b, 1b: (1,0) 2a, 1a, 1b, 2b: (1,0)! 1a, 2b, 1b, 2a: (1,2) 2a, 1b, 2b, 1a: (0,0)! 1a, 2b, 2a, 1b: (1,0) 2a, 1b, 1a, 2b: (1,0)! 1b, 1a, 2a, 2b: (1,2) 2b, 2a, 1a, 1b: (0,0)! 1b, 1a, 2b, 2a: (1,2) 2b, 2a, 1b, 1a: (0,0)! 1b, 2a, 1a, 2b: (1,2) 2b, 1a, 2a, 1b: (0,0)! 1b, 2a, 2b, 1a: (0,2) 2b, 1a, 1b, 2a: (0,2)! 1b, 2b, 1a, 2a: (0,2) 2b, 1b, 2a, 1a: (0,2)! 1b, 2b, 2a, 1a: (0,2) 2b, 1b, 1a, 2a: (0,2) 17

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

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

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

Παράδειγμα Κόστος write miss:! establish ownership: 50 cycles! Invalidate comple on and acknowledgement: 80 cycles! Issue an invalidate: 10 cycles! 4 cores need to be invalidated Πόσοι κύκλοι χρειάζονται για SC?! Μπορούμε να επικαλύψουμε τα invalida ons! Κόστος: 50 + 4*10+80 = 170 κύκλοι 21

Χαλαρή συνέπεια μνήμης! Γι αυτό τα περισσότερα παράλληλα συστήματα δεν υποστηρίζουν ακολουθιακή συνέπεια αλλά πιο χαλαρά μοντέλα συνέπειας μνήμης (relaxed mem consistency) επιτρέπουν αλλαγές σειράς ή επικαλυπτόμενη εκτέλεση εντολών! Για να μπορεί ο προγραμματιστής να εξασφαλίσει τη σειρά εκτέλεσης υπάρχουν εντολές «φράκτες μνήμης» (fence): οι εντολές πριν το φράκτη πρέπει να ολοκληρωθούν πριν ξεκινήσουν οι εντολές μετά 22

Relaxed Consistency Models! Rules X Y Opera on X must complete before opera on Y is done Sequen al consistency requires:! R W, R R, W R, W W! Relax W R Total store ordering! Relax W W Par al store order! Relax R W and R R Weak ordering and release consistency 23

Συνέπειες για προγραμματισμό! Πολύ λίγοι προγραμματιστές στηρίζονται σε SC οι περισσότεροι χρησιμοποιούν υψηλού επιπέδου συγχρονισμό! Ενα καλά συγχρονισμένο πρόγραμμα προστατεύει τις μοιραζόμενες μεταβλητές του ώστε να μην υπάρχει ανταγωνισμός (race) όταν ανανεώνονται οι τιμές τους υπάρχει όμως ανταγωνισμός για τις μεταβλητές συγχρονισμού! Με αυτές τις συνθήκες, η αλλαγή της σειράς εκτέλεσης εντολών δεν επηρεάζει το παράλληλο πρόγραμμα, αρκεί να εξασφαλίσουμε ότι κατά την είσοδο ή έξοδο από ένα κλείδωμα, οι τιμές έχουν ανανεωθεί παντού στη μνήμη 24

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

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

Cache inclusion! Οι πολυεπεξεργαστές έχουν πολλαπλά επίπεδα κρυφής μνήμης! Ιδιότητα cache inclusion: κάθε γραμμή μιας cache περιέχεται και στη cache του επόμενου επιπέδου π.χ. η L1 είναι υποσύνολο της L2! Εύκολα ελέγχει η L2 αν μια γραμμή υπάρχει στη L1 ώστε να ακυρωθεί! Αλλά πολύς «χαμένος» χώρος... 27

Διατήρηση inclusion - παράδειγμα! Υποθέτουμε 2 επίπεδα κρυφής μνήμης! με ίδιο μέγεθος γραμμής! write- back (write- through ελαφρώς ευκολότερο)! 2- way associa ve! a, a, b γραμμές στη L1 και A, A, B αντίστοιχες γραμμές στη L2 28

Sun/Oracle T1 CMP! Εμφαση σε TLP αντί για ILP 8 cores, κάθε ένας με 4 (hardware) threads! Απλή διοχέτευση 6 σταδίων 2 ο στάδιο επιλέγει thread από 4 ενεργά load, branch penalty είναι 3 κύκλοι Μία μονάδα υπολογισμού floa ng point μοιραζόμενη από όλους τους πυρήνες! Η L2 cache είναι μοιραζόμενη και χωρισμένη σε 4 banks μαζί με το directory L1 είναι write- through! Υπάρχει πλέον Τ5! Οι Τ1, Τ2 υπάρχουν και open source: βλ. opensparc 29

Επιδόσεις! Ιδανικό CPI ανά thread = 4 σε κάθε κύκλο εκτελείται διαφορετικό thread! Ιδανικό CPI ανά πυρήνα = 1 30

Επιδόσεις! Not ready δε σημαίνει ότι ο πυρήνας είναι idle. Πρέπει και τα 4 threads να είναι not- ready 31

Επίδοση MT στη μνήμη! Αύξηση σε miss rate και latency όταν εκτελουνται 4 threads σε σχέση με όταν εκτελείται 1 thread! Η μικρή αύξηση στο latency δείχνει ότι το σύστημα μνήμης έχει αναξιοποίητη ικανότητα 32

Συγκρίσεις απόδοσης! Συχνά σε πολυπύρηνα συστήματα παρουσιάζεται η απόδοση με τη μορφή speedup σε σχέση με τον αριθμό των πυρήνων μπορεί το speedup να αυξάνεται γραμμικά αλλά ο χρόνος εκτέλεσης να είναι μεγαλύτερος ακόμα και σε σχέση με ένα μονοεπεξεργαστή! floa ng- point προγράμματα χωρίς ειδικό hardware έχουν καλό scaling, αλλά η συνολική επίδοση είναι μικρή! Οι αλγόριθμοι που συγκρίνονται έχουν σημασία ένας παράλληλος αλγόριθμος είναι συχνά πιο αργός σε ένα μονο- επεξεργαστή από ένα σειριακό αλγόριθμο 33

Μεταφορά λογισμικού! Απευθείας μεταφορά λογισμικού από μονο- επεξεργαστή σε πολυεπεξεργαστή! Παράδειγμα: Λειτουργικό σύστημα SGI (Unix της MIPS)! Η δομή δεδομένων του page table είχε μία κλειδαριά ώστε οι αλλαγές να γίνονται σωστά από διαφορερικά νήματα του Λ.Σ. Δεν είχε προβλήματα απόδοσης σε μονο- επεξεργαστή Σε πολυ- πύρηνα συστήματα ήταν bodleneck: όλα τα νήματα ξεκινούσαν ταυτόχρονα και αρχικοποιούν πολλές σελίδες μνήμης (σταθερές, global μεταβλητές, ) 34