当前位置: 首页 > news >正文

计算机组成原理-Cache替换算法

文章目录

  • 总览
  • 随机算法(RAND)
  • 先进先出算法(FIFO)
  • 近期最少使用算法(LRU)
  • 最不经常使用算法(LFU)
  • 总结

总览

w
在这里插入图片描述

随机算法(RAND)

没有选择性地考虑替换哪一块Cache,或者说没有考虑局部性原理(要用的可能Cache块),使得可能下一次要访问的Cache块被替换了,进而导致替换次数频繁

在这里插入图片描述

先进先出算法(FIFO)

先进入的Cache的先被替换
在这里插入图片描述

近期最少使用算法(LRU)

人为判断替换哪个Cache块:从当前要访问的主存块往前看,将其与Cache块对比,直到只剩下一个Cache块没有对应的主存块则替换它
Cache块的总数为2的n次方时,计数器只需要n位。
若装满后此时只有替换和命中,替换时会替换计数器值最大的,命中时会由于未命中的比其低的计数器加1,所以最大的计数器的位数依然不会超过n位
且Cache装满后所有计数器的值一定不重复。
抖动现象依然可能存在
在这里插入图片描述

最不经常使用算法(LFU)

若有多个计数器最小的行(多个计数器的行同时最小),可以按照行号递增或者FIFO(先进先出)策略来选择替换的
新调入的块计数器赋值为0,之后每访问一次计算器+1.需要替换时,选择计数器最小的一行
计数器比特位较长,因为此时计数器的值的大小没有限制
在这里插入图片描述

总结

在这里插入图片描述

相关文章:

  • 【华为OD题库-048】拔河比赛-java
  • Docker+ Jenkins+Maven+git自动化部署
  • 每日一题:LeetCode-283. 移动零
  • 在Django中使用Q对象和条件运算符来构建动态查询
  • DDoS高防IP到底是什么?
  • C# 友元程序集
  • 225. 用队列实现栈 --力扣 --JAVA
  • linux下实现Qt程序实现开机自启动
  • LeetCode [简单](非递归)二叉树的中序遍历
  • Python爬虫遇到重定向URL问题时如何解决?
  • [密码学]DES
  • 【九日集训】第五天:排序
  • VSCode 代码调试
  • 使用Golang构建高性能网络爬虫
  • MGF4964BL-01 低噪声 InGaAs HEMT(高电子迁移率晶体管) K波段放大器 微X型塑料封装
  • 网络传输文件的问题
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【前端学习】-粗谈选择器
  • Centos6.8 使用rpm安装mysql5.7
  • create-react-app做的留言板
  • Java 最常见的 200+ 面试题:面试必备
  • php ci框架整合银盛支付
  • Quartz初级教程
  • React as a UI Runtime(五、列表)
  • Service Worker
  • Vue官网教程学习过程中值得记录的一些事情
  • 回顾 Swift 多平台移植进度 #2
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 聚类分析——Kmeans
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 前端技术周刊 2019-02-11 Serverless
  • 山寨一个 Promise
  • 树莓派 - 使用须知
  • 小程序01:wepy框架整合iview webapp UI
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (七)Knockout 创建自定义绑定
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (算法)Game
  • (原)Matlab的svmtrain和svmclassify
  • (转)原始图像数据和PDF中的图像数据
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .chm格式文件如何阅读
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 表达式计算:Expression Evaluator
  • .NET学习教程二——.net基础定义+VS常用设置
  • .py文件应该怎样打开?
  • @KafkaListener注解详解(一)| 常用参数详解
  • [ C++ ] STL_vector -- 迭代器失效问题