浅谈cache的直接映射、全相联映射和组相联映射

对于cache的几种映射方式进行一个小总结,方便以后自己不会了来看看

以下用图书馆坐座位的例子来说一说直接映射、全相联映射和组相联映射。

对于直接映射,每个块在cache中只能有一个位置,非常局限,就好像图书馆里有那么多空位,你却只能坐在一个地方,即使别的地方是空的你也不能坐

对于全相联,只要有空位你坐哪儿都行

对于组相联,是一种折中的方案。假设图书馆有1000个座位,我们把这1000个座位分成10个区(这叫“10路”,也就是ten-way)每个部分都有100个座位(这叫“100个组”)。你去图书馆的时候,你坐在哪个区都行,但是你只能坐在每个区的某一个位置上(块从内存映射到cache的时候,可以选任意一路,但是只能选这一路内的一组)。比如,这个图书馆规定,用自己的学号取模100来选座位,那么你的座位编号就是97。这个图书馆中有10个区,也就有10个编号为97的座位,你可以选择这10个座位中的任意一个(cache有10路,每路都有一个编号为97的块,你可以存入这10个编号为97的块中的任何一块)。如果你很不幸运,所有97号的座位都有人坐了,而你不能选择任何其他编号的座位,所以你只好去找一个97号座位上的人,跟他说“老哥,你起来,让我坐一会儿吧”。那个老哥一定会把座位让给你,因为你们所有人都被要求当受到请求时让出自己的座位。(如果cache中97组的所有块都满了,就只能从所有的97块中选一块淘汰)。

其实直接映射和全相联是组相联的极端。如果把1000个座位分成1路,这一路中有1000组,那么每一组内只有一个位置可选,这实际上就是直接映射;如果把1000个座位分成1000路,每一路中只有一组,那么这一组内有1000个位置可选,这实际上就是全相联。

也许理解上还有不对的地方,以后还会完善~
越努力,越幸运!

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值