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

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

Transactional Memory

Transactional Memory

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

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

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

Transactional Memory

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

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

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

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

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

Εφαρμογή Υπολογιστικών Τεχνικών στην Γεωργία

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

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

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

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

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

Parallel Architectures

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

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

EM 361: Παράλληλοι Υπολογισμοί

Υποθετικός Πολυνηματισμός

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

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

ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

Χρήση βασικών εργαλείων συλλογής πληροφοριών για τη διαμόρφωση και την κατάσταση λειτουργίας του δικτύου

Πολυνηματικές Αρχιτεκτονικές. «Μη-Παραδοσιακός» Παραλληλισμός

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

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

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

Αρχιτεκτονική-ΙI Ενότητα 4 :

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

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

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems

Προχωρημένα Θέματα Βάσεων Δεδομένων

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

Βάσεις Δεδομένων ΙΙ Ενότητα 2

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

Ενσωματωμένα Συστήματα

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

Parallel Architectures

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

Προγραμματισμός και Εφαρμογές Υπολογιστών

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

Βάσεις Δεδομένων ΙΙ Ενότητα 2

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

Προγραμματισμός και Εφαρμογές Υπολογιστών

CAD / CAM. Ενότητα #10: Βιομηχανικά Συστήματα Ελέγχου. Δημήτριος Τσελές Τμήμα Μηχανικών Αυτοματισμού T.E.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Προχωρηµένα Θέµατα Αρχιτεκτονικής

Διαχείριση Χρόνου & Δίκτυα στη Διοίκηση Έργων. Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ

Ειδικά Θέματα Προγραμματισμού

Εφαρμογή Υπολογιστικών Τεχνικών στη Γεωργία

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Αποκατάσταση συστήματος Βάσεις Δεδομένων

Επανάκτηση δεδομένων. (εμπλουτισμένο υλικό)

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

Cilk: Φιλοσοφία και Χρήση

Προχωρημένα Θέματα Βάσεων Δεδομένων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Βάσεις Δεδομένων ΙΙ. Διάλεξη 3 η Tεχνικές Aνάκαμψης. Ιδιότητες Δοσοληψιών

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

Υποθετικός Πολυνηματισμός

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Ερευνητική+Ομάδα+Τεχνολογιών+ Διαδικτύου+

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Βάσεις Δεδομένων Ενότητα 1

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Parallel Architectures

Προγραμματισμός Διαδικτύου

Αυτοματοποιημένη χαρτογραφία

Συστήματα Πληροφοριών Διοίκησης

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

Βάσεις Δεδομένων ΙΙ Ενότητα 1

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

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

H/Y Ε-07: Κατανεµηµένα Συστήµατα Εαρινό Εξάµηνο Ακ. Έτους ιδάσκουσα: Παναγιώτα Φατούρου Προγραµµατιστικές Εργασίες

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

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

Προχωρημένα Θέματα Προγραμματισμού Δικτύων Ενότητα 13: QoS Policy, Παραδείγματα QoS, Επισκόπηση μαθήματος Φώτης Βαρζιώτης

