说明:==下文内容摘自胡洋博士毕业论文。引文通过特殊格式标出==
本章介绍一个自主开发的高准确性、模块化、可配置的固态盘模拟器SSDsim,它能够对高级命令、能耗进行模拟,最终要的一点是它的模拟结果经过了基本的验证。
源码请参见ssdsim
时间模拟
事件驱动的模拟器是根据系统内部各个部件的状态改变来修改系统时间,SSDsim就是采用的这种方式的驱动方法;
在高性能固态盘中,存在三类主要的部件,既固态盘中的嵌入式处理器,内存颗粒,和闪存颗粒。处理器的时钟通常大于100MHz,既单个时钟的时间为10纳秒甚至更短;内存的读写操作时间是纳秒级;与此形成对比的是,闪存颗粒的读写时间是微秒级。因此在SSDsim中,只考虑对闪存的读写擦除操作的时间开销,内存的读写时间开销取一个平均值,忽略处理器的时间开销。对于一个独立的读、写、擦除操作,可以根据公式5.1、5.2、5.3获得准确的时间开销。表5.1中介绍了三个公式中出现的变量,表中所列参数具体值取自具体的闪存芯片的数据手册
读操作: 7×tWC+tR+PS×tRC 公式1
写操作:7×tWC +PS×tWC+tPROG 公式2
擦除操作:5×tWC+tERASE 公式3
简称 | 含义 | 时间 |
---|---|---|
tR | 数据从目标物理页中读到分组的寄存器所消耗的时间 | 20微妙 |
tPROG | 数据从分组的寄存器写到目标物理页所消耗的时间 | 200微妙 |
tERASE | 目标物理块的擦除时间 | 1.5毫秒 |
tWC | 通过数据总线上向寄存器传输一个字节的数据所消耗的时间 | 25纳秒 |
tRC | 通过数据总线从寄存器向外传输一个字节的数据所消耗的时间 | 25纳秒 |
PS | 传输的数据量 |
能耗模拟
因为不同的固态盘所使用的处理器不一样,不管采用什么样硬件结构和软件算法,处理器的能耗基本相同,所以在SSDsim中,不考虑处理器的能耗,只考虑内存和闪存的能耗。
固态盘中需要一定的内存空间存储映射关系和缓存数据,通常采用两种类型的内存,DRAM或者SRAM。SRAM成本较高,容量较低,一般集成在处理器中;DRAM的成本较低,容量较大,一般是独立存在的。DRAM有三种工作状态,激活状态(active)、低功耗状态(standby)、刷新状态(refresh),在对DRAM进行读写操作时,DRAM处于激活状态;当短时间内没有对DRAM进行读写操作时,DRAM进入低功耗状态;当长时间内没有对DRAM有读写操作,DRAM就进入周期性刷新状态。在SSDsim中,每次对内存的操作的时间可以根据读写的数据量计算获得,所以DRAM处于激活状态的能耗可以根据所使用的内存颗粒的电压电流以及内存操作时间计算获得;当DRAM服务完一个读写操作后,随即进入低功耗状态,这段时间是两次读写操作之间的间隔时间,也可以计算获得;DRAM的刷新过程与所服务的负载的时间跨度有关,特定DRAM芯片的刷新周期是一定的,例如64毫秒,在SSDsim中可以根据负载的时间跨度,DRAM的刷新周期,以及DRAM的大小既DRAM刷新单位计算获得DRAM的刷新操作所消耗的能耗。
SSDsim通过采用上述的方法,分别获得闪存的能耗和内存的能耗,最终获得所模拟的固态盘服务某个负载所耗费的能量。
模块划分
SSDsim用来模拟固态盘的硬件结构(包括闪存颗粒,固态盘内部通道等),闪存转换层(包括数据缓存区、地址映射、垃圾回收及损耗均衡等)。SSDsim分成三个逻辑模块,既硬件行为模拟层,闪存转换层,和数据缓存层,这三个模块也是固态盘中标准的三个组成部分。
基本流程
本文总阅读量 次
本文由 Yu Zhang 发表于 Yu Zhang's Blog ,采用署名-非商业性使用-禁止演绎 3.0进行许可。
非商业转载请注明作者及出处。商业转载请联系作者本人。