缓存的工作原理

时间:2024-04-09 12:43:22

首先来看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组的两行的任意一行了。
缓存的工作原理
缓存的工作原理

  • 标记项
    缓存的工作原理

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

缓存的工作原理

缓存的工作原理
缓存的工作原理
缓存的工作原理

缓存的工作原理
缓存的工作原理

缓存的工作原理
缓存的工作原理