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

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

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

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

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

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

1/3/2016 Οργάνωση κοινόχρηστης μνήμης (Ι) Η διασύνδεση επεξεργαστών-μνημών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Parallel Architectures

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

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

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

Ασκήσεις Caches

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

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

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

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

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

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

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

Parallel Architectures

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

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

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

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

Τελική Εξέταση, Απαντήσεις/Λύσεις

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

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

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

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

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

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

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

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

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

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της

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

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

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

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

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

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

Parallel Architectures

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

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

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

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

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

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

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

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

Μεταγωγείς πακέτων (packet switches)

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

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

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

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

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

Εισαγωγή στην Πληροφορική

Cach O p i timisati tions

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

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

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

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

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

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

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

Max Planck Institute for Software Systems (MPI-SWS)

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ

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

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

Transcript:

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

Πολυεπεξεργαστές κοινής μνήμης Ανεξάρτητοι επεξεργαστές & Κοινές μνήμες Σα πολυπύρηνα συστήματα είναι πολλοί πυρήνες που μοιράζονται την ίδια κύρια μνήμη Διασύνδεση επεξεργαστών μνημών: δίαυλος δίκτυο διακοπτών Στα πολυπύρηνα υπάρχει ιεραρχία από διαμοιραζόμενες μνήμες (caches) Λανθάνουσες μνήμες (caches) και συνοχή Πρωτόκολλα παρακολούθησης Πρωτόκολλα καταλόγων 2

Βασική οργάνωση ΕΠ 1 ΕΠ 2 ΕΠ Ν ΔΙΚΤΥΟ ΔΙΑΣΥΝΔΕΣΗΣ ΕΠΕΞΕΡΓΑΣΤΩΝ ΜΝΗΜΩΝ Μ 1 Μ 2 Μ Μ Κοινές Μνήμες 3

Διασύνδεση με δίκτυο κοινού μέσου, system bus Γραμμές δεδομένων, διευθύνσεων και ελέγχου ΕΠ 1 ΕΠ 2 ΕΠ Ν ΜΝΗΜΗ System / backplane bus Ο δίαυλος του συστήματος επάνω στις πλακέτες Το backplane bus συνήθως με εξωτερική καλωδίωση Υψηλές ταχύτητες Πυκνή καλωδίωση (50 300 γραμμές και παραπάνω) Γραμμές δεδομένων Γραμμές διευθύνσεων Γραμμές ελέγχου ΔΙΑΥΛΟΣ (BUS) 4

Δίαυλος Οικονομική λύση, επιτυχημένα εμπορικά SMP (symmetric multiprocessors) Δεν κλιμακώνονται εύκολα σε μεγάλο αριθμό επεξεργαστών Λίγοι επεξεργαστές (2-10 συνήθως) Ο δίαυλος γίνεται το bottleneck Καλωδίωση: Λίγα καλώδια, μικρή ταχύτητα Πολλά καλώδια, δύσκολη κατασκευή Όχι ταυτόχρονη χρήση του μέσου (άρα όχι παράλληλες επικοινωνίες) Χρησιμοποιείται μόνο σε μικρά παράλληλα συστήματα 5

Διακοπτικά δίκτυα

Δίκτυα διακοπτών (switch-based networks) Οι επεξεργαστές / μνήμες αποτελούν εισόδους / εξόδους του δικτύου Το δίκτυο αποτελείται από διακόπτες συνδεδεμένους μεταξύ τους. Οι διακόπτες ΔΕΝ δημιουργούν κίνηση, απλά την προωθούν Δεν υπάρχουν «γειτονικοί» επεξεργαστές/μνήμες. Για να επικοινωνήσουν ένας επεξεργαστής με μία μνήμη πρέπει να γίνει σύνδεση μέσω διακοπτών. 7

Δίκτυα διακοπτών Πρωτοχρησιμοποιήθηκαν στην τηλεφωνία Χρησιμοποιούνται εσωτερικά σε high-performance ethernet / ATM / optical / κλπ. switches (δηλαδή το switch φτιάχνεται από διακοπτικό δίκτυο(!)) Χρησιμοποιούνται σε παράλληλα συστήματα για διασύνδεση επεξεργαστών μεταξύ τους (κατανεμημένη μνήμη) ή για διασύνδεση επεξεργαστών με μνήμες (κοινή μνήμη) Συνήθως αριστερά οι επεξεργαστές («είσοδοι» του δικτύου) και δεξιά οι μνήμες ή πάλι οι επεξεργαστές («έξοδοι» του δικτύου) 8

