Zum Inhalt springen

„Load-Link/Store-Conditional“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Tippfehler entfernt
Eginho (Diskussion | Beiträge)
K -tation -> -tierung, Semantik
Zeile 3: Zeile 3:
LL/SC Operationen dienen zur Implementierung von [[Atomare Operation|atomaren Operationen]] ohne die Verwendung von [[Lock]]s (''lock-free''). Durch die Verknüpfung von Lese- und Schreiboperation ist ihre Semantik ist enger gefasst als bei der [[Compare-and-swap]] Operation, da diese keinen (nicht-verändernden) Zugriff auf die referenzierte Speicherstelle erkennen kann.
LL/SC Operationen dienen zur Implementierung von [[Atomare Operation|atomaren Operationen]] ohne die Verwendung von [[Lock]]s (''lock-free''). Durch die Verknüpfung von Lese- und Schreiboperation ist ihre Semantik ist enger gefasst als bei der [[Compare-and-swap]] Operation, da diese keinen (nicht-verändernden) Zugriff auf die referenzierte Speicherstelle erkennen kann.


Implementation des LL/SC Befehlspaares existieren auf verschiedenen [[Rechnerarchitektur]]en, u.a.:
Implementierungen des LL/SC Befehlspaares existieren auf verschiedenen [[Rechnerarchitektur]]en, u.a.:
ldl_l/stl_c und ldq_l/stq_c ([[Alpha-Prozessor]]), lwarx/stwcx ([[PowerPC]]), ll/sc ([[MIPS-Architektur]]), und ldrex/strex ([[ARM-Architektur]] ab Version 6). Diese Architekturen basieren meist auf der [[RISC]] Philosophie, deren [[Befehlssatz]] die Speicherzugriffe auf [[Load/Store-Architektur|Lese- und Schreibbefehle]] reduziert.
ldl_l/stl_c und ldq_l/stq_c ([[Alpha-Prozessor]]), lwarx/stwcx ([[PowerPC]]), ll/sc ([[MIPS-Architektur]]), und ldrex/strex ([[ARM-Architektur]] ab Version 6). Diese Architekturen basieren meist auf der [[RISC]] Philosophie, deren [[Befehlssatz]] die Speicherzugriffe auf [[Load/Store-Architektur|Lese- und Schreibbefehle]] reduziert.


== Starke und Schwache Implementation ==
== Starke und Schwache Semantik ==
In der engen Auslegung der Semantik schlägt das LL/SC Befehlspaar nur dann fehl, wenn zwischen dem LL und dem SC Befehl eine Zugriff auf die referenzierte Speicherstelle stattfindet.
In der engen Auslegung der Semantik schlägt das LL/SC Befehlspaar nur dann fehl, wenn zwischen dem LL und dem SC Befehl eine Zugriff auf die referenzierte Speicherstelle stattfindet.



Version vom 8. Februar 2009, 13:05 Uhr

Load Link/Store Conditional (LL/SC) (engl. etwa „Referenz Laden/bedingt Schreiben“) ist ein Paar von Prozessor-Befehlen, die eine read-modify-write Operation implementieren. Der LL Befehl lädt eine Speicherstelle, ihr Inhalt kann verändert werden, und der SC Befehl schreibt den neuen Wert zurück in die referenzierte Speicherstelle, unter der Bedingung, dass diese nicht verändert wurde. Wurde die Speicherstelle verändert, schlägt die Schreiboperation fehl. Für den Grad der Veränderung gibt es eine starke und eine schwache Semantik (s.u.).

LL/SC Operationen dienen zur Implementierung von atomaren Operationen ohne die Verwendung von Locks (lock-free). Durch die Verknüpfung von Lese- und Schreiboperation ist ihre Semantik ist enger gefasst als bei der Compare-and-swap Operation, da diese keinen (nicht-verändernden) Zugriff auf die referenzierte Speicherstelle erkennen kann.

Implementierungen des LL/SC Befehlspaares existieren auf verschiedenen Rechnerarchitekturen, u.a.: ldl_l/stl_c und ldq_l/stq_c (Alpha-Prozessor), lwarx/stwcx (PowerPC), ll/sc (MIPS-Architektur), und ldrex/strex (ARM-Architektur ab Version 6). Diese Architekturen basieren meist auf der RISC Philosophie, deren Befehlssatz die Speicherzugriffe auf Lese- und Schreibbefehle reduziert.

Starke und Schwache Semantik

In der engen Auslegung der Semantik schlägt das LL/SC Befehlspaar nur dann fehl, wenn zwischen dem LL und dem SC Befehl eine Zugriff auf die referenzierte Speicherstelle stattfindet.

Auf vielen Architekturen führen aber auch andere Ereignisse zu einem überflüssigen Fehlschlag, z.B. bei Kontextwechseln, Interrupts oder auch anderen Speicherzugriffen.

Siehe auch