{ int a = 5; { int b = 7; a = b + 3;

Θερμοδυναμική - Εργαστήριο

Δοσοληψίες Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Δομές Δεδομένων Ενότητα 1

Προγραμματισμός Διαδικτύου

Παράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων

Αντικειμενοστρεφής Προγραμματισμός

Διαφορές single-processor αρχιτεκτονικών και SoCs

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

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

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

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

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

Ειδικά Θέματα Προγραμματισμού

Transcript:

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

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.

Τα προβλήματα του παράλληλου προγραμματισμού Εντοπισμός παραλληλισμού χειροκίνητα (επισκόπηση) αυτόματα (compiler) Έκφραση παραλληλισμού low-level (π.χ. Pthreads, MPI) high-level (π.χ. OpenMP, Cilk, Intel TBB, Galois, UPC κ.λπ.) Απεικόνιση scheduling, creation, termination, etc. operating system, runtime system Συγχρονισμός εύκολος όπως ο coarse-grain αποδοτικός όπως ο fine-grain deadlock-free composable Απαιτήσεις κλιμακωσιμότητα ευκολία προγραμματισμού υψηλή παραγωγικότητα ορθότητα architectural awareness

Transactional Memory (TM) Memory transaction μία ατομική και απομονωμένη ακολουθία λειτουργιών μνήμης εμπνευσμένη από τις δοσοληψίες στις ΒΔ Atomicity (all or nothing) στο, όλες οι εγγραφές μνήμης αποκτούν επίδραση «με τη μία» σε περίπτωση abort, καμία από τις εγγραφές δεν έχουν επίδραση Isolation κανένα άλλο τμήμα κώδικα δεν μπορεί να δει τις εγγραφές ενός transaction πριν το Consistency (serializability) τα αποτελέσματα των transactions είναι συνεπή (ίδια με αυτά της σειριακής/σειριοποιημένης εκτέλεσης) τα transactions φαίνονται ότι κάνουν σειριακά η συγκεκριμένη σειρά ωστόσο δεν είναι εγγυημένη

Προγραμματισμός με ΤΜ Περιγραφή συγχρονισμού σε υψηλό επίπεδο ο προγραμματιστής λέει τι, όχι πώς Το υποκείμενο σύστημα υλοποιεί το συγχρονισμό εξασφαλίζει atomicity, isolation & consistency

Αμοιβαίος αποκλεισμός vs. TM Thread 1 Thread 2 Thread 3 Thread 1 Thread 2 Thread 3 lock(l) acq. unlock(l) lock(l) acq. lock(l) tx-begin wr A tx-end tx-begin rd B wr B tx-end tx-begin rd A conflict! unlock(l) acq. tx-end unlock(l) Αναμενόμενο κέρδος σε περίπτωση μη-conflict Επιβράδυνση σε conflicts (R-W ή W-W)

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

Παράδειγμα: Java 1.4 HashMap Map: key value not thread-safe

Synchronized HashMap Η λύση της Java 1.4: synchronized layer ρητό, coarse-grain locking από τον προγραμματιστή Coarse-grain synchronized HashMap Pros: thread-safe, εύκολο στον προγραμματισμό Cons: περιορίζει τον (όποιον) ταυτοχρονισμό, χαμηλή κλιμακωσιμότητα μόνο ένα thread μπορεί να επεξεργάζεται το HashMap κάθε φορά

Concurrent HashMap (Java 5) Fine-grain synchronized concurrent HashMap Pros: fine-grain παραλληλισμός, ταυτόχρονες αναγνώσεις Cons: περίπλοκο & επιρρεπές σε λάθη

Επίδοση: Locks

Transactional HashMap Απλά εσωκλείουμε τη λειτουργία σε ένα atomic block το σύστημα εξασφαλίζει την ατομικότητα Transactional HashMap Pros: thread-safe, εύκολο στον προγραμματισμό Καλή επίδοση & κλιμακωσιμότητα? Εξαρτάται από την υλοποίηση και το σενάριο εκτέλεσης, αλλά τυπικά ναι

Επίδοση: Locks vs Transactions

Composability: Locks Η σύνθεση lock-based κώδικα είναι δύσκολη Σκοπός: απόκρυψη ενδιάμεσης κατάστασης κατά τη μεταφορά Χρειαζόμαστε καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί a priori Fine-grain locking: μπορεί να οδηγήσει σε deadlocks

Composability: Locks Η σύνθεση lock-based κώδικα είναι δύσκολη Σκοπός: απόκρυψη ενδιάμεσης κατάστασης κατά τη μεταφορά Χρειαζόμαστε καθολική πολιτική για το κλείδωμα δεν μπορεί πάντα να αποφασιστεί a priori Fine-grain locking: μπορεί να οδηγήσει σε deadlocks Coarse-grain locking: μηδενικός ταυτοχρονισμός

Composability: Transactions Οι ατομικές λειτουργίες συντίθενται ομαλά, χωρίς να περιορίζεται ο ταυτοχρονισμός ο προγραμματιστής δηλώνει την καθολική πρόθεση (ατομική μεταφορά) χωρίς να χρειάζεται να ξέρει κάποια καθολική πολιτική κλειδώματος Το σύστημα διαχειρίζεται τον ταυτοχρονισμό με τον καλύτερο δυνατό τρόπο σειριοποίηση για transfer(a, B, $100) & transfer(b, A, $200) ταυτοχρονισμός για transfer(a, B, $100) & transfer(c, D, $200)

Υλοποίηση ΤΜ Τα ΤΜ συστήματα πρέπει να παρέχουν ατομικότητα και απομόνωση χωρίς να θυσιάζεται ο ταυτοχρονισμός Παράμετροι λειτουργίας Data versioning (ή version management) Conflict detection Conflict resolution Επιλογές Hardware transactional memory (HTM) Software transactional memory (STM) Hybrid transactional memory Hardware accelerated STMs Dual-mode systems

Data Versioning Διαχείριση unted (νέων) και ted (παλιών) εκδόσεων δεδομένων για ταυτόχρονα transactions Eager versioning (undo-log based) απευθείας ενημέρωση μνήμης διατήρηση undo πληροφορίας σε log (+) Γρήγορο (-) Αργό abort, ζητήματα fault tolerance Lazy versioning (write-buffer based) buffering νέων δεδομένων σε write-buffer μέχρι το πραγματική ενημέρωση μνήμης κατά το (+) Γρήγορο abort, fault tolerant (-) Αργά s

Eager versioning

Lazy versioning

Conflict detection Ανίχνευση και διαχείριση conflicts ανάμεσα σε transactions Read-Write και (συχνά) Write-Write conflicts Πρέπει να παρακολουθούνται το read-set & write-set ενός transaction Read-set: οι διευθύνσεις που διαβάζονται εντός του transaction Write-set: οι διευθύνσεις που γράφονται εντός του transaction Pessimistic (eager) detection Έλεγχος για conflicts σε κάθε load ή store SW: SW barriers με locks και/ή version numbers HW: έλεγχος μέσω του coherence protocol Χρήση contention manager για να αποφασίσει να κάνει stall ή abort διαφορετικές πολιτικές ανάθεσης προτεραιότητας στόχος: to make the common case fast

Pessimistic detection 21 Case 1 Case 2 Case 3 Case 4 X0 X1 X0 X1 X0 X1 X0 X1 TIME rd A check check wr C check wr B wr A check rd A check stall rd A restart check check rd A check wr A rd A wr A restart rd A wr A check check check rd A wr A restart restart rd A wr A check Success Early Detect Abort No progress

Conflict detection Optimistic (lazy) detection Τα conflicts ανιχνεύονται όταν ένα transaction επιχειρήσει να κάνει SW: validate τα write/read-set με χρήση locks ή version numbers HW: validate το write-set χρησιμοποιώντας το coherence protocol Σε περίπτωση conflict, προτεραιότητα στο ting transaction τα υπόλοιπα transactions μπορούν να κάνουν abort αργότερα σε περίπτωση conflict ανάμεσα σε ting transactions, την προτεραιότητα την αποφασίζει ο contention manager Σημείωση: optimistic & pessimistic σχήματα ταυτόχρονα είναι εφικτά Πολλά STMs είναι optimistic στα reads και pessimistic στα writes

Optimistic detection 23 Case 1 Case 2 Case 3 Case 4 X0 X1 X0 X1 X0 X1 X0 X1 TIME rd A wr B wr C check check wr A check rd A restart rd A rd A check wr A check rd A wr A restart rd A wr A rd A wr A check check check Success Abort Success Forward progress

Conflict Detection Tradeoffs Pessimistic CD (+) ανιχνεύει τα conflicts νωρίς αναιρεί λιγότερη δουλειά, μετατρέπει μερικά aborts σε stalls (-) δεν εγγυάται την πρόοδο προς τα εμπρός, πολλά aborts σε κάποιες περιπτώσεις (-) locking issues (SW), fine-grain communication (HW) Optimistic CD (+) εγγυάται την πρόοδο προς τα εμπρός (+) λιγότερα εν δυνάμει conflicts, λιγότερο locking (SW), bulk communication (HW) (-) ανιχνεύει τα conflicts αργά, προβλήματα δικαιοσύνης

TM Implementation Space (παραδείγματα) ΗΤΜ συστήματα Lazy + optimistic: Stanford TCC Lazy + pessimistic: MIT LTM, Intel VTM, Sun s Rock Eager + pessimistic: Wisconsin LogTM 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

Sun Rock s HTM «Best-effort» HTM μικρές προσθήκες σε υλικό η εκτέλεση των transactions περιορίζεται από δομές του υλικού μη-εγγυημένη η πρόοδος προς τα εμπρός 2 εντολές chkpt failpc <critical section> Είτε η κρίσιμη περιοχή εκτελείται ατομικά, είτε κάνει abort και μεταβαίνει στο failpc Lazy VM Eager CD

Παράδειγμα atomic { a++; c = a + b; } retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 // Naïve repeated retry // Read a into register // Arithmetic // Write new value of a // Read new value of a // Read b // Arithmetic // Write c // Commit if appears atomic

Παράδειγμα retry: chkpt retry // Checkpoint registers r0 = a // Add a to read-set r0 = r0 + 1 // a = r0 // Add a to write-set // Buffer old/new values of a r1 = a // Read new value of a r2 = b // Add b to read-set r3 = r1 + r2 // c = r3 // Add c to write-set // Buffer old/new values of c // Commit if appears atomic Αναπαράσταση read/write sets? Buffer old/new values? Conflict detection? Cache bits & Writebuffer addresses Register chkpt & Writebuffer values Cache Coherence Protocol

Παράδειγμα chkpt registers writebuffer Αναπαράσταση read/write sets Read: R-bit in (L1) cache Write: writebuffer addresses r0 r1 r2 r0 10 r1 20 r2 30 - - - Buffer old/new values Checkpoint old register values Old memory values in L1 cache New memory values in writebuffer Conflict detection Cache Coherence Protocol Μικρές προσθήκες σε υλικό! r3 read-set CACHE r3 40 a 42 c 12 - CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 r1 r2 r3 read-set CACHE r0 10 r1 20 r2 30 r3 40 a 42 c 12 - - - - ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set CACHE r0 10 r1 20 r2 30 r3 40 a 42 c 12 - - - - ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set R CACHE r0 42 r1 20 r2 30 r3 40 a 42 c 12 - - - - ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set R CACHE r0 43 r1 20 r2 30 r3 40 a 42 c 12 - - - - ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set R CACHE r0 43 r1 20 r2 30 r3 40 a 42 c 12 a - - - 43 old/new values of a ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set R CACHE r0 43 r1 43 r2 30 r3 40 a 42 c 12 a - - - 43 ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection get2read(core0,b) data(b,26) CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set R CACHE R r0 43 r1 43 r2 26 r3 40 a 42 b 26 c 12 a - - - 43 ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set R CACHE R r0 43 r1 43 r2 26 r3 69 a 42 b 26 c 12 a - - - 43 ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set R CACHE R r0 43 r1 43 r2 26 r3 69 a 42 b 26 c 12 c a - - 69 43 ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Παράδειγμα chkpt registers writebuffer retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 c = r3 r0 10 r1 20 r2 30 r3 40 read-set CACHE r0 43 r1 43 r2 26 r3 69 a 43 b 26 c 69 - - ΜΩΒ: read/write sets KOKKINO: buffer old/new values ΠΡΑΣΙΝΟ: conflict detection CORE 0

Ανίχνευση διένεξης κατά την αίτηση συνάφειας του πρωτοκόλλου retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 chkpt r0 10 r1 20 r2 30 r3 40 read-set registers r0 43 r1 43 r2 26 r3 69 writebuffer - a - - 43 get2write(other-core,a) c = r3 CACHE R R a 42 b 26 c 12 Conflict! Abort!! Η εξωτερική αίτηση για εγγραφή ελέγχει τον writebuffer & read-set bits Η εξωτερική αίτηση για ανάγνωση ελέγχει τον writebuffer CORE 0

Ανίχνευση διένεξης κατά την αίτηση συνάφειας του πρωτοκόλλου retry: chkpt retry r0 = a r0 = r0 + 1 a = r0 r1 = a r2 = b r3 = r1 + r2 chkpt r0 10 r1 20 r2 30 r3 40 read-set registers r0 10 r1 20 r2 30 r3 40 writebuffer - - - - c = r3 CACHE a 42 b 26 c 12 Abort done Resume at retry CORE 0

TM support στον Intel Haswell Νέες εντολές για «restricted transactional memory» (RTM) xbegin: takes pointer to fallback address in case of abort xend xabort πληροφορίες για το abort στον ΕΑΧ (data conflicts, cache line evictions, interrupts, faults, etc.)

credits for slides: C. Kozyrakis (Stanford) ACACES summer school 2008 D. Wood (Wisconsin) ACACES summer school 2009

Βιβλιογραφία

HTM Systems [Hammond04] L. Hammond, B. Carlstrom, V. Wong, M. Chen, C. Kozyrakis and K. Olukotun. Transactional Coherence and Consistency: Simplifying Parallel Hardware and Software. IEEE Micro, Special Issue on Top Picks from Architecture Conferences, vol. 24, no. 6, November/December 2004. [Herlihy93] M. Herlihy and E. Moss. Transactional memory: Architectural support for lockfree data structures. International Symposium on Computer Architecture (ISCA 93). [Moir08] M. Moir, K. Moore and D. Nussbaum. The Adaptive Transactional Memory Test Platform: A Tool for Experimenting with Transactional Code for Rock. 3rd ACM SIGPLAN Workshop on Transactional Computing (TRANSACT 08). [Yen07] L. Yen, J. Bobba, M. Marty, K. Moore, H. Volos, M. Hill, M. Swift and D. Wood. LogTM-SE: Decoupling Hardware Transactional Memory from Caches. 13th International Symposium on High Performance Computer Architecture (HPCA 07). [ASF] AMD Corporation. Advanced Synchronization Facility Proposed Architectural Specification. Mar 2009. Revision 2.1. [Dice08] D. Dice, M. Herlihy, D. Lea, Y. Lev, V. Luchangco, W. Mesard, M. Moir, K. Moore and D. Nussbaum. Applications of the Adaptive Transactional Memory Test Platform. 3rd ACM SIGPLAN Workshop on Transactional Computing (TRANSACT 08). [Dice09] D. Dice, Y. Lev, M. Moir and D. Nussbaum. Early experience with a commercial hardware transactional memory implementation. 14th international conference on Architectural support for programming languages and operating systems (ASPLOS 09).

STM systems [Dice06] D. Dice, O. Shalev and N. Shavit. Transactional locking II. 20th International Symposium on Distributed Computing (DISC 06). Stockholm, Sweeden, Sept. 2006. [Herlihy06] M. Herlihy, V. Luchangco and M. Moir. A flexible framework for implementing software transactional memory. 21st Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 06). pp. 253 262. ACM Press, 2006. [Marathe06] V. Marathe, M. Spear, C. Heriot, A. Acharya, D. Eisenstat, W. Scherer III and M. Scott. Lowering the overhead of software transactional memory. First ACM SIGPLAN Workshop on Transactional Computing (TRANSACT 06). June 2006. [Ni08] Y. Ni, A. Welc, A. Adl-Tabatabai, M. Bach, S. Berkowits, J. Cownie, R. Geva, S. Kozhukow, R. Narayanaswamy, J. Olivier, S. Preis, B. Saha, A. Tal and X. Tian. Design and Implementation of Transactional Constructs for C/C++. 23rd Annual Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 08). pp. 195 212, ACM Press, 2008. [Riegel06] T. Riegel, P. Felber and C. Fetzer. A lazy snapshot algorithm with eager validation. LNCS, vol. 4167, pp. 284 298. Springer, Heidelberg (2006). [Saha06a] B. Saha, A. Adl-Tabatabai, R. Hudson, C. Minh and B. Hertzberg. McRT-STM: a high performance software transactional memory system for a multicore runtime. 11th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 06). pp. 187 197. ACM Press, New York, 2006. [Baek07] W. Baek, C. Cao Minh, M. Trautmann, C. Kozyrakis and K. Olukotun. The OpenTM Transactional Application Programming Interface. 16th International Conference on Parallel Architecture and Compilation Techniques (PACT 07). pages 376 387, Washington, DC, USA, 2007. IEEE Computer Society.

