Max Planck Institute for Software Systems (MPI-SWS)



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

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

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

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

Parallel Architectures

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

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

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

Parallel Architectures

Parallel Architectures

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

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

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

at 3 at 13 (r1=1 r2=1)

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

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

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης

Διάλεξη 13: Κατανεμημένη Κοινόχρηστη Μνήμη. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

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

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

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

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

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

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

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

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

Τέτοιες λειτουργίες γίνονται διαμέσου του

Προγραμματισμός Ι (HY120)

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

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Θέματα Μεταγλωττιστών

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

ΕΠΑ.Λ ΧΡΥΣΟΥΠΟΛΗΣ Γ Πληροφορική Προγραµµατισµός Υπολογιστών Κεφάλαιο 9 Σηµειώσεις 03. Εντολή Εκχώρησης - Αντικατάστασης

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

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

Αρχιτεκτονική Λογισμικού

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

Οδηγίες για την Διαδικασία αποθήκευσης στοιχείων ελέγχου πινάκων για επίλυση θέματος Οριοθέτησης.

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ

Οντοκεντρικός Προγραμματισμός

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Pascal, απλοί τύποι, τελεστές και εκφράσεις

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

Πρόβλημα 37 / σελίδα 207

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης

Ασφαλή Συστήματα Μέθοδοι ελέγχου και εξακρίβωσης ορθής λειτουργίας

Λογικός Προγραμματισμός

Έλεγχος Ταυτοχρονισμού

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 18: Διαδικασία Σχεδίασης Ψηφιακών Συστηµάτων - Επανάληψη

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

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

Ανάλυση της Ορθότητας Προγραμμάτων

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

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

Θέματα στη Μοντελοποίηση Συστημάτων

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

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

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

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

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

Δομημένος Προγραμματισμός

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

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009)

Συστήματα Γνώσης. Θεωρητικό Κομμάτι Μαθήματος Ενότητα 2: Βασικές Αρχές Αναπαράστασης Γνώσης και Συλλογιστικής

Ιδιοκτησία Αντικειµένου

Αποµακρυσµένη κλήση διαδικασιών

Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ. Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ;

ΗΥ Λογική. Διδάσκων: Δημήτρης Πλεξουσάκης Καθηγητής

Γενικά (για τις γραπτές εξετάσεις)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Ενότητα 1: Εισαγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών

Το «κλειστό» σύστημα. Ανοικτές επικοινωνίες... Εισαγωγή στην Τεχνολογία της Πληροφορικής. Εισαγωγή στην τεχνολογία της πληροφορικής

Μεταγλωττιστές Βελτιστοποίηση

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση

Χρονισμός και Απόδοση Υπολογιστικών Συστημάτων

Παράλληλη Επεξεργασία Κεφάλαιο 5 Μοίρασμα Δεδομένων

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

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

καλών σχεσιακών σχημάτων

1.1 ΑΣΚΗΣΗ ΛΥΣΗ 2.1 ΑΣΚΗΣΗ ΛΥΣΗ 3.1 ΑΣΚΗΣΗ

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Μεταγλωττιστές Βελτιστοποίηση

Transcript:

Μια ταπεινή προσπάθεια κατανόησης του χαλαρού μοντέλου μνήμης της C/C++ Βίκτωρ Βαφειάδης Max Planck Institute for Software Systems (MPI-SWS)

Σημασιολογία των παράλληλων προγραμμάτων Μοντέλα μνήμης (memory model) Ορίζουν τη σημασιολογία της ταυτόχρονης χρήσης μεταβλητών από διαφορετικά νήματα. Σειριακή συμφωνία (sequential consistency) Διαστρωμάτωση (interleaving) των νημάτων Ολική διάταξη των ατομικών πράξεων Χαλαρή συμφωνία (relaxed consistency) Μερική διάταξη των ατομικών πράξεων Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 2/14

Τρόποι κατανόησης των χαλαρών μοντέλων μνήμης 1 Καθαυτός ορισμός του μοντέλου Λειτουργικός (π.χ. x86-tso) Αξιωματικός (π.χ. C/C++) 2 Λειτουργία του μεταγλωττιστή (compiler) Μετατροπές που μπορεί να επιφέρει 3 Παραδείγματα προγραμμάτων 4 Μέθοδοι επαλήθευσης προγραμμάτων Γενικά θεωρήματα Προγραμματικές λογικές (program logics) Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 3/14

Το μοντέλο μνήμης x86-tso cpu 1... cpu n write read... write-back Μνήμη Αρχικά x = y = 0. x := 1; print(y); y := 1; print(x); Ο εικονιζόμενος κώδικας μπορεί να τυπώσει 00. Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 4/14

