0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Cache分類與替換算法

麥辣雞腿堡 ? 來(lái)源:TrustZone ? 作者:TrustZone ? 2023-10-31 11:26 ? 次閱讀

根據(jù)不同的分類標(biāo)準(zhǔn)可以按以下3種方法對(duì)Cache進(jìn)行分類。

?1)數(shù)據(jù)cache和指令cache

?● 指令cache:指令預(yù)取時(shí)使用的cache。

?● 數(shù)據(jù)cache:數(shù)據(jù)讀寫時(shí)使用的cache。

如果一個(gè)存儲(chǔ)系統(tǒng)中指令cache和數(shù)據(jù)cache是同一個(gè)cache,稱系統(tǒng)使用了統(tǒng)一的cache。反之,如果是分開(kāi)的,那么稱系統(tǒng)使用了獨(dú)立的cache;如果系統(tǒng)中只包含指令cache或者數(shù)據(jù)cache,那么在配制系統(tǒng)時(shí)可以作為獨(dú)立的cache使用了。

使用獨(dú)立的數(shù)據(jù)cache和指令cache,可以在同一個(gè)時(shí)鐘周期中讀取指令和數(shù)據(jù),而不需要雙端口的cache,但這時(shí)候要注意保證指令和數(shù)據(jù)的一致性。

?2)寫通(write-through)cache和寫回(write-back)cache

?● 寫回cache CPU在執(zhí)行寫操作時(shí),被寫的數(shù)據(jù)只寫入cache,不寫入主存,僅當(dāng)需要替換時(shí),才把已經(jīng)修改的cache塊寫回到主存中,在采用這種更新算法的cache快表中,一般有一個(gè)修改位,當(dāng)一塊中的任何一個(gè)單元被修改時(shí),這一塊的修改位被設(shè)置為1,否則這一塊的修改位仍保持為0;在需要替換這一塊時(shí),如果對(duì)應(yīng)的修改位為1,則必須先把這一塊寫到主存中去之后,才能調(diào)入新的塊,否則,只要用新調(diào)入的塊覆蓋該塊即可。

?● 寫通cache CPU在執(zhí)行寫操作時(shí),必須把數(shù)據(jù)同時(shí)寫入cache和主存,這樣,在cache的快表中就不需要“修改位”,
當(dāng)某一塊需要替換時(shí),也不必把這一塊寫回到主存中,新調(diào)入的塊可以立即把這一塊覆蓋掉。

寫回cache和寫通cache的優(yōu)缺點(diǎn)比較如下表所示。

圖片

寫回cache與寫通cache比較

?3)讀時(shí)分配(read-allocate)cache和寫時(shí)分配(write-allocate)cache

?● 讀時(shí)分配cache當(dāng)進(jìn)行數(shù)據(jù)寫操作時(shí),如果cache沒(méi)命中,只是簡(jiǎn)單地將數(shù)據(jù)寫入主存中,主要在數(shù)據(jù)讀取時(shí),才進(jìn)行cache內(nèi)容預(yù)取。

?●寫時(shí)分配cache當(dāng)進(jìn)行數(shù)據(jù)寫操作時(shí),如果cache未命中,cache系統(tǒng)將會(huì)進(jìn)行cache內(nèi)容預(yù)取,從主存中將相應(yīng)的塊讀取到cache中相應(yīng)的位置,并執(zhí)行寫操作,把數(shù)據(jù)寫入到cache中。對(duì)于寫通類型的cache,數(shù)據(jù)將會(huì)同時(shí)寫入到主存中,對(duì)于寫回類型的cache,數(shù)據(jù)將在合適的時(shí)候?qū)懟氐街鞔嬷小?/p>

由于寫操作分配cache增加了cache內(nèi)容預(yù)取的次數(shù),增加了寫操作的開(kāi)銷,但同時(shí)可能提高cache的命中率,因此這種技術(shù)對(duì)于系統(tǒng)整體性能的影響與程序中讀操作和寫操作的數(shù)量有關(guān)。

Cache替換算法

隨機(jī)替換算法

通過(guò)一個(gè)偽隨機(jī)數(shù)發(fā)生器產(chǎn)生一個(gè)偽隨機(jī)數(shù),用新塊編號(hào)為該偽隨機(jī)數(shù)的cache塊替換掉。這種算法很簡(jiǎn)單且容易實(shí)現(xiàn),但沒(méi)有考慮程序的局部性特點(diǎn),也沒(méi)有利用歷史上塊地址流的分布情況,因而效果較差,同時(shí)這種算法不易預(yù)測(cè)最壞情況下cache的性能。

輪轉(zhuǎn)替換算法

