Transactional Memory

Σχετικά έγγραφα
Transactional Memory

Transactional Memory

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

Τεχνικές Βελτιστοποίησης Κώδικα για Πολυεπεξεργαστικές Αρχιτεκτονικές. Υπευθυνος Διδάσκων: Νεκτάριος Κοζύρης. Transactional Memory

Transactional Memory

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

Ειδικά Θζματα Βάςεων Δεδομζνων

Σύγχρονες Προκλήσεις

Μελέτη και Αξιολόγηση του Hardware Transactional Memory για Παραλληλοποίηση Skip Lists

Παρουςίαςθ 2 θσ Άςκθςθσ:

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Ειςαγωγή ςτην πληροφορική

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 6 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Β

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

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

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

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

Οδηγός χρήσης Blackboard Learning System για φοιτητές

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ

Εγχειρίδιο Χριςθσ τθσ διαδικτυακισ εφαρμογισ «Υποβολι και παρακολοφκθςθ τθσ ζγκριςθσ Εκπαιδευτικών Πακζτων»

Σύγχρονες Προκλήσεις

Λ10 Παράλληλος & Κατανεμημένος Προγραμματισμός 2009

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

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 θ Διάλεξθ υγχρονιςμόσ Διεργαςιϊν

Locking to ensure serializability

Parallel Architectures

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 3 ο Εργαςτιριο υγχρονιςμόσ Διεργαςιϊν

Αυτόματη δημιουργία στηλών Αντιστοίχηση νέων λογαριασμών ΦΠΑ

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox

ΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε:

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

Πρόςβαςη και δήλωςη μαθημάτων ςτον Εφδοξο

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε:

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

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

Παρουσίαση 5 ης Άσκησης:

Παρουσίαση 5 ης Άσκησης:

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

Εφαρμογέσ Μικροχπολογιςτών ςτισ Τηλεπικοινωνίεσ. Έλεγχοσ ςειριακήσ θφρασ του 8051 (Serial Port)

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Εισαγωγή Νέου Παγίου

Εγχειρίδιο Χριςθσ: Εφαρμογι Αιτιςεων για τα Εκπαιδευτικά Προγράμματα του Προςωπικοφ των Επιχειριςεων Τροφίμων

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

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Εργαςτιριο 1

Διαδικασία Δημιοσργίας Ειδικών Λογαριασμών. (v.1.0.7)

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 6: Το γραφικό περιβάλλον Επικοινωνίασ (Γ.Π.Ε)

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

Σφςτημα Κεντρικήσ Υποςτήριξησ τησ Πρακτικήσ Άςκηςησ Φοιτητών ΑΕΙ

Νζεσ Τάςεισ ςτην εκπαιδευτική διαδικαςία: Gamification

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

Η πολυνηματική γλώσσα προγραμματισμού Cilk

Δοσοληψίες. Κατανεμημένα Συστήματα

Δομζσ Δεδομζνων Πίνακεσ

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

ΘΕΜΑΣΑ ΕΡΓΑΙΩΝ ΓΙΑ ΣΟ ΜΑΘΗΜΑ ΠΡΟΟΜΟΙΩΗ

Σφντομεσ Οδθγίεσ Χριςθσ

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

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

Ειδικά Θζματα Βάςεων Δεδομζνων

Πωσ δημιουργώ μάθημα ςτο e-class του ΠΣΔ [επίπεδο 1]

Εικονικοποίθςθ. Λειτουργικά Συςτιματα Υπολογιςτϊν 6ο Εξάμθνο,

9 ΕΞΑΙΡΕΕΙ - EXCEPTIONS

Δοσοληψίες. Κατανεμημένα Συστήματα

