处理具有非易失性存储器的系统的动态和静态数据的制作方法

xiaoxiao2020-7-23  4

【知识产权代理】【专利服务】Tel:18215660330

专利名称:处理具有非易失性存储器的系统的动态和静态数据的制作方法
技术领域
本公开一般涉及处理具有非易失性存储器的系统的动态和静态数据。
背景技术
NAND闪存和其他类型的非易失性存储器(“NVM”)通常用于海量存储。例如,诸如便携式媒体播放器的消费电子设备经常包括闪存以存储音乐、视频和其他媒体。NVM可包括电子设备所需的数据(例如,“有效数据”)和电子设备不再需要的数据(例如,“无效数据”)。在NVM中存储的有效数据可被进ー步划分成频繁更新或变化的数据(例如,“动态数据”)和极少更新或变化的数据(例如,“静态数据”)。常规地,NVM中数据 的放置是相当任意的,以至可在NVM的单个块中存储动态数据和静态数据的混合。某些NVM被配置成在块中的任意存储位置可被重新编程之前,需要擦除已编程存储位置块。因此,电子设备通常执行被称作“垃圾收集”(“GC”)的操作以释放供擦除和重新编程的块。为了释放该块中的所有存储位置以便擦除,电子设备可将块的有效数据复制到另ー块的存储位置中。因为块上存在动态数据和静态数据的混合,所以GC的效率可能低下,这是由于必须要复制的有效数据的数量可能是相当大的。此外,通过使用被称作“磨损均衡(wear leveling) ”的操作,电子设备有时可以对块执行GC。磨损均衡通常用于扩展NVM的有用寿命。时常地,系统可执行NVM的不必要的磨损均衡,事实上这可能导致NVM的更多磨损。

发明内容
公开了处理具有非易失性存储器的系统的动态和静态数据的系统和方法。通过确定正被写入NVM的数据是否是动态的,系统的NVM接ロ可确定最初将数据放置在NVM上的什么地方。此外,这允许NVM接ロ提高垃圾收集和磨损均衡的效率。


