Cache-Lab: Understanding Cache Memories
该lab是为了帮助理解缓存对于c程序的性能影响,包括两部分:第一部分是写一个模拟缓存的c程序,第二部分是对于一个转置矩阵的函数进行优化来达到尽可能小的miss数量。
官网下载tar文件并解压tar xvf cachelab-handout.tar得到需要编辑的两个文件csim.c和trans.c以及其他文件。
Part A
首先需要定义缓存的数据结构,这里是组相连缓存,所以定义缓存行Cache_line,组成缓存组Cache_set,再组成缓存Cache,具体定义见下面的代码。
#define ADDRESS_SIZE 64
typedef struct {
char valid_bit;
unsigned long tag;
int LRU_count;
} Cache_line;
typedef struct {
Cache_line* lines;
} Cache_set;
typedef struct {
int S;
int E;
Cache_set* sets;
} Cache;
在考虑解析命令行选项,使用getopt库函数,具体用法可以参考这里。下面的主函数见文知意,后面的init_cache(s, E, b, &cache)和 cacheSimulator(s, E, b, file, isVerbose, &cache)分别代表初始化缓存数据结构(使用malloc分配内存)和缓存模拟。
int main(int argc, char *argv[]) {
int s, E, b;
char file[100]; /* 存储打开的文件名 */
int isVerbose = 0;
Cache cache;
hit_count = miss_count = eviction_count = 0;
int ch;
while ((ch = getopt(argc, argv, "vs:E:b:t:")) != -1) {
switch (ch) {
case 'v':
isVerbose = 1;
break;
case 's':
s = atoi(optarg);
break;
case 'E':
E = atoi(optarg);
break;
case 'b':
b = atoi(optarg);
break;
case 't'

本文通过Cache-Lab实验介绍缓存对C程序性能的影响。实验包括模拟缓存实现及矩阵转置优化,旨在降低miss数量。Part A涉及组相连缓存的数据结构设计及LRU策略实现;Part B探讨不同尺寸矩阵转置的优化策略,以适应给定缓存大小。
最低0.47元/天 解锁文章
3858

被折叠的 条评论
为什么被折叠?