Τμήματα Μνήμησ Υπολογιςμόσ Φυςικών διευθύνςεων. Εκπαιδεφτρια: Μαρία Πολίτθ

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΗ. του ΙΑΣΡΟΦΑΡΜΑΚΕΤΣΙΚΟΤ ΦΑΚΕΛΟΤ ΑΘΕΝΩΝ Για τον ΟΙΚΟ ΝΑΤΣΟΤ ΕΡΓΑΣΗΡΙΑΚΟΙ ΓΙΑΣΡΟΙ. iknowhow Πληροφορική A.E

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 8 θ Διάλεξθ Ιδεατι Μνιμθ Μζροσ Α

PRINCIPLES OF TRANSACTION-ORIENTED DATABASE RECOVERY. Theo Haerder Andreas Reuter. Μαρία Κουτσουλιέρη

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Διάλεξθ 4

Non-blocking Επικοινωνίεσ και Buffering. Κώςτασ Διαμαντάρασ ΤΕΙ Θεςςαλονίκθσ 2011

Διαδικαςία Προγράμματοσ Ωρομζτρθςθσ. (v.1.0.7)

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 5 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Α

Η γλώςςα προγραμματιςμού C

Διάλεξη Εισαγωγή στη Java, Μέρος Γ

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

Joomla! - User Guide

ΡΥΘΜΙΕΙ για περιοριςμένο χρήςτη (limited user)

ςυςτιματα γραμμικϊν εξιςϊςεων

Οδθγόσ για τθν αξιοποίθςθ τθσ διαςφνδεςθσ του myschool με το Εκνικό Δθμοτολόγιο

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

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

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

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ Ω ΕΝΙΑΙΟ ΤΣΗΜΑ. ΚΕΦΑΛΑΙΟ 2: Σο Εςωτερικό του Τπολογιςτι

Νιματα - Συγχρονιςμόσ

ΠΑΝΕΠΙΣΘΜΙΟ ΔΤΣΙΚΘ ΜΑΚΕΔΟΝΙΑ ΣΜΘΜΑ ΜΘΧΑΝΙΚΩΝ ΠΛΘΡΟΦΟΡΙΚΘ ΚΑΙ ΣΘΛΕΠΙΚΟΙΝΩΝΙΩΝ. Λειτουργικά υςτιματα, 4 ο Εξάμθνο Ψθφιακι χεδίαςθ ΙΙ, 4 ο Εξάμθνο

Δημιουργία Εντφπων Intrastat και Ανακεφαλαιωτικοφ Πίνακα

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

ΕΙΣΑΓΩΓΗ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ

Epsilon Cloud Services

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

Λειτουργικά υςτιματα Windows XP

Transcript:

Εθνικό Μετςόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιςτών Εργαςτήριο Υπολογιςτικών Συςτημάτων Transactional Memory 9 ο Εξάμθνο

Τακτικζσ Συγχρονιςμοφ Κλειδϊματα (locks) Coarse-grain Fine-grain Non-blocking Lock-free Wait-free Transactional Memory 2

Δυςκολία προγραμματιςμοφ εφκολο να κάνουμε coarse-grain υλοποιιςεισ Συγχρονιςμόσ Γιατί δε μασ αρζςουν τα locks... για να εκμεταλλευτοφμε όμωσ τον παραλλθλιςμό πρζπει να κάνουμε fine-grain υλοποιιςεισ...... και εκεί ξεκινάει ο εφιάλτθσ Convoying ζνα νιμα που κρατάει ζνα lock γίνεται schedule out τα υπόλοιπα νιματα περιμζνουν τθν απελευκζρωςθ του lock ακόμα και μετά τθν απελευκζρωςθ του lock υπάρχει μία ουρά από νιματα που περιμζνουν να πάρουν το lock 3

