im rahmen des proseminars „technische informatik“ · gliederung geschichte konzept sperren vs....
TRANSCRIPT
Transactional Memory: An Overview
im Rahmen des Proseminars „Technische Informatik“
von Julian Nagel
1
Gliederung
● Geschichte● Konzept● Sperren vs. TM● Hard- und Software Transactional Memory● Implementation von STM● Ausblick
2
Geschichte
1992 Erwähnung als Hardware-Mechanismus von Herlihy und Moos in „Architectural Support for Lock-Free Data Structures“ [1]
→Erste Idee des Transaktionalen Speichers
1995 Erwähnung als Software-Mechanismus von Shavit and Touitou in „Software Transactional Memory“ [2]
→Theoretische Umsetzung als STM
2007 Konzeptpräsentation von Intel [3]
→Kommerzielles Interesse an TM
3
Geschichte
2007-2010 ROCK Prozessor von Sun sollte mit Hardwareunterstützung kommen
→Durch Oracle eingestellt
2009 Bibliothek für C# von Microsoft enthält Transaktionalen Speicher [4]
→Frühe kommerzielle Implementation von STM
2012 Experimentelle Implementation in gcc [5]
→Beispiel folgt
Juni 2013 Intels Prozessoren unterstützen Hardware Transactional Memory (Haswell)
→Erster kommerzieller Einsatz von HTM
4
Konzept Flugplatzreservierung
5
Anfrage
Rückmeldung
Wartezeit
1 2
Lock als Lösung
6
1
2
1. 1 sperrt Flugzeug
2. 1 reserviert
3. 1 gibt Flugzeug frei
4. 2 sperrt Flugzeug
5. 2 reserviert
6. 2 gibt Flugzeug frei
Granularität
7
● „Feinkörnigkeit“● Datenstruktur aufteilen
● Beispiel:– Zwei Zugriffsbereiche
Granularität und Locking
8
1 2 1
2
50%50%
BCS WCS
Max. Granularität
9
● Gezieltes Sperren möglich● Performancegewinn
● Programmieraufwand– Umsetzbarkeit
Sperren
10
● Pessimistisches Konzept– Sicherheit
– Wartezeiten
– Granularität aufwendig● Hoher Programmieraufwand
– Deadlocks
Transaktionen
11
● Andwendung in Shared Memory
● Optimistisches Konzept– Transaktionen laufen parallel
– Konfliktlösung im Nachhinein
– Prioritätsregeln definierbar
Beispiel Transaktionen
12
1 2 1
2
BCS WCS
2%98%2
Ausführzeit Ø Rechenzeit Ø
Lock 1,5x 2x
Transaktionen 1,02x 2,02x
Contra TM
● Kosten einer Kollision können sehr hoch sein● Overhead verursacht Kosten
– Erkennen von Kollisionen ● Logging● Isolation
– Auflösen von Kollisionen● Bewerten/Abwägen
● Deadlock möglich
13
Deadlock in STM
bool a = false;
bool b = false;
//Thread 1: //Thread 2:
atomic atomic
{ {
while (!a); a = true;
b = true; while (!b);
} }
14
Transaktionaler Speicher
15
HardwareTransactional
Memory
HybridTransactional
Memory
SoftwareTransactional
Memory
Hardware Transactional Memory
● CPU unterstützt TM
● Intel Haswell (2013) bietet Hardwareunterstützung (Restricted Transactional Memory)– XBEGIN
● Beginne Transaktion
– XEND● Commit (Übergabe des Caches)
– XABORT● Verwerfen der Transaktion
16
Hardware Transactional Memory
● Konflikte werden durch Software behoben
● HTM nicht immer ausreichen– Rückfall auf STM
=> Hybrid Transactional Memory
17
Software Transactional Memory
● Programmierer erstellt Transaktionen– Einfaches Programmiermodell
● Compiler konvertiert in unterstützte Routinen– z. B. einen Lock-Mechanismus
● Rückmeldung über Erfolg oder Misserfolg
18
Eigenschaften TM
● Atomarität (Atomicity)– Jede Transaktion ist abgeschlossen
● Erfolg oder Misserfolg
● Konsistenzerhaltung (Consistency)– Korrupte Transaktionen werden abgebrochen
● Isolation (Isolation)– Transaktionen werden verwaltet
● Vereinfachte Anwendung
19
Implementation in GCC
● __transaction_atomic { }– Nur atomare Operationen erlaubt
● Erschwertes Logging
● __transaction_relaxed { }– Kompromiss
● Nicht atomare Operationen erlaubt● Gefahr durch Benutzerfehler
20
Implementation in GCC
__transaction_atomic { x = a + b;cout << x; }
● Cout ist keine atomare Operation!– Nicht rückgängig zu machen
=> Compilerfehler
21
Implementation in GCC
__transaction_atomic {__transaction_relaxed {
x = a + b;cout << x; }
● Erlaubt nicht atomare Operationen
=> Compilier- und Ausführbar
22
Implementation in GCC
● __transaction_atomic { c = a-b; }– Einfacher Befehl
● __transaction_atomic { if (a>b) b++; }– Kontrollstrukturen
● __transaction_atomic { g++; h = i-j; }– Mehrere Befehle
23
24
4 Core Performance
ACHTUNG: Support ist noch immer experimentell
25
8 Core Performance
ACHTUNG: Support ist noch immer experimentell
Forschungsmodelle
● TCC - TM Coherence and Consistency– 2004 [c]
● UTM - Unbounded TM– 2005 [d]
● VTM - Virtual TM– 2005 [e]
● LogTM - Log-based TM– 2006 [a]
● LTM - Large TM– 2008 [b]
26
Zusammenfassung
● TM steckt noch in den Kinderschuhen
● Großes Performancepotential
● Integration in Programmiersprachen
27
Quellen● [1] http://www.cs.utexas.edu/~pingali/CS395T/2009fa/lectures/herlihy93transactional.pdf (08.07.14)
● [2] http://web.cse.ohio-state.edu/~agrawal/788-su08/Papers/week4/shavit95software.pdf (08.07.14)
● [3] https://www.youtube.com/watch?v=YfTkHopSkKs (08.07.14)
● [4] http://www.microsoft.com/germany/visualstudio/aktuell/news/show.aspx?id=msdn_de_34342 (08.07.14)
● [5] https://gcc.gnu.org/wiki/TransactionalMemory (08.07.14)
● [a] http://research.cs.wisc.edu/multifacet/papers/hpca06_logtm.pdf
● [b] http://research.cs.wisc.edu/multifacet/papers/isca08_tokentm.pdf
● [c] http://tcc.stanford.edu/publications/tcc_isca2004.pdf
● [d] http://supertech.csail.mit.edu/papers/xaction.pdf
● [e] http://pages.cs.wisc.edu/~isca2005/papers/08A-02.PDF
● https://en.wikipedia.org/wiki/Transactional_memory (27.06.14)
● https://de.wikipedia.org/wiki/ACID (27.06.14)
● http://www-users.cs.umn.edu/~boutcher/stm/ (27.06.14)
● https://gcc.gnu.org/wiki/TransactionalMemory (27.06.14)
● http://www.microsoft.com/germany/visualstudio/aktuell/news/show.aspx?id=msdn_de_34342 (27.06.14)
● http://www.ipd.uka.de/Tichy/uploads/folien/138/Cluster05STM.pdf (27.06.14)
● http://www.betriebssysteme.org/Aktivitaeten/Treffen/2009-Bommerholz/Programm/docs/Talks/schoettner.pdf (27.06.14)
● https://gcc.gnu.org/wiki/TransactionalMemory?action=AttachFile&do=view&target=Intel-TM-ABI-1_1_20060506.pdf
●
28
Bildquellen● http://www-users.cs.umn.edu/~boutcher/stm/chart_1.png
● http://www-users.cs.umn.edu/~boutcher/stm/chart_3.png
● http://img.welt.de/img/panorama_original/crop105349756/2468624551-ci16x9-w580/111105-ferrari-DW-Sonstiges-Shimonoseki.jpg
http://www-users.cs.umn.edu/~boutcher/stm/rbtree.svg
● http://www.seatmaestro.com/images/newmaps/1662_Iberia%20Airbus%20A319%20Config1.png
● http://www.abload.de/img/randomc72xs770.png
29