M. Thaler, TG208, [email protected] www.zhaw.ch/~tham MPC ZHAW, MPC FS15, M. Thaler Transactional Memory Mai 16 1 • Siehe [Herlihy] 1 Um was geht es? • Locks sind schwierig zu handhaben - serialisierte Ausfürung - Deadlocks • atomare Promitiven wie CAS - arbeiten mit nur einem (zwei) Datenwerten komplexe Algorithmen • Shared Objects / gemeinsame Repositorien - müssen für alle Zugriffe und Updates konsistent gehalten werden - aufwendiger Design MPC ZHAW, MPC FS15, M. Thaler Probleme mit Synchronisation Mai 16 2 2 Transactional Memory (TM) Einfach für den Programmierer • definiert eine atomare Region atomic { Daten lesen/schreiben } • zusammensetzbar (composable) MPC ZHAW, MPC FS15, M. Thaler atomic { ... } atomic { Daten lesen/schreiben } • TM kümmer sich um - Performance und Progress/Korrektheit (keine Deadlocks) Mai 16 3 3 ... Transactional Memory Was ist eine Transaktion? • Atomicity - Transaktion wird entweder ganz oder gar nicht ausgeführt - bei Abbruch keine Seiteneffekte • Consistency - alle Objekte vor und nach Transaktion in gültigem Zustand • Isolation - eine Transaktion kann nicht auf einen Zwischenzustand einer anderen parallel ausgeführten Transaktion zugreifen MPC ZHAW, MPC FS15, M. Thaler 3 Eigenschaften: ACI Mai 16 4 • Achtung Datenbanken: ACID - D: Durability 4 ... Transactional Memory Serialisierbar • Transaktionen erscheinen für alle beteiligten Threads sequentiell und in der gleichen Reihenfolge • ähnlich wie Linearisierung, aber "coarse-grain" - Kode-Blöcke mit Zugriffen auf verschiedene Objekte möglich - Linearisierung: nur Methode • mehrere Transaktionen können parallel ausgeführt werden, wenn das Speicherzugriffsmuster das zulässt (keine gleichzeitigen Zugriffe auf die gleichen Datenwerte) MPC ZHAW, MPC FS15, M. Thaler Parallele Ausführung Mai 16 5 5 Programmieren mit TM Deklarative Synchronisation • der Programmierer sagt was, aber nicht wie • keine explizite Deklaration oder Verwaltung von Locks Das System implementiert die Synchronisation MPC ZHAW, MPC FS15, M. Thaler • typischerweise optimistisch bzw. spekulativ - atomare Region wird mit Hoffung ausgeführt, dass kein Konflikt auftritt • Vezögerungen nur bei echten Konflikten: R-W und W-W deposit(accnt, amnt) { lock(accnt); accnt += amnt; unlock(accnt); } deposit(accnt, amnt) { atomic { accnt += amnt; } } Mai 16 6 6 TM und Synchronized Java "synchronized" Java arbeitet mit Locks Lock auf Code Block oder Methode serialisiert u.U. Ausführung atomar nur zu anderen Methoden/Code Blöcken, die gleiches Lock verwenden • Deadlock möglich bei verschachtelten "synchronized" Transactional Memory • atomar zu allen anderen atomaren Regionen • kein Deadlock bei verschachtelten "atomics" MPC ZHAW, MPC FS15, M. Thaler • • • • Mai 16 7 7 Implementationen Software Transactional Memory STM • reine Softwarelösungen • eher langsam Hardware Transactional Memory HTM • Hardwarelösung Aktives Forschungsgebiet MPC ZHAW, MPC FS15, M. Thaler Kombination STM/HTM Mai 16 8 8 Vorteile von TM Einfach zu nutzender Synch.-Mechanismus • so einfach wie coarse-grain Locks • Programmier deklariert, das System implementiert Oft so schnell wie fine-grain Locks Failure recovery MPC ZHAW, MPC FS15, M. Thaler • keine verlorenen Locks, wenn Thread fehlschlägt • Recovery: Transaktionsabbruch und Neustart Composability • Software-Module mit Transaktionen können kombiniert werden Produktivität • sehr viel einfacher als fine-grain Locks • Pareto Prinzip: 10% Aufwand für 90% Nutzen von f-g Locks Mai 16 9 9 Nachteile von TM Performance MPC ZHAW, MPC FS15, M. Thaler • Hardware Support notwendig - in Bearbeitung • abhängig von - Zugriffshäufigkeit - grösse des atomaren Bereichs - etc. Mai 16 10 10