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

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

3天內不再提示

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

冬至子 ? 來(lái)源:CSDN ? 作者:谷公子 ? 2023-10-08 11:10 ? 次閱讀

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

  • LRU(Least Recently Used)算法:該算法會(huì )跟蹤每個(gè)cache line的age(年齡)情況,并在需要時(shí)替換掉近期最少使用的cache line。
  • MRU(Most Recently Used)算法:這與LRU相反,最年輕的cache line會(huì )優(yōu)先被替換掉。
  • PLRU(Pseudo LRU)算法:這與LRU相似,它沒(méi)有age跟蹤cache line(這樣開(kāi)銷(xiāo)較大),只有1個(gè)或2個(gè)bit來(lái)跟蹤cache line使用情況。
  • LFU(Least Frequently Used)算法:該算法會(huì )跟蹤一個(gè)cache line訪(fǎng)問(wèn)的頻率,并決定替換使用次數最少的cache line。
  • Random replacement算法:該算法不存儲任何信息,當需要替換時(shí)隨機選擇一個(gè)cache line。

2. Cache coherency的問(wèn)題是什么?

在SMP(Shared Multiprocessor systems)中,多個(gè)處理器都有自己的cache,同一數據(同一地址)的多個(gè)副本可能同時(shí)存在于不同的cache中。如果允許每個(gè)處理器自由更新cache,則可能導致數據一致性被破壞了。例如:如果允許兩個(gè)處理器向相同的地址寫(xiě)入值,那么在不同的處理器上讀取相同的地址可能會(huì )看到不同的值。

3. 基于snoop的緩存一致性協(xié)議和基于directory的緩存一致性協(xié)議有什么區別?

在基于Snoop的一致性協(xié)議中,來(lái)自處理器的數據請求被發(fā)送到共享系統里的所有其它處理器。其它處理器根據這個(gè)請求查看自己是否有數據的副本,并做出相應的響應。因此,每個(gè)處理器都試圖保持內存的一致性視圖。

在基于directory的一致性協(xié)議中,directory用于跟蹤哪些處理器正在訪(fǎng)問(wèn)和緩存哪些地址。任何發(fā)出新請求的處理器都將檢查該directory,以了解是否有任何其它處理器用于數據副本,然后可以向該處理器發(fā)送點(diǎn)到點(diǎn)請求,以獲取最新的數據副本。

兩者的優(yōu)缺點(diǎn)為:基于snoop的一致性協(xié)議用于較小的系統的話(huà),如果有足夠的帶寬用于傳遞請求,它會(huì )更快。但對于較大的SMP系統不具有可伸縮性,因此需要為每個(gè)請求廣播消息,可能會(huì )使系統過(guò)載阻塞?;赿irectory的一致性協(xié)議由于在發(fā)送消息之前需要查找記錄的表,可能會(huì )有較長(cháng)的延遲。但它沒(méi)有廣播消息,可伸縮性更好,通常用于較大的SMP系統中。

4. 什么是MESI協(xié)議?

MESI協(xié)議是具有多個(gè)write-back 類(lèi)型cache的設計中最常用的cache一致性協(xié)議。MESI表示在所有cache中跟蹤每個(gè)cache line并用于響應snoop請求的狀態(tài)。這些不同的狀態(tài)可以解釋如下:

  • M(Modified):表示cache line數據相對于memory數據被修改過(guò)了,為dirty的。
  • E(Exclusive):此狀態(tài)表示cache line數據相對于內存是clean的,且只在該cache中存在。Exclusive屬性允許該cache所在的處理器對該cache line進(jìn)行寫(xiě)操作。
  • S(Shared):該狀態(tài)表示cache line被多個(gè)cache共享,并且相對memory也是clean的。由于這是在所有cache共享的,因此協(xié)議不允許直接對該cache line進(jìn)行寫(xiě)操作。
  • I(Invalid):該狀態(tài)表示cache line無(wú)效,沒(méi)有任何有效數據。
  • 當cache line處于除Invalid之外的任何狀態(tài)時(shí),cache都可以處理讀請求。當cache line處于Modified或Exclusive狀態(tài)時(shí),才可以處理寫(xiě)請求。

