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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Parallel Architectures

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

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

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

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Front- end: Προσκόμιση, αποκωδικοποίηση, μετονομασία καταχωρητών

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

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

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 3. Διδακτικοί Στόχοι

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

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

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

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

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Πρόβλεψη διακλάδωσης

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

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

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

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

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

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

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

Ασκήσεις Caches

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

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

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

Parallel Architectures

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

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

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

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

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

Πολυνηματικές Αρχιτεκτονικές

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

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

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

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

Transcript:

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

Το σημερινό μάθημα! Cache coherence directory protocols! Memory consistency! MulG- threading 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 3

Αύξηση 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, το όφελος είναι μικρό 4

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

Μοναδικό directory = boileneck?! Αν το directory βρισκόταν σε ένα κόμβο του συστήματος θα ήταν προβληματικό (boileneck) πολλή κίνηση στο δίκτυο για το κόμβο του 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 6

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

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

Μηνύματα 9

Διάγραμμα καταστάσεων 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 10

Διάγραμμα καταστάσεων 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 11

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

Απόδοση κρυφής μνήμης! Το μοιρασμα δεδομένων επηρεάζει την επίδοση του συστήματος μνήμης! Ακυρώσεις γραμμών που οδηγούν σε αστοχίες! Το 4 ο C στις caches Coherence misses (cold/compulsory, capacity, conflict)! True sharing misses 1 η εγγραφή μιας μοιραζόμενης γραμμής πρέπει να ακυρώσει όλα τα άλλα αντίγραφα 1 η ανάγνωση από άλλους πυρήνες είναι miss (το προηγούμενο αντίγραφο ακυρώθηκε) 13

False sharing! Το valid bit ισχύει για ολόκληρη τη γραμμή cache! Αν οι λέξεις που γράφονται/διαβάζονται από διαφορετικούς πυρήνες είναι διαφορετικές έχουμε false sharing και οι γραμμές ακυρώνονται αν και δεν υπάρχει πρόβλημα cache coherence true sharing miss false sharing miss: το Read x2 είχε «υποβιβάσει» το αντίγραφο του P1 σε κατάσταση shared. Σε κάποια πρωτόκολλα αντί για write miss γίνεται upgrade miss, ακυρώνει τη γραμμή σε άλλες cache αλλά δε μεταφέρονται δεδομένα. 14

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

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

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

Παράδειγμα αρχικά 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) 18

Ποιές είναι όλες οι δυνατές ακολουθίες εντολών;! 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) 19

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

Αδιαίρετες εγγραφές! write atomicity! Η σειρά με την οποία μια εγγραφή γίνεται (σε σχέση με την υποθετική σειρά όλων των προσπελάσεων όλων των νημάτων) πρέπει να φαίνεται η ίδια σε όλους τους πυρήνες! Αν κάποιος πυρήνας πάρει μια τιμή που γράφτηκε, τίποτα απ ότι κάνει μετά δεν πρέπει να εμφανιστεί πριν όλοι οι άλλοι πυρήνες δουν την εγγραφή 21

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

Χαλαρή συνέπεια μνήμης! Γι αυτό τα περισσότερα παράλληλα συστήματα δεν υποστηρίζουν ακολουθιακή συνέπεια αλλά πιο χαλαρά μοντέλα συνέπειας μνήμης (relaxed mem consistency) επιτρέπουν αλλαγές σειράς ή επικαλυπτόμενη εκτέλεση εντολών π.χ. total Store order (TSO) - μια read μπορεί να εκτελεστεί πριν από μια προηγούμενη, σύμφωνα με το πρόγραμμα, write! Για να μπορεί ο προγραμματιστής να εξασφαλίσει τη σειρά εκτέλεσης υπάρχουν εντολές «φράκτες μνήμης» (fence): οι εντολές πριν το φράκτη πρέπει να ολοκληρωθούν πριν ξεκινήσουν οι εντολές μετά 23

Relaxed Consistency Models! Rules X Y OperaGon X must complete before operagon Y is done SequenGal consistency requires:! R W, R R, W R, W W! Relax W R Total store ordering! Relax W W ParGal store order! Relax R W and R R Weak ordering and release consistency 24

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

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

MulGthreading! Η καθυστέρηση κυρίως των αστοχιών κρυφής μνήμης είναι πολύ δύσκολο να επικαλυφθεί με χρήσιμη δουλειά Σε πολυεπεξεργαστές οι προσπελάσεις μνήμης έχουν ακόμη μεγαλύτερη καθυστέρηση! Λόγος: δεν υπάρχουν αρκετές ανεξάρτητες εντολές σε υλοποιήσιμες μηχανές! Λύση: εκτέλεση εντολών από άλλα προγράμματα/νήματα 27

Νήμα! Μια ξεχωριστή διεργασία! Εχει τις δικές του εντολές και δεδομένα! Μπορεί να είναι μέρος μιας ομάδας νημάτων ενός παράλληλου προγράμματος ή ένα αυτόνομο πρόγραμμα! Τα Λ.Σ. συχνά διαχωρίζουν τα νήματα από τις διεργασίες τα νήματα είναι «ελαφρότερα»: γρηγορότερες εναλλαγές εκτέλεσης και περιορισμοί στις ιδιότητες! Συχνά τα νήματα μιας διεργασίας μοιράζονται το ίδιο address space 28

