针对NANDFlash主控芯片Greedy垃圾回收的优化方法与流程

文档序号:17586601发布日期:2019-05-03 21:22阅读:193来源:国知局
针对NAND Flash主控芯片Greedy垃圾回收的优化方法与流程

本发明属于芯片技术领域,具体涉及一种针对nandflash主控芯片greedy垃圾回收的优化方法。



背景技术:

随着计算机技术的发展,以闪存为存储介质的固态存储设备以其优良的性能逐渐取代了传统的机械存储设备。闪存主要分为两大类,norflash和nandflash,norflash适合存储系统中的关键性代码,而nandflash与之相比具有容量大、成本低、能耗小、擦除时间短等特点,更适用于存储用户数据。因此,nandflash被广泛应用于数码产品和嵌入式的开发。

由于自身存在的物理特性,闪存采用异地更新的存储策略,无法像传统的磁盘一样可以被主机直接识别使用,需要借助主控芯片中的闪存转换层来完成逻辑地址与物理地址之间的映射工作,同时为了提升闪存设备的使用性能,闪存转换层还需要采用一些算法来对闪存块进行一系列的管理工作,主要包括垃圾回收算法、损耗均衡算法和坏块管理算法。其中,垃圾回收算法旨在对闪存芯片中的无效页进行管理与控制,将无效数据所占据的存储空间释放出来以确保闪存芯片能有足够的空间来存放新的数据。

在闪存块中,闪存页按照上面存放的数据可分为有效页、无效页和空闲页。在垃圾回收的过程中,有效页上的数据不能丢失,需要拷贝到其他闪存块上,所以垃圾回收算法的回收效率被定义为闪存块上无效页的数量与闪存页总数的比值,效率越高则可重新释放出来的存储空间就越大。

垃圾回收算法作为闪存主控芯片中保障闪存芯片正常运行和提升性能的关键技术之一,目前国外已经有许多值得借鉴的研究成果,其中执行效率最高的是采用了贪心选择机制的greedy垃圾回收算法,操作简单,容易实现,是早期的经典算法。但是,随着闪存设备容量和闪存块数量的增加,该算法在执行的过程中因其自身机制而导致时间开销也在不断增加。

图1为greedy垃圾回收的基本思想,图2为闪存设备使用时控制芯片中最初的greedy垃圾回收执行过程的硬件控制信号流向。由该信号流向图可以看出,greedy垃圾回收在可用闪存芯片的存储空间不足时被触发,由存储空间监测模块对闪存芯片的空间使用情况进行实时监控,判断可用空间过低时触发需要回收信号,将回收信号传递给目标筛选模块,对闪存芯片中所有闪存块进行遍历以找到当前无效页数量最多的闪存块,并将闪存块的id发送给回收模块对其进行有效数据的迁移操作和闪存块的擦除操作,完成后输出监测信号给存储空间监测模块。

在闪存芯片容量较小,闪存块数量较少的时候,目标筛选模块查找的时间开销不大,且每次执行完全部流程都可以最大化地释放被无效数据占用的存储空间,回收的效率高。但是,随着大数据的发展,目前大多闪存设备都需要有相当大的存储空间,也就是说闪存块的数量会非常多,这就会导致greedy垃圾回收的目标筛选模块将花费大量的时间来查找目标闪存块,极大的增加了检索的时间开销。此外,在存储空间不足时才触发的这种触发方式在数据更新量比较大时可能会增加数据写入的等待时间,造成数据阻塞。



技术实现要素:

(一)要解决的技术问题

本发明要解决的技术问题是:

(二)技术方案

为解决上述技术问题,本发明提供一种针对nandflash主控芯片greedy垃圾回收的优化方法,所述方法基于greedy垃圾回收系统来实施,所述greedy垃圾回收系统包括:存储空间监测模块、目标筛选模块、写入地址监测模块、回收模块;

所述存储空间监测模块包括:数据维护单元、空间判定单元;

所述目标筛选模块包括:分组单元、目标筛选单元;

所述回收模块包括:数据迁移单元、擦除单元;

所述方法包括如下步骤:

步骤1:上电后由存储空间监测模块的数据维护单元维护一个记录表格,该记录表格用于记录闪存块的擦除次数,在每次擦除操作后更新相应的数据;

