Cache

了解cache memories可能对C程序的性能产生的影响


[参考] 第九章:虚拟内存

简介

第一部分编写一个模拟缓存行为的C程序,第二部分将优化一个矩阵转置函数,最大限度地减少缓存丢失的次数

实验中只要修改csim.ctrans.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