Cache和存儲(chǔ)器一樣具有兩種基本操作,即讀操作和寫(xiě)操作。當(dāng)CPU發(fā)出讀操作命令時(shí),根據(jù)它產(chǎn)生的主存地址分為兩種情形:一種是需要的數(shù)據(jù)已在Cache中,那么只需要直接訪問(wèn)Cache,從對(duì)應(yīng)單元中讀取信息到數(shù)據(jù)總線即可;
另一種是需要的數(shù)據(jù)尚未裝入Cache,CPU需要從主存中讀取信息的同時(shí),Cache替換部件把該地址所在的那塊存儲(chǔ)內(nèi)容從主存復(fù)制到Cache中。若Cache中相應(yīng)位置已被字塊占滿(mǎn),就必須去掉舊的字塊。常見(jiàn)的替換策略有以下兩種:
1-先進(jìn)先出策略(FIFO)
FIFO(First In First Out)策略總是把最先調(diào)入的Cache字塊替換出去,它不需要隨時(shí)記錄各個(gè)字塊的使用情況,較容易實(shí)現(xiàn)。缺點(diǎn)是經(jīng)常使用的塊,如一個(gè)包含循環(huán)程序的塊也可能由于它是最早的塊而被替換掉。
2-最近最少使用策略(LRU)
LRU(Least Recently Used)策略是把當(dāng)前近期Cache中使用次數(shù)最少的信息塊替換出去,這種替換算法需要隨時(shí)記錄Cache中字塊的使用情況。LRU的平均命中率比FIFO高,在組相聯(lián)映像方式中,當(dāng)分組容量加大時(shí),LRU的命中率也會(huì)提高。
關(guān)于Write-through和Write-back
1-對(duì)于磁盤(pán)操作來(lái)說(shuō)
write-through的意思是寫(xiě)操作根本不使用緩存,數(shù)據(jù)總是直接寫(xiě)入磁盤(pán),關(guān)閉寫(xiě)緩存,可釋放緩存用于讀操作(緩存被讀寫(xiě)操作共用)。
write-back的意思是數(shù)據(jù)不直接被寫(xiě)入磁盤(pán),而是先寫(xiě)入緩存,再由控制器將緩存內(nèi)未寫(xiě)入磁盤(pán)的數(shù)據(jù)寫(xiě)入磁盤(pán),從應(yīng)用程序的角度看,比等待完成磁盤(pán)寫(xiě)入操作要快得多,因此可以提高寫(xiě)性能。
但是write-back(write cache)方式通常在磁盤(pán)負(fù)荷較輕時(shí)速度更快。負(fù)荷重時(shí),每當(dāng)數(shù)據(jù)被寫(xiě)入緩存后,就要馬上再寫(xiě)入磁盤(pán)以釋放緩存來(lái)保存將要寫(xiě)入的新數(shù)據(jù),這時(shí)如果數(shù)據(jù)直接寫(xiě)入磁盤(pán),控制器會(huì)以更快的速度運(yùn)行。因此,負(fù)荷重時(shí),將數(shù)據(jù)先寫(xiě)入緩存反而會(huì)降低吞吐量。
2-對(duì)于CPU內(nèi)部的cache緩沖模式來(lái)說(shuō)
Write-Through和Write-Back,前者是按順序來(lái)一個(gè)寫(xiě)一個(gè),而后者則是先將資料按一定數(shù)量保存在緩沖區(qū)中,然后將相同位置的數(shù)據(jù)一次性寫(xiě)出。舉例說(shuō)明:有一部電梯,如果按先入先出的原則,即write through模式,第一個(gè)人去3樓,第二個(gè)去2樓,第三個(gè)也去3樓,那么這電梯就得先到3樓,然后到2樓,再去3樓。
但如果在write back模式下,電梯先到2樓把第二個(gè)人送出去,然后再到3樓把第一個(gè)人和第三個(gè)人送出去,效率顯然高多了。早期的cache只有write through模式,但現(xiàn)在的cache都使用write back模式了。
3-其他的解釋
?Write-Through:在write的時(shí)候,同步更新cache和memory中的數(shù)據(jù)。
?Write-Back:在write的時(shí)候更新cache,但是memory中的數(shù)據(jù)不一定同步更新,只有當(dāng)cache到一定程度才會(huì)把cache中的數(shù)據(jù)刷到memory中,或者通過(guò)cache指令刷新,不會(huì)同步自動(dòng)刷新。
?cache line的意思是假設(shè)你那條指令只要從memory中讀4個(gè)字節(jié),但是一般來(lái)說(shuō)你接下來(lái)的指令很有可能要讀這4個(gè)字節(jié)后面的數(shù)據(jù),所以一般硬件會(huì)多讀一些數(shù)據(jù)進(jìn)入cache,比如64字節(jié),那么這64字節(jié)就是一個(gè)cache line。而如果你這個(gè)cache line里的數(shù)據(jù)長(zhǎng)時(shí)間不被CPU訪問(wèn),那么這個(gè)cache line可能會(huì)被選中換出,這時(shí)候就必須把cache里被改過(guò)的信息寫(xiě)回memory了。
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7632瀏覽量
166376 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7239瀏覽量
90984 -
磁盤(pán)
+關(guān)注
關(guān)注
1文章
388瀏覽量
25644 -
Cache
+關(guān)注
關(guān)注
0文章
129瀏覽量
28904
發(fā)布評(píng)論請(qǐng)先 登錄
Cache和Write Buffer一般性介紹

STM32H7系列AXI SRAM設(shè)置不同的cache策略導(dǎo)致以太網(wǎng)初始化異常怎么解決?
MPU的作用是什么?有哪些功能?
淺析cache控制器的分配策略與替換策略
介紹一種多級(jí)cache的包含策略(Cache inclusion policy)
基于修正LRU的壓縮Cache替換策略
OrCAD中元件的替換與更新

基于BWDSP指令Cache的PLRU替換算法研究
一種有效的Cache優(yōu)化替換策略

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

寄存器和cache的區(qū)別介紹
從三個(gè)方面闡述Cache
在組相聯(lián)cache中,用于替換cache line的算法有哪些?
Cache分類(lèi)與替換算法

評(píng)論