Αντιςτροφι προτεραιοτιτων (Priority inversion) ζνα νιμα T1 υψθλισ προτεραιότθτασ περιμζνει να ελευκερωκεί κάποιο lock ζνα άλλο νιμα T2 χαμθλότερθσ προτεραιότθτασ εκτελείται πριν το T1 Συγχρονιςμόσ Γιατί δε μασ αρζςουν τα locks... Mars Pathfinder (1997) αποςτολι τθσ NASA για αποςτολι του εξερευνθτικοφ οχιματοσ Sojourner ςτον Άρθ λίγεσ μζρεσ μετά τθν προςεδάφιςθ ςτον Άρθ το λογιςμικοφ του ςυςτιματοσ κάνει επανεκκινιςεισ Γιατί; Priority inversion Concurrent programming is hard: After the failure, JPL engineers spent hours and hours running the system on the exact spacecraft replica in their lab with tracing turned on, attempting to replicate the precise conditions under which they believed that the reset occurred. Early in the morning, after all but one engineer had gone home, the engineer finally reproduced a system reset on the replica. Analysis of the trace revealed the priority inversion. Πηγή: wikipedia Πηγή:http://research.microsoft.com/en-us/um/people/mbj/Mars_Pathfinder/Mars_Pathfinder.html 4

Συγχρονιςμόσ Γιατί δε μασ αρζςουν τα locks... Composability void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } Νήμα 1: transfer(a, B, 10); lock(a); lock(b); Θ ςφνκεςθ κλειδωμάτων είναι δφςκολθ. DEADLOCK! Χρειάηεται κακολικι πολιτικι για το κλείδωμα Νήμα 2: transfer(b, A, 20); lock(b); lock(a); δεν μπορεί πάντα να αποφαςιςτεί εκ των προτζρων Fine-grain locking: εκμετάλλευςθ παραλλθλιςμοφ, καλι επίδοςθ και κλιμακϊςιμο, αλλά δυςκολία προγραμματιςμοφ. 5

Συγχρονιςμόσ Γιατί δε μασ αρζςουν τα locks... Composability void transfer (account A, account B, int amount) { lock(bank); withdraw(a, amount); deposit(b, amount); unlock(bank); } Νήμα 1: transfer(a, B, 10); lock(bank);... critical section... Θ ςφνκεςθ κλειδωμάτων είναι δφςκολθ. Χρειάηεται κακολικι πολιτικι για το κλείδωμα No Concurrency! Νήμα 2: transfer(c, D, 20); lock(bank);... stall... δεν μπορεί πάντα να αποφαςιςτεί εκ των προτζρων Fine-grain locking: εκμετάλλευςθ παραλλθλιςμοφ, καλι επίδοςθ και κλιμακϊςιμο, αλλά δυςκολία προγραμματιςμοφ. Coarse-grain locking: δεν υπάρχει παραλλθλία, χαμθλι επίδοςθ 6

Παράδειγμα: Java 1.4 HashMap Map: key value (-) δεν είναι thread-safe 7

Θ λφςθ τθσ Java 1.4: synchronized layer ρθτό, coarse-grain locking από τον προγραμματιςτι Synchronized HashMap Coarse-grain synchronized HashMap (+) thread-safe, εφκολο ςτον προγραμματιςμό (-) περιορίηει τον (όποιον) ταυτοχρονιςμό, χαμθλι κλιμακωςιμότθτα μόνο ζνα thread μπορεί να επεξεργάηεται το HashMap κάκε φορά Fine-grain locking HashMap (Java 5) ζνα lock ανά bucket (+) καλι επίδοςθ και κλιμακωςιμότθτα (-) δυςκολία προγραμματιςμοφ 8

Επίδοςη: Locks 9

Ιδανικά κα κζλαμε: Transactional Memory (TM) προγραμματιςτικι ευκολία αντίςτοιχθ με coarse-grain locking απόδοςθ ςυγκρίςιμθ με fine-grain locking Transactional memory ο χριςτθσ ςθμειϊνει κομμάτια κϊδικα τα οποία πρζπει να εκτελεςτοφν ατομικά (transactions) το TM ςφςτθμα είναι υπεφκυνο για τθν ςωςτι εκτζλεςθ Μεταφζρουμε τθν πολυπλοκότθτα του fine-grain ςυγχρονιςμοφ ςτο TM ςφςτθμα. 10

