arm64 memory 屬性 Device-nGnRnE

armv8  dump mmu table的時候有看到memory 屬性Device-nGnRnE

查閱armv8  trm得到如下信息,把memeory 分成兩個類型device 與 normal, device 類型的memory的訪問行爲比較複雜,例如read clear, read inc addr(讀同一個寄存器,實際會遞增的去訪問某一塊memory),這些特性決定了cpu 不能像normal memory 那樣對memroy 訪問進行re-order,normal memory即是我們常理解的內存

mmu 用如上這幾種形式來描述memory block的不同屬性,不同屬性定義了不同的訪問行爲: 

for normal memory:

shareable domain的概念。如何劃分shareable domain是和系統設計相關,我們假設一個系統的domain分配如下: 
(1)所有的cpu core屬於一個inner shareable domain 
(2)所有的cpu core和dma controller屬於一個outer shareable domain 
在ARM architecture中,對一個normal memory location而言,是否是coherent是和它的頁表中的shareability attribute的設定相關。 
(1)non-shareable。根本不會再多個agent之間共享,不存在coherent的問題。 
(2)inner-shareable。說明inner shareable domain中的所有的agent在對該內存進行數據訪問的時候,硬件會保證coherent。 
(3)outer-shareable。說明outer shareable domain中的所有的agent在對該內存進行數據訪問的時候,硬件會保證coherent。

//from wowo tech

Write-through(直寫模式)在數據更新時,同時寫入緩存Cache和後端存儲。此模式的優點是操作簡單;缺點是因爲數據修改需要同時寫入存儲,數據寫入速度較慢。
Write-back(回寫模式)在數據更新時只寫入緩存Cache。只在數據被替換出緩存時,被修改的緩存數據纔會被寫到後端存儲。此模式的優點是數據寫入速度快,因爲不需要寫存儲;缺點是一旦更新後的數據未被寫入存儲時出現系統掉電的情況,數據將無法找回。

for device memory:

對於device type,其總是non cacheable的,而且是outer shareable,因此它的attribute不多,主要有下面幾種附加的特性:

(1)Gathering 或者non Gathering (G or nG)。這個特性表示對多個memory的訪問是否可以合併,如果是nG,表示處理器必須嚴格按照代碼中內存訪問來進行,不能把兩次訪問合併成一次。例如:代碼中有2次對同樣的一個地址的讀訪問,那麼處理器必須嚴格進行兩次read transaction。

(2)Re-ordering (R or nR)。這個特性用來表示是否允許處理器對內存訪問指令進行重排。nR表示必須嚴格執行program order。

(3)Early Write Acknowledgement (E or nE)。PE訪問memory是有問有答的(更專業的術語叫做transaction),對於write而言,PE需要write ack操作以便確定完成一個write transaction。爲了加快寫的速度,系統的中間環節可能會設定一些write buffer。nE表示寫操作的ack必須來自最終的目的地而不是中間的write buffer。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章