Διάφορα είδη 1 μεγάλος διακόπτης (crossbar switch) Μία κατηγορία από μόνος του Πολλοί μικρότεροι, διασυνδεδεμένοι μεταξύ τους (multistage networks) Δομημένα (υπάρχει δομημένος τρόπος διασύνδεσης των διακοπτών) Αδόμητα (οι διακόπτες συνδέονται με ακανόνιστο τρόπο παράγοντας ένα εντελώς ασύμμετρο δίκτυο) Π.χ. Myrinet switches μπορούν να συνδεθούν με οποιοδήποτε τρόπο μεταξύ τους. 9

Διασταυρωτικός διακόπτης (crossbar) ΕΠ 1 ΕΠ 2 ΕΠ N Διακόπτης Crossbar Μ 1 Μ 2 Μ M Ν είσοδοι Μ έξοδοι NxM (Ν 2 ) σημεία διασταύρωσης 10

out0 Λειτουργία out1 out2 out3 in0 in1 in2 Οποιαδήποτε είσοδος (επεξεργαστής) επικοινωνεί με οποιαδήποτε έξοδο (μνήμη) κλείνοντας το κατάλληλο διακοπτικό στοιχείο. Αν Ν = Μ, μπορούν ταυτόχρονα όλες οι είσοδοι να είναι συνδεδεμένες με όλες τις εξόδους (κάθε είσοδος με μία διαφορετική έξοδο) Όλες οι δυνατές μεταθέσεις 11

Θέματα ctrl0 out0 ctrl1 out1 ctrl2 out2 ctrl3 out3 Πώς υλοποιείται; in0 in1 in2 Για τετράγωνους (Ν = Μ), το κόστος είναι τάξης Ν 2 Ν 2 διακοπτικά σημεία στο πλέγμα Ν multiplexers, κόστους Θ(N) ο καθένας Αν χρησιμοποιείται ως system interconnect (αντί για δίαυλο), τότε ΚΑΘΕ γραμμή εισόδου / εξόδου θα αποτελείται από εκατοντάδες σήματα / καλώδια (σήματα διευθύνσεων, δεδομένων, ελέγχου). Αδύνατη η κατασκευή για μεγάλο Ν. Μόνο για μικρό # εισόδων / εξόδων (ή μέτριο με λίγα σήματα ανά γραμμή) 12

Πολυεπίπεδα διακοπτικά δίκτυα

Πολυεπίπεδα δίκτυα (multistage interconnection networks - MINS) Πολλαπλά επίπεδα ή στάδια από μικρούς διακόπτες crossbar. Τα στάδια συνδέονται μεταξύ τους Στο πρώτο στάδιο βρίσκονται οι είσοδοι του δικτύου, στο τελευταίο οι έξοδοι Μεγαλύτερες καθυστερήσεις για περισσότερα επίπεδα Μικρότερο κόστος από τον crossbar Τα διάφορα δίκτυα διαφέρουν ανάλογα με την διασύνδεση των σταδίων Θα δούμε το δίκτυο ΔΕΛΤΑ 14

Πράξη shuffle («ανακάτωμα») Πρόκειται για περιστροφή προς τα αριστερά των bits ενός αριθμού Έστω x με βάση το 2 (δυαδικός αριθμός): x = ( x k x k-1 x 1 ) 2 Τότε: Shuffle S(x) = (x k-1 x k-2 x 1,x k ) 2 000 000 001 001 00 00 010 010 01 01 011 011 10 10 100 100 11 11 101 101 110 110 111 111 15

Δυαδικό, συμμετρικό δίκτυο Δέλτα Συμμετρικό γιατί #εισόδων = #εξόδων, Ν = Μ = 2 k Διακόπτες 2x2 k στάδια Shuffle διασύνδεση μεταξύ των σταδίων 0 1 0 0 0 0 1 2 3 1 1 1 2 3 2 k 2 2 k 1 2 k 1 1 2 k 1 1 2 k 1 1 2 k 2 2 k 1 Επίπεδο 1 shuffle Επίπεδο 2 shuffle Επίπεδο k 16