步骤2:目标筛选模块接收上电信息,由分组单元将用户可用闪存块进行分组,并标记组号和闪存块在组内的id;

步骤3:由写入地址监测模块实时判断是否有数据写入到了闪存块的末地址;

步骤4:数据写入闪存块末地址时,写入地址监测模块触发回收信号给目标筛选模块,由目标筛选单元完成末地址写入数据的闪存块的分组检索并传递待回收闪存块相应的组号和闪存块的组中id到回收模块;

步骤5:回收模块接到待回收闪存块相应的组号和闪存块的组中id后,进行数据迁移操作和擦除操作,分别由回收模块中的数据迁移单元和擦除单元来完成,而后向存储空间监测模块输出一个监测信号;

步骤6:存储空间监测模块在收到监测信号后,数据维护单元先根据步骤5所擦除的闪存块相应的组号和闪存块的组中id对记录表格进行更新,空间判定单元再对闪存芯片当前可用空闲闪存块的数量进行检验,并视情况向目标筛选模块或是写入地址监测模块发出信号。

其中,所述步骤4中,目标筛选模块顺次以闪存块组为单位查找目标块,每次检索一个闪存块组。

其中,所述步骤4中,所述待回收闪存块为当前组中无效页最多的闪存块。

其中,所述步骤5中,所述数据迁移单元将待回收闪存块上的有效数据拷贝至当前擦除次数最小的空闲闪存块上。

其中,所述步骤5中,在所述数据迁移单元完成数据迁移后,擦除单元完成待回收闪存快的擦除操作。

其中,所述步骤6中,空间判定单元对闪存芯片当前可用空闲闪存块的数量进行检验,判断存储空间是否充足,根据判定的不同结果输出不同的信号到不同的模块。

其中,所述步骤6中,当判断到存储空间不足时,输出回收信号给目标筛选模块。

其中,所述步骤6中,当判断存储空间充足时,则向写入地址监测模块输出监测信号。

其中,所述方法应用于nandflash主控芯片的垃圾回收。

其中,该方法可以保护磨损程度较大的闪存块,降低其使用频率。

(三)有益效果

与现有技术相比较,本发明改进后的方案增加了“一满一擦”触发方式和局部检索的搜索机制对greedy算法进行优化。由于每当有闪存块的最后一页被写入数据,nandflash控制系统就会触发垃圾回收算法,这样可以保证被无效数据占用的存储空间得到及时的释放,尽可能使闪存存储设备长期保持较多的可用存储空间,避免垃圾回收算法的集中触发。

目标筛选模块中分组检索的设计将顺次查找闪存块组,直至将所有闪存块组都遍历过后再从第一组开始。这种局部的检索方式可以避免时间的浪费,检索时间开销少,且不会对闪存块进行重复检验,遍历一次后每个闪存块都只会被检索一次,虽然可能存在有的组中无效页最少的数据块都要多于另一个组中无效页最多的块,但是从全局的角度来看系统已经将无效页最高及较高的数据块进行了回收,在追求最大的垃圾回收效率的同时也减少了时间开销。

此外,在数据访问方面,计算机有个局部性原理,即刚刚被访问或是更新的数据在接下来的短时间里有很大可能性又会被访问或更新。在新写入的数据中,有很大一部分是对原有数据的更新版本和从未记录过的新数据,这些数据很可能会被继续频繁更新,这也就导致新写入闪存块中的数据很可能马上变成无效数据而使闪存块中的无效数据页增加。若垃圾回收选中的闪存块中全部都为无效页,则可以直接擦除;若闪存块中存在有效数据,需要先把有效数据迁移到其他空闲块上,本发明改进的数据迁移单元可以在一定程度上保护磨损程度较大的块,降低它们的使用频率。

附图说明

图1为greedy垃圾回收基本思想示意图。

图2为greedy垃圾回收硬件控制信号流向示意图。

图3为优化后的greedy垃圾回收基本思想示意图。

图4为优化后的greedy垃圾回收硬件控制信号流向示意图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

