针对这几天使用disksim-3.0合成负载的摸索做个总结:
Disksim-3.0是可以支持负载合成的。因为根据manual使用手册:
当synthgen取0的时候是关闭disksim的内置负载合成的。当取为非0的时候(一般取1)开启负载功能,但是输出到XXX.outv的文件中是看不到我们想要的负载文件信息。可以在源码中修改输出,其实可以输出合成负载的,下面将详细描述。先讲一下配置文件中如何设置我们所需的负载合成。
莫把无知当做无畏
代码实现的规范:
首先创建自己对应的PUD-LRU的C文件和头文件(clion自动提示生成),在initFlash函数段中添加自己的初始化函数,例如:
原仿真器中针对DFTL中的callFsim的函数实现DFTL的部分SLRU操作:
即在DFTL的SDRAM中的映射项关系(lpn—>ppn)每一项在缓存的滞留是按LRU原则进行组织的:
SLRU的处理方式:
#参考论文阅读
参考论文:Flashsim:A Simulator for NAND Flash-based Solid-State Drives。
为了更好的理解该仿真器,去阅读了该仿真器设计者写的一篇学术论文,以下内容是我个人阅读原文理解和翻译的。
##摘要部分:
该文献在摘要部分就说明Flashsim仿真器是event驱动类型的仿真器。Flashsim是与公认的硬盘仿真器Disksim良好兼容,能相互操作。因此可以在该仿真器上实现SSD和HDD的混合存储模型仿真,或者是SSD替换HDD的模型仿真。该仿真器是面向对象设计的仿真器,便于理解和拓展。
推荐源码阅读的的工具是sourceInsight3.5,直接将源码文件导入,就会生成一个各文件关联的工程,这个工具可自行百度,配合Nodepad++修改注释阅读更好,因为SI不知道为什么对中文注释输入的支持不是很好。继续昨天的源码阅读。
昨天研究到disksim.c中的extarq队列的操作函数,extraq队列就像是预先申请的空的内存,今天看的是intq队列操作函数,intq是处理调度event的队列。