Cache性能分析例题1:失效率和平均访存时间计算例题(附带详细分析)

题目内容

利用下表所列的数据(分离Cache和混合Cache每1000条指令的失效次数),比较指令Cache和数据Cache容量均为16KB的分离Cache与容量为32KB的混合Cache,哪种Cache的失效率更低?哪种Cache的平均访存时间更低?假设:36%的指令为访存指令。两种Cache的失效开销均为100个时钟周期,分离Cache的命中时间为1个时钟周期,混合Cache中一次Load或Store操作访问Cache的命中时间都要增加一个时钟周期(因为混合Cache只有一个端口,无法同时满足两个请求,会导致结构冲突,假设取指优先满足)。采用写直达策略,且有一个写缓冲器,并且忽略写缓冲器引起的等待。
在这里插入图片描述

题目分析

首先对题干进行整体分析,可以看出题目中所要求的是分别求出两种Cache(分离Cache和混合Cache)的失效率和平均访存时间,那么我们只需要求出相关的内容即可。

求解失效率

既然需要求解失效率,那么按照公式

失效率=失效次数/总访存次数

我们只需要分别知道分离Cache和混合Cache的失效次数和总访存次数的信息即可。
通过分析题目的表格可以得知:16KB指令Cache和16KB数据Cache中每1000条指令分别有3.82条、40.9条失效;32KB混合Cache每1000条指令有43.3条失效。因此,求解两类Cache失效率中失效次数可以根据题目表格完全已知,接下来只需要求出总访存次数即可。
访存次数包括指令访存和数据访存两部分:每一条指令从内存中取出来都需要进行一次指令访存;如果一条指令是访存指令,那么这条指令还需要额外进行一次数据访存以从内存中取出数据,因此每一条访存类指令都访存两次
由于1000条指令中36%是访存指令,因此总共的访存次数是1360次(对于两类Cache都是这样)。
这样,我们分别知道了两类Cache在1000条指令中的失效次数,同时也知道了总的访存次数,之间作商即可。
由此可知如下的计算结果:

分离Cache的总失效率:(3.82+40.9)/1360=3.29%
混合Cache的失效率:43.3/1360=3.18%

由此可知分离Cache的总失效率高于混合Cache。

求解平均访存时间

首先分析平均访存时间公式:

平均访存时间公式=指令访存百分比×(命中时间+指令失效率×失效开销)+数据访存百分比×(命中时间+数据失效率×失效开销)

也就是说,如果我们能够确定指令访存百分比、数据访存百分比、命中时间、指令失效率、数据失效率和失效开销,那我们就可以通过这个公式求解出平均访存时间。
①求解指令和数据访存百分比:通过求解失效率部分的计算可以得出,总共的访存次数为1360次,指令访存次数为1000次,数据访存次数为360次,那么

指令访存百分比=1000/1360×100%=73.53%
数据访存百分比=360/1360×100%=26.47%

对于两种Cache结构,都具有相同的指令访存百分比和数据访存百分比。
②求解命中时间:题目中已经给出分离Cache的命中时间为1个时钟周期,而混合Cache中Load和Store指令(也就是访存指令)的命中时间为2个周期,其他指令的命中时间为1个时钟周期,因此命中时间根据题目条件也完全已知。
③求解失效开销:可以由题目条件得知均为100个时钟周期。
④求解失效率:混合Cache的失效率已经在前一问计算得出,因此只需要计算分离Cache的指令失效率和数据失效率即可。根据以下公式:

指令失效率=指令失效次数/指令访存次数
数据失效率=数据失效次数/数据访存次数

由此可以分别求出指令失效率和数据失效率为0.382%和11.36%。

最后,向公式中代入上述求出的四个结果即可求解出以下结果:(单位是时钟周期)

分离Cache平均访存时间:4.236
混合Cache平均访存时间:4.44

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值