国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ARM 中緩存維護(hù)策略:Allocate policy(讀分配/寫分配),Write policy(寫通/寫回)以及replacement policy基礎(chǔ)知識

這篇具有很好參考價值的文章主要介紹了ARM 中緩存維護(hù)策略:Allocate policy(讀分配/寫分配),Write policy(寫通/寫回)以及replacement policy基礎(chǔ)知識。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

針對不同的使用場景,有不同的cache 策略來影響cache的操作。緩存策略使我們能夠描述何時應(yīng)該將一個cache line寫入給data cache,以及當(dāng)執(zhí)行store指令并發(fā)生cache hit時應(yīng)該發(fā)生什么。cache 策略(policy)主要分為:

  • 分配策略 Allocation policy:控制什么操作可以導(dǎo)致 linefill (將外部內(nèi)存的一個cache line大小的數(shù)據(jù)拷貝到cache中)。
  • 替換策略 Replacement policy:針對組相聯(lián)cache,當(dāng)發(fā)生linefill時,用于選擇將數(shù)據(jù)放入哪個cache line。如果被選中的cache line上有數(shù)據(jù),舊數(shù)據(jù)將會被替換出去。
  • 寫策略 Write policy :當(dāng)CPU 進(jìn)行寫操作時,在cache 中命中,用于決定寫入cache 的行為。

一,分配策略 Allocation policy

當(dāng)CPU 發(fā)起一個read/write 請求后,首先會進(jìn)行 cache look-up,如果出現(xiàn)了 cache miss,即讀寫的地址不在cache 當(dāng)中。這時候就要考慮是否要進(jìn)行 cache linefill,將該地址上的數(shù)據(jù)從外部內(nèi)存中拷貝到cache中了。所以分配策略就是用來決定當(dāng)發(fā)生miss時,是否要進(jìn)行cache linefill的策略。miss 也分為 read miss 和 write miss,所以分配策略也分為WA和RA。

1.1 寫分配 Write allocation (WA)

寫分配策略ARMv8 和 ARMv7略有不同:

ARMv8

在ARMv8中,一個write miss 將會觸發(fā) linefill。這意味著CPU執(zhí)行一個 store指令的時候,會導(dǎo)致一個讀操作發(fā)生。在寫操作發(fā)生前,一個linefill將會相關(guān)數(shù)據(jù)從外部內(nèi)存中讀取,填充到cache line中。cache line是cache 的最小可加載單元,就算CPU寫入只寫一個byte的數(shù)據(jù),也會加載一個cache line size的數(shù)據(jù)到cache中。

ARMv7

在ARMv7下,寫分配 Write allocation (WA)實際上應(yīng)該叫做讀寫分配策略(read-write cache allocate policy)。因為在寫分配策略下,無論是read miss 還是 write miss都會造成 cache linefill。一般和 寫回(write-back)策略組合起來使用(WA+WB)。

1.2 Read allocation (RA)

當(dāng)read miss的時候才會發(fā)生linefill。在RA策略下,如果發(fā)生了write miss,cache 不會受影響,并且該write miss的結(jié)果和動作會被傳遞到下一級內(nèi)存當(dāng)中。

二,替換策略 Replacement policy

當(dāng)發(fā)生cache miss的時候,cache controler將會在set中選擇一個cache line位置用于放置linefill時即將寫入的數(shù)據(jù)。被選中的cache line稱為victim。如果victim中包含有效的、dirty的數(shù)據(jù),在為新數(shù)據(jù)騰出空間之前,該victim cache line上的數(shù)據(jù)必須先寫回到下一級內(nèi)存當(dāng)中。這個過程也成為 eviction。替換策略主要是決定哪個cache line會被當(dāng)做victim。

2.1 循環(huán)替換策略:Round-robin or cyclic replacement

循環(huán)替換策略意味著有個計數(shù)器(victim counter)來記錄可用的 way number,當(dāng)計數(shù)器到了最大的way number,就會回到0,從頭開始。

2.2 偽隨機替換策略:Pseudo-random replacement

使用偽隨機的方式隨機選擇victim cache line。victim counter會以偽隨機的方式遞增,并且可以指向set中的任意一個cache line。

2.3 最近最少使用替換策略:Least Recently Used (LRU)

將最近最少使用的cache line作為victim,替換出去。

ARM的絕大部分處理器都支持循環(huán)替換策略和偽隨機替換策略。Cortex-A15也支持LRU策略。循環(huán)替換策略通常更容易預(yù)測下一個victim,但是如果頻繁讀寫固定pattern的地址數(shù)據(jù)(cache line固定)循環(huán)策略很容易將經(jīng)常使用的cache line替換出去,而LRU替換策略設(shè)計成本較高,所以更推薦使用偽隨機替換策略。
比如常見的cortex-A53,Cortex-R4, Cortex-R5和 Cortex-R7 都使用偽隨機替換策略。