5. 什么是MESIF和MOESIF協(xié)議?

這兩個(gè)協(xié)議都是MESI協(xié)議的擴展,引入了兩個(gè)新的狀態(tài)”F”和”O”,解釋如下:

  • F(Forward):F狀態(tài)時(shí)S狀態(tài)的一種特殊形式,表明cache應該通過(guò)轉發(fā)數據來(lái)充當給定cache line的任何請求的指定反饋者。如果系統中有多個(gè)cache具有處于S狀態(tài)的同一cache line,則將其中一個(gè)指定為F狀態(tài),以便為來(lái)自不同處理器的新請求轉發(fā)數據。該協(xié)議確保,如果任何cache保存的cache line為S狀態(tài),那么最多只有一個(gè)(其他)cache保存的cache line為F狀態(tài)。這種狀態(tài)有助于減少對memory帶寬的占用,因為沒(méi)有F狀態(tài),即使一條cache line在多個(gè)cache中處于S狀態(tài),它們都不能將數據轉發(fā)給請求讀或寫(xiě)的不同處理器。(請注意,cache中的S狀態(tài)cache line只能服務(wù)于相同的處理器讀?。?/li>
  • O(Owned):O狀態(tài)時(shí)一種特殊的狀態(tài),它是為了在不需要寫(xiě)回memory的情況下在系統的不同cache中移動(dòng)修改過(guò)的或dirty的數據而引入的。如果cache line還與其它可以使cache line保持S狀態(tài)的cache共享,則cache line需要從M狀態(tài)轉換到O狀態(tài)。O狀態(tài)有助于將修改后的數據推遲寫(xiě)回memory,直到真正需要時(shí)再寫(xiě)。

6. 什么是RFO?

RFO代表Read for Ownership。這是cache一致性協(xié)議中的一種操作。它是由處理器試圖寫(xiě)入共享或無(wú)效狀態(tài)的cache line時(shí)發(fā)出的,這將導致所有其它處理器將該cache line的狀態(tài)設置為Invalid。RFO是意圖寫(xiě)入該memory地址的讀操作。因此,該操作是排他的,它將數據讀到cache中,并使持有該memory地址的所有其它處理器的cache無(wú)效掉這個(gè)cache line。

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

    關(guān)注

    68

    文章

    18564

    瀏覽量

    224111
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7224

    瀏覽量

    162484
  • SMP
    SMP
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    19477
  • 狀態(tài)機
    +關(guān)注

    關(guān)注

    2

    文章

    486

    瀏覽量

    27260
  • cache技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    1013
收藏 人收藏

    評論

    相關(guān)推薦

    為什么HAL庫操作Flash erase的時(shí)候,需要把I-Cache和D-Cache關(guān)閉呢?

    請問(wèn)為什么HAL庫操作Flash erase的時(shí)候,需要把I-Cache和D-Cache關(guān)閉呢? 這有什么原因呢? 有人可以解答嗎?
    發(fā)表于 04-07 09:08

    Cache的data不同核間獲取數據的時(shí)候如何保證拿到的數據是最新的?

    1. Cache 的data不同核間獲取數據的時(shí)候如何保證拿到的數據是最新的? 2.如果關(guān)閉了Cache ,運行速度就變好慢,但是core0取core1的數據又想要保持是最新的數據
    發(fā)表于 01-31 06:49

    buffer和cache的區別

    buffer和cache的區別 緩沖區(Buffer)和緩存(Cache)是計算機系統中用于提高數據讀寫(xiě)效率的兩個(gè)關(guān)鍵概念,它們雖然功能有所重疊,但在實(shí)際應用中存在一些差異。在下文中,將詳盡、詳實(shí)
    的頭像 發(fā)表于 12-07 11:00 ?514次閱讀

    Cache替換策略和Write-through介紹

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

    Cache寫(xiě)入方式原理簡(jiǎn)介

    提高高速緩存命中率的最好方法是盡量使Cache存放CPU最近一直在使用的指令與數據,當Cache裝滿(mǎn)后,可將相對長(cháng)期不用的數據刪除,提高Cache的使用效率。 為保持Cache中數據與
    的頭像 發(fā)表于 10-31 11:43 ?782次閱讀

    Cache工作原理是什么

    具有Cache的計算機,當CPU需要進(jìn)行存儲器存取時(shí),首先檢查所需數據是否在Cache中。如果存在,則可以直接存取其中的數據而不必插入任何等待狀態(tài),這是最佳情況,稱(chēng)為高速命中; 當CPU所需信息不在
    的頭像 發(fā)表于 10-31 11:34 ?580次閱讀
    <b class='flag-5'>Cache</b>工作原理是什么

    Cache內容鎖定是什么

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

    Cache分類(lèi)與替換算法

    根據不同的分類(lèi)標準可以按以下3種方法對Cache進(jìn)行分類(lèi)。 ?1)數據cache和指令cache ?● 指令cache:指令預取時(shí)使用的cache
    的頭像 發(fā)表于 10-31 11:26 ?558次閱讀
    <b class='flag-5'>Cache</b>分類(lèi)與<b class='flag-5'>替換算法</b>

    Cache的原理和地址映射

    cache存儲系統中,把cache和主存儲器都劃分成相同大小的塊。 主存地址由塊號B和塊內地址W兩部分組成,cache地址由塊號b和塊內地址w組成。 當CPU訪(fǎng)問(wèn)cache時(shí),CPU
    的頭像 發(fā)表于 10-31 11:21 ?739次閱讀

    Cache為什么還要分I-Cache,D-Cache,L2 Cache,作用是什么?

    Cache為什么還要分I-Cache,D-Cache,L2 Cache,作用是什么?
    發(fā)表于 10-25 06:38

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

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

    Cache工作原理講解 Cache寫(xiě)入方式原理簡(jiǎn)介

    Cache是位于CPU與主存儲器即DRAM(Dynamic RAM,動(dòng)態(tài)存儲器)之間的少量超高速靜態(tài)存儲器SRAM(Static RAM),它是為了解決CPU與主存之間速度匹配問(wèn)題而設置的,不能由用戶(hù)直接尋址訪(fǎng)問(wèn)。
    的頭像 發(fā)表于 10-17 10:37 ?577次閱讀
    <b class='flag-5'>Cache</b>工作原理講解 <b class='flag-5'>Cache</b>寫(xiě)入方式原理簡(jiǎn)介

    請問(wèn)ARMv8如何讀取cache line中的MOESI信息呢?

    本文以Cortex-A53處理器為例,通過(guò)訪(fǎng)問(wèn) 處理器中的 **內部存儲單元** (tag RAM和dirty RAM),來(lái)讀取cache line 中的MOESI信息。
    發(fā)表于 09-08 14:35 ?517次閱讀
    請問(wèn)ARMv8如何讀取<b class='flag-5'>cache</b> <b class='flag-5'>line</b>中的MOESI信息呢?

    高速緩存Cache介紹

    被訪(fǎng)問(wèn),那么將來(lái)它附近的位置也會(huì )被訪(fǎng)問(wèn)。比如順序執行代碼,或者使用一個(gè)數據結構? 時(shí)間局部性:被訪(fǎng)問(wèn)過(guò)一次的存儲器位置,接下來(lái)會(huì )被多次引用。比如:循環(huán)? 緩存行(cache line)? 邏輯上的一
    發(fā)表于 09-07 08:22

    Arm Cortex-A53 cache的架構解析

    A53的L1 Data cache遵從的是MOESI協(xié)議,如下所示在L1 data cache的tag中存有MOESI的標記位。
    的頭像 發(fā)表于 09-01 15:01 ?6940次閱讀
    Arm Cortex-A53 <b class='flag-5'>cache</b>的架構解析
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看