存储器层次结构

在这里插入图片描述
上图展示了一个典型的存储器层次结构。一般而言,从高层往底层走,存储设备变得更慢、更便宜和更大。在最高层(L0),是少量快速的CPU寄存器,CPU可以在一个时钟周期内访问它们。

1.存储器层次结构中的缓存
高速缓存(cache)是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓存区域。使用高速缓存的过程称为缓存
存储器层次结构的中心思想是,对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备缓存。换句话说,层次结构中的每一层都缓存来自较低一层的数据对象。
在这里插入图片描述
上图展示了存储器层次结构中缓存的一般性概念。第k+1层的存储器被划分成连续的数据对象组块,称为,每个块都有一个唯一地地址或名字,使之区别于其他的块。块可以是固定大小的(通常是这样的),也可以是可变大小的(例如存储在Web服务器上的远程HTML文件)。例如,第k+1层存储器被划分成16个大小固定的块,编号为0~15。
数据总是以块大小为传送单元在第k层和第k+1层之间来回复制的。一般而言,层次结构中较低层(离CPU较远)的设备的访问时间比较长,因此为了补偿这些较长的访问时间,倾向于使用较大的块。
(1)缓存命中
当程序需要第k+1层的某个数据对象d时,它首先在当前存储在第k层的一个块中查找d。如果d刚好缓存在第k层中,那么就是我们所说的缓存命中
(2)缓存不命中
如果第k层中没有缓存数据对象d,那么就是我们所说的缓存不命中。
(3)缓存不命中的种类
如果第k层的缓存是空的,那么对任何数据对象的访问都会不命中。一个空的缓存有时被称为冷缓存,此类不命中称为强制性不命中冷不命中。冷不命中通常是短暂的事件,不会再反复访问存储器使得缓存暖身之后的稳定状态中出现。
只要发生了不命中,第k层的缓存就必须执行某个放置策略,确定把它从第k+1层中取出的块放在哪里。
冲突不命中缓存足够大,能够保存被引用的数据对象,但是因为这些对象会映射到同一个缓存块,缓存会一直不命中。
一个嵌套的循环可能会反复地访问同一个数组的元素。这个块的集合称为这个阶段的工作集。当工作集的大小超过缓存的大小时,缓存会经历容量不命中。换句话说就是,缓存太小了,不能处理这个工作集。
(4)缓存管理
正如我们提到过的,存储器层次结构的本质是,每一层存储设备都是较低一层的缓存。在每一层上,某种形式的逻辑必须管理缓存。管理缓存的逻辑可以是硬件、软件或是两者的结合。

小结:
概括来说,基于缓存的存储器层次结构行之有效,是因为较慢的存储设备比较快的存储设备更便宜,还因为程序倾向于展示局部性:
利用时间局部性:由于时间局部性,同一数据对象可能会被多次使用。
利用空间局部性:块通常包含有多个数据对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值