【问题标题】:Cache Analysis - Computer Architecture缓存分析 - 计算机体系结构
【发布时间】:2014-07-06 17:09:16
【问题描述】:

这是计算机体系结构课程中的一个问题,给我带来了一些麻烦:

你有一个应用程序,它的内存访问模式是一个流,它的整个数据集是 128kB。您机器中的数据缓存容量为 64kB。它是字可寻址的,并与 32B 线直接映射。它能够一次获取一行。

给定访问模式:0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, ..., 32768,其中每个访问都是一个 4B 字。

  1. 未命中率是多少?
  2. 可以通过使用更大的缓存来降低未命中率吗?
  3. 如果减少数据集的大小,是否可以降低未命中率?

我认为是这样的:缓存最初是空的,这意味着每次访问都会导致强制未命中。那么这是否意味着未命中率为 100%,因为最初没有加载数据并且模式没有两次命中任何地址?

任何理解这一点的帮助将不胜感激!

【问题讨论】:

标签: caching computer-architecture


【解决方案1】:

请注意,您的缓存行长 32B,这意味着当您加载地址 0 时,您会收到地址 4,8,...,28,所有这些都将在缓存中命中。所以你的失误率是 4/32 = 1/8 = 12.5%。更大的缓存或减少数据集无济于事,因为您所有的未命中都是强制未命中。但添加预取器将有助于降低未命中率。

【讨论】:

  • +1 这个答案很有用,但它可能有助于解释为什么所有未命中都是首次访问/强制未命中(没有重复引用的流式访问)。跨度>
猜你喜欢
  • 2015-01-19
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多