維護(hù)一個(gè)邏輯的計(jì)數(shù)器,利用該計(jì)數(shù)器依次選擇將要被替換出去的cache塊。這種算法容易預(yù)測(cè)在最壞情況下cache的性能。但在程序發(fā)生很小的變化時(shí),可能造成cache平均性能的急劇變化,這是它的一個(gè)明顯缺點(diǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10804

    瀏覽量

    210833
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6808

    瀏覽量

    88743
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4226

    瀏覽量

    85577
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    28272
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    #硬聲創(chuàng)作季 計(jì)算機(jī)原理:5.3.10 Cache替換算法(2)

    Cache計(jì)算機(jī)原理cpu/soc
    Mr_haohao
    發(fā)布于 :2022年09月29日 07:35:20

    在嵌入式中為什么要用到Linux系統(tǒng)呢

    串行外設(shè)接口SPI是什么?在嵌入式中為什么要用到Linux系統(tǒng)呢?Cache常見(jiàn)的替換算法有哪幾種呢?
    發(fā)表于 11-02 08:09

    淺析cache控制器的分配策略與替換策略

    cache的相關(guān)操作中,cache控制器需要根據(jù)需求做出許多不同的選擇。例如:分配策略是否需要將數(shù)據(jù)從主存中分配到cache中;替換策略組相聯(lián)ca
    發(fā)表于 06-15 16:24

    基于修正LRU的壓縮Cache替換策略

    以優(yōu)化壓縮cache替換策略為目標(biāo),提出一種優(yōu)化的基于修正LRU的壓縮cache替換策略MLRU-C。MLRU-C策略能利用壓縮cache
    發(fā)表于 04-15 09:51 ?36次下載

    基于BWDSP指令Cache的PLRU替換算法研究

    通過(guò)BWDSP模擬器對(duì)目前常用的幾種替換算法和大小不同的指令Cache塊進(jìn)行仿真實(shí)驗(yàn)得出不同缺失率。實(shí)驗(yàn)結(jié)果表明,所提出的PLRU替換算法性能高于LRU、LFU、FIFO替換算法,并使
    發(fā)表于 09-25 14:50 ?17次下載

    一種有效的Cache優(yōu)化替換策略

    該問(wèn)題,一種有效的解決方法是優(yōu)化Cache替換策略,減少Cache中臟塊被替換出的數(shù)量?,F(xiàn)有研究主要通過(guò)在插入和訪問(wèn)命中時(shí)給臟塊設(shè)定較高的保護(hù)優(yōu)先級(jí)來(lái)達(dá)到給臟塊額外保護(hù)的目的,但是在降
    發(fā)表于 11-27 15:16 ?1次下載
    一種有效的<b class='flag-5'>Cache</b>優(yōu)化<b class='flag-5'>替換</b>策略

    OrCAD教程:如何對(duì)元件進(jìn)行替換與更新

    批量替換replace cache 打開(kāi)cache,選中要替換的元件,如圖所示 右鍵,replace cache 彈出
    發(fā)表于 04-17 14:18 ?1.3w次閱讀
    OrCAD教程:如何對(duì)元件進(jìn)行<b class='flag-5'>替換</b>與更新

    寄存器和cache的區(qū)別介紹

    本文開(kāi)始闡述了CACHE的概念、CACHE替換機(jī)構(gòu)與讀寫操作,其次介紹了寄存器的原理以及它的主要技術(shù),最后闡述了寄存器和cache兩者之間的區(qū)別。
    發(fā)表于 04-11 14:10 ?1.3w次閱讀

    Python替換字符串的新方法

    FlashText 算法是由 Vikash Singh 于2017年發(fā)表的大規(guī)模關(guān)鍵詞替換算法,這個(gè)算法的時(shí)間復(fù)雜度僅由文本長(zhǎng)度(N)決定,算法時(shí)間復(fù)雜度為O(N)。
    的頭像 發(fā)表于 04-09 16:37 ?2014次閱讀

    Python替換字符串的新姿勢(shì)

    FlashText 算法是由 Vikash Singh 于2017年發(fā)表的大規(guī)模關(guān)鍵詞替換算法,這個(gè)算法的時(shí)間復(fù)雜度僅由文本長(zhǎng)度(N)決定,算法時(shí)間復(fù)雜度為O(N)。
    的頭像 發(fā)表于 02-24 10:50 ?819次閱讀
    Python<b class='flag-5'>替換</b>字符串的新姿勢(shì)

    在組相聯(lián)cache中,用于替換cache line的算法有哪些?

    LRU(Least Recently Used)算法:該算法會(huì)跟蹤每個(gè)cache line的age(年齡)情況,并在需要時(shí)替換掉近期最少使用的cac
    的頭像 發(fā)表于 10-08 11:10 ?829次閱讀

    Python 中怎么來(lái)實(shí)現(xiàn)類似 Cache 的功能

    cachetools,這是一個(gè)可擴(kuò)展的基于內(nèi)存的 Collections、Decorators 的封裝實(shí)現(xiàn)。 因?yàn)槭?Cache,那么就一定有它的頁(yè)面置換算法。根據(jù)操作系統(tǒng)學(xué)過(guò)的一些知識(shí),置換算法
    的頭像 發(fā)表于 10-17 10:47 ?675次閱讀

    基于flashtext模塊使用FlashText算法進(jìn)行字符串查找和替換

    FlashText 算法是由 Vikash Singh 于2017年發(fā)表的大規(guī)模關(guān)鍵詞替換算法,這個(gè)算法的時(shí)間復(fù)雜度僅由文本長(zhǎng)度(N)決定,算法時(shí)間復(fù)雜度為O(N)。 而對(duì)于正則表達(dá)式
    的頭像 發(fā)表于 10-30 10:16 ?504次閱讀
    基于flashtext模塊使用FlashText<b class='flag-5'>算法</b>進(jìn)行字符串查找和<b class='flag-5'>替換</b>

    Cache內(nèi)容鎖定是什么

    “鎖定”在cache中的塊在常規(guī)的cache替換操作中不會(huì)被替換,但當(dāng)通過(guò)C7控制cache中特定的塊時(shí),比如使某特定的塊無(wú)效時(shí),這些被“鎖
    的頭像 發(fā)表于 10-31 11:31 ?691次閱讀

    Cache替換策略和Write-through介紹

    信息到數(shù)據(jù)總線即可; 另一種是需要的數(shù)據(jù)尚未裝入Cache,CPU需要從主存中讀取信息的同時(shí),Cache替換部件把該地址所在的那塊存儲(chǔ)內(nèi)容從主存復(fù)制到Cache中。若
    的頭像 發(fā)表于 10-31 11:48 ?1508次閱讀