第3章 存储系统(3)

3.5 高速缓冲存储器

CPU与主存和CPU与cache以为单位交换数据
Cache与主存以为交换单位
缓解CPU主存速度不匹配的矛盾

3.5.1 局部性原理

空间局限性:将来需要访问的数据在当前使用的数据的周围
时间局限性:最近使用的数据将来不久也会使用

cache集成在CPU中,由SRAM构成【速度快,集成低,成本高】


3.5.2 cache的基本工作原理

1.CPU优先以Cache块查找数据
2.没找到就访问主存并将对应块复制到Cache


3.5.3 Cache和主存的映射方式

Cache是主存的副本

  • 1.直接映射

    • 位置:Cache块行号 = 主存块号%Cache块数
    • 地址结构:
    (有效位)(脏位)标记行号【Cache不需要保存】块内地址数据

    标记优化:由于映射到同一行的主存块号的行地址相同,因此不需要保存行号

    • 优点:标记对比最快
    • 缺点:空间利用不充分【即使有空闲空间也不能存放】
    • 写入操作:有效位标记为1,标记位改为对应块号。如果原先已有数据,直接覆盖。
    • 访问操作:根据主存物理地址获取行号,若对应Cache行相同且有效位1,直接访问。若不符合,就从主存访问,并复制到Cache中。
    • 替换算法:不需要替换算法,有冲突直接替换。
      在这里插入图片描述
  • 2.全相联映射

    • 位置:可以装入任意位置

    • 地址结构

      (有效位)(脏位)(算法位)标记块内地址数据
    • 优点:可以装入任意位置,空间利用率高

    • 缺点:查找时需要可能查找全部行,速度较慢,成本较高

    • 写入操作:有效位标记为1,标记位改为对应块的地址。只有当所有的块写满才需要替换。

    • 访问操作:物理地址所有cache行标记对比,若找到且标记位1表示命中。不符合就访问主存。
      在这里插入图片描述

  • 3.全相联映射

    • 位置:多个Cache行划分为一组,可以放在 主存地址%组数的组中的任意位置。
    • 地址结构
    (有效位)(脏位)标记组号【cache不需要保存】块内地址数据

    标记优化:由于映射到同一行的主存组的组相同,因此不需要保存组号

    • 优点:可以装入组中的任意位置,存储利用率也较高
    • 写入操作:有效位标记为1,标记位改为对应块的地址。只有当组内所有的块写满才需要替换。
    • 访问操作:根据组号对比组内所有块标记,若找到且有效位为表示命中。否则,访问主存并复制到Cache中。
    • 综合效果最好
      在这里插入图片描述

映射对比:

直接映射全相联映射
命中率最低,判断开销最小,时间长,标记的额外空间最小命中率最高,判断开销最大,时间长,占用额外空间最大【需要保存整个主存地址】

3.5.4Cache中主存替换算法

  • 随机替换:满了没命中就随机替换。 实现简单,没有考虑局部性原理
  • 先进先出:满了没有命中就替换最先来的。实现简单,没考虑局部性原理
  • 最近最少使用算法:
    • ①给每个Cache行设置一个计数器
    • ②将访问到的Cache行的计数器值清零
    • ③没有命中的且比原来命中的行的计数器值小的+1。
    • ④需要替换时选择计数器值最大的。
    • 考虑到了局部性原理。
    • 如果频繁访问大于Cache行数,会发生抖动
  • 最不经常使用算法:
    • ①每个Cache行设置一个计数器
    • 访问到的Cache行计数器+1
    • ③没有访问到的计数器不变
    • ④替换时选择计数器值最小的
    • 如果频繁访问某个块,后面不再访问,将这和块替换出去比较困难【计数器的值较大,其他计数器的值需要很长时间才能超过】

3.5.5 cache写策略

写命中情况

  • (1)回写发
    解释:只修改Cache的内容,当Cache被替换下去时才修改主存。
    优点:访问主存次数较少
    补充:由于cache主存的数据不一致,需要增加一个脏位

  • (2)全写法:
    解释:同时修改主存和Cache数据
    优点:不存在数据不一致的隐患
    缺点:增加访问次数。CPI提高了
    优化方案:Cache主存间添加写缓存【SRAM芯片组成】,解决CPU和主存速度差距大。如果过于频繁,会导致缓存溢出。
    在这里插入图片描述

写不命中情况

  • (1)写分配法
    • 解释:将对应主存数据复制到Cache,CPU只修改Cache。当被替换才写入主存【搭配回写发使用】
  • (2)非写分配法
    • 解释: 只修改主存,不将数据复制到Cache。【搭配全写法使用】

多级Cache:
各级Cache之间使用 全写法+非写分配法
cache与主存之间使用 回写发+写分配法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mystic Musings

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值