我想用fifo算法开发缓存模拟器。我了解fifo算法的工作原理,但是我在理解如何实现它时遇到了问题。我提供了用于开发缓存的模板。我想知道实现算法的好方法。在C++上使用fifo算法开发缓存模拟器的好方法
#include <stdlib.h>
extern int opt_assoc, opt_block, opt_capacity, opt_repl, opt_verbose;
typedef struct {
int set; // set ID: 0 ~ (#sets - 1)
int blk; // block ID: 0 ~ (#blocks - 1)
bool miss; // whether this access is a miss
bool evict; // whether eviction happens
bool is_victim_dirty; // if evicted, whether the evicted block is dirty
} cache_state_t;
cache_state_t cache(unsigned int addr, char type)
{
// type: either 'l' or 's'
cs.miss = true;
static bool first_time = true;
if (first_time) {
first_time = false;
}
cache_state_t cs;
return cs;
}
''? 'typedef struct {'?你应该把你的问题标记为“in C99”,而不是“in C++”。 –
mloskot
我很困惑这个模板。除非我遗漏了一些东西,'cache()'似乎会在堆栈中声明'cs'并返回它,在这种情况下,只要函数退出,它就会被释放。我错了吗? –
@PatrickRoberts确切! – Huan