缓存结构学习

1 缓存

缓存是指地址离开处理器后遇到的最高级(或第一级)存储器层次结构。该结构利用了时间局限性空间局限性
在这里插入图片描述

1.1 缓存性能

处理器停顿周期数: 处理器在等待存储器访问而停顿的周期数目。
C P U 执 行 时 间 = ( C P U 时 钟 周 期 数 + 存 储 器 停 顿 周 期 数 ) × 时 钟 周 期 数 目 CPU执行时间=(CPU时钟周期数+存储器停顿周期数)\times 时钟周期数目 CPU=CPU+)×
其中,存储器停顿周期数取决于确实数目和每次缺失的成本(缺失代价

存 储 器 停 顿 周 期 = 缺 失 数 × 缺 失 代 价 = I C × 缺 失 指 令 × 缺 失 代 价 = I C × 存 储 器 访 问 指 令 × 缺 失 率 × 缺 失 代 价 \begin{aligned} 存储器停顿周期&=缺失数\times缺失代价 \\ \\ &=IC\times \frac{缺失}{指令} \times 缺失代价\\ \\ &=IC\times \frac{存储器访问}{指令} \times 缺失率 \times 缺失代价 \end{aligned} =×=IC××=IC×访××
上述公式给出了缓存优化和设计的目标

1.2 缓存基本概念

  • 缓存块:在缓存中存取数据的最小单位
  • 缓存组:缓存块可以映射的有限个位置构成(set)
  • 缓存关联度:组内位置的数目称为缓存关联度

2. 缓存基本结构

缓存容量远远小于内存大小,因此在缓存的使用过程中,不可避免地存在 如何使用缓存? 在使用过程中,主要有以下四个基本问题:

  • 放置
  • 查找
  • 替换
  • 写入

2.1 缓存放置

  • 直接映射
    在这里插入图片描述
    某个缓存块只能映射到某一个固定位置
  • 全相连映射
    在这里插入图片描述
    缓存块可以映射到任意位置
  • 组相连映射
    在这里插入图片描述

2.2 缓存查找

在这里插入图片描述
标识位 :比对是否从缓存中查找到(即缓存是否命中)
索引位 :用于索引缓存组
块偏移:从 cache block 中选择合适的字节
此外,在地址中还有一些标示位(valid,dirty等等)

2.3 缓存替换

当发生 cache miss 后,从缓存中清除哪个数据?把新数据放到哪个位置?

2.3.1 LRU

依赖于局限性,替换最近最少使用的块,需跟踪块的增长
在这里插入图片描述

2.3.2 FIFO

LRU 在硬件实现过程中可能非常复杂,因此可以使用 FIFO 来近似LRU
在这里插入图片描述

2.3.3 RANDOM

硬件实现最简单,从set中随机选择一个合适的位置

2.4 写入

相较于写入而言,读取操作比较简单;
在读取和比对标志的同时从缓存中读取块。只要有了块地址就开始读取块,若标志匹配的话就直接返回所需数据给处理器;没有匹配的话则忽略所读值即可。

2.4.1 不同的写入策略

在这里插入图片描述

  • 直写:写入缓存的同时写入主存 (简单,简化数据一致性)
  • 写回:写入缓存,不写入主存,只有发生替换时才写入(存储器通信流量小)

2.4.2 写缺失

在这里插入图片描述

  • 写入分派:发生缺失时将该块读到缓存中,再执行写入命中操作(与读缺失类似)
  • 无写入分派:仅修改下一级,而不放到缓存中

通常来讲,写回缓存采用写入分派,直写缓存采用无写入分派策略。

2.5 缓存访问流程

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值