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

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

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

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

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

Parallel Architectures

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

Parallel Architectures

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

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

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

Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

Διεργασίες (Processes)

Διάλεξη 8: Πρόβλημα Αμοιβαίου Αποκλεισμού. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Συγχρονισμός Μέρος Α : Κρίσιμο τμήμα και κλειδώματα

Parallel Architectures

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

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

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

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

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

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

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

Locking to ensure serializability

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 9: Αλγόριθμοι Αμοιβαίου Αποκλεισμού με τη χρήση μεταβλητών Ανάγνωσης/Εγγραφής. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Εισαγωγή στα Λειτουργικά Συστήματα

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

Παράδειγµα: Προσοµοίωση µιας ουράς FIFO Οι λειτουργίες που υποστηρίζονται από µια ουρά FIFO είναι: [enq(q,x), ack(q)] [deq(q), return(q,x)] όπου x είν

Συστήματα Διαχείρισης Βάσεων Δεδομένων

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

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

Αρχεία και Βάσεις Δεδομένων

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

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

ΚΕΦΑΛΑΙΟ 9. Ταυτόχρονος προγραμματισμός και νήματα. 9.1 Εισαγωγή

ΣυγχρονισµόςσεΣυστήµατα ΠολλαπλώνΝηµάτων

Εισαγωγή στον Προγραμματισμό

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

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

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

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

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

Παράλληλη Επεξεργασία

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

HY-486 Αρχές Κατανεμημένου Υπολογισμού

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Επικοινωνία µεταξύ ιεργασιών και Σύνδροµες ιεργασίες

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

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

Αμοιβαίος αποκλεισμός

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

Ασκήσεις Caches

2.4 Κλασσικά Προβλήματα IPC

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

(C) 2010 Pearson Education, Inc. All rights reserved.

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

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

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

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

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

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

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

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

Instruction Execution Times

Διάλεξη 10: Αλγόριθμοι Αμοιβαίου Αποκλεισμού σε περιβάλλον ανταλλαγής μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

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

Section 8.3 Trigonometric Equations

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

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

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

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

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

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

The challenges of non-stable predicates

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

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

Προσπέλαση σύνθετων δομών δεδομένων χωρίς καθολικό κλείδωμα

Transcript:

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

Synchroniza6on The need for synchronization arises whenever there are concurrent processes in a system (even in a uniprocessor system) producer Producer-Consumer: A consumer process must wait until the producer process has produced data consumer Mutual Exclusion: Ensure that only one process uses a resource at a given time P1 P2 Shared Resource Παράλληλα Συστήματα 2011-2012 2

A Producer- Consumer Example Producer tail head Consumer R tail R tail R head R Producer posting Item x: Load R tail, (tail) Store (R tail ), x R tail =R tail +1 Store (tail), R tail The program is written assuming instructions are executed in order. Consumer: Load R head, (head) spin: Load R tail, (tail) if R head ==R tail goto spin Load R, (R head ) R head =R head +1 Store (head), R head process(r) Παράλληλα Συστήματα 2011-2012 3

Using Memory Fences Producer tail head Consumer R tail R tail R head R Producer posting Item x: Load R tail, (tail) Store (R tail ), x Membar SS R tail =R tail +1 Store (tail), R tail ensures that tail ptr is not updated before x has been stored ensures that R is not loaded before x has been stored Consumer: Load R head, (head) spin: Load R tail, (tail) if R head ==R tail goto spin Membar LL Load R, (R head ) R head =R head +1 Store (head), R head process(r) Παράλληλα Συστήματα 2011-2012 4

Mul6ple Consumer Example Producer tail head Consumer 1 R head R tail R R tail Consumer 2 R head R tail R Producer posting Item x: Load R tail, (tail) Store (R tail ), x R tail =R tail +1 Store (tail), R tail Critical section: Needs to be executed atomically by one consumer locks Consumer: Load R head, (head) spin: Load R tail, (tail) if R head ==R tail goto spin Load R, (R head ) R head =R head +1 Store (head), R head process(r) What is wrong with this code? Παράλληλα Συστήματα 2011-2012 5

