• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > ARM存儲器之:高速緩沖存儲器Cache

    ARM存儲器之:高速緩沖存儲器Cache

    作者: 時間:2013-09-30 來源:網絡 收藏

    本文引用地址:http://www.czjhyjcfj.com/article/257011.htm

    15.3.6Cache的替換策略

    在Cache訪問過程中,發現查找的Cache行已經失效,則需要從主存中調入新的行到Cache中。在采用組相聯的Cache中,一個來自主存的行可以放入多個Cache組中。當所有組中的對應行都已經裝滿時,就要使用Cache替換算法,從這些組中找出一個Cache,把它調回到主存中原來存放它的地方,騰出新行來存放新調入的行。被選中替換的Cache行被稱為丟棄者(victim)。如果丟棄者中包含有效的臟數據,那么在該行被寫入新數據之前,控制器必須把該行中的數據寫到主存。選擇和替換丟棄Cache行的過程被稱為淘汰(eviction)。

    Cache控制器選擇下一個丟棄Cache行的策略被稱為替換策略。在常用的替換算法有兩種:輪轉算法和隨機替換算法。

    輪轉算法又叫循環法,這種算法維護一個邏輯計數器,每進行一次替換,計算器加1,當計算器達到最大值時,就被復位成預先定義好的一個基值。這種算法容易預測最壞情況下的Cache性能。但它一個明顯缺點就是,在程序發生很小變化時,可能造成Cache性能急劇下降。

    隨機算法從特定的位置上隨機地選出一行替換出去。它通過一個隨機發生器來完成上述操作。當每次需要替換Cache行時,隨機發生器將產生一個隨機數,用新行將編號為該隨機數的行替換出去。這種算法與輪轉算法最大的區別在于它在每次產生替換行時,增加的是一個非連續值,這個值是由控制器隨機產生的。同樣,當丟棄計算器達到最大值時,會被復位成預先定義好的一個基值。

    相比之下,隨機算法沒有考慮到程序的局部性特點,因而效果有時不盡人意,同時這種算法不易預測最壞情況下Cache性能。而輪轉法就有更好的可預測性,容易預測最壞情況下Cache性能,在一些實時系統中,十分重視這一點。但是,輪轉法替換策略在存儲器訪問發生很小變化時,可能造成Cache性能有較大變化。

    表15.13顯示了目前比較流行的核所使用的策略。

    表15.13 常見核使用的替換策略

    內核

    寫策略

    替換策略

    ARM720T

    直寫法

    隨機

    ARM740T

    直寫法

    隨機

    ARM920T

    直寫法、回寫法

    隨機、輪轉

    ARM940T

    直寫法、回寫法

    隨機

    ARM926EJ-S

    直寫法、回寫法

    隨機、輪轉

    ARM946E

    直寫法、回寫法

    隨機、輪轉

    ARM1020E

    直寫法、回寫法

    隨機、輪轉

    ARM1026EJS

    直寫法、回寫法

    隨機、輪轉

    IntelStrongARM

    回寫法

    輪轉

    IntelXscale

    直寫法

    輪轉

    15.3.7與Cache相關的編程接口

    與Cache編程相關的CP15的寄存器共有3個,它們分別為c1、c7及c9。

    (1)寄存器c1中與Cache相關的位

    c1寄存器在前面CP15寄存器一節中已經介紹過,下面對Cache的控制位進行詳細介紹。

    表15.14顯示了c1中與Cache有關位的作用。

    表15.14 c1中與Cache相關的位

    相關位

    作用

    C(bit[2])

    當數據Cache和指令Cache分開時,本控制位禁止/使能數據Cache

    當數據Cache和指令Cache統一時,本控制位禁止/使能整個Cache

    0:禁止Cache

    1:使能Cache

    如果系統中不含Cache,讀取時該位返回0,寫入時忽略該位

    當系統中Cache不能禁止時,讀取返回1,寫入時忽略該位

    續表

    相關位

    作用

    I(bit[12])

    當數據Cache和指令Cache是分開的,本控制位禁止/使能指令Cache

    0:禁止指令Cache

    1:使能指令Cache

    如果系統中使用統一的指令Cache和數據Cache或者系統中不含Cache,讀取該位時返回0,寫入時忽略該位

    當系統中的指令Cache不能禁止時,讀取該位返回1,寫入時忽略該位

    RR(bit[14])

    如果系統中Cache的淘汰算法可以選擇的話,本控制位選擇淘汰算法

    0:選擇常規的淘汰算法,如隨機淘汰算法

    1:選擇預測性的淘汰算法,如輪轉(round-robin)淘汰算法

    如果系統中淘汰算法不可選擇,寫入該位時被忽略,讀取該位時,根據其淘汰算法可以簡單地預測最壞情況,并返回1或者0

    存儲器相關文章:存儲器原理




    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 茂名市| 广南县| 平凉市| 肃宁县| 大庆市| 读书| 泉州市| 镇平县| 修水县| 休宁县| 五莲县| 成安县| 金堂县| 葫芦岛市| 华安县| 眉山市| 拜泉县| 连云港市| 石家庄市| 金湖县| 密云县| 卓资县| 陇西县| 沂南县| 抚顺市| 云林县| 河源市| 永康市| 察隅县| 固阳县| 金阳县| 西贡区| 台州市| 怀集县| 台南市| 高尔夫| 安徽省| 宜兰县| 庄浪县| 肥乡县| 贞丰县|