三,寫策略 Write policy

當(dāng)CPU執(zhí)行一個store指令的時候,首先進(jìn)行cache look-up,如果發(fā)生了cache write hit,那接下來將有兩種選擇:

3.1 寫回法-Write-back (WB)

在寫回策略下,寫操作只會發(fā)生在cache 中,而不是主存中。這意味著cache 里的數(shù)據(jù)和主存里的數(shù)據(jù)將會出現(xiàn)不一致的現(xiàn)象:cache 里保存的是最新的數(shù)據(jù),而主存中保存的是舊數(shù)據(jù)(stale data)。所以為了區(qū)分新舊數(shù)據(jù),cache line里有個dirty標(biāo)志位,來表明該cache line里的數(shù)據(jù)是否與下一級內(nèi)存中的數(shù)據(jù)保持一致。當(dāng)新數(shù)據(jù)寫入cache line中而不是主存的時候,該cachle line的dirty bit將會被置位。
ARM 中緩存維護(hù)策略:Allocate policy(讀分配/寫分配),Write policy(寫通/寫回)以及replacement policy基礎(chǔ)知識,ARM,ARM Cache,arm開發(fā),緩存,嵌入式,寫通,寫回,讀分配,寫分配

什么時候cache里的數(shù)據(jù)才會被寫回到主存呢?主要有兩種方式:

  • 當(dāng)發(fā)生cache line eviction時,victim cache line將會被寫回到下一級內(nèi)存。
  • 軟件使用顯式的cache 維護(hù)指令時,比如clean/invalidate.
    WB的優(yōu)勢:可以顯著地提高性能和節(jié)省能耗,因為在WB策略下,CPU寫操作大部分時間都是與cache 進(jìn)行交互,只有在需要的時候,數(shù)據(jù)才會寫回到主存中,極大地減少了向主存搬運數(shù)據(jù)的動作。
    WB的劣勢:cache里的數(shù)據(jù)和主存中的不一致,尤其是在多核場景下,數(shù)據(jù)一致性問題(coherency issues)尤為重要。此外,要實現(xiàn)WB,其硬件結(jié)構(gòu)也比WT更復(fù)雜。
    ARM 中緩存維護(hù)策略:Allocate policy(讀分配/寫分配),Write policy(寫通/寫回)以及replacement policy基礎(chǔ)知識,ARM,ARM Cache,arm開發(fā),緩存,嵌入式,寫通,寫回,讀分配,寫分配

3.2 寫通法-Write-through (WT)

與WB策略不一樣,在WB策略下,每次寫操作都會寫入cache 和主存中。這意味著不需要考慮cache和主存之間的數(shù)據(jù)一致性問題,所以也不會將cache line的dirty bit置位。但是因為每次寫操作都要寫到主存中,所以通常情況下WT的性能是要顯著低于WB的,尤其是當(dāng)頻繁更新一些相同地址上的數(shù)據(jù)的時候。如果一大塊連續(xù)的內(nèi)存被寫入,并且寫入的數(shù)據(jù)進(jìn)入buffer中,WT策略可能有幫助。另外,如果這些數(shù)據(jù)在寫完后就不再被使用、不會被立刻使用或者很少被使用(大規(guī)模的數(shù)據(jù)拷貝或者內(nèi)存初始化),對于這種寫操作,最好就不用填充到cache當(dāng)中了,使用WT直接寫入內(nèi)存可能更有幫助。
WT的優(yōu)勢在于硬件結(jié)構(gòu)簡單,不存在數(shù)據(jù)一致性問題。但是其劣勢在于放棄了部分cache帶來的高性能以及便捷性。
ARM 中緩存維護(hù)策略:Allocate policy(讀分配/寫分配),Write policy(寫通/寫回)以及replacement policy基礎(chǔ)知識,ARM,ARM Cache,arm開發(fā),緩存,嵌入式,寫通,寫回,讀分配,寫分配
ARM 中緩存維護(hù)策略:Allocate policy(讀分配/寫分配),Write policy(寫通/寫回)以及replacement policy基礎(chǔ)知識,ARM,ARM Cache,arm開發(fā),緩存,嵌入式,寫通,寫回,讀分配,寫分配

四,緩存維護(hù)策略的組合方式