Locks or Semaphores E. W. Dijkstra, 1965 A semaphore is a non-negative integer, with the following operations: P(s): if s>0, decrement s by 1, otherwise wait V(s): increment s by 1 and wake up one of the waiting processes P s and V s must be executed atomically, i.e., without interruptions or interleaved accesses to s by other processors Process i P(s) <critical section> V(s) initial value of s determines the maximum no. of processes in the critical section Παράλληλα Συστήματα 2011-2012 6

Blocking vs spinning Τα semaphores είναι χρήσιμα σε επίπεδο διεργασίας του Λ.Σ. αλλά όχι για νήματα Το «πάγωμα» (blocking) δουλεύει χρησιμοποιώντας το σύστημα των διακοπών (interrupts) Αναστέλεται η εκτέλεση της διεργασίας και ξαναξεκινά να είναι διαθέσιμη για εκτέλεση όταν ο μετρητής είναι > 0 Οι κλήσεις Λ.Σ. και οι διακοπές είναι αργές Για νήματα, γενικά χρησιμοποιούμε busy- wai6ng (spinning) συνεχής έλεγχος μιας μεταβλητής (στη μνήμη) μέχρι να έχει την κατάλληλη τιμή Παράλληλα Συστήματα 2011-2012 7

Υλοποίηση lock 1 η απόπειρα Κλείδωμα: lock: ld r, location cmp r, #0 bnz lock st location, #1 Ξεκλείδωμα: st location, #0 Προβλήματα; Παράλληλα Συστήματα 2011-2012 8

Υλοποίηση Locks Θεωρητικά μπορούν να υλοποιηθούν με απλές load, store αλλά η υλοποίηση είναι δύσκολη Οι περισσότερες αρχιτεκτονικές διαθέτουν ειδικές εντολές που εκτελούν αδιαίρετα ανάγνωση και εγγραφή (atomic read- modify- write) δεν παρεμβάλεται καμία άλλη προσπέλαση στη μνήμη μέχρι να ολοκληρωθεί η εντολή Test&Set (m), R: R M[m]; if R==0 then M[m] 1; Fetch&Add (m), R V, R: R M[m]; M[m] R + R V ; Swap (m), R: R t M[m]; M[m] R; R R t ; m θέση µνήµης, R καταχωρητής Παράλληλα Συστήματα 2011-2012 9

Mul6ple Consumers Example using the Test&Set Instruc<on P: Test&Set (mutex),r temp if (R temp!=0) goto P Load R head, (head) spin: Load R tail, (tail) if R head ==R tail goto spin Load R, (R head ) R head =R head +1 Store (head), R head V: Store (mutex),0 process(r) Critical Section Other atomic read-modify-write instructions (Swap, Fetch&Add, etc.) can also implement P s and V s What if the process stops or is swapped out while in the critical section? Παράλληλα Συστήματα 2011-2012 10

Απόδοση κλειδώματος Κάθε εντολή test&set προκαλεί μια εγγραφή στη μνήμη επιπλέον της ανάγνωσης Κάθε έλεγχος είτε το κλειδί είναι ελεύθερο είτε όχι, προκαλεί εγγραφή Οι εγγραφές κοστίζουν πολύ χρειάζονται προσπέλαση στο δίαυλο Το κλειδί θα βρίσκεται στην cache του τελευταίου πυρήνα που το πήρε. Για κάθε test&set, σε κάθε πυρήνα: αστοχία στην τοπική cache, προσπέλαση στο δίαυλο ακύρωση του αντίγραφου στην άλλη cache επανάλληψη αν δεν πήραμε το κλειδί Παράλληλα Συστήματα 2011-2012 11

Υποχώρηση (back- off) Το κύριο πρόβλημα είναι ότι το νήμα προσπαθεί αμέσως μετά την αποτυχία να πάρει το κλειδί όλα τα νήματα κάνουν το ίδιο και υπάρχουν πολλές προσπελάσεις στο δίαυλο Αν προσθέσουμε μια καθυστέρηση, υπάρχει λιγότερος συναγωνισμός και καλύτερη απόδοση Καλή μέθοδος είναι η exponen<al backoff η καθυστέρηση μετά τη πρώτη προσπάθεια είναι k, αυξάνεται εκθετικά σε κάθε επανάλληψη (i): k*c i Παράλληλα Συστήματα 2011-2012 12

