Transactional Memory

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

Transactional Memory

Transactional Memory

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

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

Transactional Memory

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

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

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

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

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

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

Parallel Architectures

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Parallel Architectures

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

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

ΗΜΟΣΙΕΥΣΕΣ ΣΕ ΙΕΘΝΗ ΠΕΡΙΟ ΙΚΑ [1] C. Bouras, A. Gkamas, G. Kioumourtzis, Adaptive smooth multicast protocol for multimedia transmission:

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

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

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

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

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

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

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

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

Parallel Architectures

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

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

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

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

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

FX10 SIMD SIMD. [3] Dekker [4] IEEE754. a.lo. (SpMV Sparse matrix and vector product) IEEE754 IEEE754 [5] Double-Double Knuth FMA FMA FX10 FMA SIMD

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

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

Εισαγωγή στην πληροφορική -4

Επαναφορά του Συστήματος (Μέρος Α')

Ημερίδα διάχυσης αποτελεσμάτων έργου Ιωάννινα, 14/10/2015

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

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

Τεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

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

Τεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

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

Διάλεξη 12 Καθυστερήσεις (Stalls)

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

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

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

Περιβάλλον Παράλληλου Προγραμματισμού

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

Προηγµένες Τεχνικές Προγραµµατισµού

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

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

ΠΡΟΣΟΜΟΙΩΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ. Διαφάνειες από το MicroArch 35 Tutorial του Simics

Re-Pair n. Re-Pair. Re-Pair. Re-Pair. Re-Pair. (Re-Merge) Re-Merge. Sekine [4, 5, 8] (highly repetitive text) [2] Re-Pair. Blocked-Repair-VF [7]

Στοιχεία εισηγητή Ημερομηνία: 10/10/2017

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

Πλειάδες φαντάσματα (phantoms)


Αρχιτεκτονική Υπολογιστών. ηµήτρης Γκιζόπουλος Καθηγητής

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

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

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

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

Προχωρηµένα Θέµατα Αρχιτεκτονικής Η/Υ. Storage Systems.. Λιούπης

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

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

Microsoft Visual Studio Γιώργος Καµαρινός Developer Programs Marketing Manager Microsoft Hellas

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

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

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

Ανάλυση σχημάτων βασισμένη σε μεθόδους αναζήτησης ομοιότητας υποακολουθιών (C589)

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

Transactions Management. (Διαχείριση Δοσοληψιών)

Κατανεμημένα συστήματα και Επικοινωνία Πραγματικού Χρόνου

Transcript:

Transactional Memory

Τα προβλήματα του παράλληλου προγραμματισμού Εντοπισμός παραλληλισμού χειροκίνητα (επισκόπηση) αυτόματα (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).