【计算机组成原理】LRU计数器问题

学习最近最久未使用(LRU)算法的时候是否会有这样一个疑问,为什么命中某一行时,该行的计数器清零,比其低的计数器加1,其余不变。

先来回顾一下计数器变化的规则

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

②未命中且还有空闲行时,新装入的行的计数器置为0,其余非空闲行计数器全加1;

③未命中且没有空闲行时,计数器值最大的行被替换,新装入的行的计数器置为0,其余全加1;

以4路组相联为例说明,4路组相联,即4个cache行为一组,那么为了表示其先后未访问时间的排名,需要在cache行里面添加冗余位,4个cache行只需两个冗余位就能表示其排名,0、1、2、3

假设第一行计数器是2,第二行计数器是3,第三行计数器是1,第四行计数器是0

计数器 cache行
2 1
3 2
1 3
0 4

如果规则①是所命中的行的计数器清零,其余所有计数器加1的话,而再次访问到第一行时,计数器就会变成

计数器 cache行
0 1
4 2
2 3
1 4

这样计数器最高就变成了4,用二进制表示的话是100,原本2个二进制位将无法表示

而且,LRU的计数器本质上并不是记录的未命中次数,就拿班级考试来说,如果小明原本是第二名,一天小明转班走了,第三名变成了第二名,第四名变成了第三名............

当然这个例子并不太恰当,只是可能会比较形象。

相关推荐
自我陶醉@2 天前
计算机组成原理---计算机系统概述
考研·学习方法·408·计算机组成原理·计算机硬件
丶Darling.12 天前
26考研 | 王道 | 计算机组成原理 | 二、数据的表示和运算
笔记·学习·计算机组成原理
小陈又菜20 天前
【计算机组成入门到入土】解码计算机:冯·诺依曼架构如何主宰你的每一次点击
架构·计算机组成原理
XueminXu20 天前
Flink-SQL计算中的维表连接使用举例
sql·flink·lru·system_time·proctime·连接维表·关联维表
pusue_the_sun1 个月前
简单概述操作系统的发展
操作系统·计算机组成原理
Pretend° Ω1 个月前
LRU缓存详解:用C语言实现高效数据管理
运维·c语言·spring·缓存·lru·双向链表
鼠鼠我捏,要死了捏1 个月前
Redis 集群模式读写分离与分片策略方案对比分析与实践指南
redis·cache·cluster
鼠鼠我捏,要死了捏1 个月前
Redis缓存穿透、缓存击穿与雪崩防护及性能优化实战指南
redis·cache·performance
岑梓铭1 个月前
考研408《计算机组成原理》复习笔记,第六章(1)——总线概念
笔记·考研·408·计算机组成原理·计组
KarrySmile1 个月前
Day12--HOT100--23. 合并 K 个升序链表,146. LRU 缓存,94. 二叉树的中序遍历
数据结构·链表·二叉树·递归·hot100·lru·灵茶山艾府