很多人都习惯将SSD(固态硬盘)产品与我们常用的温彻斯特硬盘(HDD)拿来做个比较,于是原来很多用在温彻斯特硬盘上的东西照搬过来套在SSD头上。不知你想过没有,这么做真的合理吗?其实二者的共同之处仅在于都是存储资料的存储器,二者从设计初衷、结构、性能表现等都具有极大的差别。今天我们就带领大家一起去了解SSD产品所不为人知的另一面。
定位与客户需求决定了产品的设计与特性,与成熟的HDD产品不同,SSD产品在目前看来格局尚未形成,每家产品都自成风格;或者说因为诉求目标的不同,每家生产商的产品表现迥异。有兴趣的读者可以参考我刊去年12月下的《岁末鏖战,谁是SSD之王?SSD横向评测》一文。
SSD产品的核心在于Flash管理以及数据安排方式,而这一切都需要由主控芯片(控制IC)来进行协调和控制的。由于SSD属于新兴产业,所以业界标准也不像HDD那样统一,各种控制方案以及芯片纷至沓来,以期望在市场的起飞期圈定自己的地盘。这也造成了目前SSD市场上的一种混乱局面,各种方案之间在寿命、连续读写速度、IOPS指数乃至于数据安全方面存在着巨大差异。
现阶段的SSD市场群雄并起,各厂商之间的产品差异非常明显
由于媒体长时间的报道,以及对MLC颗粒与SLC颗粒在读写次数限制的渲染,使得很多用户对现在众多使用MLC颗粒SSD产品的寿命问题非常关注;再加上很多人对这个问题并不是非常了解,所以市场上的观望情绪非常浓重。
实际上在不同的应用领域,如Windows日常应用、服务器应用又或者其它专业用途,就算是同一款SSD产品也会有不同的寿命表现。一般来说,读写操作的比率(操作频率)、写入数据块的大小、写入数据的相关性乃至于SSD产品的容量等都会对寿命产生影响。
在日常使用中,我们对硬盘的访问总是读写操作掺杂在一起的,不同的应用需求所产生的读写比例也是不一样的。例如VoD点播系统,Web Server(网络服务器)、Search Engine(搜索引擎)这一类的应用,读数据的操作占了绝大多数,写操作非常少。而对于另外一些在线服务器、数据服务器、文件服务器以及邮件服务器等,其读写比例比较固定,大约是3∶1,即写入操作占到总IO比重的25%。对于视频监控、备份服务器、Log(日志)服务器以及数据采集系统等,它们的写操作占了绝大多数,读取只在少数时间发生。
具体到个人计算机、通用服务器之类的用途,读写比例都是视情况而定,这与用户的使用习惯关系非常密切。一般的统计结果,个人用户对硬盘的读写操作比例大约是3∶1~5∶1之间。而且在可能的情况下,尽量优化写入策略,合并一些不必要的写入操作对延长SSD寿命有着重要作用。
无论是SSD还是HDD,在进行文件管理时并不是直接由操作系统管理每一个数据存储位置;而是控制IC将若干个空间看成一个数据簇,对于操作系统来说小的数据单位就是一个簇。以我们常用的HDD为例,在NTFS文件分区模式下,一个数据簇的大小为4KB或者8KB。也就是说,哪怕一个文件只含有1个字节它也要占用4KB的存储空间;且这种数据管理方式具有唯一性,一旦某个数据簇被使用,其它文件就无权再调用该数据簇。对于HDD来说,因为每个磁碟面只有一个读写磁头,即便这种簇管理方式会浪费一些空间,也不会造成太大的影响,况且每个簇也不会有读写次数的限制。
多通道技术实际上是在不同的颗粒之间展开的,我们可以形象地将其理解为一种“RAID 0”技术
对于SSD产品来说,情况就不一样了,因为NAND Flash的管理方式是按照“页(Page)”和“块(Block)”来管理的。每个Page的数据实际上就是一个数据簇,一般4KB或者8KB,这样在存储大量小文件时会造成比较严重的浪费;而且多通道数据技术大大增加了这种浪费的几率。例如对于一个16KB大小的文件来说,正常情况下只需要占用4个4KB的数据块即可:但在引入了8通道数据存储技术之后,控制IC会将文件分成8份进行存储,也就是占用8个Page。这种情况不仅会造成一定的浪费,而且进一步加剧了数据块的写入频率,对于SSD产品的寿命来说是非常不利的。
NAND型Flash颗粒的基本存储单元叫做Cell,如下图所示。通过在栅极的绝缘层中注入或者释放电子来达到存储数据的目的。所以NAND Flash的操作分为三种,注入电子叫做“Erase”、释放电子叫做“Program”、读取电子叫做“Read”。
由于Cell的充电和放电都需要借助高压来完成,所以会对Gate Oxide(栅极)造成损耗,因此
NAND FLASH是有Program/Erase的周期数限制的,对于SLC颗粒这个次数为8~10万次,MLC颗粒为2~3万次。
Program操作只能将电子释放,即写入0;写入0之后就不能再通过Program写入1,写入1只能通过Erase来实现。
让操作系统每次寻址精确到一个Cell将会带来复杂的地址线,让大容量变得遥不可及;所以工程师们使用了一种“串串烧”的方式将若干个Cell串接起来,一个串称为一个“Page(页面)”,然后将多个Page做成一个集合用一个栅极进行充电,则成为“Block(块)”。当前多数NAND Flash结构多为4KB组成一个Page,而64或者128个Page组成一个Block。Page是读取和写入的基本单位,而Block则是Erase操作的小单位。
NAND Flash中的页面组织方式
由于NAND FLASH的结构组织中,Block的size比较大(256KB或者512KB),而Block又是
Erase的基本单位,所以要对Block内的任何数据进行改写,必须先将不需要改写的旧数据读出,对整个Block进行擦除,然后再将新旧组合的数据写入。
数据的相关性是指系统对SSD多次访问的关系,具体表现就是多次访问地址的范围大小。这是属于操作系统一级的操作,在多数PC用户的应用环境中,系统的数据访问相关度是非常高的,很多操作的地址前后是连续的,或者说集中在一定范围内;而在多用户的Server应用中,数据的相关度则比较低,因为各个用户之间的相关性本身就比较低,导致其需要的范围也没有太大的相关性。对于相关性较高的多次数据请求,可以由SSD的控制IC合并成一个请求,从而减少Erase操作次数、延长SSD的寿命。
这是NAND存储颗粒特有的一个属性。因为在NAND Flash中,数据的存放是以Page和Block来组织的,所以如果系统的数据访问能够对齐到Page或者Block,就能够大大减少写入操作跨Page、跨Channel(数据通道)、跨Block的情况出现,也会减少Flash的P/E延迟,延长整个SSD的寿命,并且在一定程度上能够提高写入性能。
每种应用方式都有对SSD的访问强度,例如有些应用场合需要24(小时)×7(天)不间断工作,而且几乎每秒钟都在进行数据读写操作(服务器应用);而另外一些场合则只需要进行8×5的应用,且工作时间对SSD的访问频率很低。对于这两种截然不同的应用场合和需求,SSD产品所表现出的寿命长短肯定会存在巨大差异。
可能有些朋友会觉得这个理由比较牵强,容量越大的SSD产品使用寿命也会越长吗?答案是肯定的,因为从理论上来说,SSD容量越大,其能够承受的总的写入请求数就越大;从Flash磨损和坏块管理机制的角度来看SSD的寿命基本上跟容量成正比。虽然在实际应用中我们不可能等到“海枯石烂”的时候再想起换硬盘,但是容量越大的硬盘,其在硬度磨损时的余量也越大。
在了解了这些影响SSD产品寿命的因素之后,我们就可以对SSD产品的寿命进行一个简单的估算。一个典型的笔记本电脑用户,每天开机10小时、每周开机6天,应用Windows XP操作系统,其SSD访问平均强度为100 IOPS,所有I/O比例为3∶1,访问数据块的大中小比例为3∶4∶3,自适应通道中分别对应4∶2∶1个块操作,Cache命中率为70%。
64GB的MLC SSD一共有64GB÷512KB/Block=128K Block;每个Block中的读写次数极限3万次,则整个SSD所能够承受的极限总数为:128K Block×3万次=3.84 Billion亿次;
用户一周内总的写入I/O次数:100×10小时×3600秒×6天×0.25(读写比率)=5.4M 次;
扣除缓存命中等因素影响后,每周实际写入次数:5.4M×(1-0.7)=1.62M次;
考虑数据块以及文件大小的影响后:1.62M×(4×0.3+2×0.4+1×0.3)=3.726M次;
一年52周,则每年写入次数为:52×3.726=194.3M次;
预计SSD寿命全部耗尽时,共需:3.84 B次÷194.3M次=19.7年。
(以上数据来源于固捷数据的技术资料,不代表本刊观点,仅供参考)
连续读写速度的提升是SSD产品带给大家的第一印象,很多SSD产品的读写速度都超过了100MB/s的关口,这主要得益于控制IC对NAND颗粒的管理方式。关于这方面的内容我们在以前已经做过详细介绍,这里就不再赘述了。其实在连续读写速度提高的背后,是IOPS参数指标的大幅飙升。
现在的SSD产品IOPS参数指标动辄都是传统HDD硬盘的几十倍
如果说SSD产品的速度取决于控制IC对颗粒的组织形式(RAID数量),那么IOPS则与控制IC的数据通道数量有着直接关系。比如在本刊以前的测试中,Intel X25-M 80GB SSD硬盘在IOPS测试中,成绩将其它竞争对手远远抛在了后面,其原因就在于这款产品配备了动态自适应10通道技术,也就是说在必要的时候,可以通过十个通道执行10个不同的I/O操作。这要比其它4通道、8通道设计的产品更为优秀。
IOPS是“每秒钟输入输出能力”的英文缩写——Input/Output Per Second,这是一个考察存储器对外界指令响应速度的重要参数。IOPS越高,则意味着硬盘(或其它设备)对指令可以做出快速反应。通常来说服务器应用非常在意IOPS能力,而一般的PC用户对IOPS的要求要弱一些。
在前文中我们已经提到过,使用多通道技术之后虽然可以明显提高数据的处理速度,但是同样会带来一定的存储空间浪费。对于某些体积较小的文件没有必要全部使用多通道存储技术,在这个前提下,众多厂商都开发了动态自适应多通道技术。根据实际负载需要动态调整数据通道的使用情况,既可以杜绝浪费,也可以明显提高数据处理的速度。需要指出的一点是,随着越来越多的厂商开始跟进8通道、10通道(甚至更多通道)技术,动态自适应技术正在变得不可或缺。
很多人会问,IOPS提高之后,会对日常操作带来多大的帮助呢?回答这个问题的前提是先要有确定的使用环境,因为不同的使用环境会得到截然不同的结果。在普通PC上应用时,IOPS要求本身较低,多数情况下使用HDD产品就可以满足要求;即便是对硬盘读写要求较高的BT、电驴等点对点下载工具,对硬盘读写的要求也不会超过100 IOPS。对用户来讲,IOPS的提升反倒不如增加连续读写速度来得直接。用户不要指望IOPS提高一倍之后,能够将原来需要30秒启动的Windows在15秒内就启动完毕。
而在密集型应用中,例如多用户服务器应用环境中,SSD产品高IOPS的特性就会被发挥得淋漓尽致,每个用户的读写需求都可以尽快得到响应,减少用户的等待时间。
作为存储器来讲,用户会非常在意存储数据的安全问题。在前面我们已经详细介绍了SSD硬盘的使用寿命,除此之外,与数据安全相关的重要指标还有抗震能力与断电保护,但大家在认识SSD产品时仍存在不小的误区。
由于用户从HDD时代带来的思维惯性,很多人不自然地将“抗震指标”也作为SSD产品的重要参数,其实这种表述方式是不恰当的。因为作为全电子器件的SSD产品,其抗震能力和参数指标与主板、显卡等电子元器件是完全一致的,为什么没有人会考察主板的“抗震指数”呢?
随着多通道数据存储技术的发展以及SSD容量的增加,缓存的作用也在被逐步加强
应该说传统硬盘,尤其是笔记本电脑使用的2.5英寸硬盘在功耗控制方面已经非常出色了,多数硬盘的功耗能够控制在3W以下。而反观SSD产品,虽然全电子元器件的设计没有机械结构,但控制芯片以及缓存的功耗很难进一步下降,所以到目前为止SSD硬盘的功耗也多集中在2.5W~4W之间。相对与整台笔记本电脑来说,这点功耗上的差异在日常使用中是完全可以忽略不计的。盲目相信SSD更省电的念头也是不足取的。
固捷的工程师专门为控制IC设计了电容,当发生意外断电时,电容可以继续给控制IC提供6秒左右的电力,直到数据全部写入NAND Flash。
虽然经历了2008年的大肆铺垫,但普通用户对SSD的了解依然比较有限,难免存在这样或者那样的误区。而在今年年初,业内人士纷纷表示SSD产品将在今年下半年进入一个“放量”的阶段,随着价格的走低,相信会有越来越多的朋友在今年内与SSD产品来一次亲密接触。而在此之前,深入了解SSD产品的特性是大家共同的愿望,请继续关注MC,近期内我们会给大家带来更多这方面的报道。
二楼的,性能过剩?现在硬盘的速度远远低于内存的速度,已经成为整机性能的瓶颈,当硬盘的速度和内存接近的时候再说硬盘性能过剩还不迟