Multicore und Synchronisation

Welche Aussage zur sequentiellen Konsistenz (Sequential Consistency) ist richtig?

  1. ADie Operationen der Kerne werden jedes Mal in zufälliger Reihenfolge ausgeführt
  2. BDie Operationen aller Kerne werden in eine einzige Reihenfolge gebracht, und die Operationen jedes Kerns erscheinen in der im Programm geschriebenen Reihenfolge
  3. CAlle Operationen werden auf nur einem Kern ausgeführt
Antwort und Erläuterung anzeigen

Antwort: B. Die Operationen aller Kerne werden in eine einzige Reihenfolge gebracht, und die Operationen jedes Kerns erscheinen in der im Programm geschriebenen Reihenfolge

Bei sequentieller Konsistenz werden die Operationen mehrerer Kerne wie beim Mischen von Spielkarten in eine einzige Reihe gebracht, wobei die Operationen jedes Kerns darin ihre Programmreihenfolge einzuhalten scheinen. Es ist das für Programmierer verständlichste Modell, schränkt aber Optimierungen stark ein, bei denen die Hardware die Reihenfolge etwa über Store-Buffer ändert; viele reale CPUs verwenden daher deutlich schwächere Modelle.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Multicore und Synchronisation

  1. Die beiden obigen Threads laufen gleichzeitig auf getrennten Kernen (ohne Umordnung durch den Compiler). Welches Ergebnis tritt bei sequentieller Konsistenz nicht auf, kann aber bei realen CPUs wie x86 auftreten?
  2. Welches Merkmal des Speicherkonsistenzmodells von x86 (TSO, Total Store Order) ist richtig?
  3. Was gilt für schwache Speicherkonsistenzmodelle wie bei ARM oder RISC-V (RVWMO)?
  4. Welche Aufgabe haben Memory-Barrier-(Fence-)Befehle?
  5. 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?

Vergleiche zu diesem Thema