Προγραμματιςμόσ με ΤΜ void transfer (account A, account B, int amount) { lock(a); lock(b); withdraw(a, amount); deposit(b, amount); unlock(b); unlock(a); } Προςτακτικόσ vs. Δθλωτικόσ προγραμματιςμόσ Περιγραφι ςυγχρονιςμοφ ςε υψθλό επίπεδο void transfer (account A, account B, int amount) { tx_begin(); withdraw(a, amount); deposit(b, amount); tx_end(); } ο προγραμματιςτισ λζει τι, όχι πϊσ Το υποκείμενο ςφςτθμα υλοποιεί το ςυγχρονιςμό εξαςφαλίηει ατομικότθτα, απομόνωςθ & ςειριοποίθςθ Επίδοςθ; εξαρτάται από το κρίςιμο τμιμα και τθν υλοποίθςθ του TM 11

Memory transaction μία ατομική και απομονωμζνη ακολουκία λειτουργιϊν μνιμθσ εμπνευςμζνθ από τισ δοςολθψίεσ ςτισ Βάςεισ Δεδομζνων Ατομικότθτα (Atomicity) κα γίνουν είτε όλεσ οι εγγραφζσ ςτθ μνιμθ ι καμία (all or nothing) commit, όλεσ οι εγγραφζσ ςτθ μνιμθ abort, καμία εγγραφι ςτθ μνιμθ Απομόνωςθ (Isolation) Transactions κανζνα άλλο τμιμα κϊδικα δεν μπορεί να δεί τισ εγγραφζσ ενόσ transaction πριν το commit Σειριοποίθςθ (Serializability) τα αποτελζςματα των transactions είναι ςυνεπι (ίδια με αυτά τθσ ςειριακισ/ςειριοποιθμζνθσ εκτζλεςθσ) τα transactions φαίνονται ότι κάνουν commit ςειριακά θ ςυγκεκριμζνθ ςειρά ωςτόςο δεν είναι εγγυθμζνθ 12

Νήμα 1 Νήμα 2 Νήμα 3 Νήμα 1 Νήμα 2 Νήμα 3 Locks vs. TM 3 νήμαηα εκηελούν ένα κπίζιμο ημήμα lock(l) lock(l) lock(l) acq. unlock(l) acq. tx_begin() wr A tx_end() tx_begin() rd B wr B tx_end() tx_begin() rd A x conflict tx_begin() unlock(l) acq. tx_end() unlock(l) Αναμενόμενο κζρδοσ ςε περίπτωςθ μθ-conflict Επιβράδυνςθ ςε conflicts (R-W ι W-W) λόγω χαμζνθσ δουλείασ 13

Tree update από 2 νήματα Σηόσορ: ηποποποίηζη κόμβων 3 και 4 με thread-safe ηπόπο Hand-over-hand locking 1 2 3 4 Ακόμα και fine-grain ςλοποιήζειρ μποπεί να μην εκμεηαλλεύονηαι πλήπωρ ηον παπαλληλιζμό Παπάδειγμα: ένα lock ζηον κόμβο 1 μπλοκάπει νήμαηα πος θα μποπούζαν να εκηελεζηούν ηαςηόσπονα 14

Tree update από 2 νήματα Σηόσορ: ηποποποίηζη κόμβων 3 και 4 με thread-safe ηπόπο Transactions 1 2 3 4 Transaction A Transaction B READ 1,2,3 READ 1,2,4 WRITE 3 WRITE 4 Τα δύο updates μποπούν να γίνοςν ηαςηόσπονα: δεν ςπάπσει conflict 15

Transactional HashMap Απλά εςωκλείουμε τθ λειτουργία ςε ζνα atomic block το ςφςτθμα εξαςφαλίηει τθν ατομικότθτα Transactional HashMap (+) thread-safe, εφκολο ςτον προγραμματιςμό Καλι επίδοςθ & κλιμακωςιμότθτα? Εξαρτάται από τθν υλοποίθςθ του TM και το ςενάριο εκτζλεςθσ, αλλά τυπικά ναι 16

