一问一答学习计算机组成与设计(三)高速缓冲存储器

参考学习平台大学慕课:https://www.icourse163.org/learn/HIT-309001

1 概述

为什么计算机需要高速存储器?

(1)避免CPU“空等”现象;
(2)CPU和主存(DRAM)的速度差异。

在这里插入图片描述

试解释程序访问的局部性原理。

时间局部性原理:当前正在使用的指令和数据,在不久的将来,还会被使用到;故应该将它们放到Cache中存储起来。
空间局部性原理:当前正在使用的指令和数据,在不久的将来,相邻的指令和数据也会被使用到,故应该将其相邻的指令和数据放到Cache保存起来。
这样当前正在使用的指令和数据和其相邻的指令和数据都将被放到Cache当中,这样Cache和主存之间数据交换的单位是块。
另外需注意的是,主存与缓存按块存储,块的大小相同,块内地址相同。

试解释Cache的中的命中与未命中、命中率、主存系统的效率等重要概念。

在这里插入图片描述
命中:主存块调入缓存,主存块和缓存块建立了对应关系;

用标记记录与某缓存块建立了对应关系的 主存块号。

未命中:主存块未调入缓存,主存块与缓存块未建立对应关系。

命中率:CPU 欲访问的信息在 Cache 中的 比率;
命中率与Cache的容量块长有关。(⭐️)
一般每块可取4~8个字。

访问效率e与命中率有关:
在这里插入图片描述
e的最小值是tc/tm;最大值是1。

试解释Cache的基本结构。

在这里插入图片描述
CPU要访问主存,通过地址总线获取主存的块号和块内地址,由于Cache和主存之间是以块为单位进行传输的,因此主存中的块内地址可以直接传到Cache中。然后块号通过主存Cache地址映射变换机构,确认是否命中。

若命中,则形成Cache的块号;否则查找Cache中是否还有空间进行装入。

若有空间,则访问主存,把主存块装入Cache中;否则启动Cache替换机构,根据替换算法决定Cache当中哪一个块要从Cache中退出(退出的块写回主存或直接作废),并且把主存的块要用的块写入到Cache中。换言之,当新的主存块需要调入缓存中,而它的可用位置又被占用时,需根据替换算法解决调入问题。

上述过程中,地址映射和变换这一概念也相当重要,地址映射实际上给出了一个规则:主存当中的一个块如果要放到Cache当中的话,它可以被放到Cache中的哪一个块。主存的块号或地址转换成Cache的块号或地址。简而言之,将主存地址映射到缓存中定位称为地址映射,将主存地址变换成缓存地址称为地址变换。

试解释Cache的读操作和写操作。

读:
读

写:

写操作要解决Cache和主存的一致性:

  • 写直达法(Write – through)
    写操作时数据既写入Cache又写入主存
    优点:写操作时间就是访问主存的时间,Cache块退出时,不需要对主存执行写操作,更新策略比较容易实现
    缺点:会造成一块Cache块的频繁访问。

  • 写回法(Write – back):

写操作时只把数据写入 Cache 而不写入主存,当 Cache 数据被替换出去时才写回主存
优点:写操作时间就是访问 Cache 的时间。
缺点:Cache块退出时,被替换的块需写回主存,增加了Cache 的复杂性。


2 Cache-主存的地址映射

2.1 直接映射

定义:主存当中任意一个给定的块,只能装载到Cache指定的块当中。

每个缓存块 i 可以和 若干个 主存块 对应
每个主存块 j 只能和一个 缓存块 对应

将Cache存储体当作一个尺子,来度量主存储体。

直接映射
这样的地址映射的标记位分为:区号位(t)+字块位©+字块内地址(b)。

2.2 全相联映射

定义:主存 中的 任一块 可以映射到 缓存 中的 任一块

全相联映射
这样的地址映射的标记位分为:主存字块标记位(m)+字块内地址。

2.3 组相联映射

某一主存块 j 按模 Q 映射到 缓存 的第i组中的 任一块
在这里插入图片描述
如果组相联中全部的组变为一组,则组相联映射变为了全相联映射;如果组相联映射中每一组中的两个字块变为了一个,则组相联变为了直接相联。

靠近CPU的Cache要求高速的,可以采用路数比较少的组相联或者直接相联的方式;中间的Cache可以组相联的方式,如两路组相联、四路组相联、八路组相联等;距离CPU较远的Cache可以采用全相联的方式,因为对速度没有那么高的要求。

小结:

直接某一 主存块 只能固定 映射到 某一 缓存块\
全相联某一 主存块 能 映射到 任一 缓存块
组相联某一 主存块 只能 映射到 某一 缓存 组 中的 任一块

3 替换算法

3.1 先进先出 ( FIFO )算法

最先放入的块一共最先被替换出去。

这种方法不能很好地体现程序局部性原理。

3.2 近期最少使用( LRU)算法

我们希望替换出去的块恰好是CPU近期最少使用块,因此这种算法能很好地体现程序的局部性原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值