高速缓冲存储器

高速缓冲存储器

一、概述

解决问题:CPU空等现象、CPU和(DRAM)的速度差异

局部性原理:指令和数据在主存内都是连续存放的,并且有些指令和数据往往会被多次调用,即指令和数据在主存的地址分布不是随机的,而是相对的簇聚,CPU在执行程序时,访问具有相对的局部性。

程序访问的局部性原理:一般Cache采用高速的SRAM

1.Cache工作原理

主存和缓存的编址

图一

在主存和缓存中 的大小相同 B代表块长

存储块中需要设一个 标记,用来表示缓存中的字块来自于内存哪个位置,该标记的内容相当于主存储器中的编号。在CPU读信息时,要将主存地址的高m位于缓存标记块进行比较。

命中与未命中

  • 命中:当CPU欲读取主存某字时所需要的字块已在缓存中,可直接访问Cache
  • 未命中:当CPU欲读取主存某字时所需要的字不在缓存中,需要将CPU中字块调入Cache中

缓存共有C块,主存共有M块 M>>C

如果需要访问的主存已与缓存建立联系

Cache命中率:

  • 容量:容量越大,命中率越高

  • 块长:根据局部性原理,在已访问字附近、近期也可能被访问,增大块长可以增加数据的被命中率,但是如果字长过长容易导致

  • 命中率的计算h为命中率,Nc为命中次数,Nm为访问主存的总次数

h = N c N c + N m h=\frac{N_c}{N_c+N_m} h=Nc+NmNc

  • 平均访问时间:t为访问缓存的访问时间,T为访问主存的访问时间
    h t + ( 1 − h ) T ht+(1-h)T ht+(1h)T

2. Cache的基本结构

在这里插入图片描述
主要结构:

  • Cache存储体
  • Cache替换机构:在发现CPU发来的地址未命中时,先将Cache中的部分块字从Cache中剔除,然后将主存中的对应CPU传输地址的数据存入Cache
  • 主存Cache地址变换机构:将CPU传输的主存地址转换为Cache地址(主要是主存的块号与Cache块号的转换)。

Cache中的读写操作

  • 读:

在这里插入图片描述

  • :写操作也可以用以上的方法进行,但是为了保持缓存与主存中数据保持一致有以下的方法
    • 写直达法:主存和缓存中的数据同时更改(增加了访问次数,增加了操作时间)
    • 写回法:写操作时只是将Cache中的数据进行更改,只有将Cache中的数据调回主存时才将主存中的数据进行刷新。

Cache的改进

(1)单一缓存和两级缓存: 所谓单一缓存就是在CPU和主存之间只设立一个缓存,随着集成电路逻辑密度的提高,直接把缓存放到了CPU内,设置成 片内缓存。片内缓存可以提高外部中线的利用率(CPU与缓存的交流并不需要通过总线),但是片内缓存的 容量往往不大(CPU内部空间限制),从而导致命中率过低,所以可以在片内缓存和主存之间添加一个 片外缓存,使用DRAM进行数据缓存,并且单独设立一条数据路线,这样可以有效保证计算机性能。

(2)统一缓存和分立缓存:统一缓存是指指令和数据都存放到同一缓存内的Cache,分离缓存则将它们分开缓存

  • 统一缓存和分立缓存影响因素主要有两点
    • 主存如何存储数据
    • 它与机器对指令执行的控制方式有关:
      • 采用超前控制(当前指令尚未执行结束,就将下一条准备执行的指令取出):防止执行指令与读指令相冲突
      • 流水控制(实质是多条指令同时执行,类似于低位交叉编制方式):统一缓存就可

二、Cache-主存的地址映射

地址映像是指某一数据在内存中的地址与在缓冲中的地址,两者之间的对应关系

1.直接映射

主存的各个块之前都已经都已经对应好相应的缓存块,如果访问时发现模块需要放到缓存中则可直接存到相应的缓存块

在这里插入图片描述

  • 优点:
    • 实现简单,查找速度快
      • 主存地址的中间c位即为Cache的字块地址;
      • 使用高t位地址(主存标记)进行比较,决定是否命中;
  • 缺点:
    • 灵活性差
      • 主存中的2t个字块只能对应唯一的Cache字块,即使Cache中的背的字块空着也不能占用。

2.全相联映射

主存中的任意一块可以映射到缓存中的任一块

在这里插入图片描述

  • 优点
    • 灵活性好
  • 缺点
    • 成本高
    • 速度慢

3.组相联映射

在这里插入图片描述

具体分组情况

在这里插入图片描述

将Cache分成 2 c − r 2^{c-r} 2cr个组,每一组 2 m − 1 2 c − r \frac{2^m-1}{2^{c-r}} 2cr2m1个字块,主存块放到哪个组是固定的,至于该放组的哪一行位置是灵活的。

特点

  • 性能和复杂性都介于直接映射和全相联映射之间
  • 当r=0时,相当于直接映射
    Cache分成 2 c − r 2^{c-r} 2cr个组,每一组 2 m − 1 2 c − r \frac{2^m-1}{2^{c-r}} 2cr2m1个字块,主存块放到哪个组是固定的,至于该放组的哪一行位置是灵活的。

特点

  • 性能和复杂性都介于直接映射和全相联映射之间
  • 当r=0时,相当于直接映射
  • 当r=c时,相当于全相联映射
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值