Επίδοςη: Locks vs. TM 17

Ευκολία προγραμματιςμοφ παραπλιςια με αυτι των coarse-grain locks ο προγραμματιςτισ δθλϊνει, το ςφςτθμα υλοποιεί Επίδοςθ παραπλιςια με αυτι των fine-grain locks Πλεονεκτήματα ΤΜ εκμεταλλεφεται αυτόματα τον fine-grain ταυτοχρονιςμό δεν υπάρχει tradeoff ανάμεςα ςτθν απόδοςθ & τθν ορκότθτα Failure atomicity & recovery δεν «χάνονται» locks όταν ζνα νιμα αποτυγχάνει failure recovery = transaction abort + restart Composability ςφνκεςθ επιμζρουσ ατομικϊν λειτουργιϊν / software modules ςε μία ενιαία ατομικι λειτουργία αςφαλισ & κλιμακϊςιμθ 18

Υλοποίηςη ΤΜ Τα ΤΜ ςυςτιματα πρζπει να παρζχουν ατομικότθτα και απομόνωςθ χωρίσ να κυςιάηεται ο ταυτοχρονιςμόσ Ηθτιματα υλοποίθςθσ Data versioning (ϊςτε να μπορεί να γίνει abort/rollback) Conflict detection & resolution (για να ανιχνεφουμε πότε πρζπει να γίνει abort) Επιλογζσ Hardware transactional memory (HTM) Software transactional memory (STM) Hybrid transactional memory Hardware accelerated STMs Dual-mode systems 19

Data Versioning Διαχείριςθ uncommitted (νζων) και committed (παλιϊν) εκδόςεων δεδομζνων για ταυτόχρονα transactions 1. Lazy versioning (write-buffer based) 2. Eager versioning (undo-log based) 20

Lazy versioning Καταγραφή των αλλαγών ςε write buffer, ενημζρωςη τησ μνήμησ κατά το commit Begin Transaction Thread Write X = 15 Thread Write Buffer X: 15 Write Buffer X: 10 Memory X: 10 Memory Commit Transaction Thread Abort Transaction Thread X: 10 15 Memory X: 15 Write Buffer X: 10 Memory X: 15 Write Buffer 21

Eager versioning Άμεςη ενημζρωςη μνήμησ, διατήρηςη undo log για την περίπτωςη abort Begin Transaction Thread Write X = 15 Thread Undo Log X:10 Undo Log X: 10 Memory X: 10 15 Memory Commit Transaction Thread Abort Transaction Thread X: 15 Memory X:10 Undo Log X: 15 10 Memory X:10 Undo Log 22

Lazy versioning (write-buffer based) Data versioning καταγραφι νζων δεδομζνων ςε write-buffer μζχρι το commit πραγματικι ενθμζρωςθ μνιμθσ κατά το commit (+) γριγορο abort, fault tolerant (απλά «πετάμε» τον writer-buffer) (-) αργά commits (πρζπει τα δεδομζνα να γραφτοφν ςτθ μνιμθ) Eager versioning (undo-log based) απευκείασ ενθμζρωςθ μνιμθσ διατιρθςθ undo πλθροφορίασ ςε log (+) γριγορο commit (τα δεδομζνα είναι ιδθ ςτθ μνιμθ) (-) αργό abort, ηθτιματα fault tolerance (τι γίνεται αν ζνα thread αποτφχει κατά τθ διάρκεια ενόσ transaction) 23

Conflict detection Ανίχνευςθ και διαχείριςθ conflicts ανάμεςα ςε transactions read-write conflict: ζνα transaction A διαβάηει τθ διεφκυνςθ X, θ οποία ζχει γραφτεί από ζνα τρζχων transaction B. write-write conflict: δφο transactions γράφουν ςτθν ίδια διεφκυνςθ μνιμθσ X Πρζπει να παρακολουκοφνται το read-set & write-set ενόσ transaction read-set: οι διευκφνςεισ που διαβάηονται εντόσ του transaction write-set: οι διευκφνςεισ που γράφονται εντόσ του transaction Conflict resolution τι γίνεται όταν ανιχνευκεί ζνα conflict διάφορεσ πολιτικζσ stall writer wins committer wins... 24

