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

cache中命中率和平均访问时间

在这里插入图片描述
这张图讨论了平均访问时间(Average Access Time)在缓存-主存层次结构中的重要性,并提出了相关的优化目标。图中展示了 CPU 和主存(DRAM)之间通过缓存的交互,重点在于提升命中率,以优化访问速度。

图中内容解释:

  1. 缓存与主存的层次结构

    • CPU 首先访问缓存,若命中,则直接从缓存中获取数据;若未命中,则需要从较慢的主存(DRAM)中读取数据。
    • 缓存包含了部分主存数据的临时拷贝,能够加快频繁访问数据的速度。
  2. 目标

    • 提高平均访问时间:要减少 CPU 访问数据的平均时间,必须提升命中率。命中率越高,访问缓存的次数越多,从而减少主存访问的延迟。
    • 透明性:缓存的设计应该是“对程序员透明的”,即程序员不需要特别关心缓存的存在,编程上也无需进行特殊处理。
  3. 命中率和缺失率

    • 命中率(α):缓存命中的概率,即 CPU 访问数据时从缓存中成功找到的频率。
    • 缺失率(1 - α):即剩余未命中的比例,需要从主存中读取数据的情况。
  4. 平均访问时间公式

    • 图中给出了平均访问时间的公式:
      t a v e = α t c + ( 1 − α ) ( t c + t m ) t_{ave} = \alpha t_c + (1 - \alpha)(t_c + t_m) tave=αtc+(1α)(tc+tm)
      • α t c \alpha t_c αtc:表示命中缓存的情况,所需时间是命中率乘以缓存访问时间 t c t_c tc
      • ( 1 − α ) ( t c + t m ) (1 - \alpha)(t_c + t_m) (1α)(tc+tm):表示未命中的情况,访问主存的时间是 t c + t m t_c + t_m tc+tm,乘以未命中率 1 − α 1 - \alpha 1α
    • 简化后的公式:
      t a v e = t c + ( 1 − α ) t m t_{ave} = t_c + (1 - \alpha) t_m tave=tc+(1α)tm
    • 该公式表明,为了减少平均访问时间,增大命中率 α 或减少主存访问时间 t m t_m tm 都是有效的方式。
  5. 挑战

    • 挑战在于使命中率尽可能高,从而最大化缓存的性能优势,减少访问主存的频率。

总结

  • 这张图强调了缓存的命中率对系统性能的影响,并展示了平均访问时间的计算公式。为了提高整体性能,应尽量提高缓存命中率,以减少高延迟的主存访问。
    在这里插入图片描述
    这张图计算了要达到目标的平均访问时间(5 ns),缓存需要多高的命中率

