内核技术中文网»首页 论坛 圈点 查看内容

0 评论

0 收藏

分享

高速缓存的工作原理

1、高速缓存的工作原理

:存放在存储单元中的二进制代码组合,一个字可以表示一个数据,可以表示一个指令,可以表示一个字符串。字是内存中存储单元的最小单位 字块:连续的字,一组字(字块包含了多个字)。存储在连续的存储单元中,从而被看做是一个单元的一组字

主存与字以及字块的关系如下图

内存寻址的过程:对于字的寻址,字的地址可以包括两个部分

  • 字块的部分,用来指示当前寻址的字属于哪个字块的
  • 字的部分,用来寻找字块里面哪一个字是这个地址所指定的字

求主存字块和字块内有多少个字的方法

例题:

2、高速缓存的替换策略

高速缓存内部的存储结构与缓存非常类似,也是有字和字块的概念,但是主存的容量是远大于高速缓存的,也就是说主存的字块数是远大于缓存的字块数的。同时缓存里面存储的数据是主存的复制(缓存的每一个数据都是来源于主存的)。

高速缓存大小的计算

CPU取数据的几种情况:

  1. CPU需要的数据在缓存里面,直接取就好了
  2. CPU需要的数据不在缓存里面就要去主存中拿

CPU从高速缓存取数据成功几率的量化指标:高速缓存命中率、高速缓存访问效率

命中率

命中率是衡量缓存的重要性能指标 理论上CPU每次都能从高速缓存取数据的时候,命中率为1

访问效率

访问率也是衡量缓存的性能指标

访问效率e的计算公式如下图:

求访问效率、命中率的例子:

根据上图中求得的命中率,代入公式可以求得访问效率为91.7%,如下图:

平均访问时间如下:

高速缓存的替换策略

高速缓存的替换时机:当cpu访问高速缓存发现没有需要的数据时,就需要去主存中载入所需数据,然后替换到高速缓存中去。

高速缓存替换策略主要有下列几种:

  1. 随机算法
  2. 先进先出算法(FIFO)
  3. 最不经常使用算法(LFU)
  4. 最近最少使用算法(LRU)

随机算法

每一次需要替换的时候,随机选取高速缓存里面的位置,然后把相关内容替换掉

先进先出算法(FIFO)

把高速缓存看做一个先进先出的队列
优先替换最先进入队列的字块

最不经常使用算法(LFU)

优先淘汰使用次数最少的字块
因为需要淘汰使用次数最少的字块,所以需要额外的空间记录字块的使用频率

最近最少使用算法(LRU)

优先淘汰一段时间内没有使用的字块
有多重实现方法,一般使用双向链表实现
把当前访问节点置于链表头部,需要淘汰的时候直接把链表的尾部节点淘汰掉就可以了

原文作者:极致Linux内核

原文地址:https://zhuanlan.zhihu.com/p/577826842(版权归原文作者所有,侵权联系删除

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
主题 1545
回复 0
粉丝 2
扫码获取每晚技术直播链接
快速回复 返回顶部 返回列表