<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò ) 收藏

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

15.3.6Cache的替換策略

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

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

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

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

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

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

表15.13 常見(jiàn)核使用的替換策略

內核

寫(xiě)策略

替換策略

ARM720T

直寫(xiě)法

隨機

ARM740T

直寫(xiě)法

隨機

ARM920T

直寫(xiě)法、回寫(xiě)法

隨機、輪轉

ARM940T

直寫(xiě)法、回寫(xiě)法

隨機

ARM926EJ-S

直寫(xiě)法、回寫(xiě)法

隨機、輪轉

ARM946E

直寫(xiě)法、回寫(xiě)法

隨機、輪轉

ARM1020E

直寫(xiě)法、回寫(xiě)法

隨機、輪轉

ARM1026EJS

直寫(xiě)法、回寫(xiě)法

隨機、輪轉

IntelStrongARM

回寫(xiě)法

輪轉

IntelXscale

直寫(xiě)法

輪轉

15.3.7與Cache相關(guān)的編程接口

與Cache編程相關(guān)的CP15的寄存器共有3個(gè),它們分別為c1、c7及c9。

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

c1寄存器在前面CP15寄存器一節中已經(jīng)介紹過(guò),下面對Cache的控制位進(jìn)行詳細介紹。

表15.14顯示了c1中與Cache有關(guān)位的作用。

表15.14 c1中與Cache相關(guān)的位

相關(guān)位

作用

C(bit[2])

當數據Cache和指令Cache分開(kāi)時(shí),本控制位禁止/使能數據Cache

當數據Cache和指令Cache統一時(shí),本控制位禁止/使能整個(gè)Cache

0:禁止Cache

1:使能Cache

如果系統中不含Cache,讀取時(shí)該位返回0,寫(xiě)入時(shí)忽略該位

當系統中Cache不能禁止時(shí),讀取返回1,寫(xiě)入時(shí)忽略該位

續表

相關(guān)位

作用

I(bit[12])

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

0:禁止指令Cache

1:使能指令Cache

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

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

RR(bit[14])

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

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

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

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

存儲器相關(guān)文章:存儲器原理




關(guān)鍵詞: ARM 高速緩沖存儲器 cache

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>