计算机操作系统(七)---缓存

本文深入探讨了存储器层次结构中的缓存操作流程,包括直接映射、全相联及组相联映射方式,以及缓存命中与不命中的处理策略。详细解析了缓存写策略中的写穿和写回机制,以及读缓存时的命中和未命中处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存储器层次结构

存储器层次_thumb[2]

图五

 

如何从内存中拿地址时先去判断缓冲是否存在   

        我们首先要了解一下cache的操作流程,见下图. 

cache 造作过程 

        假如在主存中拿数据的时候有个映射就可以判断是否存在缓冲,这个映射有三种方式

  • 直接
  • 全相联
  • 组相联

cache 造作过程

图一

缓冲映射关系方式

图二

        这三种方式如何理解呢?如下图,假如我们知道一个主存地址,一部分可以映射到Cache ,一部分是主存储器的位置,直接映射指的是每个主存地址对应Cache 的一个地址.缺点就是新的总是会替换掉久的,但是容易实现,命中时间短.

直接映射

图三

 

全相联

图四

组相联

图五

        图四图五分别是全相联和组相联映射,全相联是哪个地址都可以放,到时查找的时候再一个个匹配,可以知道这种方式速度比较慢,

组相联映射则结合以上两种方式,分组后再随意放,组称为一个set .

 

Cache 命中与不命中几个名词概念

       可以有公式验算得出: 要提高平均访问速度,必须提高命中率.

cache名字概念

图六

关联度

        注意看图中的结论.

关联度7

图七

 

标记位关联度

图八

Cache写策略

      写命中指的是我需要的那个block已经在cache里面了,那么由于我更新值,所以目的就是更新cache 更新 block .write through 就是同时写 cache 和主存单元,当时由于这样子操作太慢了,所以可以使用一种叫 写缓冲的(write buffer ),见图十,write back 是所有操作都在cache 中进行,同时锁住主存中的地址不给访问,让我操作完成后再回写给内存中.

cache写策略

图九

writebuffer

图十

       而写不命中指的是我需要写的内存地址,在cache 并没有,一下总结来自参考文章,

1.CPU读Cache时:

●若hit,则CPU直接从Cache中读取数据即可。

●若miss,有两种处理方式:

   >Read through,即直接从内存中读取数据;

   >Read allocate,先把数据读取到Cache中,再从Cache中读数据。

2.CPU写Cache时:

●若hit,有两种处理方式:

    >Write through:把数据同时写到Cache和内存中;

    >Write back:先把数据写到Cache中,再通过flush方式写入到内存中。

●若miss,有两种处理方式:

    >Write allocate:先把要写的数据载入到Cache中,写Cache,然后再通过flush方式写入到内存中;

    >No write allocate:直接把要写的数据写入到内存中。

 

Cache 数目

cache数目

问题一

答: 因为是为了流水线的执行,所以分开了指令cache 和 数据cache

问题二

答: 因为 L1要是不命中的话后面还有2和3.

问题三

答: 因为L2 既后续的Cache空间相比1大,而已,可以使用联合cache

问题四

答案:蓝色字

转载于:https://www.cnblogs.com/Benjious/p/10041257.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值