为了解决现有技术问题,本发明对触发方式和目标块筛选机制进行了改进,采用双重触发机制,在存储空间监测模块的基础上又新增了一个监控数据写入闪存块内位置的写入地址监测模块,对目标筛选模块做了进一步的优化。

写入地址监测模块在判断到有闪存块的末地址被写入数据时,也会触发回收信号给目标筛选模块。优化后的目标筛选模块加入了一个闪存块的分组单元,将用户可用闪存块平均分成若干组,并标记组号和闪存块在组内的块号。目标筛选模块顺次以闪存块组为单位查找目标块,每次检索一个闪存块组,检索完成后输出闪存组号和当前组中的闪存块号到回收模块来进行后续的处理。数据迁移操作由回收模块中的数据迁移单元来选择当前擦除次数最小的空闲块并将待回收闪存块上的有效数据拷贝过去,输出擦除信号给擦除单元擦除选中闪存块。擦除完成后向存储空间监测模块输入一个监测信号,首先由该模块中的数据维护单元对闪存块擦除次数表等数据记录表格进行更新维护,然后由空间判定单元监测当前闪存芯片的剩余存储空间,根据判定的不同结果输出不同的信号到不同的模块。当判断到存储空间不足时,输出回收信号给目标筛选模块;若监测存储空间充足则向写入地址监测模块输出监测信号。

优化后的greedy垃圾回收的基本思想和执行过程中硬件控制信号流向分别如图3和图4所示。

具体而言,为解决上述技术问题,本发明提供一种针对nandflash主控芯片greedy垃圾回收的优化方法,所述方法基于greedy垃圾回收系统来实施,所述greedy垃圾回收系统包括:存储空间监测模块、目标筛选模块、写入地址监测模块、回收模块;

所述存储空间监测模块包括:数据维护单元、空间判定单元;

所述目标筛选模块包括:分组单元、目标筛选单元;

所述回收模块包括:数据迁移单元、擦除单元;

所述方法包括如下步骤:

步骤1:上电后由存储空间监测模块的数据维护单元维护一个记录表格,该记录表格用于记录闪存块的擦除次数,在每次擦除操作后更新相应的数据;

步骤2:目标筛选模块接收上电信息,由分组单元将用户可用闪存块进行分组,并标记组号和闪存块在组内的id;

步骤3:由写入地址监测模块实时判断是否有数据写入到了闪存块的末地址;

步骤4:数据写入闪存块末地址时,写入地址监测模块触发回收信号给目标筛选模块,由目标筛选单元完成末地址写入数据的闪存块的分组检索并传递待回收闪存块相应的组号和闪存块的组中id到回收模块;

步骤5:回收模块接到待回收闪存块相应的组号和闪存块的组中id后,进行数据迁移操作和擦除操作,分别由回收模块中的数据迁移单元和擦除单元来完成,而后向存储空间监测模块输出一个监测信号;

步骤6:存储空间监测模块在收到监测信号后,数据维护单元先根据步骤5所擦除的闪存块相应的组号和闪存块的组中id对记录表格进行更新,空间判定单元再对闪存芯片当前可用空闲闪存块的数量进行检验,并视情况向目标筛选模块或是写入地址监测模块发出信号。

其中,所述步骤4中,目标筛选模块顺次以闪存块组为单位查找目标块,每次检索一个闪存块组。

其中,所述步骤4中,所述待回收闪存块为当前组中无效页最多的闪存块。

其中,所述步骤5中,所述数据迁移单元将待回收闪存块上的有效数据拷贝至当前擦除次数最小的空闲闪存块上。

其中,所述步骤5中,在所述数据迁移单元完成数据迁移后,擦除单元完成待回收闪存快的擦除操作。

其中,所述步骤6中,空间判定单元对闪存芯片当前可用空闲闪存块的数量进行检验,判断存储空间是否充足,根据判定的不同结果输出不同的信号到不同的模块。

其中,所述步骤6中,当判断到存储空间不足时,输出回收信号给目标筛选模块。

其中,所述步骤6中,当判断存储空间充足时,则向写入地址监测模块输出监测信号。

其中,所述方法应用于nandflash主控芯片的垃圾回收。

其中,该方法可以保护磨损程度较大的闪存块,降低其使用频率。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1