问题描述:

  • 缓存访问时间(Cache Access Time):4 ns(片上静态内存)
  • 主存访问时间(Main Memory Access Time):40 ns(最快的动态内存)
  • 目标平均访问时间(Average Access Time, t a v e t_{ave} tave:5 ns

问题是,缓存的命中率需要多高,才能在这两种内存之间达到这个目标的平均访问时间。

计算公式:

使用平均访问时间的公式:
t a v e = α t c + ( 1 − α ) ( t m ) t_{ave} = \alpha t_c + (1 - \alpha)(t_m) tave=αtc+(1α)(tm)
其中:

  • t a v e t_{ave} tave 是目标的平均访问时间。
  • t c t_c tc 是缓存访问时间。
  • t m t_m tm 是主存访问时间。
  • α \alpha α 是命中率(Hit Ratio)。

通过公式变换,命中率 α \alpha α 的计算公式为:
α = 1 − t a v e − t c t m \alpha = 1 - \frac{t_{ave} - t_c}{t_m} α=1tmtavetc

代入数值计算:

根据图中的公式:
α = 1 − 5 − 4 40 = 1 − 1 40 = 0.975 = 97.5 % \alpha = 1 - \frac{5 - 4}{40} = 1 - \frac{1}{40} = 0.975 = 97.5\% α=14054=1401=0.975=97.5%

结论:

  • 要达到 5 ns 的平均访问时间,缓存的命中率需要达到 97.5%
  • 图中的文字强调了这个命中率的重要性,并表明缓存的命中率必须非常高才能满足所需的访问性能。

这说明缓存的高命中率在保持整体系统性能中扮演着关键角色,尤其是在主存访问时间较长的情况下。

在这里插入图片描述
这张图解释了命中率对平均访问时间的影响,并通过计算例子来说明高命中率如何显著减少平均访问时间。

公式解释:

图中公式:
T = T c + ( 1 − H ) T M T = T_c + (1 - H) T_M T=Tc+(1H)TM

  • ( T ): 平均访问时间
  • ( T_c ): 命中时间(缓存访问时间)
  • ( T_M ): 缺失后访问主存的时间(缺失惩罚)
  • ( H ): 命中率(访问缓存时找到所需数据的概率)

例子分析:

  1. 例1: 当命中率 ( H = 0.85 ),( T_c = 1 )ns,( T_M = 20 )ns。
    T = 1 + ( 1 − 0.85 ) × 20 = 1 + 0.15 × 20 = 1 + 3 = 4  ns T = 1 + (1 - 0.85) \times 20 = 1 + 0.15 \times 20 = 1 + 3 = 4 \text{ ns} T=1+(10.85)×20=1+0.15×20=1+3=4 ns

  2. 例2: 若命中率提高到 ( H = 0.95 ):
    T = 1 + ( 1 − 0.95 ) × 20 = 1 + 0.05 × 20 = 1 + 1 = 2  ns T = 1 + (1 - 0.95) \times 20 = 1 + 0.05 \times 20 = 1 + 1 = 2 \text{ ns} T=1+(10.95)×20=1+0.05×20=1+1=2 ns

  3. 例3: 若命中率提升至 ( H = 0.99 ):
    T = 1 + ( 1 − 0.99 ) × 20 = 1 + 0.01 × 20 = 1 + 0.2 = 1.2  ns T = 1 + (1 - 0.99) \times 20 = 1 + 0.01 \times 20 = 1 + 0.2 = 1.2 \text{ ns} T=1+(10.99)×20=1+0.01×20=1+0.2=1.2 ns

总结:

随着命中率 ( H ) 的提高,平均访问时间 ( T ) 明显减少。这说明提高命中率对加速系统的访问速度非常重要,因为较高的命中率意味着更多的访问可以直接从缓存中获取,从而减少了慢速主存访问的频率。


http://www.kler.cn/a/393588.html

相关文章:

  • 数字孪生在智慧能源项目中的关键作用,你了解多少?
  • MySQL与Oracle对比及区别
  • Qt_day4_Qt_UI设计
  • 32位、64位、x86与x64:深入解析计算机架构
  • 学术论文写作丨机器学习与深度学习
  • 前端神经网络入门(三):深度学习与机器学习的关系、区别及核心理论支撑 - 以Brain.js示例
  • odoo 17 后端路由接口认证自定义
  • 前端常用布局模板39套,纯CSS实现布局
  • Python 虚拟环境创建
  • Linux解决 -bash: nc: command not found-bash: nc: 未找到命令
  • hive的tblproperties支持修改的属性
  • QT自定义控件封装
  • axios三层封装
  • Java应用线上问题排查指南
  • 16008.行为树(五)-自定义数据指针在黑板中的传递
  • 深入理解 React 架构从概览到核心机制
  • redis 原理篇 28 通信协议 RESP协议
  • LeetCode40:组合总和II
  • SpringBoot集成itext导出PDF
  • i春秋-GetFlag(HTTP请求方法使用,XXF伪造ip)
  • Redis四种架构模式
  • 大模型时代,呼叫中心部门如何建设一套呼出机器人系统?
  • python爬虫实战案例——爬取A站视频,m3u8格式视频抓取(内含完整代码!)
  • Qt文件系统-文本文件读写
  • 蓝桥杯每日真题 - 第8天
  • [CKS] K8S ServiceAccount Set Up