首頁 >後端開發 >C++ >x86 如何在沒有明確圍欄的情況下實現發布獲取語意?

x86 如何在沒有明確圍欄的情況下實現發布獲取語意?

Linda Hamilton
Linda Hamilton原創
2024-12-07 14:39:13563瀏覽

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

x86 內存模型和釋放獲取語義

之前關於使用MOV 實現memory_order_release 原子存儲的查詢的後續內容x86 指令中,有人提出了關於如何在x86上實現釋放和獲取而不需要額外的同步機制(如柵欄或

單處理器內存排序

Intel 系統開發手冊第 3A 卷第 8章指出,在單處理器系統中,載入和寫入有一定的順序保證:

  • 讀取不會與其他內容重新排序讀取。會與較早的讀取重新排序。
  • 記憶體的寫入不會與其他寫入重新排序,除非在特定情況下。但是,多處理器部分文件沒有明確提及如何強制載入。入之間不存在排序不同的處理器。
  • 使用MOV 取得與釋放

了解單處理器記憶體排序原則至關重要。重新排序僅在每個CPU 核心內本地發生。需要本地屏障(例如x86中的 mfence)來建立順序一致性。架構維護了連貫的共享視圖透過一致的快取查看記憶體。 🎜>其他資源

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

以上是x86 如何在沒有明確圍欄的情況下實現發布獲取語意?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn