Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah x86 Mencapai Semantik Release-Acquire Tanpa Pagar Eksplisit?

Bagaimanakah x86 Mencapai Semantik Release-Acquire Tanpa Pagar Eksplisit?

Linda Hamilton
Lepaskan: 2024-12-07 14:39:13
asal
544 orang telah melayarinya

How Does x86 Achieve Release-Acquire Semantics Without Explicit Fences?

Model Memori x86 dan Semantik Release-Acquire

Sebagai susulan kepada siasatan terdahulu mengenai pelaksanaan storan atom memory_order_release menggunakan MOV arahan x86, soalan telah dibangkitkan tentang cara keluaran-dan-perolehan dicapai pada x86 tanpa tambahan mekanisme penyegerakan seperti pagar atau kunci.

Pemesanan Memori Pemproses Tunggal

Intel Volume 3A Bab 8 Manual Pembangunan Sistemnya menyatakan bahawa dalam sistem pemproses tunggal, dimuatkan dan menulis mempunyai jaminan pesanan tertentu:

  • Bacaan tidak disusun semula dengan bacaan lain.
  • Tulisan tidak disusun semula dengan bacaan lama.
  • Tulisan ke ingatan tidak disusun semula dengan tulisan lain, kecuali dalam keadaan tertentu.

Pemesanan Memori Berbilang Pemproses

Walau bagaimanapun, bahagian berbilang pemproses dokumen tidak menyebut secara eksplisit cara beban dikuatkuasakan. Ia memberi tumpuan kepada:

  • Mengekalkan peraturan pesanan pemproses individu dalam teras.
  • Pematuhan penulisan dalam susunan yang sama oleh semua pemproses.
  • Ketiadaan pesanan antara penulisan daripada pemproses yang berbeza.
  • Penyusunan memori mematuhi sebab-akibat (iaitu, menghormati transitif keterlihatan).
  • Ketekalan keterlihatan pesanan kedai oleh pemproses lain daripada yang melaksanakan stor.

Pemerolehan dan Pelepasan Menggunakan MOV

Pemahaman prinsip pesanan memori pemproses tunggal adalah penting. Menurut manual, prinsip yang sama digunakan untuk sistem berbilang pemproses apabila mengakses memori kongsi koheren cache. Ini bermakna penyusunan semula hanya berlaku secara setempat dalam setiap teras CPU.

Setelah kedai menjadi kelihatan di seluruh dunia, ia menjadi kelihatan kepada semua teras secara serentak, memastikan semua teras memerhati tulisan dalam susunan yang konsisten. Inilah sebabnya mengapa hanya halangan tempatan, seperti mfence dalam x86, diperlukan untuk mewujudkan ketekalan berurutan.

Pandangan Memori Kongsi Koheren

Senibina x86 mengekalkan perkongsian yang koheren pandangan memori melalui cache yang koheren. Takrifan Intel mengenai mekanisme berbilang pemprosesan menyerlahkan kepentingan kesepaduan memori dan ketekalan cache untuk memastikan semua pemproses mempunyai akses kepada data yang sama.

Tambahan Sumber

  • https://preshing.com/20120913/acquire-and-release-semantics/
  • https://preshing.com/20 120930/weak-vs-strong-memory-models/
  • https://www.cl.cam.ac.uk/~pes20/papers/x86-tso-memory-model.pdf

Atas ialah kandungan terperinci Bagaimanakah x86 Mencapai Semantik Release-Acquire Tanpa Pagar Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan