Heim > Backend-Entwicklung > C++ > Können moderne x86-CPUs wirklich nicht atomar ein einzelnes Byte im Speicher speichern?

Können moderne x86-CPUs wirklich nicht atomar ein einzelnes Byte im Speicher speichern?

Linda Hamilton
Freigeben: 2024-12-29 08:49:10
Original
626 Leute haben es durchsucht

Can Modern x86 CPUs Really Not Atomically Store a Single Byte to Memory?

Kann moderne x86-Hardware kein einziges Byte im Speicher speichern?

Stroustrups Aussage in seinem Buch bezieht sich auf das potenzielle Verhalten hypothetischer Hardware ohne ein wohldefiniertes Speichermodell. Er schlägt vor, dass solche Hardware Bytespeicher mit nicht-atomaren Aktualisierungen implementieren könnte, was sich möglicherweise auf benachbarte Bytes auswirkt.

Tatsächliches Verhalten moderner Hardware

Moderne Hardware, einschließlich x86, verhält sich nicht so, wie Stroustrup es beschreibt:

  • Einzelbyte-Speicher auf x86-Hardware sind es atomar und stören umgebende Bytes nicht.
  • Die Implementierung von Bytespeichern mit atomaren RMW-Zyklen (Lesen-Ändern-Schreiben) ist auf Hochleistungs-CPUs unnötig und ineffizient.
  • Einige Nicht-x86-CPUs können dies tun Verwenden Sie intern atomare RMW-Zyklen, um Bytespeicher zu implementieren. Dies ist jedoch für externe Benutzer nicht sichtbar Software.

Historischer Kontext

Stroustrups Aussage basierte möglicherweise auf dem Verhalten früher Alpha AXP-Prozessoren, die ursprünglich keine Anweisungen zum Laden/Speichern von Bytes unterstützten . Spätere Versionen von Alpha und alle modernen CPUs unterstützen jedoch sichere und effiziente Bytespeicher.

Hardware-Implementierung

Moderne CPUs verwenden normalerweise Caches, die Speichersegmente speichern. In einem zwischengespeicherten System:

  • Alle Bytespeicher innerhalb einer Cache-Zeile sind atomar.
  • Die CPU ruft die gesamte Cache-Zeile ab, ändert das Byte und schreibt die Zeile zurück in den Speicher.
  • Der Cache-Controller behält die Kontrolle über die Leitung, während die Byte-Aktualisierung durchgeführt wird, und verhindert so unbeabsichtigte Änderungen durch andere Kerne.

Ausnahmen

Während moderne CPUs atomare Bytespeicher bereitstellen, kann es in bestimmten Situationen Ausnahmen geben:

  • Nicht zwischenspeicherbar Speicherbereiche verfügen möglicherweise nicht über die gleichen Sicherheitsvorkehrungen, was möglicherweise nicht-atomare Bytes zulässt schreibt.
  • E/A-Vorgänge an Geräte sind auf Byte-Ebene möglicherweise nicht atomar.

Fazit

In der Praxis moderne Hardware unterstützt atomare Bytespeicher, wodurch Stroustrups Beschreibung des potenziellen Hardwareverhaltens für tatsächliche Systeme weniger relevant ist. Die von C-Compilern bereitgestellten Speichermodellgarantien basieren auf dem zuverlässigen Verhalten moderner Hardware, um Thread-Sicherheit zu gewährleisten.

Das obige ist der detaillierte Inhalt vonKönnen moderne x86-CPUs wirklich nicht atomar ein einzelnes Byte im Speicher speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage