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

cache缺失和关联度

直接映射缓存

在这里插入图片描述
这张图展示了一个关于缓存缺失和关联度的例子。通过这个例子,我们可以看到如何根据主存块号来确定缓存块的分配位置,以及在访问过程中产生的缓存缺失情况。以下是图中例子的详细解释:

表格内容说明:

  • Address of memory block accessed:表示访问的主存块地址。
  • Hit or miss:表示访问操作是命中(hit)还是缺失(miss)。
  • Contents of cache blocks after reference:在该次访问后,缓存块中的内容。

过程分析:

  1. 缓存块号计算:图中提到的 Cache块号 = 主存块号 mod 4,即通过主存块号对4取余来决定数据应存储到哪个缓存块中。

  2. 访问顺序及结果

    • 第一次访问地址0:缺失,将 Memory[0] 放入缓存块0。
    • 第二次访问地址8:缺失,将 Memory[8] 放入缓存块0(替换掉 Memory[0])。
    • 第三次访问地址0:缺失,因为 Memory[0] 已经被替换,再次将 Memory[0] 放入缓存块0。
    • 第四次访问地址6:缺失,将 Memory[6] 放入缓存块2。
    • 第五次访问地址8:缺失,因为 Memory[8] 不在缓存中,将其重新放入缓存块0(再次替换掉 Memory[0])。
  3. 缺失次数统计:整个过程中发生了5次缺失,因为每次访问时数据都不在缓存中(发生替换)。

总结

  • 通过这个例子,我们可以理解直接映射缓存的限制:由于每个主存块只能映射到唯一的缓存块,如果不同的主存块映射到相同的缓存块,会导致频繁替换,从而增加了缺失次数。

组相联

在这里插入图片描述
这张图展示了一个缓存访问的例子,其中每个主存块通过 主存块号 mod 2 计算对应的缓存组号。以下是图中每一列的含义及具体的操作步骤:

图中内容的详细解释

  • Address of memory block accessed:表示每次访问的主存块地址。
  • Hit or miss:表示该次访问是否在缓存中命中(hit)或缺失(miss)。
  • Contents of cache blocks after reference:显示该次访问后的缓存状态。这里的缓存分为 Set 0Set 1,表明这是一个两路组相联缓存结构,每组有两个块。

过程分析

  1. 第一次访问地址0:缺失,将 Memory[0] 加入到 Set 0
  2. 第二次访问地址8:缺失,将 Memory[8] 加入到 Set 1,因为 8 mod 2 = 0
  3. 第三次访问地址0:命中,因为 Memory[0] 已经在 Set 0 中。
  4. 第四次访问地址6:缺失,将 Memory[6] 加入到 Set 1,替换掉之前的 Memory[8]
  5. 第五次访问地址8:缺失,因为 Memory[8] 已经被 Memory[6] 替换,因此将 Memory[8] 重新加载到 Set 1

总结

  • 在此过程中总共发生了 4次缺失,只有一次命中。
  • 使用 主存块号 mod 2 确定缓存组号的方式,使得相同组号的不同块会互相替换,从而导致缺失增加。
  • 该例子展示了在两路组相联缓存结构下,通过增加组的容量可以减少替换的发生,但仍然会发生冲突缺失(如 Memory[8]Memory[6] 争用 Set 1)。

这个例子说明了缓存组相联的特点:通过限制存储位置的选择,可能会导致多次替换和较高的缺失率。

全相联

在这里插入图片描述

这张图展示了一个缓存访问的示例,目的是说明关联度越高,缓存缺失次数越少的概念。以下是图中每一部分的详细解释:

表格各列的含义

  • Address of memory block accessed:表示每次访问的主存块地址。
  • Hit or miss:表示每次访问是否在缓存中命中(hit)或缺失(miss)。
  • Contents of cache blocks after reference:显示了每次访问后缓存中各块的内容。这里的缓存结构包含四个块(Block 0Block 3),说明是一个四路组相联缓存结构。

访问过程分析

  1. 第一次访问地址 0:缺失,将 Memory[0] 加载到 Block 0
  2. 第二次访问地址 8:缺失,将 Memory[8] 加载到 Block 1
  3. 第三次访问地址 0:命中,因为 Memory[0] 仍在 Block 0 中。
  4. 第四次访问地址 6:缺失,将 Memory[6] 加载到 Block 2,并且 Block 0Block 1 的内容保持不变。
  5. 第五次访问地址 8:命中,因为 Memory[8] 仍在 Block 1 中。

总结

  • 在这个四路组相联的缓存结构中,总共发生了 3次缺失2次命中
  • 由于关联度更高(即四路组相联),缓存可以同时存储多个不同的块,避免了不必要的替换,从而降低了缺失次数。
  • 图下方的说明“关联度越高,缺失次数越少!” 正是为了说明四路组相联缓存结构在减少缓存缺失方面的优势。

关键点

  • 关联度越高:可以在缓存中存储更多不同地址的数据,从而减少冲突缺失,降低整体缺失率。
  • 缓存缺失次数减少:关联度高的缓存结构在多次访问相邻或重复数据时表现更优,因为减少了替换和冲突。

这一示例展示了高关联度缓存结构的优点,尤其在频繁访问不同数据块的情况下,可以显著减少缺失次数。


http://www.mrgr.cn/news/75128.html

相关文章:

  • 探索美赛:从准备到挑战的详细指南
  • Spring Boot 接口防重复提交解决方案
  • MySQL数据库专栏(四)MySQL数据库链接操作C#篇
  • C语言与OpenGL实现3D旋转爱心模型及动画效果
  • 算法基础02一高精度,前缀和,差分
  • 一个简单ASP.NET购物车设计
  • sqlmap使用教程
  • Python 异常处理试卷
  • 【HarmonyOS】鸿蒙系统在租房项目中的项目实战(一)
  • 大语言模型LLM综述
  • GRU(门控循环单元)详解
  • Siggraph Asia 2024 | Adobe发布MagicClay:可通过文字引导去对3D模型中的特定部分进行雕刻
  • 【今天的乐子】你真懂代码吗?挑战这10个笑话,程序员专属梗了解一下
  • C++《继承》
  • 企业运营的智能化升级:AI助理与SOP的融合之道
  • java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程
  • 线程的状态有哪些?它是如何工作的?
  • SMA-BP基于黏菌算法优化BP神经网络时间序列预测
  • 解析安卓镜像包和提取DTB文件的操作日志
  • 探索AutoDL与CodeWithGPU:深度学习之旅的新起点
  • 时序论文20|ICLR20 可解释时间序列预测N-BEATS
  • 【算法一周目】双指针(2)
  • JavaScript总结
  • Path.Combine容易被忽略的细节
  • DAPP迎启动契机,Scroll 生态全面启动为 Pencils Protocol 赋能
  • C++函数的返回值在内存中的传递过程