2015-07-01 105 views
1

我已经计算了一个包含缓存未命中率(mr)与缓存大小(sc)的图。如何计算各种缓存大小的CPI(每条指令周期)。 假设是:CPI计算

Given cache miss latency (say 10) , 
base CPI of 1 and 
33.33% of instructions as memory operations. 

我的理解是,CPI可以用下面的公式来计算。下面的方法是否正确?

CPI = miss rate*(.3333)*10 + 1 

MISS RATE: 2.700978 我得到了下面的CPI

CPI:1.090024

+0

这是不是很清楚你在问什么。你的公式看起来是正确的,但我不知道你的问题的源代码是什么。 –

+0

@GabrielSouthern我不问任何与源代码有关的东西。鉴于上述假设,我对CPI的计算有困惑。公式CPI =失败率*(.3333)* 10 + 1的原因很简单,这个解释是对的或错的。 – Pan

+0

如果你没有询问代码,你为什么包含它?关于公式为什么正确的解释,你写道:“我的理解是,可以用下面的公式计算CPI。”你的问题可以通过解释你是如何推导出这个公式以及你认为是怎样混淆它来改进的。否则,如果你只是问公式看起来是否正确,那么答案是肯定的。 –

回答

1

给予你可以用下面的公式缓存层次结构中的基线CPI统计时要计算CPI:

Effective CPI = Baseline CPI + CPI of memory accesses 

您的基线CPI为1(在问题描述中给出)。所以你只需要找到内存访问的CPI。

如果内存访问是缓存中的命中,那么我们假设CPI与基准CPI相同。如果它是一个错过,那么它将是未命中延迟。

所以你有33%的内存访问指令。那些错过的将需要10个周期。所以把所有这一切你得到:

CPI = miss rate*(.3333)*10 + 1 

这是你的问题。

至于你包括的代码和“答案”部分,我不知道你在那里询问什么或者它的目的是什么。

+0

我已根据您的建议更改了我的问题。我通过一些链接使用了CPI公式。但我不确定它为什么是正确的。上面的解释非常有帮助 – Pan

+0

我很高兴我的解释有帮助。我看到很多人在没有任何关于他们解决问题的信息的情况下剪下和粘贴作业问题。当在stackoverflow上提问时,尽量使问题尽可能清晰,并解释你所做的努力来找到答案是很好的。 –