Inhaltsverzeichnis
Ist atomare Unterstützung auf Assembly-Ebene für Doubles und Vectors in x86_64 verfügbar?
Atomere Lasten und Speicher für Vektoren
Atomere Lese-, Änderungs- und Schreiboperationen
Sonderfälle für atomare Operationen
Atomic Vector Loads and Stores
Atomere Operationen für 16B-Objekte
Heim Backend-Entwicklung C++ Bietet x86_64 echte atomare Unterstützung für Gleitkommawerte und Vektoren mit doppelter Genauigkeit?

Bietet x86_64 echte atomare Unterstützung für Gleitkommawerte und Vektoren mit doppelter Genauigkeit?

Dec 02, 2024 am 02:57 AM

Does x86_64 Offer True Atomic Support for Double-Precision Floating-Point Values and Vectors?

Ist atomare Unterstützung auf Assembly-Ebene für Doubles und Vectors in x86_64 verfügbar?

Während C 11 std::atomic<double> Da es bei typischen Implementierungen im Allgemeinen sperrenfrei ist, unterliegt es aufgrund möglicher Ineffizienzen im vom Compiler generierten Code Einschränkungen in der Effizienz. Compiler erzeugen möglicherweise nicht immer eine optimale Assembly für atomare Operationen mit Gleitkommawerten.

Außerdem stellt C 11 std::atomic keine API für Intels Transactional-Memory-Erweiterungen (TSX) für Ganzzahl- oder Gleitkommawerte bereit. Punktoperationen. TSX kann die Leistung für atomare Operationen erheblich verbessern, indem es den mit der Datenverschiebung zwischen Allzweckregistern und Gleitkommaregistern verbundenen Overhead eliminiert.

Atomere Lasten und Speicher für Vektoren

Trotz Behauptungen, dass x86_64 nicht atomar ist Unterstützung für Vektoren, natürlich ausgerichtete Ladevorgänge und Speicherungen von bis zu 8 Bytes, einschließlich Vektoren, sind auf x86-Prozessoren atomar. Dazu gehören das Laden und Speichern mithilfe von x87- oder SSE-Anweisungen. Daher sind ausgerichtete Ladevorgänge und Speicherungen von Gleitkommawerten mit doppelter Genauigkeit atomar.

Atomere Lese-, Änderungs- und Schreiboperationen

Atomere Lese-, Änderungs- und Schreiboperationen (z. B. atomare Addition) sind Wird für Gleitkommawerte oder Vektoren mit doppelter Genauigkeit nicht direkt unterstützt. Die einzige Option für diese Operationen auf x86_64 ist eine Wiederholungsschleife mit der cmpxchg-Anweisung oder TSX.

Sonderfälle für atomare Operationen

Einige Sonderfälle für IEEE-Gleitkommaoperationen können mit Ganzzahlen implementiert werden Operationen. Beispielsweise kann die Negierung eines Gleitkommawerts mit doppelter Genauigkeit erreicht werden, indem das Vorzeichenbit mithilfe einer atomaren Operation umgedreht wird.

Atomic Vector Loads and Stores

Während es für atomic keine Hardwaregarantie gibt Bei Vektorladungen und -speicherungen kann man im Allgemeinen mit Sicherheit davon ausgehen, dass ausgerichtete Vektorladungen und -speicherungen von Gleitkommawerten mit doppelter Genauigkeit nicht zu einem Tearing führen. Allerdings sind atomare Vektoroperationen mit nicht ausgerichteten Werten möglicherweise nicht sicher. Eine Ausnahme hiervon bildet die AVX-Funktion von Intel, die eine 128-Bit-Atomizität für SSE/AVX-Operationen garantiert.

Atomere Operationen für 16B-Objekte

Um atomare Operationen für 16-Byte-Objekte durchzuführen, die größer als die native atomare Operationsbreite ist, muss die Sperre cmpxchg16b verwendet werden. Dies kann im Vergleich zu normalen atomaren Vorgängen zu einem erheblichen Leistungsaufwand führen, sodass es für Szenarien, in denen die Leistung von entscheidender Bedeutung ist, ungeeignet ist.

Das obige ist der detaillierte Inhalt vonBietet x86_64 echte atomare Unterstützung für Gleitkommawerte und Vektoren mit doppelter Genauigkeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

See all articles