簡體   English   中英

多重映射地址上的 AArch64 內存同步操作

[英]AArch64 memory synchronization operations on multiply-mapped addresses

假設我有兩個頁面映射到相同的物理內存。 一個頁面中虛擬地址上的獲取操作(或圍欄)是否會與另一頁面中虛擬地址上的釋放操作(或圍欄)正確同步? 其次,緩存維護操作( dcic )也可以使用這種多重映射內存嗎?

換句話說...

  • ...一個核心上的stlr (或dmb ishst ,如果柵欄)到一個頁面是否會與另一個核心上的ldar (或dmb ishld ,如果柵欄)正確同步到另一頁?
  • ...一個虛擬地址上的dc whatever是否與另一個虛擬地址上的dc whatever具有相同的效果?

至於內存排序,是的,這很好。 ARMv8 內存模型是根據Location的讀取和寫入來定義的,它被定義為“與物理地址空間中的地址相關聯的字節”。 請參閱架構參考手冊中的 B2.3.1,版本 Ha(舊版本省略了“物理”部分,因此似乎有人注意到這是模棱兩可的。)

同樣,獨占加載ldxr在手冊中說它將物理地址標記為獨占訪問。

請注意,如果不是這種情況,那么在典型的操作系統上,進程之間的共享內存(例如shmgetmmap(MAP_SHARED)等)將不可用,因為共享映射通常位於不同進程中的不同虛擬地址。

我現在無法回答有關緩存的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM