CN102693184A - 处理具有非易失性存储器的系统的动态和静态数据 - Google Patents
处理具有非易失性存储器的系统的动态和静态数据 Download PDFInfo
- Publication number
- CN102693184A CN102693184A CN2011104632276A CN201110463227A CN102693184A CN 102693184 A CN102693184 A CN 102693184A CN 2011104632276 A CN2011104632276 A CN 2011104632276A CN 201110463227 A CN201110463227 A CN 201110463227A CN 102693184 A CN102693184 A CN 102693184A
- Authority
- CN
- China
- Prior art keywords
- data
- dynamic
- nvm
- piece
- lba
- 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.)
- Granted
Links
- 230000003068 static effect Effects 0.000 title claims abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 41
- 238000005299 abrasion Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 15
- 241001269238 Data Species 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 2
- 230000000875 corresponding effect Effects 0.000 description 28
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 238000009954 braiding Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008672 reprogramming Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 241001672694 Citrus reticulata Species 0.000 description 1
- 244000188472 Ilex paraguariensis Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/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
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/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/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及处理具有非易失性存储器的系统的动态和静态数据。用于确定电子设备中的动态数据的方法包括:接收对应于逻辑块地址(LBA)范围的写入请求;从树中获得至少一个参数,其中所述树存储了逻辑到物理地址映射;至少部分地基于所述至少一个参数,确定与LBA范围相关的数据是否是动态的;以及响应于确定与LBA范围相关的数据是动态的,将与写入请求相关的数据编程到非易失性存储器(NVM)的动态流块中。本发明可降低对NVM执行的周期数和系统的总带宽。
Description
技术领域
本公开一般涉及处理具有非易失性存储器的系统的动态和静态数据。
背景技术
NAND闪存和其他类型的非易失性存储器(“NVM”)通常用于海量存储。例如,诸如便携式媒体播放器的消费电子设备经常包括闪存以存储音乐、视频和其他媒体。
NVM可包括电子设备所需的数据(例如,“有效数据”)和电子设备不再需要的数据(例如,“无效数据”)。在NVM中存储的有效数据可被进一步划分成频繁更新或变化的数据(例如,“动态数据”)和极少更新或变化的数据(例如,“静态数据”)。常规地,NVM中数据的放置是相当任意的,以至可在NVM的单个块中存储动态数据和静态数据的混合。
某些NVM被配置成在块中的任意存储位置可被重新编程之前,需要擦除已编程存储位置块。因此,电子设备通常执行被称作“垃圾收集”(“GC”)的操作以释放供擦除和重新编程的块。为了释放该块中的所有存储位置以便擦除,电子设备可将块的有效数据复制到另一块的存储位置中。因为块上存在动态数据和静态数据的混合,所以GC的效率可能低下,这是由于必须要复制的有效数据的数量可能是相当大的。
此外,通过使用被称作“磨损均衡(wear leveling)”的操作,电子设备有时可以对块执行GC。磨损均衡通常用于扩展NVM的有用寿命。时常地,系统可执行NVM的不必要的磨损均衡,事实上这可能导致NVM的更多磨损。
发明内容
公开了处理具有非易失性存储器的系统的动态和静态数据的系统和方法。通过确定正被写入NVM的数据是否是动态的,系统的NVM接口可确定最初将数据放置在NVM上的什么地方。此外,这允许NVM接口提高垃圾收集和磨损均衡的效率。
附图说明
一旦结合附图考虑下述详细说明,本发明的上述和其他的方面和优点将变得更加明显,附图中同样的附图标记始终指代同样的部件,在附图中:
图1和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磨损均衡。
图1例示了电子设备100的框图。在某些实施例中,电子设备100可以是或者可以包括便携式媒体播放器、蜂窝电话机、口袋大小的个人电脑、个人数字助理(“PDA”)、台式机、膝上型电脑以及任意其他合适类型的电子设备。
电子设备100可包括片上系统(“SoC”)110和非易失性存储器(“NVM”)120。非易失性存储器120可包括基于浮栅或电荷捕获技术的NAND闪存、NOR闪存、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、铁电RAM(“FRAM”)、磁阻RAM(“MRAM”)或其任意组合。
NVM 120可被组织成“块”,“块”可以是最小可擦除单元,并且NVM 120可被进一步组织成“页”,“页”可以是最小的编程或读取单元。在某些实施例中,NVM 120可包括多个集成电路,其中每个集成电路可具有多个块。来自相应集成电路的存储位置(例如,块或块的页)可形成“超级块”。通过使用物理地址(例如,物理页地址或物理块地址),可指示NVM 120的每个存储位置(例如页或块)。
片上系统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可包括可临时存储用户数据以供编程到非易失性存储器120或从中读取的数据源。在某些实施例中,对于被实现为SoC控制电路112的一部分的任意处理器,存储器114可用作主存。
NVM接口118可包括:被配置为用作SoC控制电路112和NVM 120之间的接口或驱动器的硬件、软件和/或固件的任意适当组合。对于包括在NVM接口118中的任意软件模块,相应的程序代码可被存储在NVM 120或存储器114中。
NVM接口118可执行各种各样的功能,这些功能允许SoC控制电路112存取NVM 120并管理NVM 120中的存储位置(例如,页、块、超级块、集成电路)以及其中存储的数据(例如,用户数据)。例如,NVM接口118可解释来自SoC控制电路112的读取或写入请求,执行磨损均衡并产生和NVM 120的总线协议兼容的读取和编程指令。
当NVM接口118和SoC控制电路112被示出为单独模块时,这仅仅是希望简化本发明实施例的描述。应该理解的是:这些模块可共享硬件部件、软件部件、或者两者。例如,SoC控制电路112可执行用于NVM接口118的基于软件的存储驱动器。
在某些实施例中,电子设备100可包括目标设备,例如闪存驱动器或SD卡,其包括NVM 120以及NVM接口118的部分或全部。在这些实施例中,SoC110或SoC控制电路112可用作目标设备的主控制器。例如,作为主控制器,SoC 110可向目标设备发出读取和写入请求。
图2例示了电子设备200的框图,其可更详细地例示根据各种实施例的电子设备100(图1)的固件、软件和/或硬件部件中的某些。电子设备200可具有上面结合图1所述的任意特征和功能,反之亦然。如图所示,虚线区分了各层。应理解的是:对于哪些部件落入界线内的描述仅仅是示例性的,并且一个或多个部件可以隶属于不同层。
电子设备200可包括文件系统210、NVM驱动器212、NVM总线控制器216和NVM 220。在某些实施例中,文件系统210和NVM驱动器212可以是软件或固件模块,而NVM总线控制器216和NVM 220可以是硬件模块。因此,在这些实施例中,NVM驱动器212可表示NVM接口218的软件或固件方面,而NVM总线控制器216可表示NVM接口218的硬件方面。
文件系统210可包括任意合适类型的文件系统,诸如文件分配表(“FAT”)文件系统或更新的分层文件系统(“HFS+”),并且可以是电子设备200的操作系统的一部分(例如,图1的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的其它部分更多地被循环使用(例如,超过循环规范),这可能潜在地导致系统用尽可用空间。此外,NVM 220一小部分上的过度磨损可能导致更糟的总体数据保持。
通过首先监控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(例如,图1的NVM 120或者图2的NVM 220)的一个或多个存储位置中的数据。例如,LBA302的每个LBA可映射到页304的一页上。因此,每个LBA可映射到对应页的物理地址上。如图3所示,例如,文件A的LBA范围映射到以P2开始并以P3-1结尾的物理地址上,文件B的LBA范围映射到以P0开始并以P1-1结尾的物理地址上,等等。
图4示出了树400的框图,树400可用于提供逻辑到物理的映射。具体地,树400可提供LBA范围(例如,图3的LBA 302的LBA范围)和NVM(例如图1的NVM 120或图2的NVM 220)的对应物理地址(例如,图3的页304的物理地址)之间的映射。在某些实施例中,树400可被存储并保持于易失性存储器(例如,图1的存储器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接口(例如,图1中的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范围的计数器(例如,计数器递增1)。例如,在图4所示的示例中,计数器436指示范围434迄今已被写入过四次。本领域技术人员将意识到:条目404-410、430、432中的每一个可包括图4中未示出的额外字段。
通常,对应于树400的条目的计数器可提供对于一数据段如何是动态的还是静态的指示。例如,当数据被首次写入到新文件时,其可能不清楚和文件相关的数据是动态的还是静态的。然而,随着文件被持续更新,基于文件被写入的次数,可以推断和文件相关的数据是否是动态数据。如此处所使用的那样,“动态数据”可以是存储在NVM中的频繁更新或改变的有效数据。相比之下,“静态数据”可以是存储在NVM中的极少更新或改变的有效数据。
依赖于一个或多个事件的发生,树400的计数器可以以各种方式改变。例如,对应于树中一个条目的计数器可能最终在最大值处(例如,对于8位计数器来说是0xff)饱和。因此,在某些情况下,NVM接口可监控树400的计数器,并检测树400的计数器何时达到最大值。一旦检测到计数器已达到最大值,NVM接口就能将树的所有计数器的值减半。这是可能的,原因在于系统中数据的动态/静态特征的测量是相对的。
作为另一示例,如果毗邻的LBA范围分割成两个或更多个范围,则NVM接口可将之前与LBA范围相关的计数器复制到与两个或更多个分割范围中的每一个相关的条目中。NVM接口随后递增与正被写入的分割范围相关的计数器。例如在图4所示的示例中,如果LBA范围434分割成两个范围(例如,一个较低范围和一个较高范围),则NVM接口可将计数器436的值复制到每个所得到的条目中。如果随后发布了对于较高范围的写入请求,则NVM接口可更新较高范围的计数器,但是较低范围的计数器的值保持不变。
作为再一实施例,如果NVM接口确定LBA范围已被删除,则NVM接口可将对应于LBA范围的计数器复位到默认值(例如,默认值0)。这是因为针对特定LBA范围写入的数据的动态特性通常依赖于指定给该LBA范围的文件的类型。因此,与被指定给该LBA范围的之前文件相比,被指定给LBA范围的新文件可具有不同的动态特性,因此树400中对应的计数器也应被复位。
在某些实施例中,树400的一个或多个条目还可包括用户编织序列437,当数据由应用程序和/或操作系统最后写入(例如,数据由主机最后写入)到特定LBA范围时,用户编织序列可对应于年龄(age)。在某些情况下,用户编织序列437可以是随着对LBA范围进行数据更新而增长的计数器(例如,48位计数器)。例如,如图4所示,树400中的用户编织序列437指示当数据被最后写入到范围434时,年龄是10。
取代在树400中存储用户编织序列或除其之外,本领域技术人员将意识到:数据的用户编织序列可存储于系统中的任意其他合适的位置。例如,用户编织序列可存储为NVM(例如,图1中的NVM 120或者图2中的NVM 220)的页中的元数据。
现在参考图5,元数据500可表示和NVM(例如,图1中的NVM 120或图2中的NVM 220)中所存储的用户数据相关的不同类型的元数据。正如图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,图示了根据本发明各种实施例的示例性处理的流程图。这些处理可由系统(例如,图1的电子设备100)的一个或多个部件执行。例如,图6-8的处理中的至少某些步骤可由NVM接口(例如,图1中的NVM接口118或图2中的NVM接口218)执行。
首先转向图6,显示了将数据编程到NVM(例如,图1中的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(例如,图1中的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(例如,图1的NVM 120或图2的NVM 220)执行磨损均衡的示例性处理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仅仅是例示性的。任意的步骤可被移除、修改或组合,并且任意额外的步骤可被添加而不脱离本发明的范围。
出于例示而非限制的目的给出了本发明的上述实施例。
Claims (27)
1.一种确定电子设备中的动态数据的方法,所述方法包括:
接收对应于逻辑块地址(LBA)范围的写入请求;
从树中获得至少一个参数,其中所述树存储了逻辑到物理地址映射;
至少部分地基于所述至少一个参数,确定与LBA范围相关的数据是否是动态的;以及
响应于确定与LBA范围相关的数据是动态的,将与写入请求相关的数据编程到非易失性存储器(NVM)的动态流块中。
2.如权利要求1所述的方法,其中响应于确定与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范围相关的数据是动态的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/983,715 US8521948B2 (en) | 2011-01-03 | 2011-01-03 | Handling dynamic and static data for a system having non-volatile memory |
US12/983,715 | 2011-01-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102693184A true CN102693184A (zh) | 2012-09-26 |
CN102693184B CN102693184B (zh) | 2015-06-03 |
Family
ID=45558496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110463227.6A Active CN102693184B (zh) | 2011-01-03 | 2011-12-31 | 处理具有非易失性存储器的系统的动态和静态数据 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8521948B2 (zh) |
EP (1) | EP2472405B1 (zh) |
KR (2) | KR101390134B1 (zh) |
CN (1) | CN102693184B (zh) |
TW (2) | TWI448890B (zh) |
WO (1) | WO2012094237A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107430493A (zh) * | 2015-03-27 | 2017-12-01 | 英特尔公司 | 顺序写入流管理 |
CN108780483A (zh) * | 2016-02-29 | 2018-11-09 | 萨基姆宽带简易股份有限公司 | 用于在电子设备的启动阶段显示动画的方法以及相关的电子设备 |
CN113439266A (zh) * | 2018-12-14 | 2021-09-24 | 美光科技公司 | 使用行程长度编码算法的映射表压缩 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US9189392B1 (en) * | 2011-06-30 | 2015-11-17 | Western Digital Technologies, Inc. | Opportunistic defragmentation during garbage collection |
US9235502B2 (en) | 2011-09-16 | 2016-01-12 | Apple Inc. | Systems and methods for configuring non-volatile memory |
US8819375B1 (en) | 2011-11-30 | 2014-08-26 | Western Digital Technologies, Inc. | Method for selective defragmentation in a data storage device |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
KR20130139084A (ko) * | 2012-06-12 | 2013-12-20 | 삼성전자주식회사 | 메모리 시스템 및 메모리 청크 단위로 메모리를 관리하는 메모리 관리 방법 |
US8799561B2 (en) * | 2012-07-27 | 2014-08-05 | International Business Machines Corporation | Valid page threshold based garbage collection for solid state drive |
US20150207669A1 (en) * | 2012-09-14 | 2015-07-23 | Telefonaktiebolaget L M Ericsson (Publ) | Data redundancy in a data layered architecture network |
US20140122774A1 (en) * | 2012-10-31 | 2014-05-01 | Hong Kong Applied Science and Technology Research Institute Company Limited | Method for Managing Data of Solid State Storage with Data Attributes |
KR102053953B1 (ko) * | 2013-02-04 | 2019-12-11 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법 |
US9323766B2 (en) * | 2013-03-15 | 2016-04-26 | Metrix Instrument Co., Lp | Data collection device and method |
JP2016184402A (ja) * | 2015-03-26 | 2016-10-20 | パナソニックIpマネジメント株式会社 | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法 |
US20170139826A1 (en) * | 2015-11-17 | 2017-05-18 | Kabushiki Kaisha Toshiba | Memory system, memory control device, and memory control method |
US10296264B2 (en) * | 2016-02-09 | 2019-05-21 | Samsung Electronics Co., Ltd. | Automatic I/O stream selection for storage devices |
TWI592800B (zh) | 2016-10-04 | 2017-07-21 | 大心電子(英屬維京群島)股份有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
CN108701084B (zh) * | 2017-01-23 | 2022-08-12 | 美光科技公司 | 部分写入块处理 |
US10496413B2 (en) * | 2017-02-15 | 2019-12-03 | Intel Corporation | Efficient hardware-based extraction of program instructions for critical paths |
KR102457400B1 (ko) | 2017-11-16 | 2022-10-21 | 삼성전자주식회사 | 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템 |
FR3074317B1 (fr) | 2017-11-27 | 2019-11-22 | Idemia Identity & Security France | Procede d'acces a une zone memoire non volatile de type flash d'un element securise, tel qu'une carte a puce |
KR102113212B1 (ko) * | 2017-11-28 | 2020-05-20 | 성균관대학교산학협력단 | 플래시 메모리 시스템 및 그 제어 방법 |
CN110908925B (zh) * | 2018-09-17 | 2022-01-25 | 慧荣科技股份有限公司 | 高效能垃圾收集方法以及数据存储装置及其控制器 |
US10884954B2 (en) | 2018-09-17 | 2021-01-05 | Silicon Motion, Inc. | Method for performing adaptive locking range management, associated data storage device and controller thereof |
KR20200059780A (ko) | 2018-11-21 | 2020-05-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20210055387A (ko) | 2019-11-07 | 2021-05-17 | 삼성전자주식회사 | 컨텍스트에 기반하여 애플리케이션을 제공하는 서버 및 그 제어 방법 |
US11494299B2 (en) | 2021-02-18 | 2022-11-08 | Silicon Motion, Inc. | Garbage collection operation management with early garbage collection starting point |
EP4083775A1 (de) * | 2021-04-29 | 2022-11-02 | Michael Offel | Vorrichtung und verfahren zur speicherverwaltung |
JP2023000085A (ja) * | 2021-06-17 | 2023-01-04 | キオクシア株式会社 | メモリシステム及び情報処理システム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050015378A1 (en) * | 2001-06-05 | 2005-01-20 | Berndt Gammel | Device and method for determining a physical address from a virtual address, using a hierarchical mapping rule comprising compressed nodes |
US20050114589A1 (en) * | 1991-09-13 | 2005-05-26 | Lofgren Karl M. | Wear leveling techniques for flash EEPROM systems |
US20050132126A1 (en) * | 2003-12-15 | 2005-06-16 | Lin Lin | Method and file structures for managing data on a flash disk |
CN1991791A (zh) * | 2005-12-27 | 2007-07-04 | 三星电子株式会社 | 使用非易失性存储器作为高速缓存的存储设备及运行方法 |
US20080282025A1 (en) * | 2007-05-09 | 2008-11-13 | Stmicroelectronics S.R.L. | Wear leveling in storage devices based on flash memories and related circuit, system, and method |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5388083A (en) | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US8266367B2 (en) | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US8060718B2 (en) | 2006-06-20 | 2011-11-15 | International Business Machines | Updating a memory to maintain even wear |
KR100843543B1 (ko) * | 2006-10-25 | 2008-07-04 | 삼성전자주식회사 | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 |
US8935302B2 (en) * | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
KR100881669B1 (ko) * | 2006-12-18 | 2009-02-06 | 삼성전자주식회사 | 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치 |
US8275928B2 (en) * | 2008-05-15 | 2012-09-25 | Silicon Motion, Inc. | Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables |
US20090289947A1 (en) * | 2008-05-20 | 2009-11-26 | Himax Technologies Limited | System and method for processing data sent from a graphic engine |
CN101645309B (zh) | 2008-08-05 | 2013-05-22 | 威刚科技(苏州)有限公司 | 非挥发性存储装置及其控制方法 |
TWI375887B (en) * | 2008-10-31 | 2012-11-01 | A Data Technology Co Ltd | Flash memory device with wear-leveling mechanism and controlling method thereof |
US8205063B2 (en) | 2008-12-30 | 2012-06-19 | Sandisk Technologies Inc. | Dynamic mapping of logical ranges to write blocks |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8250293B2 (en) * | 2009-01-19 | 2012-08-21 | Qimonda Ag | Data exchange in resistance changing memory for improved endurance |
US8090899B1 (en) * | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
KR101571693B1 (ko) | 2009-04-15 | 2015-11-26 | 삼성전자주식회사 | 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법 |
US8516219B2 (en) * | 2009-07-24 | 2013-08-20 | Apple Inc. | Index cache tree |
US8402242B2 (en) * | 2009-07-29 | 2013-03-19 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
US8266481B2 (en) * | 2009-07-29 | 2012-09-11 | Stec, Inc. | System and method of wear-leveling in flash storage |
-
2011
- 2011-01-03 US US12/983,715 patent/US8521948B2/en active Active
- 2011-12-30 WO PCT/US2011/068021 patent/WO2012094237A1/en active Application Filing
- 2011-12-31 CN CN201110463227.6A patent/CN102693184B/zh active Active
-
2012
- 2012-01-03 EP EP12150057.3A patent/EP2472405B1/en active Active
- 2012-01-03 KR KR1020120000701A patent/KR101390134B1/ko active IP Right Grant
- 2012-01-03 TW TW101100209A patent/TWI448890B/zh active
- 2012-01-03 TW TW101128492A patent/TWI519950B/zh not_active IP Right Cessation
- 2012-01-05 KR KR1020120001364A patent/KR101818578B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050114589A1 (en) * | 1991-09-13 | 2005-05-26 | Lofgren Karl M. | Wear leveling techniques for flash EEPROM systems |
US20050015378A1 (en) * | 2001-06-05 | 2005-01-20 | Berndt Gammel | Device and method for determining a physical address from a virtual address, using a hierarchical mapping rule comprising compressed nodes |
US20050132126A1 (en) * | 2003-12-15 | 2005-06-16 | Lin Lin | Method and file structures for managing data on a flash disk |
CN1991791A (zh) * | 2005-12-27 | 2007-07-04 | 三星电子株式会社 | 使用非易失性存储器作为高速缓存的存储设备及运行方法 |
US20080282025A1 (en) * | 2007-05-09 | 2008-11-13 | Stmicroelectronics S.R.L. | Wear leveling in storage devices based on flash memories and related circuit, system, and method |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107430493A (zh) * | 2015-03-27 | 2017-12-01 | 英特尔公司 | 顺序写入流管理 |
CN107430493B (zh) * | 2015-03-27 | 2023-10-03 | 英特尔公司 | 顺序写入流管理 |
CN108780483A (zh) * | 2016-02-29 | 2018-11-09 | 萨基姆宽带简易股份有限公司 | 用于在电子设备的启动阶段显示动画的方法以及相关的电子设备 |
CN108780483B (zh) * | 2016-02-29 | 2022-10-11 | 萨基姆宽带简易股份有限公司 | 用于在电子设备的启动阶段显示动画的方法以及相关的电子设备 |
CN113439266A (zh) * | 2018-12-14 | 2021-09-24 | 美光科技公司 | 使用行程长度编码算法的映射表压缩 |
Also Published As
Publication number | Publication date |
---|---|
KR101390134B1 (ko) | 2014-04-28 |
KR20120079023A (ko) | 2012-07-11 |
WO2012094237A1 (en) | 2012-07-12 |
US20120173832A1 (en) | 2012-07-05 |
TW201241623A (en) | 2012-10-16 |
KR101818578B1 (ko) | 2018-01-15 |
TW201245959A (en) | 2012-11-16 |
CN102693184B (zh) | 2015-06-03 |
EP2472405B1 (en) | 2014-12-17 |
TWI519950B (zh) | 2016-02-01 |
EP2472405A1 (en) | 2012-07-04 |
US8521948B2 (en) | 2013-08-27 |
KR20120079026A (ko) | 2012-07-11 |
TWI448890B (zh) | 2014-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102693184B (zh) | 处理具有非易失性存储器的系统的动态和静态数据 | |
CN109144888B (zh) | 存储器系统 | |
CN102999431B (zh) | 用于非易失性存储器系统的编织序列计数器 | |
CN103164346B (zh) | 使用lba位图的方法与系统 | |
US8935459B2 (en) | Heuristics for programming data in a non-volatile memory | |
US8949506B2 (en) | Initiating wear leveling for a non-volatile memory | |
US9235502B2 (en) | Systems and methods for configuring non-volatile memory | |
US9239785B2 (en) | Stochastic block allocation for improved wear leveling | |
EP2570927B1 (en) | Handling unclean shutdowns for a system having non-volatile memory | |
EP2530612B1 (en) | Mount-time unmapping of unused logical addresses in non-volatile memory systems | |
US8924632B2 (en) | Faster tree flattening for a system having non-volatile memory | |
EP1909184A2 (en) | Mapping information managing apparatus and method for non-volatile memory supporting different cell types | |
CN106557428A (zh) | 数据存储设备的映射系统选择 | |
US10083181B2 (en) | Method and system for storing metadata of log-structured file system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1176420 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |