Cache替換方案
1. 近期最少使用(LRU)算法
LRU(Least Recentlv Used)算法是將一組中近期最少使用的塊替換出去。爲此,每塊也設
置一個計數器,但每命中一次,命中塊的計數器清0,而組內其他塊的計數器加1。當需要替
換時,比較一組內所有塊的計數器的值,將計數值最大的塊替換掉。這種算法保護了剛拷貝
到cache中的新數據塊,符合Cache的工作原理,因而使Cache具有較高的命中率。
對兩路組相聯的Cache來說,LRU算法的硬件實現可以簡化。因爲一個主存塊只能在
一個特定組的兩塊中進行存放選擇,2選l不必用計數器,用一個二進制位(稱爲LRU位)即
可。例如,規定一組中的A塊拷貝了新數據時將LRU位置1,B塊拷貝了新數據時將LRU位
置0。當需要替換時,只需檢查LRU位:爲0替換A塊,爲1替換B塊。實現了保護新塊的原則。
2. 時間與命中協調方式(自己隨想)
每當有命中的時候,則更新CACHE列表中的排除因子,當CACHE滿的時候排除掉排除因子最大的,排除因子的計算方法是
排除因子=相關係數*(CACHE已經存活的時間/訪問總命中次數)
相關係數的選擇很重要,根據不同的業務需要,內存或磁盤空間大小,每個CACHE的大小等情況有關。