Δυαδικό, συμμετρικό δίκτυο Δέλτα συνέχεια Συμμετρικό γιατί #εισόδων = #εξόδων, Ν = Μ = 2 k Σε κάθε επίπεδο, N γραμμές, διακόπτες 2x2, άρα: N/2 = 2 k-1 διακόπτες ανά στάδιο k στάδια (= log 2 N), άρα: (N/2) log 2 N διακόπτες, δηλαδή Θ(Nlog 2 N) κόστος 0 1 0 0 0 0 1 2 3 1 1 1 2 3 2 k 2 2 k 1 2 k 1 1 2 k 1 1 2 k 1 1 2 k 2 2 k 1 Επίπεδο 1 shuffle Επίπεδο 2 shuffle Επίπεδο k 17

Διακόπτες crossbar 2x2 18

Δίκτυο Δέλτα 2 3 x 2 3 0 0 = 000 2 1 1 = 001 2 2 2 = 010 2 3 3 = 011 2 4 4 = 100 2 5 5 = 101 2 6 6 = 110 2 7 7 = 111 2 19

Διαδρόμηση στο δίκτυο Δέλτα Κατανεμημένος αλγόριθμος Επεξεργαστής x = (x k x k 1 x 1 ) 2 προς μνήμη y = (y k,y k 1 y 1 ) 2. out 1 = (x k x k 1 y k ) 2 in 2 = (x k 1 x 2 y k x k ) 2 out 2 = (x k 1 x 2 y k y k-1 ) 2... in k = (y k y k 1 y 2 x 1 ) 2 out k = (y k y k 1 y 2 y 1 ) 2 Όταν ένας διακόπτης στο επίπεδο i λαμβάνει είσοδο για σύνδεση προς την μνήμη y, την συνδέει με την y k i+1 έξοδό του. 20

Παραδείγματα διαδρόμησης 0 0 = 000 2 0 0 = 000 2 1 1 = 001 2 1 1 = 001 2 2 2 = 010 2 2 2 = 010 2 3 3 = 011 2 3 3 = 011 2 4 4 = 100 2 4 4 = 100 2 5 5 = 101 2 5 5 = 101 2 6 6 = 110 2 6 6 = 110 2 7 7 = 111 2 7 7 = 111 2 21

Μερικά άλλα δίκτυα Γενικό δίκτυο Δέλτα Δίκτυο Omega Δίκτυο baseline Δίκτυο butterfly Δίκτυο Benes Δίκτυο fat tree 22

Γενικό, συμμετρικό δίκτυο Δέλτα Συμμετρικό γιατί #εισόδων = #εξόδων, Ν = Μ = a k Διακόπτες axa k στάδια a-shuffle διασύνδεση μεταξύ των σταδίων 0 1 a 1 a a 0 a a 0 a a 0 0 1 a 1 a a+1 2a 1 a a 1 a a 1 a a 1 a a+1 2a 1 a k a a k 1 a a a k 1 1 a a a k 1 1 a a a k 1 1 a k a a k 1 Επίπεδο 1 a-shuffle Επίπεδο 2 a-shuffle Επίπεδο k 23

Δίκτυο Ωμέγα 0 1 2 2 0 2 2 0 2 2 0 0 1 3 2 2 2 1 2 2 1 2 2 1 2 3 2 k 2 2 k 1 2 2 2 k 1 1 2 2 2 k 1 1 2 2 2 k 1 1 2 k 2 2 k 1 2-shuffle Επίπεδο 1 2-shuffle Επίπεδο 2 2-shuffle Επίπεδο k 24

Δίκτυο baseline 0 1 2 3 0 1 Baseline (Ν/2) (Ν/2) Baseline 0 1 2 3 Ν/2 1 Ν/2 Baseline 2 2 Ν 2 Ν 1 Ν/2 1 Inverse shuffle* (Ν/2) (Ν/2) Ν 2 Ν 1 0 1 Baseline 4 4 Γενική δομή του δικτύου baseline N N 25

Δίκτυο πεταλούδας 26

Διαδρόμηση στο δίκτυο πεταλούδας 27

Δίκτυο Benes Δύο πεταλούδες πλάτη με πλάτη Πολλαπλά μονοπάτια 28

