Rumah >pembangunan bahagian belakang >C++ >Adakah x86_64 Menawarkan Sokongan Atom Sebenar untuk Nilai dan Vektor Titik Terapung Ketepatan Berganda?
Manakala C 11 std::atomic
Selain itu, C 11 std::atomic tidak menyediakan API untuk sambungan memori transaksi (TSX) Intel untuk sama ada integer atau terapung- operasi titik. TSX boleh meningkatkan prestasi dengan ketara untuk operasi atom dengan menghapuskan overhed yang dikaitkan dengan pergerakan data antara daftar tujuan umum dan daftar titik terapung.
Walaupun terdapat dakwaan bahawa x86_64 kekurangan atom sokongan untuk vektor, beban yang dijajarkan secara semula jadi dan menyimpan sehingga 8 bait, yang termasuk vektor, adalah atom pada pemproses x86. Ini termasuk memuatkan dan menyimpan menggunakan arahan x87 atau SSE. Oleh itu, beban sejajar dan simpanan nilai titik terapung berketepatan dua adalah atom.
Operasi baca-ubah-tulis-tulis atom (seperti penambahan atom) ialah tidak disokong secara langsung untuk nilai titik terapung berketepatan dua atau vektor. Satu-satunya pilihan untuk operasi ini pada x86_64 ialah gelung cuba semula menggunakan arahan cmpxchg atau TSX.
Sesetengah kes khas untuk operasi titik terapung IEEE boleh dilaksanakan menggunakan integer operasi. Contohnya, menafikan nilai titik terapung berketepatan dua boleh dicapai dengan membalikkan bit tanda menggunakan operasi atom.
Walaupun tiada jaminan perkakasan untuk atom beban vektor dan simpan, secara amnya selamat untuk mengandaikan bahawa beban vektor sejajar dan simpanan nilai titik terapung berketepatan dua tidak akan terhasil. dalam mengoyak. Walau bagaimanapun, operasi vektor atom yang melibatkan nilai tidak sejajar mungkin tidak selamat. Pengecualian untuk ini adalah dengan ciri AVX Intel, yang menjamin atomicity 128-bit untuk operasi SSE/AVX.
Untuk melaksanakan operasi atom pada objek 16-bait, yang lebih besar daripada lebar operasi atom asli, kunci cmpxchg16b mesti digunakan. Ini boleh mengakibatkan overhed prestasi yang ketara berbanding dengan operasi atom biasa, menjadikannya tidak sesuai untuk senario di mana prestasi adalah kritikal.
Atas ialah kandungan terperinci Adakah x86_64 Menawarkan Sokongan Atom Sebenar untuk Nilai dan Vektor Titik Terapung Ketepatan Berganda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!