【问题标题】:Calculation of the average memory access time based on the following data?根据以下数据计算平均内存访问时间?
【发布时间】:2017-03-01 15:09:54
【问题描述】:

考虑以下信息

  • 假设缓存是物理寻址的
  • TLB命中率为95%,访问时间=1个周期
  • 缓存命中率为 90%,再次访问时间 = 1 个周期
  • 页面错误为 1%,并且在 TLB 和 Cache 都发生未命中时发生
  • TLB 访问和缓存访问是顺序的
  • 主存访问时间为 5 个周期
  • 磁盘访问时间为 100 个周期
  • 页表始终保存在主内存中

根据以下信息,平均内存访问时间是多少?

我的方法 => 我正在给出我如何理解这个问题的方法。请检查一下。

平均内存访问时间

==>

Probability of NO page fault (Memory access time) 
+ 
Probability of page fault (Page fault service time)

==>

0.99(TLB命中(TLB访问时间+缓存命中+缓存未命中)+TLB未命中(TLB访问时间+页表访问时间+缓存命中+缓存未命中) )

+

0.01(TLB访问时间+页表访问时间+磁盘访问时间)

==>

0.99 ( 0.95 (1 + 0.90(1) + 0.10(1 + 5)) + 0.05(1 + 5 + 0.90(1) + 0.10(1 + 5)强>)))

+

0.01 (1 + 5 + 100)

给定的表达式是否正确?

请告诉我,我的方法是正确的还是我犯了一些错误?

谁能帮帮我?

PS:我下周要期中考试,需要练习这些问题

【问题讨论】:

  • 哥们,你是不是在忙着工作痛苦。
  • 你的数字中的 0.99 和 0.01 是什么?
  • @Ivan,1% 是页面错误。因此,我使用 99% 来避免页面错误。
  • @Willturner 在页面错误的情况下,为什么不包括 1 个周期作为缓存尝试时间?
  • @Ivan,这只是 1 个周期。即使我添加它,它也不会改变结果。实际上,我的教授告诉我答案是 3 个周期,但我得到了一些 4 个周期,这就是为什么我认为我犯了一些错误。你能回答这个吗?跨度>

标签: caching operating-system paging tlb


【解决方案1】:

在你的情况下,棘手的行是cache is physically addressed,意思是在点击它之前我们必须执行转换(因为程序使用虚拟地址)

我构建了以下概率树来计算平均值。我们将从叶子中减少它以计算整个平均值。规则非常简单:我们计算分支成本并将它们乘以概率,就像您在计算中所做的那样。我得到的值是2.7225

第一次休假减少,页面错误

还原后

缓存命中场景的成本

注意:无论如何我们都要为缓存访问支付 1 个周期

上次还原前

注意:我们为 TLB 支付 1 个周期

1 + 0.95*1.5 + 0.05*5.95 = 1 + 1.425 + 0.2975 = 2.7225

【讨论】:

  • 是的,你的答案是对的。只是一个疑问,为什么你在第一棵树中有两种类型的页面错误。在问题中,假设在TLB和缓存中都有未命中时会发生PF?
  • @willturner 是的,这是一个错误。如果我们在 TLB 中有页面,这意味着我们在主内存中有它,这意味着读取时没有页面错误,谢谢
  • 更正了。现在平均时间增加了 0.01 :)
  • 敬礼。很好的解释。谢谢,现在清除了!
  • 我将使用这种方法解决所有此类问题,甚至在考试中:)
猜你喜欢
  • 2021-03-17
  • 2017-03-14
  • 2017-08-06
  • 2018-02-28
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多