Atomizität von Ladungen und Speichern auf x86
Die x86-Architektur garantiert Atomizität für ausgerichtete Ladungen und Speicherungen bis zur Größe der Datenpfade zwischen Kernen, Speicher und I/O-Bussen. Dies bedeutet, dass eine einzelne Operation unteilbar ausgeführt wird und jede andere Operation, die sie beobachtet, erkennt, dass sie vollständig oder gar nicht ausgeführt wurde.
Intern kann die CPU die Atomizität „kostenlos“ für ausgerichtete Operationen implementieren, weil Die Datenübertragung erfolgt über einen ausreichend breiten Datenbus oder über eine einzelne Nachricht. Für umfassendere Zugriffe oder nicht ausgerichtete Vorgänge muss der Vorgang möglicherweise in kleinere Teile aufgeteilt und komplexere Vorgänge ausgeführt werden.
Atomere Operationen und Cache
Atomere Vorgänge können vollständig erfolgen im Cache, solange der Vorgang keine Cache-Zeilengrenze überschreitet. Dies bedeutet, dass Änderungen am Cache ausreichen, um die Atomizität sicherzustellen.
Atomic Read-Modify-Writes
Atomic Read-Modify-Write (RMW)-Vorgänge sind schwieriger umzusetzen. Die CPU kann eine Cache-Zeile im geänderten Zustand halten und Cache-Kohärenzmeldungen ignorieren, während der Vorgang ausgeführt wird, sodass sie für andere Kerne atomar erscheint.
Unaligned Locked Operations
Nicht ausgerichtete gesperrte Vorgänge erfordern möglicherweise komplexere Hardware-Eingriffe, z. B. das Ersetzen einer Bussperre, um andere Zugriffe während des Vorgangs zu verhindern.
Das obige ist der detaillierte Inhalt vonWie atomar sind x86-Ladungen und -Speicher und welche Faktoren beeinflussen die Atomarität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!