一种实现固态硬盘磨损均衡的方法技术

技术编号:17467131 阅读:119 留言:0更新日期:2018-03-15 04:46
本发明专利技术公开了一种实现固态硬盘磨损均衡的方法,其特征在于将FLASH的块划分为多个存储面,每个存储面包含若干个块;均衡评估数据包括擦除次数平均值E、擦除次数的方差Var和随机游走当前位置P;随机游走当前位置P记录的是各个存储面均衡的块游走的位置,具体为块序号;磨损均衡操作时通过控制随机游走当前位置P的移动位置和方向,并执行数据搬移,控制使得各个存储面的Var值趋小,同时控制各个存储面的最大擦除次数平均值E_max‑E_min值趋小。新的磨损均衡方法与常规技术BET方法的效果差不多,但是对内存的要求比较低,节省内存的效果非常明显,而且随着Nand容量的增大,新方法对内存的占用依然保持基本不变,扩展性很好。

A method to realize the wear balance of solid state hard disk

The invention discloses a method for realizing solid state disk wear leveling method, which is characterized in that the partition of FLASH into a plurality of memory, each memory contains a number of blocks; balanced assessment data including the average values of E, Var and erase times the variance of random walk current position P erase times; random walk on the current position of P is a record of each storage location balancing block walk, specifically for the block number; wear leveling operation by controlling the random walk of the current position of the P position and direction, and the implementation of data migration, each storage control makes the Var value increasingly small, and the control of each storage the maximum erasing times of average value of E_max E_min more small. The new wear leveling method is almost the same as the conventional BET technology, but it requires less memory and saves memory. With the increase of Nand capacity, the memory consumption of new method remains basically unchanged, and the expansibility is very good.

【技术实现步骤摘要】
一种实现固态硬盘磨损均衡的方法
本专利技术涉及固态硬盘控制技术,特别涉及一种实现固态硬盘磨损均衡的方法。
技术介绍
固态硬盘由于其每个数据块的擦写寿命是有限的,不同的数据修改的概率也不同,如果长时间集中对某些数据块进行擦写操作,很容易将数据块写坏,因此固态硬盘中都必须要有磨损均衡来避免出现该问题。常规技术采用的是静态磨损均衡算法,该算法需要在高速内存(SRAM)中分配一张块擦除信息表BET(blockerasetable)表,图1是BET表结构示意图;FLASH中每个块block对应BET中一个bit,该bit的值表示对应block在一定时间T内是否被擦除过(1表示被擦除过,0表示没有被擦除过)。除了BET表,固件还维护两个值擦除次数erase_cnt和one_cnt,erase_cnt记录所有block在时间T内被擦除的总次数。在SSD工作期间,内部的垃圾回收任务会不定时擦除无效的block,以腾出空闲block,one_cnt表示BET表中值为1的个数。显然有erase_cnt大于等于one_cnt,因为在时间T内同一个block可能擦除多次,特别是在硬盘空间不足的情况下,当erase_cnt/one_cnt的值过大时,说明BET表中某些值为1对应的block在时间T内被反复擦除,而那些值为0对应的block一直没有被擦除,各block的磨损已经不均衡了,图2是出现磨损不均衡情况示意图;此时需要启用SSD内部任务遍历BET表,找到表中值为0对应的block(冷数据块),将该block上的数据搬移到表中值为1对应的block(热数据块),图3是冷热数据交换示意图,将block8和block11中的数据交换,且将BET[8]中的值变为1,这样本来擦除次数较小的block8后续就会存放热数据,擦除次数慢慢变大,而本来擦除次数较大的block11由于存放了冷数据,擦除次数在很长时间内不会改变,即这种磨损不均衡的局面会随着时间慢慢变得均衡。该技术中在NandFlash生命周期内能有效达到磨损均衡的目的,但是BET表要独占较大的高速内存(SRAM)资源,我们以1024*1024个block为例,每个block需要1bit,那么一共需要1024*1024bit,即128KB的高速内存资源,而且随着NandFlash容量的增加BET占用的资源也将同比增加。
技术实现思路
针对以上缺陷,本专利技术目的是如何减少对SSD的内存开销,降低功耗,而且对内存的开销不随着NandFlash容量的增加而增大。为了解决以上问题本专利技术提出了一种实现固态硬盘磨损均衡的方法,其特征在于将FLASH的块划分为多个存储面,每个存储面包含若干个块;每个存储面都分别采用一组均衡评估数据描述各个存储面内的各个块的磨损均衡程度;所述均衡评估数据包括擦除次数平均值E、擦除次数的方差Var和随机游走当前位置P;随机游走当前位置P记录的是各个存储面均衡的块游走的位置,具体为块序号;磨损均衡操作时通过控制随机游走当前位置P的移动位置和方向,并执行数据搬移,控制使得各个存储面的Var值趋小,同时控制各个存储面的最大擦除次数平均值E_max-E_min值趋小。所述的实现固态硬盘磨损均衡的方法,其特征在于每个存储面发生一次块擦除操作,则更新一次擦除次数平均值和擦除次数的方差,具体更新如下:E_新=E_旧+1/N;E_新表示新计算获取的擦除次数平均值,E_旧表示原有的擦除次数平均值;Var_新=Var_旧+2(ec_k-E_旧)/N+(N-1)/N/N;ec_k为擦除前的擦除次数;Var_新为新计算获取的擦除次数的方差,Var_旧为原有的擦除次数的方差。所述的实现固态硬盘磨损均衡的方法,其特征在于每次触发SSD磨损均衡操作时,首先检索各个存储面的均衡评估数据,找到E值最小的存储面,找到随机游走当前位置P,通过比较相邻的2个块的擦除次数,将P向擦除次数小的方向移动,如果移动后所在的块中有有效数据,则把数据搬走,然后擦除该块;随机游走当前位置P的初始位置为存储面的第一个块;第一个block往左边走为该存储面的最后一个block,最后一个block往右边走为该存储面的第一个block。本专利技术的有益效果是:新的磨损均衡方法与常规技术BET方法的效果差不多,但是对内存的要求比较低,节省内存的效果非常明显,而且随着Nand容量的增大,新方法对内存的占用依然保持基本不变,扩展性很好。附图说明图1是BET表结构示意图;图2是出现磨损不均衡情况示意图;图3是冷热数据交换示意图;图4是随机游走的磨损均衡的均衡算法示例。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本实施例提出了一种基于随机游走的磨损均衡算法,目的在于减少对SSD的内存开销,降低功耗,而且对内存的开销不随着NandFlash容量的增加而增大。图4是随机游走的磨损均衡的均衡算法示例,以block阵列以二维形式显示(以1024*1024个block为例),横轴表示数据块(block)号,数轴表示存储面号,我们把物理连续的1024个block编成一个存储面,每个存储面维护三个变量:E(期望),Var(方差),P(游走位置),定义如下:E:对应存储面1024个block的擦除次数平均值(数学上叫做期望)。Var:对应存储面1024个block的擦除次数的方差。P:对应存储面1024个block的随机游走的当前位置。每当某个block(k)被擦除一次,需要重新计算该block(k)所在存储面的E和Var,我们把存储面中block数记为N(本示例中等于1024),block(k)擦除前的擦除次数记为ec_k,则新的期望E_新和Var_新的更新公式如下:E_新=E_旧+1/N。Var_新=Var_旧+2(ec_k-E_旧)/N+(N-1)/N/N。可以获得,每个存储面的Var值代表该存储面中各个block的磨损均衡程度,Var越小表示磨损越均衡;各个E值的波动程度代表着各个存储面之间的磨损均衡程度,所有的E值越接近表示存储面之间的磨损越均衡,如此所有的block的擦除次数就越均衡。因此本方法的目标是:1.令每个Var值越来越小。2.令E_max-E_min的值越来越小,即所有的E值越来越接近。所以,每次触发SSD内部磨损均衡算法时,首先找到E_min对应的存储面,然后从P(初始位置为该存储面的第一个block,第一个block往左边走为该block的最后一个block)的位置往相邻的擦除次数较小的block方向移动,即如果P左边的blcok擦除次数小于右边的block擦除次数,P就往左边移动一个位置,反之,则往右边走。如果移动后的P所在block中有有效数据,则把数据搬走,然后擦除该block,可以看出擦除后该存储面的E值会变大,即E_min慢慢变大,我们的目标2渐渐达成;而且P是往擦除次数小的方向移动,即该存储面中擦除次数较小的block优先被擦除,所以该存储面block的方差Var会越来越小,即目标1渐本文档来自技高网
...
一种实现固态硬盘磨损均衡的方法

