Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Atomicity of Loads and Stores Dijamin pada x86 Architectures?
Operasi atom pada memori tidak perlu dilaksanakan terus pada RAM, kerana ia boleh dijalankan dalam cache selagi semua pemerhati menganggapnya sebagai atom. Keselarasan cache antara teras memastikan bahawa operasi DMA pun menghormati keatomisan ini.
Untuk beban sejajar atau menyimpan sehingga 64 bit, atomicity ialah dicapai "secara percuma" kerana operasi selesai dalam laluan data sistem, termasuk antara teras, memori dan PCIe. Ini bermakna perkakasan CPU boleh menjamin atomicity operasi tanpa sebarang perkakasan tambahan atau menyekat permintaan lain.
Mengubah suai data dalam Cache L1 secara atom adalah mencukupi untuk atomicity, kerana mana-mana teras atau akses DMA lain akan melihat perubahan sebagai satu operasi. Pengubahsuaian ini boleh berlaku lewat daripada stor awal kerana pelaksanaan yang tidak mengikut pesanan.
Ketepikan pengoptimuman prestasi, mengakses data merentasi sempadan baris cache boleh mengakibatkan tingkah laku bukan atom. Pada x86, akses sejajar sehingga 8 bait adalah atom, membayangkan bahawa keseluruhan baris cache (biasanya 64B) dipindahkan secara atom walaupun laluan data lebih sempit. Walau bagaimanapun, akses yang lebih luas memerlukan kunci untuk melindungi daripada akses serentak.
Operasi baca-ubah-tulis-tulis atom menimbulkan cabaran yang lebih besar . Untuk mengekalkan atomicity, teras mesti mengekalkan talian cache dalam keadaan Diubah suai dan menyekat pengubahsuaian luaran semasa operasi sedang dijalankan. Untuk operasi tidak sejajar, kunci bas mungkin diperlukan untuk memastikan teras lain memerhatikan perubahan sebagai atom.
Atas ialah kandungan terperinci Bagaimanakah Atomicity of Loads and Stores Dijamin pada x86 Architectures?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!