Kann Hyperthreading die Atomizität von 32 Bit int als Lese- / Schreiben auf einen 32-Bit-Prozessor beeinflussen?

StackOverflow https://stackoverflow.com//questions/9715016

Frage

Ich habe irgendwo gelesen, dass Hyperthreading 32-Bit int (auf einem 32-Bit-Prozessor) erstellen kann (auf einem 32-Bit-Prozessor), der nicht atomal gelesen und schreibt, selbst wenn es die Grenze ausgerichtet ist.Kann jemand erklären, wie hyperthreading das wirkt?

War es hilfreich?

Lösung

Wenn das stimmt, wäre es ein sicherer, schrecklicher CPU-Fehler, der für ein bestimmtes Modell oder ein bestimmtes Modell spezifisch sein würde. Dieses 32-Bit-Lese- und Schreibvorgang ist atomic, ist grundlegend für die Eigenschaften der X86-Plattform und wird von Windows, Linux und Lose und viel Anwendungssoftware angewendet.

Das einzige, was ich mir vorstellen kann, dass dies möglicherweise bezieht sich auf das Übergang von Single-Core-CPUs ohne Hyper-Threading auf ein-physikalisch-Kern-CPUs mit Hyper-Threading. Auf einer Single-Core-X86-CPU ohne Hyper-Threading, einzelne Anweisungen (z. B. Inkrement), die Lesemodifikations-Schreibvorgänge auf ausgerichteten 32-Bit-Variablen verwenden, sind auch ohne Sperren-Präfix Atomic. (Sie sind nicht garantiert, sie sind es einfach Sperren Präfix.

Es ist ein irrelevanter Ausscheiden, da die große Mehrheit der CPUs Ihre Software auf der einen oder anderen Weise mehr als einen Kern haben wird. SO SO SO SINGLICHE ANFALLE LESE-MODIFION-WRITE-Operationen auf ausgerichteten 32-Bit-Werten sind nicht atomial, sofern nicht gesperrt. (Austausch ist die Ausnahme, da es auch ohne das Präfix gesperrt ist.)

Andere Tipps

Ausgerichtetes Lesen oder Schreiben ist immer atomar, auch auf Multi-CPU-Systemen.Was ist nicht atomar (und das ist wahrscheinlich das, was Sie gehört haben - oder zumindest das, was Sie hören sollen), sind Lesemodifikationsanweisungen wie inkrementiert oder mit einem Speicherzielen hinzugefügt.Diese sind auch nicht in HT-Systemen atomar, aber sie sind atomar (nicht durch Garantie, eher zufällig) auf Systemen mit einer einzigen logischen CPU, auch wenn nicht gesperrt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top