最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

一文講解ARMv8內存屬性與類型(Memory types and attributes)簡介

2023-09-14 16:20 作者:補給站Linux內核  | 我要投稿

ARMv8中將內存分為兩種類型:Normal memory和Device memory,Normal memory適用于系統中的大部分內存,而Device memory則適用于外設所使用的內存。

1. Normal Memory

Normal memory類型屬性適用于系統中的大多數內存。它表示架構允許硬件對這些位置執(zhí)行推測數據讀取訪問(Speculative data read accesses),而不管這些位置的訪問權限如何。為了確保訪問Normal memory是的順序性,有必要使用內存屏障指令:DMB 。

1.1 Shareable Normal Memory

一個Normal?內存地址可以具有以下一種 Shareability 屬性:

Inner Shareable, ?適用于Inner Inner Shareable shareability 區(qū)域。

Outer Shareable, 適用于Inner Shareable and the Outer Shareable shareability 區(qū)域。

Non-shareable.

1.1.1 Inner Shareable, and Outer Shareable屬性

ARM 架構將系統抽象成一系列 Inner和Outer 可共享屬性區(qū)域。

每個Inner共享域包含一組觀察者(observers),這些觀察者對于該組中的每個成員都是數據一致的,用于使用該組中的任何成員所創(chuàng)建的內部共享屬性(Inner Shareable attribute)進行數據訪問。

每個Outer共享域包含一組觀察者,這些觀察者對于該組的每個成員都是數據一致的,用于使用該組的任何成員所創(chuàng)建的外部共享屬性(Outer Shareable attribute)進行數據訪問。

同樣具有以下屬性:

每個觀察者只是一個內部共享域的成員。

每個觀察者只能是單個外部共享域的成員。

內部可共享域中的所有觀察者總是同一外部可共享域的成員。

這意味著內部共享性域是外部共享性域的一個子集,盡管它不需要是一個合適的子集。

因為對Non-cacheable位置的所有數據訪問,對所有觀察者來說都是數據一致的,所以Non-cacheable位置總是被視為外部共享的(Outer Shareable)。內部共享域預期是由單個hypervisor或操作系統控制的PE的集合。

如果一個系統中存在兩個處理器簇(cluster),則必須保證:

在每個簇中,處理器的data caches和unified caches對所有帶有Inner Shareable屬性的內存位置的數據訪問,均是透明的。

然而,在兩個簇之間,如果僅僅是Inner Shareable屬性,caches在數據訪問中不需被要求保持一致性。如果是Outer Shareable屬性,則要求保持數據一致性。

在這樣一個系統中,對于Inner Shareable 屬性,每個cluster處于不同的shareability 區(qū)域,但是對于Outer Shareable屬性,子系統中的所有組件均在同一個shareability區(qū)域。

一個系統可能實現兩個這樣的子系統,如果其中一個子系統的data cache和unified cache均對其他子系統中訪問不透明,那么這個系統就有兩個Outer shareable 區(qū)域。

對于可共享的普通內存(shareable Normal memory),Load-Exclusive和Store-Exclusive指令考慮了同一共享域中多個觀察者(多個core)訪問的可能性。

1.2 Non-shareable Normal memory

對于Normal 內存區(qū)域,不可共享的normal內存是一塊只能被單個CPU訪問的Normal內存。Non-shareable的Normal內存不要求硬件保證多個觀察者數據訪問的一致性,除非該內存是不可緩存的(Non-cacheable)。

對于Non-shareable內存,如果其他觀察者共享這個內存系統,軟件必須使用緩存維護相關指令,來保證在多個觀察者之間數據通信的緩存一致性問題。此外也需要額外的內存屏障操作來保證內存的處理順序。

此外,對于Non-shareable內存,是否支持Load-Exclusive和Store-Exclusive指令中考慮了多個觀察者訪問的可能性,這個由具體的實現定義IMPLEMENTATION DEFINED。

1.3 Cacheability attributes for Normal memory

除了Outer Shareable, Inner Shareable 和 Non-shareable屬性外,每個Normal 內存還被分配了一個緩存屬性:

Write-Through Cacheable.Write-Back Cacheable.

Non-cacheable.

緩存屬性為位于內存區(qū)域共享域之外的觀察者提供了一種一致性控制機制。在某些情況下,與使用硬件一致性機制或使用緩存維護的程序相比,使用Write-Through cache或non -cacheable區(qū)域可能提供更好的機制來控制一致性。為此,架構要求non -cacheable或Write-Through緩存內存具有以下屬性:

