Multicore und Synchronisation

Welches Merkmal des Speicherkonsistenzmodells von x86 (TSO, Total Store Order) ist richtig?

  1. AEs ist das schwächste Modell, das jede Umordnung von Lese- und Schreibkombinationen erlaubt
  2. BEs ist genau die sequentielle Konsistenz, die keinerlei Umordnung erlaubt
  3. CEs ist ein vergleichsweise starkes Modell, das nur erlaubt, dass ein Lesen einer anderen Adresse nach einem Schreiben vor diesem Schreiben sichtbar wird
Antwort und Erläuterung anzeigen

Antwort: C. Es ist ein vergleichsweise starkes Modell, das nur erlaubt, dass ein Lesen einer anderen Adresse nach einem Schreiben vor diesem Schreiben sichtbar wird

Bei TSO bleiben die Reihenfolge von Schreibvorgängen untereinander, von Lesevorgängen untereinander und von Schreiben nach Lesen erhalten; nur ein Lesen einer anderen Adresse nach einem Schreiben kann dieses überholen. Es ist ein Modell, das die Existenz des Store-Buffers direkt widerspiegelt. Viele Programme laufen in diesem Rahmen intuitiv korrekt, sodass bei x86 Barrieren vergleichsweise selten nötig sind.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Was gilt für schwache Speicherkonsistenzmodelle wie bei ARM oder RISC-V (RVWMO)?
  2. Welche Aufgabe haben Memory-Barrier-(Fence-)Befehle?
  3. Im obigen Code bereitet Thread 1 data vor und signalisiert dies mit flag; Thread 2 liest data, nachdem er flag gesehen hat. Was ist nötig, damit Thread 2 auf einer CPU mit schwachem Speicherkonsistenzmodell sicher 42 liest?
  4. Was gilt für Speicheroperationen mit Acquire- und Release-Semantik?
  5. Warum genügt es in C nicht als Synchronisation, eine für den Austausch zwischen Threads verwendete Flag-Variable nur mit volatile zu versehen?

Vergleiche zu diesem Thema