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的大小等情况有关。