首先replacement policy根據(jù)不同的架構(gòu)實現(xiàn),可以選擇支持不同的的策略,不會影響到write policy和allocate policy。而write policy和allocate policy之間卻有很深的關(guān)聯(lián)性,首先Write-Through策略和Write-allocate策略就不該組合使用,因為WT策略每一次寫,不僅寫入cache 中,還會寫入主存中,當(dāng)發(fā)生write miss時,不需要進(jìn)行allocation。所以WA策略通常會搭配Write-back使用。常見的緩存維護(hù)策略的組合方式有如下三種:

  • 寫回+讀分配+寫分配,Write-Back, Read-Allocate, Write-Allocate. (WB-RA-WA)
  • 寫回+讀分配,Write-Back, Read-Allocate only. (WB-RA)
  • 寫通+讀分配,Write-Through, Read-Allocate only. (WT-RA)

五,分析,影響cache性能的因素

通過上文關(guān)于緩存策略的描述,我們可以得到緩存性能的關(guān)鍵指標(biāo):

  • hit/miss ratio:命中率,或者說時miss的概率。
  • miss penalty:當(dāng)發(fā)生miss時,系統(tǒng)需要額外進(jìn)行哪些操作(associated costs of a miss penalty)。
  • time for hit :發(fā)生hit/miss所需的時間,cache controler收到一個地址,需要進(jìn)行cache look-up(cache 遍歷查找),才能確定是否hit或者miss,而這個查找的時間與cache的結(jié)構(gòu)(組相聯(lián)、直接映射、全相聯(lián)映射)有關(guān)。

miss penalty和time for hit 與ARM架構(gòu)的具體實現(xiàn)緊密相關(guān),作為軟件層,如果想提高緩存的性能以及系統(tǒng)性能,我們唯一能做的就是提高命中率或者減小miss的概率。

五,分析,軟件層可以配置哪些維護(hù)策略

Allocate policy(讀分配/寫分配),Write policy(寫通/寫回)可以通過配置pagetable,設(shè)置memory的空間屬性來改變。
replacement policy 替換策略和包含策略(inclusion policy,inclusive和exclusive)是硬件定義好的,軟件層無法更改。

六,參考文檔

https://developer.arm.com/documentation/den0042/a/Caches/Cache-policies
https://developer.arm.com/documentation/den0013/d/Caches/Cache-policies
http://users.ece.northwestern.edu/~kcoloma/ece361/lectures/Lec14-cache.pdf
https://blog.feabhas.com/2020/10/introduction-to-the-arm-cortex-m7-cache-part-2-cache-replacement-policy/#D-Cache_Replacement_Policy文章來源地址http://www.zghlxwxcb.cn/news/detail-756785.html

