根據(jù)不同的分類標(biāo)準(zhǔn)可以按以下3種方法對Cache進(jìn)行分類。
?1)數(shù)據(jù)cache和指令cache
?● 指令cache:指令預(yù)取時使用的cache。
?● 數(shù)據(jù)cache:數(shù)據(jù)讀寫時使用的cache。
如果一個存儲系統(tǒng)中指令cache和數(shù)據(jù)cache是同一個cache,稱系統(tǒng)使用了統(tǒng)一的cache。反之,如果是分開的,那么稱系統(tǒng)使用了獨(dú)立的cache;如果系統(tǒng)中只包含指令cache或者數(shù)據(jù)cache,那么在配制系統(tǒng)時可以作為獨(dú)立的cache使用了。
使用獨(dú)立的數(shù)據(jù)cache和指令cache,可以在同一個時鐘周期中讀取指令和數(shù)據(jù),而不需要雙端口的cache,但這時候要注意保證指令和數(shù)據(jù)的一致性。
?2)寫通(write-through)cache和寫回(write-back)cache
?● 寫回cache CPU在執(zhí)行寫操作時,被寫的數(shù)據(jù)只寫入cache,不寫入主存,僅當(dāng)需要替換時,才把已經(jīng)修改的cache塊寫回到主存中,在采用這種更新算法的cache快表中,一般有一個修改位,當(dāng)一塊中的任何一個單元被修改時,這一塊的修改位被設(shè)置為1,否則這一塊的修改位仍保持為0;在需要替換這一塊時,如果對應(yīng)的修改位為1,則必須先把這一塊寫到主存中去之后,才能調(diào)入新的塊,否則,只要用新調(diào)入的塊覆蓋該塊即可。
?● 寫通cache CPU在執(zhí)行寫操作時,必須把數(shù)據(jù)同時寫入cache和主存,這樣,在cache的快表中就不需要“修改位”,
當(dāng)某一塊需要替換時,也不必把這一塊寫回到主存中,新調(diào)入的塊可以立即把這一塊覆蓋掉。
寫回cache和寫通cache的優(yōu)缺點(diǎn)比較如下表所示。
寫回cache與寫通cache比較
?3)讀時分配(read-allocate)cache和寫時分配(write-allocate)cache
?● 讀時分配cache當(dāng)進(jìn)行數(shù)據(jù)寫操作時,如果cache沒命中,只是簡單地將數(shù)據(jù)寫入主存中,主要在數(shù)據(jù)讀取時,才進(jìn)行cache內(nèi)容預(yù)取。
?●寫時分配cache當(dāng)進(jìn)行數(shù)據(jù)寫操作時,如果cache未命中,cache系統(tǒng)將會進(jìn)行cache內(nèi)容預(yù)取,從主存中將相應(yīng)的塊讀取到cache中相應(yīng)的位置,并執(zhí)行寫操作,把數(shù)據(jù)寫入到cache中。對于寫通類型的cache,數(shù)據(jù)將會同時寫入到主存中,對于寫回類型的cache,數(shù)據(jù)將在合適的時候?qū)懟氐街鞔嬷小?/p>
由于寫操作分配cache增加了cache內(nèi)容預(yù)取的次數(shù),增加了寫操作的開銷,但同時可能提高cache的命中率,因此這種技術(shù)對于系統(tǒng)整體性能的影響與程序中讀操作和寫操作的數(shù)量有關(guān)。
Cache替換算法
隨機(jī)替換算法
通過一個偽隨機(jī)數(shù)發(fā)生器產(chǎn)生一個偽隨機(jī)數(shù),用新塊編號為該偽隨機(jī)數(shù)的cache塊替換掉。這種算法很簡單且容易實(shí)現(xiàn),但沒有考慮程序的局部性特點(diǎn),也沒有利用歷史上塊地址流的分布情況,因而效果較差,同時這種算法不易預(yù)測最壞情況下cache的性能。
輪轉(zhuǎn)替換算法
維護(hù)一個邏輯的計數(shù)器,利用該計數(shù)器依次選擇將要被替換出去的cache塊。這種算法容易預(yù)測在最壞情況下cache的性能。但在程序發(fā)生很小的變化時,可能造成cache平均性能的急劇變化,這是它的一個明顯缺點(diǎn)。
-
cpu
+關(guān)注
關(guān)注
68文章
11012瀏覽量
215286 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7233瀏覽量
90783 -
存儲
+關(guān)注
關(guān)注
13文章
4472瀏覽量
86928 -
Cache
+關(guān)注
關(guān)注
0文章
129瀏覽量
28837
發(fā)布評論請先 登錄

#硬聲創(chuàng)作季 計算機(jī)原理:5.3.10 Cache替換算法(2)
在嵌入式中為什么要用到Linux系統(tǒng)呢
淺析cache控制器的分配策略與替換策略
基于修正LRU的壓縮Cache替換策略
流分類算法的分類及比較
基于BWDSP指令Cache的PLRU替換算法研究
一種有效的Cache優(yōu)化替換策略

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

寄存器和cache的區(qū)別介紹
Python替換字符串的新姿勢

在組相聯(lián)cache中,用于替換cache line的算法有哪些?
Python 中怎么來實(shí)現(xiàn)類似 Cache 的功能
基于flashtext模塊使用FlashText算法進(jìn)行字符串查找和替換

評論