Πολυνημάτωση - mulgthreading! Δυνατότητα διαμερισμού των λειτουργικών μονάδων ενός πυρήνα από πολλά νήματα με επικάληψη! Ο πυρήνας πρέπει να έχει άμμεσα διαθέσιμες όλες τις πληροφορίες κατάστασης των νημάτων τιμές καταχωρητών PC Page tables Η μνήμη μοιράζεται μέσω του μηχανισμού της εικονικής μνήμης! Υπάρχουν πολλαπλά αρχεία καταχωρητών, PC,! Η εναλλαγή νημάτων πρέπει να γίνεται γρήγορα σε αντίθεση με εναλλαγή διεργασιών που χρειάζεται 100άδες κύκλους 29

ILP and mulgthreading! Ενας πυρήνας σχεδιασμένος για ILP μπορεί να εκμεταλευτεί παραλληλισμό επιπέδου νήματος με λίγο επιπλέον κόστος! Πολλές μονάδες είναι συχνά σε αδράνεια εξαρτήσεις, πάγωμα διοχέτευσης (π.χ. αστοχία κρυφής μνήμης) μικρός παραλληλισμός επ. εντολής στο εκτελέσιμο πρόγραμμα! Μπορούν εντολές από άλλα νήματα να χρησιμοποιηθούν ως ανεξάρτητες εντολές για να αξιοποιήσουν τις αδρανείς μονάδες; 30

Είδη πολυνημάτωσης! Fine- grain εναλλαγή νήματος σε κάθε κύκλο/εντολή! Long- grain εναλλαγή νήματος μόνο σε μεγάλες καθυστερήσεις, π.χ. αστοχία κρυφής μνήμης! Simultaneous mulg- threading (SMT) ταυτόχρονη εκμετάλευση ILP, TLP εκμετάλευση αδρανών μονάδων από άλλα νήματα με μετονομασία καταχωρητών δεν είναι τόσο δύσκολο να αναμιγνύονται εντολές απο διαφορετικά νήματα ξεχωριστοί πίνακες μετονομασίας δυνατότητα ταυτόχρονου commit εντολών από διαφορετικά νήματα 31

Είδη πολυνημάτωσης Execution slots Superscalar Coarse MT Fine MT SMT Time 32

Πλεο/μειω- νεκτήματα! Fine grain εκμετάλευση ακόμα και μικρών καθυστερήσεων ο χρόνος εκτέλεσης ενός νήματος αυξάνει σημαντικά αφού παρεμβάλονται εντολές άλλων νημάτων επειδή μόνο ένα νήμα εκκινεί εντολές σε ένα κύκλο, μπορεί να μη μπορεί να εκμεταλευτεί πάντα το όλο το «πλάτος» του πυρήνα ακριβό υλικό: κάθε νήμα πρέπει να είναι έτοιμο να εκτελεστεί σε κάθε κύκλο! Coarse grain αν ένα νήμα δεν έχει καθυστερήσεις τρέχει όσο γρήγορα γίνεται μικρές καθυστερήσεις δεν μπορούν να καλυφθούν από εκτέλεση άλλων νημάτων pipeline fill- up cost σε κάθε εναλλαγή 33

Design challenges in SMT! Είναι παραλλαγή της fine- grain πολυνημάτωσης πρέπει να λυθεί το πρόβλημα της καθυστέρησης ενός νήματος Μπορεί να υπάρχουν προτιμώμενα νήματα! Ταυτόχρονη προσκόμιση εντολών για πολλά νήματα πολλαπλοί, ξεχωριστοί buffers τοπικότητα αναφορών χειροτερεύει! Αλλα προβλήματα πίεση για αύξηση κύκλου ρολογιού μεγάλα/πολλαπλά αρχεία καταχωρητών χειρότερη τοπικότητα αναφορών, συγκρούσεις μεταξύ των νημάτων για θέσειςστις κρυφές μνήμες και στο TLB 34

Αλλαγές που χρειάζονται! Ο IBM Power5 πρόσθεσε SMT σε σχέση με τον Power4! Οι αλλαγές που έγιναν είναι: Αύξηση της associagvity της L1 I$ και του ITLB Προσθήκη ξεχωριστών ανά νήμα ουρών load- store Αύξηση του μεγέθους κρυφών μνημών επιπέδων 2, 3 Προσθήκη ξεχωριστών buffers και λογικής προσκόμισης εντολών Αύξηση του αριθμού των καταχωρητών από 152 σε 240 Αύξηση του μεγέθους διαφόρων ουρών εκκίνησης 35

Run- ahead execugon! Βασική ιδέα: χρήση mulg- threading για βελτίωση επίδοσης σειριακής εφαρμογής! Σε ένα L2 miss αποθηκεύεται η κατάσταση του νήματος ξεκινά ένα καινούριο νήμα, ίδιο με το τρέχον, σε κατάσταση run- ahead επιστρέφεται μια ψεύτικη τιμή από τη μνήμη και συνεχίζεται η εκτέλεση Οταν η L2 επιστρέψει τη πραγματική τιμή, συνεχίζει το αρχικό νήμα! Ο στόχος είναι ότι το run- ahead νήμα θα «ζεστάνει» την cache και πιθανόν τον branch predictor 36