SSD写性能改进及寿命的延长.docx
- 文档编号:6753017
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:15
- 大小:624.04KB
SSD写性能改进及寿命的延长.docx
《SSD写性能改进及寿命的延长.docx》由会员分享,可在线阅读,更多相关《SSD写性能改进及寿命的延长.docx(15页珍藏版)》请在冰豆网上搜索。
SSD写性能改进及寿命的延长
摘要
近年来,基于闪存的固态盘在计算机领域中的应用越来越广泛。
相对于传统硬盘,固态盘在性能、能耗、可靠性、尺寸等方面有着明显的优势。
然而,由于闪存芯片自身结构及其存储原理的原因,固态盘存在写性能不足、使用寿命有限等缺陷。
针对固态盘现存的缺陷,本文介绍了一种改善固态盘写性能和一种提升固态盘使用寿命的方法。
关键词:
闪存、固态盘、写性能、使用寿命、改进方案
Abstract
Inrecentyears,NANDFlash-basedSolidStateDisk(SSD)isusedmoreandmorewidelyinthecomputerfield.ComparedwithtraditionalHardDriverDisk(HDD),SSDprovideshigh-performance,low-energyconsumption,high-reliabilityandsoon.However,becauseoftheNANDFlashchiparchitectureanditsstoragemechanism,thewriteperformanceandthelifetimeofSSDneedtobeimproved.Inordertoimprovethedrawback,inthispaperweproposeamethodtoimprovethewriteperformanceofSSDandanothermethodtoextendthelifetimeofSSD.
Keywords:
NANDFlash,SSD,writeperformance,lifetime,improvemethod
1绪论
基于NANDFlash的SSD(NANDFlash-basedSolidStateDisk)是一种基于NANDFlash芯片的新型半导体存储设备。
我们通常所说的SSD绝大部分都是基于NANDFlash的。
由于SSD具有高性能、低功耗、高可靠性等优点,一出现就迅速得到学术界和工业界的接受和重视,并逐渐成为计算机存储系统的重要组成部分。
近年来,SSD已经广泛的应用在银行、金融、航空、军事、通讯等各行各业中,并已经形成了每年全球上百亿的市场。
甚至有人预测说在不远的将来SSD会取代传统的机械硬盘。
由于SSD没有机械移动部分,寻道时间几乎为0,和传统机械硬盘比起来读写延迟大大减少,而且持续写入的速度非常惊人,现在的固态硬盘厂商大多都宣称自家的固态硬盘持续读写速度超过了500MB/s,这相对于机械硬盘的100MB/s的速度的确相当可观的;SSD没有机械马达和风扇,工作时噪音值为0分贝;SSD在工作状态下能耗和发热量较低;而且SSD内部不存在任何机械活动部件,不会发生机械故障,也不怕碰撞、冲击、振动,能广泛应用于军事、车载、工业、医疗、航空等领域;典型的硬盘驱动器只能在5~55℃范围内工作,而大多数SSD可在-10~70℃工作;除此之外,SSD比同容量机械硬盘体积小、重量轻,更方便携带。
然而,SSD同样存在自身的问题和缺陷:
写性能较差,尤其是在处理随机小写数据的时候;使用寿命有限,由于Flash芯片在写入数据之前要先擦除再写入,而Flash芯片的擦除次数是有限的,频繁的擦除操作会大大减少SSD的使用寿命。
为了让SSD能真正实现取代传统硬盘,研究学者们想出了各种各样的办法来改善SSD的写性能以及提升SSD的使用寿命。
在本文接下来的部分里,第2章背景介绍主要介绍Flash芯片的存储原理,第3、4章给出两种改善SSD写性能和使用寿命的方法,第5章给出总结。
2背景介绍
我们在绪论里提到SSD存在的两个主要问题,第一个是写性能较差,尤其是在处理随机小写数据的时候;第二个是SSD使用寿命有限,由于Flash芯片在写入数据之前要先擦除再写入,而Flash芯片的擦除次数是有限的,频繁的擦除操作会大大减少SSD的使用寿命。
然而这两个主要问题的根本原因都和Flash芯片的存储原理有关,因此在分析这两个问题之前我们先介绍Flash芯片的存储原理,然后再根据原理来分析SSD存在问题的原因。
2.1Flash芯片的存储原理
我们知道,数据就是0和1的组合,存储数据其实就是记录0和1。
因此从理论上说,任何有两种稳定状态的材料都可以用于存储数据。
Flash是一种半导体存储设备,存储单元(cell)是浮栅场效应管(FieldEffectTransistor),Flash芯片是根据三极管具有导通与不导通两种状态来分别表示数据0和1的。
由于Flash芯片的存储单元是浮栅场效应管,我们先来看看浮栅场效应管的结构,如图1所示,浮栅场效应管由控制门、浮栅门、半导体二氧化硅绝缘层以及输入端输出端导线等逻辑原件组成;在一般状态下,浮栅可以保存电荷,因此Flash具有非易失性;在一定的外加电压下,可以对浮栅进行充电/放电的过程。
如图2所示,通过改变浮栅两端所加电压的方向,对浮栅进行充电放电,来分别表示写入0和写入1的过程。
这里要值得注意的是,在往某个block里写入数据之前,不管原来的block中是1还是0,新写入的数据是0还是1,必须先Erase整个block为全1,写入1的过程也可以理解为擦除(Erasing)的过程,而在往Flash芯片里写入数据的过程(Programming),实际上就是把原来的1变为0。
图1浮栅场效应管结构图
图2浮栅的充电放电(写数据)过程
2.2SSD存在缺陷的根本原因
通过前面对于Flash芯片的结构以及存储原理的介绍,在往某个block里写入数据之前,不管原来的block中是1还是0,新写入的数据是0还是1,必须先Erase整个block为全1,即“先擦后写”;擦除的最小单位是block(大小一般为256KB~512KB),而读取的最小单位是page(大小一般为2KB~4KB),如图3所示。
图3Flash操作方式示意图
麻烦的是,如果仅仅是需要修改某个block中的某个page,那么此时就需要Erase这个block,然后再写入这个page。
而且,在Erase之前,需要将全部block中的数据读入到SSD自带的RAMBuffer,然后Erase整个block,再将待写入的新page中的数据在RAM中覆盖到block中对应的page,然后将整个更新后的block写入到Flash芯片里。
由此可以看到,SSD在写操作里额外开销很大,而在处理随机小写数据的时候,这种额外开销尤为明显。
随着浮栅门充电放电的次数增多,二氧化硅绝缘层的绝缘能力将遭到损耗,最后逐渐失去绝缘性,无法保证浮栅门中有足够的电荷,此时,这个单元被宣判为损坏,即WearOff。
目前主要有三种类型的单元:
第一种是SingleLevelCell(SLC),每个Cell可以保存一位数据;第二种是MultiLevelCell(MLC),每个Cell可以保存两位数据;第三种是TripleLevelCell(TLC),每个Cell可以保存三位数据,随着每个单元存储的位的增加(即增加存储密度),芯片的成本会越来越低,但是擦写寿命会急剧降低,SLC的擦写次数限制是100000次,由于器件比SLC复杂,MLC的擦写寿命只有不到10000次,而TLC甚至只有数千次。
如果擦写次数太多,很快在SSD预留page耗尽以后,整块SSD就废掉了。
正因为SSD存在着这些致命的缺陷,我们需要想办法来解决,最大程度的改善写性能及提升寿命。
接下来的第3章和第4章分别介绍了2种方法来改善写性能和提升使用寿命。
3一种基于PCM的写改进方法
这种改进方法用到了近年来涌现的一种新型存储器PCM(PhaseChangeMemory,相变存储器),由于PCM和NANDFlash一样是非易失性存储器,而且PCM具有一位可变(PCM的最小可变单位是一位)和就地更新(in-place-update)的特点,PCM在写数据的时候没有像NANDFlash一样的整块擦除的过程,因此PCM的写性能比NANDFlash好很多。
在这种改进方案里,PCM的作用相当于一个写缓存,用于存储热点写数据,而且,在PCM里用到了一种特定的合并机制,使得同步写回到SSD里的时候是连续写;除此之外,在整个写过程开始之前,增加了一个基于Hash密码的冗余写判定过程,避免了冗余写,最大程度的改进SSD的写性能。
3.1PCM基础知识简介
和NANDFlash一样,PCM也是一种非易失性存储器,PCM的存储介质是相变材料(一种基于硫族化合物的合金材料),PCM是利用相变材料在两种状态crystalline(结晶态)和amorphous(非结晶态无定形态,低光学反射性高电阻性)下阻抗相差5个数量级来表示0和1。
只需施加很小的复位电流就可以实现这两种状态的切换。
很小的电流就可以产生很大的热量,使相变材料在很短时间内就可发生相变。
在性能方面,PCM可谓是集合了NANDFlash和DRAM的优点,PCM和Flash、DRAM之间的性能对比如图4所示:
图4PCM、Flash和DRAM性能对比
尽管PCM具有诸多优点,但仍然处于发展阶段,想要完全取代SSD作为主要的非易失性非机械的存储设备还需要一段时间。
因此,在这里我们使用PCM作为SSD的写缓存,用于提升SSD的写性能。
3.2系统方案设计
整个提升SSD写性能的方案的设计步骤及要点包括以下几点:
1.冗余数据的判定:
当有写请求到来的时候,我们首先要判断这个写是不是冗余写(即已经写入到SSD中),如果是,我们就要避免重复写入,以提升SSD的写性能。
2.提升冗余数据的查找及判定速度:
为了提升整个系统方案的性能,当有写请求到来的时候,我们的系统要能迅速分析并判断该写请求是否为冗余写。
3.使用PCM作为Flash页面的更新日志:
利用PCM一位可变和就地更新的特点,我们将热点数据首先写入到PCM里,PCM在这里起的是写缓存的作用。
4.合并PCM日志和Flash中的页面:
当需要数据同步(即将缓存在SSD中的数据写回到SSD页面中)的时候,我们将PCM日志和Flash页面读取到DRAM中,比较以后合并起来,然后连续写回到SSD中。
5.PCM的磨损均衡:
由于PCM的可写次数也是有限的,在我们的设计中同样也考虑了PCM的磨损均衡问题。
整个方案系统的结构和流程图如图5所示。
3.2.1冗余写的判定
为了最大限度的提升SSD的写性能,我们的系统增加了一个冗余写判定的模块,之前我们提到,当有写请求到来的时候,我们首先要迅速判定这个写请求是否为冗余写,如果是,我们就应该取消这次写请求的执行。
在这里,为了加速查询过程缩短查找时间,我们将SHA-1Hash函数用到Flash中的每个页面,每个页面都对应一个独一无二的Hash值,我们称为fingerprint,即我们可以通过比较两个页面的fingerprint来判断两个页面是否相同。
我们将fingerprint和页面地址的对应关系保存在FingerprintStore里,而PCM的读性能要优于SSD,因此FingerprintStore存放在PCM里。
由于Flash中的页面经常更新变化,所以在FingerprintStore里,我们采用的是双向映射。
图5系统结构和流程图
3.2.2缓存热点数据
为了更好的利用PCM就地更新的特点,我们提出了一种缓存管理方法,将热点数据缓存到PCM中。
整个缓存管理的结构如图6所示,Flash中存储数据的地方称为数据区域,PCM中存放更新日志的地方称为日志区域,我们把PCM日志区域划分为多个块(block),每块包含日志扇区的数目和SSD中一个块所包含页面数量相同,我们把PCM日志区域划分为m*n个扇区,n表示块号(P-Block),m表示扇区号。
图6缓存管理结构示意图
访问整个系统的流程如下:
如果是读请求,访问的页地址会被同时提交到Flash中的数据区域和PCM中的日志区域,如果日志区域记录了该页,则将它加载到数据缓冲区,在和原始页比较后建立一个最新的数据页。
如果是写请求,则分为以下几种情况:
1、如果要写入的那个Flash页面指针为空,则直接写入到该Flash页面里,否则便是情况2、3、4。
2、如果F-Block/P-Block映射表上没有找到要写入页面的F-Block块号(FlashBlockNumber),则选择一个PCM块,然后计算出相应的扇区号,在F-Block/P-Block映射表上增加这个表项。
3、如果日志区域记录了这个页面,比较日志记录和当前更新内容,建立一个最新的日志记录。
4、如果F-Block/P-Block映射表上找到了要页面的F-Block块号,但日志区域没有记录,则计算出相应的扇区号,然后更新日志即可。
1)F-Block到P-Block映射表:
F-Block表示SSD里的Flash块号,P-Block表示PCM中存储数据页日志所分配的块号。
这个表分成3列,即大小为n*3,前两列分别为F-Block和P-Block,第三列是P-Block的热度(Popularity,即被访问的频繁度)。
这个映射表同样保存在PCM里。
2)相对地址:
对于就地更新来说,当前更新地址是和现存的日志记录相比较而言的。
我们用相对地址(
)来表示被访问页面内部更新的位置,计算公式如下:
=
-
和
更新和当前访问的页面地址。
3)替换策略:
当需要替换PCM中的P-Block时,我们当然希望保留那些访问更加频繁的块,因此我们引入一个变量因子——块热度(BlockPopularity),对于每个P-block来说,只要一个日志扇区有更新,它的块热度便加1,在需要替换的时候,我们把快热度最少的那一块替换出去,然后块热度清零。
这种替换策略可以保证PCM的磨损均衡。
3.2.3合并技术
如图7所示,当一个P-block被替换出来的时候,其中的日志扇区,和其对应的Flash数据区域一起读取到FlashBuffer里,这两者在进行比较以后,合并成一个最新的数据块,然后写回到Flash里。
这样既使得写回到Flash里的数据是连续的(Flash的连续写性能要优于随机写),又保证了PCM和SSD中的数据一致性。
图7替换后合并及写回示意图
3.3测试结果
在做测试的时候,主要是分两种情况:
Desktop(d1,d2)和Transaction(t1,t2,t3)。
Desktop工作负载主要包括word文档编辑,浏览网页等等,这些应用程序负载里包含了很多随机小读/写操作,d1、d2表示这些工作负载分别运行10小时、20小时。
Transaction工作负载是执行TPC-C工作负载,TPC-C工作负载里有大量的写操作,主要是用来测试PCM作为写缓存对于SSD的写性能提升效率的,t1,t2,t3分别表示工作负载运行30分钟、2小时、4小时。
在进行比较的时候,我们测试了只加载冗余写判定模块、只加载PCM作为写缓存模块以及两者一起的结果来进行比较,比较结果如图8所示。
不管是单独加载哪个模块,对于SSD的写性能都有不小的提升,一起加载对于SSD的写性能的提升更加明显。
图8SSD写性能提升结果比较
(其实这种解决方案对于提升SSD使用寿命也有不错的效果,由于下一章将提出一种专门提升SSD使用寿命的方法,这里就不作赘述)
4一种基于Disk提升使用寿命的方法
和上一种使用新型存储器PCM作为写缓存提升SSD写性能的方案不同,这种提升SSD使用寿命解决方案设计了一种使用Disk作为SSD写缓存的混合存储设备——Griffin。
和常理相反,这里用Disk作为SSD的写缓存的动机主要有两点,一是考虑到Disk的低成本,二是Disk优良的连续写速度(和中等容量的SSD写速度相当)。
Griffin的关键思想也是减少写入SSD的次数,减少对Flash芯片的擦除,从而提升SSD的使用寿命,而且缓存在HDD中的数据在写回到SSD中的时候同样是连续写入。
这种方案用到了基于日志结构的HDD作为SSD的写缓存,在保证原来SSD写性能的前提下提升SSD的使用寿命。
4.1方案设计
Griffin的设计思想很简单明了,就是在不影响SSD读写性能的前提下,通过使用HDD作为SSD的写缓存来减少对SSD的写入,从而延长SSD的使用寿命。
方案的设计主要基于在系统块级追踪测试中观测到的两个现象:
一是大量的过度写(overwrite)操作集中在一小部分块上,这为缓存提供了理论上的依据;二是一旦数据被写入到某一个块设备,它不会立即被读取,这使得我们有时间在读操作到来之前把缓存在HDD中的数据一次性的连续写入到SSD中。
由于作为缓存的HDD只有连续写性能可以和SSD匹敌,而读延迟比SSD要高很多,因此Griffin的一个很重要的任务就是在数据写缓存到HDD后、下一次读操作来之前写回至SSD。
在评判Griffin的性能之前我们首先来介绍两个性能指标:
写节省比例(WriteSaving):
顾名思义,写节省比例就是写入到HDD缓存的数据量占写入SSD数据总量的比例,可以理解为缓存效率。
读惩罚比例(ReadPenalty):
读惩罚比例(由于在HDD中读取数据要慢于在SSD中读取,影响了整体性能,因此把在HDD中读成为惩罚)即需要在HDD中读取的数据量占所有读取数据量的比例。
Griffin的工作流程大致分成两部分,首先是缓存即将写入SSD中的数据至HDD,然后是在下一次读操作到来之前写回至SSD。
因此在设计Griffin的时候我们将会面临两个问题:
1、在缓存的时候是所有要写入SSD的数据全部缓存到HDD中,还是有选择性的缓存?
2、选择什么样的时机,将缓存在HDD中的数据写回至SSD?
图9缓存策略(全部缓存还是选择性缓存)测试结果
首先我们考虑第一个问题,如图9所示,在选择全部缓存的时候,写节约比例最高,尽管读惩罚比例同样也最高,但是这是在没有写回至SSD这一过程的测试结果,换句话说,这是读惩罚比例的上限。
图10定时写回测试结果示意图
再来考虑第二个问题,选择什么样的时机将HDD中的数据写回至SSD。
主要有两种方法供选择:
1、定时写回,即规定一个特定的时间(比如5分钟),以这个时间为周期,写回至SSD。
2、读惩罚比例写回,即当检测到读惩罚比例达到一定值(比如1%)的时候便启动写回操作。
图11读惩罚比例写回测试结果示意图
如图10所示,当定时写回的规定时间增加的时候,写节约比例会相应的增加,但是读惩罚比例同样会增加;而对于图11中的结果来说,尽管读比例阀值提高的时候,写节约比例会增加,读惩罚比例会减少,但是读比例阀值的增加意味着HDD中更多的读操作,会增加整个系统的读延迟,有悖于Griffin设计的初衷。
为了解决这个问题,可以考虑两种方法结合一起,在定时写回的同时,当读比例达到一定值的时候也进行写回操作,这样可以既提高写节约比例,同时降低读惩罚比例。
4.2实验结果
HDD作为写缓存,可以把随机的数据组合成连续的,然后一起写回到SSD里,如图12所示,对于绝大多数跟踪测试程序来说,都可以增加数据的连续性。
连续写可以减少SSD的擦除操作,延长SSD的使用寿命。
图12Griffin对于连续性的增加测试结果
由于准确的测量SSD的使用寿命并不现实,因此在实验的时候,我们通过对比Griffin运行于一般FTL和理想FTL对于擦除次数的减少情况来间接表示对于SSD寿命的提升,测试结果如图13所示,从图13可知,Griffin对于SSD寿命提升效果还是很明显的。
图13Griffin对于寿命提升实验结果示意图
图14使用Griffin与否性能对比结果示意图
最后还剩下一个最重要的结果,就是在使用Griffin以后,整体的性能是否收到了影响。
测试结果如图14所示,不管是使用7200转的HDD还是10000转的HDD作为缓存,Griffin的性能都要好于原始的SSD,而且,7200转HDD的Griffin性能更好。
5全文总结
本文首先介绍了基于NANDFlash的SSD相对于传统硬盘HDD的优越性,但同时指出SSD存在的问题:
写性能有待提高、使用寿命有限,并通过对NANDFlash芯片的结构及存储原理的介绍分析了SSD存在问题的根本原因;然后通过两篇文章介绍了改善SSD存在问题的方案,第一种是利用相变存储器PCM作为写缓存提高SSD的写性能,第二种是使用HDD作为写缓存提升SSD的使用寿命。
随着SSD的应用越来越广泛,改善并解决SSD现存的问题越来越值得研究。
尽管文中提出的两种方法对于改进SSD写性能和提升SSD使用寿命很有帮助,但也有自身的局限性:
当前相变存储器PCM还处于研究阶段,且成本很高;用HDD作为SSD写缓存对于SSD的写性能改进不够明显。
因此,如何设计出更加完美的解决方案,仍然值得研究和探索。
参考文献
[1]SurajPathak,Y.C.Tay,QingsongWei.PowerandEnduranceAwareFlash-PCMMemorySystem.IEEE2011.
[2]GokulSoundararajan,VijayanPrabhakaran,MaheshBalakrishnan,TedWobber.ExtendingSSDLifetimeswithDisk-BasedWriteCaches.Microsoftresearch2010.
[3]S.Boboila,andP.Desnoyers,WriteEnduranceinflashDrives:
Measurementsandanalysis,FAST’10.
[4]V.Mohan,T.Siddiqua,etal.,HowIlearnedstopworryingandloveflashendurance.HotStorage’10.
[5]N.Agrawal,V.Prabhakaran,T.Wobber,etal.DesigntradeoffsforSSDperformance.InProc.ofUSENIX’08,June2008.
[6]A.Gupta,R.Pisolkar,B.Urgaonkar,etal.“LeveragingValueLocalityinOptimizingNANDFlash-basedSSDs”,In:
Proceedingsofthe9thUSENIXConferenceonFileandStorageTechnologies(FAST’11),SanJose,CA,February,2011,289-300.
[7]AnIntroductiontoNANDFlashandHowtoDesignItIntoYourNextProduct.
[8]H.Kim,S.Ahn.BPLRU:
ABufferManagementSchemeforImprovingRandomWritesinFlashStorage.In:
Proceedingsofthe6thUSENIXCon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSD 性能 改进 寿命 延长