25考研计算机组成原理复习·3.5高速缓冲存储器

高速缓冲存储器Cache

  1. 工作原理:将某些主存块复制到Cache中,缓和CPU与主存之间的速度矛盾
  2. 局部性原理
    1. 时间局部性:现在访问的地址,不久之后也很可能被再次访问
    2. 空间局部性:现在访问的地址,其附近的地址也很可能即将被访问
  3. 性能分析
    1. 命中率H:CPU欲访问的信息已在Cache中的比率
    2. 缺失(未命中)率:M = 1 - H
    3. 👩‍💻 两种方式
      1. 先访问Cache,发现未命中再访问主存
      2. 同时访问Cache和主存,若Cache命中则停止访问主存
  4. 其他概念
    1. 主存与Cache之间以"块"为单位进行数据交换
    2. 主存的"块"又叫"页/页框/页面";Cache的"块"又叫"行"
    3. 主存地址可拆分为(主存块号,块内地址)的形式

每次被访问的主存块,一定会被立即调入Cache

Cache-主存映射方式

Cache中存储的信息

  1. 有效位(0/1)+ 标记 + 整块数据
  2. 其中"标记"用于指明对应的内存块,不同映射方式,"标记"的位数不同

全相联映射

  1. 主存块可以放到Cache的任意位置
  2. 主存地址结构:标记(整个主存块号)+ 块内地址
  3. 优点:Cache存储空间利用充分,命中率高;缺点:查找"标记"最慢,有可能需要对比所有行的标记

直接映射

  1. 主存块只能放到特定的某个Cache行,行号 = 主存块号 % 总行数
  2. 主存地址结构:标记(主存块号前几位)+ 行号(主存块号末几位)块内地址
  3. 优点:对于任意一个地址,只需对比一个"标记",速度最快;缺点:Cache存储空间利用不充分,命中率低

组相联映射

  1. 主存块可以放到特定分组中的任意位置,所属组号 = 主存块号 % 总组数
  2. 主存地质结构:标记(主存块号前几位)+ 组号(主存块号末几位)块内地址
  3. 优点:另外两种方式折中,综合效果较好
  4. 术语:n路组相联映射------每n各Cache行为一组

Cache替换算法

  1. 随机算法(RAND)
    1. 随便选一个主存块替换
    2. 过于Freestyle,效果很差
  2. 先进先出算法(FIFO)
    1. 优先替换最先被调入Cache的主存块
    2. 不遵循局部性原理,效果差
  3. 👩‍💻近期最少使用(LRU)
    1. 将最久没有被访问过的主存块替换。每个Cache行设置一个"计数器"(Cache块的总数=2^n,则计数器只需n位),用于记录多久没有被访问
    2. 基于"局部性原理",近期被访问过的主存块,在不久的将来也很有可能被再次访问,因此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀,Cache命中率高。
  4. 最不经常使用(LFU)
    1. 将被访问次数最少的主存块替换。每个Cache行设置一个"计数器",用于记录被访问过多少次
    2. 曾经被经常访问的主存块在未来不一定会用到,LFU实际运行效果不好

Cache写策略

非写分配法通常与全写法合用,写分配法通常和回写法合用

  1. 写命中
    1. 全写法(直写法,write-through):当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)
    2. 回写法(write-back):当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存
  2. 写不命中
    1. 写分配法(write-allocate):当CPU对Cache写不命中时,把主存中的块调入Cache,在Cache中修改。
    2. 非写分配法(not-write-allocate):当CPU对Cache写不命中时只写入主存,不调入Cache
  3. 多级Cache:现代计算机通常采用多级Cache结构,各级Cache间常采用"全写法+非写分配法",Cache和主存间常采用"写回法+写分配法"
相关推荐
shiji-lu4 小时前
考研要求掌握C语言(归并排序)
c语言·开发语言·数据结构·考研·算法·排序算法
ChoSeitaku2 天前
链表交集相关算法题|AB链表公共元素生成链表C|AB链表交集存放于A|连续子序列|相交链表求交点位置(C)
数据结构·考研·链表
羊小猪~~2 天前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
一个通信老学姐3 天前
专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
爱分享的淘金达人4 天前
25国考照片处理器使用流程图解❗
java·考研·spring·eclipse·tomcat
爱分享的淘金达人4 天前
2025年山东省考报名流程图解
java·考研·spring·eclipse·tomcat·流程图
怎么我想取的名字都被取了?5 天前
C语言模拟题[一]
c语言·考研·算法
shiji-lu5 天前
考研要求掌握的C语言程度(插入排序)
c语言·数据结构·学习·考研·算法·排序算法
怎么我想取的名字都被取了?6 天前
数据结构模拟题[十]
c语言·数据结构·考研·算法
程序员入门进阶6 天前
考研资料分享系统的设计与实现(lw+演示+源码+运行)
考研