Atomere Operationen auf x86: Eine interne Perspektive
Im Gegensatz zu ersten Eindrücken, die darauf hindeuten, dass Speicheroperationen direkt im RAM ausgeführt werden, sind atomare Operationen darauf beschränkt der Cache. Diese Kohärenz zwischen Kernen und die Verwendung von Cache-kohärentem DMA stellen sicher, dass Speicherzugriffe für alle Beobachter im System atomar erscheinen.
Atomizität hat insbesondere nichts mit der Speicherreihenfolge zu tun, und ausgerichtete Ladevorgänge und Speicherungen bis zu 64 Bit bleiben erhalten atomar, unabhängig von der Reihenfolge. Dies liegt daran, dass solche Vorgänge innerhalb der breiten Datenpfade zwischen Kernen, Speicher und PCIe-Bussen ausgeführt werden können, wodurch Unteilbarkeit gewährleistet ist, ohne dass zusätzliche Hardware erforderlich ist.
Die CPU garantiert dank ihrer Fähigkeit Atomizität für ausgerichtete Lasten und Speicher um Cache-Zeilen atomar zu ändern. Dadurch können atomare Vorgänge vollständig im Cache ausgeführt werden, ohne dass sie unbedingt den Hauptspeicher erreichen müssen. Speicher, die breiter als der Datenpfad sind, erfordern jedoch Schutz durch eine Sperre, die von allen Zugriffen respektiert wird.
Atomale Lese-, Änderungs- und Schreibvorgänge (RMW) stellen eine größere Herausforderung dar. Um einen RMW atomar auszuführen, behält der Kern eine Cache-Zeile im geänderten Zustand bei und verhindert so externe Änderungen, bis der Vorgang abgeschlossen ist. Für nicht ausgerichtete RMWs kann tatsächlicher DRAM-Speicher erforderlich sein, um die Atomizität über mehrere Cache-Zeilen hinweg zu erzwingen, was möglicherweise die Aktivierung einer Bussperre erfordert.
Das obige ist der detaillierte Inhalt vonWie funktionieren atomare Operationen auf x86-Prozessoren: Cache, Speicher und Atomarität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!