计算机组成原理学习笔记第4章 4.10——替换算法

有诗云:苔花如米小,也学牡丹开。——袁枚
本篇笔记整理:Code_流苏(CSDN)
Last(在此处点击使用,直达文末)
Frist (在文末点击使用,返回文章首部)

★观前提示:本专栏笔记内容适合有一定的基础或复习时观看,内容如有错,还请大家评论指出!非常感谢!

0. 思维导图

在这里插入图片描述

★小提示:
一些替换算法的具体思想和优缺点在所学习内容中并未提到,因此自己查阅了一些相关资料,对其进行了补充。

1. 需要替换算法的原因

在这里插入图片描述
原因:程序运行一段时间后,Cache存储空间会被占满
当再有新数据要调入时,就需要通过某种机制决定替换的对象。

2. 几种常见的替换算法

①先进先出法—FIFO
②最不经常使用法—LFU
③近期最少使用法—LRU
④随机替换法—RAND

3. 先进先出法—FIFO

①简介

先进先出(First In first Out,FIFO) 算法:每次替换最先调入内存的页面,即将内存中等待时间最长的页面进行替换。此算法的适用范围是顺序结构程序。

简单理解来看,和我们现实生活中的排队方式很相似, 先进队伍的人会先买到票, 然后先从队伍中离开。

在这里插入图片描述

②优点

实现比较简单,可以不需要硬件的支持

③缺点

先进先出页面置换算法没有考虑到缓存页面被使用的情况
在大数情况下,先进先出页面置换算法缺页率比较低或会产生Belady异常现象

4. 最不经常使用法—LFU

①简介

最不经常使用LFU算法:最不经常使用(最少次)淘汰算法(Least Frequently Used),淘汰一段时间内,使用次数最少的页面。

在这里插入图片描述

②优点

如果数据的分布在一段时间内是固定的话,那么LFU可以达到最高的命中率

③缺点

它需要给每个记录项维护频率信息,每次访问都需要更新,这是个巨大的开销;
对突发性的稀疏流量无力,因为前期经常访问的记录已经占用了缓存,偶然的流量不太可能会被保留下来,而且过去的一些大量被访问的记录在将来也不一定会使用上,这样就一直把位置占用了。

5. 近期最少使用法—LRU

①简介

近期最少使用算法LRU算法:最近最少使用(最长时间)淘汰算法(Least Recently Used),LRU是淘汰最长时间没有被使用的页面。
在这里插入图片描述

②优点

LRU实现简单,在一般情况下能够表现出很好的命中率。
对于热点数据, LRU 效率很好,“性价比”高,常用

③缺点

对于偶发的批量操作,比如说批量查询历史数据,就有可能使缓存中热门数据被这些历史数据替换,造成缓存污染,导致缓存命中率下降,减慢了正常数据查询。

6. 替换算法的抖动 - 以FIFO为例

在这里插入图片描述

7. 替换算法的实现方式

  • 1️⃣硬件实现
    成本?
  • 2️⃣LRU算法软件实现
    查找效率如何优化?

★补充
随机替换算法:由硬件或软件随机产生被替换的虚页号。
1️⃣优点:这种替换算法简单,易于实现,
2️⃣缺点:没有利用程序的局限性,主存命中率很低,很少使用。

★小总结:在上一节的学习中,学习到了Cache地址映射与变换方法。这节内容来了解了替换算法,了解到几种常见的的替换算法:FIFO、LFU、LRU和RAND,并对其优缺点等做了总结。通过本节内容的学习与记录,学习到了替换算法,也了解了它们的思想与优缺点,收获颇丰!
Last (一键到达文章末尾)
First(一键返回到文章目录)

笔记内容学习资料:计算机组成原理微课版(谭志虎、秦磊华等编著)
课件资料及视频学习:MOOC计算机组成原理(华中科大)
计算机组成原理专栏——笔记及测验练习都在这
如果对大家有帮助的话,希望大家能多多点赞+关注!这样我动力会更足哦! ღ( ´・ᴗ・` )比心。

猜你喜欢

转载自blog.csdn.net/qq_51646682/article/details/124569559