一种自适应磨损均衡垃圾回收加速装置和方法与流程

文档序号:15930732发布日期:2018-11-14 01:36阅读:265来源:国知局

本发明涉及一种自适应磨损均衡垃圾回收加速装置和方法,使用硬件加速对ftl(flashtranslationlayer)中表项的搜索比较,通过调节表项位宽实现对不同ftl表的自适应,帮助实现闪存的磨损均衡和垃圾回收。

背景技术

因为闪存具有擦除次数有限,先擦后写的特点,我们需要均衡flash中每个块的擦写频率来延长闪存的使用寿命,即所谓的磨损均衡。把一个闪存块里的‘有效’页数据复制到一个“空白”块里,然后把这个块完全擦除即所谓的垃圾回收。

为实现磨损均衡和垃圾回收,软件需要建立包含块的擦除信息及块中有效页个数信息的表(块信息表),以此决定flash后续的擦写操作,并更新块查询表(lba和pba的映射表)。这些表存储在闪存的特殊地址单元中,系统上电后cpu将其读入内存中实时更新。然而单纯通过软件将块信息表中的信息逐一读取比对耗时较长,使得闪存的擦写操作变慢。



技术实现要素:

针对现有技术的缺陷,本发明一种自适应磨损均衡垃圾回收加速装置和方法,利用硬件对块信息表的表项进行对比并给出最值,并且根据所使用flash自适应调整比较器位宽。

为了解决所述技术问题,本发明采用的技术方案是:自适应磨损均衡垃圾回收加速装置,包括:

控制模块,用于给出块信息表的地址及长度、块信息表项的位宽信息、比较项目,发起数据读取及比较的命令,等待最值生成后将比较结果反馈给系统总线;

块信息表,数量为1个或多个,每个块信息表内存储有块类型、有效页个数和擦除次数,块类型、有效页个数和擦除次数的位宽可变;

数据读取模块,根据来自控制模块的命令从数据总线读取相应地址的块信息表内的数据;

最值生成模块,根据控制模块给出的位宽信息将从数据读取模块得到的数据分配到相应的比较器当中得到最值并输出给控制模块;

数据读取模块通过数据总线与块信息表双向通信连接,控制模块通过系统总线与外部cpu双向通信连接,控制模块分别与数据读取模块的命令输入端、最值生成模块的位宽信息输入端相连,数据读取模块的输出端与最值生成模块的数据输入端相连,最值生成模块的输出端与控制模块相连。

所述最值生成模块包括位宽选择模块、擦除次数比较器、有效页个数比较器和累加器,擦除次数比较器、有效页个数比较器前均连接有n个有效数据选择器,n等于数据读取模块读取数据的位数;位宽选择模块的输入端与控制模块相连,位宽选择模块的输出端分别与n个有效数据选择器的控制端相连,有效数据选择器的一个数据输入端与数据读取模块的输出端相连,另一个数据输入端接0,擦除次数比较器、有效页个数比较器的输出端均连接至控制模块;累加器的输入端与n个有效数据选择器的输出端相连,累加器的输出端连接至控制模块。

进一步的,所述擦除次数比较器、有效页个数比较器均包括比较两组数据大小的多位数值比较器、二选一数据选择器和d触发器组,多位数值比较器的输入端分别输入n个有效数据选择器的输出数据和原最值,多位数值比较器的输出端连接至二选一数据选择器的控制端,二选一数据选择器的输入端分别输入n个有效数据选择器的输出数据和原最值,二选一数据选择器的输出端连接至d触发器组的输入端,d触发器组的输出端连接至控制模块。

进一步的,所述多位数值比较器包括两个进行大于判断和小于判断的多位数值比较器和二选一数据选择器,两个多位数值比较器的输入端分别输入n个有效数据选择器的输出数据和原最值,两个多位数值比较器的输出端连接至二选一数据选择器的输入端,二选一数据选择器的控制端连接控制模块,由控制模块发送的比较命令决定进行最大值或最小值的比较。

进一步的,块信息表包括空闲块、坏块、系统保留块和耗尽块。

本发明还公开了一种自适应磨损均衡垃圾回收加速方法,包括以下步骤:

s01)、系统中的cpu将需要求最值的块信息表的地址及长度、位宽信息通过控制总线配置给控制模块中相应的寄存器;

