计算机组成原理思维导图:3.6 高速缓冲存储器

思维导图

在这里插入图片描述

3.6 高速缓冲存储器

程序访问的局部性原理

时间局部性

  • 最近的未来要用到的信息,很可能是正在使用的信息(有些循环可能重复使用信息)

空间局部性

  • 最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的。(因为指令通常是顺序执行的,数据一般也是以向量、数组等形式簇聚地存储在一起的)

Cache的基本工作原理

  • Cache和主存都被划分为相等的块。(便于CPU和主存之间交换信息)

  • 每块由若干字节组成,块的长度成为块长(Cache行长)

  • Cache中仅保存主存中最活跃的若干块的副本(Cache容量小于主存)

  • Cache按照某种策略,预测CPU在未来一段时间内欲访问的数据,装入Cache

  • CPU发出请求,如果访存地址在Cache命中,就将此地址转换为Cache地址,直接进行Cache读操作。与主存无关

  • 如果不命中,需要访问主存,并把此字所在的块一次性从主存调入Cache。

  • 如果Cache已满,置换算法

  • CPU和Cache直接的数据交换以字为单位
    Cache与主存之间的数据交换以Cache块为单位

Cache和主存的映射方式

直接映射

  • 优点:实现简单
    缺点:不够灵活,块冲突概率最高,空间利用率最低
  • 映射到 主存mod cache块

全相联映射

  • 优点:映射方式灵活,cache利用率高,快冲突率低,命中率高
    缺点:比较速度慢,实现成本高,Cache比较电路的设计和实现比较困难,常需要昂贵的按内容寻址的相联存储器进行地址映射。
    适合:小容量Cache
  • 主存中任何一块都可以映射到Cache的任何一块中

组相联映射

  • 直接映射和全相联映射的折中,Cache和主存都分组,然后组间采用直接映射,组内采用全相联映射
  • 优缺点:二者折中
  • 也就是说,将Cache分成u组,每组v块,主存块存放到哪个组是固定的,至于存到该组哪一块则是灵活的

Cache中主存块的替换算法

随机算法(RAND)

先进先出(FIFO)

  • 选择最早调入的行进行替换

近期最少使用(LRU)

  • 近期内长久未使用的行进行替换

最不经常使用(LFU)

  • 一段时间内访问次数最少的行换出

Cache写策略

Cache写命中

  • 全写法

    • 数据同时写入主存和Cache

    • 缺点:增加访问次数,降低了Cache效率

    • 解决:Cache和主存之间增加写缓冲

      • 解决速度不匹配,FIFO队列
  • 写回法

    • 只写入Cache,当被替换时才写入主存
    • 每行设置一个标志位(脏位),反映是否被CPU修改过,避免访问不一致

Cache写不命中

  • 写分配法

    • 加载主存的块到Cache,然后更新
    • 试图利用程序的空间局部性,
    • 缺点:不命中需要重新从主存中读
  • 非写分配法

    • 只写入主存,不掉块
    • 通常与全写法合用,写分配法通常和写回法合用
    • 原因:现在的计算机通常设立多级Cache,离CPU越远,速度越慢,容量越大

图示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wvdon

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

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

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

打赏作者

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

抵扣说明:

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

余额充值