在给出这些数据的情况下,有关于解决AMAT(平均内存访问时间)的问题:
图例:缓存级别1 = L1缓存级别2 = L2主存储器= M
L1, L2 and M's Hit Time are 1, 10 and 100 respectively whilst
L1 Miss Rate is 5%, L2 5% and M 50%.
在时钟周期中找到AMAT。
在尝试解决这个问题之后,这是我的解决方案:
AMAT's formula is = Hit Time X Hit Rate + Miss Penalty * Miss Rate
Miss Penalty = AMAT for the next cache(say for example, AMAT of L2)
所以我操纵了公式,结果是这样的:
AMAT = Hit Time L1 X Hit Rate L1 + AMAT L2 * Miss Rate L1
AMAT L2 = Hit Time L2 X Hit Rate L2 + AMAT M * Miss Rate L2
AMAT M = Hit Time M X Hit Rate M + [???] * Miss Rate M
提供所述公式的数值将如下所示:
AMAT = 1 X .95 + AMAT L2 * .05
AMAT L2 = 10 X .95 + AMAT M * .05
AMAT M = 100 X .5 + [???] * .5
所以我的第一个问题是,我的公式是否正确? 接下来,如何获得M的Miss Penalty?
答案 0 :(得分:0)
您的“级联”扣除是正确的。如果你错过了L1,那么必须从L2获取数据,涉及惩罚,如果你错过了L2,则必须从RAM获取数据,涉及更高的惩罚。基于此,您的计算AMAT的方法是正确的。
现在,让我们看看计算机架构。在L1之后你有L2,在L2之后可以有一个L3或者它可以是一个RAM。在RAM之后你有持久存储(硬盘)。
但是,对HDD的访问时间非常难以计算。大多数分析器(例如perf,oprofile)只是为您提供了缓存的漏报率,并假设其余的读取都是直接从RAM中获取的。通常在现代计算机中就是这种情况。硬盘驱动器的读取标记为I / O请求。 为什么难以计算硬盘访问时间?因为您的数据块可能位于硬盘上的任何位置,具体取决于碎片。在旋转磁盘的情况下,数据位于磁读取器附近时访问时间可以更短。因此,计算AMAT时通常很难预测硬盘访问时间。
这意味着如果问题陈述仅为您提供L1,L2,M命中时间,则无法计算硬盘命中时间。但是您可以使用分析器来衡量/估计现实生活中的应用。
简而言之:
你的公式是否正确? 是 - 从数学的角度来看。从实际的角度来看,如果M命中率不是100%,则很难使用并且通常没有意义。
如何计算M未命中罚金? 如果没有给出,则无法计算它。实际上,通过分析探查器输出,您可以确定它用于特定测量(不保证它对于另一个测量是相同的,因为所描述的原因上文)。
干杯。