s02)、控制模块将块信息表的地址及长度传递给数据读取模块并启动数据读取模块,同时控制模块将位宽信息以及比较项传递给最值生成模块并启动其比较操作;

s03)、数据读取模块从数据总线读取块信息表的数据并传递给最值生成模块;

s04)、最值生成模块将本次得到的表信息按类型选择与之前所得同类型块中的对应项进行迭代比较,得到当前项目的最值和该块的地址,在进行数据比较的同时,累加器将每一个有效数据进行累加得到同类型下所有块的擦除次数总和和/或有效页个数总和;

s05)、重复步骤s03和步骤s04,直到数据读取模块将指定长度的数据全部读入,最值生成模块将所有数据的四项最值给出,进行最大值比较时,四项最值为第一大、第二大、第三大、第四大的值,进行最小值比较时,四项最值为第一小、第二小、第三小、第四小的值;

s06)、将步骤s05得到的每一类型块的四个最值和其对应的块地址以及累加值存入控制模块的寄存器组,以备cpu访问。

进一步的,控制模块向最值生成模块发送的比较项包括擦除次数和/或有效页次数。

进一步的,迭代比较在比较项相应的比较器内实现,将表项逐个读入比较器中,与比较器中所保留的到目前为止的最值进行比较进而产生新的最值,在此同时数据线根据位宽信息接到正确的比较器输入端。

本发明的有益效果:传统方法只依靠软件算法实现磨损均衡和垃圾回收,而本装置采用硬件加速策略帮助软件实现磨损均衡和垃圾回收。本装置的优点在于结构简单,配置灵活,因其可固件动态调整表位宽所以可支持的flash类型较广。充分利用硬件的速度优势配合软件减少flash每次擦写所耗时间,提高闪存的使用效率。本发明利用硬件可以实现以下功能:1、根据所使用flash自适应调整比较器位宽,2、找到每一种类型块中擦除次数的四项最值及其地址,3、找到每一种类型块中有效页个数的四项最值及其地址,4、计算出所有块的擦除次数总和以及所有块的有效页个数总和;对于同一个块信息表本装置可同时实现第二三四条功能,即最快给出磨损均衡和垃圾回收的备选块,提高软件对flash的擦写效率。

附图说明

图1为自适应磨损均衡垃圾回收加速装置的原理图;

图2为各项位宽不同的块信息表的示意图;

图3为擦除次数比较器、有效页个数比较器的原理图;

图4为多位数值比较器的原理图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步的说明。

实施例1

本实施例公开一种自适应磨损均衡垃圾回收加速装置,如图1所述,该装置包括以下部件:

控制模块,内部配置有多个寄存器,用于给出块信息表的地址及长度、块信息表项的位宽信息、比较项目,发起数据读取及比较的命令,等待最值生成后将比较结果反馈给系统总线;

块信息表,数量为1个或多个,每个块信息表内存储有块类型、有效页个数和擦除次数,块类型、有效页个数和擦除次数的位宽可变;

数据读取模块,根据来自控制模块的命令从数据总线读取相应地址的块信息表内的数据;

最值生成模块,根据控制模块给出的位宽信息将从数据读取模块得到的数据分配到相应的比较器当中得到最值并输出给控制模块;

数据读取模块通过数据总线与块信息表双向通信连接,控制模块通过系统总线与外部cpu双向通信连接,控制模块分别与数据读取模块的命令输入端、最值生成模块的位宽信息输入端相连,数据读取模块的输出端与最值生成模块的数据输入端相连,最值生成模块的输出端与控制模块相连。

本实施例中,所述最值生成模块包括位宽选择模块、擦除次数比较器、有效页个数比较器和累加器,擦除次数比较器、有效页个数比较器前均连接有n个有效数据选择器,n等于数据读取模块读取数据的位数;位宽选择模块的输入端与控制模块相连,位宽选择模块的输出端分别与n个有效数据选择器的控制端相连,有效数据选择器的一个数据输入端与数据读取模块的输出端相连,另一个数据输入端接0,擦除次数比较器、有效页个数比较器的输出端均连接至控制模块;累加器的输入端与n个有效数据选择器的输出端相连,累加器的输出端连接至控制模块。工作时,数据读取模块读取的数据分别传递至有效数据选择器的一个数据输入端,0输入选择器的另一个数据输入端,位宽选择模块将接收的位宽信息发送至选择器的控制端,根据位宽信息决定选择器的输出端是0还是数据读取模块读取的信息,即根据位宽信息将数据线接到正确的比较器输入端,不同的flash具有不同的位宽信息,因此可以根据所使用flash自适应调整比较器位宽。位宽选择通过多路有效数据选择器实现,是纯组合逻辑不消耗时钟周期,即每一条数据都可以经过正确的通路进入到相应的比较器中,最终得到当前项目最值。