Hybrid Systems [Damron06] P. Damron, A. Fedorova, Y. Lev, V. Luchangco, M. Moir and D. Nussbaum. Hybrid transactional memory. 12th International conference on Architectural Support for Programming Languages and Operating System (ASPLOS 06). [Diestelhorst08] S. Diestelhorst, M. Hohmuth. Hardware acceleration for lockfree data structures and software transactional memory. In the proceedings of the Workshop on Exploiting Parallelism with Transactional Memory and other Hardware Assisted Methods (EPHAM 08), April 2008. Boston, MA [Minh07] C. Minh, M. Trautmann, J. Chung, A. McDonald, N. Bronson, J. Casper, C. Kozyrakis and K. Olukotun. An Effective Hybrid Transactional Memory System with Strong Isolation Guarantees. 34th Annual International Symposium on Computer Architecture (ISCA 07). San Diego, California, 9-13 June 2007. [Saha06b] B. Saha, A.-R. Adl-Tabatabai and Q. Jacobson. Architectural Support for Software Transactional Memory. In MICRO 2006.

Applications [Kang09] S. Kang and David Bader. An Efficient Transactional Memory Algorithm for Computing Minimum Spanning Forest of Sparse Graphs. 14th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 09). [Nikas09] K. Nikas, N. Anastopoulos, G. Goumas and N. Koziris. Employing Transactional Memory and Helper Threads to Speedup Dijkstra's Algorithm. International Conference on Parallel Processing (ICPP 09). Vienna, Austria. [Scott07] M. Scott, M. Spear, L. Dalessandro and V. Marathe. Delaunay Triangulation with Transactions and Barriers. 10th International Symposium on Workload Characterization (IISWC 07). [Watson07] I. Watson, C. Kirkham and Mikel Lujan. A Study of a Transactional Parallel Routing Algorithm. 16th International Conference on Parallel Architecture and Compilation Techniques (PACT 07).

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.