觀察者訪問某一級緩存內的內存系統時,對該級緩存的Write-Through cache或non -cacheable的內存位置的完整寫入,對于所有訪問該一級緩存外的內存系統的觀察者來說都是可見的,而不需要顯式的緩存維護。

由訪問某個level cache之外的內存系統的觀察者,所完成的對該級別cache的Non-cacheable

的內存位置的寫入,對于訪問該級cache內部的內存系統的所有觀察者來說都是可見的,而不需要顯式的緩存維護。

對于Non-cacheable的普通內存的訪問,DMB指令在對單個外設或IMPLEMENTATION DEFINED大小的內存塊的所有訪問上引入一個Barrier-ordered-before關系。

對于普通內存,Arm架構提供了緩存屬性,這些屬性是為緩存的兩個概念級別(內部緩存和外部緩存,the inner and the outer cache)獨立定義的。這些概念級緩存和實現的物理級緩存之間的關系是IMPLEMENTATION DEFINED的,并且可以區(qū)別于內部和外部共享域之間的邊界,但是:

Inner是指最內層的緩存,即最接近PE的緩存,并且總是包括最低級別的緩存。

由Inner緩存屬性控制的緩存不能位于由Outer緩存屬性控制的緩存之外。

在具體的實現中可能沒有outer 緩存。比如有L1,L2, L3的三級緩存架構中,三個緩存可能都是inner緩存,而不存在outer緩存。也可以是L1是inner緩存,L2和L3是outer緩存。


【文章福利】小編推薦自己的Linux內核技術交流群:【749907784】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦!?。。ê曨l教程、電子書、實戰(zhàn)項目及代碼)? ? ??


2.?Device Memory

Device內存類型屬性定義了內存位置,其中對該位置的訪問可能導致副作用,或者加載返回的值可能根據執(zhí)行的加載數量而變化。通常,Device內存屬性用于內存映射的外設(memory-mapped peripherals)和類似的位置。

device內存區(qū)域通常是給一些外設,比如USB uart之類的模塊用的,首先是non-cacheable的,也就是不能走cache,直接訪問內存,數據只存在內存中,其他地方沒有備份,這樣可以保證數據的唯一性,準確性。其次,外設的內存交互一般對時間(timing)的要求較高,所以也需要在有限的時間內完成讀寫操作。還有就是除了不走cache之外,訪問device 內存可能也沒有其他的內存訪問上的優(yōu)化,比如推測性訪問。總而言之,就是給外設用的內存屬性,外設的內存交互需要滿足:及時,高效,準確:

不允許對具有任何Device memory屬性的任何內存位置進行推測性數據訪問(Speculative data accesses)。這意味著對任何Device內存類型的每個內存訪問都必須是由程序的簡單順序執(zhí)行生成的。

對任何Device memory類型的內存位置的寫入在有限時間內完成。

如果從Device memory類型的內存位置讀取的返回值發(fā)生了變化,而觀察者沒有顯式的內存寫入影響,則該變化也必須在有限時間內對系統中的所有觀察者進行全局觀察。這樣的更改可能發(fā)生在保存狀態(tài)信息的外設(peripheral location that holds status?information)。

對于系統中的所有觀察者來說,對Device memory位置的數據訪問都是一致的,并相應地被視為可外部共享的(Outer Shareable)。

具有任何Device memory屬性的內存位置都不能分配到緩存中。

對于任何Device memory類型的訪問,使用DMB指令,在對單個外設或指定大小的內存塊的所有訪問上引入一個Barrier-ordered-before關系。

如果內存位置不能支持未對齊的內存訪問(unaligned memory accesses),那么對該內存位置的未對齊訪問將在轉換的第一階段生成對齊錯誤(Alignment fault),該轉換將該位置定義為Device。

硬件不會阻止從具有任何Device memory屬性的內存位置進行推測性的指令獲取,除非該內存位置也被標記為所有異常級別的execute-never。


原文作者:Arm精選





一文講解ARMv8內存屬性與類型(Memory types and attributes)簡介的評論 (共 條)

分享到微博請遵守國家法律
武鸣县| 当涂县| 梅州市| 慈利县| 永吉县| 二手房| 漠河县| 文成县| 永春县| 通辽市| 扶风县| 来宾市| 桐梓县| 旌德县| 改则县| 门源| 乌鲁木齐县| 衡水市| 盐城市| 准格尔旗| 伊川县| 丹寨县| 巢湖市| 郑州市| 兴山县| 凤翔县| 溧水县| 衡南县| 连州市| 资阳市| 普陀区| 富川| 武冈市| 武威市| 榕江县| 西乌珠穆沁旗| 和顺县| 六枝特区| 江源县| 政和县| 通榆县|