Ανάγνωση πριν τον έλεγχο Το άλλο πρόβλημα είναι ότι κάθε έλεγχος προκαλεί εγγραφή Μπορεί ο πυρήνας να διαβάζει μόνο το κλειδί και όταν το βρεί ξεκλείδωτο, τότε να εκτελέσει την test&set λέγεται test & test & set Οσο το κλειδί είναι 1, περιμένει διαβάζοντας τοπικό αντίγραφο στη cache εκτός από την πρώτη φορά που προκαλεί miss Οταν ο άλλος πυρήνας ξεκλειδώσει, κάνει εγγραφή θα προκαλέσει invalida6on και νέο miss στην τοπική cache μεγάλος συναγωνισμός για το κλειδί Παράλληλα Συστήματα 2011-2012 13

Αλλες εντολές συνχρονισμού Αντί για ξεχωριστές πράξεις στο «κλειδί» και στα δεδομένα, μπορεί κανείς να συνδιάσει το κλείδωμα με την πράξη ένα νήμα ολοκληρώνει το cri6cal sec6on λέγονται non- blocking Εντολές αρχιτεκτονικής compare and swap load- reserve (load- link, load- lock) store- condi6onal Παράλληλα Συστήματα 2011-2012 14

Nonblocking Synchroniza6on Compare&Swap(m), R t, R s : if (R t ==M[m]) then M[m]=R s ; R s =R t ; status success; else status fail; status is an implicit argument try: Load R head, (head) spin: Load R tail, (tail) if R head ==R tail goto spin Load R, (R head ) R newhead = R head +1 Compare&Swap(head), R head, R newhead if (status==fail) goto try process(r) Παράλληλα Συστήματα 2011-2012 15

Load- locked & Store- condi6onal Special register(s) to hold reservation flag and address, and the outcome of store-conditional Load-locked R, (m): <flag, adr> <1, m>; R M[m]; Store-conditional (m), R: if <flag, adr> == <1, m> then cancel other procs reservation on m; M[m] R; status succeed; else status fail; try: Load-locked R head, (head) spin: Load R tail, (tail) if R head ==R tail goto spin Load R, (R head ) R head = R head + 1 Store-conditional (head), R head if (status==fail) goto try process(r) Παράλληλα Συστήματα 2011-2012 16

load- locked, store- condi6onal Η εγγραφή γίνεται μόνο όταν η συνθήκη ισχύει δεν γίνονται εγγραφές αν δεν πάρει το κλειδί σύγκριση με test & test & set Μπορεί να χρησιμοποιηθεί για να υλοποιήσει σε λογισμικό διάφορες πράξεις κλειδώματος π.χ. fetch&add και lock- free δομές δεδομένων π.χ. κοινόχρηστος μετρητής/accumulator Οι εντολές μεταξύ ll, sc δεν εκτελούνται αδιαίρετα το ll δεν είναι lock και το sc unlock! Αν το sc πετύχει, ολόκληρη η ακολουθία θεωρείται αδιαίρετη μόνο για εγγραφές στη θέση μνήμης m Παράλληλα Συστήματα 2011-2012 17

Υλοποίηση ll- sc σε υλικό Ο ορισμός των ll,sc προϋποθέτει ένα επιπλέον bit σε κάθε λέξη στη μνήμη τεράστιο κόστος Στην πραγματικότητα κάθε πυρήνας έχει καταχωρητές lock- flag και lock- address για κάθε ll που μπορεί εκρεμεί Οταν εκτελεστεί η ll, θέτει τους καταχωρητές Κάθε ακύρωση (invalida6on) εξετάζει τη lock- address και θέτει το flag στο 0 αν η διεύθυνση ταιριάζει επίσης το flag γίνεται 0 αν η εκτέλεση του νήματος ανασταλεί Αν όταν εκτελεστεί η sc το flag είναι 0, η sc αποτυχαίνει Παράλληλα Συστήματα 2011-2012 18

