Multicore und Synchronisation
Wann schlägt bei einem Befehlspaar wie LR/SC (Load-Reserved/Store-Conditional) von RISC-V das SC (Store-Conditional) fehl?
- AWenn der mit SC geschriebene Wert dem mit LR gelesenen Wert entspricht
- BWenn zwischen LR und SC die Reservierung verloren ging, etwa weil ein anderer Kern an diese Adresse geschrieben hat
- CWenn zwischen LR und SC auch nur ein weiterer Befehl ausgeführt wurde
Antwort und Erläuterung anzeigen
Antwort: B. Wenn zwischen LR und SC die Reservierung verloren ging, etwa weil ein anderer Kern an diese Adresse geschrieben hat
LR „reserviert“ die Adresse zugleich mit dem Lesen des Wertes. Beim anschließenden Schreiben mit SC gelingt dieses, wenn die Reservierung erhalten ist; ist sie z. B. durch ein Schreiben eines anderen Kerns verloren gegangen, wird nicht geschrieben und ein Fehlschlag gemeldet. Während CAS auf Wertgleichheit prüft, prüft LR/SC, ob geschrieben wurde; deshalb wird auch erkannt, wenn sich ein Wert einmal geändert hat und wieder auf den ursprünglichen zurückgekehrt ist. Auch ARM besitzt ein ähnliches Befehlspaar.