一种实现固态硬盘磨损均衡的方法与流程

文档序号:14175264阅读:1173来源:国知局
本发明涉及固态硬盘控制技术,特别涉及一种实现固态硬盘磨损均衡的方法。
背景技术
::固态硬盘由于其每个数据块的擦写寿命是有限的,不同的数据修改的概率也不同,如果长时间集中对某些数据块进行擦写操作,很容易将数据块写坏,因此固态硬盘中都必须要有磨损均衡来避免出现该问题。图1常规技术的ect表构成示例及数据交换示意图,在dram中维护了块擦除数纪录表,简单称ect表,该ect表记录了每个block的擦除次数,当前主流的nandflash的擦除上限大概为两三万次,每个ect表项需要占16bit,每当有block被擦除时,它对应的ect表项加1。当ssd内部的磨损均衡任务启动时,遍历ect表,找到ect表中擦除次数最大的表项,对应的block擦除次数最大,基本存储的是热数据,再找出表中擦除次数最小的表项,对应的block擦除次数最小,基本存储的是冷数据,然后交换两个block中的数据,如block的第n-1块与第3块进行冷数据和热数据交换。如此擦除次数最大的block中存储了冷数据,未来的很长一段时间内它不会被更新,擦除次数不会变大,而擦除次数最小的block中存储了热数据,该数据会很快被更新,它的擦除次数很快递增,即该算法能慢慢的均衡最好block和最差block之间的磨损程度。但是该算法的缺点也很明显,由于ect表在dram中,所以每次遍历ect将很耗时且耗电,效率很低,尤其是随着nandflash的容量增加,ect表也将成倍变大,遍历效率更低。以512*1024个block为例,一共需要占据512*1024*16bit=1mb的dram空间,遍历这么大的空间显然很耗时,而且功耗也大。技术实现要素:针对以上缺陷,本发明目的是如何减少对ssd的内存开销,降低功耗,而且对内存的开销不随着nandflash容量的增加而增大。为了解决以上问题本发明提出了一种实现固态硬盘磨损均衡的方法,其特征在于falsh固件创建块擦除位记录表,每个块与块擦除位记录表的一个bit位对应,用bit位=1记录t时间内该bit位对应的块被执行过擦除操作;用bit位=0记录t时间内该bit位对应的块没有被执行过擦除操作过;还包括擦除操作计数器erase_cnt和擦除操作块计数器one_cnt,所述擦除操作计数器用于记录t时间段内flash执行的所有擦除操作数量;所述擦除操作块计数器记录t时间段内执行过擦除操作的块数量;falsh固件的磨损均衡任务监控到当erase_cnt/one_cnt大于预先设定的值时,通过遍历块擦除位记录表,将bit位=0的块数据与bit位=1的块数据进行数据互换。所述的实现固态硬盘磨损均衡的方法,其特征在于所述块擦除位记录表存储在sram中。所述的实现固态硬盘磨损均衡的方法,其特征在于falsh固件在dram中同时还创建了块擦除数纪录表,记录了每个块的擦除次数;当falsh固件的均衡任务监控到当erase_cnt/one_cnt大于预先设定的值时,通过遍历块擦除位记录表,将块擦除位记录表中bit位=0且对应块擦除数纪录表的数值大的块数据优先与将块擦除位记录表中bit位=0且对应块擦除数纪录表的数值小的块数据互换。本发明的有益效果是:通过块擦除位记录表以单个bit位来表征各个数据块在某段时间内是否被擦除,大大减少块擦除位记录表的空间占用,进而将该块擦除位记录表存储如sram中,大大提高磨损均衡任务中遍历访问速度。附图说明图1常规技术的ect表构成示例及数据交换示意图;图2是bet表构成示例图;图3是出现磨损不均衡情况示意图;图4是冷热数据交换示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图2是bet表构成示例图,本实施例提出的改进在于falsh固件提出在高速内存(sram)中分配一张块擦除位记录表bet(blockerasetable)表,除了bet表,固件还维护擦除操作计数器erase_cnt和擦除操作块计数器one_cnt,擦除操作计数器用于记录t时间段内flash执行的所有擦除操作数量;所述擦除操作块计数器记录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的磨损已经不均衡了。图3是出现磨损不均衡情况示意图;此时需要启用ssd内部任务遍历bet表,找到表中值为0对应的block(冷数据块),将该block上的数据搬移到表中值为1对应的block(热数据块),图4是冷热数据交换示意图,将block8和block11中的数据交换,且将bet[8]中的值变为1,这样本来擦除次数较小的block8后续就会存放热数据,擦除次数慢慢变大,而本来擦除次数较大的block11由于存放了冷数据,擦除次数在很长时间没不会改变,即这种磨损不均衡的局面会随着时间慢慢变得均衡。由此可以看出,该算法基本只需要遍历bet表,该表存储在sram中,cpu对sram的访问速度比dram快几十倍甚至几百倍且功耗也低,而该算法对高速内存sram的占用不多,还是以512*1024个block为例,一共只需要512*1024*1bit=64kb的sram,这对一般的ssd而言还是可以提供的。但是值得说明的是bet表对sram的开销随着nandflash的增大而成倍增大,sram价格比较昂贵,所以该技术适用于小容量的固态硬盘。以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。技术特征:技术总结本发明公开了一种实现固态硬盘磨损均衡的方法,其特征在于FALSH固件创建块擦除位记录表,每个块与块擦除位记录表的一个bit位对应,用bit位=1记录T时间内该bit位对应的块被执行过擦除操作;用bit位=0记录T时间内该bit位对应的块没有被执行过擦除操作过;还包括擦除操作计数器erase_cnt和擦除操作块计数器one_cnt;FALSH固件的磨损均衡任务监控到当erase_cnt/one_cnt大于预先设定的值时,通过遍历块擦除位记录表,将bit位=0的块数据与bit位=1的块数据进行数据互换。通过块擦除位记录表以单个bit位来表征各个数据块在某段时间内是否被擦除,大大减少块擦除位记录表的空间占用,进而将该块擦除位记录表存储在SRAM中,大大提高磨损均衡任务中遍历访问速度。技术研发人员:许毅;姚兰;郑春阳受保护的技术使用者:记忆科技(深圳)有限公司技术研发日:2017.10.25技术公布日:2018.04.13
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1