- Transaktionsspeicher
-
Mit Transactional Memory bezeichnet man ein neues Hauptspeicherkonzept, das bei Mehrprozessorsystemen zum Einsatz kommen soll. Ziel ist es die Schwierigkeiten der Synchronisierung und Koordination, die bei parallelen Berechnungen entstehen, vom Programmierer in den Compiler und Hardware zu verlagern. Bisher befindet sich Transactional Memory noch im Forschungsstadium. Mit seiner Serienreife wird erst in einigen Jahren gerechnet. Transactional Memory kann entweder komplett in Software (STM), als Hardware (HTM) oder mit Hardware-Unterstützung (Hybrid-HTM) implementiert werden. Bestehende Hardware Transaktionale Speichersystem gibt es zurzeit nur als Forschungsprototypen, zum Beispiel das ATLAS-System der Universität Stanford [1].
Inhaltsverzeichnis
Motivation
Mittlerweile hat praktisch jeder Desktop Computer oder Notebook einen Hauptprozessor mit mehreren Prozessorkernen, doch nur wenige Programme sind in der Lage dies auch auszunutzen. Bei bisherigen Speicherkonzepten hat ein Prozessor oder ein Programm seine Speicherbereiche stets exklusiv für sich beansprucht. Andere parallel laufende Software konnten darauf nicht zugreifen. Darüber hinaus bieten gemeinsame Speicherbereiche Möglichkeiten der parallelen Programmierung, was jedoch oft zu Deadlocks, Livelocks führt und schlecht skaliert. Transactional Memory soll die Parallelisierung vereinfachen und diese Probleme reduzieren helfen.
Die Idee von Transactional Memory stammt von der Architektur von Datenbanksystemen. Eine Transaktion bündelt Befehle, die auf gemeinsame Ressourcen zugreift. Falls zwei Transaktionen auf die gleiche Ressource zugreifen möchten, wird eine der beiden Transaktionen abgebrochen. Dieser gibt die besetzten Ressourcen frei und setzt alle gemachten Änderungen zurück. Die Wahl welche Transaktion abgebrochen wird entscheidet ein intelligenter Verwaltungsmechanismus, das Herzstück eines Transactional Memory Systems.
Transaktion
Eine Transaktion ist eine Sequenz von Aktionen, die für den außenstehenden Beobachter atomar erscheint. Sie muss drei grundlegende Eigenschaften erfüllen:
- Atomarität verlangt, dass die Aktionen einer Transaktion entweder komplett und erfolgreich ausgeführt werden, oder aber bei einem Abbruch keine Spuren davon im System übrig bleiben.
- Kontinuität sorgt dafür, dass das System immer in einem konsistenten Zustand ist. Eine Transaktion hat keine Information darüber was für Transaktionen bisher ausgeführt wurden, wenn eine Transaktion startet geht sie davon aus, dass das System in einem konsistentem Zustand ist und in diesem Zustand muss das System auch wieder sein wenn es von der Transaktion verlassen wird.
- Isolation erfordert, dass jede Transaktion ein korrektes Resultat produziert, ganz egal wie viele andere Transaktionen parallel dazu ausgeführt werden.
Verschachtelte Transaktionen
Eine verschachtelte Transaktion ist eine Transaktion, die vollständig von einer anderen Transaktion umschlossen wird. Die innere Transaktion sieht die Veränderungen, die von der äußeren gemacht werden. Für das Verhalten der beiden Transaktionen gibt es mehrere Varianten.
Falls die Transaktionen flach sind, führt der Abbruch der inneren Transaktion auch zu einem Abbruch der äußeren Transaktion. Die Änderungen der inneren Transaktion sind nicht gültig falls die äußere Transaktion nicht erfolgreich abgeschlossen wird.
Sind die Transaktionen geschlossen, führt ein Abbruch der inneren Transaktion nicht automatisch zu einem Abbruch der äußeren Transaktion. Schließt die innere Transaktion ihre Aktionen erfolgreich ab, sind die gemachten Änderungen nur für die äußere Transaktion sichtbar. Für das ganze System ist die Änderung erst sichtbar, wenn die äußerste Transaktion erfolgreich terminiert.
Im Gegensatz dazu wird bei offenen Transaktionen die Änderung der inneren Transaktion sofort nach deren Termination im ganzen System sichtbar. Diese Änderungen bleiben bestehen auch wenn die äußere Transaktion später abgebrochen wird.
Verfügbarkeit
Bisher existieren nur softwarebasierte Verfahren zur Verwaltung parallel genutzten Speichers, sog. Software Transactional Memory. Diese sind jedoch naturgemäß langsamer als hardwarebasierte Konzepte und zeigen keine gute Skalierbarkeit. Der Overhead, der bei den Programmen, die STM nutzen, entsteht ist im Moment noch zu groß um den Systemen mit traditionellen Locks Konkurrenz zu bieten.
Der Computerchiphersteller Intel demonstrierte den Geschwindigkeitsvorteil von Transactional Memory erstmals auf einer Entwicklerkonferenz Anfang 2006, allerdings nur anhand einer Software-Simulation. Bis zur Verfügbarkeit von handelsüblichen Speicherbausteinen und Geräten werden noch mehrere Jahre vergehen.
Einer Meldung auf "Heise Online" nach, will Sun auf der am 4. Februar 2008 begonnenen ISSCC "erstmals Details über ihren 16-kernigen Sparc-Prozessor mit dem Codenamen 'Rock' vorstellen"[2], welcher Transactional Memory nutzen soll.
Forschungsmodelle [3]
- UTM - Unbounded Transactional Memory
- LTM - Large Transactional Memory
- VTM - Virtual Transactional Memory
- LogTM - Log-based Transactional Memory
- TCC - Transactional Memory Coherence and Consistency
Einzelnachweise
- ↑ http://tcc.stanford.edu/prototypes/
- ↑ http://www.heise.de/newsticker/meldung/102913
- ↑ http://www.cs.wisc.edu/trans-memory/
Literatur
- Laurus, J.R. and Rajwar, R. Transactional Memory, Morgan & Claypool, 2006.
Wikimedia Foundation.