1

我的作业是通过示例程序确定给定跟踪文​​件的缓存读取/写入/未命中/命中数。

比如说,这是示例跟踪输出的前 10 行。

0x37c852: W 0xbfd4b18c
0x37cfe0: W 0xbfd4b188
0x37cfe3: W 0xbfd4b184
0x37xfe4: W 0xbfd4b180
0x37cfe5: W 0xbfd4b17c
0x37cfe9: W 0xbfd4b128
0x395bcb: R 0xbfd4b128
0x395bce: R 0xbfd4b128
0x37cff4: W 0xbfd4b158
0x37cff9: W 0x39deac

如何通过分析每一行来确定我需要知道的内容?

谢谢,如果您有任何教育资源,请告诉我。

4

1 回答 1

0

是的,您可以从跟踪文件中确定缓存参数。但是您需要具备以下任一条件:

  1. 跟踪文件的格式。(我怀疑你可以访问)
  2. 了解系统的参数,即缓存大小、寻址位(解释)

实际上缓存是基于时间局部性和空间局部性的。所以为你确定

  • 空间局部性:检查获取的地址是否是最近获取的地址 + 字长(可以是双字长等)例如:您最近获取了 0x4000,下一次访问是 0x4008。如果行/块长度(即缓存一次性获取的数据长度)。准确地说,您还需要知道缓存是否设置为关联以及多少,这将有助于替换以及更准确的替换策略(我非常怀疑有人会要求做作业)
  • 时间局部性:检查访问的地址是否在不久的将来再次被调用以及是否没有被替换(因为请求了具有相同索引和不同标签的其他地址)

我希望这将试图弄清楚如何处理。为了更好地理解,我会推荐计算机组织和设计一本书的内存层次结构。

于 2014-09-05T00:07:04.147 回答