决定写这篇文章已经很久了,虽然在日常工作中经常涉及到固态存储,但是很少从用户的角度去考虑如何评估以及测试SSD,这是一个问题。除此以外,消费级固态存储市场的暴利也让一些厂家以次充好,让本应该大幅提升电脑性能的SSD变成了大号U盘,在稳定性上也差一大截,使用一段时间后导致重要数据丢失,实在可恶,这也是想写这篇文章的原因,对于搞硬件和软件的同仁也希望这篇文章能给一点点在技术上的参考。
为了更好的帮助大家理解,这篇文章准备按照下面的几个模块去讲:
1、评估SSD前需要了解一些知识
2、测试工具
3、测试方法
一、评估SSD前需要了解的一些知识
1、CPU、ROM、RAM
学过微机原理的同学们都知道在计算机中最主要的元件有CPU、ROM和RAM这三个,CPU自不用说,ROM我们可以把它理解为存储内存,是在RAM我们可以理解为运行内存,在计算机中三者之间的关系我们用下图来理解:
计算机在工作时,实质上就是一个不断进行计算的过程,我们安装的软件在安装后会安装文件解压缩生成各种数据包,这些数据会保存在ROM中,CPU会通过预取指令对这些数据进行运算,但是CPU本身的预取指令速度是非常快的,而与之相反的是ROM的数据传输速率与CPU预取指令相比差距很大,为了解决这个问题,计算机中增加了RAM(使用的是DDR内存)作为一个缓冲,与ROM相比较,DDR的速率显然快很多。
在计算机工作时,增加的RAM会先将ROM中需要的数据读取出来,再传输给CPU,这样解决速率匹配的问题,然而在市场上主流使用的ROM是HDD硬盘,即使增加了内存RAM,在计算机工作的绝大部分场景下,仍然处于DDR需要等待HDD(机械硬盘)传输数据完成,从而造成开机速度慢或者程序运行卡顿的问题。
可以说,目前计算机对开机速度和软件运行影响最大的瓶颈之一就是ROM的速率问题,这个不是用户增加2G/4G的内存条就可以解决的,中间的缓存再快再大,源头速率慢仍然是徒劳的,而SSD的诞生就是解决这个问题的利器,无他,就是快。
2、固态硬盘的硬件架构
在上图中大概的可以概括出SSD的架构,主要分为:
A、controller
B、RAM
C、flash pkg
D、接口
E、电源等其它组件
controller即SSD的控制器是最核心的部件,控制器负责FTL层(闪存转换层)的地址映射、磨损均衡、ECC校正、坏块管理等重要功能的完成,通常controller都是由FPGA完成的,所以处理速度非常快;
SSD的控制器主要集中在美国、韩国、日本和台湾等厂商手上,但是目前国产的控制器也在不断的发展,下表是目前各大主控供应商【数据来源知乎用户黎小白】:
flash pkg不言而喻用于存储数据,目前主要SSD存储介质就是nand,NAND闪存市场由三星、东芝、美光、海力士和Intel瓜分,下表是当前市场主要的nand供应商。
nand也分为SLC、MLC、TLC,读写速度依次从快至慢,使用寿命依次从长至短,成本依次从高至低,因此这也是区分SSD性能的一个重要因素。
SLC、MLC、TLC的区分原理就是每个每个cell可以代表多少的逻辑bit,如下图所示在每个存储单元的电荷量划分为四等分,代表着11、10、01、00,这就是MLC的意义。TLC顾名思义即代表着3个比特。
随着技术的发展,原先的2D平面工艺已经到了极限,因此工程师们想到了开发出3D工艺,从48层到94层,随着存储容量的变大,3D nand的层数也就越多,更详细的3D nand工艺可以参考下面英特尔关于3D nand的介绍视频(公众号无法插入外链,将链接复制到浏览器可观看)。
https://v.qq.com/x/cover/r0515yvnwf7/r0515yvnwf7.html?
SSD另外一个重要的需要关注的是硬盘的接口,在SSD中接口类型有点多,如下面的图示意,不同规格的硬盘会使用不同的接口,简直让人眼花缭乱。
下面我们把所有的固态硬盘接口列表如下,可以参考,需要进一步了解固态硬盘接口的可以参考以下文章(将链接复制到浏览器中可阅读)
https://zhuanlan.zhihu.com/p/107957006
3、我们需要测试SSD的哪些性能?
一般来说需要准确的去评估固态存储,需要测试的数据有如下几个方面:
我们可以测试出来的数据只能是一些读写数据、坏块率以及存取或者访问时间,从这几个维度去进行测试。
从存储工程师的角度来说,除了用户体验的性能数据,老化burn in测试、健壮性以及功耗更是需要工程师所关注的。
二、测试工具
对SSD或者说固态存储的主要分为两种:读写速率测试(顺序、随机、单队列深度、多队列深度、混合读写)和老化、健壮性测试,老化测试、健壮性(如通过反复掉电测试固件稳定性)的条件对用户来说很难具备,而且往往厂家出货时才会进行测试,所以我们的重点是在读写速率测试上。
目前进行读写速率以及其它SSD关键性能测试主要使用的工具有下面几种:
1、HDtune pro
HD Tune pro是一款常用的硬盘工具软件,其主要的功能有硬盘传输速率检测、健康状态检测、温度检测,此外还能检测出硬盘的固件版本、序列号、容量、缓存大小等信息。
HD tune也能够对坏块率进行测试:
2、H2TESTW工具进行数据校验
-
SSD的存储介质是flash,在消费级绝大部分都是MLC(TLC一般作为buffer使用),会存在一些存储数据错误,比如电荷阈值偏移、读写干扰等原因,各种各样的因素导致SSD的flash中存储一些ECC无法纠正的坏块;
-
上述的坏块会导致读写错误,H2testw的测试目的就在于测试对这些坏块进行校验;
-
H2testw会向选择的目录内写入自行产生的单个最大的1G的文件然后再将这些数据读出,通过这种方式来确定坏块;
-
该测试不会损坏原有数据,不过如果要测试的数据有代表性的话,建议将SSD全盘格式掉以后再进行测试;
下图为使用H2TESTw进行数据写入和读取校验的结果,其实该测试也是我们去评估存储设备数据传输稳定性的一个很好的工具。
3、AS SSD Benchmark Test
主要的测试项目有如下:
-
连续读写,AS SSD会以16M的尺寸为单位,持续向受测分区写入生成一个达到1GB大小的文件,然后再将这些数据以同样的方式读取出来,最后计算平均成绩而给出结果,测试完毕后,测试文件会立即删除;
-
4K随机单队列深度测试,测试软件会生成1个1GB大小的测试文件,然后使用4KB的单位尺寸在这1GB文件的LBA范围内进行写入和读出操作,跑完所有测试范围后计算平均结果,测试文件会暂时保留;
-
随机64队列深度测试,测试软件生成64个16M大小的测试文件,然后对这64个文件进行随机写入和读取操作,计算测试平均值;
-
访问时间:记录的是测试软件在进行写入的平均时间
4、ATTO磁盘基准测试
-
ATTO磁盘基准测试软件也是用来测试固态存储的一个读取速率的一个工具,但是与前面的相比较也是有差异的;
-
ATTO在测速的时候使用了不同的数据包,数据包按照0.5K、1.0K、2K直到8192K的大小分别进行读写测试,测试完成后数据会使用柱状图的形式表现出来;
-
通过上述的测试方法,可以很好的说明了文件大小比例不同对存储设备速度的影响;
5、Crystal Disk Mark
Crystal disk mark也是一款常用的SSD测速工具,与上述的差异点在于增加了512KB的随机读写测试和32队列深度的4KB读写测试,不过这些读写性能测试的测试数据可以相会对照和参考。
总结:
上述大概讲解了固态存储设备需要了解的一些知识,SSD的硬件架构、在评估固态存储时需要考虑的一些因素、在原理上为什么SSD对用户体验的提升如此明显、以及使用哪些工具对SSD进行测试等问题。
为了方便各位小伙伴交流学习和继续研究我们整理了如下资料,相关问题可在交流群探讨。
在公众号后台发送消息: SSD测试 即可获取相关资料。