x86-Speichermodell und Release-Acquire-Semantik
Im Nachgang zu einer früheren Anfrage zur Implementierung von atomaren Speicherspeichern „memory_order_release“ mithilfe von MOV x86-Anweisung wurden Fragen dazu aufgeworfen, wie Release-and-Acquire auf x86 ohne zusätzliche Synchronisierungsmechanismen wie Zäune usw. erreicht wird Sperren.
Einzelprozessor-Speicherreihenfolge
Intels Band 3A, Kapitel 8 seines Systementwicklungshandbuchs besagt, dass in einem Einzelprozessorsystem Lade- und Schreibvorgänge eine bestimmte Reihenfolge haben Garantien:
Multi -Ordnung des Prozessorspeichers
Der Multiprozessor-Abschnitt des Dokuments sieht dies jedoch nicht explizit vor Erwähnen Sie, wie Lasten durchgesetzt werden. Der Schwerpunkt liegt auf:
Erfassung und Freigabe mithilfe von MOV
Verständnis Die Prinzipien der Einzelprozessor-Speicheranordnung sind von entscheidender Bedeutung. Laut Handbuch gelten für Multiprozessorsysteme beim Zugriff auf Cache-kohärenten Shared Memory die gleichen Prinzipien. Dies bedeutet, dass die Neuordnung nur lokal innerhalb jedes CPU-Kerns erfolgt.
Sobald ein Speicher global sichtbar wird, wird er für alle Kerne gleichzeitig sichtbar, wodurch sichergestellt wird, dass alle Kerne die Schreibvorgänge in einer konsistenten Reihenfolge ausführen. Aus diesem Grund sind nur lokale Barrieren wie mfence in x86 erforderlich, um sequentielle Konsistenz herzustellen.
Kohärente gemeinsame Sicht auf den Speicher
Die x86-Architektur verwaltet eine kohärente gemeinsame Ansicht Ansicht des Speichers durch kohärente Caches. Intels Definition von Multiprozessormechanismen unterstreicht die Bedeutung der Speicherkohärenz und Cache-Konsistenz, um sicherzustellen, dass alle Prozessoren Zugriff auf die gleichen Daten haben.
Zusätzlich Ressourcen
Das obige ist der detaillierte Inhalt vonWie erreicht x86 eine Release-Acquire-Semantik ohne explizite Zäune?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!