资源简介
icarnegie ssd6 exercise5 答案
代码片段和文件信息
// #pragma warning(disable: 4244)
/* Cache simulator:
Simulates 4-way set-associative cache using LRU for replacement policy
Cache parameters configured at compile time */
#include “cache.h“
#include “defs.h“
#include “math.h“
/* cache parameters */
#define CACHE_SIZE 16384 /* 16KB cache */
#define SET_ASSOCIATIVITY 1 /* 4-way set associative */
#define BLOCK_SIZE 32 /* 32-byte lines */
/* By default configured for 16KB cache with 32B block size */
static int block_bits = 5;
static int set_bits = 9; //log(CACHE_SIZE/SET_ASSOCIATIVITY/BLOCK_SIZE);
#define MAX_SET_COUNT (1 << 10)
//#define BLOCK_SIZE (1<<(block_bits))
#define SET_COUNT (1<<(set_bits))
#define SET_MASK (SET_COUNT-1)
/* Get cache index from address */
#define GET_INDEX(addr) (SET_MASK & ( (unsigned) (addr) >> block_bits))
/* Get cache tag from address */
#define GET_TAG(addr) ((unsigned) (addr) >> (block_bits + set_bits))
static unsigned tags[MAX_SET_COUNT][SET_ASSOCIATIVITY];
static int read_misses = 0;
static int reads = 0;
static int write_misses = 0;
static int writes = 0;
void set_cache_measurement_enabled(int enabled) {
return;
}
/* Reset cache statistics without clearing cache */
void clear_cache_statistics()
{
read_misses = 0;
reads = 0;
write_misses = 0;
writes = 0;
}
/* Create empty cache with #sets = 2^s_bits block size = 2^b_bits */
void reset_cache(void)
{
clear_cache_statistics();
reset_cache2(set_bits block_bits);
}
void reset_cache2(int s_bits int b_bits)
{
int i j;
set_bits = s_bits;
block_bits = b_bits;
for (i = 0; i < SET_COUNT; i++) {
for( j=0; j tags[i][j] = -1;
}
}
clear_cache_statistics();
}
int get_read_count()
{
return reads;
}
int get_write_count()
{
return writes;
}
int get_read_miss_count()
{
return read_misses;
}
int get_write_miss_count()
{
return write_misses;
}
double get_read_miss_rate()
{
return (double) read_misses / (double) reads;
}
double get_write_miss_rate()
{
return (double) write_misses / (double) writes;
}
double get_miss_rate()
{
return (double) (read_misses + write_misses) / (double) (reads+ writes);
}
static void cache_read(int *addr)
{
int i j;
// unsigned long addr = addr_p;
unsigned tindex = GET_INDEX(addr);
unsigned tag = GET_TAG(addr);
reads++;
for(i=0; i if(tags[tindex][i] == tag) {
for( j=i ; j>0 ; j-- ) {
tags[tindex][j] = tags[tindex][j-1];
}
tags[tindex][0] = tag;
return;
}
}
read_misses++;
for(j=SET_ASSOCIATIVITY-1; j>0; j--) {
tags[tindex][j] = tags[tindex][j-1];
}
tags[tindex][0] = tag;
return;
}
static void cache_write(int *addr)
{
int i j;
unsigned tindex = GET_INDEX(addr);
unsigned tag = GET_TAG(addr);
writes++;
for(i=0; i if(tags[tindex][i] == tag) {
for( j=i ; j>0 ; j-- ) {
ta
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-01-27 21:00 exercise5_handout\
文件 3822 2005-08-16 16:27 exercise5_handout\cache.c
文件 754 2002-08-06 11:16 exercise5_handout\cache.h
文件 4042 2008-04-26 01:19 exercise5_handout\cache.vcproj
文件 5077 2011-12-30 15:44 exercise5_handout\cache.vcxproj
文件 1422 2011-12-30 15:44 exercise5_handout\cache.vcxproj.filters
文件 143 2011-12-30 15:44 exercise5_handout\cache.vcxproj.user
目录 0 2012-01-27 21:00 exercise5_handout\Debug\
文件 51200 2011-12-30 18:54 exercise5_handout\Debug\cache.exe
文件 381 2011-12-30 18:54 exercise5_handout\Debug\cache.exe.intermediate.manifest
文件 345116 2011-12-30 18:54 exercise5_handout\Debug\cache.ilk
文件 85 2011-12-30 18:54 exercise5_handout\Debug\cache.lastbuildstate
文件 1957 2011-12-30 18:54 exercise5_handout\Debug\cache.log
文件 14886 2011-12-30 18:46 exercise5_handout\Debug\cache.obj
文件 388096 2011-12-30 18:54 exercise5_handout\Debug\cache.pdb
文件 2390 2011-12-30 18:54 exercise5_handout\Debug\cl.command.1.tlog
文件 6568 2011-12-30 18:54 exercise5_handout\Debug\CL.read.1.tlog
文件 2348 2011-12-30 18:54 exercise5_handout\Debug\CL.write.1.tlog
文件 38150 2011-12-30 18:46 exercise5_handout\Debug\driver.obj
文件 1606 2011-12-30 18:54 exercise5_handout\Debug\li
文件 3242 2011-12-30 18:54 exercise5_handout\Debug\li
文件 1136 2011-12-30 18:54 exercise5_handout\Debug\li
文件 390 2011-12-30 18:54 exercise5_handout\Debug\mt.command.1.tlog
文件 780 2011-12-30 18:54 exercise5_handout\Debug\mt.read.1.tlog
文件 320 2011-12-30 18:54 exercise5_handout\Debug\mt.write.1.tlog
文件 5045 2011-12-30 18:47 exercise5_handout\Debug\rotate.obj
文件 5717 2011-12-30 18:54 exercise5_handout\Debug\smooth.obj
文件 52224 2011-12-30 18:54 exercise5_handout\Debug\vc100.idb
文件 61440 2011-12-30 18:54 exercise5_handout\Debug\vc100.pdb
文件 886 2002-08-10 21:49 exercise5_handout\defs.h
文件 18039 2002-08-11 01:40 exercise5_handout\driver.c
............此处省略2个文件信息
相关资源
- 计算机网络(第四版)特南鲍姆_潘爱
- 山东科技大学 软件工程期末考试真题
- 南邮微机原理课后作业答案
- 通信网理论基础课后习题答案
- 计算机网络第八章课后答案
- 北京理工大学数据结构编程练习答案
- Programming in C的课后习题答案
- 算法导论的中文答案word版
- 《数字图像处理》胡学龙 第三版 课后
- SSD7 练习10标准答案
- SSD7所有练习答案数据库系统
- Linear Algebra 线性代数课后答案
- 网络信息安全题库及答案
- 2019年网络空间安全全国职业院校技能
- 2019年网络空间安全全国职业院校技能
- 软件工程方法与实践习题答案
- 数据结构耿国华,高等教育出版社第
- 《EDA技术实用教程(第五版)》习题
- 西电软院分布式对象技术 期末试题及
- 数据结构及应用算法教程参考答案.
- 计算机图形学教程课后习题答案
- 杭州电子科技大学OJ题目与答案
- 计算机图形学第三版孙家广课后答案
- SSD7所有答案SSD7所有答案
- CMOS VLSI Design A Circuits and Systems Perspe
- 微机原理课后参考答案(黄冰---重庆
- 计算机算法答案(computer algorithms in
- 计算机网络第四版特南鲍姆课后答案
- 数字设计和计算机体系结构原书第二
- 编译原理第三版课后习题及部分答案
评论
共有 条评论