Μεταθέσεις και εμποδιστικότητα Υποθέστε συμμετρικό δίκτυο (Μ = Ν) και ότι όλοι οι επεξεργαστές θέλουν να συνδεθούν με διαφορετικές μνήμες ο καθένας. Θέλουμε καθένας από τους επεξεργαστές { 0, 1,, Ν 1 } να συνδεθεί με μία διαφορετική από τις { 0, 1,, Ν 1 } μνήμες Άρα αντιστοίχιση 1-προς-1 από το σύνολο { 0, 1,, Ν 1 } στο σύνολο { 0, 1,, Ν 1 } (μετάθεση). Είδαμε όμως ότι ΔΕΝ γίνεται πάντα να συνυπάρχουν ταυτόχρονες συνδέσεις, επομένως το ερώτημα είναι: Ποιες μεταθέσεις επιτρέπονται; 29

Εμποδιστικότητα και είδη δικτύων Πόσες μεταθέσεις επιτρέπει το δίκτυο: Μερικές => ΕΜΠΟΔΙΣΤΙΚΟ (blocking) δίκτυο Δέλτα, Ωμέγα, baseline, πεταλούδα Όλες => ΜΗ-ΕΜΠΟΔΙΣΤΙΚΟ (non-blocking ή universal) δίκτυο Μόνο το Closs Το Benes είναι επαναπρογραμματιζόμενο (rearrangeable) Αν και δεν φαίνεται εύκολα, έχει αποδειχθεί ότι τα περισσότερα από τα δίκτυα που είδαμε (Δέλτα, Ωμέγα, baseline, πεταλούδας) είναι ισοδύναμα μεταξύ τους 30

Λανθάνουσες Μνήμες και Συνοχή (cache coherency)

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

(Κάποια από τα) Ζητήματα των 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) 33

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

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

