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

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.mrgr.cn/news/75183.html

相关文章:

  • 如何在vscode 中打开新文件不覆盖上一个窗口
  • Swagger enum 最佳实践:深度剖析与应用指南
  • java中await方法和wait方法区别
  • 雷池waf安装并部署防护站点
  • 低代码、配置式web组态软件
  • 图像处理实验四(Adaptive Filter)
  • RK3568平台开发系列讲解(platform虚拟总线驱动篇)platform总线模型
  • Shell脚本的使用
  • CPLD架构
  • KPaaS洞察|统一管理模式下跨系统用户权限修改流程详解
  • python进阶-01-利用Xpath来解析Html
  • 除自身以外数组的乘积
  • 关于GCC内联汇编(也可以叫内嵌汇编)的简单学习
  • 共享旅游卡项目深度解读,风险与机遇并存
  • Java 常见的面试题(Kafka)
  • 三天精通一种算法之移除数组元素(暴力)(快慢指针)
  • MySQL数据库:SQL语言入门 【2】(学习笔记)
  • Spring Security概述
  • 基于树莓派的日志抓取工具制作
  • 代理通讯链实现内网通讯
  • 探秘 RPC:揭开远程过程调用的实现原理
  • 如何在python中模拟重载初始化函数?
  • 下载|阿里云等联合编写的《2024大模型典型示范应用案例集》发布
  • 「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World
  • Jdbc学习笔记(四)--PreparedStatement对象、sql攻击(安全问题)
  • 联丰策略炒股股票交易市场券商股,盘中突然拉升