最近写了一个Cache的模拟器,由于平时空余时间比较分散,前前后后用了一周多的时间,基本实现的Cache的模拟功能(通过读取trace文件得到相应的命中率),能够实现直接映射、全相联、组相联三种映射方式,其中全相联和组相联能够实现随机、LRU两种替换策略。目前三种映射方式均采用回写法,但已经定义了其它写策略的接口,可以很容易扩充。程序具有比较强的鲁棒性,能够接受一定范围的错误输入,并能够比较智能的提示用户输入。

我尽量缩减了不必要的代码,控制在1000行以内。但日后加上部分功能后,可能会远超这个数目,希望大家帮我优化一下代码,以提高程序的空间效率。时间效率也不是很高,至少现在来说,读取30万行的内存地址数据,如果采取全相联的话,需要耗费的时间还是很长的。我会尽量优化。

程序使用C/C++混合编程,但不是采用面向对象的方法,虽然在编写过程中想改成以类的方式实现,但是整体框架已经完成的差不多了,所以就没有改。程序中使用了一些C++11标准中的类,比如bitset<T>,所以必须在支持C++11的编译器上进行编译,但现在主流的编译器比如gcc和VS均已支持,所以不用太担心。

我已经上传了代码和可执行程序的最新版本,下载地址是:

http://download.csdn.net/detail/jiangxinnju/7404137

程序能够在Windows平台下直接运行,如果你想在Linux平台运行,请重新编译,并调整base.h中相应的编译选项,其它文件不用修改,因为我已经使用了条件编译适应不同的编译环境。如果你只是想查看最后的数据结果,不关心每条数据的具体命中情况请不要在编译的时候注释掉

#define NDEBUG // For NDEBUG pattern

否则,程序需要很长的运行时间。另外如果你希望看到本程序的历史版本,或者希望在我的程序中添加新的功能,可以直接fork我的github,地址为:

https://github.com/jiangxincode/CacheSim

关于本程序的版权声明,可以参考README.txt文件,在遵守相关条目的基础上,你可以任意拷贝、修改我的程序。

如果你对于程序中的内容有所疑问,比如无法在你的机器上正常编译或运行,可以直接联系我,我的Email地址为:

jiangxinnju@163.com

欢迎各位朋友提出修改意见。



转载于:https://www.cnblogs.com/jiangxinnju/p/5516915.html

Cache模拟器(CacheSim)相关推荐

  1. cache 计算机系统实验报告,计算机组成原理实验报告-cache模拟器的实现

    计算机组成原理实验报告-cache模拟器的实现 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机组成原理实验报告学院(系)南 ...

  2. 直接映射Cache模拟器

    直接映射Cache模拟器 直接映射是Cache中结构最简单的一种. 一.Cache的大小和结构 直接映射Cache的结构如下:(因为每组只有一行,所以下文中行.组代表相同含义) 代码如下: 本实验采用 ...

  3. 【计算机体系结构实验】Cache 性能分析

    文章目录 实验四 Cache 性能分析 一.实验目的: 二.实验平台: 三.实验内容和步骤: 1. MyCache 模拟器的使用方法: 2.Cache容量对不命中率的影响. 3.相联度对不命中率的影响 ...

  4. 计算机组成原理实验一实验报告,计算机组成原理实验报告一

    <计算机组成原理实验报告一>由会员分享,可在线阅读,更多相关<计算机组成原理实验报告一(24页珍藏版)>请在人人文库网上搜索. 1.计算机组成原理实验报告学院(系): 软件学院 ...

  5. 深入理解计算机系统-cachelab

    前言: 离该实验结束也已有好几个星期,忘却的救主快要降临了罢,我正有写一点东西的必要了. 哇,再不写就写不出来了QWQ... Part A 一.Part A概述:       (Ⅰ)任务: 编写一个c ...

  6. 哈工大计算机系统实验六——高速缓冲器模拟

    实验报告 实 验(六) 题     目 Cachelab 高速缓冲器模拟 专       业 xxxx 学    号 xxxx 班    级 xxxx 学       生 xxxx 指 导 教 师 x ...

  7. Cachelab 高速缓冲器模拟

    实验报告 实 验(六) 题     目 Cachelab 高速缓冲器模拟 专       业 计算机科学与技术 csim.c和trans.c代码见文章末尾 目  录 第1章 实验基本信息... - 3 ...

  8. valgrind基本功能介绍、基础使用方法说明

    1.Valgrind概述 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合. Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个框架(f ...

  9. 利用cache特性检测Android模拟器

    Author:leonnewton 0x00 序 目前对Android模拟器的检测,主要是从特定的系统值来进行区分的.例如,getDeviceId().getLine1Number()这类函数,还有a ...

最新文章

  1. 【ACM】杭电OJ 1096
  2. R语言plotly可视化:plotly可视化在散点图中添加误差条(Scatterplot with Error Bars with plotly in R)
  3. 离开网易的转型之路1:选择测试之路-路上的迷茫
  4. React Native在移动端APP上实现拍照与照片上传功能
  5. Java中使用Jedis连接Redis对Set进行操作的常用命令
  6. Apache配置虚拟主机三大问题--自己的相关坑
  7. 【转】C++标准转换运算符static_cast
  8. STM32F4_USART配置及细节描述
  9. Python -- 大小写转换
  10. 网络-UDP与TCP
  11. 《统计学习基础-数据挖掘、推理与…
  12. 计算机类专业用五笔输入法,专业英文拼音五笔打字训练
  13. AndroidVideoCache-视频边播放边缓存的代理策略
  14. Python入门到精通———第一天
  15. linux根windows,linux系统刨根之路(二):实现windows和linux双系统-Go语言中文社区...
  16. Hybrid LSTM and Encoder-Decoder Architecturefor Detection of Image Forgeries的复现梳理
  17. chrome扩展程序安装_如何将扩展程序从一个Chrome安装复制到另一个安装?
  18. 星际无限高级合伙人培训大会在深圳南山举行
  19. 如何区分集线器、交换机、路由器呢
  20. 目标管理:SMART原则

热门文章

  1. Java-Runoob:Java Stream、File、IO
  2. learn python the hard way习题31~40总结以及列表的扩展知识
  3. Game-Tech小游戏专场第二趴,这次帝都见
  4. 《Tensorflow实战》之6.3VGGnet学习
  5. opencv2中访问像素的简单方法-自定义一个宏CV_MAT_ELEM2
  6. [洛谷2月月月赛]富金森林公园
  7. CentOS7下安装MySQL5.7安装与配置(转)
  8. Java论坛系统 JForum
  9. C#软件自动更新程序
  10. 2 通过JNI混合使用Java和C++ ----- 访问数组