了解cache memories可能对C程序的性能产生的影响
[参考] 第九章:虚拟内存
简介
第一部分编写一个模拟缓存行为的C程序,第二部分将优化一个矩阵转置函数,最大限度地减少缓存丢失的次数
实验中只要修改csim.c
和trans.c
两个文件
在实验目录中有一个trace
文件夹,里面包含了一系列的reference trace files
,去评估编写第一部分代码的正确性。该文件由valgrind
生成,生成的数据具有以下形式1
[space]operation address,size
其中在operation
中,I
表示指令加载,L
表示数据加载,S
表示数据存储,M
表示数据修改;address
表示64位十六进制内存地址,size
指定了操作访问的字节数
Part A
在Part A部分中,将在csim.c中编写一个缓存模拟器,该模拟器将valgrind内存跟踪作为输入,模拟此跟踪上的缓存内存的hit/miss行为,并输出命中次数、错过次数和逐出次数。
我们为您提供了一个名为csim-ref的参考缓存模拟器的二进制可执行文件,valgrind跟踪文件上的行为。在选择要驱逐的缓存行时,它使用LRU(最近使用最少的)替换策略。编写的模拟器要能处理以下命令行参数:./csim-ref [-hv] -s <s> -E <E> -b <b> -t <tracefile>
- -h: Optional help flag that prints usage info
- -v: Optional verbose flag that displays trace info
- -s: Number of set index bits (S =2s is the number of sets)
- -E: Associativity (number of lines per set)
- -b: Number of block bits (B =2b is the block size)
- -t: Name of the valgrind trace to replay