计算机cache的几种映射方式

目录

1.直接映射

2.全相连映射

3.组相连映射


1.直接映射

        

        这种方法每个内存字节块只能放到cache的相应位置,cpu给的地址分成三部分 区号,块号,块内偏移地址。(有点类似于mmu分成三个部分)cache的标记就是区号,字块地址就是块号,cache的大小是固定的,cpu发出地址的时候根据 区号 和 块号 和 有效位 确定是否命中(注意cache 中标记是区号,因为字块只能映射到固定的cache块的位置,所以根据区号就能确定这个字块cache是不是cpu要读取内存中的位置,在图中 2的C次方字块 就是一个区,有时候一个字节块又叫做一个缓存行),直接映射方式电路简单速度快。

 2.全相连映射

         全相连映射 内存字节块(缓存行)可以放置在缓存中任意的字节块当中,全相连映射的cache标记的位数m = 区号t + 块号c,这样要确定cpu访问的位置在不在cache中,就要比较 m 位长度的标记,而且每个字节块的标记都要比较,这样电路比较复杂,速度比较慢。

3.组相连映射

         跟直接映射一样这里把 cache 分成 Q组,每组两个字节块,每个字节块都有一个标记。把主内存分区处理,每个区只能根据 字节块编号 把数据 缓存到对应的组编号里面,例如:内存区0 的 字块0,只能放在缓存的组0 的任意一个字块中(缓存行),内存区1 的 字块0,也只能放在缓存的组0 的任意一个字块中,内存区1 的 字块1,只能放在缓存的组1 的任意一个字块中,内存区1 的 字块6,只能放在缓存的组6的任意一个字块中。这种方式硬件复杂度一般,速度也挺快,更适合拿来使用。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值