如图3所示,所述擦除次数比较器、有效页个数比较器均包括比较两组数据大小的多位数值比较器、二选一数据选择器和d触发器组,多位数值比较器的输入端分别输入n个有效数据选择器的输出数据和原最值,多位数值比较器的输出端连接至二选一数据选择器的控制端,二选一数据选择器的输入端分别输入n个有效数据选择器和原最值,二选一数据选择器的输出端连接至d触发器组的输入端,d触发器组的输出端连接至控制模块。

如图4所示,所述多位数值比较器包括两个进行大于判断和小于判断的多位数值比较器和二选一数据选择器,两个多位数值比较器的输入端分别输入n个有效数据选择器的输出数据和原最值,两个多位数值比较器的输出端连接至二选一数据选择器的输入端,二选一数据选择器的控制端连接控制模块,由控制模块发送的比较命令决定进行最大值或最小值的比较。

工作时,多位数值比较器根据比较命令产生大小的判断,将该结果传递至二选一数据选择器的控制端,在二选一选择器输出端得到新的最值可能是原最值也可能是有效数据选择器输出的数据,二选一数据选择器可以将本轮比较生成的最值传递至d触发器,d触发器将最值发送给控制模块,同时d触发器的输出端也连接至多位数值比较器、二选一数据比较器的输入端,使得本轮生成的最值用作下轮比较的原最值。

本实施例中,块信息表包括空闲块、坏块、系统保留块和耗尽块。如图2所示,分别为各项位宽不同的块信息表的示意图,其均包括块类型(空闲块,坏块,系统保留块,耗尽块等)、块有效页个数、块擦除次数这三项,但每一项的位宽是可变的。工作时,系统cpu可以读取块信息表的地址、长度和位宽信息,

实施例2

本实施例公开了一种自适应磨损均衡垃圾回收加速方法,包括以下步骤:

s01)、系统中的cpu将需要求最值的块信息表的地址及长度、位宽信息通过控制总线配置给控制模块中相应的寄存器;

s02)、控制模块将块信息表的地址及长度传递给数据读取模块并启动数据读取模块,同时控制模块将位宽信息以及比较项传递给最值生成模块并启动其比较操作;

s03)、数据读取模块从数据总线读取块信息表的数据并传递给最值生成模块;

s04)、最值生成模块将本次得到的表信息按类型选择与之前所得同类型块中的对应项进行迭代比较,得到当前项目的最值和该块的地址,在进行数据比较的同时,累加器将每一个有效数据进行累加得到同类型下所有块的擦除次数总和和/或有效页个数总和;

s05)、重复步骤s03和步骤s04,直到数据读取模块将指定长度的数据全部读入,最值生成模块将所有数据的四项最值给出,进行最大值比较时,四项最值为第一大、第二大、第三大、第四大的值,进行最小值比较时,四项最值为第一小、第二小、第三小、第四小的值;

s06)、将步骤s05得到的每一类型块的四个最值和其对应的块地址以及累加值存入控制模块的寄存器组,以备cpu访问。

进一步的,控制模块向最值生成模块发送的比较项包括擦除次数和/或有效页次数。

进一步的,迭代比较在比较项相应的比较器内实现,将表项逐个读入比较器中,与比较器中所保留的到目前为止的最值进行比较进而产生新的最值,在此同时数据线根据位宽信息接到正确的比较器输入端。

传统方法只依靠软件算法实现磨损均衡和垃圾回收,而本装置采用硬件加速策略帮助软件实现磨损均衡和垃圾回收。本装置的优点在于结构简单,配置灵活,因其可固件动态调整表位宽所以可支持的flash类型较广。充分利用硬件的速度优势配合软件减少flash每次擦写所耗时间,提高闪存的使用效率。

以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。

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