Cache替换算法

目录

  • 一. 随机算法(RAND)
  • 二. 先进先出算法(FIFO)
  • 三. 近期最少使用算法(LRU)
  • 四. 最不经常使用算法(LFU)

要解决的问题:
Cache很小,主存很大。如果cache满了怎么办?

在这里插入图片描述
\quad

在这里插入图片描述
也要关注各种算法的英文缩写

\quad

一. 随机算法(RAND)

\quad
在这里插入图片描述

随机算法―一实现简单,但完全没考虑局部性原理,命中率低,实际效果很不稳定

\quad

二. 先进先出算法(FIFO)

\quad
在这里插入图片描述
先进先出算法—实现简单,最开始按#0#1#2#3放入Cache,之后轮流替换#0#1#2#3, FIFO依然没考虑局部性原理,最先被调入Cache的块也有可能是被频繁访问的

抖动现象: 频繁的换入换出现象(刚被替换的块很快又被调入)

\quad

三. 近期最少使用算法(LRU)

\quad
近期最少使用算法(LRU, Least Recently Used )-—为每一个Cache块设置一个“计数器”,用于记录每个cache块已经有多久没被访问了。当Cache满后替换“计数器”最大的

\quad

手算方式

在这里插入图片描述

在这里插入图片描述
\quad
\quad

机算方式

在这里插入图片描述
未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1;
一定要注意理解: 每个Cache块已经有多久没被访问了
计数器记录的是没被访问的次数

\quad
在这里插入图片描述

①命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变;
\quad
\quad

在这里插入图片描述
③未命中且无空闲行时,计数值最大的行的信息块被淘汰,新装行的块的计数器置0,其余全加1

LRU算法―-基于“局部性原理”,近期被访问过的主存块,在不久的将来也很有可能被再次访问,因此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀,cache命中率高。

若被频繁访问的主存块数量>cache行的数量,则有可能发生“抖动”,如:{1,2,3,4,5,1,2,3,4,5,1,2.}

\quad

在这里插入图片描述
因为要替换的是最大的, 所以没必要把3+1, 一般有4个主存块最大也就记到3
Cache块的总数=2n,则计数器只需nbit位。且Cache装满后所有计数器的值一定不重复

\quad

四. 最不经常使用算法(LFU)

\quad
在这里插入图片描述
若有多个计数器最小的行,可按行号递增、或FIFO策略进行选择

在这里插入图片描述
这种算法可能会导致计数器需要很多位数来表示, 多次命中就会一直增加

LFU算法―一曾经被经常访问的主存块在未来不一定会用到(如:微信视频聊天相关的块),
并没有很好地遵循局部性原理,因此实际运行效果不如LRU

这个算法看起来很科学, 其实如果这段时间经常被访问, 累加计数很大, 但是未来一段时间不用了
但是这时计数器的值已经很大了, 短时间内不会被替换掉, 就会影响运行效果

\quad
\quad
在这里插入图片描述
\quad
\quad
链接: 王道考研计算机组成原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/263820.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Verilog基础:$random系统函数的使用

相关阅读 Verilog基础​编辑https://blog.csdn.net/weixin_45791458/category_12263729.html $random系统函数语法的BNF范式如下所示,有关BNF范式相关内容,可以浏览以往文章Verilog基础:巴科斯范式(BNF)。 $random系统函数在每次调用时返回一…

HarmonyOS应用开发者基础认证考试(稳过)

判断题 ​​​​​​​ 1. Web组件对于所有的网页都可以使用zoom(factor: number)方法进行缩放。错误(False) 2. 每一个自定义组件都有自己的生命周期正确(True) 3. 每调用一次router.pushUrl()方法,默认情况下,页面栈数量会加1,页面栈支持的…

史上最全MySQL各种锁详解

锁详解 锁是计算机协调多个进程或线程并发访问某一资源的机制。 MySQL锁可以按模式分类为:乐观锁与悲观锁。按粒度分可以分为全局锁、表级锁、页级锁、行级锁。按属性可以分为:共享锁、排它锁。按状态分为:意向共享锁、意向排它锁。按算法分…

Leetcode—337.打家劫舍III【中等】

2023每日刷题(五十二) Leetcode—337.打家劫舍III 算法思想 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(null…

表格的介绍与实战(详细且有案例)

目录​​​​​​​​​​​​​​ 表格的主要作用: 表格的基本语法: 表格相关的标签 合并单元格: 实战: 表格的主要作用: 表格主要是用来展示数据的,使用表格来展示数据,数据可读性更好…

【MySQL表的约束】

目录: 前言表的约束1、空属性2、默认值空属性与默认值 3、列描述4、zerofill5、主键约束6、自增长7、唯一键约束8、外键约束 前言 剑指offer:一年又5天 表的约束 我们上一篇文章所讲的数据类型也是一种约束–不同类型有对应的数据范围;约束…

phpstudy小皮(PHP集成环境)下载及使用

下载 https://www.xp.cn/download.html直接官网下载即可,下载完解压是个.exe程序,直接点击安装就可以,它会自动在D盘目录为D:\phpstudy_pro 使用 phpMyAdmin是集成的数据库可视化,这里需要下载一下,在软件管理-》网站程…

基于ssm鲸落文化线上体验馆论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本鲸落文化线上体验馆就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信…

Linux权限详解

Linux权限 文章目录 Linux权限一、root账号与普通账号二、Linux权限管理三、权限权值表示方法四、文件访问权限的设置方法五、粘滞位六、权限总结 前言: 我们在学习Linux的时候,我们知道在Linux下一切皆文件,而不同的文件对于不同的用户有不同…

模块一——双指针:202.快乐数

文章目录 题目描述简单证明补充知识算法原理代码实现 题目描述 题目链接:202.快乐数 为了方便叙述,将对于⼀个正整数,每⼀次将该数替换为它每个位置上的数字的平方和这⼀个操作记为x操作; 题目告诉我们,当我们不断重…

Java解决岛屿周长问题

Java解决岛屿周长问题 01 题目 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围&am…

JS生成用户登录图形验证码

生成用户登录图形验证码的过程可以通过几个步骤来实现&#xff0c;包括创建画布&#xff0c;生成随机验证码文本&#xff0c;将验证码文本绘制到画布上&#xff0c;以及添加一些噪点和线条来增加复杂性。 HTML 首先&#xff0c;在HTML文件中创建一个<canvas>元素和一个…