Γενίκευση σε πολλαπλά επίπεδα (ιεραρχία 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 36

Caches σε παράλληλα συστήματα κοινής μνήμης Εκτός του λόγου της «αργής» κύριας μνήμης, είναι απαραίτητες διότι επιπλέον: Υπάρχει συναγωνισμός επεξεργαστών στις κοινές μνήμες Το δίκτυο σύνδεσης επεξεργαστών-μνημών εισάγει επιπλέον καθυστερήσεις ΕΠ 1 ΕΠ 2 ΕΠ Ν cache cache cache ΔΙΚΤΥΟ ΔΙΑΣΥΝΔΕΣΗΣ ΕΠΕΞΕΡΓΑΣΤΩΝ ΜΝΗΜΩΝ Μ 1 Μ 2 Μ Μ 37

Το πρόβλημα Πρόβλημα συνοχής εφόσον κάποιος μπορεί να τροποποιήσει το δικό του αντίγραφο (cache coherence) ΕΠ 1 ΕΠ 2 ΕΠ Ν cache Χ cache Χ cache ΔΙΚΤΥΟ ΔΙΑΣΥΝΔΕΣΗΣ ΕΠΕΞΕΡΓΑΣΤΩΝ ΜΝΗΜΩΝ Χ Μ 1 Μ 2 Μ Μ 38

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

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

Πρωτόκολλο εγγραφής-ακύρωσης με διεγγραφή Κάθε δεδομένο, σε κάθε cache είναι σε μία από δύο καταστάσεις R BusRead W BusWrite R W BusWrite Άκυρο Έγκυρο R, W R W Μεταβάσεις λόγω αιτήσεων του επεξεργαστή Μεταβάσεις λόγω αιτήσεων που παρατηρούνται στο δίαυλο R W BusWrite W Αίτηση του επεξεργαστή Αίτηση και ενέργεια που προκαλείται Αίτηση παρατηρούμενη στο δίαυλο 41

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

Πρωτόκολλο εγγραφής-ακύρωσης με υστεροεγγραφή (MSI) R R, W R BusWrite (write-back) Τροποποιημένο W BusWrite Κοινό R BusRead R W W Modified W BusWrite Shared Άκυρο Invalid R, W 43

Άλλα πρωτόκολλα παρακολούθησης MESI (Modified/Exclusive/Shared/Invalid) Γνωστό ως πρωτόκολλο Illinois Π.χ. στους Intel Pentium Στην exclusive, η cache έχει το μοναδικό αντίγραφο μη τροποποιημένο (η κύρια μνήμη είναι ενημερωμένη) Γιατί; Απάντηση: για τη συνηθισμένη περίπτωση που διαβάζω μία νέα γραμμή και αμέσως την τροποποιώ (γλιτώνω 1 miss, κερδίζω και στα σειριακά προγράμματα) MOESI (Modified/shared-mOdified/Exclusive/Shared/Invalid) Π.χ. στους AMD Athlon, SUN UltraSparc Η O είναι σαν την S μόνο που η κύρια μνήμη δεν έχει ενημερωθεί. 44

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

Κατανεμημένοι κατάλογοι S P P P Data Block D 1 Μ 1 D M Μ Μ Info Data Πεδία «παρουσίας» στους καταλόγους Κατανεμημένοι κατάλογοι: πλήρεις (full-map directories) περιορισμένοι (limmited directories) αλυσιδωτοί (chained directories) IEEE SCI (Scalable Coherent Interface) ΔΙΚΤΥΟ ΔΙΑΣΥΝΔΕΣΗΣ ΕΠΕΞΕΡΓΑΣΤΩΝ ΜΝΗΜΩΝ (ΔΔΕΜ) Επεξεργαστές 46

Πλήρεις κατάλογοι Κατάλογος Block X σε μία μνήμη Μνήμη Κατάλογος Μνήμη C 0 0 Data C 0 0 Data Cache 1 Cache 2 read X read X 1 Cache 1 Data Cache 2 Data write X 2 Για συστήματα μεσαίου μεγέθους Π.χ. 128 cpus block size / cache line = 64 bytes ποιο το μέγεθος του directory? Για 1024 cpus? Κατάλογος Μνήμη Κατάλογος Μνήμη D 0 1 0 0 Data C 0 0 NewData Cache 1 άκυρο Cache 2 NewData Cache 2 NewData Cache 3 NewData (read X) 3 4 47

Μερικοί κατάλογοι Κατάλογος Μνήμη Κατάλογος Μνήμη C 1 2 Data C 3 2 Data Cache 1 Data Cache 2 Data Cache 3 Cache 1 άκυρο Cache 2 Data Cache 3 Data read X (έξωση) 1 2 Για 1024 cpus block size / cache line = 64 bytes Κ = χώρος για 10 αντίγραφα ποιο το μέγεθος του directory? Κ = 5 είναι αρκετός χώρος για να περιορίσει πολύ τις συχνές εξώσεις. 48

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

Συνέπεια Μνήμης (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, 01, 11 Το πρωτόκολλο συνέπειας (cache coherency) εξασφαλίζει ότι τα αντίγραφα μίας μεταβλητής θα είναι πάντα ενημερωμένα. Αν τροποποιούνται δύο άσχετες μεταξύ τους μεταβλητές; Δεν εξασφαλίζει πώς / πότε / με ποια σειρά γίνονται οι ενημερώσεις τους (κάθε μία θα είναι τελικά ΟΚ αλλά μέχρι να ενημερωθούν τα αντίγραφα της μίας, μπορεί να ενημερώνονται ανεξάρτητα και ταυτόχρονα της άλλης). 51

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

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

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> 54

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. 55

Τι χάνουμε από την 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? ΑΠΑΝΤΗΣΗ: Κανένα πρόβλημα! Ξεχνάμε όμως της ατομικότητα και την ακολουθιακή συνέπεια. 56

Χαλαρά μοντέλα συνέπειας Ξεχνάμε τη σειρά προγράμματος Επιτρέπονται οι προσπελάσεις εκτός σειράς (εφόσον είναι σε διαφορετικές θέσεις μνήμης) Άρα επιτρέπονται τεχνικές 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 57

Π.χ. χαλαρώνοντας τη σειρά W->R (σχετικά «ανώδυνο») Επιτρέπεται ένα επόμενο read να ξεκινήσει πριν από προηγούμενο write Sun SPARC (TSO total store order) Intel Pentium Pro, MMX (PC processor consistency τα write είναι μηατομικά) Εντολές read-modify-write (π.χ. SWAP) επιβάλλουν program order Initially A = flag = 0 Process P1 Process P2 A = 1; flag = 1; 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); 58

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

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