1. Pessimistic (eager) detection Ζλεγχοσ για conflicts ςε κάκε load ι store Conflict detection Χριςθ contention manager για να αποφαςίςει να κάνει stall ι abort Απαιςιοδοξία: «Θα ζχω conflicts οπότε ασ ελζγχω μετά από κάκε πρόςβαςθ ςτθ μνιμθ... Αν χρειαςτεί να γίνει abort κα γλιτϊςω άςκοπθ δουλειά.» 2. Optimistic (lazy) detection Ζλεγχοσ για conflicts κατά το commit Σε περίπτωςθ conflict, προτεραιότθτα ςτο committing transaction Αιςιοδοξία: «Δεν κα ζχω conflicts οπότε ελζγχω μόνο κατά τθν διάρκεια του commit.» 25

Pessimistic detection Τ0 Case 1 Case 2 Case 3 Case 4 Τ1 Τ0 Τ1 Τ0 Τ1 Τ0 Τ1 TIME rd A wr C wr B commit wr A rd A stall commit rd A restart rd A wr A commit rd A wr A restart rd A wr A rd A wr A restart commit commit commit rd A wr A restart Success Early Detect Abort No progress 26

Optimistic detection Case 1 Case 2 Case 3 Case 4 Τ0 Τ1 Τ0 Τ1 Τ0 Τ1 Τ0 Τ1 TIME rd A wr B wr C commit commit wr A commit rd A restart rd A rd A commit wr A commit rd A wr A restart rd A wr A rd A wr A commit commit commit Success Abort Success Forward progress 27

1. Pessimistic conflict detection (+) ανιχνεφει τα conflicts νωρίσ Conflict Detection Tradeoffs αναιρεί λιγότερθ δουλειά, μετατρζπει μερικά aborts ςε stalls (-) δεν εγγυάται τθν πρόοδο προσ τα εμπρόσ, πολλά aborts ςε κάποιεσ περιπτϊςεισ 2. Optimistic conflict detection (+) εγγυάται τθν πρόοδο προσ τα εμπρόσ (-) ανιχνεφει τα conflicts αργά, άςκοπθ δουλειά (-) starvation 28

ΘΤΜ ςυςτιματα Lazy + optimistic: Stanford TCC Lazy + pessimistic: MIT LTM, Intel VTM, Sun s Rock Eager + pessimistic: Wisconsin LogTM TM Implementation Space (παραδείγματα) STM ςυςτιματα Lazy + optimistic (rd/wr): Sun TL2 Lazy + optimistic (rd) / pessimistic (wr): MS OSTM Eager + optimistic (rd) / pessimistic (wr): Intel STM Eager + pessimistic (rd/wr): Intel STM 29

Hardware TM 2011 IBM Blue Gene/Q 2012 IBM zec12 mainframe 2013 Intel TSX (Haswell, Broadwell ) 2014 IBM Power8 Κοινά χαρακτθριςτικά εκμετάλλευςθ των ιδθ υπάρχοντων μθχανιςμϊν για coherency conflict detection ςε επίπεδο cache line false sharing περιοριςμζνο μζγεκοσ read/write sets aborts για διάφορουσ λόγουσ εκτόσ από data conflict cache line eviction, interrupt best-effort: δεν εγγυϊνται forward progress ζνα transaction μπορεί να μθν κάνει commit ποτζ είναι ευκφνθ του χριςτθ να εγγυθκεί forward progress με ζνα non-transactional path 30

