关于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软件完成了对比测试,实验证明改进后的损耗均衡算法有效的降低了物理块擦除次数的标准差,使得损耗均衡效果得到提高.
闪存将迎真正观点,数据中心即将消灭传统机械硬盘
传统机械硬盘在数据中心领域是否还有未来?
西部数据(Western Digital)依然认为机械硬盘在数据中心拥有一席之地。近日,西部数据公布了最新的机械硬盘产品路线图。西部数据计划在2020年会推出18TB、20TB的硬盘,并预计在在2026年推出60TB的机械硬盘。西部数据的路线图比两年前ASTC协会公布的要保守一些,后者之前预计2026年HDD硬盘容量能达到100TB级别。
值得注意的是,西部数据已开始向全球企业OEM和超大规模数据中心客户运送18TB、20TB的硬盘样品。
西部数据机械硬盘产品路线图
此外,GigaOM分析师Enrico Signoretti和Wells Fargo 分析师Aaron Rakers分别从硬盘在数据中心应用趋势与闪存发展等角度进行了分析,算是对机械硬盘在数据中心前景的另一种回应。
硬盘将从小型数据中心中消失
众所周知,随着闪存在容量上的不断提升,以及成本的不断下降,闪存在性价比、性能上已经开始形成对机械硬盘越来越大的优势,而机械硬盘随着容量的不断提升在故障恢复上需要花费更多时间,也使得机械硬盘的劣势进一步放大。有人直言,机械硬盘未来几年将会在大多数数据中心中消失。
Signoretti直言:“机械硬盘将从小型数据中心消失。小型数据中心将不再存在机械硬盘,尤其是云计算的快速发展,中小型企业将越来越依赖闪存或者云。”Signoretti直言:“像18TB和20TB的机械硬盘(未来的50TB或者更大容量)将来更多是为Facebook、AWS、Azure这些超大规模数据中心用户设计和制造。”
通常,大容量机械硬盘在发生故障时往往需要花费数周时间进行恢复,“大容量意味着在发生故障时候需要花费更长的时间进行重构。例如,今天重构一个14TB的硬盘可能需要花费近一周时间,如果容量增长为50TB,可以想象一下需要花费多少时间。”
硬盘与SSD的竞争即将告一段落
不仅如此,像主机管理覆盖、多驱动器和分区等机械硬盘新技术,都需要使用当前硬盘的应用程序修改代码。而随着闪存越来越便宜,显然比这些让磁盘更快的插件更有吸引力。
Signoretti认为:“所有增加的复杂性将使硬盘对于没有足够数据量存储在其中的小型组织变得不切实际。例如以1PB这个标准来考虑一下:1PB等于20个硬盘,而奇偶校验和备用硬盘将为24。它为您提供吞吐量,但IOPS很少,并且由于重建时间而导致数据丢失的风险很高。”
最后,Signoretti表示,如果用户需要在本地存储上PB的冷存储,那么可以考虑机械硬盘。全闪存的数据中心将成为现实,如果您想存储越来越多的冷数据,那么云其实也是一项很好的选择。
NAND层数的较量
西部数据和铠侠(Kioxia,前身为东芝存储)近日宣布了112层3D NAND。Wells Fargo 分析师Aaron Rakers认为,112层NAND(BiCS5 工艺)是一种成本优化的工艺,在成熟的晶圆良率下,将会比现有的96层产品每一位便宜30%。
Aaron Rakers注意到112层产品基本上是两个56层 die堆叠在一起,而三星的128层die则是采用单堆叠设计。WD-Kioxia 112层晶圆与相比具有更大的位密度优势:约7.8GB /平方毫米,而三星为6.8GB /平方毫米。他计算得出,WD-Kioxia比三星的128L技术具有10-15%的位密度优势,并因此带来了成本优势。
这也意味着WD-Kioxia大大提高了NAND的承受能力,尤其是当112层用QLC闪存格式化时。
3D NAND容量和层数技术路线图
当今的大多数NAND是TLC(3位/单元),而QLC的耐久性比TLC的3,000次周期短,约为1,000次。它的读取时间为100μs,而TLC为25μs。但是它仍然比磁盘快,后者在分区内受寻道时间的影响,性能大约在8–12ms。
当今的大容量磁盘驱动器越来越多地用于近线存储,而近线存储需要中等到低的写访问速率。QLC 112层NAND使用损耗均衡和过度配置技术,可以比TLC 96L更好地竞争这一市场。
这使Rakers得出结论,就出货量而言,100层以上的3D NAND将成为一种主导技术。
他认为:“控制器技术和软件增强功能的不断进步,改善了原始NAND的特性,这是我们认为QLC的采用将在未来几年内加速并扩大其采用范围的主要原因之一。”
三星、英特尔、西部数据、海力士等闪存厂商的3D NAND路线图
到2022年和2023年,闪存将会采用200-300层3D NAND,届时闪存每比特的成本将会更低。“企业级固态硬盘和近线硬盘之间的价格差距正在缩小(以美元/GB为标准)。去年第三季度,企业级SSD每GB的成本大约是高容量近线硬盘的八倍,而第二季度则是9倍,2018年第三季度则是15倍。”
在Rakers看来,如果企业级SSD的成本下降到5倍时,那将会让用户在工作负载中选择企业级SSD替代近线硬盘有强有力的理由。“这可能就是大容量企业级固态硬盘采用率拐点的开始。”
相关问答
目前sata固态硬盘买TLC和MLC的有什么区别?固态硬盘越来越便宜,也越来越流行。更多此类驱动器的型号出现在市场中,这不仅因为新制造商正在提供其产品,还因为"老玩家"正在使用新技术。目前,大多数公司正...
手机rom存储空间怎么分区?-ZOL问答损耗的一些信息MicroSD卡也就是熟称的“TF”卡,是Motorola与SanDisk共同推出的最新一代的记忆卡规格,它采用了最新的封装技术,并配合SanDisk最新NANDMLC技术...
固态硬盘该如何挑选?金泰克S300120GBSSD参考价:299元质保期:三年质保推荐理由:价格便宜、国产老牌子金泰克S300120GBSSD采用业界流行的全金属设计,通体金属,能够较大...除.....
电脑有128g固态硬盘还有8g内存条为什么电脑只有111g内存_其他...电子盘flash颗粒容量标称以1000为进制,即1GB=1000MB,1MB=1000KB,1KB=1000B;格式化后,电子盘容量由操作系统计算,操作系统是以1024为...各.....
固态硬盘有什么?固态硬盘中所使用的是NAND闪存颗粒,由于电子单元密度的差异,NAND闪存又可以分为SLC(单层次存储单元)、MLC(双层存储单元)、TLC(三层存储单元)还有QLC(四...它...