【技术保护点】
一种实现固态硬盘磨损均衡的方法,其特征在于将FLASH的块划分为多个存储面,每个存储面包含若干个块;每个存储面都分别采用一组均衡评估数据描述各个存储面内的各个块的磨损均衡程度;所述均衡评估数据包括擦除次数平均值E、擦除次数的方差Var和随机游走当前位置P;随机游走当前位置P记录的是各个存储面均衡的块游走的位置,具体为块序号;磨损均衡操作时通过控制随机游走当前位置P的移动位置和方向,并执行数据搬移,控制使得各个存储面的Var值趋小,同时控制各个存储面的最大擦除次数平均值E_max‑E_min值趋小。

【技术特征摘要】
1.一种实现固态硬盘磨损均衡的方法,其特征在于将FLASH的块划分为多个存储面,每个存储面包含若干个块;每个存储面都分别采用一组均衡评估数据描述各个存储面内的各个块的磨损均衡程度;所述均衡评估数据包括擦除次数平均值E、擦除次数的方差Var和随机游走当前位置P;随机游走当前位置P记录的是各个存储面均衡的块游走的位置,具体为块序号;磨损均衡操作时通过控制随机游走当前位置P的移动位置和方向,并执行数据搬移,控制使得各个存储面的Var值趋小,同时控制各个存储面的最大擦除次数平均值E_max-E_min值趋小。2.根据权利要求1所述的实现固态硬盘磨损均衡的方法,其特征在于每个存储面发生一次块擦除操作,则更新一次擦除次数平均值和擦除次数的方差,具体更新如下:E_新=E_旧+1/N;E_新表...

【专利技术属性】
技术研发人员:许毅姚兰郑春阳
申请(专利权)人:记忆科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1