需要替换算法的原因
程序运行一段时间后,Cache存储空间被占满,当再有新的数据要调入时,就需要通过某种机制决定替换的对象
集中常见的替换算法
- 先进先出-FIFO
- 最不经常使用法-LFU
- 近期最少使用法-LRU
- 随机替换法
先进先出算法-FIFPO
需要有个计数器,来标记进去的次数
每次载入数据对应的标记都会加一,当第三次命中依然要加一,当16进入时候,满了,所以找到标记最大的那个值是22,踢出,载入16
最不经常使用法—LFU
同样要设置一个计数器,当Cache技术块每次使用一次,加一
当4进入的时候16和19都是第一次,但是19先进来的,所以淘汰19,当3进来的时候4和16,16是先进来的所以淘汰16
近期最少使用算法—LRU
需要一个时间单元计数值,每次载入加一,每次命中减一
当16进入的时候,需要淘汰计数值最大的那个值11,并替换
替换算法的抖动- 以FIFO为例
即将访问的数据就是被淘汰的数据
替换算法的实现方式
- 硬件实现:需要考虑成本问题
- 软件实现:需要考虑查找效率如何优化