SSD固态硬盘技术扫盲
SSD固态硬盘是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的存储设备,目前支持SATA、FC、SAS接口,可以替代普通的机械硬盘。
什么是SSD
SSD即固态硬盘(Solid State Disk或Solid State Drive),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的存储设备,目前支持SATA、FC、SAS接口,可以替代普通的机械硬盘。
SSD盘根据容量、可靠性和性能的要求分为SLC SSD和MLC SSD,SLC主要应用于服务器、工作站、存储等高可行性环境中,MLC主要应用于桌面PC可靠性要求不高的环境中。
SSD盘和传统的机械硬盘的内部构造图对比如下:
1.SSD盘内部构造图
相比传统的机械硬盘,SSD硬盘拥有如下优点:1、数据存取速度快。因为全部采用了闪存芯片,所以SSD固态存储器内部不存在任何机械部件,SSD在密集的IO读写和低延迟方面与传统硬盘对比性能优异。2、故障率低。防震抗摔是SSD的一个特点之一,因为全部采用了闪存芯片,所以SSD固态存储器内部不存在任何机械部件,这样即使在高速移动甚至伴随翻转倾斜的情况下也不会影响到正常使用,而且在笔记本电脑发生意外掉落或与硬物碰撞时能够将数据丢失的可能性降到最小。3、绿色环保。固态存储器工作时静音(固态存储器因为没有机械马达和风扇,工作时噪音值为0分贝)、发热量小、散热快。4、重量更轻。固态存储器在重量方面更轻,有利于移动设备的携带。
在目前HDD机械硬盘容量每年增速较慢,读写速度10年来基本上没有增加,而处理器的速度已经是按莫尔定律成倍的增加,HDD硬盘存储介质已经成为计算系统的瓶颈,而SSD随着半导体工业的发展,Flash集成度愈来愈高,成本不断下降,在采用多通道并行等技术下,SSD盘以其读写速度快、绿色省电和无机械部件可靠性高,在高端服务器、存储和便携机中愈来愈广泛使用。
2.SSD的分类
SSD主流的产品目前有SLC和MLC两种,两种产品的主要差别在于擦写次数和性能。SLC全称单层式储存(Single Level Cell),是指一个Block(块,Flash的基本存储单元,也可称为Cell)只有两种电荷值,高低不同的电荷值表明0或者1,因为只需要一组高低电压就可以区分出0或者1信号,所以SLC最大的驱动电压可以做到很低,传统的双电压卡或者低电压版本卡片肯定采用SLC类型的NAND Flash芯片。SLC因为结构简单,在写入数据时电压变化的区间小,所以寿命较长,传统的SLC Flash可以经受10万次的读写,因此出现坏Block的几率较小,因为存储结构非常简单,一组电压即可驱动,所以其速度表现更好,目前所有的超高速卡都采用SLC类型的Flash芯片。MLC(多层式储存—Multi Leveled Cell)是种充分利用Block的技术,它采用较高的电压驱动,通过不同级别的电压在一个Block中记录两组位信息(00、01、11、10),这样就可以将原本SLC的记录密度理论提升一倍。不过MLC除了同制程、同晶圆面积时理论大一倍的记录空间外,存在一些先天的弊端,比如说电压区间更小,Flash就需要更多的CRC校验空间,这会大概占据Block中10%的空间,因此实际使用中同制程同晶圆面积的MLC的容量不到SLC的一倍。
因为电压变化更频繁,所以MLC技术的Flash在寿命方面远劣于SLC,官方给出的可擦写次数仅为1万次,这是MLC最要命的一个缺点。MLC技术的Flash还有一个缺点,它的读写速度先天不如SLC,一个Block存储两组位数据,自然需要更长的时间,这里面还有电压控制、CRC写入方式等因素需要考虑。
3. SSD技术解析
NAND FLASH 损耗均衡算法(Wear Leveling)因为闪存的写操作的次数是有限制的,如果针对某些单元进行过10万次写操作,那么后续这些单元的写入可靠性则无法保证,有些单元则可能会失效,例如有些管理数据系统日志等改写频繁,而某些静态文件数据却几乎从不改写.如不加控制,部分块就会因反复多次擦除而提前损坏,而部分块还未被改写过,以至影响SSD盘的使用寿命,为解决此问题,使用写操作均匀分布到各闪存单元上,从整体上做一个平衡,以避免个别单元失效,损耗均衡算法(Wear Leveling)就是为解决此问题而广泛采用的算法。
Wear Leveling就是提供一个块映射机制, 把写入损耗分散在不同的块上, 不会导致某些块先被写坏而使整个SSD盘失效,而是把在预期寿命前失效的块, 会有一些保留块来替代, 这个算法使得整个设备的寿命跟Flash的最大寿命在同一量级。
一般为实现损耗均衡算法(Wear Leveling)会采用一种基于页的文件存储算法,闪存物理地址和逻辑地址之间并没有一一对应的关系。当固态硬盘收到数据写入请求时,并不会循规蹈矩的按顺序进行写入,而是找到最少写入的单元写入。因而,在为写入数据动态分配物理块时,会根据各块的使用情况不同分配相应的优先级,从而均衡整个存储器各单元的使用寿命。SSD多通道并发技术 由于目前Nand Flash的数据总线为8bit,最大能提供25MB/s的读速度和3MB/s的写速度,显然SSD如果提供此速度是用户无法接受的,目前SSD控制器普遍采用多个通道同时并行操作多片Flash,类似RAID0,这样读写速度得到了极大地提高,如下图所示:
纠错管理与映射机制 SSD控制器会监测和校验读写Flash的数据,以确保对数据操作的成功,并内置纠错冗余数据,防止基于闪存设备的个别单元数据丢失造成整个数据块丢失。SSD的映射机制一般采用基于页的文件存储算法,闪存物理地址和逻辑地址之间并没有一一对应的关系。当固态硬盘收到数据写入请求时,并不会循规蹈矩的按顺序进行写入,而是找到最方便写入最快的位置进行写入,以提高写入速度。
通常检测工作通过片上状态寄存器和特定的硬件部件来校验写操作和擦除操作是否成功,校验工作通过回读写入数据与用户数据进行比较来完成。当写操作失败时,系统并不将错误简单的反馈给用户,而是通过块重映射机制,另外分配一个空闲块重新执行写操作,由于SSD在设计的时候,已经预留了一部分Flash用于临时存储数据和坏块替换使用,再加上Flash芯片对擦写次数有限制,读没有次数限制,这样即使某些块被写坏了,也不会影响到整个SSD的使用寿命。因此,SSD通过自动校验来预防错误发生,个别单元读错误可以通过纠错来恢复数据,确保数据的完整性,逻辑地址与物理地址的映射机制,解决了写物理区块错误问题,同时在损耗均衡算法中也需要逻辑地址与物理地址的映射机制来实现。
4. SSD应用环境
SSD盘相对于普通机械硬盘的特点是顺序和随机读取数据性能一样,且响应时间小于1毫秒,无机械部件,可靠性高。通过仔细研究分析测试多个厂家的SSD盘后,H3C为与万兆存储配合使用和发挥最好的性能,选用了高可靠性和高性能的SLC SSD盘,每个盘读性能能达到250MB/s,每个磁盘的写性能能达到170MB/s,在4 KB块读的情况下,每个盘可以达到35KIOPS, 在4 KB块写的情况下,每个盘可以达到3.3KIOPS。SSD盘性能和可靠性都很高,但价格相对也较高,而且容量偏小。这就决定了SSD比较适合随机读比例较高,响应时间有较高要求的应用场合,主要包括如下:
数据库环境。数据库的数据盘一般是小数据块的随机读写,响应时间要求较高,容量在2TB以下的占绝大多数,采用SSD盘组成的RAID5既可以提供很高的IOPS又最大限度地利用其容量。
高性能集群系统的共享数据盘。在集群系统中需要共享大量数据,且数据需要被各节点频繁访问,要求响应速度快,在此系统中通过采用SSD盘后,可以极大地减少各节点的访问共享盘的待定时间,提高其性能。
关于NAND闪存损耗均衡算法的优化
现在越来越多的笔记本电脑、智能手机、固态硬盘等新型电子设备开始装备NAND闪存,凭借特有的存储方式和超高的稳定性、可靠性,NAND闪存得到越来越多厂商的青睐.配备NAND闪存的固态硬盘也凭借诸多优势逐渐取代传统机械硬盘[1].
采用NAND闪存作为存储装置的固态硬盘没有采用像机械硬盘那样的复杂精密结构,读取数据不需要寻道时间,并且也有独特的写入方式,所以能够获得比较快的读取和写入速度.并且由于NAND闪存体积小,接口应用广泛,适应各种结构形式,所以可以被手机、笔记本电脑等精密设备采用[2].然而NAND闪存存储器使用电子管来存储,重复写入擦除数据极易导致损坏,其物理块仅能承受几千次的擦写操作.要想广泛的应用NAND闪存就需要采用合适的平均每个物理块磨损的机制,也就是损耗均衡机制,以此才能延长闪存的使用寿命.
在1994年,PCMCIA(个人计算机内存卡国际协会)提出了Flash转换层(FTL)的概念,FAT文件系统用于NAND Flash时,是由控制器通过管理NAND Flash建立一个逻辑的FAT文件系统,供上层应用调用,同时它也可以高效的执行损耗均衡[3].实现闪存损耗均衡的算法按照类型分为:动态损耗均衡和静态损耗均衡[4].Ban等[3]针对静态均衡算法的触发机制进行了研究,并提出两种触发机制:确定性触发机制和随机性触发机制.Yared Hailu Gudeta等[5]提出了基于概率的静态损耗平均算法.在每个状态下,磨损平均分布使用标准偏差来计算,以确定其是否超过阈.如果它超过阈值,则在所有块中维持损耗平衡通过将热块与冷块交换在闪存中.Lee等[6]在静态损耗均衡算法上进行了研究,该算法会在系统初始化时将闪存存储空间划分成若干组,从开始第一次更新之后就记录每一个组的擦写次数.到达损耗均衡的触发条件时统计高于平均擦写次数的组及组内的物理块,然后将这些块的数据搬运至空块,再更新地址映像表.
邢春波[7]提出一种混合损耗均衡算法(HWL),该法也是在系统初始化时将闪存空间分块,每块的擦写次数由单独分配的一个字节的存储空间记录擦写情况,并采用一个数组来维护所有的块的擦写情况.该算法统计每一个系统更新周期内的各块擦写情况, HWL算法是目前应用最广发的算法之一,本文也是建立在该算法的基础上进行改进而来.
本文根据闪存的物理块在使用过程中擦写的次数,对闪存数据块进行分类并给出相应的判断标准,同时引入与损耗均衡算法密切相关的阀值的概念;针对损耗均衡算法不能随着存储需求作调整的缺陷,给出根据数据块擦写次数的标准差动态调整阀值的算法;结合传统的动态损耗均衡算法和静态损耗均衡算法,给出损耗均衡算法的评价标准,将静态损耗均衡算法和动态损耗均衡算法两者结合设计出新的均衡损耗算法;根据需求设计了评估损耗均衡算法效果的测试实验,对损耗均衡算法的效果进行了实验测试.实验结果表明本文提出的改进算法对减小闪存存储器擦写的不均衡性有很好的效果.
1 NAND闪存损耗均衡机制及策略
1.1 NAND闪存的工作原理
NAND是一种计算机闪存设备.随着人们持续不断追求功耗更低、重量更轻和性能更佳的产品,这证明了NAND极具吸引力.闪存存储器按照存储单元的存储控制方式可分为单层单元SLC和多层单元MLC控制方式.单层单元SLC控制方式是依靠MOS管叠栅上不同的电荷量来区分0与1两种状态,多个MOS管组成叠栅成为一个存储单元.相对应的多层单元MLC控制方式由单层单元SLC控制方式改进而来,它的一个叠栅可以识别四种存储状态:00、01、10、11.但同时由于该种MOS管需要去识别多种电荷量,然而这会造成物理性能不稳定,导致这种闪存的寿命较少.正是因为这种问题,损耗均衡机制的重要性被进一步提高,为了保证多层单元MLC控制方式闪存的使用寿命,必须在文件系统中使用损耗均衡和机制.
1.2 损耗均衡评价指标
损耗均衡(wear leveling)[8]是指用来延长固态存储设备使用寿命的过程.闪存损耗均衡技术的设计目标是:在尽可能减少闪存中所有块的总擦除次数的前提下,尽可能使闪存中的每个块擦除次数趋向一致或在一定范围内.根据统计学的知识我们可以知道平均值描述了一个样本的平均水平,标准差能反映一个数据集的离散程度.根据这个设计目标提出衡量闪存损耗均衡度的两个指标:平均擦除次数擦除次数标准偏差Deviation,简写为Dev.
公式(1)、(2)中E(i)表示第i块的擦除次数,n为闪存的总块数.
综合以上因素可以知道,一个较好的闪存系统损耗均衡策略可以使热数据和冷数据的迁移次数尽可能多,同时总的物理块擦除次数的平均值越小,这样闪存的使用寿命大大延长.另外物理块的擦除次数的标准差越小,表明每一个物理块的擦出次数偏离平均擦除次数较少,损耗均衡机制的执行效果较好.相反,损耗均衡机制的执行效果较差.
1.3 损耗均衡策略
1)动态损耗均衡策略
动态损耗均衡算法[9]主要原理是:先将所有的闪存物理块链接到一个动态维护的表格,在表格中将各物理块的擦除次数从大到小进行排序.当数据更新时,要求数据写入到表格最后的物理块,也就是擦除次数最小的物理块,然后再按照擦写次数进行排序.按照这样的方法数据永远都是写入到擦除次数最小的物理块,使得闪存的各块均得到同样的磨损状况.
2)静态损耗均衡策略
静态损耗均衡算法在动态损耗均衡算法的基础上改进而来,考虑到动态损耗均衡算法中一直优先将数据写入到擦出次数较少的物理块中,原先储备的更新较少的冷数据就会一直占据该物理块,得不到释放.所以静态损耗均衡算法考虑了冷数据的搬运,使得整个闪存存储空间都在不断的进行均衡磨损.静态损耗均衡算法将焦点放在冷数据上,预先设置擦写次数的阀值,采用遍历各块的方法统计得出更新频率低于阀值的方法,筛选出冷数据块,然后将数据搬迁至擦出次数较多的物理块中.用同样的方法筛选出热数据块,将热数据块搬迁至擦除次数较少的物理块中.通过这种方法,闪存中的各物理块的擦除次数比较均衡,并且随着静态均衡机制的不断触发,热数据块的擦出次数增长十分缓慢,冷数据块的擦出次数有一定的提高,从而是十分有效的损耗均衡算法.
2 静态均衡算法设计
本文的静态损耗均衡算法是将现有的动态均衡算法与静态算法相结合,设计出一种更加完善的算法流程.静态损耗均衡算法的设计基本原理在前文介绍过,为此定义擦除次数最多为Nmax,擦除次数最少为Nmin,两者差值为Th,则需要研究的问题[10]的表述为:
这里式(4)中的Th就是本文所研究的静态损耗均衡算法的核心,即要选择恰当的阀值Th,使得物理块的擦除次数上下限相差不会太大.同时又要满足尽可能小的平均值和标准差.
2.1 触发条件的优化
确定性触发的难点在于难以找到合适的系统更新次数,随机性触发只是用于系统更新频率较高的情况[11].
为此本文设计了一种可以动态选择触发机制的算法,将确定性触发和随机性触发相结合,该算法会统计系统的更新频率.如果更新频率较高则选择随机触发条件,如果更新频率较低则选择确定性触发条件.参考损耗均衡机制的评价标准,选择系统更新次数的均值当做判别条件.流程图如图1所示.
图1 优化的触发条件流程图
Fig.1 Flow chart of optimal trigger condition
2.2 阀值确定数据块的状态
数据块的磨损状态由该块的擦写次数在数据擦写中所占的比例决定,即
式中wi表示该块的磨损程度,ei表示该块在本次系统更新中的擦写次数,a0是本次系统更新总的擦写次数.
在磨损均衡过程中维护了一个磨损信息表,表中为每个物理块分配一个字节的空间记录磨损状态wi.如果wi达到阀值whigh就将该块定义为热数据块,同理低于阀值wlow就将该块定义为冷数据块.
2.3 算法流程
由以上结论可知,要想解决损耗均衡的问题,就必须在尽可能小的影响性能的条件下使擦写任务均匀的分布在每个数据块[12].本文在解决这个问题时候,通过对以往动态和静态算法的研究下,就此设计了动态静态算法相结合的NAND FLASH闪存损耗均衡的算法.
一个完整的静态损耗均衡流程为:在系统更新操作每过一定的擦写次数n时启动静态损耗均衡机制,首先遍历所有参与擦写的数据块,计算得出数据块的磨损状态.按照磨损状态从低到高排序,达到阀值whigh就将该块定义为热数据块,低于阀值wlow就定义为冷数据块.然后将热数据块中的有效数据搬迁至新的空块或者磨损状态wi最低块,将冷数据块搬迁到原先的最热数据块,重排后依次进行,将搬迁后的数据块重新链接到文件系统.本次损耗均衡结束后计算没有超出阀值的数据块的擦除次数标准偏差,如果过高则标记超出平均擦除次数一定值的块为热数据块,并参与下一次系统更新.这样热数据块就会不断被搬迁新的物理块,不会只在部分块内擦写,有效降低了闪存数据块的磨损.算法流程如图2,图3所示.
图2 完整的均衡损耗流程图一
Fig.2 Complete balanced loss flow diagramⅠ
图3 完整的均衡损耗流程图二
Fig.3 Complete balanced loss flow diagramⅡ
3 仿真测试
3.1 实验平台搭建
为了测试本文设计的损耗均衡算法的效果,借助SSD Sim搭建测试平台.它可以在普通的计算机平台上模拟NAND闪存的存储状况,用户可以在SSD Sim软件中设置存储容量、存储信道、闪存块大小等参数,根据用户需求可以在没有闪存硬件的支持下模拟NAND闪存的使用情况.
为了直观的对比损耗均衡算法的效果,本文设计了两个NAND闪存,每个闪存分配4个闪存芯片,它们之间以并行方式连接,其中闪存1采用传统的静态损耗均衡算法[13](HWL算法);闪存2采用本文改进后的损耗均衡算法,两个闪存都写入同样的1×106次数据量写入请求.两个闪存的其他详细配置如表1所示.
表1闪存配置表
Table1Flashconfigurationtable
3.2 测试内容及结果分析
本节比较了分别采用改进前和改进后的损耗均衡算法的效果.主要通过对比两种磨损状态阀值w,系统更新次数n和静态损耗周期M三个因素对闪存存储的磨损均衡性能的影响,评价的指标用一个周期内的擦除次数标准偏差来描述.
1)为研究磨损状态阀值上限对闪存存储的磨损均衡性能的影响,设置HWL算法下w=1.2%和w=0.8%两种情况下记录随着写入请求的增加,物理块擦除次数标准差的变化情况.
从图4、图5可以看出相比HWL算法,改进后的静态损耗均衡算法的损耗均衡效果更好一些.随着写入请求不断增加,两者的标准差都是稳定增长.这说明随着写入请求的不断增多在静态损耗均衡机制的控制下标准差的增长趋于稳定,趋于稳定时改进后的擦写次数的标准差比HWL算法小约16.4%,这说明改进后的阀值使得损耗均衡效果更好.
2)通过物理块擦写次数的标准差变化曲线,比较改进之前和改进之后的静态损耗均衡的周期对静态损耗均衡效果的影响.HWL算法是采用固定周期,改进后的算法采用变周期.从图中可以明显看出改进后的静态损耗均衡算法效果显著:从写入请求达到2.2×105次时,两者的擦写次数标准差均达到最大.但是随后HWL算法的擦写次数标准差继续增长,直到写入请求达到7.4×105时才有下降的趋势;然而改进后的擦写次数标准差开始下降,并最终稳定到10×105左右.由于改进后的算法采用了动态的周期选择的方法,相比HWL的固定周期能更好地适应闪存静态损耗均衡的需求.
图4 磨损状态阀值上限对闪存存储的 磨损均衡性能的影响
Fig.4 Effect of wear state threshold on wear equalization performance of flash
图5 静态损耗均衡的周期对静态 损耗均衡效果影响的对比分析图
Fig.5 Comparison and analysis of the influence of static loss equalization cycle on static loss equalization
同时本文选取了另外一个M=10的变化曲线对比观察,发现即使是将静态损耗及均衡周期设置的比较短,损耗均衡的效果仍然不理想.
4 结 论
对目前较流行的HWL损耗均衡算法进行优化.重新定义了数据块的冷热属性,并以高低阀值作为热数据和冷数据的判定条件;对触发机制进行优化和将现有的静态损耗均衡策略与动态损耗均衡策略相结合的优化策略.通过SSD Sim软件完成了对比测试,实验证明改进后的损耗均衡算法有效的降低了物理块擦除次数的标准差,使得损耗均衡效果得到提高.
相关问答
固态硬盘需要整理碎片吗 - Lu小璐666 的回答 - 懂得但是,当前的碎片整理软件对于SSD来说其实都是没有效果的。固态硬盘时代的碎片整理我们知道SSD中负责存储功能的Flash颗粒是有寿命的,所以SSD的存储...
闪存( FLASH )可以反复用多少次?可以格式化多少次就不能用了? ...根据Flash生产厂商,理论上闪存盘可擦写1,000,000次,折合正常使用次数计算,闪存盘里数据可保存约10年左右。优盘在使用一段时间后,再次格式化,其容量...
安卓手机怎么查看电池的 损耗 情况?可以用手机命令*#*#4636#*#*显示手机、电池记录、使用统计数据、WIFI等信息,在电池信息中看看电压,如果电压不正常说明电池损坏了,还可以用某些电池充电软件或...
新品iQOO Z1在续航和快充技术上表现怎么样?除了首发联发科的天玑1000Plus处理器之外,iQOOZ1在其他方面的配置基本与iQOONeo3保持一致,正面是一块6.57英寸的显示屏,支持最高144Hz屏幕刷新率,右上角...IQ...
高二英语词组翻译U5Reading1.aseriesof2.foreseetheconseque...[回答]1.一个系列2.预知的后果3.肥胖的人来讲太多的金钱和权力4.面临一个选择/面临5.是至关重要的,因为6。唯一的药可以挽救人的生命往往在世界的另...
gif动画和swf动画的区别 - 180****1459 的回答 - 懂得就像图片根视频的区别一样。SWF有的是带声音的,但你见过带声音的GIF吗?另外一方面,有些SWF是带代码的,但GIF不能,还有,SWF须要有插件或者播放器才能...
gif动画和swf动画的区别 - 小黄鸭是小丫 的回答 - 懂得GIF动画不用FLASH播放器看,SWF要用,GIF动画制作简单,能用很多软件做出来,SWF只能用FLASH做1.GIF动画是图片动画,是多个光栅图像数据。通常称为GIF...
oppo手机超级速充怎么关闭-ZOL问答2018年,OPPOFindX超级闪充版和OPPOFindX兰博基尼版首发搭载。2021年,SUPERVOOC升级统一了诸多协议,并且升级为了代表欧加集团充电的品牌。SuperVOOC2...
iqoo neo544w快充还是66瓦?iqooneo5搭载的是66w闪充。采用flashcharge闪充技术,通过高压充电技术降低传输电流,减小通路损耗,缩短充电时长,提升充电速度,结合双电芯串联技术,可在长...
视频光端机和视频会议有啥区别? - 西瓜与猹 的回答 - 懂得视频光端号转换的设备,也就是说通过光缆传输的过程缆连接需要的设备,能够传输视频、音频、电话、以太网、开关量、数据等等。视频会议是一个系统的...