Zhou的个人博客

莫把无知当做无畏


  • 首页

  • 标签

  • 归档

disksim负载合成-2

发表于 2018-02-24 | 阅读次数:

针对这几天使用disksim-3.0合成负载的摸索做个总结:

Disksim-3.0是可以支持负载合成的。因为根据manual使用手册:

当synthgen取0的时候是关闭disksim的内置负载合成的。当取为非0的时候(一般取1)开启负载功能,但是输出到XXX.outv的文件中是看不到我们想要的负载文件信息。可以在源码中修改输出,其实可以输出合成负载的,下面将详细描述。先讲一下配置文件中如何设置我们所需的负载合成。

阅读全文 »

disksim负载合成

发表于 2018-02-24 | 阅读次数:

源码理解

从一开始的disksim_synthio.c文件中的相关函数入手(这是根据之前的源码理解这部分的代码和负载合成有关):
首先根据函数名字猜测

1
synthio_generate_io_activity

函数是不是和负载合成的有关,查看该函数的定义如下:

阅读全文 »

自写仿真器的cache算法的实现规范

发表于 2018-02-24 | 阅读次数:

代码实现的规范:
首先创建自己对应的PUD-LRU的C文件和头文件(clion自动提示生成),在initFlash函数段中添加自己的初始化函数,例如:

阅读全文 »

DFTL算法代码实现追加

发表于 2018-02-24 | 阅读次数:

DFTL算法中callfsim函数中的操作

原仿真器中针对DFTL中的callFsim的函数实现DFTL的部分SLRU操作:
即在DFTL的SDRAM中的映射项关系(lpn—>ppn)每一项在缓存的滞留是按LRU原则进行组织的:
SLRU的处理方式:

  1. 将缓存划分未两个区域:Ghost队列和Real队列
  2. 初次加载的最新的映射关系被保留在Real队列
  3. 当Real队列中满时,需要进行剔除,剔除后的映射关系并不直接回写入NADN中保存,而是转移到Ghost队列中进行暂存
  4. Ghost中的映射项,再满足一定条件时也会跻身再次进入到Real队列中,将Real队列中的LRU位置的映射关系置换到Ghost队列中去.
  5. Ghost队列中的LRU位置的映射在满的时候会被直接剔除,如果发生了写更新,即SDRAM中的映射关系和底层的映射关系不一致话的,则需要旧的映射关系读出来,将新的映射关系更新到NAND中
阅读全文 »

Flashsim中关于FAST算法实现的代码解析

发表于 2018-02-24 | 阅读次数:

前言

Disksim3.0上安装的Flashsim,能够进行SSD模拟仿真,Flashsim上的FTL层算法可供选择的有DFTL算法,FTL(纯页级映射),和FAST(fully associative sector Translation)混合FTL映射算法。因为最近的缓冲区仿真需要知道底层的FTL全合并的开销,对FAST的源码进行了阅读和理解,进行以下的总结。

FAST的算法基础

在理解代码前。首先需要理解FAST算法的机理和流程。FAST算法是源自这篇ACM会议的论文

阅读全文 »

DFTL源码阅读1

发表于 2018-02-21 | 阅读次数:

DFTL源码阅读笔记(1)

DFTL算法举例理解

在理解代码前,首先理解下面关于DFTL的一个例子的示意图十分必要:

首先理解CMT和GTD,在DFTL中,经常访问的LPN-PPN这个映射关系是缓存到RAM/DRAM中的,全部的映射关系是存放在flash内部的一小块区域(这里图示为翻译块区域),其中LPN-PPN这个简单的映射关系一般是4byte,而一个数据页大概是2048byte大小。也就是一个数据页(翻译页)可以存放大概512的映射关系。但是要知道这些翻译页在flash的位置,则需要GTD来管理对应的MVPN–>MPPN的关系。

阅读全文 »

flashsim源码阅读-5

发表于 2017-07-10 | 阅读次数:

#参考论文阅读

参考论文:Flashsim:A Simulator for NAND Flash-based Solid-State Drives。

为了更好的理解该仿真器,去阅读了该仿真器设计者写的一篇学术论文,以下内容是我个人阅读原文理解和翻译的。

##摘要部分:
该文献在摘要部分就说明Flashsim仿真器是event驱动类型的仿真器。Flashsim是与公认的硬盘仿真器Disksim良好兼容,能相互操作。因此可以在该仿真器上实现SSD和HDD的混合存储模型仿真,或者是SSD替换HDD的模型仿真。该仿真器是面向对象设计的仿真器,便于理解和拓展。

阅读全文 »

flashsim源码阅读-4

发表于 2017-07-09 | 阅读次数:

再次回到disksim_simulate_event()函数主体:

阅读全文 »

flashsim源码阅读-3

发表于 2017-07-08 | 阅读次数:

推荐源码阅读的的工具是sourceInsight3.5,直接将源码文件导入,就会生成一个各文件关联的工程,这个工具可自行百度,配合Nodepad++修改注释阅读更好,因为SI不知道为什么对中文注释输入的支持不是很好。继续昨天的源码阅读。
昨天研究到disksim.c中的extarq队列的操作函数,extraq队列就像是预先申请的空的内存,今天看的是intq队列操作函数,intq是处理调度event的队列。

阅读全文 »

flashsim源码阅读-2

发表于 2017-07-07 | 阅读次数:

#disksim_simulate_event()代码段继续学习
现给出之前未读完的代码段:

阅读全文 »
123
ZhouHeyu

ZhouHeyu

SSD学习的一些笔记

21 日志
18 标签
RSS
GitHub 知乎 E-Mail
Links
  • CSDN
  • 码云(Gitee)
© 2018 ZhouHeyu
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4