由于研究论文的选题定在了ssd的能耗存储优化上,所以就顺便写一些博客文章,主要的先介绍一下ssdsim这个开源工具的一些内容以及基本的知识:
SSDsim介绍
SSDsim是一款固态硬盘的模拟仿真软件,它提供了一系列强大的前期功能验证手段并且可以较为准确地对真实SSD固态硬盘嵌入式硬件设备进行一个仿真模拟,所以可以有效地模拟硬件结构以及软件算法的有效性。最大的特点就是可塑自由性极高,可以通过特定的输入参数文件检测特定的SSD进行一系列实验。这款开源软件是由华中科技大学的胡洋博士开发并且经过了不断改良的开源项目,下载网址是在SSDsim之中,并且有配套的用户说明手册;这里也借鉴了一些用户手册中的知识。
SSD基本概念介绍
由于篇幅的原因,所以这里只是简单地介绍一下关于SSD的一部分最基本的需要理解的概念;其他的详细概念以及与Linux kernel,存储架构等相关的具体概念会在其他博文中一一展开。
SSD(Solid State Drive)是一种利用Flash芯片或者DRAM芯片作为数据永久存储的硬盘,它与传统的机械硬盘HDD也就是磁盘有些本质上的差别。SSD不再采用了磁技术来进行数据的存储,它利用了一种叫做“浮动门场效应晶体管”的基本cell来进行保存数据,主要现在有三种类型的cell,分别是SLC(每一个cell只能保存1Bit的数据)、MLC(每一个cell能保存2Bit的数据)、TLC(每一个cell能保存3Bit的数据)。而且就成本而言SLC>MLC>TLC;出错率SLC小于MLC小于TLC;但是它们都有一个共同的特点就是这些类型的cell都需要额外的空间来保存一个叫ECC校验的数据,这个ECC校验可以负责数据的错误恢复。
SSD的基本结构图示如下:
SSD的操作特性也与HDD有着巨大的差别,最显著的主要有:
- 读和写操作都是以页page为基本单位
- 如果page是vaild或者unvaild状态则写操作是不可以覆盖写,必须先擦除后才能进行写操作
- 擦除操作是以块为基本单位的
其他的基本特性会在其他博文中一一详细介绍,以上三点操作特性的具体原理和原因也会详细说明;
主体功能
SSDsim主要实现了对固态盘的软硬件系统环境的模拟仿真;运行于SSDsim之上的软件算法与真实SSD的系统软件的基本误差很小。而SSD的硬件系统主要是由多个通道,通道下的多个芯片,芯片下多个晶圆,晶圆下多个闪存片,闪存片下多个闪存块,闪存块下多个闪存页这样的一种并行多层级架构,所以这个SSDsim也用了一个极其庞大的结构体组来对这个并行多层级架构进行了一个模拟,