缓存的工作原理

首先来看cache的地址映射

假设某个计算机的主存的地址空间大小为256MB,即2561024KB=2561024*1024B=28x210x210Byte=228Byte,按照字节编址,cache有8个cache行,行长为64Byte,那么cache与主存的映射关系如下图可以粗略表示。有效位是用来表示是否这个缓存行已经被占用。
对于缓存行来说。每一行是64B,那么对于主存来说,每一行假如也定义成64B,那么每一行的低位地址都可以表示成0~63,即000000~111111,因为cache有8行,因此,可以用23=8,即3个bit位来表示行号。也就是蓝色的部分。
因为主存的空间是228Byte,因此可以占用的字节位(如果是比特位,那么最低位还有8个比特位)还需要19位才能表示所有的地址,这19个比特位正好可以用来表示主存的块号,即图中绿色的部分。

在这里插入图片描述

地址映射通常有三个方式,我理解的是,对于全相连映射,就是在cache里面存上主存的块号,以及字块内的地址,
在这里插入图片描述

  • 全相连,即只要cache中有空行,主存中的数据就随意放到cache行中。此时,主存的地址=主存字块标记+字块内地址
    在这里插入图片描述

此时因为无法区分cache行中的某个放过的位置是主存中的那一行的数据,因此需要存入1位有效位(用来标记是否已经被占用)+22位主存的字块地址=23位来表示,然后字块内地址正好和主存中的字块内地址是完全吻合的,对于其他的映射策略,其实字块内的地址都是一样的,因为都采用了64B为一行。后面的映射不再赘述。

  • 直接映射
    在这里插入图片描述
  • 组相连

严格的来说,全映射也是组映射,只不过是每一个行都表示为一组了。图示部分是每两行来表示一个组,那么图中紫色部分,八行分为4组,正好可以用cache中的最高位的2个比特位来表示,因此cache中还需要有效位+19-1=19位来表示主存的块号了。那么主存中的两行就可以随机放到cache组的两行的任意一行了。
在这里插入图片描述
在这里插入图片描述

  • 标记项
    在这里插入图片描述

首先看下虚拟存储器的逻辑

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

micro_cloud_fly

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值