cache的替換策略與寫操作策略

參考資料:《計算機組成原理》(第五版) 白中英等著


替換策略:

一、最不經常使用算法(Least Frequently Used,LFU):

LFU算法認爲:應該將一段時間內被訪問次數最少的那行數據替換出。

實現方法:每行設置一個計數器。新行建立後從0開始計數,每被訪問一次,被訪問行的計數器增1。當需要替換時,對這些特定行的計數值進行比較,將計數值最小的行換出,同時將這些特定行的計數器清零。

該算法不能嚴格反映近期訪問情況。


二、近期最少使用算法(Least Recently Used,LRU):

LFU算法將近期內長久未被訪問過的行換出。

實現方法:每行設置一個計數器,但它們是cache每命中一次,命中行計數器清零,其他各行計數器增1。當需要替換時,將計數值最大的行換出。

該算法保護了剛拷貝到cache中的新數據行,較爲符合cache的工作原理,有效地提高了命中率。


三、隨機替換:

不需要算法,從特定的行位置中隨機地選取一行換出即可。

該策略在硬件上容易實現,速度較前兩種策略快。但是會在一定程度上降低cache的效率。這些不足會隨着cache容量增大而減小。



寫操作策略:


一、寫回法:

要求:當CPU寫cache命中時,只修改cache中的內容,不立即寫入主存,只有當此行被換出時才寫回主存。當CPU寫未命中時,爲了包含欲寫字的主存塊在cache中分配一行,將此塊拷貝到cache後再進行修改。主存的寫修改操作統一地留到換出時再進行。

實現:每個cache行配置修改位,以反映CPU是否對該行修改過。該行被換出時,根據修改位的內容決定改行內容是寫回主存還是簡單棄去。

特點:寫cache與寫主存異步進行,可以減少訪存次數,但是存在cache與主存不一致性的隱患。同時,還要設置修改位,相應的邏輯較爲複雜。


二、全寫法:

要求:當寫cache命中時,cache與主存同步發生修改。當寫cache未命中時,直接向主存進行寫入,但是修改過的主存塊是否拷貝到cache,有WTWA法(將修改後的主存塊立即拷貝到cache),WTNWA法(不會將修改後的主存塊立即拷貝到cache)。

特點:實現寫cache與寫主存同步,有效地保證了cache與主存內容的一致性。無需設置修改位,邏輯較爲容易。但由於寫cache未命中時,即cache對CPU向主存的寫操作無高速緩衝功能,降低了cache的功效。


三、寫一次法:

基於上述兩種寫策略的綜合,第一次寫命中時,採用全寫法;後續採用寫回法。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章