通过内存访问跟踪文件确定缓存读/写/命中/未命中

时间:2012-04-16 23:39:44

标签: c caching trace

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

比方说,例如,这是示例跟踪输出的前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

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 跟踪文件的格式。 (我怀疑你有权访问)
  2. 了解系统的参数,即高速缓存大小,寻址位(解释)
  3. 实际上,缓存基于时间局部性和空间局部性。所以你要确定

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

    我希望这会尝试清除如何处理。为了更好地理解,我将建议计算机组织和设计书籍内存层次结构。