cache的替換策略

Cache工作原理要求它儘量保存最新數據,當從主存向Cache傳送一個新塊,而Cache中可用位置已被佔滿時,就會產生Cache替換的問題。替換問題與Cache的組織方式緊密相關:對直接映射Cache來說,只要把此可用位置上的主存塊換出Cache即可;對全相聯和組相聯Cache來說,要從若干個可用位置中選取一個位置,把其中的主存塊換出Cache。

常用的替換算法有下面三種。

  1. 最不經常使用(LFU)算法

LFU(Least Frequently Used,最不經常使用)算法將一段時間內被訪問次數最少的那個塊替換出去。每塊設置一個計數器,從0開始計數,每訪問一次,被訪塊的計數器就增1。當需要替換時,將計數值最小的塊換出,同時將所有塊的計數器都清零。

這種算法將計數週期限定在對這些特定塊兩次替換之間的間隔時間內,不能嚴格反映近期訪問情況,新調入的塊很容易被替換出去。

  1. 近期最少使用(LRU)算法

LRU(Least Recently Used,近期最少使用)算法是把CPU近期最少使用的塊替換出去。這種替換方法需要隨時記錄Cache中各塊的使用情況,以便確定哪個塊是近期最少使用的塊。每塊也設置一個計數器,Cache每命中一次,命中塊計數器清零,其他各塊計數器增1。當需要替換時,將計數值最大的塊換出。

LRU算法相對合理,但實現起來比較複雜,系統開銷較大。這種算法保護了剛調入Cache的新數據塊,具有較高的命中率。LRU算法不能肯定調出去的塊近期不會再被使用,所以這種替換算法不能算作最合理、最優秀的算法。但是研究表明,採用這種算法可使Cache的命中率達到90%左右。

  1. 隨機替換

最簡單的替換算法是隨機替換。隨機替換算法完全不管Cache的情況,簡單地根據一個隨機數選擇一塊替換出去。隨機替換算法在硬件上容易實現,且速度也比前兩種算法快。缺點則是降低了命中率和Cache工作效率。

Cache命中率除了和替換算法有關外,還與Cache的容量及塊的大小有關。

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