计算机组成与结构有关主存是否命中Cache的判定

我也是因为要考试,看了好久才略懂,讲的不行的地方,欢迎指出。

直接映像和全相联映像因为网上讲的还行,这里不再重说。

组相联映象:

   首先,我们先把主存和Cache格式写好,主存:组号+主内块号+块内地址,Cache:组号+块号+块内地址

   主存组号:它是用来和Cache的标记一一比较,若相等则命中,若没有相等,这没有命中。

   主存块号:等于Cache的组号,它是用来寻找Cache的第几组

   Cache组号:就对应着主存的组号,通过它我们先在主存中找到第几组

   Cache块号:它说明了每一组有几块,比如块号为2,则它每一组里面有四块。

   块内地址:主存和Cache地址一样。

  如果命中的话,则f访问Cache的地址为主存的块号+Cache的组内块号(就是你在那一组里面找到的第几个)+块内地址

    下面我们通过例题分析:

 设某微机主存容量1MB,划分为16×1024块;Cache容量为8KB。采用4路组相联映像时,当前Cache映像如下表所示。判别CPU发出80032H和3612CH主存地址时是否命中Cache,若命中,写出Cache地址。

标记

Cache

032H

第0块

065H

第1块

080H

第2块

046H

第3块

036H

第16块

092H

第17块

06CH

第18块

100H

第19块

解:

    1MB=2的20次方所以地址20位,同理,Cache地址13位,采用四路组相联映象,就代表Cache的块号2(4=2的平方)位,主存16*1024,有14位地址则剩下来的就是块内地址6位,主存的块内地址和Cache相等,主存的块号和Cache的组号相等,

综上所述:主存地址格式:20=9(组号)+5(块号)+6(块内地址);

              Cache地址格式:13=5(组号)+2(块号)+6(块内地址);

由于Cache的块号是2,即Cache里面4个地址一组。

主存给出的地址:80032H=1 0000 0000   00000     110010


 根据块号00000,寻找主存的第0组,根据1 0000 0000,发现0组里面地址是032H,065H,080H,046H,都不匹配,所以没有命中


再看下一个主存地址3612CH=0 0110 1100    00100     10 1100

首先根据00100,知道到第四组,从0组开始,每四块一组,发现刚好是图中给出的第16,17,18,19,块,然后根据0 0110 1100,发现第18块06C,和他匹配,则命中。其中第18块在这一组里面是老三,则他的编号是10(老大是00,老二是01,老三是10,老四是11).接着我们要写出访问Cache的地址:主存的块号+Cache的组内块号(就是你在那一组里面找到的第几个)+块内地址,也就是00100   10   101100  即4ACH。就大功告成啦!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值