# Transaktionaler Speicher

Transaktionaler Speicher ist ein Konzept in der Informatik für parallele Berechnungseinheiten, die auf gemeinsame Arbeitsspeicherbereiche zugreifen, wie z. B. Threads oder Mehrprozessorsysteme. Ziel ist es, damit die Ausführungsgeschwindigkeit gegenüber bisherigen Synchronisationsverfahren zu steigern, sowie die Schwierigkeiten der Synchronisierung zu lösen, die bei paralleler Software entstehen, insbesondere, wenn diese aus mehreren voneinander unabhängig entwickelten Komponenten besteht. Transaktionaler Speicher kann entweder komplett als Software (STM), als Hardware (HTM) oder mit Hardware-Unterstützung (Hybrid-HTM) implementiert werden.
Bestehende Systeme mit durch Hardware unterstütztem transaktionalem Speicher gab es anfangs nur als Forschungsprototypen, zum Beispiel das ATLAS-System der Universität Stanford. Inzwischen sind die Systeme aber zur Serienreife gelangt. Der erste Prozessor mit transaktionalem Speicher war IBMs BlueGene/Q. Intel hat im Februar 2012 angekündigt, seine nächste Prozessorgeneration namens Haswell mit transaktionalem Speicher auszustatten.
Das Konzept stammt von Maurice Herlihy und Eliot Moss.

## Konzept

Bei der parallelen Programmierung können sich schnell Fehler einschleichen, welche zu Blockierungen innerhalb des Systems (so genannte Deadlocks) führen können. Transaktionaler Speicher soll dieses Problem grundsätzlich lösen und dadurch die Parallelisierung von Software erheblich vereinfachen.
Die Idee des transaktionalen Speichers stammt aus der Architektur von Datenbanksystemen. Eine Transaktion bündelt Befehle, die auf gemeinsame Ressourcen zugreifen. Falls zwei Transaktionen auf die gleiche Ressource zugreifen möchten, wird eine der beiden Transaktionen abgebrochen. Diese gibt die besetzten Ressourcen frei und setzt alle getätigten Änderungen zurück (Rollback). Welche Transaktion abgebrochen wird, entscheidet ein intelligenter Verwaltungsmechanismus, das Herzstück eines transaktionalen Speichers.

## Verfügbarkeit

Bisher gab es nur softwarebasierte Verfahren zur Realisierung transaktionalen Speichers (software transactional memory, STM), die jedoch langsamer als hardwarebasierte Verfahren sind. Der Mehraufwand, der bei den Programmen entsteht, die STM nutzen, ist zu groß, um mit Systemen mit herkömmlichen Synchronisationsmechanismen konkurrieren zu können.
Der Computerchiphersteller Intel demonstrierte den Geschwindigkeitsvorteil von transaktionalem Speicher erstmals auf einer Entwicklerkonferenz Anfang 2006, allerdings nur anhand einer Software-Simulation. Mit ausgewählten CPUs der aktuellen Haswell-Architektur bietet Intel das Konzept unter dem Namen Transactional Synchronization Extensions als x86-Architektur-Erweiterung an.
Auf der ISSCC 2008 stellte Sun Microsystems mit dem ROCK-Prozessor Details eines 16-kernigen SPARC-Prozessors mit Hardware-unterstütztem transaktionalem Speicher vor. Dessen Entwicklung wurde jedoch mit der Übernahme von Sun durch Oracle im Jahr 2010 eingestellt.

## Forschungsmodelle

* UTM – Unbounded Transactional Memory
* LTM – Large Transactional Memory
* VTM – Virtual Transactional Memory
* LogTM – Log-based Transactional Memory
* TCC – Transactional Memory Coherence and Consistency