6cket- lock Δουλεύει παρόμοια με το σύστημα ουράς μιας τράπεζας Κάθε νήμα παίρνει έναν αριθμό- εισητήριο χρησιμοποιώντας αδιαίρετο fetch&increment και περιμένει κοιτώντας το πίνακα που αναφέρει τον αριθμό που εξυπηρετείται κάνοντας απλά load σε μια διεύθυνση Η αδιαίρετη πράξη γίνεται μόνο στην αρχή συνήθως τα νήματα «φτάνουν» σε διαφορετικές χρονικές στιγμές Το ξεκλείδωμα είναι μια εγγραφή τα τοπικά αντίγραφα ακυρώνονται και όλα τα νήματα διαβάζουν την καινούρια τιμή Παράλληλα Συστήματα 2011-2012 19

Array- based lock Κάθε νήμα χρησιμοποιεί αδιαίρετο fetch&increment για να πάρει μια διεύθυνση μνήμης για να κάνει spin κάθε νήμα περιμένει σε διαφορετική διεύθυνση σε χωριστές γραμμές cache για να μην έχουμε false- sharing Ξεκλείδωμα: εγγραφή ειδικής τιμής στην επόμενη διεύθυνση Πλεονέκτημα: μόνο μία cache ακυρώνει τη γραμμή κλειδί κατά το ξεκλείδωμα Πρακτικά θέματα: wrap- around στις διευθύνσεις κλειδιών αν υπάρχουν περισσότερα νήματα από κλειδιά, συναγωνισμός Παράλληλα Συστήματα 2011-2012 20

Συγχρονισμός νημάτων Δύο είδη: συγχρονισμός ένα- προς- ένα (point to point) χρησιμοποιεί locks απευθείας, π.χ. mul6ple consumers καθολικός συγχρονισμός (global) χρησιμοποιεί barrier δεν πρέπει να συγχεόνται με memory fences για επιβολή σειράς μεταξύ προσπελάσεων μνήμης Υλοποίηση barrier: μετρητής αυξάνεται από κάθε νήμα που φτάνει στο barrier κάθε νήμα περιμένει μέχρι ο μετρητής να φτάσει τον αριθμό νημάτων που συμμετέχουν Παράλληλα Συστήματα 2011-2012 21

barrier απόπειρα 1 struct bar_type { int counter; struct lock_type lock; int flag = 0; } bar_name; BARRIER (bar_name, p) { LOCK(bar_name.lock); if (bar_name.counter == 0) bar_name.flag = 0; /* reset flag if first to reach*/ mycount = bar_name.counter++; /* mycount is a private */ UNLOCK(bar_name.lock); if (mycount == p) {/* last to arrive */ bar_name.counter = 0;/* reset counter for next barrier */ bar_name.flag = 1;/* release waiting processes */ } else while (bar_name.flag == 0) ; /* busy wait for release */ } Παράλληλα Συστήματα 2011-2012 22

corner case bug Αν το barrier χρησιμοποιείται όπως παρακάτω: BARRIER(bar1, p); BARRIER(bar1, p); Ενα νήμα μπορεί να κολήσει στο loop περιμένοντας το flag να γίνει 1 και το Λ.Σ. μπορεί να αναστέλει την εκτέλεσή του Αν τα υπόλοιπα συνεχίσουν και μπουν στο 2 ο barrier το πρώτο θα κάνει το flag 0 και το κολημένο νήμα δεν θα βγεί ποτέ από το πρώτο barrier και τα υπόλοιπα θα κολήσουν στο 2 ο περιμένοντας αυτό να νήμα να φτάσει Παράλληλα Συστήματα 2011-2012 23

barrier with sense reversal Χρησιμοποιούμε και τις δύο τιμές για το flag και τα νήματα περιμένουν διαφορετικές τιμές σε συνεχόμενα barrier BARRIER (bar_name, p) { local_sense =!(local_sense); LOCK(bar_name.lock); bar_name.counter++; if (bar_name.counter == p) {/* last to arrive */ UNLOCK(bar_name.lock); bar_name.counter = 0;/* reset counter for next barrier */ bar_name.flag = local_sense;/* release waiting processes */ } else UNLOCK(bar_name.lock); while (bar_name.flag!= local_sense) ; /* busy wait for release */ } Παράλληλα Συστήματα 2011-2012 24

Συνχρονισμός - περίληψη Αμοιβαίος αποκλεισμός (mutual exclusion) Καθολικός συγχρονισμός (Barriers) χρησιμοποιεί locks όπως και το mutex Απόδοση: πόσο γρήγορα μπορεί ένα νήμα να πάρει το κλειδί (όταν υπάρχει συναγωνισμός, όταν δεν υπάρχει) Αποφυγή deadlock, livelock Fairness, aποφυγή starva6on Αποφυγή lock- free δομές δεδομένων Παράλληλα Συστήματα 2011-2012 25

