缓存分析 - 计算机体系结构

时间:2014-07-06 17:09:17

标签: caching computer-architecture

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

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

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

  1. 什么是未命中率?
  2. 使用更大的缓存可以降低未命中率吗?
  3. 如果数据集的大小减少,可以降低未命中率吗?
  4. 以下是我的想法:缓存最初是空的,这意味着每次访问都会导致强制错过。那么这是否意味着未命中率为100%,因为最初没有数据被加载且模式没有两次击中任何地址?

    非常感谢任何理解这一点的帮助!

1 个答案:

答案 0 :(得分:1)

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