—旦结合附图考虑下述详细说明,本发明的上述和其他的方面和优点将变得更加明显,附图中同样的附图标记始終指代同样的部件,在附图中图I和2是根据本发明各种实施例配置的电子设备的框图;图3是根据本发明各种实施例的逻辑块地址到物理页的示例性映射的框图;图4是根据本发明各种实施例的用于提供逻辑到物理地址映射的示例性树的框图;图5是根据本发明各种实施例的可与用户数据关联的元数据的图形视图;图6是根据本发明各种实施例的将数据编程到非易失性存储器的示例性过程的流程图;图7是根据本发明各种实施例的在非易失性存储器上执行垃圾收集的示例性过程的流程图;以及
图8是根据本发明各种实施例的用于确定是否在非易失性存储器上执行磨损均衡的示例性过程的流程图。
具体实施例方式本公开提供了处理具有非易失性存储器(“NVM”)的系统的动态和静态数据的系统和方法。通过确定正被写入NVM的数据是否是动态的,系统的NVM接ロ可确定最初将数据放置在NVM上的什么地方。此外,这允许NVM接ロ提高垃圾收集(“GC”)和磨损均衡的效率。例如,响应于接收到对应于逻辑块地址(“LBA”)范围的写入请求,NVM接ロ可确定与LBA范围相关的数据是否是动态的。在某些实施例中,基于从树或元数据获得的ー个或多个參数,NVM接ロ可做出该确定。一个或多个參数可以是任意适当的參数,诸如,例如指示特定LBA范围已被写入的次数的计数器,指示数据何时由应用程序和/或操作系统最 后写入到LBA范围的用户编织序列(weave sequence),指示数据何时由任意源(例如,由 GC进程,或由应用程序或操作系统)最后写入到LBA范围的编织序列,和/或其任意組合。基于对于与LBA范围相关联的数据是否是动态的确定,NVM接ロ可将数据编程到动态流块或静态流块。如此处所使用的那样,“动态流块”可以是已由NVM接ロ指定为动态流的一部分的任意适当的NVM块。被分类为动态的输入数据可被选择性地置于ー个或多个动态块上。同样地,如此处所使用的那样,“静态流块”可以是由NVM接ロ指定为静态流的一部分的任意适当的NVM块。被分类为静态的输入数据可被选择性地置于ー个或多个静态块上。通过将输入数据分割成两个单独的写入流,GC写入放大可被降低而GC的效率可因此得到提高。此外,对于数据是否是动态的确定允许NVM接ロ避免不必要的NVM磨损均衡。图I例示了电子设备100的框图。在某些实施例中,电子设备100可以是或者可以包括便携式媒体播放器、蜂窝电话机、ロ袋大小的个人电脑、个人数字助理(“PDA”)、台 式机、膝上型电脑以及任意其他合适类型的电子设备。电子设备100可包括片上系统(“SoC”) 110和非易失性存储器(“NVM”) 120。非易失性存储器120可包括基于浮栅或电荷捕获技术的NAND闪存、NOR闪存、可擦除可编程只读存储器(“EPR0M”)、电可擦除可编程只读存储器(“EEPR0M”)、._RAM( “FRAM”)、磁阻RAM( “MRAM”)或其任意组合。NVM 120可被组织成“块”,“块”可以是最小可擦除単元,并且NVM 120可被进ー步组织成“页”,“页”可以是最小的编程或读取单元。在某些实施例中,NVM 120可包括多个集成电路,其中每个集成电路可具有多个块。来自相应集成电路的存储位置(例如,块或块的页)可形成“超级块”。通过使用物理地址(例如,物理页地址或物理块地址),可指示NVM120的每个存储位置(例如页或块)。片上系统110可包括SoC控制电路112、存储器114和NVM接ロ 118。SoC控制电路112可控制SoC 110的一般操作和功能以及SoC 110或设备100的其他部件。例如,响应于用户输入和/或应用程序或操作系统的指令,SoC控制电路112可向NVM接ロ 118发出读取或写入清求以从NVM 120获取数据或在NVM 120中存储数据。为了清楚起见,SoC控制电路112可能请求存储或检索的数据可被称作“用户数据”,即使数据可能和用户或用户应用不直接关联。当然,用户数据可以是SoC控制电路112生成或获取(例如,经由应用程序或操作系统)的任意合适的数字信息序列。SoC控制电路112可包括硬件、软件和固件、以及任意部件、电路或可操作来驱动电子设备100的功能的逻辑的任意组合。例如,SoC控制电路112可包括在NVM 120或存储器114中所存储的软件/固件的控制下操作的一个或多个处理器。存储器114可包括任意合适类型的易失性存储器,诸如随机存取存储器(“RAM”)(例如,静态RAM( “SRAM”)、动态随机存取存储器(“DRAM”)、同步动态随机存取存储器(“SDRAM”)、双数据速率(“DDR”)RAM)、高速缓存存储器、只读存储器(“ROM”)或其任意组合。存储器114可包括可临时存储用户数据以供编程到非易失性存储器1 20或从中读取的数据源。在某些实施例中,对于被实现为SoC控制电路112的一部分的任意处理器,存储器114可用作主存。NVM接ロ 118可包括被配置为用作SoC控制电路112和NVM 120之间的接ロ或驱动器的硬件、软件和/或固件的任意适当组合。对于包括在NVM接ロ 118中的任意软件模块,相应的程序代码可被存储在NVM 120或存储器114中。NVM接ロ 118可执行各种各样的功能,这些功能允许SoC控制电路112存取NVM120并管理NVM 120中的存储位置(例如,页、块、超级块、集成电路)以及其中存储的数据(例如,用户数据)。例如,NVM接ロ 118可解释来自SoC控制电路112的读取或写入请求,执行磨损均衡并产生和NVM 120的总线协议兼容的读取和编程指令。当NVM接ロ 118和SoC控制电路112被示出为单独模块时,这仅仅是希望简化本发明实施例的描述。应该理解的是这些模块可共享硬件部件、软件部件、或者两者。例如,SoC控制电路112可执行用于NVM接ロ 118的基于软件的存储驱动器。在某些实施例中,电子设备100可包括目标设备,例如闪存驱动器或SD卡,其包括NVM 120以及NVM接ロ 118的部分或全部。在这些实施例中,SoCllO或SoC控制电路112可用作目标设备的主控制器。例如,作为主控制器,SoC 110可向目标设备发出读取和写入请求。图2例示了电子设备200的框图,其可更详细地例示根据各种实施例的电子设备100(图I)的固件、软件和/或硬件部件中的某些。电子设备200可具有上面结合图I所述的任意特征和功能,反之亦然。如图所示,虚线区分了各层。应理解的是对于哪些部件落入界线内的描述仅仅是示例性的,并且ー个或多个部件可以隶属于不同层。电子设备200可包括文件系统210、NVM驱动器212、NVM总线控制器216和NVM220。在某些实施例中,文件系统210和NVM驱动器212可以是软件或固件模块,而NVM总线控制器216和NVM 220可以是硬件模块。因此,在这些实施例中,NVM驱动器212可表示NVM接ロ 218的软件或固件方面,而NVM总线控制器216可表示NVM接ロ 218的硬件方面。文件系统210可包括任意合适类型的文件系统,诸如文件分配表(“FAT”)文件系统或更新的分层文件系统(“HFS+”),并且可以是电子设备200的操作系统的一部分(例如,图I的SoC控制电路112的一部分)。在某些实施例中,文件系统210可包括闪存文件系统,其提供了逻辑到物理的页映射。在这些实施例中,文件系统210可执行下述NVM驱动器212的某些或全部功能,因此文件系统210和NVM驱动器212可能或不可能是单独的模块。文件系统210可管理应用程序和操作系统的文件和文件夹结构。文件系统210可在电子设备200上运行的应用程序或操作系统的控制下进行操作,并且当应用程序或操作系统请求从NVM 220读取信息或将信息存储在NVM 220中时,可向NVM驱动器212提供写入和读取请求。和每个读取或写入请求一起,文件系统210可提供逻辑地址以指示应从何处读取用户数据或向何处写入用户数据,诸如逻辑页地址或具有页偏移的逻辑块地址。文件系统210可向与NVM 220不直接兼容的NVM驱动器212提供读取和写入请求。例如,逻辑地址可使用基于硬盘驱动器(hard-drive-based)的系统的典型协定或协议。不像闪存,基于硬盘驱动器的系统能够重写存储位置而无需首先执行块擦除。此外,硬盘驱动器可能不需要磨损均衡来増加设备的寿命。因此,NVM接ロ 218可执行存储器特定的、供应商特定的、或二者兼有的任意功能以处理文件系统请求和以适合于NVM 220的方式执行其他管理功能。 NVM驱动器212可包括转换(translation)层214。在某些实施例中,转换层214可以是或者包括闪存转换层(“FTL”)。对于写入请求,转换层214可将所提供的逻辑地址映射到NVM 220上空的已擦除的物理位置上。对于读取请求,转换层214可使用所提供的逻辑地址以确定其中存储了所请求的数据的物理地址。因为取决于NVM的大小或供应商,每个NVM可能具有不同的布局,所以此映射操作可以是特定于存储器和/或供应商的。除了逻辑到物理地址的映射,转换层214可执行闪存转换层的典型功能中的任意其他合适功能。例如,转换层214可执行垃圾收集(“GC”)以释放NVM220的已编程块以供擦除。一旦被释放和擦除,存储位置可用于存储例如从文件系统210接收的新用户数据。在某些情况下,GC处理可包括将有效数据从已编程的块复制到具有已擦除存储位置的另ー块,因此使得已编程块中的有效数据无效。一旦已编程块中的所有存储位置全被无效,转换层214可指示总线控制器216在已编程块上执行擦除操作。如此处所使用的那样,“有效数据”可指示已响应于和ー个或多个逻辑地址(例如,LBA)对应的最近的写入请求而被编程的用户数据,因此可能是用于一个或多个逻辑地址的用户数据的有效版本。作为另ー示例,转换层214可在NVM 220上执行磨损均衡,其可用于将磨损分配在NVM 220的各种块上。磨损均衡是必要的,因为NVM 220的一部分比NVM 220的其它部分更多地被循环使用(例如,超过循环规范),这可能潜在地导致系统用尽可用空间。此外,NVM220 —小部分上的过度磨损可能导致更糟的总体数据保持。通过首先监控NVM 220的每个块已经循环过的周期数(例如,擦除周期和/或写入周期),转换层214可执行磨损均衡。其后,在恰当的时间(例如,在空闲时间期间或在GC处理期间),转换层214可选择NVM 220的块用以启动磨损均衡。在某些实施例中,可使用磨损均衡队列选择该块。在选择了块之后,转换层214可在该块上启动磨损均衡。例如,转换层214可在块上执行GC(例如,通过将块上存储的有效数据复制到另ー块上并擦除该块)。在某些实施例中,NVM驱动器212可与NVM总线控制器216接ロ以完成NVM存取请求(例如,编程、读取和擦除请求)。总线控制器216可用作到NVM220的硬件接ロ,且能够使用总线协议、数据速率以及NVM 220的其他规范与NVM220通信。NVM接ロ 218可基于存储器管理数据(有时被称作“元数据”)管理NVM220。元数据可由NVM驱动器212生成,或者可由在NVM驱动器212控制下进行操作的模块生成。例如,元数据可包括用于管理逻辑和物理地址之间的映射、坏块管理、磨损均衡的任意信息,用于检测或纠正数据错误的ECC数据,或其任意組合。元数据可包括和用户数据一起由文件系统210提供的数据,诸如逻辑地址。因此,通常,“元数据”可指示关于或涉及用户数据或者通常用于管理非易失性存储器的操作和存储位置的任意信息。NVM接ロ 218可被配置为在NVM220中存储元数据。在某些实施例中,NVM接ロ 218可存储与和用户数据的存储之外相同的存储位置(例如,页)处的用户数据相关的元数据。例如,NVM接ロ 218可存储用户数据、相关逻辑地址、以及用于在NVM 220的ー个或多个存储位置处的用户数据的ECC数据。NVM接ロ 218还可存储关于相同存储位置中的用户数据的其他类型的元数据。将结合图5更详细地描述元数据。NVM接ロ 218可存储逻辑地址,以使得在NVM 220加电时或者在NVM220操作期间,电子设备200可确定什么数据存在于该位置。特别地,因为文件系统210可根据其逻辑地址而非其物理地址參考用户数据,NVM接ロ 218可一起存储用户数据和逻辑地址以保持其关联。这样,例如,即使在NVM 220中保持物理到逻辑映射的单独表格变得过吋,NVM接ロ 218仍然可确定在电子设备200加电或者重新启动时的正确映射。现在參见图3,示出了例示逻辑块地址302到物理页304的示例映射的框图。逻辑块地址可对应于逻辑空间中的逻辑块。每个逻辑块可以是逻辑空间的可从中读取和/或向其写入的最小颗粒的単元,并且可具有任意合适的大小,诸如,例如512字节、4K或8K。文件系统(例如,图2的文件系统210)可将任意合适数量的LBA分配给文件。例如,如图3所示,LBA302可对应文件A-G,其中文件A-G中的每ー个被分配到特定的LBA范围。例如,文件A被分配到LBA范围0-39,文件B被分配到LBA范围40-99,文件C被分配到LBA范围100-399,等等。每个文件A-G的大小由文件左边的编号范围示出。此外,LBA可由文件系统使用以參考存储于NVM(例如,图I的NVM 120或者图2的NVM 220)的一个或多个存储位置中的数据。例如,LBA302的每个LBA可映射到页304的一页上。因此,每个LBA可映射到对应页的物理地址上。如图3所示,例如,文件A的LBA范围映射到以P2开始并以P3-1结尾的物理地址上,文件B的LBA范围映射到以PO开始并以Pl-I结尾的物理地址上,等等。图4示出了树400的框图,树400可用于提供逻辑到物理的映射。具体地,树400可提供LBA范围(例如,图3的LBA 302的LBA范围)和NVM(例如图I的NVM 120或图2的NVM 220)的对应物理地址(例如,图3的页304的物理地址)之间的映射。在某些实施例中,树400可被存储并保持于易失性存储器(例如,图I的存储器114)中。树400可包括多个节点,其中为了进行存储分配,每个节点可为恒定大小(例如,每个节点可具有64字节的固定大小)。此外,树400的每个节点可包括ー个或多个条目。例如,如图4所示,节点402可包括4个条目(例如,条目404-410)。节点的每个条目可对应ー个LBA范围(例如,行程长度编码压缩(“rle-压缩”)范围),并可包括到另ー节点的指针(“节点指针”)或到NVM的物理地址的指针(“NAND指针”)。例如,如图4所示,显示了条目404-410,其分别对应于LBA范围340、200、260和224。此外,如图4所示,条目404-410中的每ー个可具有指向树中其他节点的节点指针。具体地,条目404被示为指向节点420,其又具有两个条目(例如,条目430和432)。本领域技术人员将意识到条目406-410也可指向树400中的其他节点(例如,节点422-426)。然而为了简单,未详细示出这些节点,而是以虚线框示出。条目404-410中的每ー个可包括计数器412-415,其可指示特定LBA范围已被写入的次数。例如,如图4所示,对应于条目404-410中的每ー个的LBA范围分别具有值为10、13,20,10的计数器。下面将更加详细地论述计数器。 节点420的条目430具有指向NVM物理地址(例如,页 地址P2)的NAND指针433。相比之下,节点420的条目432具有指向树400中的另ー节点(例如,节点440)的节点指针438。为了简单起见,未详细示出节点440,而是以虚线框示出。由于LBA范围(例如,rle-压缩范围)存储于树400中而非LBA中,所以为了获得特定文件的逻辑到物理映射,NVM接ロ(例如,图I中的NVM接ロ 118或图2中的NVM接ロ 218)可能需要从顶端节点到底端节点遍历树400。例如,基于文件的LBA,随着其从树400的顶端节点延伸,NVM接ロ可递增地址标签,直到所得到的地址标签和文件的LBA匹配。本领域技术人员将意识到树400可具有任意合适的树结构。在某些情况下,树400可具有改善特定条目的检索时间的树结构,例如b-树或b * -树。和存储LBA (例如,开始LBA和结束LBA)的映射系统相比,树400的每个条目可被分配有较小数量的存储空间,对于具有空间限制的系统来说这是有利的。具体地,树400的每个条目可被分配有与条目中所存储的范围大小对应的位数。随着LBA范围的大小増加,分配给对应条目的位数也増加。例如,如果节点条目对应于小的rle-压缩范围,则该条目可被分配有较小的尺寸(例如,4字节)。可替换地,如果节点条目存储了大的rle-压缩范围,则该条目可被分配有较大的尺寸(例如,6字节)。因为分配给特定条目的尺寸是动态的,所以树400的每个节点可适合于可变数量的条目。此外,通过存储LBA范围而非LBA,树400的每个节点可包括更多的指针(例如,节点和NAND指针)。例如,如果树400的每个节点被分配有64字节,而随后每个条目被分配有4到6字节,则树400的每介节点能够存储10到16个指针。如图4所示,树400的ー个或多个条目可具有包括与条目相关的信息的字段。例如,条目430可包括范围434和页地址435,其可分别提供LBA范围和条目的页地址。具体地,如果条目430对应于文件A(图3),则范围434和页地址435可分别具有值40和P2。此外,计数器436可指示LBA范围434已被写入的次数。例如,当NVM接ロ检测到文件系统(例如,图2中的文件系统210)已发出了对于特定LBA范围(例如,已被指定给LBA范围的文件)的写入请求吋,NVM接ロ可递增对应于该LBA范围的计数器(例如,计数器递增I)。例如,在图4所示的示例中,计数器436指示范围434迄今已被写入过四次。本领域技术人员将意识到条目404-410、430、432中的每ー个可包括图4中未示出的额外字段。通常,对应于树400的条目的计数器可提供对于ー数据段如何是动态的还是静态的指示。例如,当数据被首次写入到新文件时,其可能不清楚和文件相关的数据是动态的还是静态的。然而,随着文件被持续更新,基于文件被写入的次数,可以推断和文件相关的数据是否是动态数据。如此处所使用的那样,“动态数据”可以是存储在NVM中的频繁更新或改变的有效数据。相比之下,“静态数据”可以是存储在NVM中的极少更新或改变的有效数据。依赖于ー个或多个事件的发生,树400的计数器可以以各种方式改变。例如,对应于树中ー个条目的计数器可能最終在最大值处(例如,对于8位计数器来说是Oxff)饱和。因此,在某些情况下,NVM接ロ可监控树400的计数器,并检测树400的计数器何时达到最大值。一旦检测到计数器已达到最大值,NVM接ロ就能将树的所有计数器的值减半。这是可能的,原因在于系统中数据的动态/静态特征的测量是相对的。
作为另ー示例,如果毗邻的LBA范围分割成两个或更多个范围,则NVM接ロ可将之前与LBA范围相关的计数器复制到与两个或更多个分割范围中的每ー个相关的条目中。NVM接ロ随后递增与正被写入的分割范围相关的计数器。例如在图4所示的示例中,如果LBA范围434分割成两个范围(例如,一个较低范围和ー个较高范围),则NVM接ロ可将计数器436的值复制到每个所得到的条目中。如果随后发布了对于较高范围的写入请求,则NVM接ロ可更新较高范围的计数器,但是较低范围的计数器的值保持不变。作为再ー实施例,如果NVM接ロ确定LBA范围已被删除,则NVM接ロ可将对应于LBA范围的计数器复位到默认值(例如,默认值O)。这是因为针对特定LBA范围写入的数据的动态特性通常依赖于指定给该LBA范围的文件的类型。因此,与被指定给该LBA范围的之前文件相比,被指定给LBA范围的新文件可具有不同的动态特性,因此树400中对应的计数器也应被复位。在某些实施例中,树400的ー个或多个条目还可包括用户编织序列437,当数据由应用程序和/或操作系统最后写入(例如,数据由主机最后写入)到特定LBA范围时,用户编织序列可对应于年龄(age)。在某些情况下,用户编织序列437可以是随着对LBA范围进行数据更新而增长的计数器(例如,48位计数器)。例如,如图4所示,树400中的用户编织序列437指示当数据被最后写入到范围434时,年龄是10。取代在树400中存储用户编织序列或除其之外,本领域技术人员将意识到数据的用户编织序列可存储于系统中的任意其他合适的位置。例如,用户编织序列可存储为NVM(例如,图I中的NVM 120或者图2中的NVM 220)的页中的元数据。现在參考图5,元数据500可表示和NVM (例如,图I中的NVM 120或图2中的NVM220)中所存储的用户数据相关的不同类型的元数据。正如图5所示,元数据500可以包括用户编织序列502,当数据由应用程序和/或操作系统最后写入到相关的LBA范围(例如,LBA范围506)时,用户编织序列502可对应于年龄。结果,用户编制序列502可与用户编制序列437 (图4)相似。因此,在之后的时间需要做出比较时,NVM接ロ可能从树(例如,图4的树400)或元数据500中获得用户编织序列。在某些实施例中,元数据500可包括编织序列504,当数据由任意源(例如,由GC进程或由应用程序或操作系统)最后写入到LBA范围506时,编织序列504对应于年龄。本领域技术人员将意识到任意合适类型的元数据可存储于NVM中。例如,如图5所示,元数据500还可包括页地址505,其可对应于和用户数据相关的ー个或多个页地址。作为另ー示例,元数据500中也可包括一个或多个计数器(例如,类似于图5中的计数器412-415或计数器436)和/或ECC数据(图5中未示)。本领域技术人员还将意识到替代地或另外地,编织序列可被存储于树中(例如,图4的树400)中。可以使用任意合适的方法来确定与LBA范围相关的数据(例如,文件)是否是动态的。在某些实施例中,NVM接ロ可确定与LBA范围相关的动态值是否大于等于预定阈值。动态值可对应于LBA范围的计数器(例如,图4中计数器412-415或计数器436中的ー个)、用户编织序列、编织序列、其他任意合适的值和/或其任意组合。相应地,预定阈值可对应于NVM中所存储的数据的平均动态值。在某些情况下,可通过使用由擦掉树(scrubbing tree) 400获得的启发而确定预定阈值。因此平均动态值随时间的变化依赖于文件系统和NVM上所存储的所有数据的动态特性的写入发布的总数。这样,对于特定数据段是否是动态的确定可与NVM上所存储的所有数据的平均动态值有夫。作为示例,通过首先擦掉树400的每个节点用以确定NVM上所存储的数据的动态特性分布,NVM接ロ可获得预定阈值。之后,使用动态特性分布,NVM接ロ可计算NVM上所存储的数据的平均动态值。
在其他实施例中,通过执行计数器和数据年龄的相对比较,诸如数据的用户编织序列(例如,图4的用户编织序列437或图5的用户编织序列502),NVM接ロ可确定与LBA范围相关的数据是否是动态的。在某些实施例中,通过比较用户编织序列和系统的当前年龄,NVM接ロ可确定用户编织序列是年轻的还是年老的。在确定用户编织序列是年轻的还是年老的之后,NVM接ロ可将用户编织序列和计数器比较。例如,如果用户编织序列相对年轻而计数器具有大的值(例如,LBA范围已被频繁写入),则NVM接ロ可确定数据是相对动态的。换句话说,如果用户编织序列相对年老而计数器具有小的值(例如,LBA范围极少被写入),则NVM接ロ可确定数据是相对静态的。此外,如果用户编织序列相对年老而计数器具有大的值,则NVM接ロ可确定数据曾是动态的但现在是静态的。本领域技术人员将意识到NVM接ロ在LBA范围被首次写入时可比较计数器和编织序列(例如,图5的编织序列504)或年龄,来替代比较计数器和用户编织序列。在进ー步的实施例中,通过比较在LBA范围被最后写入时的年龄和在LBA范围被首次写入时的年龄,NVM接ロ可确定与LBA范围相关的数据是否是动态的。在LBA范围被最后写入时的年龄可对应于编织序列(例如,图5的编织序列504)或者用户编织序列(例如,图4的用户编织序列437或图5的用户编织序列502)。基于上述比较,NVM接ロ可获得年龄上的差异,并确定年龄上的差异是否小于预定阈值。如果年龄上的差异小于预定阈值,则NVM接ロ可确定与LBA范围相关的数据是动态的。在进ー步的实施例中,通过比较数据的年龄(例如,用户编织序列或编织序列)和最后启动事件的时间,NVM接ロ可确定数据是否是动态的。最后启动事件的时间可建立用于和数据的年龄比较的相对基线。在进ー步的实施例中,基于从操作系统接收到的信息,NVM接ロ可确定数据是否是动态的。例如,除了提供ー个或多个LBA、LBA计数、以及和将被存储到NVM中的数据相关的缓冲器,操作系统还可提供关于数据是否是静态的信息。參考图6-8,图示了根据本发明各种实施例的示例性处理的流程图。这些处理可由系统(例如,图I的电子设备100)的ー个或多个部件执行。例如,图6-8的处理中的至少某些步骤可由NVM接ロ(例如,图I中的NVM接ロ 118或图2中的NVM接ロ 218)执行。首先转向图6,显示了将数据编程到NVM(例如,图I中的NVM 120或图2中的NVM220)的处理600。处理600可在步骤602开始。在步骤604处,NVM接ロ可接收对应于LBA范围的写入请求。例如,NVM接ロ可接收对LBA范围434 (图4)的写入请求。在步骤606处,NVM接ロ可从树上获得至少ー个參数,其中该树可存储逻辑到物理地址映射。例如,NVM接ロ可首先识别对应于LBA范围的在树(例如图4的树400)中的条目。识别该条目之后,NVM接ロ可从所识别的条目中获得至少ー个參数。所述至少ー个參数可包括指示LBA范围已被写入的次数的计数器(例如,图4中的计数器412-415或计数器436中的ー个),和/或与在数据由应用程序和/或操作系统最后写入到LBA范围时的年龄对应的用户编织序列(例如,图4的用户编织序列437)。继续到步骤608,NVM接ロ可至少部分地基于至少ー个 參数,确定与LBA范围相关的数据是否是动态的。例如,NVM接ロ可确定与LBA范围相关的计数器是否大于等于预定阈值(例如,使用从树上获得的启发(heuristics)而确定的存储在NVM中的数据的平均动态值)。作为另ー示例,NVM接ロ可执行计数器和数据年龄之间的相对比较。数据年龄可以是任意合适的年龄,诸如,例如数据的用户编织序列、数据的编织序列(例如,图5的编织序列504)、或者在LBA范围被首次写入时的年龄。作为再ー示例,NVM接ロ可比较在LBA范围被最后写入时的年龄(例如,用户编织序列或编织序列)和在LBA范围被首次写入时的年龄。如果在步骤608处,NVM接ロ确定与LBA范围相关的数据是动态的,则处理600可移动到步骤610。在步骤610处,NVM接ロ可指示总线控制器(例如,图2中的NVM总线控制器216)将与写入请求有关的数据编程到NVM的动态流块中。处理600之后在步骤612结束。如此处所使用的那样,“动态流块”可以是NVM的已由NVM接ロ指定为动态流的一部分的任意合适块。被分类为动态的输入数据可被选择性地置于ー个或多个动态块上。例如,在一个实施例中,动态流块之前可能已经是之后被指定为动态流块的NVM的低循环块。在步骤608处,反之如果NVM接ロ确定与LBA范围有关的数据不是动态的,则处理600可移动到步骤614。在步骤614处,NVM接ロ可指示总线控制器将与写入请求相关的数据编程到NVM的静态流块中。之后处理600在步骤612处结束。如此处所使用的那样,“静态流块”可以是NVM的已由NVM接ロ指定为静态流的一部分的任意合适块。被分类为静态的输入数据可被选择性地置于ー个或多个静态块上。在一个实施例中,静态流块之前可能已经是之后被指定为静态流块的NVM的高循环块。在某些实施例中,NVM接ロ可使用单独的写入指针来写入动态流块或静态流块。例如,NVM接ロ可使用动态写入指针来写入到动态流块,而用静态写入指针来写入到静态流块。因此,通过确定特定数据段是动态的还是静态的,NVM接ロ可更佳地确定NVM上数据的初始放置。这可以提高垃圾收集(“GC”)的效率,因而其能够降低NVM的磨损。例如,通过将动态和静态数据分割成NVM上的単独块,NVM接ロ可选择对NVM的动态流块而非静态流块执行GC。因为动态流块最终具有很少有效页或没有有效页,这是由于动态数据被更新的频率而导致的,所以GC期间必须移动的有效数据的数量是最小的。因此可降低GC写入放大。
例如,现在參照图7,示出了对NVM(例如,图I中的NVM 120或图2中的NVM220)执行GC的示例性处理的流程图。处理700可在步骤702处开始。在步骤704处,NVM接ロ可确定需要对NVM的块执行GC。在步骤706处,NVM接ロ可选择具有有效数据的块的页。继续到步骤708处,NVM接ロ可确定页上存储的数据是否是动态数据。如上所述,通过使用任意合适的方法,NVM接ロ可确定数据是否是动态的。例如,NVM接ロ可找出树(例如,图4的树400)的对应于数据的LBA范围的条目(例如,图4的条目430)。NVM接ロ之后可确定条目的计数器(例如,图4的计数器412-415或计数器436中的ー个)是否大于等于预定阈值(例如,平均动态值)。作为另ー示例,基于从操作系统接收到的信息,NVM接ロ可确定数据是否是动态的。在步骤708处,如果NVM接ロ确定页中存储的数据是动态数据,处理700可移动到步骤710。例如,NVM接ロ可确定树的对应条目的计数器大于等于预 定阈值。在步骤710处,NVM接ロ可指示总线控制器(例如,图2的NVM总线控制器216)将数据复制到NVM的动态流块上。之后,继续到步骤712,NVM接ロ可确定是否存在具有有效数据的块的其它页。在步骤712处,如果NVM接ロ确定存在具有有效数据的其它页,处理700可返回到步骤708,其中NVM接ロ可确定块的另ー页上存储的数据是否是动态数据。随后NVM接ロ可针对块的具有有效数据的每ー页重复上述处理过程。返回来參见步骤712,反之如果NVM接ロ确定不存在块的具有有效数据的其它页,则处理700进行到步骤714。在步骤714处,NVM接ロ可指示总线控制器擦除该块,且处理700可在步骤716处结束。擦除块随后允许用新数据重新编程该块。返回来參见步骤708,反之如果NVM接ロ确定页上存储的数据不是动态数据,则处理700移动到步骤718。例如,NVM接ロ可确定树的对应条目的计数器小于预定阈值。结果,NVM接ロ可确定数据是静态的。在步骤718处,NVM接ロ可指示总线控制器将数据复制到NVM的静态流块上。处理700之后移动到步骤712,其中NVM接ロ可确定是否存在块的具有有效数据的其它页。因此,使用这样ー种方法,NVM接ロ能够改变对于数据是动态的还是静态的初始确定。于是,如果特定数据段已从动态数据变为静态数据或者从静态数据变为动态数据,则在对块执行GC的同吋,NVM接ロ可改变数据的放置。现在转向图8,示出了用于确定是否对NVM(例如,图I的NVM 120或图2的NVM220)执行磨损均衡的示例性处理800的流程图。处理800可从步骤802处开始。在步骤804处,NVM接ロ可擦掉树(例如,图4的树400)的多个节点上的每个节点以确定NVM上所存储的数据的动态特性分布。NVM接ロ之后可至少部分地基于动态特性分布,确定是否需要对NVM执行磨损均衡。在某些情况下,通过使用动态特性分布,NVM接ロ可计算NVM上所存储的数据的平均动态值。例如,在步骤806处,NVM接ロ可从NVM中选择ー个块,其是NVM的高循环块。在某些情况下,该块可具有特定数量的周期(例如,擦除周期和/或写入周期),其中周期数比NVM其他块的循环多预定间隔。继续到步骤808,NVM接ロ可确定该块是否是动态块。例如,基于从树(例如,图4的树400)获得的或者从元数据(例如,图5的元数据500)获得的ー个或多个參数,NVM接ロ可计算块上所存储的数据的块动态值。之后NVM接ロ可比较块动态值和NVM上所存储的数据的动态特性。在某些实施例中,NVM接ロ可确定块上所存储的数据是否具有大于等于平均动态值的块动态值。在其他实施例中,NVM接ロ可确定块上所存储的数据是否具有为平均动态值的恒定倍数的块动态值。在进ー步的实施例中,NVM接ロ可确定块上所存储的数据是否具有在与平均动态值的标准偏差的预定数量之外的块动态值。在步骤808处,如果NVM接ロ确定块不是动态块,处理800可在步骤810处结束。因此,NVM接ロ可保持块上的数据。这样,NVM接ロ可避免对块执行磨损均衡,因为其被确定为是不必要的。 在步骤808处,反之如果NVM接ロ确定块是动态块,则处理800移动到步骤812。在步骤812处,NVM接ロ可将该块指定为静态流块。结果,从文件系统(例如,图2的文件系统210)上接收到的将来的静态数据可被置于该块上。之后,继续到步骤814,NVM接ロ可确定在块的页上存储的数据是否是动态数据。在步骤814处,如果NVM接ロ确定页上所存储的数据是动态数据,则处理800移动到步骤816。在步骤816处,NVM接ロ可指示总线控制器(例如,图2的NVM总线控制器216)将页上存储的数据复制到动态流块上。处理800之后移动到步骤818处。在步骤818处,NVM接ロ可确定块上是否存在具有有效数据的其它页。在步骤818处,如果NVM接ロ确定存在具有有效数据的其它页,则处理800返回到步骤814。在步骤814处,NVM接ロ可确定块的另ー页上所存储的数据是否是动态数据。NVM接ロ随后可针对块上的具有有效数据的每ー页重复该过程。在步骤818处,如果NVM接ロ确定不存在具有有效数据的额外页,则处理800在步骤810处结束。因此可以对块执行GC。例如,一旦块上存储的所有有效数据都已被复制到NVM的其他存储位置中,则该块可被擦除。擦除该块之后,NVM接ロ开始在块上放置静态数据(例如,来自GC和/或主机写入)。返回来參见步骤814,反之如果NVM接ロ确定页上所存储的数据不是动态数据,则处理800可移动到步骤820。在步骤820处,NVM接ロ可指示总线控制器将页中所存储的数据复制到静态流块上。处理800之后移动到步骤818,其中NVM接ロ可确定在块上是否存在具有有效数据的其它页。通过确定数据是动态还是静态,并将该信息融入到磨损均衡中,系统可做出关于是否需要磨损均衡的更佳決定。通过避免不必要的磨损均衡,系统可降低对NVM执行的周期数和系统的总带宽。此外,关于数据是否是动态的信息还允许系统做出关于在对块执行磨损均衡的同时向哪儿移动数据的更好决定。此外,和通常对整个块执行磨损均衡的传统磨损均衡系统中可能做出的决定相比,本方法允许系统以更精细的粒度(例如,块的页)做出磨损均衡決定。该精细调谐的决定做出过程还趋于降低NVM上的磨损数量,并趋于扩展NVM的有用寿命。应当理解的是图6-8各自的处理600、700和800仅仅是例示性的。任意的步骤可被移除、修改或组合,并且任意额外的步骤可被添加而不脱离本发明的范围。
出于例示而非限制的目的给出了本发明的上述实施例。
权利要求
1.ー种确定电子设备中的动态数据的方法,所述方法包括 接收对应于逻辑块地址(LBA)范围的写入请求; 从树中获得至少ー个參数,其中所述树存储了逻辑到物理地址映射; 至少部分地基于所述至少ー个參数,确定与LBA范围相关的数据是否是动态的;以及响应于确定与LBA范围相关的数据是动态的,将与写入请求相关的数据编程到非易失性存储器(NVM)的动态流块中。
2.如权利要求I所述的方法,其中响应于确定与LBA范围相关的数据不是动态的,将与写入请求相关的数据编程到NVM的静态流块中。
3.如权利要求2所述的方法,其中动态流块是已由存储器接ロ指定为动态流的一部分的NVM块,而静态流块是已由存储器接ロ指定为静态流的一部分的NVM块。
4.如权利要求1、2或3所述的方法,其中所述至少一个參数包括以下中的至少ー个指示LBA范围已被写入的次数的计数器,以及与在数据由应用程序或操作系统中的至少ー个最后写入到LBA范围时的年龄对应的用户编织序列。
5.如权利要求4所述的方法,还包括 递增计数器。
6.如权利要求4所述的方法,其中确定与LBA范围相关的数据是否是动态的包括以下中的至少ー个 确定计数器是否大于等于预定阈值, 执行计数器和用户编织序列之间的相对比较,以及 将用户编织序列和最后启动事件的时间相比较。
7.如权利要求4所述的方法,其中确定与LBA范围相关的数据是否是动态的包括 当LBA范围首次被写入时将用户编织序列和年龄相比较以获得年龄上的差异;以及 确定年龄上的差异是否小于预定阈值;以及 响应于确定年龄上的差异小于预定阈值,确定与LBA范围相关的数据是动态的。
8.一种系统,包括 非易失性存储器(NVM),包括多个可操作来存储数据的块; 易失性存储器,用于存储包括多个节点的树;以及 存储器接ロ,包括 总线控制器,用于和NVM通信;以及 控制电路,可操作来擦掉树的多个节点中的每个节点以确定NVM上所存储的数据的动态特性分布,以及至少部分地基于动态特性分布,确定NVM上是否需要磨损均衡。
9.如权利要求8所述的系统,其中控制电路还可操作来通过使用动态特性分布,计算数据的平均动态值。
10.如权利要求9所述的系统,其中控制电路还可操作来从多个块中选择其为NVM的高循环块的块,确定块是否是动态块,以及响应于确定所述块是动态块,将所述块指定为静态流块。
11.如权利要求10所述的系统,其中控制电路可操作来确定块上所存储的数据是否具有块动态值,所述块动态值为以下中的至少ー个大于等于平均动态值、平均动态值的恒定倍数、以及在与平均动态值的标准偏差的预定数量之外。
12.如权利要求10所述的系统,其中控制电路还可操作来为具有有效数据的块的每ー页确定页上所存储的数据是否是动态数据,以及响应于确定页上所存储的数据是动态数据,指示总线控制器将数据复制到动态流块上。
13.如权利要求12所述的系统,其中响应于确定页上所存储的数据不是动态数据,控制电路还可操作来指示总线控制器将数据复制到静态流块上。
14.一种在非易失性存储器(NVM)中执行垃圾收集的方法,所述方法包括 确定需要对NVM的块执行垃圾收集; 至少部分地基于从树上获得的參数,为具有有效数据的块的每ー页确定页上所存储的数据是否是动态的;以及 响应于确定所述数据是动态的,将所述数据复制到NVM的动态流块上。
15.如权利要求14所述的方法,还包括 擦除所述块。
16.如权利要求14所述的方法,还包括 保持包括多个条目的树,其中所述树提供逻辑块地址(LBA)范围和NVM中的对应物理地址之间的映射;以及 监控树中的多个计数器,其中所述多个计数器中的每个计数器对应于多个条目中的一个条目,并且计数器指示对应的LBA范围已被写入的次数。
17.如权利要求16所述的方法,其中确定页中所存储的数据是否是动态的包括 找出多个条目中与数据的LBA范围对应的ー个条目; 确定所述条目的计数器是否大于等于预定阈值;以及 响应于确定所述条目的计数器大于等于预定阈值,确定所述数据是动态的。
18.如权利要求17所述的方法,还包括 响应于确定所述条目的计数器小于预定阈值,确定所述数据是静态的;以及 将所述数据复制到NVM的静态流块上。
19.如权利要求16所述的方法,还包括 检测多个计数器中的计数器已经达到最大值;以及 将树的多个计数器的值减半。
20.如权利要求16所述的方法,还包括 确定特定LBA范围已被删除;以及 将多个计数器中与特定LBA范围对应的计数器重置成默认值。
21.如权利要求16所述的方法,还包括 检测文件系统已经发布了对于特定LBA范围的写入请求;以及 递增多个计数器中与特定LBA范围对应的计数器。
22.ー种确定电子设备中的动态数据的设备,所述设备包括 用于接收对应于逻辑块地址(LBA)范围的写入请求的装置; 用于从树中获得至少ー个參数的装置,其中所述树存储了逻辑到物理地址映射; 用于至少部分地基于所述至少ー个參数,确定与LBA范围相关的数据是否是动态的装置;以及 用于响应于确定与LBA范围相关的数据是动态的,将与写入请求相关的数据编程到非易失性存储器(NVM)的动态流块中的装置。
23.如权利要求22所述的设备,还包括 用于响应于确定与LBA范围相关的数据不是动态的,将与写入请求相关的数据编程到NVM的静态流块中的装置。
24.如权利要求23所述的设备,其中动态流块是已由存储器接ロ指定为动态流的一部分的NVM块,而静态流块是已由存储器接ロ指定为静态流的一部分的NVM块。
25.如权利要求22所述的设备,其中所述至少一个參数包括以下中的至少ー个指示LBA范围已被写入的次数的计数器,以及与在数据由应用程序或操作系统中的至少ー个最后写入到LBA范围时的年龄对应的用户编织序列。
26.如权利要求25所述的装置,其中用于确定与LBA范围相关的数据是否是动态的装置包括以下装置中的至少ー个 用于确定计数器是否大于等于预定阈值的装置, 用于执行计数器和用户编织序列之间的相对比较的装置,以及 用于将用户编织序列和最后启动事件的时间相比较的装置。
27.如权利要求25所述的设备,其中用于确定与LBA范围相关的数据是否是动态的装置包括 用于当LBA范围首次被写入时将用户编织序列和年龄相比较以获得年龄上的差异的装置;以及 用于确定年龄上的差异是否小于预定阈值的装置;以及 用于响应于确定年龄上的差异小于预定阈值,确定与LBA范围相关的数据是动态的装置。
全文摘要
本公开涉及处理具有非易失性存储器的系统的动态和静态数据。用于确定电子设备中的动态数据的方法包括接收对应于逻辑块地址(LBA)范围的写入请求;从树中获得至少一个参数,其中所述树存储了逻辑到物理地址映射;至少部分地基于所述至少一个参数,确定与LBA范围相关的数据是否是动态的;以及响应于确定与LBA范围相关的数据是动态的,将与写入请求相关的数据编程到非易失性存储器(NVM)的动态流块中。本发明可降低对NVM执行的周期数和系统的总带宽。
文档编号G06F12/02GK102693184SQ20111046322
公开日2012年9月26日 申请日期2011年12月31日 优先权日2011年1月3日
发明者D·J·波斯特, N·J·瓦克拉特 申请人:苹果公司

最新回复(0)