cache--存储器系统

一、Cache(高速缓冲存储器)

1.1.基本概念

  • 高速缓冲存储器是位于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小,速度比主存高得多,接近于CPU的速度,单位成本比内存高。Cache存储了频繁访问内存的数据

1.2.Cache原理、命中率、失效率

  • 使用Cache改善系统性能的主要依据是程序的局部性原理

  • 命中率、失效率

    • Cache的访问命中率为h(通常1-h就是Cache的失效率),Cache的访问周期时间是t1,主存储器的访问周期时间是t2,则整个系统的平均访存时间就是:t3=h x t1 + (1-h) x t2

1.3.Cache存储器的映射机制

  • 分配给Cache的地址存放在一个相联存储器(CAM)中,CPU发生访存请求时,会先让CAM判断所要访问的数据是否在Cache中,如果命中就直接使用。这个判断的过程就是Cache地址映射,这个速度应该尽可能快

  • 常见的映射方法有:

    • 直接映射
    • 全相联映射
    • 组相联映射
  • 直接映射

    • 是一种多对一的映射关系,但是一个主存块只能够复制到Cache的一个特定位置上去
    • Cache的行号i和主存的块号j有函数关系:i = j % m(其中m为Cache总行数)
  • 全相联映射

    • 将主存中任一主存块能映射到Cache中任意行(主存块的容量等于Cache行容量)
    • 根据主存地址不能直接提取Cache页号,而是需要将主存块标记与Cache各页的标记逐个比较,直接找到标记符合的页(访问Cache命中),或者全部比较完后仍无符合的标记(访问Cache失败)
    • 主存块标记与Cache各页的标记逐个比较,所以这种映射方式速度很慢,失掉了高速缓存的作用,这时全相联映射方式的最大缺点。如果让主页标记与各Cache标记同时比较,则成本太高
  • 组相联映射

    • 是前两种方式的折中方案,它将Cache中的块再分组,各组之间是直接映像,而组内各块之间则是全相联映像
    • 主存地址=区号+组号+组内块号+块内地址号

1.4.Cache淘汰算法

  • 当Cache数据已满,并且出现未命中情况时,就要淘汰一些老的数据,更新一些新的数据进入Cache。选择淘汰哪些数据的方法就是淘汰算法。常见的方法有三种:

    • 随机淘汰算法
    • 先进先出淘汰算法(FIFO)
    • 最近最少使用淘汰算法(LRU)
  • 其中平均命中率最高的是LRU算法

1.5.Cache存储器的写操作

  • 在使用Cache时,需要保证其数据与主存一致,因此在写Cache时就要考虑与主存间的同步问题,通常使用以下三种方法:
    • 写直达:当Cache写命中时,Cache与主存同时发生写修改
    • 写回:当CPU对Cache写命中时,只修改Cache的内容而不立即写入主存,当此行被换出才写回主存
    • 标记法:数据进入Cache后,有效位置1;当CPU对该数据修改时,数据只写入主存并将该有效位置0.当要从Cache中读取数据时,要测试其有效位,若为1则直接从Cache中取数,否则从主存中取数。

原文参考:https://juejin.cn/post/6870128002378760206

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值