cache工作原理介绍

1. 引言

最近看完了深入理解计算机系统,准备写一些学习的总结,先从存储器中的高速缓存写起,因为博主在工作中总是碰到cache相关的问题,因此总结了一下深入理解计算机系统中关于cache原理这一部分。

2. 存储器层次结构

介绍高速缓存(cache)的工作原理之前,我们需要先了解一下计算机的存储器层次结构,其层次结构如下图(摘自深入理解计算机系统存储器层次结构)所示:

存储器层次结构的中心思想:对于每个k,第k层的更快更小的存储设备是作为第k+1层更大更慢的存储设备的缓存(cache)。

操作系统将存储器中存储的连续数据抽象成连续的数据块,每个数据块具有唯一性。数据在第k层和k+1层存储设备之间以数据快为传送单元进行数据的来回拷贝。第k层存储的数据块是第k+1层存储的数据块的一个子集。如下图所示:

缓存命中:

当程序需要第k+1层的数据对象d时, cpu会首先访问第k层存储设备,查找其中是否有某个数据块包含该对象d, 如果包含则 缓存命中。否则便叫做缓存不命中。

缓存不命中的种类:

缓存不命中包括冷不命中和冲突不命中。

冷不命中:一个空的缓存叫做冷缓存,此类不命中叫做冷不命中。

冲突不命中:硬件缓存通常会采取某种放置策略(映射规则)将第k+1层中数据块映射到第k层某个数据块,这种放置策略会导致冲突不命中。

对于冲突不命中用下面个例子解释:

k+1层中的数据块0,2,4----》k层的0, k+1层的数据块1,3,5---》k层的1, 当计算机系统需要取第k+1层的数据块2中的数据时, 发现对于k层数据块0放置的是k+1层的数据块0, 此时便导致缓存不命中,便是冲突不命中。

3. 高速cache的工作原理

3.1 cache的历史(为什么要给计算机加上cache)

早期计算机系统的存储器层次结构只有CPU寄存器、DRAM主存储器和磁盘存储。然而,随着CPU主频的快速提高, cpu和主存储器之间的频率差距越来越大,导致CPU从存储器中取一个数据对象需要浪费更多的cpu周期,因此系统设计者被迫在CPU寄存器和主存之间增加一个小的SRAM高速缓存存储器,称为L1高速缓存(一级缓存)。L1高速缓存的访问速度几乎和寄存器文件一样快,同时减少了CPU与主存之间的时间。

3.2 通用高速缓存存储器结构

cache的存储器结构如下图所示

高速缓存可由(S, E, B, m)四元组表示,

其中S= 2^{s}: 表示高速缓存被组织成由S个高速缓存组组成 

E: 表示每个高速缓存组中高速缓存行的个数

B=2^{b}: 表示高速缓存行存储的数据块的大小为B字节

m: 表示CPU的地址线的位数

补充:每个高速缓存行还包含一个有效位(标识该行是否含有有意义的信息), t = m-(b+s)个标记位(唯一的标识存储在这个高速缓存行中的数据块)

3.3 cache的工作原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qls315

感觉好可打赏几毛钱增强更新动力

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

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

打赏作者

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

抵扣说明:

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

余额充值