Πολλαπλά επίπεδα cache CPU CPU CPU CPU L1 $ L1 $ L1 $ L1 $ L2 $ L2 $ L2 $ L2 $ Snooper Snooper Snooper Snooper Οι σύνχρονοι πυρήνες έχουν πολλαπλά επίπεδα κρυφής μνήμης Συνήθως 2-3 επίπεδα ανά πυρήνα μέσα στο Ο.Κ. του επεξεργαστή Πώς δουλεύει το snooping με πολλαπλά επίπεδα cache; Αλλαγές από τον πυρήνα στο πρώτο επίπεδο δεν γίνονται ορατές από το ελεγκτή του τελευταίου επιπέδου που είναι υπεύθυνος για το snooping Παράλληλα Συστήματα 2011-2012 26

Cache inclusion Ιδιότητα της κρυφής μνήμης που διευκολύνει το πρόβλημα snooping σε caches πολλαπλών επιπέδων Κάθε γραμμή της cache επιπέδου i, πρέπει να βρίσκεται και στην cache επιπέδου i+1 Η διατήρηση της ιδιότητας δεν είναι τόσο απλή... Το κόστος δεν είναι αμελητέο: η πραγματική χωρητικότητα των cache υψηλού επιπέδου μειώνεται, άρα έχουν χαμηλότερο hit rate Παράλληλα Συστήματα 2011-2012 27

Διατήρηση cache inclusion Προβληματική για τους ακόλουθους λόγους: Προσπελάσεις από τον πυρήνα αλλάζουν το 1 ο επίπεδο και προκαλούν αντικαταστάσεις γραμμών Προσπελάσεις στο δίαυλο προκαλούν αλλαγή κατάστασης ή flush γραμμών του τελευταίου επιπέδου Αν μια γραμμή είναι σε κατάσταση modified στο επίπεδο i, πρέπει να είναι σε κατάσταση modified (ή παρόμοια) στο επίπεδο i+1 Παράδειγμα: 2 επίπεδα, ίδιο μέγεθος γραμμής, LRU πολιτική αντικατάστασης, L1 2way, L2 4way Παράλληλα Συστήματα 2011-2012 28

Υλοποίηση inclusion Υποθέτουμε 2 επίπεδα cache Για κάθε γραμμή της L2 που αντικαθίσταται, ο ελεγκτής της L2 στέλνει μήνυμα στην L1 για ακύρωση ή flush (αν είναι αλλαγμένη) των αντίστοιχων γραμμών της L1 H L2 μπορεί να έχει διαφορετικό (μεγαλύτερο) μέγεθος γραμμής από την L1 Παρόμοια για ακυρώσεις γραμμών της L2 Αν υπάρχουν πολλές L1 πάνω από μία L2; π.χ. χωριστές L1 caches για εντολές, δεδομένα Μηνύματα σε όλες (αν δεν εχουν τη γραμμή, δεν κάνουν τίποτα) Επιπλέον πληροφορία στην L2 για τις L1 που έχουν αντίγραφο της γραμμής Παράλληλα Συστήματα 2011-2012 29

Υλοποίηση inclusion write hits Σε ένα write hit στην L1, η πληροφορία ότι η γραμμή είναι modified πρέπει να περάσει στην L2 Ορίζεται μια νέα κατάσταση modified- but- stale για τις ενδιάμεσες caches Συμπεριφέρονται ως modified για μηνύματα συνοχής (coherence) από το δίαυλο αλλά επιστρέφει δεδομένα από την L1 όταν ζητείται flush Παράλληλα Συστήματα 2011-2012 30

