本实验将帮助您了解缓存对C程序性能的影响。实验由两部分组成。在第一部分中,您将编写一个模拟高速缓存行为的小型C程序(大约200-300行)。在第二部分中,您将优化一个小的矩阵转置函数,目标是最小化缓存未命中的数量。
1、 第一部分:编写缓存模拟器
cachelab-handout/traces子目录包含一组内存引用轨迹文件,这些文件将用于评估您在第一部分中编写的缓存模拟器的正确性。内存引用轨迹文件由Linux程序valgrind生成,具有如下格式:
I 0400d7d4,8
M 0421c7f0,4
L 04f6b868,8
S 7ff0005c8,8
每行表示一次或两次内存访问,每一行的格式如下:
[空格]操作地址,大小
操作字段表示内存访问的类型:“I”表示指令加载,“L”表示数据加载,“S”表示数据存储,“M”表示数据修改(即,数据加载+数据存储)。在每个“I”的前面是没有空格的,在每个“M”、“L”和“S”的前面都有一个空格。“操作地址”字段代表一个64位十六进制内存地址。“大小”字段指定对应操作所访问的字节数。
在第一部分中,您将编辑csim.c文件,实现一个