Intel TSX Διακζςιμο ςτουσ επεξεργαςτζσ Haswell και μεταγενζςτερουσ. Θ πρϊτθ υλοποίθςθ HTM διακζςιμθ ςε εμπορικοφσ επεξεργαςτζσ. Στισ πρϊτεσ εκδόςεισ επεξεργαςτϊν Haswell και Broadwell το TSX είναι buggy Αφγουςτοσ 2014: «Errata prompts Intel to disable TSX in Haswell, early Broadwell CPUs» http://techreport.com/news/26911/errata-prompts-intel-to-disable-tsx-in-haswell-early-broadwell-cpus HSW136. Software Using Intel TSX May Result in Unpredictable System Behavior http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-e3-1200v3-spec-update.pdf Λφςη; Απενεργοποίθςθ του TSX από το BIOS. 31

Παρζχονται δφο interfaces για τθν χριςθ του 1. Restricted Transactional Memory (RTM) 4 νζεσ εντολζσ assembly για τθ διαχείριςθ transactions Intel TSX interfaces μεγαλφτερθ ευελιξία ο προγραμματιςτισ επιλζγει τι κα γίνει ςε περίπτωςθ abort 2. Hardware Lock Elision (HLE) 2 νζα προκζματα εντολϊν assembly ζνα critical section προςτατεφετεται από ζνα lock, το ςφςτθμα προςπακεί πρϊτα να το εκτελζςει ςε transaction, αν αποτφχει εκτελείται με τθν απόκτθςθ του lock ο κϊδικασ που προκφπτει εκτελείται και ςε παλιότερουσ επεξεργαςτζσ χωρίσ TSX (τα προκζματα αντιμετωπίηονται ςαν nops) 32

XBEGIN <fallback address> δθλϊνει τθν αρχι ενόσ transaction Intel TSX - RTM <fallback address>: θ διεφκυνςθ του κϊδικα που κα εκτελεςτεί ςε περίπτωςθ abort XEND δθλϊνει το τζλοσ ενόσ transaction XTEST δείχνει αν εκτελείται transaction ι όχι XABORT <abort code> αναγκάηει το τρζχων transaction να κάνει abort <abort code>: χρθςιμοποιείται για τθν διάκριςθ μεταξφ διαφορετικϊν λόγων για abort 33

Ξεκίνα ένα transaction Intel TSX RTM example int aborts = MAX_TX_RETRIES; lock_t = fallback_global_lock; start_tx: int status = TX_BEGIN(); if (status == TX_BEGIN_STARTED) { if (fallback_global_lock is locked) TX_ABORT();... Critical Section... Commit TX_END(); } else { /* status!= TX_BEGIN_STARTED */ if (--aborts > 0) /* retry transaction */ goto start_tx; } acquire_lock(fallback_global_lock);... Critical Section... release_lock(fallback_global_lock); Το transaction ξεκίνηζε επιηςσώρ Πποζθήκη ηος fallback lock ζηο read-set Transactional path ζε πέπίπηωζη abort ηο hardware αναλαμβάνει να κάνει rollback και η ποή ηος ππογπάμμαηορ επιζηπέθει ζηην κλήζη ηηρ TX_BEGIN() Transaction aborted Αν δεν έσει ξεπεπαζηεί ηο όπιο ηων aborts κάνοςμε retry ηο transaction Αλλιώρ «κλείδωζε» ηο lock και εκηέλεζε ηο κπίζιμο ημήμα non-transactional path 34

Intel TSX HLE 2 νζα προκζματα εντολϊν assembly XACQUIRE XRELEASE Παράδειγμα: elision ενόσ TAS lock /* acquire lock */ while ( sync_lock_test_and_set(&lock_var) == 0) /* do nothing */;... Critical section with lock acquired... /* release lock */ sync_lock_release(&lock_var); /* elide lock */ while ( hle_acquire_test_and_set(&lock_var) == 0) /* do nothing */;... Critical section with lock acquired... /* release lock */ hle_release_clear(&lock_var); Το ζύζηημα εκηελεί απσικά ηο κπίζιμο ημήμα με transaction Αν γίνει abort παίπνει ηο lock και επανεκηελεί ηο κπίζιμο ημήμα 35