到了這里,關(guān)于ARM 中緩存維護(hù)策略:Allocate policy(讀分配/寫分配),Write policy(寫通/寫回)以及replacement policy基礎(chǔ)知識的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • nginx配置相關(guān)策略Content-Security-Policy、Referrer-policy

    nginx配置相關(guān)策略Content-Security-Policy、Referrer-policy

    最近在安全測試中發(fā)現(xiàn)了一下網(wǎng)站的問題: 主要是配置一些參數(shù):這些可以前端配置,也可以在nginx中進(jìn)行配置 在nginx的server中添加請求頭信息: add_header Content-Security-Policy “upgrade-insecure-requests;connect-src *”; add_header X-XSS-Protection “1; mode=block” always; add_header X-Content-Type-Opt

    2024年02月02日
    瀏覽(16)
  • SAP 角色維護(hù)/分配權(quán)限 PFCG 角色查看 SUIM

    SAP 角色維護(hù)/分配權(quán)限 PFCG 角色查看 SUIM

    不同的角色會需要分配不同的權(quán)限,在此介紹兩個事務(wù)碼:PFCG和 SUIM。 PFCG可以用于創(chuàng)建新的角色并分配給不同的用戶,角色可以用于控制用戶權(quán)限,例如這個用戶的菜單中是否有事務(wù)碼MM01,SUIM可以用于查看MM01事務(wù)碼被分配給了哪些角色,SUIM事務(wù)碼還有許多其他功能,在此不

    2024年02月02日
    瀏覽(27)
  • kubernetes網(wǎng)絡(luò)之網(wǎng)絡(luò)策略-Network Policies

    Kubernetes 中,Network Policy(網(wǎng)絡(luò)策略)定義了一組 Pod 是否允許相互通信,或者與網(wǎng)絡(luò)中的其他端點 endpoint 通信。 NetworkPolicy 對象使用標(biāo)簽選擇Pod,并定義規(guī)則指定選中的Pod可以執(zhí)行什么樣的網(wǎng)絡(luò)通信,規(guī)則通常由如下三類信息組合而成: 允許訪問的其他容器組(容器組不能

    2024年02月15日
    瀏覽(16)
  • Web 安全之 Permissions Policy(權(quán)限策略)詳解

    Permissions Policy 為 web 開發(fā)人員提供了明確聲明哪些功能可以在網(wǎng)站上使用,哪些功能不能在網(wǎng)站上使用的機制??梢栽O(shè)置一組策略,用于限制站點代碼可以訪問的 API 或者修改瀏覽器對某些特性的默認(rèn)行為。設(shè)置?Permissions-Policy?可以在代碼庫不斷演進(jìn)的同時強制執(zhí)行最佳實踐

    2024年02月09日
    瀏覽(44)
  • 思科Cisco策略路由(policy route)詳細(xì)介紹

    注:PBR以前是CISCO用來丟棄報文的一個主要手段。比如:設(shè)置set interface null 0,按CISCO說法這樣會比ACL的deny要節(jié)省一些開銷。這里我提醒: interface null 0 no ip unreachable //加入這個命令 這樣避免因為丟棄大量的報文而導(dǎo)致很多ICMP的不可達(dá)消息返回。 三層設(shè)備在轉(zhuǎn)發(fā)數(shù)據(jù)包時一般都

    2024年02月05日
    瀏覽(26)
  • 前端安全-內(nèi)容安全策略CSP(Content Security Policy)

    前端安全-內(nèi)容安全策略CSP(Content Security Policy)

    目錄 CSP xss 使用方法 http頭部設(shè)置 meta標(biāo)簽設(shè)置 策略集組成 常見指令 default-src report-uri 示例? 指令(屬性) ?指令值(屬性值) CSP學(xué)習(xí)鏈接? 內(nèi)容安全策略,為了頁面內(nèi)容安全而制定的一系列防護(hù)策略??梢酝ㄟ^CSP指定策略來規(guī)定頁面加載的內(nèi)容來源(這里的內(nèi)容可以指腳本

    2024年02月05日
    瀏覽(26)
  • Proximal Policy Optimization (PPO) 算法理解:從策略梯度開始

    Proximal Policy Optimization (PPO) 算法理解:從策略梯度開始

    近端策略優(yōu)化(PPO)算法是OpenAI在2017提出的一種強化學(xué)習(xí)算法,被認(rèn)為是目前強化學(xué)習(xí)領(lǐng)域的SOTA方法,也是適用性最廣的算法之一。本文將從PPO算法的基礎(chǔ)入手,理解從傳統(tǒng)策略梯度算法(例如REIFORCE算法)、自然策略梯度算法、信賴域策略優(yōu)化算法(TRPO)直到PPO算法的演

    2023年04月26日
    瀏覽(31)
  • Proximal Policy Optimization(近端策略優(yōu)化)(PPO)原理詳解

    Proximal Policy Optimization(近端策略優(yōu)化)(PPO)原理詳解

    本節(jié)開始筆者針對自己的研究領(lǐng)域進(jìn)行RL方面的介紹和筆記總結(jié),歡迎同行學(xué)者一起學(xué)習(xí)和討論。本文筆者來介紹RL中比較出名的算法PPO算法,讀者需要預(yù)先了解Reinforcement-Learning中 幾個基礎(chǔ)定義 才可以閱讀,否則不容易理解其中的內(nèi)容。不過筆者盡可能把它寫的詳細(xì)讓讀者弄

    2024年02月13日
    瀏覽(24)
  • 華為之ACL應(yīng)用于Traffic Policy/華為策略路由匹配原則

    華為之ACL應(yīng)用于Traffic Policy/華為策略路由匹配原則

    如果報文沒有匹配到traffic policy中的Classifier該怎么處理? 一個Traffic policy中可以配置一個或多個Classifier Behavior對。 當(dāng)收到一個報文,做復(fù)雜流分類處理時,會按照Traffic-policy中Classifier Behavior對的配置順序進(jìn)行匹配。 如果命中,則停止匹配;如果不命中,則匹配后面的Classi

    2024年02月07日
    瀏覽(22)
  • Web安全之Content Security Policy(CSP 內(nèi)容安全策略)詳解

    Content Security Policy是一種網(wǎng)頁安全策略,現(xiàn)代瀏覽器使用它來增強網(wǎng)頁的安全性。可以通過Content Security Policy來限制哪些資源(如JavaScript、CSS、圖像等)可以被加載,從哪些url加載。 CSP 本質(zhì)上是白名單機制,開發(fā)者明確告訴瀏覽器哪些外部資源可以加載和執(zhí)行,可以從哪些url加

    2024年02月13日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包