Το μοντέλο μνήμης της C11 Δύο τύποι μεταβλητών: κανονικές και ατομικές Ταυτόχρονη προσπέλαση κανονικής μεταβλητής (race) σφάλμα προγράμματος Διάφορα είδη ατομικών προσπελάσεων Relaxed no fence Consume reads no fence Release writes no fence (x86); lwsync(power) Acquire reads no fence (x86); isync(power) Seq. consistent full memory fence Εξήγηση των acquire/release προσπελάσεων Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 5/14

Αποστολή μηνύματος στη C11 atomic_int x = 0; int a = 0; ( a = 7; if (x.load(acquire) == 1) ) x.store(1, release); print(a); W na (a, 7) sb W rel (x, 1) sb sb W na (x, 0) sb W na (a, 0) rf, sw rf sb R acq (x, 1) sb R na (a,?) sb happens-before def = (sequenced-before sync-with) + sync-with(a, b) def = reads-from(b) = a release(a) acquire(b) Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 6/14

Data race freedom Ολα τα φυσιολογικά μοντέλα μνήμης έχουν την ιδιότητα DRF: Theorem (DRF-property) Αν Prg SC δεν περιέχει data races, τότε Prg Relaxed = Prg SC. Προγραμματικές λογικές που αποκλείουν data races είναι προφανώς ορθές. Δυστυχώς το θεώρημα αυτό δεν ισχύει στη C11 Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 7/14

Διαχωριστική λογική (separation logic) Ιδιοκτησία (ownership) {P} C {Q} Για την προσπέλαση μιας κανονικής διεύθυνσης μνήμης, πρέπει να μας ανήκει: {l v} [l] na := v {l v } {l v} x := [l] na {l v x = v} Η ιδιοκτησία είναι αποκλειστική: {P 1 } C 1 {Q 1 } {P 2 } C 2 {Q 2 } {P 1 P 2 } C 1 C 2 {Q 1 Q 2 } Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 8/14

Χαλαρή διαχωριστική λογική (relaxed separation logic) Επιτρέπεται η μεταβίβαση ιδιοκτησίας μέσω συγχρονισμού acq/rel. Atomic allocation επιλογή invariant Q {true} x := alloc() {Wri(x, Q) Read(x, Q)} Release write παράδοση ιδιοκτησίας {Q(v) Wri(l, Q)} [l] rel := v {true} Acquire read απόκτηση ιδιοκτησίας {Read(l, Q)} x := [l] acq {Q(x)} Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 9/14

Τεχνικές δυσκολίες Δεν έχουμε λειτουργική σημασιολογία = Βασιζόμαστε στην αξιωματική σημασιολογία Λείπει η συνήθης απόλυτη έννοια του χρόνου και της κατάστασης (state) = Ορίζουμε μια λογική έννοια κατάστασης = Αναγράφουμε λογικές καταστάσεις στις ακμές hb {P} C {Q} Ορθαπόδειξη στην Coq Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 10/14

Σφάλματα στο τυπικό μοντέλο της C11 1 Κύκλοι εξάρτησης (dependency cycles) 2 Ο συγχρονισμός release & acquire παραείναι χαλαρός...... όταν έχουμε αναγνώσεις consume 3 Παράξενη σημασιολογία των SC accesses...... έχουμε και μη-sc accesses 4 Ακολουθίες αποστολής (release sequences) πολύ μικρές Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 11/14

Κύκλοι εξάρτησης (Dependency cycles) Αρχικά x = y = 0. if (x.load(rlx) == 1) y.store(1, rlx); if (y.load(rlx) == 1) x.store(1, rlx); Η C11 επιτρέπει το αποτέλεσμα x = y = 1. Non-relational invariants are unsound. x = 0 y = 0 Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 12/14

Rel-acq παραείναι χαλαρός (τη παρουσία consume) Αρχικά x = y = 0. a = 1; x.store(1, release); while(x.read(consume) 1); y.store(1, release); ( ) while(y.load(acquire) 1); ( ) a = 2; Η C θεωρεί τις δυο εγγραφές του a ταυτόχρονες. Αλλά δεν είναι Στα x86-tso, Power/ARM, και Itanium. Η αν μεταφέρουμε τις ( ) γραμμές σε νέο νήμα. Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 13/14

Release sequences too strong (relaxed writes) Αρχικά x = y = 0. a = 1; x.store(1, release); x.store(3, relaxed); ( ) x.store(2, relaxed); while(x.read(acquire) 3); a = 2; Η C θεωρεί τις δυο εγγραφές του a ταυτόχρονες. Αλλά αν αφαιρέσουμε την γραμμή ( ), τότε οι δυο εγγραφές δεν θεωρούνται πλέον ταυτόχρονες. Βίκτωρ Βαφειάδης Το χαλαρό μοντέλο μνήμης της C/C++ 14/14