CN111045956B - 一种基于多核cpu的固态硬盘垃圾回收方法以及装置 - Google Patents
一种基于多核cpu的固态硬盘垃圾回收方法以及装置 Download PDFInfo
- Publication number
- CN111045956B CN111045956B CN201911332568.2A CN201911332568A CN111045956B CN 111045956 B CN111045956 B CN 111045956B CN 201911332568 A CN201911332568 A CN 201911332568A CN 111045956 B CN111045956 B CN 111045956B
- Authority
- CN
- China
- Prior art keywords
- module
- block address
- data
- target
- garbage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种基于多核CPU的固态硬盘垃圾回收方法、装置、设备及计算机可读存储介质,应用于垃圾回收模块,包括:对目标block进行垃圾回收时,对反向映射表进行读取及校验,以获取目标block中的有效数据,并将有效数据写入至垃圾回收表中;当垃圾回收表中有效数据的数量到达阈值时,将垃圾回收表发送至FTL模块,以便FTL模块将通过验证的目标有效数据搬移至预选block;完成数据搬移后,将目标block中的目标有效数据标记为无效数据;当目标block中剩余有效数据为0时,对目标block进行擦除,完成目标block的垃圾回收。本发明所提供的方法、装置、设备及计算机可读存储介质,提高了垃圾回收的效率。
Description
技术领域
本发明涉及固态存储技术领域,特别是涉及一种基于多核CPU的固态硬盘垃圾回收方法、装置、设备以及计算机可读存储介质。
背景技术
随着互联网、云计算、物联网、大数据等技术的发展及广泛应用,在人类生活中,时时刻刻都会产生海量的数据,这些海量的数据需要进行处理和存储,信息技术的告诉发展对存储系统的性能提出了更高的要求。固态硬盘(Solid State Drive SSD)因为其读写速度快、能耗低,而被广泛的应用。
当前固态硬盘的使用变得越来越广泛,对固态硬盘的性能、容量的要求都更高,随着闪存技术的发展、主控芯片的性能提高,固态硬盘的相关技术不断更新,使得能够尽可能满足应用的需求。
当前固态硬盘使用的场景变得越来越复杂,对固态硬盘的要求也越来越高,无论从性能还是稳定性上,都是有严格标准的,最重要的一方面就是性能的一致性,即在固态硬盘的使用过程中,是不允许读写性能的突变,这将导致应用无法预知固态硬盘的状态,从而给应用的运行带来不必要的麻烦。如何保证固态硬盘性能的一致性成为了固态硬盘固件研究的一个重要课题。
当前固态硬盘的设计中,性能是评价固态硬盘的一个重要指标,其中随机写IOPS(Input/output Operations Per Second每秒的读写次数)最具有代表性的一项,在固态硬盘的设计中,垃圾回收(Garbage Collection GC)与磨损均衡(Wear-leveling WL)算法是影响随机写IOPS的主要因素,因此如何提高垃圾回收效率与速度成为了固态硬盘设计的重要方面。
在SSD实现中,可以采用多核CPU和单双核CPU的方式进行实现,在多核CPU的架构中,通过多个低计算能力的MCU(Microcontroller Unit微控制单元)配合,并搭配适当的固件算法实现高性能的SSD。
现有技术中对于多核CPU的SSD架构来说,垃圾回收模块与FTL(Flashtranslation layer闪存转换层)模块在不同的MCU上,两个模块分别完成垃圾回收功能和用户读写请求处理。通常的垃圾回收方法是通过垃圾回收模块查找每个block上的有效数据,并将这些有效数据凑成一个page然后发送FTL模块,用于真正的flash写与L2P表的更新,其中该过程中会将上述有效数据从flash中读取上来,该读取动作也是由垃圾回收模块发起,FTL模块来完成真正的flash读。
现有的处理方式,在垃圾回收模块与FTL模块间会有大量的消息交互,分别是flash的读取和flash的写操作;由于两个模块都在大量的处理模块间消息,导致了两个模块的负担变重、性能被MCU计算力限制的现象,从而使得性能无法获得更高的水平。
综上所述可以看出,如何提高固件硬盘垃圾回收的效率是目前有待解决的问题。
发明内容
本发明的目的是提供一种基于多核CPU的固态硬盘垃圾回收方法、装置、设备以及计算机可读存储介质,以解决现有技术中固件硬盘垃圾回收方式的回收效率低的问题。
为解决上述技术问题,本发明提供一种基于多核CPU的固态硬盘垃圾回收方法,应用于垃圾回收模块,包括:对目标block进行垃圾回收时,获取FTL模块在host写入时生成的与用户数据对应并一同写入flash的反向映射表的存储位置,发起对所述反向映射表的读取,其中,所述反向映射表包括逻辑区块地址与物理区块地址;完成所述反向映射表的读取后,对所述反向映射表进行校验,以获取所述目标block中的有效数据,并将所述有效数据写入至垃圾回收表中;判断所述垃圾回收表中有效数据的数量是否大于等于预设数量阈值;若所述垃圾回收表中有效数据的数量大于等于所述预设数量阈值,则将所述垃圾回收表发送至所述FTL模块,以便所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据搬移至预选block;当接收到所述FTL模块发送的无效所述目标有效数据的消息后,将所述目标block中的所述目标有效数据标记为无效数据;判断所述目标block中剩余有效数据是否为0,若所述目标block中剩余有效数据为0,则对所述目标block进行擦除,完成所述目标block的垃圾回收。
优选地,所述完成所述反向映射表的读取后,对所述反向映射表进行校验,以获取所述目标Block中的有效数据,并将所述有效数据写入至垃圾回收表中包括:
完成所述反向映射表的读取后,读取所述反向映射表中的逻辑区块地址与物理区块地址的映射关系,读取所述物理区块地址对应的当前L2P表值;
将所述物理区块地址与所述当前L2P表值进行对比,判断所述物理区块地址与所述当前L2P表值是否相同;
若所述物理区块地址与所述当前L2P表值相同,则判定所述物理区块地址中的数据为需要进行搬移的有效数据,并将所述逻辑区块地址与物理区块地址的映射关系写入所述垃圾回收表中。
优选地,所述将所述物理区块地址与所述当前L2P表值进行对比,判断所述物理区块地址与所述当前L2P表值是否相同后包括:
若所述物理区块地址与所述当前L2P表值不同,则判定所述物理区块地址中的数据为无需搬移的无效数据。
优选地,所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据搬移至预选block包括:
所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据host写入预选block,并向所述垃圾回收模块发送无效所述目标有效数据的消息。
优选地,所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据host写入预选block,并向所述垃圾回收模块发送无效所述目标有效数据的消息包括:
所述FTL模块依据L2P表判断所述垃圾回收表中逻辑区块地址与物理区块地址的映射关系是否通过验证;
若所述垃圾回收表中逻辑区块地址与物理区块地址的映射关系通过验证,则所述FTL模块发起目的地址为host写的buffer地址的flash读;
完成flash读后,所述FTL模块将所述物理区块地址中的目标有效数据host写入所述预选block上,并向所述垃圾回收模块发送无效所述目标有效数据的消息。
本发明还提供了一种基于多核CPU的固态硬盘垃圾回收装置,应用于垃圾回收模块,包括:
获取模块,用于对目标block进行垃圾回收时,获取FTL模块在host写入时生成的与用户数据对应并一同写入flash的反向映射表的存储位置,发起对所述反向映射表的读取,其中,所述反向映射表包括逻辑区块地址与物理区块地址;
校验模块,用于完成所述反向映射表的读取后,对所述反向映射表进行校验,以获取所述目标block中的有效数据,并将所述有效数据写入至垃圾回收表中;
判断模块,用于判断所述垃圾回收表中有效数据的数量是否大于等于预设数量阈值;
发送模块,用于若所述垃圾回收表中有效数据的数量大于等于所述预设数量阈值,则将所述垃圾回收表发送至所述FTL模块,以便所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据搬移至预选block;
标记模块,用于当接收到所述FTL模块发送的无效所述目标有效数据的消息后,将所述目标block中的所述目标有效数据标记为无效数据;
擦除模块,用于判断所述目标block中剩余有效数据是否为0,若所述目标block中剩余有效数据为0,则对所述目标block进行擦除,完成所述目标block的垃圾回收。
优选地,所述校验模块包括:
读取单元,用于完成所述反向映射表的读取后,读取所述反向映射表中的逻辑区块地址与物理区块地址的映射关系,读取所述物理区块地址对应的当前L2P表值;
对比单元,用于将所述物理区块地址与所述当前L2P表值进行对比,判断所述物理区块地址与所述当前L2P表值是否相同;
第一判定单元,用于若所述物理区块地址与所述当前L2P表值相同,则判定所述物理区块地址中的数据为需要进行搬移的有效数据,并将所述逻辑区块地址与物理区块地址的映射关系写入所述垃圾回收表中。
优选地,所述对比单元后包括:
第二判定单元,用于若所述物理区块地址与所述当前L2P表值不同,则判定所述物理区块地址中的数据为无需搬移的无效数据。
本发明还提供了一种基于多核CPU的固态硬盘垃圾回收设备,包括:
存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于多核CPU的固态硬盘垃圾回收方法的步骤。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于多核CPU的固态硬盘垃圾回收方法的步骤。
本发明所提供的基于多核CPU的固态硬盘垃圾回收方法,在host写入时,FTL模块生成与用户数据对应的反向映射表,并将所述反向映射表与所述用户数据一起写入flash。在对固态硬盘中的目标block进行垃圾回收时,垃圾回收模块获取所述反向映射表的存储位置,发起对所述反向映射表的读取。所述垃圾回收模块完成所述反向映射表的读取后,对所述反向映射表进行校验,从而获取所述目标block中的有效数据,并将所述有效数据写入垃圾回收表中。当所述垃圾回收表中的有效数据数量大于等于预设数量阈值时,所述垃圾回收模块将将所述垃圾回收表发送至所述FTL模块。相比较现有技术中每检测到一次有效数据所述垃圾回收模块与所述FTL模块就进行一次信息交互,本发明将多个有效数据通过一次信息便可发送至所述FTL模块,大大减少了两个模块之间的交互量,提高了垃圾回收的效率。由于将有效数据写入所述垃圾回收表与将所述垃圾回收表发送至所述FTL模块之间存在时间差,因此当所述FTL模块接收到所述垃圾回收模块发送的所述垃圾回收表时,对所述垃圾回收表中的有效数据进行再次验证,获取通过再次验证的目标有效数据,并将所述目标有效数据写入预选block中。所述FTL模块完成所述目标有效数据的搬移后,向所述垃圾回收模块发送无效所述目标有效数据的消息;所述垃圾回收模块接收到所述FTL模块发送的消息后,将所述目标block中的目标有效数据标注为无效数据。完成标注后,所述垃圾回收模块判断所述目标block中剩余的有效数据是否为0,若是,则对所述目标block进行擦除,完成所述目标block的垃圾回收。本发明所提供的方法,利用垃圾回收表将垃圾回收的多次交互合并成一次,降低多核架构下的消息交互次数,提升回收效率。在本发明中所述垃圾回收模块不在关心flash读的过程,完全由所述FTL模块来完成;且所述FTL模块无论如何都要进行flash的读,因此本发明可以在不增加所述FTL模块的读负担的情况下,免除了所述垃圾回收模块发起读请求以及处理读返回的处理,大大降低了垃圾回收模块的负担,可以有更多的计算力完成其他功能的处理,提升整体的固件处理能力。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的基于多核CPU的固态硬盘垃圾回收方法的第一种具体实施例的流程图;
图2为本发明所提供的基于多核CPU的固态硬盘垃圾回收方法的第二种具体实施例的流程图;
图3为本发明实施例提供的一种基于多核CPU的固态硬盘垃圾回收装置的结构框图。
具体实施方式
本发明的核心是提供一种基于多核CPU的固态硬盘垃圾回收方法、装置、设备以及计算机可读存储介质,通过垃圾回收表将垃圾回收的多次交互合并成一次,降低多核架构下的消息交互次数,提升回收效率。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明所提供的基于多核CPU的固态硬盘垃圾回收方法的第一种具体实施例的流程图。本实施例所提供的方法应用于垃圾回收模块,具体操作步骤如下:
步骤S101:对目标block进行垃圾回收时,获取FTL模块在host写入时生成的与用户数据对应并一同写入flash的反向映射表的存储位置,发起对所述反向映射表的读取,其中,所述反向映射表由逻辑区块地址与物理区块地址组成;
在host写入时,所述FTL模块会在用户数据中添加管理数据,该管理数据称之为反向映射表,所述反向映射表中记录着该部分的flash中存储这哪些用户数据。所述用户数据与其对应的反向映射表一同写入flash中。并且所述反向映射表占用的flash位置与所述垃圾回收模块协商好,在垃圾回收时使用。所述反向映射表包括LBA(Logical Block Address逻辑区块地址)与PBA(Physics Block Address物理区块地址)。
当所述垃圾回收选中某个已经完全写入的目标block时,所述垃圾回收模块首先获取协商好的所述反向映射表的位置,发起所述反向映射表的读取,读取时需要通过FTL模块读取flash完成。
步骤S102:完成所述反向映射表的读取后,对所述反向映射表进行校验,以获取所述目标block中的有效数据,并将所述有效数据写入至垃圾回收表中;
当所述垃圾回收模块完成所述反向映射表的读取后,进行所述反向映射表的校验。对所述反向映射表进行校验时,首先读取所述反向映射表中逻辑区块地址与物理区块地址的映射关系(LBA,PBA),通过读取LBA对应的当前L2P(逻辑物理映射表)表值,与PBA进行对比。如果PBA与当前L2P表值不同,则说明该LBA的数据已经被复写过,该PBA中的数据已经标记为无效无需搬移。如果PBA与当前L2P表值相同,则表明该PBA中的数据为有效数据需要搬移,将(LBA,PBA)写入到所述垃圾回收表中。
步骤S103:判断所述垃圾回收表中有效数据的数量是否大于等于预设数量阈值;
步骤S104:若所述垃圾回收表中有效数据的数量大于等于所述预设数量阈值,则将所述垃圾回收表发送至所述FTL模块,以便所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据搬移至预选block;
当所述垃圾回收表中有效数据的数据达到所述预设数量阈值时,所述垃圾回收模块将所述垃圾回收表发送给FTL模块,通知FTL模块完成垃圾回收。所述预设数量阈值可以通过资源的使用情况及调优情况进行设置。
在本实施例中,对所述垃圾回收模块进行校验,可以有效减少所述FTL模块的计算量,降低所述FTL模块的负担。现有技术中均是将校验后(LBA,PBA)发送给所述FTL模块,导致所述垃圾回收模块与所述FTL模块的交互量非常多,或者直接发送PBA的flash读给所述FTL模块,这样的方式两个模块的交互量也非常多。而本实施例所提供的方法,将多次交互消息合并成一个减少了两个模块的消息交互处理负担。
由于从将有效数据写入所述垃圾回收表至将所述FTL模块接收所述垃圾回收表中存在时间差,所述在所述FTL模块接收到所述垃圾回收表后,需要对所述垃圾回收表进行重新校验。读取所述垃圾回收表的(LBA,PBA),读取LBA对应的当前L2P表值,将PBA与当前L2P表值进行比较,若相同则通过验证为目标有效数据,若不同则未通过验证为无效数据无需搬移。
步骤S105:当接收到所述FTL模块发送的无效所述目标有效数据的消息后,将所述目标block中的所述目标有效数据标记为无效数据;
步骤S106:判断所述目标block中剩余有效数据是否为0,若所述目标block中剩余有效数据为0,则对所述目标block进行擦除,完成所述目标block的垃圾回收。
本实施例所提供的方法,采用分离垃圾回收功能的不同阶段,通过垃圾回收表的方式进行分离,提升垃圾回收的效率,提升整体固件的处理能力。
基于上述实施例,在本实施例中,所述FTL模块可以采用host写入的处理将所述目标block中的目标有效数据搬移至新的预选block中。通过上述操作,可以将垃圾回收的动作与host的动作复用,减少所述FTL模块代码的复杂度,有效降低代码维护难度。
请参考图2,图2为本发明所提供的基于多核CPU的固态硬盘垃圾回收方法的第二种具体实施例的流程图。本实施例所提供的方法具体操作步骤如下:
步骤S201:在host写入时,FTL模块生成与用户数据对应的反向映射表,并将所述用户数据及所述反向映射表一同写入flash;
步骤S202:对目标block进行垃圾回收时,垃圾回收模块获取所述反向映射表的存储位置,发起对所述反向映射表的读取;
步骤S203:完成所述反向映射表的读取后,所述垃圾扫描模块读取所述反向映射表中的逻辑区块地址与物理区块地址的映射关系,读取所述物理区块地址对应的当前L2P表值,并判断所述物理区块地址与所述当前L2P表值是否相同;
步骤S204:若所述物理区块地址与所述当前L2P表值不同,则所述垃圾扫描模块判定所述物理区块地址中的数据为无需搬移的无效数据;
步骤S205:若所述物理区块地址与所述当前L2P表值相同,则所述垃圾扫描模块判定所述物理区块地址中的数据为需要进行搬移的有效数据,并将所述逻辑区块地址与物理区块地址的映射关系写入所述垃圾回收表中;
步骤S206:所述垃圾回收模块判断所述垃圾回收表中有效数据的数量是否大于等于预设数量阈值;
步骤S207:若所述垃圾回收表中有效数据的数量大于等于所述预设数量阈值,则所述垃圾回收模块将所述垃圾回收表发送至所述FTL模块;
步骤S208:所述FTL模块依据L2P表判断所述垃圾回收表中逻辑区块地址与物理区块地址的映射关系是否通过验证;
在本实施例中,所述FTL模块对所述垃圾回收表中的(LBA,PBA)的校验方法与所述垃圾回收模块对所述反向映射表中的(LBA,PBA)的校验方法相同。
步骤S209:若所述垃圾回收表中逻辑区块地址与物理区块地址的映射关系通过验证,则所述FTL模块发起目的地址为host写的buffer地址的flash读;
步骤S210:完成flash读后,所述FTL模块将所述物理区块地址中的目标有效数据host写入所述预选block上,并向所述垃圾回收模块发送无效所述目标有效数据的消息;
若有效数据没有通过校验,则丢弃该有效数据;如果有效数据通过校验,则发起flash读,目的地址为host写的buffer地址。当完成flash读之后,将垃圾回收的写转换为host写的处理,这样在FTL模块中代码复杂度可以大大减少。在host写过程中,数据会被写入一个新的位置(new_PBA)上。
步骤S211:当接收到所述FTL模块发送的无效所述目标有效数据的消息后,将所述目标block中的所述目标有效数据标记为无效数据;
步骤S212:判断所述目标block中剩余有效数据是否为0,若所述目标block中剩余有效数据为0,则对所述目标block进行擦除,完成所述目标block的垃圾回收。
本实施例所提供的方法,通过垃圾回收表将垃圾回收的多次交互合并成一次,降低了多核架构下的消息交互次数,提升了回收效率,并将host与垃圾回收的处理统一化,降低了代码维护的难度。
请参考图3,图3为本发明实施例提供的一种基于多核CPU的固态硬盘垃圾回收装置的结构框图。本实施例所提供的装置应用于垃圾回收模块,具体可以包括:
获取模块100,用于对目标block进行垃圾回收时,获取FTL模块在host写入时生成的与用户数据对应并一同写入flash的反向映射表的存储位置,发起对所述反向映射表的读取,其中,所述反向映射表包括逻辑区块地址与物理区块地址;
校验模块200,用于完成所述反向映射表的读取后,对所述反向映射表进行校验,以获取所述目标block中的有效数据,并将所述有效数据写入至垃圾回收表中;
判断模块300,用于判断所述垃圾回收表中有效数据的数量是否大于等于预设数量阈值;
发送模块400,用于若所述垃圾回收表中有效数据的数量大于等于所述预设数量阈值,则将所述垃圾回收表发送至所述FTL模块,以便所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据搬移至预选block;
标记模块500,用于当接收到所述FTL模块发送的无效所述目标有效数据的消息后,将所述目标block中的所述目标有效数据标记为无效数据;
擦除模块600,用于判断所述目标block中剩余有效数据是否为0,若所述目标block中剩余有效数据为0,则对所述目标block进行擦除,完成所述目标block的垃圾回收。
本实施例的基于多核CPU的固态硬盘垃圾回收装置用于实现前述的基于多核CPU的固态硬盘垃圾回收方法,因此基于多核CPU的固态硬盘垃圾回收装置中的具体实施方式可见前文中的基于多核CPU的固态硬盘垃圾回收方法的实施例部分,例如,获取模块100,校验模块200,判断模块300,发送模块400,标记模块500,擦除模块600,分别用于实现上述基于多核CPU的固态硬盘垃圾回收方法中步骤S101,S102,S103,S104,S105和S106,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。
本发明具体实施例还提供了一种基于多核CPU的固态硬盘垃圾回收设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于多核CPU的固态硬盘垃圾回收方法的步骤。
本发明具体实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于多核CPU的固态硬盘垃圾回收方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的基于多核CPU的固态硬盘垃圾回收方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (8)
1.一种基于多核CPU的固态硬盘垃圾回收方法,其特征在于,应用于垃圾回收模块,包括:
对目标block进行垃圾回收时,获取FTL模块在host写入时生成的与用户数据对应并一同写入flash的反向映射表的存储位置,发起对所述反向映射表的读取,其中,所述反向映射表包括逻辑区块地址与物理区块地址;
完成所述反向映射表的读取后,读取所述反向映射表中的逻辑区块地址与物理区块地址的映射关系,读取所述物理区块地址对应的当前L2P表值;
将所述物理区块地址与所述当前L2P表值进行对比,判断所述物理区块地址与所述当前L2P表值是否相同;
若所述物理区块地址与所述当前L2P表值相同,则判定所述物理区块地址中的数据为需要进行搬移的有效数据,并将所述逻辑区块地址与物理区块地址的映射关系写入垃圾回收表中;
判断所述垃圾回收表中有效数据的数量是否大于等于预设数量阈值;
若所述垃圾回收表中有效数据的数量大于等于所述预设数量阈值,则将所述垃圾回收表发送至所述FTL模块,以便所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据搬移至预选block;
当接收到所述FTL模块发送的无效所述目标有效数据的消息后,将所述目标block中的所述目标有效数据标记为无效数据;
判断所述目标block中剩余有效数据是否为0,若所述目标block中剩余有效数据为0,则对所述目标block进行擦除,完成所述目标block的垃圾回收。
2.如权利要求1所述的方法,其特征在于,所述将所述物理区块地址与所述当前L2P表值进行对比,判断所述物理区块地址与所述当前L2P表值是否相同后包括:
若所述物理区块地址与所述当前L2P表值不同,则判定所述物理区块地址中的数据为无需搬移的无效数据。
3.如权利要求1所述的方法,其特征在于,所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据搬移至预选block包括:
所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据host写入预选block,并向所述垃圾回收模块发送无效所述目标有效数据的消息。
4.如权利要求3所述的方法,其特征在于,所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据host写入预选block,并向所述垃圾回收模块发送无效所述目标有效数据的消息包括:
所述FTL模块依据L2P表判断所述垃圾回收表中逻辑区块地址与物理区块地址的映射关系是否通过验证;
若所述垃圾回收表中逻辑区块地址与物理区块地址的映射关系通过验证,则所述FTL模块发起目的地址为host写的buffer地址的flash读;
完成flash读后,所述FTL模块将所述物理区块地址中的目标有效数据host写入所述预选block上,并向所述垃圾回收模块发送无效所述目标有效数据的消息。
5.一种基于多核CPU的固态硬盘垃圾回收装置,其特征在于,应用于垃圾回收模块,包括:
获取模块,用于对目标block进行垃圾回收时,获取FTL模块在host写入时生成的与用户数据对应并一同写入flash的反向映射表的存储位置,发起对所述反向映射表的读取,其中,所述反向映射表包括逻辑区块地址与物理区块地址;
校验模块,用于完成所述反向映射表的读取后,读取所述反向映射表中的逻辑区块地址与物理区块地址的映射关系,读取所述物理区块地址对应的当前L2P表值;将所述物理区块地址与所述当前L2P表值进行对比,判断所述物理区块地址与所述当前L2P表值是否相同;若所述物理区块地址与所述当前L2P表值相同,则判定所述物理区块地址中的数据为需要进行搬移的有效数据,并将所述逻辑区块地址与物理区块地址的映射关系写入垃圾回收表中;
判断模块,用于判断所述垃圾回收表中有效数据的数量是否大于等于预设数量阈值;
发送模块,用于若所述垃圾回收表中有效数据的数量大于等于所述预设数量阈值,则将所述垃圾回收表发送至所述FTL模块,以便所述FTL模块对所述垃圾回收表中的有效数据进行验证后,将通过验证的目标有效数据搬移至预选block;
标记模块,用于当接收到所述FTL模块发送的无效所述目标有效数据的消息后,将所述目标block中的所述目标有效数据标记为无效数据;
擦除模块,用于判断所述目标block中剩余有效数据是否为0,若所述目标block中剩余有效数据为0,则对所述目标block进行擦除,完成所述目标block的垃圾回收。
6.如权利要求5所述的装置,其特征在于,所述校验模块包括:
第二判定单元,用于若所述物理区块地址与所述当前L2P表值不同,则判定所述物理区块地址中的数据为无需搬移的无效数据。
7.一种基于多核CPU的固态硬盘垃圾回收设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述一种基于多核CPU的固态硬盘垃圾回收方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述一种基于多核CPU的固态硬盘垃圾回收方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911332568.2A CN111045956B (zh) | 2019-12-22 | 2019-12-22 | 一种基于多核cpu的固态硬盘垃圾回收方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911332568.2A CN111045956B (zh) | 2019-12-22 | 2019-12-22 | 一种基于多核cpu的固态硬盘垃圾回收方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111045956A CN111045956A (zh) | 2020-04-21 |
CN111045956B true CN111045956B (zh) | 2021-10-22 |
Family
ID=70237499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911332568.2A Active CN111045956B (zh) | 2019-12-22 | 2019-12-22 | 一种基于多核cpu的固态硬盘垃圾回收方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045956B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930301A (zh) * | 2020-06-29 | 2020-11-13 | 深圳佰维存储科技股份有限公司 | 垃圾回收优化方法、装置、存储介质及电子设备 |
CN112445428B (zh) * | 2020-10-23 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种硬盘主从垃圾回收方法及装置 |
CN112597070B (zh) * | 2020-11-16 | 2022-10-21 | 新华三大数据技术有限公司 | 一种对象回收方法及装置 |
US11494299B2 (en) | 2021-02-18 | 2022-11-08 | Silicon Motion, Inc. | Garbage collection operation management with early garbage collection starting point |
CN113626346B (zh) * | 2021-06-30 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的数据保护方法、装置、设备及介质 |
CN114489489B (zh) * | 2021-12-30 | 2024-02-23 | 山东云海国创云计算装备产业创新中心有限公司 | 一种用于固态硬盘的垃圾回收方法、装置、设备及介质 |
CN114721972B (zh) * | 2022-06-09 | 2022-11-11 | 深圳佰维存储科技股份有限公司 | 垃圾回收方法、装置、可读存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
CN109144885A (zh) * | 2017-06-27 | 2019-01-04 | 北京忆恒创源科技有限公司 | 固态存储设备的垃圾回收方法与固态存储设备 |
CN109739775A (zh) * | 2018-11-20 | 2019-05-10 | 北京航空航天大学 | 基于多阶段加锁的闪存转换层混合垃圾回收方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8862810B2 (en) * | 2012-09-27 | 2014-10-14 | Arkologic Limited | Solid state device write operation management system |
US10572391B2 (en) * | 2018-02-09 | 2020-02-25 | Western Digital Technologies, Inc. | Methods and apparatus for implementing a logical to physical address mapping in a solid state drive |
CN110287129B (zh) * | 2019-06-27 | 2021-07-13 | 深圳忆联信息系统有限公司 | 基于固态硬盘的l2p表更新及写入管理方法和装置 |
-
2019
- 2019-12-22 CN CN201911332568.2A patent/CN111045956B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503710A (zh) * | 2015-01-23 | 2015-04-08 | 福州瑞芯微电子有限公司 | 一种提高闪存写入速度的方法和装置 |
CN109144885A (zh) * | 2017-06-27 | 2019-01-04 | 北京忆恒创源科技有限公司 | 固态存储设备的垃圾回收方法与固态存储设备 |
CN109739775A (zh) * | 2018-11-20 | 2019-05-10 | 北京航空航天大学 | 基于多阶段加锁的闪存转换层混合垃圾回收方法 |
Non-Patent Citations (2)
Title |
---|
HOTIS: A Hot Data Identification Scheme to Optimize Garbage Collection of SSDs;J. Gu;《2017 IEEE International Symposium on Parallel and Distributed Processing with Applications and 2017 IEEE International Conference on Ubiquitous Computing and Communications (ISPA/IUCC)》;20180528;331-3317 * |
基于NAND闪存的固态硬盘缓存区管理算法研究;李永伟;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20180715(第07期);I137-51 * |
Also Published As
Publication number | Publication date |
---|---|
CN111045956A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111045956B (zh) | 一种基于多核cpu的固态硬盘垃圾回收方法以及装置 | |
US10303600B2 (en) | Method and storage device for collecting garbage data | |
US20150378888A1 (en) | Controller, flash memory apparatus, and method for writing data into flash memory apparatus | |
TWI536163B (zh) | 記憶體區塊之先佔式廢棄項目收集 | |
CN105204781B (zh) | 压缩方法、装置和设备 | |
CN103150258B (zh) | 一种固态存储系统的写入、读取及垃圾收集方法 | |
TWI479313B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US10203899B2 (en) | Method for writing data into flash memory apparatus, flash memory apparatus, and storage system | |
WO2016041401A1 (zh) | 向缓存中写入数据的方法及装置 | |
US10552377B2 (en) | Data discard method for journaling file system and memory management apparatus thereof | |
US20200183831A1 (en) | Storage system and system garbage collection method | |
CN109284233B (zh) | 一种存储系统的垃圾回收方法及相关装置 | |
CN115756312A (zh) | 数据访问系统、数据访问方法和存储介质 | |
CN109144428B (zh) | 一种应用于固态硬盘的垃圾回收方法、设备及介质 | |
US11366608B2 (en) | Method, electronic device and computer readable storage medium for i/o management | |
CN106055488B (zh) | 数据储存设备及其操作方法 | |
CN111190835A (zh) | 一种数据写入方法、装置、设备及介质 | |
WO2022166265A1 (zh) | 一种数据恢复方法、装置、设备及介质 | |
CN108536619B (zh) | 快速恢复ftl表的方法与装置 | |
CN110389706A (zh) | 一种指纹回收方法以及存储系统 | |
CN109542359B (zh) | 一种数据重建方法、装置、设备及计算机可读存储介质 | |
CN117234434B (zh) | 存储设备的操作控制方法及装置 | |
CN109144424B (zh) | 一种固态硬盘的读写方法、装置、设备及存储介质 | |
CN110888823B (zh) | 页扫描效率的提升方法、装置及计算机设备 | |
Uchigaito et al. | A control scheme for eliminating garbage collection during highspeed analysis of big-graph data stored in NAND flash memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |