Transaktionaler Speicher

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Transactional Memory)
Wechseln zu: Navigation, Suche

Transaktionaler Speicher ist ein Hauptspeicherkonzept für parallele Berechnungseinheiten, die auf gemeinsame Speicherbereiche 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 transaktionalen Speicher gab es anfangs nur als Forschungsprototypen, zum Beispiel das ATLAS-System der Universität Stanford.[1] 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.[2]

Das Konzept stammt von Maurice Herlihy und Eliot Moss.

Konzept[Bearbeiten]

Parallele Programmierung führt oft zu Blockierungen innerhalb des Systems (so genannte Deadlocks). 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. Welche Transaktion abgebrochen wird, entscheidet ein intelligenter Verwaltungsmechanismus, das Herzstück eines transaktionalen Speichers.

Verfügbarkeit[Bearbeiten]

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 der kommenden Haswell-Architektur will Intel das Konzept unter dem Namen Transactional Synchronization Extensions als x86-Architektur-Erweiterung anbieten.

Auf der ISSCC 2008 stellte Sun Microsystems mit dem ROCK-Prozessor[3] 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[4][5].

Forschungsmodelle[Bearbeiten]

  • UTM – Unbounded Transactional Memory [6]
  • LTM – Large Transactional Memory
  • VTM – Virtual Transactional Memory
  • LogTM – Log-based Transactional Memory
  • TCC – Transactional Memory Coherence and Consistency

Literatur[Bearbeiten]

  •  Maurice Herlihy, J. Eliot B. Moss: Transactional memory: Architectural support for lock-free data structures. In: Proceedings of the 20th International Symposium on Computer Architecture (ISCA). 1993, S. 289–300 (PDF).
  • Larus, J.R. and Rajwar, R. Transactional Memory, Morgan & Claypool, 2006.

Einzelnachweise[Bearbeiten]

  1. TCC Prototypes
  2. http://www.heise.de/newsticker/meldung/Transactional-Memory-fuer-Intels-Haswell-Prozessor-1432877.html
  3. vgl. Artikel in der englischsprachigen Wikipedia
  4. http://www.opensparc.net/pubs/preszo/08/RockISSCC08.pdf
  5. Special Report: Can that guy in Ironman 2 whip IBM in real life?. Reuters. 12. Mai 2010. Abgerufen am 21. Mai 2011.
  6. http://www.cs.wisc.edu/trans-memory/