cache工作原理要求它盡量儲存最新資料,當從主存向cache傳送乙個新塊,而cache中可用位置已被佔滿時,就會產生cache替換的問題。替換問題與cache的組織方式緊密相關:對直接對映cache來說,只要把此可用位置上的主存塊換出cache即可;對全相聯和組相聯cache來說,要從若干個可用位置中選取乙個位置,把其中的主存塊換出cache。
常用的替換演算法有下面三種。
1. 最不經常使用(lfu)演算法
lfu(least frequently used,最不經常使用)演算法將一段時間內被訪問次數最少的那個塊替換出去。每塊設定乙個計數器,從0開始計數,每訪問一次,被訪塊的計數器就增1。當需要替換時,將計數值最小的塊換出,同時將所有塊的計數器都清零。
這種演算法將計數週期限定在對這些特定塊兩次替換之間的間隔時間內,不能嚴格反映近期訪問情況,新調入的塊很容易被替換出去。
2. 近期最少使用(lru)演算法
lru(least recently used,近期最少使用)演算法是把cpu近期最少使用的塊替換出去。這種替換方法需要隨時記錄cache中各塊的使用情況,以便確定哪個塊是近期最少使用的塊。每塊也設定乙個計數器,cache每命中一次,命中塊計數器清零,其他各塊計數器增1。當需要替換時,將計數值最大的塊換出。
lru演算法相對合理,但實現起來比較複雜,系統開銷較大。這種演算法保護了剛調入cache的新資料塊,具有較高的命中率。lru演算法不能肯定調出去的塊近期不會再被使用,所以這種替換演算法不能算作最合理、最優秀的演算法。但是研究表明,採用這種演算法可使cache的命中率達到90%左右。
3. 隨機替換
最簡單的替換演算法是隨機替換。隨機替換演算法完全不管cache的情況,簡單地根據乙個隨機數選擇一塊替換出去。隨機替換演算法在硬體上容易實現,且速度也比前兩種演算法快。缺點則是降低了命中率和cache工作效率。
cache命中率除了和替換演算法有關外,還與cache的容量及塊的大小有關。
Cache的替換策略
根據程式區域性性規律可知 程式在執行中,總是頻繁地使用那些最近被使用過的指令和資料。這就提供了替換策略的理論依據。綜合命中率 實現的難易及速度的快慢各種因素,替換策略可有隨機法 先進先出法 最近最少使用法等。1.隨機法 rand法 隨機法是隨機地確定替換的儲存塊。設定乙個隨機數產生器,依據所產生的隨...
cache 寫回策略
主要分兩種 寫回 write back 和 寫通 write through 1.write back 只有在乙個cache行被選中替換回主存時,如果cache 行的資料是修改過的 dirty 才將它寫回主存。這種策略,要在cache中設定乙個髒位 dirty bit 用來表示快取中的cache 行...
Cache替換演算法
cache替換演算法是影響 快取系統效能的乙個重要因素,乙個好的cache替換演算法可以產生較高的命中率。目前已經提出的演算法可以劃分為以下三類 1 傳統替換演算法及其直接演化,其代表演算法有 lru least recently used 演算法 將最近最少使用的內容替換出cache lfu le...