【问题标题】:Is Miss rate for L2 cache taken as ratio of L2 misses to Total no of instructions referred OR Total no of instructions missed by L1 cache?L2 缓存的未命中率是 L2 未命中与引用的指令总数的比率还是 L1 缓存丢失的指令总数?
【发布时间】:2020-02-02 09:18:50
【问题描述】:
During a program execution, out of 1000 memory references there are 250 and 
120 misses in L1 (Level-1) and L2(Level-2)
caches respectively. Hit times for L1 and L2 cache
are 24 and 40 cycles respectively.If there are 2.5 memory references
per instruction (Assume L2 to memory miss penalty is 250 cycles). 
The average stall cycles per instruction is _______.

这里我们每条指令有 2.5 个内存引用

=> 指令数 = 1000/2.5 = 400 条指令。

L1 未命中率 = 250/400

L2 的未命中率 = 120/400 或 120/250 ?

我们是否应该将L2的未命中率的分母作为指令的总数

指令总数 一级缓存未命中?

下面的解决方案正确吗?

【问题讨论】:

  • 这是某个站点的另一个练习问题吗?如果可能的话,在你找到它的地方链接。
  • 这是一个教练机构的作业题。我不确定他们给出的解决方案是否正确。我已附上解决方案和问题。
  • 链接它的来源,有两个原因:人们可以看到,并且很清楚你引用的内容(出于版权原因)。
  • 这是一个付费课程;因此无法共享链接;但我看到他们的解决方案有时是不正确的。上述解决方案正确吗?
  • 应该是 w.r.t 指令的总数。 Miss in L1 和 Miss in L2 是互斥的,用词很草率,“Miss in L1”实际上就是“L1 中的Miss 和L2 中的命中”。根据每个内存引用的成本(例如,L1 中的 1/4 未命中,L2 中的 6/50 未命中,因此平均一个内存访问成本为 40 个周期),您得出了相同的结果(100 个周期)。我更喜欢这种方法,但这只是个人喜好问题。

标签: cpu-architecture cpu-cache


【解决方案1】:

公式写得很紧凑。如果我们使用第一原理来得出答案,就会更容易理解这个问题。缓存未命中率是缓存未命中次数/缓存访问次数;就如此容易。现在,让我们看看这个问题。

指令数 = 400。内存引用数 = 1000。(这确实看起来像彼得在上面的 cmets 中提到的一个虚构的问题。在通用程序中,我们没有比指令更多的内存引用 => 2.5 倍的内存访问/指令看起来是人工的)

无论如何,要完成所有 L1 命中的 400 条指令,我们需要 1000 x 24 个周期。根据问题中给出的未命中时间表,要完成 400 条指令,我们需要 1000 次 L1 访问 = 1000 x 24 个周期,250 次 L2 访问 = 250 x 40,120 次主存储器访问 = 120 x 250 个周期。

400 条指令的(平均)停顿(与 L1 中所有 400 条指令/1000 个内存引用命中的情况相比)= 1000x24 +250x40 +120x250 -1000x24 = 250x40 + 120x250。

每条指令的(平均)停顿为 (250x40 + 120x250) / 400

【讨论】:

  • 是的,公式不是自我解释的;很难理解得出答案的推导和基本过程。感谢您的解释。
猜你喜欢
  • 2017-01-14
  • 2020-05-19
  • 2012-04-03
  • 2017-09-26
  • 2012-05-23
  • 2011-07-27
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多