CN118093449A - 一种存储器系统及其垃圾回收方法、电子设备 - Google Patents
一种存储器系统及其垃圾回收方法、电子设备 Download PDFInfo
- Publication number
- CN118093449A CN118093449A CN202211494333.5A CN202211494333A CN118093449A CN 118093449 A CN118093449 A CN 118093449A CN 202211494333 A CN202211494333 A CN 202211494333A CN 118093449 A CN118093449 A CN 118093449A
- Authority
- CN
- China
- Prior art keywords
- target
- pointer
- cache
- valid data
- data set
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 117
- 238000000034 method Methods 0.000 title claims abstract description 76
- 230000007704 transition Effects 0.000 claims abstract description 138
- 238000004590 computer program Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 10
- 239000007787 solid Substances 0.000 description 10
- 230000006870 function Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开实施例提供一种存储器系统及其垃圾回收方法、电子设备。所述方法包括:将存储器中待回收虚拟块组内的N个有效数据集依次读出至过渡缓冲器;其中,N为大于或等于2的整数;将所述过渡缓冲器内的所述有效数据集传输至对应的高速缓冲器,并将下一所述有效数据集读出至所述过渡缓冲器;将所述高速缓冲器内的所述有效数据集写入目标虚拟块组中对应的目标管芯组;其中,当前所述有效数据集从所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段,和下一所述有效数据集从所述待回收虚拟块组读出至所述过渡缓冲器的时段至少部分重叠。
Description
技术领域
本公开实施例涉及半导体技术领域,尤其涉及一种存储器系统及其垃圾回收方法、电子设备。
背景技术
垃圾回收(Garbage Collection,GC)可以包括以下步骤:挑选源虚拟块组(SourceVirtual Block),即待回收虚拟块组;从源虚拟块组中读取有效数据;将有效数据写入目标虚拟块组(Target Virtual Block)。如此,可以将源虚拟块组中全部存储数据擦除,得到新的可用虚拟块组。
然而,上述垃圾回收过程的处理速度有待进一步的提升。
发明内容
有鉴于此,本公开实施例为解决现有技术中存在的至少一个技术问题而提供一种存储器系统及其垃圾回收方法、电子设备。
为达到上述目的,本公开的技术方案是这样实现的:
第一方面,本公开实施例提供一种存储器系统的垃圾回收方法,所述方法包括:
将存储器中待回收虚拟块组内的N个有效数据集依次读出至过渡缓冲器;其中,N为大于或等于2的整数;
将所述过渡缓冲器内的所述有效数据集传输至对应的高速缓冲器,并将下一所述有效数据集读出至所述过渡缓冲器;
将所述高速缓冲器内的所述有效数据集写入目标虚拟块组中对应的目标管芯组;其中,当前所述有效数据集从所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段,和下一所述有效数据集从所述待回收虚拟块组读出至所述过渡缓冲器的时段至少部分重叠。
第二方面,本公开实施例提供一种存储器系统,所述存储器系统包括控制器和存储器;其中,所述控制器包括处理器和过渡缓冲器,所述存储器包括待回收虚拟块组、高速缓冲器和目标虚拟块组;所述处理器被配置为:
将所述待回收虚拟块组内的N个有效数据集依次读出至所述过渡缓冲器;其中,N为大于或等于2的整数;
将所述过渡缓冲器内的所述有效数据集传输至对应的高速缓冲器,并将下一所述有效数据集读出至所述过渡缓冲器;
将所述高速缓冲器内的所述有效数据集写入所述目标虚拟块组中对应的目标管芯组;其中,当前所述有效数据集从所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段,和下一所述有效数据集从所述待回收虚拟块组读出至所述过渡缓冲器的时段至少部分重叠。
第三方面,本公开实施例提供一种电子设备,所述电子设备包括如上述技术方案中所述的存储器系统。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时可以实现如上述技术方案中所述的存储器系统的垃圾回收方法。
本公开实施例提供一种存储器系统及其垃圾回收方法、电子设备。本公开实施例提供的存储器系统的垃圾回收方法中,当前有效数据集从高速缓冲器写入与高速缓冲器对应的目标管芯组的时段,和下一有效数据集从待回收虚拟块组存储至过渡缓冲器的时段至少部分重叠,换言之,至少存在某一时刻,当前有效数据集从高速缓冲器写入目标管芯组的过程还未结束且下一有效数据集从待回收虚拟块组读出至过渡缓冲器的过程已经开始,如此,可以有效地提升垃圾回收的处理速度。
附图说明
图1为垃圾回收的流程框图;
图2为本公开实施例提供的存储器系统的垃圾回收方法的流程示意图;
图3为本公开实施例提供的存储器系统的垃圾回收方法的流程框图一;
图4为本公开实施例提供的存储器系统的垃圾回收方法的流程框图二;
图5为本公开实施例提供的存储器系统的垃圾回收方法的流程框图三;
图6为本公开实施例提供的对检索队列进行分类的流程框图;
图7为一示例提供的确定当前目标管芯组对应的逻辑地址集的框图;
图8为另一示例提供的确定当前目标管芯组对应的逻辑地址集的框图;
图9为本公开实施例提供的一种存储器系统的示意图;
图10A为本公开实施例提供的一种存储器卡的示意图;
图10B为本公开实施例提供的一种固态驱动器的示意图;
图中包括:300、存储器系统;302、存储子系统;304、存储器;306、控制器;308、主机;310、过渡缓冲器;312、处理器;314、待回收虚拟块组;316、高速缓冲器;318、目标虚拟块组;502、存储器卡;504、存储器卡连接器;506、固态驱动器;508、固态驱动器连接器。
具体实施方式
下面将结合本公开实施方式及附图,对本公开实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本公开的一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
在下文的描述中,给出了大量具体的细节以便提供对本公开更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本公开可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本公开发生混淆,对于本领域公知的一些技术特征未进行描述;即,这里不描述实际实施例的全部特征,不详细描述公知的功能和结构。
为了彻底理解本公开,将在下列的描述中提出详细的步骤以及详细的结构,以便阐释本公开的技术方案。本公开的较佳实施例详细描述如下,然而除了这些详细描述外,本公开还可以具有其他实施方式。
参考图1,图1为垃圾回收的流程框图。如图1所示,在步骤S101中,检索队列缓冲器(Retrieve Queue Buffer),即,将待回收虚拟块组内的一组有效数据的逻辑地址/物理地址(Logic Cell Address/Physical Cell Address,LCA/PCA)写入检索队列缓冲器。
在步骤S102中,从待回收虚拟块组读取(Read from Source Virtual Block),即,根据检索队列缓冲器内的逻辑地址/物理地址读取待回收虚拟块组内的一组有效数据。
在步骤S103中,判断是否完成一组有效数据的读取(Wait Read Done),若判断结果为“是”,则执行步骤S104;若判断结果为“否”,则继续执行读取操作,直至完成一组有效数据的读取。
在步骤S104中,写入目标虚拟块组(Program to Target Virtual Block),即,将待回收虚拟块组内的一组有效数据写入目标虚拟块组。
在步骤S105中,判断是否完成一组有效数据的写入(Wait Program Done),若判断结果为“是”,则执行步骤S101,将待回收虚拟块组内的下一组有效数据写入检索队列缓冲器;若判断结果为“否”,则继续执行写入操作,直至完成一组有效数据的写入。
上述垃圾回收的过程中,从待回收虚拟块组读取一组有效数据后,将该组有效数据写入目标虚拟块组,即,将待回收虚拟块组内的一组有效数据搬移至目标虚拟块组。并且,完成一组有效数据的搬移(包括读取和写入操作)后,才会执行下一组有效数据的搬移(包括读取和写入操作)。此时,垃圾回收的过程为串行处理过程,同一时刻,仅对一组有效数据执行读取操作或写入操作。因此,垃圾回收过程的处理速度有待进一步的提升。
此外,同一时刻,仅对一组有效数据执行写入操作,将该组有效数据写入目标虚拟块组内对应的目标管芯组,那么,同一时刻,仅对目标虚拟块组内的一个目标管芯组执行写入操作,目标虚拟块组内其他目标管芯组均处于空闲状态,未充分利用这些空闲的目标管芯组。
有鉴于此,本公开实施例提供一种存储器系统及其垃圾回收方法、电子设备。本公开实施例提供的存储器系统的垃圾回收方法中,当前有效数据集从高速缓冲器写入与高速缓冲器对应的目标管芯组的时段,和下一有效数据集从待回收虚拟块组读出至过渡缓冲器的时段至少部分重叠,换言之,至少存在某一时刻,当前有效数据集从高速缓冲器写入目标管芯组的过程还未结束且下一有效数据集从待回收虚拟块组读出至过渡缓冲器的过程已经开始,如此,可以有效地提升垃圾回收的处理速度。
参考图2,图2为本公开实施例提供的存储器系统的垃圾回收方法的流程示意图。如图2所示,本公开实施例提供一种存储器系统的垃圾回收方法,该方法包括以下步骤:
步骤S201:将存储器中待回收虚拟块组内的N个有效数据集依次读出至过渡缓冲器;其中,N为大于或等于2的整数;
步骤S202:将过渡缓冲器内的有效数据集传输至对应的高速缓冲器,并将下一有效数据集读出至过渡缓冲器;
步骤S203:将高速缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组;其中,当前有效数据集从高速缓冲器写入与高速缓冲器对应的目标管芯组的时段,和下一有效数据集从待回收虚拟块组读出至过渡缓冲器的时段至少部分重叠。
这里,存储器通常由存储块(Block)组成,将不同管芯(Die)、不同存储平面(Plane)上的相同存储块号(Block ID)的存储块都拼在一起组成虚拟块组(VirtualBlock,VB)。通常固件(Firmware)以虚拟块组为单位管理存储器。本公开实施例中,待回收虚拟块组指的是存储系统在触发垃圾回收时,需要进行垃圾回收的虚拟块组,即,从待回收虚拟块组搬移有效数据集;目标虚拟块组指的是存储系统在触发垃圾回收时,需要进行写入有效数据集的虚拟块组,即,将有效数据集搬移至目标虚拟块组。
需要说明的是,存储器可以包括系统池(System pool)和用户池(User pool),其中,系统池可用于存储系统数据,用户池可用于存储用户数据。存储器的系统池和用户池均可以以虚拟块组为单位进行管理。本公开实施例中,以位于用户池内的虚拟块组进行垃圾回收为例进行示例性说明,因此,待回收虚拟块组和目标虚拟块组均位于用户池内。
本公开实施例中,对待回收虚拟块组的数量、待回收虚拟块组内管芯的数量、目标虚拟块组的数量以及目标管芯组的数量均不作特殊的限定。
在一些实施例中,目标虚拟块组可以包括2个目标管芯组,每个目标管芯组包括2个目标管芯,例如,第一目标管芯组包括die0和die1,第二目标管芯组包括die2和die3。
在另一些实施例中,目标虚拟块组可以包括4个目标管芯组,每个目标管芯组包括2个目标管芯,例如,第一目标管芯组包括die0和die1,第二目标管芯组包括die2和die3,第三目标管芯组包括die4和die5,第四目标管芯组包括die6和die7。
本公开实施例中,存储器系统可以包括NAND存储器。
参考图3,图3为本公开实施例提供的存储器系统的垃圾回收方法的流程框图一。下面将结合图3所示,简要地说明本公开实施例提供的存储器系统的垃圾回收方法。
本公开实施例中,在步骤S201中,待回收虚拟块组内包括N个有效数据集,将待回收虚拟块组内的N个有效数据集依次读出至过渡缓冲器(copy buffer)。
本公开实施例中,在步骤S202中,将过渡缓冲器内的有效数据集传输至对应的高速缓冲器(Cache),并将下一有效数据集读出至过渡缓冲器。参考图3(a)所示,将过渡缓冲器内的有效数据集传输至对应的高速缓冲器的时长为t1。
需要说明的是,由于过渡缓冲器的存储容量有限,每次将待回收虚拟块组内的一个有效数据集读出至过渡缓冲器,等待过渡缓冲器将当前有效数据集传输至对应的高速缓冲器后,再将下一有效数据集读出至过渡缓冲器。过渡缓冲器作为垃圾回收的中转缓存,将当前有效数据集传输至高速缓冲器后即可释放,以将下一有效数据集读出至过渡缓冲器。
本公开实施例中,在步骤S203中,将高速缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组。参考图3(a)所示,将高速缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组的时长为t2。
本公开实施例中,将待回收虚拟块组内的有效数据集读出至过渡缓冲器的时长,小于将过渡缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组,即,读取有效数据集的时长远小于将有效数据集写入目标管芯组的时长。本公开实施例中,至少存在某一时刻,当前有效数据集从高速缓冲器写入与高速缓冲器对应的目标管芯组的过程还未结束,且下一有效数据集从待回收虚拟块组读出至过渡缓冲器的过程已经开始,即,相邻有效数据集从高速缓冲器写入与高速缓冲器对应的目标管芯组的时段和从待回收虚拟块组读出至过渡缓冲器的时段至少部分重叠。换言之,本公开实施例中,当前有效数据集的写入操作和下一有效数据集的读取操作可以并行处理,无需等待当前有效数据集完成读取操作和写入操作后,才开始下一有效数据集的读取操作,如此,可以有效地提升垃圾回收的处理速度。
可以举例的是,如果待回收虚拟块组包括A有效数据集和B有效数据集,A有效数据集和B有效数据集均可以包括多个有效数据。例如,针对A有效数据集,先将A有效数据集的多个有效数据依次读出至过渡缓冲器,直至过渡缓冲器内存储有A有效数据集的全部有效数据;再将过渡缓冲器内的A有效数据集的多个有效数据依次传输至高速缓冲器,直至高速缓冲器内存储有A有效数据集的全部有效数据;最后将高速缓冲器内的A有效数据集的多个有效数据依次存储至目标管芯组。换言之,以A有效数据集为单位进行垃圾回收,A有效数据集的全部有效数据读出至过渡缓冲器后,开始将过渡缓冲器内的A有效数据集传输至高速缓冲器;A有效数据集的全部有效数据传输至高速缓冲器后,开始将高速缓冲器内的A有效数据集存储至目标管芯组。
这里,A有效数据集的多个有效数据从高速缓冲器写入与高速缓冲器对应的目标管芯组的过程还未结束,B有效数据集的多个有效数据从待回收虚拟块组读出至过渡缓冲器的过程已经开始。更具体而言,可能存在某一时刻,A有效数据集的第20个有效数据正从高速缓冲器写入与高速缓冲器对应的目标管芯组的同时,B有效数据集的第1个有效数据正从待回收虚拟块组读出至过渡缓冲器。
还可以举例的是,如果待回收虚拟块组包括A有效数据集和B有效数据集,A有效数据集和B有效数据集均可以包括多个有效数据子集。例如,针对A有效数据集,A有效数据集可以包括多个有效数据子集,先将A有效数据集的第一有效数据子集读出至过渡缓冲器;将A有效数据集的第二有效数据子集读出至过渡缓冲器的同时,将过渡缓冲器内的第一有效数据子集传输至高速缓冲器;将A有效数据集的第三有效数据子集读出至过渡缓冲器的同时,将高速缓冲器内的第一有效数据子集存储至目标管芯组。本公开实施例对于A有效数据集所包括的有效数据子集的数量和有效数据子集所包括的有效数据的数量并无特殊的限定。在一些实施例中,有效数据子集可以包括1个有效数据。
本公开实施例中,无需等待A有效数据集的全部有效数据子集均读出至过渡缓冲器,就可以将A有效数据集的部分有效数据子集传输至高速缓冲器;也无需等待A有效数据集的全部有效数据子集均传输至高速缓冲器,就可以将A有效数据集的部分有效数据子集存储至目标管芯组。
这里,A有效数据集的多个有效数据子集从高速缓冲器写入与高速缓冲器对应的目标管芯组的过程还未结束,B有效数据集的多个有效数据子集从待回收虚拟块组读出至过渡缓冲器的过程已经开始。更具体而言,可能存在某一时刻,A有效数据集的某个有效数据子集正从高速缓冲器写入与高速缓冲器对应的目标管芯组的同时,B有效数据集的第1个有效数据子集正从待回收虚拟块组读出至过渡缓冲器。
参考图3(c)所示,将过渡缓冲器内的有效数据集传输至对应的高速缓冲器的时长小于将高速缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组的时长,即,t1<t2。
本公开实施例中,将过渡缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组的总时长t,包括:将过渡缓冲器内的有效数据集传输至对应的高速缓冲器的时长t1和将高速缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组的时长t2之和,即,t=t1+t2。
本公开实施例中,将过渡缓冲器内的有效数据集存储至高速缓冲器的时长t1,小于将高速缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组的时长t2。本公开实施例中,正是由于将过渡缓冲器内的有效数据集传输至对应的高速缓冲器的时长t1小于将高速缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组的时长t2,至少存在某一时刻,当前有效数据集从高速缓冲器写入与高速缓冲器对应的目标管芯组的过程还未结束,且下一有效数据集从另一高速缓冲器写入与另一高速缓冲器对应的目标管芯组的过程已经开始,即,相邻有效数据集从高速缓冲器写入与高速缓冲器对应的目标管芯组的时段至少部分重叠。换言之,本公开实施例中,当前有效数据集的写入操作和下一有效数据集的写入操作可以并行处理,无需等待当前有效数据集完成读取操作和写入操作后,才开始下一有效数据集的读取操作和写入操作,如此,可以有效地提升垃圾回收的处理速度。
可以举例的是,如果待回收虚拟块组包括A有效数据集和B有效数据集,A有效数据集和B有效数据集可以均包括多个有效数据。例如,针对A有效数据集,先读出至过渡缓冲器,再从过渡缓冲器传输至高速缓冲器,最后从高速缓冲器存储至目标管芯组。A有效数据集的多个有效数据从高速缓冲器写入与高速缓冲器对应的目标管芯组的过程还未结束,B有效数据集的多个有效数据从另一高速缓冲器写入与另一高速缓冲器对应的目标管芯组的过程已经开始。更具体而言,如果A有效数据集和B有效数据集可以均包括96个有效数据,可能存在某一时刻,A有效数据集的第45个有效数据正从高速缓冲器写入与高速缓冲器对应的目标管芯组的同时,B有效数据集的第1个有效数据正从另一高速缓冲器写入与另一高速缓冲器对应的目标管芯组。
需要说明的是,本公开实施例中,相邻有效数据集需要写入目标虚拟块组的不同目标管芯组。可以举例的是,当前有效数据集从第一高速缓冲器写入与第一高速缓冲器对应的第一目标管芯组,那么下一有效数据集需要传输至除第一高速缓冲器以外的其他高速缓冲器,进而写入除第一目标管芯组以外的其他目标管芯组。
本公开实施例中,高速缓冲器和目标管芯组是一一对应的,一个高速缓冲器对应一个目标管芯组;或者,高速缓冲器和目标管芯组内的目标管芯是一一对应的,一个高速缓冲器对应一个目标管芯。可以举例的是,如果目标管芯组包括2个目标管芯,那么该目标管芯组可以对应2个高速缓冲器。
本公开实施例中,在步骤S201之前,上述方法还包括:
获取待回收虚拟块组内的全部有效数据的逻辑地址,依次写入待回收虚拟块组的逻辑地址队列;
对逻辑地址队列中的逻辑地址进行分类,以确定出N个逻辑地址集;
将每个逻辑地址集分配给目标虚拟块组中各个目标管芯组,每个逻辑地址集对应一个目标管芯组。
本公开实施例中,对逻辑地址队列中的逻辑地址进行分类,以确定出N个逻辑地址集之后,上述方法还包括:
根据N个逻辑地址集获取待回收虚拟块组内的N个有效数据集,N个逻辑地址集与N个有效数据集一一对应;其中,N个逻辑地址集中相邻逻辑地址集对应的有效数据集写入不同目标管芯组。
参考图4,图4为本公开实施例提供的存储器系统的垃圾回收方法的流程框图二。下面将结合图4所示,详细地说明本公开实施例提供的存储器系统的垃圾回收方法。
如图4所示,在步骤S401中,检索队列缓冲器,即,获取待回收虚拟块组内的全部有效数据的逻辑地址/物理地址,依次写入检索队列缓冲器,以形成逻辑地址/物理地址队列。
这里,有效数据的逻辑地址和物理地址指的是有效数据位于待回收虚拟块组内的地址信息。其中,物理地址指的是有效数据在待回收虚拟块组内的绝对地址,逻辑地址则是有效数据在待回收虚拟块组内可被存储器系统的程序识别的地址。有效数据的逻辑地址和物理地址是一一对应的,根据有效数据的逻辑地址可以获取有效数据的物理地址,进而可以获取待回收虚拟块组内的有效数据。因此,在步骤S401中,也可以获取待回收虚拟块组内的全部有效数据的逻辑地址,依次写入检索队列缓冲器,以形成逻辑地址队列。
本公开实施例提供的存储器系统的垃圾回收方法中,还可以形成逻辑地址/物理地址队列,对逻辑地址/物理地址队列中的逻辑地址/物理地址进行分类,确定出逻辑地址/物理地址集,根据逻辑地址/物理地址集确定出有效数据集。
在步骤S402中,对检索队列进行分类(Sort Retrieve Queue),即,对逻辑地址队列进行分类,以确定出N个逻辑地址集;将每个逻辑地址集分配给目标虚拟块组中各个目标管芯组,每个逻辑地址集对应一个目标管芯组;根据N个逻辑地址集获取待回收虚拟块组内的N个有效数据集,N个逻辑地址集与N个有效数据集一一对应;其中,N个逻辑地址集中相邻逻辑地址集对应的有效数据集写入不同目标管芯组。
这里,逻辑地址集和有效数据集一一对应,对逻辑地址队列进行分类确定出N个逻辑地址集后,根据N个逻辑地址集可以获取N个有效数据集。将每个逻辑地址集分配给目标虚拟块组中各个目标管芯组,那么相当于将每个有效数据集分配给目标虚拟块组中各个目标管芯组。
需要说明的是,N个逻辑地址集中相邻逻辑地址集对应的有效数据集写入不同目标管芯组。可以举例的是,N个逻辑地址集包括第一逻辑地址集、第二逻辑地址集……第N逻辑地址集,其中,第一逻辑地址集写入第一目标管芯组,那么第二逻辑地址集只能写入除第一目标管芯组以外其他的目标管芯组。
在步骤S403中,从待回收虚拟块组读取,即,根据逻辑地址集,读取待回收虚拟块组内的有效数据集,将待回收虚拟块组内的有效数据集依次读出至过渡缓冲器。
参考图5,图5为本公开实施例提供的存储器系统的垃圾回收方法的流程框图三。如图5所示,检索队列(Retrieve Queue)指的是逻辑地址队列,对逻辑地址队列进行分类,确定出N个逻辑地址集;读取数据(Read Data)指的则是根据N个逻辑地址集可以获取N个有效数据集,将N个有效数据集依次读出至过渡缓冲器。
在步骤S404中,判断是否完成有效数据集的读取,若判断结果为“是”,则执行步骤S405;若判断结果为“否”,则继续执行读取操作,直至完成有效数据集的读取。
这里,完成有效数据集的读取指的是完成一个有效数据集的读取,即,将一个有效数据集读出至过渡缓冲器。
在步骤S405中,传输至高速缓冲器,即,将过渡缓冲器内的有效数据集传输至对应的高速缓冲器。
在步骤S406中,判断过渡缓冲器是否处于可使用状态,即,判断过渡缓冲器是否处于可写入下一有效数据集的状态,若判断结果为“是”,则执行步骤S401;若判断结果为“否”,则等待过渡缓冲器内的有效数据集传输至高速缓冲器,直至过渡缓冲器处于可使用状态。
在一些实施例中,将下一有效数据集读出至过渡缓冲器之前,包括:
判断过渡缓冲器是否处于可使用状态;
若过渡缓冲器处于可使用状态,则将下一有效数据集读出至过渡缓冲器。
这里,过渡缓冲器是否处于可使用状态指的是过渡缓冲器是否处于可接收下一有效数据集的状态。判断过渡缓冲器是否处于可使用状态与过渡缓冲器的类型相关。
在一些实施例中,如果过渡缓冲器为NAND存储器,那么将过渡缓冲器内当前有效数据集传输至高速缓冲器后,需要擦除过渡缓冲器内当前有效数据集,才可以将下一有效数据集读出至过渡缓冲器。也就是说,如果过渡缓冲器为NAND存储器,将过渡缓冲器内当前有效数据集传输至高速缓冲器后,还需要执行擦除操作,过渡缓冲器才能处于可使用状态。
在另一些实施例中,如果过渡缓冲器为动态随机存取存储器(Dynamic RandomAccess Memory,DRAM),那么将过渡缓冲器内当前有效数据集传输至高速缓冲器后,即可将下一有效数据集读出至过渡缓冲器。也就是说,如果过渡缓冲器为DRAM,将过渡缓冲器内当前有效数据集传输至高速缓冲器后,过渡缓冲器就处于可使用状态。这里,无需对过渡缓冲器内的当前有效数据集执行擦除操作,直接将下一有效数据集读出至过渡缓冲器,下一有效数据集将会覆盖过渡缓冲器内的当前有效数据集。
在一些实施例中,判断过渡缓冲器是否处于可使用状态,包括:
根据当前有效数据集内已传输至对应的高速缓冲器的部分和未传输至对应的高速缓冲器的部分之间的比值,判断过渡缓冲器是否处于可使用状态。
如前所述,如果过渡缓冲器为DRAM,只要确认过渡缓冲器内的有效数据集传输至高速缓冲器,那么过渡缓冲器就处于可使用状态。然而,考虑到过渡缓冲器的使用是从前往后逐个部分依次占用的,无需等待过渡缓冲器内当前有效数据集全部传输至高速缓冲器即可确认过渡缓冲器处于可使用状态。这里,根据当前有效数据集内已传输至对应的高速缓冲器的部分大于当前有效数据集内未传输至对应的高速缓冲器的部分,即可判断过渡缓冲器处于可使用状态。
仍参考图3(b)所示,第一目标管芯组包括2个目标管芯,即,第一目标管芯组包括die0和die1。如果一个有效数据集的存储容量为24个存储页(page),该有效数据集内的12个存储页由过渡缓冲器传输至对应的高速缓冲器,进而写入die0;该有效数据集内的另外12个存储页由过渡缓冲器传输至对应的高速缓冲器,进而写入die1。举例而言,12个存储页中的前11个存储页均由过渡缓冲器传输至对应的高速缓冲器就返回标志信息,每次获得标志信息则说明一个存储页的有效数据已经由过渡缓冲器传输至对应的高速缓冲器;但是第12个存储页需要等待有效数据集的12个存储页写入目标管芯后才返回标志信息。这里,考虑到过渡缓冲器的使用是从前往后逐个部分依次占用的,过渡缓冲器内的某个存储页的有效数据传输至高速缓冲器的时间非常短,前面空闲的部分在使用过程中足够第12个存储页由过渡缓冲器传输至对应的高速缓冲器,因此,判断目标管芯上的前11个存储页均由过渡缓冲器传输至对应的高速缓冲器就可以作为有效数据集的12个存储页已经由过渡缓冲器传输至对应的高速缓冲器的标志。
在步骤S407中,写入目标管芯组,即,将高速缓冲器内的有效数据集写入
对应的目标管芯组。在步骤S406中,判断过渡缓冲器是否处于可将下一有效数据集写入的状态的同时,可以将高速缓冲器内当前有效数据集写入对应的目标管芯组,也就是说,步骤S406和步骤S407是同时执行的。
仍参考图5,写入数据(Program Data)包括将过渡缓冲器内的有效数据集传输至高速缓冲器,以及将高速缓冲器内的有效数据集写入目标虚拟块组中对应的目标管芯组。图5示意出待回收虚拟块组包括2个目标管芯组,每个目标管芯组可以包括2个管芯,即,第一管芯组包括die0和die1,第二管芯组包括die2和die3。每个管芯可以包括4个存储平面,即,P0、P1、P2和P3。
本公开实施例中,当需要写入目标虚拟块组中的第一管芯组时,检索队列需要提供写入到第一管芯组的第一有效数据集;当需写入目标虚拟块组中的第二管芯组时,检索队列需要提供写入到第二管芯组的第二有效数据集。也就是说,对检索队列进行分类,检索队列可以包括交替排列的第一有效数据集和第二有效数据集,将第一有效数据集和第二有效数据集分别写入第一管芯组和第二管芯组,写入操作在第一管芯组和第二管芯组之间交替进行,将第一有效数据集写入第一管芯组的时段和将第二有效数据集写入第二管芯组的时段至少部分重叠。
参考图6,图6为本公开实施例提供的对检索队列进行分类的流程框图。如图6所示,获取待回收虚拟块组内的全部有效数据的逻辑地址/物理地址对(PCA/LCA pair)写入检索队列缓冲器,入队列指的是将检索队列缓冲器内的有效数据的逻辑地址/物理地址对依次写入检索队列。
需要说明的是,由于检索队列的存储容量有限,检索队列可能无法存储全部有效数据的逻辑地址/物理地址对,因此,检索队列内的有效数据的逻辑地址/物理地址对处于动态更新的状态。首次将有效数据的逻辑地址/物理地址对依次写入检索队列,填满检索队列后,需要等待读取部分有效数据的逻辑地址/物理地址对(即,出队列),检索队列腾出空闲空间后,才可以继续将有效数据的逻辑地址/物理地址对写入(即,入队列)。
仍参考图6所示,对检索队列进行分类指的是依据逻辑地址/物理地址对对应的有效数据将要写入哪个目标管芯组,对检索队列中的逻辑地址/物理地址对进行分类,确定出多个逻辑地址/物理地址集。如此,每个逻辑地址/物理地址集对应一个目标管芯组,具体而言,根据每个逻辑地址/物理地址集可以获取一个有效数据集,该有效数据集写入一个目标管芯组。
需要说明的是,将有效数据的逻辑地址/物理地址对依次写入检索队列时,任意相邻两个逻辑地址/物理地址对对应的有效数据可能写入相同或不同的目标管芯组。可以举例的是,检索队列中,第一有效数据将要写入die0,第二有效数据将要写入die1,第三有效数据将要写入die2,第四有效数据将要写入die0等。如此,第一有效数据和第二有效数据将要写入第一目标管芯组(包括die0和die1),第三有效数据将要写入第二目标管芯组(包括die2和die3),第四有效数据将要写入第一目标管芯组(包括die0和die1)。因此,需要对检索队列进行分类,确保预设数量的逻辑地址/物理地址对组成的逻辑地址/物理地址集对应的有效数据集写入相同的目标管芯组,相邻的逻辑地址/物理地址集对应的有效数据集写入不同的目标管芯组。这里,逻辑地址/物理地址集和有效数据集是一一对应的,换言之,预设数量的有效数据组成的有效数据集写入相同的目标管芯组,相邻的有效数据集写入不同的目标管芯组。
参考图7和图8,图7为一示例提供的确定当前目标管芯组对应的逻辑地址集的框图,图8为另一示例提供的确定当前目标管芯组对应的逻辑地址集的框图。下面将结合图7和图8,详细地说明本公开实施例提供的垃圾回收方法中如何对检索队列进行分类,以确定多个逻辑地址/物理地址集。
参考图7所示,确定与当前目标管芯组对应的逻辑地址集的方法包括:利用第一指针和第二指针分别从逻辑地址队列的第一位置和第二位置开始检索每个逻辑地址;其中,第一位置和第二位置之间相隔预设数量的逻辑地址;
若第一指针检索的逻辑地址不属于当前目标管芯组且第二指针检索的逻辑地址属于当前目标管芯组,则交换第一指针和第二指针检索的逻辑地址,直至第一指针检索至第二位置,以确定出与当前目标管芯组对应的逻辑地址集。
这里,第一位置和第二位置之间相隔预设数量的逻辑地址/物理地址对,预设数量和逻辑地址/物理地址集所包括的逻辑地址/物理地址对的数量相同,预设数量和有效数据集所包括的有效数据的数量相同。可以举例的是,如果一个有效数据集包括96个有效数据,那么一个逻辑地址/物理地址集包括96个逻辑地址/物理地址对,那么第一指针和第二指针之间相隔96个逻辑地址/物理地址对。
这里,第一指针和第二指针分别从检索队列的第一位置和第二位置开始检索每个逻辑地址/物理地址对,若第一指针检索的逻辑地址/物理地址对不属于当前目标管芯组且第二指针检索的逻辑地址/物理地址对属于当前目标管芯组,则交换第一指针和第二指针检索的逻辑地址/物理地址对,相当于,交换第一指针和第二指针检索的逻辑地址/物理地址对对应的有效数据。当第一指针检索至第二位置时,那么第一位置和第二位置之间的预设数量的逻辑地址/物理地址对对应的有效数据组成一个有效数据集,该有效数据集的全部有效数据写入同一目标管芯组。
可以举例的是,如果一个有效数据集包括96个有效数据,确定与第一目标管芯组die0/die1对应的逻辑地址/物理地址集的方法包括以下步骤:可以在逻辑地址/物理地址队列的队头位置(queue head)设置第一指针,在第一指针移动96个逻辑地址/物理地址对的位置设置第二指针;第一指针向后移动,检索到不属于第一目标管芯组die0/die1的逻辑地址/物理地址对后停下;第二指针向后移动,检索到属于第一目标管芯组die0/die1的逻辑地址/物理地址对后停下;交换第一指针和第二指针检索的逻辑地址/物理地址对(Swapnode);重复执行上述步骤,直至第一指针检索至第二指针的初始位置,那么逻辑地址/物理地址队列的第1个逻辑地址/物理地址对至第96个逻辑地址/物理地址对对应的有效数据均属于第一目标管芯组die0/die1。换言之,逻辑地址/物理地址队列的第1个逻辑地址/物理地址对至第96个逻辑地址/物理地址对组成一个逻辑地址/物理地址集,该逻辑地址/物理地址集对应一个有效数据集,该有效数据集属于第一目标管芯组die0/die1。
参考图8所示,确定与当前目标管芯组对应的逻辑地址集的方法包括:
设置与目标虚拟块组中各个目标管芯组对应的多个目标指针,每个目标指针对应一个目标管芯组;
利用目标指针从逻辑地址队列中检索属于当前目标指针对应的目标管芯组的逻辑地址;
若目标指针检索的逻辑地址满足预设数量,则确定出当前目标指针对应的目标管芯组对应的逻辑地址集;
若当前目标指针检索的逻辑地址不满足预设数量,则利用其他目标指针从逻辑地址队列中检索属于其他目标指针对应的目标管芯组的逻辑地址;直至当前目标指针检索的逻辑地址的数量和其他目标指针检索的逻辑地址的数量之和满足预设数量,以确定出当前目标指针对应的目标管芯组对应的逻辑地址集。
这里,以目标虚拟块组包括2个目标管芯组为例,每个目标管芯组包括2个目标管芯,即,第一目标管芯组包括die0和die1,第二目标管芯组包括die2和die3。可以设置与目标虚拟块组中2个目标管芯组对应2个目标指针,即,与第一目标管芯组die0/die1对应目标指针group_0,与第二目标管芯组die2/die3对应目标指针group_1。
可以举例的是,如果一个有效数据集包括96个有效数据,确定与第一目标管芯组die0/die1对应的逻辑地址/物理地址集的方法包括以下步骤:利用目标指针group_0从逻辑地址/物理地址队列的队头作为起始位置,向后移动检索属于第一目标管芯组die0/die1的逻辑地址/物理地址对,若目标指针group_0检索的逻辑地址/物理地址对的数量累计达到96,则确定出与第一目标管芯组die0/die1对应的逻辑地址/物理地址集。这里,目标指针group_0检索的逻辑地址/物理地址集对应一个有效数据集,该有效数据集属于第一目标管芯组die0/die1。若目标指针group_0向后移动至队尾位置(queue tail),目标指针group_0检索的逻辑地址/物理地址的数量累计仍然无法达到96,那么可以使用目标指针group_1向后移动检索属于第二目标管芯组die2/die3的逻辑地址/物理地址对,直至目标指针group_0和目标指针group_1检索的逻辑地址/物理地址对的数量累计达到96,则确定出逻辑地址/物理地址集。
仍参考图8所示,在一些实施例中,上述方法还包括:
设置释放指针;
利用目标指针从逻辑地址队列中检索属于当前目标指针对应的目标管芯组的逻辑地址时,将目标指针的位置设置为释放指针的目标位置;
将释放指针从当前位置移动至目标位置,以释放当前位置和目标位置之间的逻辑地址,并将待回收虚拟块组内的其他有效数据的逻辑地址写入逻辑地址队列。
如上所述,设置释放指针跟随目标指针进行移动,对于目标指针已经检索确定属于目标管芯组的逻辑地址/物理地址对,可以通过释放指针释放这些已经确定属于目标管芯组的逻辑地址/物理地址对,及时为检索队列腾出空闲空间,以便于将待回收虚拟块组内的其他有效数据的逻辑地址/物理地址对写入逻辑地址/物理地址队列。
可以举例的是,利用目标指针group_0从逻辑地址/物理地址队列的队头作为起始位置,向后移动检索属于第一目标管芯组die0/die1的逻辑地址/物理地址对;设置释放指针(例如,队头指针)跟随目标指针进行移动,设置队尾指针位于逻辑地址/物理地址队列的队尾,释放指针用于将目标指针group_0检索的属于第一目标管芯组die0/die1的逻辑地址/物理地址对释放出来,及时为逻辑地址/物理地址队列腾出空闲空间,将待回收虚拟块组内的其他有效数据的逻辑地址/物理地址对由队尾指针的位置写入逻辑地址/物理地址队列。
本公开实施例中,考虑各目标指针在检索队列中检索的属于当前目标指针对应的目标管芯组对应的逻辑地址/物理地址对的数量,对各目标指针检索的属于当前目标指针对应的目标管芯组对应的逻辑地址/物理地址对的数量求和可以得到有效数据的数量,即,检索队列的存储容量。
参考图9,图9为本公开实施例提供的一种存储器系统的示意图。如图9所示,本公开实施例还提供一种存储器系统,存储器系统300,包括:控制器306和存储器304;其中,控制器306包括处理器312和过渡缓冲器310,存储器304包括待回收虚拟块组314、高速缓冲器316和目标虚拟块组318;处理器312被配置为:
将待回收虚拟块组314内的N个有效数据集依次读出至过渡缓冲器310;其中,N为大于或等于2的整数;
将过渡缓冲器310内的有效数据集传输至对应的高速缓冲器316,并将下一有效数据集读出至过渡缓冲器310;
将高速缓冲器316内的有效数据集写入目标虚拟块组318中对应的目标管芯组;其中,当前有效数据集从高速缓冲器316写入与高速缓冲器316对应的目标管芯组的时段,和下一有效数据集从待回收虚拟块组314读出至过渡缓冲器310的时段至少部分重叠。
存储器系统300可以是移动电话、台式计算机、膝上型计算机、平板计算机、车辆计算机、游戏控制台、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(VirtualReality,VR)设备、增强现实(Augmented Reality,AR)设备或者其中具有储存器的任何其他合适的电子设备。
如图9所示,存储器系统300可以包括主机308和存储子系统302,存储子系统302具有一个或多个存储器304,存储子系统还包括控制器306。主机308可以是电子设备的处理器(例如,中央处理单元(Central Processing Unit,CPU))或者片上系统(System on Chip,SoC)(例如,应用处理器(Application Processor,AP))。主机308可以被配置为将数据发送到存储器304。或者,主机308可以被配置为从存储器304接收数据。
存储器304可以是NAND闪存存储器(例如,三维(3D)NAND闪存存储器)。存储器304可以在擦除操作期间具有来自耦合到未选定字线的驱动晶体管(例如,串驱动器)的减小的漏电流,这允许驱动晶体管的进一步尺寸缩小。
本公开实施例中,控制器306还耦合到主机308。控制器306可以管理存储在存储器304中的数据,并且与主机308通信。
在一些实施例中,控制器306被设计为用于在低占空比环境中操作,如安全数字(Secure Digital,SD)卡、紧凑型闪存(Compact Flash,CF)卡、通用串行总线(UniversalSerial Bus,USB)闪存驱动器、或用于在诸如个人计算器、数字相机、移动电话等的电子设备中使用的其他介质。
在一些实施例中,控制器306被设计为用于在高占空比环境固态驱动器(SolidState Drive,SSD)或嵌入式多媒体卡(embedded Multi-Media Card,eMMC)中操作,SSD或eMMC用作诸如智能电话、平板计算机、膝上型计算机等的移动设备的数据储存器以及企业存储阵列。
控制器306可以被配置为控制存储器304的操作,例如读取、擦除和编程操作。控制器306还可以被配置为管理关于存储在或要存储在存储器304中的数据的各种功能,包括但不限于坏块管理、垃圾收集、逻辑到物理地址转换、损耗均衡等。在一些实施例中,控制器306还被配置为处理关于从存储器304读取的或者被写入到存储器304的数据的纠错码(Error Correcting Code,ECC)。
控制器306还可以执行任何其他合适的功能,例如,格式化存储器304。控制器306可以根据特定通信协议与外部设备(例如,主机308)通信。例如,控制器306可以通过各种接口协议中的至少一种与外部设备通信,接口协议例如USB协议、MMC协议、外围部件互连(PCI)协议、外围设备互联接口(Peripheral Component Interconnect Express,PCI-E)协议、高级技术附件(Advanced Technology Attachment,ATA)协议、串行ATA协议、并行ATA协议、小型计算机小型接口(Small Computer System Interface,SCSI)协议、增强型小型磁盘接口(Extended Small Device Interface,ESDI)协议、集成驱动电子设备(IntegratedDrive Electronics,IDE)协议、火线(Firewire)协议等。
控制器306和一个或多个存储器304可以集成到各种类型的存储设备中,例如,包括在相同封装(例如,通用闪存存储(Universal Flash Storage,UFS)封装或eMMC封装)中。也就是说,存储器系统300可以实施并且封装到不同类型的终端电子产品中。
在如图10A中所示的一个示例中,控制器306和单个存储器304可以集成到存储器卡502中。存储器卡502可以包括个人计算机存储器卡国际协会卡(Personal ComputerMemory Card International Association,PCMCIA)、CF卡、智能媒体(Smart Media,SM)卡、存储器棒、多媒体卡、安全数码(Secure Digital,SD)卡、UFS等。存储器卡502还可以包括将存储器卡502与主机(例如,图9中的主机308)耦合的存储器卡连接器504。
在如图10B中所示的另一示例中,控制器306和多个存储器304可以集成到固态驱动器506中。固态驱动器506还可以包括将固态驱动器506与主机(例如,图9中的主机308)耦合的固态驱动器连接器508。在一些实施例中,固态驱动器506的存储容量和/或操作速度大于存储器卡502的存储容量和/或操作速度。
可以理解的是,控制器306可以执行如本公开任一实施例提供的垃圾回收方法。
在一些实施例中,当前有效数据集从对应的高速缓冲器写入与高速缓冲器对应的目标管芯组的时段,和下一有效数据集从对应的高速缓冲器写入与高速缓冲器对应的目标管芯组的时段至少部分重叠。
在一些实施例中,处理器还被配置为:
获取待回收虚拟块组内的全部有效数据的逻辑地址,依次写入待回收虚拟块组的逻辑地址队列;
对逻辑地址队列中的逻辑地址进行分类,以确定出N个逻辑地址集;
将每个逻辑地址集分配给目标虚拟块组中各个目标管芯组,每个逻辑地址集对应一个目标管芯组。
在一些实施例中,处理器还被配置为:
根据N个逻辑地址集获取待回收虚拟块组内的N个有效数据集,N个逻辑地址集与N个有效数据集一一对应;其中,N个逻辑地址集中相邻逻辑地址集对应的有效数据集写入不同目标管芯组。
在一些实施例中,处理器还被配置为:
利用第一指针和第二指针分别从逻辑地址队列的第一位置和第二位置开始检索每个逻辑地址;其中,第一位置和第二位置之间相隔预设数量的逻辑地址;
若第一指针检索的逻辑地址不属于当前目标管芯组且第二指针检索的逻辑地址属于当前目标管芯组,则交换第一指针和第二指针检索的逻辑地址,直至第一指针检索至第二位置,以确定出与当前目标管芯组对应的逻辑地址集。
在一些实施例中,处理器还被配置为:
设置与目标虚拟块组中各个目标管芯组对应的多个目标指针,每个目标指针对应一个目标管芯组;
利用目标指针从逻辑地址队列中检索属于当前目标指针对应的目标管芯组的逻辑地址;
若目标指针检索的逻辑地址满足预设数量,则确定出当前目标指针对应的目标管芯组对应的逻辑地址集;
若当前目标指针检索的逻辑地址不满足预设数量,则利用其他目标指针从逻辑地址队列中检索属于其他目标指针对应的目标管芯组的逻辑地址;直至当前目标指针检索的逻辑地址的数量和其他目标指针检索的逻辑地址的数量之和满足预设数量,以确定出当前目标指针对应的目标管芯组对应的逻辑地址集。
在一些实施例中,处理器还被配置为:
设置释放指针;
利用目标指针从逻辑地址队列中检索属于当前目标指针对应的目标管芯组的逻辑地址时,将目标指针的位置设置为释放指针的目标位置;
将释放指针从当前位置移动至目标位置,以释放当前位置和目标位置之间的逻辑地址,并将待回收虚拟块组内的其他有效数据的逻辑地址写入逻辑地址队列。
在一些实施例中,有效数据集传输至对应的高速缓冲器的时长小于有效数据集写入与高速缓冲器对应的目标管芯组的时长。
在一些实施例中,处理器还被配置为:
判断过渡缓冲器是否处于可使用状态;
若过渡缓冲器处于可使用状态,则将下一有效数据集读出至过渡缓冲器。
在一些实施例中,处理器还被配置为:
根据当前有效数据集内已传输至对应的高速缓冲器的部分和未传输至对应的高速缓冲器的部分之间的比值,判断过渡缓冲器是否处于可使用状态。
本公开实施例还提供一种电子设备,电子设备包括如上述技术方案中的存储器系统。电子设备可以包括手机、台式计算机、平板电脑、笔记本电脑、服务器、车载设备、可穿戴设备或移动电源等。
本公开实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被执行时可以实现如上述技术方案中的存储器系统的垃圾回收方法。
本公开实施例中,计算机可读存储介质可以包括:随机存储器(Random AccessMemory,RAM)、内存、只读存储器(Read-Only Memory,ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、只读光盘(CD-ROM)、或技术领域内所公知的任意其它形式的程序代码的介质。
本公开实施例提供一种存储器系统及其垃圾回收方法、电子设备。本公开实施例提供的存储器系统的垃圾回收方法中,当前有效数据集从高速缓冲器写入与高速缓冲器对应的目标管芯组的时段,和下一有效数据集从待回收虚拟块组读出至过渡缓冲器的时段至少部分重叠,换言之,至少存在某一时刻,当前有效数据集从高速缓冲器写入目标管芯组的过程还未结束且下一有效数据集从待回收虚拟块组读出至过渡缓冲器的过程已经开始,如此,可以有效地提升垃圾回收的处理速度。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本公开的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本公开的优选实施方式,并非因此限制本公开的专利范围,凡是在本公开的发明构思下,利用本公开说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本公开的专利保护范围内。
Claims (22)
1.一种存储器系统的垃圾回收方法,其特征在于,所述方法包括:
将存储器中待回收虚拟块组内的N个有效数据集依次读出至过渡缓冲器;其中,N为大于或等于2的整数;
将所述过渡缓冲器内的所述有效数据集传输至对应的高速缓冲器,并将下一所述有效数据集读出至所述过渡缓冲器;
将所述高速缓冲器内的所述有效数据集写入目标虚拟块组中对应的目标管芯组;其中,当前所述有效数据集从所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段,和下一所述有效数据集从所述待回收虚拟块组读出至所述过渡缓冲器的时段至少部分重叠。
2.根据权利要求1所述的存储器系统的垃圾回收方法,其特征在于,当前所述有效数据集从对应的所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段,和下一所述有效数据集从对应的所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段至少部分重叠。
3.根据权利要求1所述的存储器系统的垃圾回收方法,其特征在于,所述将存储器中待回收虚拟块组内的N个有效数据集依次读出至过渡缓冲器之前,所述方法还包括:
获取所述待回收虚拟块组内的全部有效数据的逻辑地址,依次写入所述待回收虚拟块组的逻辑地址队列;
对所述逻辑地址队列中的逻辑地址进行分类,以确定出N个逻辑地址集;
将每个所述逻辑地址集分配给所述目标虚拟块组中各个目标管芯组,每个所述逻辑地址集对应一个所述目标管芯组。
4.根据权利要求3所述的存储器系统的垃圾回收方法,其特征在于,所述对所述逻辑地址队列中的逻辑地址进行分类,以确定出N个逻辑地址集之后,所述方法还包括:
根据N个所述逻辑地址集获取所述待回收虚拟块组内的N个所述有效数据集,N个所述逻辑地址集与N个所述有效数据集一一对应;其中,所述N个逻辑地址集中相邻所述逻辑地址集对应的所述有效数据集写入不同所述目标管芯组。
5.根据权利要求3所述的存储器系统的垃圾回收方法,其特征在于,所述对所述逻辑地址队列中的逻辑地址进行分类,以确定出N个逻辑地址集,包括:
利用第一指针和第二指针分别从所述逻辑地址队列的第一位置和第二位置开始检索每个所述逻辑地址;其中,所述第一位置和所述第二位置之间相隔预设数量的所述逻辑地址;
若所述第一指针检索的所述逻辑地址不属于当前目标管芯组且所述第二指针检索的所述逻辑地址属于当前目标管芯组,则交换所述第一指针和所述第二指针检索的所述逻辑地址,直至所述第一指针检索至所述第二位置,以确定出与所述当前目标管芯组对应的逻辑地址集。
6.根据权利要求3所述的存储器系统的垃圾回收方法,其特征在于,所述对所述逻辑地址队列中的逻辑地址进行分类,以确定出N个逻辑地址集,包括:
设置与所述目标虚拟块组中各个目标管芯组对应的多个目标指针,每个目标指针对应一个所述目标管芯组;
利用所述目标指针从所述逻辑地址队列中检索属于当前所述目标指针对应的所述目标管芯组的所述逻辑地址;
若所述目标指针检索的所述逻辑地址满足预设数量,则确定出当前所述目标指针对应的所述目标管芯组对应的逻辑地址集;
若所述当前目标指针检索的所述逻辑地址不满足预设数量,则利用其他目标指针从所述逻辑地址队列中检索属于其他目标指针对应的所述目标管芯组的所述逻辑地址;直至所述当前目标指针检索的所述逻辑地址的数量和所述其他目标指针检索的所述逻辑地址的数量之和满足所述预设数量,以确定出当前所述目标指针对应的所述目标管芯组对应的逻辑地址集。
7.根据权利要求6所述的存储器系统的垃圾回收方法,其特征在于,所述方法还包括:
设置释放指针;
利用所述目标指针从所述逻辑地址队列中检索属于当前所述目标指针对应的所述目标管芯组的所述逻辑地址时,将所述目标指针的位置设置为所述释放指针的目标位置;
将所述释放指针从当前位置移动至所述目标位置,以释放所述当前位置和所述目标位置之间的所述逻辑地址,并将所述待回收虚拟块组内的其他有效数据的所述逻辑地址写入所述逻辑地址队列。
8.根据权利要求1所述的存储器系统的垃圾回收方法,其特征在于,所述有效数据集传输至对应的高速缓冲器的时长小于所述有效数据集写入与所述高速缓冲器对应的所述目标管芯组的时长。
9.根据权利要求1所述的存储器系统的垃圾回收方法,其特征在于,所述将下一所述有效数据集读出至所述过渡缓冲器之前,包括:
判断所述过渡缓冲器是否处于可使用状态;
若所述过渡缓冲器处于可使用状态,则将下一所述有效数据集读出至所述过渡缓冲器。
10.根据权利要求9所述的存储器系统的垃圾回收方法,其特征在于,所述判断所述过渡缓冲器是否处于可使用状态,包括:
根据当前所述有效数据集内已传输至对应的高速缓冲器的部分和未传输至对应的高速缓冲器的部分之间的比值,判断所述过渡缓冲器是否处于可使用状态。
11.一种存储器系统,其特征在于,所述存储器系统包括控制器和存储器;其中,所述控制器包括处理器和过渡缓冲器,所述存储器包括待回收虚拟块组、高速缓冲器和目标虚拟块组;所述处理器被配置为:
将所述待回收虚拟块组内的N个有效数据集依次读出至所述过渡缓冲器;其中,N为大于或等于2的整数;
将所述过渡缓冲器内的所述有效数据集传输至对应的高速缓冲器,并将下一所述有效数据集读出至所述过渡缓冲器;
将所述高速缓冲器内的所述有效数据集写入所述目标虚拟块组中对应的目标管芯组;其中,当前所述有效数据集从所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段,和下一所述有效数据集从所述待回收虚拟块组读出至所述过渡缓冲器的时段至少部分重叠。
12.根据权利要求11所述的存储器系统,其特征在于,当前所述有效数据集从对应的所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段,和下一所述有效数据集从对应的所述高速缓冲器写入与所述高速缓冲器对应的所述目标管芯组的时段至少部分重叠。
13.根据权利要求11所述的存储器系统,其特征在于,所述处理器还被配置为:
获取所述待回收虚拟块组内的全部有效数据的逻辑地址,依次写入所述待回收虚拟块组的逻辑地址队列;
对所述逻辑地址队列中的逻辑地址进行分类,以确定出N个逻辑地址集;
将每个所述逻辑地址集分配给所述目标虚拟块组中各个目标管芯组,每个所述逻辑地址集对应一个所述目标管芯组。
14.根据权利要求13所述的存储器系统,其特征在于,所述处理器还被配置为:
根据N个所述逻辑地址集获取所述待回收虚拟块组内的N个所述有效数据集,N个所述逻辑地址集与N个所述有效数据集一一对应;其中,所述N个逻辑地址集中相邻所述逻辑地址集对应的所述有效数据集写入不同所述目标管芯组。
15.根据权利要求13所述的存储器系统,其特征在于,所述处理器还被配置为:
利用第一指针和第二指针分别从所述逻辑地址队列的第一位置和第二位置开始检索每个所述逻辑地址;其中,所述第一位置和所述第二位置之间相隔预设数量的所述逻辑地址;
若所述第一指针检索的所述逻辑地址不属于当前目标管芯组且所述第二指针检索的所述逻辑地址属于当前目标管芯组,则交换所述第一指针和所述第二指针检索的所述逻辑地址,直至所述第一指针检索至所述第二位置,以确定出与所述当前目标管芯组对应的逻辑地址集。
16.根据权利要求13所述的存储器系统,其特征在于,所述处理器还被配置为:
设置与所述目标虚拟块组中各个目标管芯组对应的多个目标指针,每个目标指针对应一个所述目标管芯组;
利用所述目标指针从所述逻辑地址队列中检索属于当前所述目标指针对应的所述目标管芯组的所述逻辑地址;
若所述目标指针检索的所述逻辑地址满足预设数量,则确定出当前所述目标指针对应的所述目标管芯组对应的逻辑地址集;
若所述当前目标指针检索的所述逻辑地址不满足预设数量,则利用其他目标指针从所述逻辑地址队列中检索属于其他目标指针对应的所述目标管芯组的所述逻辑地址;直至所述当前目标指针检索的所述逻辑地址的数量和所述其他目标指针检索的所述逻辑地址的数量之和满足所述预设数量,以确定出当前所述目标指针对应的所述目标管芯组对应的逻辑地址集。
17.根据权利要求16所述的存储器系统,其特征在于,所述处理器还被配置为:
设置释放指针;
利用所述目标指针从所述逻辑地址队列中检索属于当前所述目标指针对应的所述目标管芯组的所述逻辑地址时,将所述目标指针的位置设置为所述释放指针的目标位置;
将所述释放指针从当前位置移动至所述目标位置,以释放所述当前位置和所述目标位置之间的所述逻辑地址,并将所述待回收虚拟块组内的其他有效数据的所述逻辑地址写入所述逻辑地址队列。
18.根据权利要求11所述的存储器系统,其特征在于,所述有效数据集传输至对应的高速缓冲器的时长小于所述有效数据集写入与所述高速缓冲器对应的所述目标管芯组的时长。
19.根据权利要求11所述的存储器系统,其特征在于,所述处理器还被配置为:
判断所述过渡缓冲器是否处于可使用状态;
若所述过渡缓冲器处于可使用状态,则将下一所述有效数据集读出至所述过渡缓冲器。
20.根据权利要求19所述的存储器系统,其特征在于,所述处理器还被配置为:
根据当前所述有效数据集内已传输至对应的高速缓冲器的部分和未传输至对应的高速缓冲器的部分之间的比值,判断所述过渡缓冲器是否处于可使用状态。
21.一种电子设备,其特征在于,所述电子设备包括如权利要求11至20中任一项所述的存储器系统。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时可以实现如权利要求1至10中任一项所述的存储器系统的垃圾回收方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211494333.5A CN118093449A (zh) | 2022-11-25 | 2022-11-25 | 一种存储器系统及其垃圾回收方法、电子设备 |
US18/090,998 US20240176736A1 (en) | 2022-11-25 | 2022-12-29 | Memory system and a method for garbage collection of the memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211494333.5A CN118093449A (zh) | 2022-11-25 | 2022-11-25 | 一种存储器系统及其垃圾回收方法、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118093449A true CN118093449A (zh) | 2024-05-28 |
Family
ID=91151428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211494333.5A Pending CN118093449A (zh) | 2022-11-25 | 2022-11-25 | 一种存储器系统及其垃圾回收方法、电子设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240176736A1 (zh) |
CN (1) | CN118093449A (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI612473B (zh) * | 2017-03-22 | 2018-01-21 | 慧榮科技股份有限公司 | 垃圾回收方法以及使用該方法的裝置 |
US10606484B2 (en) * | 2017-06-23 | 2020-03-31 | Google Llc | NAND flash storage device with NAND buffer |
US10929288B1 (en) * | 2019-10-08 | 2021-02-23 | International Business Machines Corporation | Protecting against data loss during garbage collection |
US11275679B2 (en) * | 2019-12-30 | 2022-03-15 | Micron Technology, Inc. | Separate cores for media management of a memory sub-system |
-
2022
- 2022-11-25 CN CN202211494333.5A patent/CN118093449A/zh active Pending
- 2022-12-29 US US18/090,998 patent/US20240176736A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240176736A1 (en) | 2024-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110858129B (zh) | 数据存储装置及其操作方法 | |
CN108804023B (zh) | 数据存储装置及其操作方法 | |
KR20190087217A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN111414312B (zh) | 数据存储装置及其操作方法 | |
CN110083545B (zh) | 数据存储装置及其操作方法 | |
US20180173420A1 (en) | Apparatus, system and method for increasing the capacity of a storage device available to store user data | |
US11249897B2 (en) | Data storage device and operating method thereof | |
CN110032333B (zh) | 存储器系统及其操作方法 | |
KR20190057887A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20190138226A1 (en) | Memory system and method for controlling nonvolatile memory | |
CN111414313B (zh) | 数据存储装置及数据存储装置的操作方法 | |
CN112035054A (zh) | 控制器的操作方法以及存储器系统 | |
US11422930B2 (en) | Controller, memory system and data processing system | |
CN111752853A (zh) | 控制器、存储器系统及其操作方法 | |
KR20210144249A (ko) | 저장 장치 및 이의 동작 방법 | |
CN112445422A (zh) | 存储器控制器、存储装置以及存储器控制器的操作方法 | |
KR102434840B1 (ko) | 데이터 저장 장치 | |
US11281590B2 (en) | Controller, operating method thereof and storage device including the same | |
CN110908596A (zh) | 数据存储装置、其操作方法和包括存储装置的存储系统 | |
CN118093449A (zh) | 一种存储器系统及其垃圾回收方法、电子设备 | |
US20200409834A1 (en) | Controller, memory system and operating method thereof | |
CN118051170A (zh) | 存储器控制器及其操作方法、存储器系统、电子设备 | |
US11941246B2 (en) | Memory system, data processing system including the same, and operating method thereof | |
US20240160381A1 (en) | Memory controllers and operating methods thereof, memory systems, and electronic devices | |
EP4345628A1 (en) | Method of optimizing quality of service (qos) in solid-state drives (ssds) and an ssd thereof |
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 |