【计算机组成原理】——Cache-主存的地址映射

高速缓冲存储器——Cache

存储系统有两个层次结构:

1.缓存和主存

2.主存和辅存

第一层:Cache的提出是为了解决cpu和主存速度不匹配的问题
主存和缓存的数据调动是由硬件自动完成的
第二层:主存-辅存解决存储系统容量的问题
主存和辅存之间的数据调动是由硬件和操作系统共同完成的

Cache的容量和块长是影响Cache效率的重要因素

Cache-主存地址映射的三种方式

  1. 直接映射
  2. 全相联映射
  3. 组相联映射
    (由主存地址映射到Cache地址称为地址映射)

Cache和主存的字块表示

主存的块数用M表示,其中M=2^m,m表示m位地址

Cache的块数用C表示,其中C=2^c,c表示c位地址

1.直接映射

直接映射的公式:

i=j mod C 或者 i=j mod 2^c

i表示缓存块号:j表示主存块号:C为缓存快数,其中C=2^c

直接映射下主存与辅存的对应关系如下图所示:
在这里插入图片描述
比如说缓存的为5,主存为20,那么缓存的第一块,就对应着主存的1,6,11,16

直接映射的优点:实现简单,只需要利用主存地址的某些位直接判断,即可确定所需字块是否在缓存中,成本低

直接映射的缺点:不够灵活,每个主存快只能对应固定的缓存块,即使缓存快空了很多也不能使用,使得每个缓存块得不到充分的利用(以刚刚的5,20为例,如果程序要是用1,6,11,16块的主存,使得缓存就要进行不停的替换,降低了命中率)

2.全相联映射

全相联映射允许主存中每一字块映射到Cache中的任何一块的位置上
在这里插入图片描述
全相联映射的优点:这种方式更加灵活,命中率也更高,缩小了块冲突率

全相联映射的缺点:逻辑电路多,成本高

3.组相联映射

组相联映射是对直接映射和全相联映射的一种折中,它把Cache分为Q组,每组R块(R=2^r),则:

i=j mod Q

i为缓存的组号,j为主存的块号
组相联映射如图所示:
在这里插入图片描述
一组内有两块的叫二路组相联(r=1)
一组内有四块的叫四路组相联(r=2)

组相联中主存的某一块可以映射到对应的组里面的任意一块
当R=1时,为直接映射(r=0)
当R=C时,为全相联映射(r=c)

组相联映射方式融合了前两者的优点。尽量避免了它们的缺点。普遍采用这种方式。

与全相联映像相比,组相联映像的优点是:目录表小

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@玉面小蛟龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值