计算机组成原理_Cache与主存的映射方式

计算机组成原理总目录

Cache与主存的映射方式

1. 全相联映射

在以全相联映射的Cache中,主存中的每一块可以装入Cache中任意位置
故在Cache中,需要能表示主存地址的标记位,以及确保Cache块是否有效的有效位

  • 标记位:代表该Cache块(行)是哪一个主存块的复制
  • 有效位:代表该Cache块是否有效、是否可以访问,以一位表示是否有效

假设计算机的主存地址空间大小为4MB,按字节编址,Cache有4个Cache块(行),块大小为2KB
计算机组成原理_Cache与主存的映射方式_第1张图片
全相联映射下的访存过程,假设访问主存的地址 Adr = 【000 0000 0101 100 0001 0010】

  1. 首先将【主存地址Adr的前11位】与【Cache的标记位进行匹配】
  2. 若匹配成功且有效位 = 1,即为Cache命中,则可根据后11位的块内地址访问该Cache块
  3. 若匹配失败或有效位 = 0,即为Cache未命中,则访问主存中对应的块

2. 直接映射

在以直接映射的Cache中,主存块在Cache中的位置 = 主存块号 % Cache总块数,同样包括标志位和有效位

在直接相联中的标志位的位数可以这么理解:

因为主存块在Cache中的位置 = 主存块号 % Cache总块数
故实际上就是将主存块按照Cache的大小进行分组

在上述例子中,主存以四个块为一组,每一组与Cache的块一一对应,也就是说,我们只需要知道是主存块号是第几组就行了
即 主存2048个块按4块为一组分组,得到的组数 = 2048 / 4 = 512组 = 29
计算机组成原理_Cache与主存的映射方式_第2张图片

假设计算机的主存地址空间大小为4MB,按字节编址,Cache有4个Cache块(行),块大小为2KB计算机组成原理_Cache与主存的映射方式_第3张图片
直接映射下的访存过程,假设访问主存的地址 Adr = 【000 0000 01 01 100 0001 0010】

  1. 首先根据第11~12位,得出该主存块可能是Cache的第1块中
  2. 然后将【主存地址Adr的前9位】与【第一个Cache块的标记位】进行匹配
  3. 若匹配成功且有效位 = 1,即为Cache命中,然后先根据第10~11位确定组内的第几块,最后根据后11位访问Cache块
  4. 若匹配失败或有效位 = 0,即为Cache未命中,则访问主存中对应的块

3. 组相联映射

在以组相联映射的Cache中,主存块所属的分组 = 主存块号 % Cache分组数,同样包括标志位和有效位

在组相联映射中的标记位的位数可以这么理解:

因为主存块在Cache中的位置 = 主存块号 % Cache分组数
实际上就是全相联映射和直接映射两种方式的结合,即包含了分组,同时在分组内主存块又可以任意放入Cache对应的分组内

假设我们采用二路组相联映射(2块为一组)对Cache进行分组,Cache有8块,则可以分为4组
如下图,在主存中,橙色块 = 【主存块号】%【Cache分组数(4)】 = 0( 属于Cache的第0组)
同时主存的橙色块可以任意放入Cache的橙色分组中
计算机组成原理_Cache与主存的映射方式_第4张图片

假设计算机的主存地址空间大小为4MB,按字节编址,Cache有4个Cache块(行),块大小为2KB
计算机组成原理_Cache与主存的映射方式_第5张图片

直接映射下的访存过程,假设访问主存的地址 Adr = 【000 0001 01 1 100 0001 0010】

  1. 首先根据主存地址Adr的第11位计算得出,该主存块可能在Cache的第1组中
  2. 然后将【Adr的前10位】与【第1组内的Cache块标记位】进行匹配
  3. 若匹配成功且有效位 = 1,即为Cache命中,然后即可根据后11位访问Cache块
  4. 若匹配失败或有效位 = 0,即为Cache未命中,则访问主存中对应的块

你可能感兴趣的:(计算机组成原理,计算机组成原理,Cache)