[英]AArch64 memory synchronization operations on multiply-mapped addresses
假設我有兩個頁面映射到相同的物理內存。 一個頁面中虛擬地址上的獲取操作(或圍欄)是否會與另一頁面中虛擬地址上的釋放操作(或圍欄)正確同步? 其次,緩存維護操作( dc
, ic
)也可以使用這種多重映射內存嗎?
換句話說...
stlr
(或dmb ishst
,如果柵欄)到一個頁面是否會與另一個核心上的ldar
(或dmb ishld
,如果柵欄)正確同步到另一頁?dc whatever
是否與另一個虛擬地址上的dc whatever
具有相同的效果?至於內存排序,是的,這很好。 ARMv8 內存模型是根據Location的讀取和寫入來定義的,它被定義為“與物理地址空間中的地址相關聯的字節”。 請參閱架構參考手冊中的 B2.3.1,版本 Ha(舊版本省略了“物理”部分,因此似乎有人注意到這是模棱兩可的。)
同樣,獨占加載ldxr
在手冊中說它將物理地址標記為獨占訪問。
請注意,如果不是這種情況,那么在典型的操作系統上,進程之間的共享內存(例如shmget
、 mmap(MAP_SHARED)
等)將不可用,因為共享映射通常位於不同進程中的不同虛擬地址。
我現在無法回答有關緩存的部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.