RMW-Befehl
Ein Read-Modify-Write-Befehl (RMW-Befehl, englisch für Lesen-Ändern-Schreiben) bezeichnet in der Informatik einen atomaren Prozessorbefehl, der einen Datenwert aus dem Speicher lädt (read), ihn durch eine Berechnung verändert (modify) und den veränderten Wert an einer Speicherstelle, oft derselben, wieder ablegt (write). In einem erweiternden Sinn wird der Begriff auch für analoge Operationen mit Prozessorregistern und Operationen ohne Modifikation verwendet (z. B. Verschiebefehle).
Da der Befehl eine atomare Operation ist, ist sichergestellt, dass die Speicherstelle während der Modifikation nicht von parallel laufenden Prozessen verändert wird. Diese Eigenschaft wird für die Implementierung von Lockingobjekten wie Semaphoren und Mutexen verwendet.
Implementierungen
[Bearbeiten | Quelltext bearbeiten]Je nach Rechnerarchitektur wird der RMW-Befehl als kombinierter Schreib/Lese-Befehl oder als Befehlspaar implementiert. Auf RISC-Architekturen ist diese Operation meist als Load-Link/Store-Conditional Befehlspaar implementiert, da die RISC-Philosophie kombinierte RMW-Befehle nicht erlaubt. Auf CISC-Architekturen wie den Intel x86-Prozessoren ist der kombinierte Compare-and-swap Befehl der vorrangige RMW-Befehl.
Ein Beispiel für einen frühen Prozessor mit RMW-Befehlen ist der 6502 aus den 1970er Jahren. Zwar konnte er noch nicht beliebige Modifikationen durchführen, hatte aber mit den Befehlen INC und DEC immerhin die Möglichkeit, eine Speicherstelle um Eins hoch- (INCrement) bzw. herunterzuzählen (DECrement).