Λειτουργία inclusive caches Ενα αίτημα από τον πυρήνα προχωράει «προς τα κάτω» (μακριά από τον πυρήνα) μέχρι να βρει μια γραμμή στη cache σε κατάλληλη κατάσταση αναγνώσεις οτιδήποτε εκτός από invalid εγγραφές, read- exclusive modified ή exclusive Αν δεν ικανοποιηθεί το αίτημα μέχρι να φτάσει στην τελευταία cache, προσπέλαση στο δίαυλο Απαντήσεις προχωρούν προς τα πάνω αλλάζοντας τις cache που συναντούν μέχρι να φτάσουν στον πυρήνα απαντήσεις shared κατάσταση shared παντού απαντήσεις read- exclusive κατάσταση modified- but- stale παντού εκτός από την L1, κατάσταση modified (ή exclusive για MESI) Παράλληλα Συστήματα 2011-2012 31

Λειτουργία inclusive caches Αιτήματα από τον δίαυλο: invalida6on, flush, copy- back προχωρούν προς τα πάνω, αλλάζοντας την κατάσταση των γραμμών invalid για αιτήματα invalida6on, flush shared για αιτήματα copy- back Απαντήσεις για αιτήματα flush, copy- back δίνονται από την cache που έχει τη γραμμή σε κατάσταση modified Εκδιώξεις (evic6ons) στέλνουν αίτημα προς τα πάνω ώστε να διατηρηθεί η inclusion (μπορεί να είναι και σε κατάσταση modified) Αν η γραμμή δεν είναι αλλαγμένη (clean), δεν χρειάζεται να ενημερωθεί η ιεραρχία προς τα κάτω Αλλιώς η γραμμή γράφεται στην κάτω cache και αλλάζει η κατάστασή σε modified Παράλληλα Συστήματα 2011-2012 32

Μοιραζόμενες caches Πιο συνηθισμένη ιεραρχία μνήμης σε CMPs σήμερα Πολλαπλά επίπεδα συνοχής μνήμης Η μοιρασμένη L2 κρατά σε συνοχή τις L1 που βρίσκονται ψηλότερα Αλλο επίπεδο συνοχής για τις L2, κτλ Παράλληλα Συστήματα 2011-2012 33

Πλεονεκτήματα Η μοιρασμένη cache διευκολύνει την ανταλλαγή δεδομένων μεταξύ νημάτων που τρέχουν στους πυρήνες που τη μοιράζονται Σαν κοινόχρηστη κύρια μνήμη, αλλά ταχύτερη Αν οι πυρήνες τρέχουν ανεξάρτητα προγράμματατα (mul6- programming) και ένα από αυτά χρειάζεται περισσότερη cache απ ότι του αναλογεί, μπορεί να το κάνει σε συναγωνισμό με τους υπόλοιπους φυσικά Παράλληλα Συστήματα 2011-2012 34

Διατήρηση συνοχής Κάθε γραμμή κρατά πληροφορίες για τα «αδέλφια» της και τα «παιδιά» της (προς τους πυρήνες) Πληροφορίες για τα αδέλφια: έχει κανείς αντίγραφο; shared μπορεί να υπάρχουν και άλλα αντίγραφα exclusive έχω το μοναδικό αντίγραφο (ίσως και modified) όπως οι caches πάνω από δίαυλο Πληροφορίες για τα παιδιά: έχω δώσει αυτή τη γραμμή σε κάποιο παιδί; W(core_id) η μοναδική cache που έχει αντίγραφο. Το δικό μου αντίγραφο θεωρείται stale (modified- but- stale) R(list of core_ids) κατάλογος cache που έχει αντίγραφο Παράλληλα Συστήματα 2011-2012 35

Ασκηση 3 Αλγόριθμοι αντικατάστασης Ο αλγόριθμος LRU έχει προβλήματα σε επιπέδα cache > 1 Υλοποίηση αλγορίθμου SRRIP (sta6c re- reference interval predic6on) άρθρο Jaleel et al ISCA 10 Re- reference interval χρόνος μεταξύ προσπελάσεων γραμμής κρυφής μνήμης όσο μικρότερος τόσο πιο σημαντική είναι η γραμμή για την cache δεν είναι γνωστός από πρίν, πρέπει να τον μαντέψουμε ο LRU υποθέτει ότι κάθε καινούρια γραμμή στην cache (και μετά από κάθε προσπέλαση) το RRI της γραμμής θα είναι το μικρότερο του set Ο SRRIP επιτρέπει διαχωρισμό του RRI για καινούριες γραμμές και προσπελάσεις παλιώτερων Παράλληλα Συστήματα 2011-2012 36