CN103164346B - 使用lba位图的方法与系统 - Google Patents
使用lba位图的方法与系统 Download PDFInfo
- Publication number
- CN103164346B CN103164346B CN201210536023.5A CN201210536023A CN103164346B CN 103164346 B CN103164346 B CN 103164346B CN 201210536023 A CN201210536023 A CN 201210536023A CN 103164346 B CN103164346 B CN 103164346B
- Authority
- CN
- China
- Prior art keywords
- lba
- mapping
- bitmap
- nvm
- entry
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000013507 mapping Methods 0.000 claims abstract description 166
- 230000008569 process Effects 0.000 claims description 46
- 230000004044 response Effects 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000005299 abrasion Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000011067 equilibration Methods 0.000 description 4
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 239000007795 chemical reaction product Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100435119 Arabidopsis thaliana APRR1 gene Proteins 0.000 description 1
- 101100481792 Schizosaccharomyces pombe (strain 972 / ATCC 24843) toc1 gene Proteins 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 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
-
- 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
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- 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/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/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
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Abstract
本发明涉及LBA位图使用。公开了对于具有非易失性存储器(“NVM”)的系统的逻辑块地址(“LBA”)位图使用的系统和方法。位图可以被存储在系统的易失性存储器中,其中,位图可以存储一个或多个逻辑地址的映射状态。通过使用位图,系统可以确定LBA的映射状态而无需访问NVM。另外,系统还可以利用最少的NVM访问来更新LBA的映射状态。通过减少NVM访问的数量,系统可以避免触发垃圾回收过程,这可以提高总体系统性能。
Description
背景技术
NAND闪存,以及其他类型的非易失性存储器(“NVM”)常常用于大容量存储。例如,诸如便携式媒体播放器之类的家用电器包括闪存以存储音乐、视频,及其他媒体。
具有NVM的系统可以包括存储在NVM中的指出逻辑块地址(“LBA”)的映射状态的索引页。例如,如果LBA的映射状态是“映射”,则这可以指出LBA当前与存储在NVM中的用户数据相关联。可另选地,如果LBA的映射状态是“取消映射”,则这可以指出以前被映射到LBA的数据已经被擦除,或LBA从来没有被映射到任何用户数据。
由于LBA的映射状态存储在索引页中,因此每当LBA被映射或取消映射时,系统都需要更新索引页,从而导致对NVM执行编程操作。由于额外的编程操作,系统最终需要对NVM执行垃圾回收,以便腾出空间。这又会降低系统性能。
发明内容
公开了对于具有非易失性存储器(“NVM”)的系统的逻辑块地址(“LBA”)位图使用的系统和方法。可以被存储在系统的易失性存储器中的位图可以存储一个或多个逻辑地址(例如,LBA)的映射状态。通过使用位图,系统可以确定LBA的映射状态,无需访问NVM。另外,系统还可以利用最少的NVM访问来更新LBA的映射状态。通过减少NVM访问的数量,系统可以避免触发垃圾回收过程,这可以提高总体系统性能。
附图说明
通过下面参考附图进行的详细描述,本发明的以上及其他方面、优点将变得更加显而易见,在附图中,类似的附图标记在整个图中表示相同的部件,其中:
图1是根据本发明的各实施例配置的电子设备的框图;
图2是根据本发明的各实施例的存储器映射体系结构的说明性框图;
图3是根据本发明的各实施例配置的电子设备的另一个框图;
图4A-4C是根据本发明的各实施例的说明性位图;
图5是根据本发明的各实施例的用于使用位图处理取消映射请求的说明性过程的流程图;
图6是根据本发明的各实施例的用于使用位图处理读取请求的说明性过程的流程图;
图7是根据本发明的各实施例的用于更新树的说明性过程的流程图;
图8是根据本发明的各实施例的用于更新有效性计数器的说明性过程的流程图;以及
图9是根据本发明的各实施例的用于更快的垃圾回收的说明性过程的流程图。
具体实施方式
提供了对于具有非易失性存储器(“NVM”)的系统的进行逻辑块地址(“LBA”)位图使用的系统和方法。可以被存储在系统的易失性存储器中的位图可以存储一个或多个逻辑地址(例如,LBA)的映射状态。位图的每一条目都可以对应于一个或多个LBA。
通过使用位图,系统的NVM接口可以确定LBA的映射状态,无需访问NVM。另外,NVM接口还可以利用最少的NVM访问来更新LBA的映射状态。例如,响应于接收到来自文件系统的取消映射特定LBA的请求,NVM接口可以将位图的对应的条目的映射状态从“映射”更改为“取消映射”。通过减少NVM访问的数量,系统可以避免触 发垃圾回收过程,这可以提高总体系统性能。
在通过更新位图来改变LBA的映射状态之后,NVM接口可以查询存储在易失性存储器中的树,以便更新至少一个也存储在易失性存储器中的有效性计数器。然而,可包括NVM的LBA和物理地址之间的映射的树不一定需要被更新以反映LBA的取消映射。相反,只有在树存储器使用有利地被减少的情况下,NVM接口才可以确定执行树更新。
在NVM接口不能通过查询树来更新至少一个有效性计数器的情况下,NVM接口可能需要从NVM加载与LBA相关联的索引页。虽然NVM接口需要将索引页读取到易失性存储器中,NVM接口不必更新并将索引页重新编程到NVM中。最后结果是,需要执行的索引页操作的总数被减少,并可以避免垃圾回收。
在某些实施例中,位图可以改善垃圾回收过程。具体而言,通过使用位图,NVM接口可以减少当对存储在NVM中的用户数据执行垃圾回收时需要作出的索引页访问的数量。
图1示出了电子设备100的框图。在某些实施例中,电子设备100可以是或可包括便携式媒体播放器、蜂窝电话、袖珍个人计算机、个人数字协助(“PDA”)、台式计算机、膝上型计算机、以及任何其他合适类型的电子设备。
电子设备100可包括系统级芯片(“SoC”)110和非易失性存储器(“NVM”)120。非易失性存储器120可包括基于浮动栅或电荷俘获技术的NAND闪存、NOR闪存、可擦可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、铁电随机存储器(“FRAM”)、磁阻RAM(“MRAM”)、或其任何组合。
NVM120可以被组织成“块”(可以是最小的可擦除的单元),并进一步组织成“页面”,页面可以是可以被编程或读取的最小的单元。在某些实施例中,NVM120可包括多个集成电路,其中,每一集成电路都可以具有多个块。来自对应的集成电路的存储单元(例如,块或块的页面)可以构成“超级块”。可以使用物理地址(例如,物理页面 地址或物理块地址)来参考NVM120的每一存储单元(例如,页面或块)。
现在参考图2,示出了用于将逻辑地址映射到物理页面的说明性存储器映射体系结构200。体系结构200被分成易失性存储器(在虚线的左边示出)和非易失性存储器(在虚线的右边示出)。即,查找表202、索引表缓存204、树210、以及位图212被存储在易失性存储器(例如,图1的存储器114)中,而索引表206和数据页208被存储在非易失性存储器(例如,图1的NVM120)中。
NVM的一个或多个页面可以是数据页208,数据页208可以被用来存储与SoC(例如,图1的SoC110)或设备(例如,图1的设备100)的组件的一般操作相关联的数据。在某些实施例中,块内容表(“TOC”)可以与每一数据块相关联。例如,在图2中所示出的示例中,块TOC1可以与数据块1相关联,块TOCN可以与数据块N相关联,等等。每一个块TOC都可以存储在对应的数据块中,并可包括将数据块的数据页映射到对应的逻辑地址的信息。
另外,NVM的一个或多个页面还可以被用来存储索引表206。在其中逻辑扇区被直接映射到物理页面的各实施例中,逻辑到物理映射可以存储在索引表206中。如此处所使用的,“逻辑到物理映射”可以是数据页的一个或多个逻辑地址(例如,逻辑扇区)和物理地址(例如,物理页面地址或虚拟块地址)之间的映射。例如,索引表206可以保留NVM的数据页208的物理地址。
在某些情况下,索引表206可包括多个索引页1-N,其中,每一索引页都可以将逻辑地址映射到数据页208的一个或多个物理地址(例如,存储一个或多个逻辑到物理映射)。例如,如图2所示,索引表206的索引页1可以将逻辑地址映射到数据块1和数据块N的一个或多个数据页。
回头参考图1,系统级芯片110可包括SoC控制电路112、存储器114、以及NVM接口118。SoC控制电路112可以控制SoC110以及SoC110或设备100的其他组件的一般操作和功能。例如,响应于 用户输入和/或应用或操作系统的指令,SoC控制电路112可以向NVM接口118发出读取或写入请求,以从NVM120获取数据或将数据存储在NVM120中。为清楚起见,SoC控制电路112可以请求供存储或检索的数据可以简称为“用户数据”,尽管数据可能不直接与用户或用户应用相关联。相反,用户数据可以是由SoC控制电路112生成或获取的(例如,通过应用或操作系统)数字信息的任何合适的序列。
SoC控制电路112可包括可操作以驱动电子设备100的功能的硬件、软件、和固件,以及任何组件、电路、或逻辑的任何组合。例如,SoC控制电路112可包括在存储在NVM120或存储器114中的软件/固件的控制下操作的一个或多个处理器。
存储器114可包括任何合适类型的易失性存储器,如随机存取存储器(“RAM”)(例如,静态RAM(“SRAM”)、动态随机存取存储器(“DRAM”)、同步动态随机存取存储器(“SDRAM”)、双倍数据速率(“DDR”)RAM)、高速缓冲存储器、只读存储器(“ROM”),或其任何组合。存储器114可包括可以临时存储用于被编程到非易失性存储器120或从其中读取的用户数据的数据源。在某些实施例中,存储器114可以充当被实现为SoC控制电路112的一部分的任何处理器的主存储器。
在某些实施例中,存储器114可以存储一个或多个可以被NVM接口118用来执行其相关联的操作的数据结构。例如,存储器114可包括位图。这也在图2中被示出,其中,易失性存储器包括位图212。
位图可以存储一个或多个逻辑地址(例如,LBA)的映射状态(例如,“映射”或“取消映射”)。例如,如果LBA的映射状态是“映射”,则NVM接口118可以确定LBA当前与存储在NVM120中的用户数据相关联。可另选地,如果LBA的映射状态是“取消映射”,则NVM接口118可以确定LBA以前被映射到用户数据(但是用户数据此后删除),或LBA从来没有被映射到任何用户数据。
位图可以在任何合适的时间被填充。例如,在某些系统中,文件系统可以提供关于在系统引导过程中哪些LBA被取消映射的信息。例 如,一旦文件系统安装,NVM接口118可以从文件系统接收与LBA的映射状态相关联的信息。在接收到信息之后,NVM接口118可以使用该信息来填充位图。由于可以自动地从文件系统获得映射状态,因此,可以缩短整个系统安装时间。然而,如果文件系统不提供关于在引导过程中哪些LBA被取消映射的信息,则NVM接口118可以通过扫描NVM120来获取映射状态。在系统操作过程中,位图可以被NVM接口118动态地维护和使用。
位图可以具有诸如例如2MB之类的任何合适的大小。被分配给位图的存储器的量可以取决于一个或多个因素。例如,较小的位图可以使更多空间在存储器114中可用,用于存储其他信息(例如,树)。相比之下,更大的位图可以使位图的每一条目对应于单个LBA,这可以给NVM接口118提供关于每一LBA的映射状态的决定性的信息。在任一种情况下,与除映射状态之外需要存储物理和/或逻辑地址的不同数据结构(例如,表)相比,位图可以具有较小的大小。将参考图4A-4C更详细地描述各种类型的位图。
作为另一个示例,存储器114可包括树,该树可包括多个树条目。例如,如图2所示,树210可以提供NVM(例如,图1的NVM120)的逻辑地址(例如,LBA)和对应的物理地址之间的映射。树210可以具有改善诸如例如b-树或b*-树之类的树的特定条目的检索时间的树状结构。在某些情况下,可以给树210分配易失性存储器中的预先确定的量的树存储器。
作为再一个示例,存储器114可包括查找表和/或索引表缓存。例如,如图2所示,查找表202可以保留索引表206的位置(例如,物理地址)。具体而言,查找表202可以保留构成索引表206的一部分的索引页1-N的逻辑到物理映射。另外,查找表202还可以存储索引表缓存204的存储单元。
索引表缓存204可以保留最近写入的或访问的逻辑地址(例如,逻辑扇区)的物理地址,以便提供更快的读出。即,缓存204可以保留当前被编程或最近已经被编程的数据页208的逻辑到物理映射。周 期性地,存储在索引表缓存204中的信息可以被清空到NVM的索引页1-N。
回头参考图1,NVM接口118可以包括被配置成充当SoC控制电路112和NVM120之间的接口或驱动器的硬件、软件,和/或固件的任何合适的组合。对于NVM接口118中所包括的任何软件模块,对应的程序代码可以存储在NVM120或存储器114中。
NVM接口118可以执行使SoC控制电路112访问NVM120并管理NVM120的存储单元(例如,页面、块、超级块、集成电路)以及其中存储的数据(例如,用户数据)的各种功能。例如,NVM接口118可以解释来自SoC控制电路112的读取或写入请求,执行磨损平衡,并生成与NVM120的总线协议兼容的读取和程序指令。
尽管NVM接口118和SoC控制电路112被示为单独的模块,但是这只打算简化对本发明的各实施例的描述。应该理解,这些模块可以共享硬件组件、软件组件或两者。例如,SoC控制电路112可以执行NVM接口118的基于软件的存储器驱动器。
在某些实施例中,电子设备100可包括诸如闪存驱动器或SD卡之类的目标设备,该目标设备包括NVM120和NVM接口118的某些或全部部分。在这些实施例中,SoC110或SoC控制电路112可以充当目标设备的主机控制器。例如,作为主机控制器,SoC110可以向目标设备发出读取和写入请求。
图3示出了根据各实施例的电子设备300的框图,该框图可以更详细地示出电子设备100(图1)的固件、软件、和/或硬件组件中的一些。电子设备300可以具有上文参考图1所描述的特征和功能中的任何一个,反之亦然。如图所示,虚线限定各层。应该理解,对落在分界线内的组件的描绘只是说明性的,一个或多个组件可以与不同的层有关系。
电子设备300可包括文件系统310、NVM驱动器312、NVM总线控制器316、以及NVM320。在某些实施例中,文件系统310和NVM驱动器312可以是软件或固件模块,而NVM总线控制器316和NVM 320可以是硬件模块。因此,在这些实施例中,NVM驱动器312可以表示NVM接口318的软件或固件方面,而NVM总线控制器316可以表示NVM接口318的硬件方面。
文件系统310可包括任何合适类型的文件系统,如文件分配表(“FAT”)文件系统或分级文件系统加(“HFS+”),并可以是电子设备300的操作系统的一部分(例如,图1的SoC控制电路112的一部分)。在某些实施例中,文件系统310可以包括提供页面的逻辑到物理映射的闪存文件系统。在这些实施例中,文件系统310可以执行下面所讨论的NVM驱动器312的功能中的某些或全部,因此文件系统310和NVM驱动器312可以是或可以不是单独的模块。
文件系统310可以管理应用和操作系统的文件和文件夹结构。文件系统310可以在运行于电子设备300上的应用或操作系统的控制下操作,并可以在应用或操作系统请求从NVM320中读取信息或将信息存储在NVM320时向NVM驱动器312提供写入和读取请求。与每一读取或写入请求一起,文件系统310可以提供逻辑地址以指出应该从哪里读取用户数据或向哪里写入用户数据,如带有页面偏移的逻辑页面地址或逻辑块地址。
文件系统310可以向NVM驱动器312提供不直接与NVM320兼容的读取和写入请求。例如,逻辑地址可以使用基于硬驱动器的系统的典型的约定或协议。基于硬驱动器的系统,与闪存不同,可以改写存储单元,无需首先执行块擦除。此外,硬盘驱动器可能不需要磨损平衡来延长设备的寿命。因此,NVM接口318可以执行存储器特定的,供应商特定的,或两种情况的任何功能,以处理文件系统请求,并以适于NVM320的方式执行其他管理功能。
NVM驱动器312可包括转换层314。在某些实施例中,转换层314可以是或包括闪存转换层(“FTL”)。在写入请求时,转换层314可以将所提供的逻辑地址映射到NVM320上的空闲的,擦除的物理位置。在读取请求时,转换层314可以使用所提供的逻辑地址来确定在其中存储了所请求的数据的物理地址。由于每一NVM都可以具有 取决于NVM的大小或供应商的不同的布局,因此此映射操作可以是存储器和/或供应商特定的。
除逻辑到物理地址映射之外,转换层314可以执行可以是典型的闪存转换层的任何其他合适的功能,如垃圾回收(“GC”)和磨损平衡。
在某些实施例中,NVM驱动器312可以与NVM总线控制器316对接,以完成NVM访问请求(例如,编程、读取、以及擦除请求)。总线控制器316可以充当到NVM320的硬件接口,并可以使用总线协议、数据速率、及NVM320的其他规范,与NVM320进行通信。
NVM接口318可以基于此处有时称为“元数据”的存储器管理数据,来管理NVM320。元数据可以是由NVM驱动器312生成,或者可以由在NVM驱动器312的控制下操作的模块生成。例如,元数据可包括用于管理逻辑和物理地址之间的映射,坏的块管理,磨损平衡的任何信息,用于检测或校正数据错误的ECC数据,或其任何组合。元数据可以包括由文件系统310所提供的数据以及诸如逻辑地址之类的用户数据。如此,一般而言,“元数据”可以是指有关或涉及用户数据的任何信息,或一般性地用于管理非易失性存储器的操作和存储单元。
NVM接口318可以被配置成将元数据存储在NVM320中。在某些实施例中,NVM接口318可以将与用户数据相关联的元数据存储在其中存储了用户数据的相同存储单元(例如,页面)。例如,NVM接口318可以将用户数据,相关联的逻辑地址,以及用户数据的ECC数据存储在NVM320的一个或多个存储单元。NVM接口318还可以将有关用户数据的其他类型的元数据存储在相同存储单元。
NVM接口318可以存储逻辑地址,以便在NVM320接通电源时或在NVM320的操作过程中,电子设备300可以确定什么数据驻留在该位置。具体而言,由于文件系统310可以根据其逻辑地址但不是其物理地址引用用户数据,因此NVM接口318可以将用户数据和逻辑地址存储在一起以维护它们的关联。这样,即使在NVM320中维护物理到逻辑映射的单独的表过时,NVM接口318仍可以在例如电 子设备300通电或重新启动时确定适当的映射。
如上文所讨论的,可以被存储在易失性存储器中的位图可以存储一个或多个LBA的映射状态。另外,位图的每一条目都可以对应于一个或多个LBA。例如,现在参考图4A-4C,示出了各种说明性位图。所属技术领域的专业人员将理解,位图可包括任何合适数量的条目。然而,为简单起见,图4A-4C的每一位图被示为只包括八个条目。
首先参考图4A,位图400可包括条目400A-H。位图的每一条目都可以对应于单个LBA。如此,例如,条目400A-H可以每一个都分别对应于LBA0-7。另外,每一条目还可以对应于一个比特。即,位图400的每一条目都可以存储二进制值(例如,0或1),其中,每一二进制值都可以对应于映射状态“取消映射”或“映射”。当数据被编程为LBA并且对应的位图条目具有映射状态“取消映射”时,位图条目可以被更新以反映映射状态“映射”。然而,如果对应的位图条目已经具有映射状态“映射”,则其中预先存储了LBA的块的有效性计数器可以减少。
由于位图400的每一条目都对应于单个LBA,因此位图400可以给NVM接口(例如,图1的NVM接口118或图3的NVM318)提供关于特定LBA是否被映射或取消映射的决定性的信息。在替换的配置中,条目到LBA的粒度可以降低,以便位图的每一条目都可以对应于多个LBA(例如,8、16、或32LBA)。虽然这样的配置可能不会提供对于系统的每一个LBA的决定性的映射状态,但是这些位图可以较小(例如,256kB,而并非2MB),这会节省存储器中的额外的空间(例如,图1的存储器114)。另外的存储器空间可以被用于其他目的,诸如例如存储更大的树(例如,图2的树210)。
在其他实施例中,位图的每一条目都可以对应于多个LBA。例如,现在请参看图4B,位图402可包括条目402A-H,其中,每一条目都可以与八个LBA相关联。另外,每一条目还仍可以对应于一个比特。即,每一条目都可以存储二进制值,其中,每一二进制值都可以对应于映射状态“全部映射/全部取消映射”或“未知”。例如,如图4B 所示,如果一个条目具有“是”标签,对应于该条目的全部LBA都可以被视为全部映射或者全部取消映射,取决于配置位图402的方式。相比之下,如果一个条目具有“混合”标签,则对应于该条目的LBA的映射状态可以被视为“未知”。如此,对应于条目的一个或多个LBA可以被取消映射,而其余LBA可以被映射。
接下来参看图4C,位图404可包括条目404A-H,其中,每一条目还可以对应于八个LBA。然而,在此情况下,每一条目都可以存储多个比特(例如,两个比特)。因此,位图404的每一条目都可以对应于三个值中的一个,其中每一值都可以对应于合适的映射状态(例如,“映射”、“取消映射”,或“混合”)。例如,如图4C所示,如果一个条目具有“映射”标签,则对应于该条目的全部LBA都可以被映射。同样,如果一个条目具有“取消映射”标签,则对应于该条目的全部LBA都可以被取消映射。相比之下,如果一个条目具有“混合”标签,则对应于该条目的一个或多个LBA可以被取消映射,而其余LBA可以被映射。
对于位图402和404,如果NVM接口确定一个条目的映射状态是未知状态(例如,NVM接口遇到一个条目的“未知”或“混合”值),则NVM接口可能需要分别地确定和/或更新与该条目相关联的每一LBA的映射状态。例如,NVM接口可以查询并更新系统的一个或多个数据结构,诸如例如树(例如,图2的树210)和/或一个或多个索引页(例如,图2的索引页1-N)。结果,随着“未知”或“混合”值的数量在位图中增大,位图可以变得不太对确定LBA的映射状态有用。
另外,如果与“映射”条目相关联的LBA现在被取消映射,则条目将需要被更新,以具有“未知”或“混合”映射状态。结果,为了继续监视LBA的映射状态,NVM接口可能需要更新树和/或一个或多个索引页,以便反映LBA的更改的映射状态。
如此,可以基于一个或多个因素,诸如例如当前存储器可用性、对于给定粒度决定性地确定每一LBA的映射状态所需的负载循环、系统使用模型、和/或其任何组合,确定位图的粒度。系统使用模型可以 包括正在被写入和/或删除的文件的大小。例如,如果系统正在按顺序写入和删除大文件,则可以为位图选择条目到LBA的较粗的粒度。相比之下,如果系统正在写入和删除小的文件,则可以为位图选择条目到LBA的较细的粒度,以便为每一个LBA提供足够的信息。
在某些实施例中,NVM接口可以在系统正在操作时动态地调整位图的粒度(例如,基于给定级别的未知状态的频率,增大或减少每一位图条目的范围)。例如,NVM接口可以首先初始化位图,以便每一条目都对应于一个LBA。然后,随着系统持续操作,如果例如具有未知状态的条目的数量小于预先确定的阈值(例如,小于50%的位图条目具有未知状态),则NVM接口可以增大对应于每一条目的LBA的数量。在其他实施例中,NVM接口可以初始化位图,以便位图的每一条目都对应于静态预先确定的LBA的数量(例如,每一条目都对应于一个LBA,或者每一条目都对应于32个LBA)。
系统可以使用位图来在各种情况下监视LBA的映射状态。通常,为了使系统确定LBA的映射状态,系统可能需要查询NVM(例如,图1的NVM120或图3的NVM320),特别是在系统不维护树的情况下或者是在LBA的映射状态只部分地被树捕捉的情况下。例如,为了取消映射一个或多个LBA,系统可能需要首先将存储在NVM中的一个或多个索引页(例如,图2的索引页1-N)读取到存储在存储器(例如,图1的存储器114)中的索引表缓存(例如,图2的索引表缓存204)中。然后,索引页可以在索引表缓存中被更新,以反映一个或多个LBA的取消映射(例如,通过利用默认值来替换相关联的物理地址)。以后,更新的索引页可以被编程回到NVM。然而,这些额外的编程操作可能会过早地触发NVM的垃圾回收,这会对系统性能造成负面影响。
在其中LBA的映射状态被树完全捕捉的其他系统中,系统可能需要更新树,以便取消映射LBA。随后,一旦树存储器使用被确定为超出预先确定的阈值,树的一个或多个部分(例如,条目)可能需要被平化。然而,平化操作还可能涉及对NVM的额外操作,因为对应 于平化的条目的数据可能需要在NVM被重新编程。这些操作可能较晚触发垃圾回收。
作为另一个示例,为了在常规系统中读取LBA,可能需要查询存储在NVM中的索引页(例如,特别是在索引页不存储在诸如图2的索引表缓存204之类的索引表缓存中的情况下)。如此,在能够确定LBA是否被映射或取消映射之前,系统可能需要将整个索引页读取到存储器(例如,图1的存储器)。
因此,通过依赖于存储在存储器(例如,图1的存储器114)中的位图(例如,分别图4A-4C的位图400、402或404),NVM接口(例如,图1的NVM接口118或图3的NVM接口318)可以确定LBA的映射状态,无需访问NVM。另外,NVM接口还可以利用最少的NVM访问来更新LBA的映射状态。通过减少NVM访问的数量,系统可以避免触发垃圾回收过程,这可以提高总体系统性能。例如,现在请参看图5和6,示出了根据本发明的各实施例的说明性过程的流程图。
首先参考图5,示出了用于使用位图来处理取消映射请求的过程500。过程500可以从步骤502开始,在步骤504中,NVM接口可以存储存储在易失性存储器(例如,图1的存储器114)中的位图(例如,分别是图4A-4C的位图400、402或404)中的多个LBA的映射状态。例如,如前面所讨论的,NVM接口可以在系统引导过程中或通过扫描NVM(例如,图1的NVM120或图3的NVM320)从文件系统(例如,图3的文件系统310)获取映射状态。
在步骤506中,NVM接口可以接收来自文件系统的取消映射LBA的请求。继续到步骤508,NVM接口可以通过只更新位图,将LBA的映射状态更改为“取消映射”。例如,回头参考图4A,如果NVM接口接收到取消映射LBA0的请求,则NVM接口可以将条目400A的映射状态从“映射”更改为“取消映射”。在通过更新位图来改变LBA的映射状态之后,NVM接口可以更新存储在存储器(例如,图1的存储器114)中的至少一个有效性计数器。至少一个有效性计数器可 以对应于与LBA相关联的超级块。在改变映射状态之后,过程500可以在步骤510中结束。
现在请参看图6,示出了用于使用位图来处理读取请求的过程600。过程600可以从步骤602开始,在步骤604中,NVM接口(例如,图1的NVM接口118或图3的NVM接口318)可以接收来自文件系统(例如,图3的文件系统310)的读取LBA的读取请求。
然后,在步骤606中,NVM接口可以查询与LBA相关联的位图(例如,分别是图4A-4C的位图400、402、或404)的条目。继续到步骤608,NVM接口可以确定该条目是否指出LBA被取消映射。
如果在步骤608中NVM接口确定条目指出LBA被取消映射,则过程600可以移到步骤610。例如,回头参考图4A,如果NVM接口接收到读取LBA2的请求,则NVM接口可以通过查询位图400的条目400C来确定LBA2被取消映射。
在步骤610中,NVM接口可以将指出LBA没有相关联的用户数据的信息传输到文件系统。如此,NVM接口可以直接确定LBA的映射状态,无需查询存储在NVM中的索引页。过程600可以在步骤612中结束。
回头参考步骤608,如果相反NVM接口确定条目指出LBA没有被取消映射,则过程600可以移到步骤614。在步骤614中,NVM接口可以查询NVM(例如,图1的NVM120或图3的NVM320)的索引页来定位与LBA相关联的用户数据。如此,与常规系统不同,NVM接口只须查询索引页,位图条目是否指出LBA被映射。
在定位用户数据之后,NVM接口可以在步骤616中将用户数据传输到文件系统。过程600可以在步骤612中结束。
在某些实施例中,在通过更新位图来改变LBA的映射状态之后,NVM接口可以查询树,以便更新存储在存储器(例如,图1的存储器114)中的有效性计数器。可以为NVM的每一超级块维护有效性计数器。在某些实施例中,有效性计数器可以被作为表存储在存储器中。
虽然NVM接口可以在更新有效性计数器时查询树,但是,树不一定需要被更新以反映LBA取消映射。这是因为,位图已经存储文件系统所使用的LBA的映射状态。相反,只有在树存储器使用有利地被减少的情况下,NVM接口才可以执行树更新。否则,NVM接口可以将树保留在其当前状态。
例如,现在请参看图7,示出了用于更新树(例如,图2的树210)的说明性过程700的流程图。过程700可以从步骤702开始,在步骤704中,NVM接口(例如,图1的NVM接口118或图3的NVM接口318)可以接收取消映射LBA的请求。
继续到步骤706,NVM接口可以查询位图(例如,分别是图4A-4C的位图400、402,或404)的条目,以确定LBA是否被取消映射。如果在步骤708中NVM接口确定LBA被取消映射,则过程700可以移到步骤710。
在某些实施例中,在步骤710中,NVM接口可以将指出LBA已经被取消映射的信息传输到文件系统(例如,图3的文件系统310)。如此,如在过程600的步骤610中(图6),不需要NVM访问来确定LBA被取消映射。过程700可以在步骤712中结束。
回头参考步骤708,如果相反NVM接口确定LBA没有被取消映射,则过程700可以移到步骤714。在步骤714中,NVM接口可以取消映射位图中的LBA。
继续到步骤716,NVM接口可以通过查询树来更新一个或多个有效性计数器。具体而言,NVM接口可以查询树,以便获取对应于LBA的逻辑到物理映射。如此,例如,NVM接口可以定位树的对应于LBA的条目,并使用该条目,NVM接口可以确定哪些超级块存储与LBA相关联的数据。在作出此判断之后,NVM接口可以减少与超级块相关联的一个或多个有效性计数器。因此,由于树也被存储在存储器中,因此取消映射过程只涉及存储器访问。
然后,在步骤718中,只有在树存储器使用随着更新而减少的情况下,NVM接口才可以更新树,以反映被取消映射的LBA。即,只 有在更新可以产生树的条目的总数净减少的情况下,NVM接口才可以确定更新树。例如,如果数据的多个在逻辑上相邻的段正在被取消映射(例如,多个小的数据库条目正在被删除),树更新可以是有利的。因此,对应于这些数据段的条目可以被平化(例如,合并),并可以产生较小的树,这会降低总的树存储器使用。较小的树还可以提高可以执行树搜索的速率。
相比之下,如果只有小的数据段正在被取消映射,可以不执行树更新,如果它将导致树映射撕裂(例如,如果更大的树条目的中间或正面正在被取消映射)。因此,此树更新可能会不合乎需要地产生较大数量的条目。
在某些实施例中,NVM接口可以通过定位树的对应于LBA的条目来更新树,以反映被取消映射的LBA。在定位条目之后,NVM接口可以将与LBA相关联的条目中的物理地址(例如,物理页面地址或虚拟块地址)更新为预先确定的令牌值。
在其中NVM接口不能通过查询树来确定对于LBA的逻辑到物理映射的各实施例中(例如,逻辑到物理映射没有存储在树中,因为树存储器几乎被耗尽,或者系统没有树),NVM接口可能需要通过将索引页从NVM加载到易失性存储器中来确定逻辑到物理映射。虽然这种情况涉及访问NVM,但是NVM访问仅限于读取操作。与程序操作不同,读取操作一般不会触发垃圾回收。
例如,现在请参看图8,示出了用于更新有效性计数器的说明性过程800的流程图。过程800可以从步骤802开始,在步骤804中,NVM接口(例如,图1的NVM接口118或图3的NVM接口318)可以接收取消映射LBA的请求。
继续到步骤806,NVM接口可以取消映射存储在易失性存储器(例如,图1的存储器114)中的位图(例如,分别是图4A-4C的位图400、402或404)中的LBA。虽然步骤806可以涉及诸如过程700(图7)的步骤704-714之类的额外的步骤,但是为简单起见,过程800省略了这些额外的步骤。
在步骤808中,NVM接口可以确定存储在易失性存储器(例如,图1的存储器114)中的树(例如,图2的树210)是否包括对应于LBA的逻辑到物理映射。如果在步骤808中NVM接口确定树包括对应于LBA的逻辑到物理映射,则过程800可以移到步骤810。
在步骤810中,NVM接口可以使用树来确定NVM的与LBA相关联的一个或多个超级块。
然后,在步骤812中,NVM接口可以减少与超级块相关联的至少一个有效性计数器,其中,至少一个有效性计数器被存储在易失性存储器中。由于一个或多个超级块是使用树确定的,因此NVM接口不必执行存储在NVM中的索引页的任何读取或写入。这可以帮助减少垃圾回收将被触发的概率。然后,过程800可以在步骤814中结束。
回头参考步骤808,如果NVM接口相反确定树不包括对应于LBA的逻辑到物理映射,则过程800可以移到步骤816。在步骤816中,NVM接口可以从NVM(例如,图1的NVM120或图3的NVM320)加载与LBA相关联的索引页(例如,图2的索引页1-N中的一个)。例如,NVM接口可以将索引页加载到索引表缓存(例如,图2的索引表缓存204)中。
继续到步骤818,NVM接口可以通过查询加载的索引页面来确定NVM的与LBA相关联的一个或多个超级块。然后,在步骤812中,NVM接口可以减少与一个或多个超级块相关联的至少一个有效性计数器。如此,虽然在此情况下NVM接口需要读取索引页,但是NVM接口不必更新并重新编程NVM中的索引页。最后结果是,索引页访问的总数仍可以被减少,并可以避免垃圾回收。过程800可以在步骤814中结束。
在其中在树中没有(或没有完全)维护逻辑到物理映射,但是在存储在NVM中的索引页(例如,图2的索引页1-N)中维护了它们的各实施例中,维护位图还可以改善垃圾回收过程。具体而言,通过使用位图,NVM接口可以减少在垃圾回收过程中需要作出的索引页访问的数量。
例如,现在请参看图9,示出了用于更快的垃圾回收的说明性过程900的流程图。过程900可以从步骤902开始,在步骤904中,NVM接口(例如,图1的NVM接口118或图3的NVM接口318)可以确定对NVM的数据块(例如,图2的数据块1-N中的一个)执行垃圾回收。
继续到步骤906,NVM接口可以加载存储在数据块中的块TOC(例如,图2的块TOC1-N中的一个)。然后,在步骤908中,NVM接口可以将存储在易失性存储器中的位图(例如,分别是图4A-4C的位图400、402、或404)与块TOC进行比较。
在步骤910中,NVM接口可以基于比较来确定数据块的被映射的逻辑地址(例如,LBA)的子集。例如,通过使用位图,NVM接口可以确定哪些LBA被取消映射。因此,这些取消映射的LBA可以被从垃圾回收过程中排除。
继续到步骤912,NVM接口可以只对于存储在数据块中的与逻辑地址的子集相关联的用户数据执行垃圾回收。取决于系统,可以以各种方式执行垃圾回收。例如,在其中系统不维护树的各实施例中,NVM接口可以通过只访问存储在NVM中的对应于逻辑地址的子集的索引页来定位用户数据。如此,对于逻辑地址的子集的每一个逻辑地址,NVM接口可以访问与逻辑地址相关联的索引页(例如,图2的索引页1-N中的一个)。然后,基于索引页,NVM接口可以确定数据块的对应于逻辑地址的物理地址。在确定物理地址之后,NVM接口可以将用户数据从物理地址复制到NVM的不同的数据块。
在其中树(例如,图2的树210)存储在易失性存储器中的各实施例中,NVM接口可以对于逻辑地址的子集,判断树是否包括逻辑到物理映射。例如,对于逻辑地址的子集的每一个逻辑地址,NVM接口可以查询树以确定对于逻辑地址是否存在逻辑到物理映射。如果NVM接口确定对于逻辑地址不存在逻辑到物理映射,则NVM接口可以访问与逻辑地址相关联的索引页。然后,如上文所讨论的,基于索引页,NVM接口可以确定数据块的对应于逻辑地址的物理地址。在 确定物理地址之后,NVM接口可以将用户数据从物理地址复制到NVM的不同的数据块。
然而,如果NVM接口确定对于逻辑地址存在逻辑到物理映射,则NVM接口可以使用树来确定数据块的对应于逻辑地址的物理地址。然后,NVM接口可以将用户数据从物理地址复制到NVM的不同的数据块。在执行垃圾回收之后,过程900可以在步骤914中结束。
如此,通过使用位图来减少在NVM中需要检查的逻辑地址的数量,可以相应地减少需要在垃圾回收过程中执行的NVM操作的数量。结果,垃圾回收过程可以更有效地执行。
此外,在其中在存储在易失性存储器中的树中完全维护了逻辑到物理映射的各实施例中,维护位图还可以略微改善垃圾回收过程。通过只查询逻辑地址的子集的树,可以减少存储器访问的量。
应该理解,图5-9的过程500、600、700、800以及900可以由系统中的一个或多个组件(例如,图1的电子设备100或图3的电子设备300)来执行。例如,过程中的至少一些步骤可以由NVM接口(例如,图1的NVM接口118或图3的NVM接口318)来执行。所属技术领域的专业人员将理解,步骤中的一个或多个可以由控制电路(例如,图1的SoC控制电路112)来执行。
此外,还应该理解,图5-9的过程500、600、700、800以及900只是说明性的。在不偏离本发明的范围的情况下,可以删除、修改或组合步骤中的任何一个,并可以添加任何额外的步骤。
所描述的本发明的各实施例只是为了说明,而不作为限制。
Claims (25)
1.一种用于对于包括非易失性存储器NVM的系统取消映射逻辑块地址LBA的方法,所述方法包括:
将多个LBA的映射状态保存到存储在易失性存储器中的位图中;
接收来自文件系统的取消映射第一LBA的请求;
通过只更新所述位图来将所述第一LBA的映射状态改变为取消映射;以及
减小对应于所述第一LBA的超级块的有效性计数器,其中所述超级块对应于NVM的多个集成电路中存在的存储单元。
2.如权利要求1所述的方法,其中,所述位图的每一条目都对应于一个LBA和多个LBA中的一个。
3.如权利要求1或2所述的方法,还包括在系统引导过程中从所述文件系统接收与所述多个LBA的映射状态相关联的信息。
4.如权利要求1或2所述的方法,还包括通过扫描所述NVM来获取所述多个LBA的映射状态。
5.如权利要求1或2所述的方法,还包括:
接收来自所述文件系统的读取第二LBA的读取请求;
查询所述位图的与所述第二LBA相关联的条目;
确定所述条目是否指出所述第二LBA被取消映射;以及
响应于确定所述条目指出所述第二LBA被取消映射,向所述文件系统传输指出所述第二LBA没有相关联的用户数据的信息。
6.如权利要求5所述的方法,进一步包括:
响应于确定所述条目指出所述第二LBA没有被取消映射,查询所述NVM的索引页,以定位与所述第二LBA相关联的用户数据;以及
将所述用户数据传输到所述文件系统。
7.一种操作为使用逻辑块地址位图的系统,包括:
非易失性存储器NVM;
易失性存储器,包括:
与所述NVM的多个超级块相关联的多个有效性计数器;
包括多个条目的树,其中,所述树提供所述NVM的多个逻辑块地址LBA和物理地址之间的映射;以及
用于存储所述多个LBA的映射状态的位图;以及
包括控制电路的存储器接口,用于:
接收来自文件系统的取消映射所述多个LBA中的一个LBA的请求;
查询所述位图以确定所述LBA是否被取消映射;
响应于确定所述LBA没有被取消映射,取消映射所述位图中的所述LBA;
通过查询所述树来更新所述多个有效性计数器中的至少一个;以及
只有在树存储器使用随着所述更新而降低的情况下,才更新所述树以反映被取消映射的LBA。
8.如权利要求7所述的系统,其中,所述控制电路用于:
定位所述树的对应于所述LBA的条目;以及
将与所述LBA相关联的所述条目中的物理地址更新为预先确定的令牌值。
9.如权利要求7或8所述的系统,其中,所述控制电路用于确定更新所述树会产生所述树的条目的总数的净缩小。
10.如权利要求7或8所述的系统,其中,响应于确定所述LBA被取消映射,所述控制电路用于将指出所述LBA已经被取消映射的信息传输到所述文件系统。
11.如权利要求7或8所述的系统,其中,所述控制电路用于:
定位所述树的对应于所述LBA的条目;
使用所述条目来确定存储与所述LBA相关联的数据的超级块;以及
递减与所述超级块相关联的多个有效性计数器的有效性计数器。
12.如权利要求7或8所述的系统,其中,所述位图的每一条目都对应于多个LBA。
13.如权利要求12所述的系统,其中,所述控制电路用于:
确定所述位图的一个条目的映射状态是未知状态;
查询树和至少一个索引页中的至少一个来确定与所述条目相关联的每一LBA的映射状态。
14.如权利要求7或8所述的系统,其中,所述控制电路用于:
初始化所述位图,以便所述位图的每一条目都对应于一个LBA;以及
如果所述位图的具有未知状态的条目的数量小于预先确定的阈值,则增大对应于所述位图的每一条目的LBA的数量。
15.如权利要求7或8所述的系统,其中,所述控制电路用于初始化所述位图,以便所述位图的每一条目都对应于预先确定数量的LBA。
16.一种用于访问非易失性存储器NVM中的索引页的存储器接口,所述存储器接口包括用于执行下列操作的控制电路:
接收取消映射多个逻辑块地址LBA中的LBA的请求;
取消映射存储在易失性存储器中的位图中的所述LBA;
确定存储在易失性存储器中的树是否包括对应于所述LBA的逻辑到物理映射;
响应于确定所述树包括对应于所述LBA的逻辑到物理映射,只有在树存储器使用随着更新而下降的情况下,才更新所述树以反映被取消映射的LBA;以及
响应于确定所述树不包括对应于所述LBA的逻辑到物理映射,从所述NVM加载与所述LBA相关联的索引页。
17.如权利要求16所述的存储器接口,其中,所述控制电路用于将所述索引页加载到索引表缓存中。
18.如权利要求16或17所述的存储器接口,其中,所述控制电 路用于:
通过查询加载的索引页面,确定所述NVM的与所述LBA相关联的超级块;以及
递减与所述超级块相关联的有效性计数器,其中,所述有效性计数器被存储在所述易失性存储器中。
19.如权利要求16或17所述的存储器接口,其中,响应于确定所述树包括对应于所述LBA的逻辑到物理映射,所述控制电路用于:
使用所述树,确定所述NVM的与所述LBA相关联的超级块;以及
递减与所述超级块相关联的有效性计数器,其中,所述有效性计数器被存储在所述易失性存储器中。
20.一种用于对于包括非易失性存储器NVM的设备取消映射逻辑块地址LBA的系统,所述系统包括:
用于将多个LBA的映射状态保存到存储在易失性存储器中的位图中的装置;
用于接收来自文件系统的取消映射第一LBA的请求的装置;
用于通过只更新所述位图来将所述第一LBA的映射状态改变为取消映射的装置;以及
用于减少对应于所述第一LBA的超级块的有效性计数器的装置,其中所述超级块对应于NVM的多个集成电路中存在的存储单元。
21.如权利要求20所述的系统,其中,所述位图的每一条目都对应于一个LBA和多个LBA中的一个。
22.如权利要求20或21所述的系统,还包括用于在系统引导过程中从所述文件系统接收与所述多个LBA的映射状态相关联的信息的装置。
23.如权利要求20或21所述的系统,还包括用于通过扫描所述NVM来获取所述多个LBA的映射状态的装置。
24.如权利要求20或21所述的系统,还包括:
用于接收来自所述文件系统的读取第二LBA的读取请求的装 置;
用于查询所述位图的与所述第二LBA相关联的条目的装置;
用于确定所述条目是否指出所述第二LBA被取消映射的装置;以及
用于响应于确定所述条目指出所述第二LBA被取消映射,向所述文件系统传输指出所述第二LBA没有相关联的用户数据的信息的装置。
25.如权利要求24所述的系统,还包括:
用于响应于确定所述条目指出所述第二LBA没有被取消映射,查询所述NVM的索引页,以定位与所述第二LBA相关联的用户数据的装置;以及
用于将所述用户数据传输到所述文件系统的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/323,311 US9069657B2 (en) | 2011-12-12 | 2011-12-12 | LBA bitmap usage |
US13/323,311 | 2011-12-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103164346A CN103164346A (zh) | 2013-06-19 |
CN103164346B true CN103164346B (zh) | 2016-10-19 |
Family
ID=47681510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210536023.5A Expired - Fee Related CN103164346B (zh) | 2011-12-12 | 2012-12-12 | 使用lba位图的方法与系统 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9069657B2 (zh) |
EP (1) | EP2605142B1 (zh) |
JP (1) | JP2013137770A (zh) |
KR (2) | KR101457270B1 (zh) |
CN (1) | CN103164346B (zh) |
TW (2) | TWI566097B (zh) |
WO (1) | WO2013090133A1 (zh) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327185B1 (en) | 2012-03-23 | 2012-12-04 | DSSD, Inc. | Method and system for multi-dimensional raid |
US9323667B2 (en) * | 2012-04-12 | 2016-04-26 | Violin Memory Inc. | System and method for managing trim operations in a flash memory system using mapping tables and block status tables |
US10282286B2 (en) * | 2012-09-14 | 2019-05-07 | Micron Technology, Inc. | Address mapping using a data unit type that is variable |
KR102015053B1 (ko) * | 2013-02-20 | 2019-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 처리 방법 |
US9612773B2 (en) * | 2013-11-21 | 2017-04-04 | Samsung Electronics Co., Ltd. | User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof |
US9329792B2 (en) | 2014-01-14 | 2016-05-03 | International Business Machines Corporation | Storage thin provisioning and space reclamation |
CN103927132B (zh) * | 2014-03-31 | 2017-08-25 | 华为技术有限公司 | 数据处理方法及装置 |
KR102254392B1 (ko) * | 2014-05-12 | 2021-05-25 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 |
US9792069B2 (en) * | 2014-09-29 | 2017-10-17 | Western Digital Technologies, Inc. | Offline deduplication for solid-state storage devices |
US9575853B2 (en) * | 2014-12-12 | 2017-02-21 | Intel Corporation | Accelerated data recovery in a storage system |
US10474569B2 (en) | 2014-12-29 | 2019-11-12 | Toshiba Memory Corporation | Information processing device including nonvolatile cache memory and processor |
US10331552B2 (en) | 2015-03-10 | 2019-06-25 | Toshiba Memory Corporation | Storage device and memory system |
US10372676B2 (en) | 2015-07-30 | 2019-08-06 | Netapp Inc. | Stale data detection |
US10331364B2 (en) * | 2015-10-16 | 2019-06-25 | Cnex Labs, Inc. | Method and apparatus for providing hybrid mode to access SSD drive |
US10268385B2 (en) * | 2016-05-03 | 2019-04-23 | SK Hynix Inc. | Grouped trim bitmap |
US10061708B2 (en) | 2016-05-12 | 2018-08-28 | SK Hynix Inc. | Mapped region table |
JP2017219913A (ja) * | 2016-06-03 | 2017-12-14 | 富士通株式会社 | ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム |
US10353813B2 (en) | 2016-06-29 | 2019-07-16 | Western Digital Technologies, Inc. | Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices |
US10175896B2 (en) | 2016-06-29 | 2019-01-08 | Western Digital Technologies, Inc. | Incremental snapshot based technique on paged translation systems |
US11216361B2 (en) | 2016-06-29 | 2022-01-04 | Western Digital Technologies, Inc. | Translation lookup and garbage collection optimizations on storage system with paged translation table |
US10229048B2 (en) | 2016-06-29 | 2019-03-12 | Western Digital Technologies, Inc. | Unified paging scheme for dense and sparse translation tables on flash storage systems |
US10235287B2 (en) | 2016-06-29 | 2019-03-19 | Western Digital Technologies, Inc. | Efficient management of paged translation maps in memory and flash |
KR102653401B1 (ko) | 2016-07-18 | 2024-04-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
US20180089088A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache |
US10289491B1 (en) | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance |
US10339062B2 (en) | 2017-04-28 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for writing data to and read data from persistent storage |
US10466930B2 (en) | 2017-04-28 | 2019-11-05 | EMC IP Holding Company LLC | Method and system for fast ordered writes with atomic multicast |
KR102395538B1 (ko) * | 2017-04-28 | 2022-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10614019B2 (en) | 2017-04-28 | 2020-04-07 | EMC IP Holding Company LLC | Method and system for fast ordered writes with target collaboration |
KR20190044968A (ko) * | 2017-10-23 | 2019-05-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
JP6982468B2 (ja) * | 2017-10-27 | 2021-12-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN112055843B (zh) | 2017-12-13 | 2024-02-06 | 美光科技公司 | 同步化nand逻辑到物理表区跟踪 |
KR20200020464A (ko) * | 2018-08-17 | 2020-02-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
KR20200030245A (ko) | 2018-09-12 | 2020-03-20 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 관리 방법 및 장치 |
KR20200033625A (ko) | 2018-09-20 | 2020-03-30 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 체크 방법 및 장치 |
KR20200074647A (ko) | 2018-12-17 | 2020-06-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20200076244A (ko) | 2018-12-19 | 2020-06-29 | 삼성전자주식회사 | 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 |
KR20200085967A (ko) * | 2019-01-07 | 2020-07-16 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
US11301369B2 (en) * | 2019-01-24 | 2022-04-12 | Western Digital Technologies, Inc. | Logical to physical mapping management using low-latency non-volatile memory |
CN110262980B (zh) * | 2019-06-17 | 2023-05-02 | 吉林大学 | 基于有限寿命存储介质的高速存储系统 |
US11216218B2 (en) * | 2019-07-15 | 2022-01-04 | Micron Technology, Inc. | Unmap data pattern for coarse mapping memory sub-system |
KR20210018570A (ko) | 2019-08-05 | 2021-02-18 | 에스케이하이닉스 주식회사 | 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치 |
US11157404B2 (en) * | 2019-08-27 | 2021-10-26 | Micron Technology, Inc. | Remapping techniques for a range of logical block addresses in a logical to physical table of NAND storage |
US10957381B1 (en) * | 2019-08-28 | 2021-03-23 | Micron Technology, Inc. | Metadata grouping for un-map techniques |
US10990537B1 (en) * | 2020-01-07 | 2021-04-27 | International Business Machines Corporation | Logical to virtual and virtual to physical translation in storage class memory |
CN111737161B (zh) * | 2020-05-22 | 2024-03-26 | 深圳市战音科技有限公司 | Flash存储器的文件传输方法、终端及存储介质 |
CN111813471A (zh) * | 2020-06-16 | 2020-10-23 | 北京明略软件系统有限公司 | 一种换肤的方法、终端和存储介质 |
US11500769B2 (en) * | 2020-12-21 | 2022-11-15 | Micron Technology, Inc. | Valid data identification for garbage collection |
TWI771926B (zh) * | 2021-02-25 | 2022-07-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN113282249B (zh) * | 2021-07-19 | 2021-10-29 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、系统、设备以及介质 |
US20230089812A1 (en) * | 2021-09-23 | 2023-03-23 | Samsung Electronics Co., Ltd. | Systems and methods for workload distribution across processing units |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011024239A1 (en) * | 2009-08-31 | 2011-03-03 | Hitachi, Ltd. | Storage system having plurality of flash packages |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
JP2003067244A (ja) | 2001-08-24 | 2003-03-07 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置及びその制御方法 |
US7173929B1 (en) | 2001-12-10 | 2007-02-06 | Incipient, Inc. | Fast path for performing data operations |
US6938145B2 (en) | 2002-12-04 | 2005-08-30 | Bull Hn Information Systems Inc. | Associative memory system with a multi-digit incrementable validity counter |
US6915405B2 (en) | 2002-12-04 | 2005-07-05 | Bull Hn Information Systems Inc. | Emulated target associative memory system with a multi-digit incrementable validity counter |
US7437530B1 (en) | 2003-04-24 | 2008-10-14 | Network Appliance, Inc. | System and method for mapping file block numbers to logical block addresses |
US8504798B2 (en) | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US7873782B2 (en) | 2004-11-05 | 2011-01-18 | Data Robotics, Inc. | Filesystem-aware block storage system, apparatus, and method |
WO2007066720A1 (ja) | 2005-12-09 | 2007-06-14 | Matsushita Electric Industrial Co., Ltd. | 不揮発性記憶装置並びにデータ書込み方法及びデータ読み出し方法 |
JP4235646B2 (ja) | 2005-12-28 | 2009-03-11 | Tdk株式会社 | メモリコントローラおよびフラッシュメモリシステム |
US8429352B2 (en) * | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
US8533384B2 (en) | 2007-12-27 | 2013-09-10 | Sandisk Enterprise Ip Llc | Flash memory controller garbage collection operations performed independently in multiple flash memory groups |
US7949851B2 (en) | 2007-12-28 | 2011-05-24 | Spansion Llc | Translation management of logical block addresses and physical block addresses |
US8276043B2 (en) * | 2008-03-01 | 2012-09-25 | Kabushiki Kaisha Toshiba | Memory system |
JP4164118B1 (ja) | 2008-03-26 | 2008-10-08 | 眞澄 鈴木 | フラッシュメモリを用いた記憶装置 |
US8065304B2 (en) * | 2008-06-11 | 2011-11-22 | International Business Machines Corporation | Using asymmetric memory |
KR101533744B1 (ko) | 2008-10-16 | 2015-07-10 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법 |
WO2010111694A2 (en) | 2009-03-27 | 2010-09-30 | Sandforce Inc. | Storage system logical block address de-allocation management and data hardening |
US8516219B2 (en) | 2009-07-24 | 2013-08-20 | Apple Inc. | Index cache tree |
JP2011192260A (ja) | 2010-02-16 | 2011-09-29 | Toshiba Corp | 半導体記憶装置 |
US9286101B2 (en) * | 2011-07-28 | 2016-03-15 | Red Hat, Inc. | Free page hinting |
-
2011
- 2011-12-12 US US13/323,311 patent/US9069657B2/en not_active Expired - Fee Related
-
2012
- 2012-12-07 EP EP12196104.9A patent/EP2605142B1/en not_active Not-in-force
- 2012-12-07 WO PCT/US2012/068375 patent/WO2013090133A1/en active Application Filing
- 2012-12-11 KR KR1020120143392A patent/KR101457270B1/ko active IP Right Grant
- 2012-12-12 TW TW102114454A patent/TWI566097B/zh not_active IP Right Cessation
- 2012-12-12 TW TW101147044A patent/TWI516924B/zh not_active IP Right Cessation
- 2012-12-12 JP JP2012289302A patent/JP2013137770A/ja active Pending
- 2012-12-12 CN CN201210536023.5A patent/CN103164346B/zh not_active Expired - Fee Related
-
2013
- 2013-01-24 KR KR1020130007928A patent/KR101966693B1/ko active IP Right Grant
-
2015
- 2015-06-29 US US14/754,433 patent/US9477596B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011024239A1 (en) * | 2009-08-31 | 2011-03-03 | Hitachi, Ltd. | Storage system having plurality of flash packages |
Also Published As
Publication number | Publication date |
---|---|
US20150301938A1 (en) | 2015-10-22 |
TW201337560A (zh) | 2013-09-16 |
KR101966693B1 (ko) | 2019-04-09 |
EP2605142A1 (en) | 2013-06-19 |
US20130151754A1 (en) | 2013-06-13 |
WO2013090133A1 (en) | 2013-06-20 |
EP2605142B1 (en) | 2018-09-05 |
TWI566097B (zh) | 2017-01-11 |
TW201346553A (zh) | 2013-11-16 |
TWI516924B (zh) | 2016-01-11 |
US9477596B2 (en) | 2016-10-25 |
KR20130066524A (ko) | 2013-06-20 |
US9069657B2 (en) | 2015-06-30 |
CN103164346A (zh) | 2013-06-19 |
KR101457270B1 (ko) | 2014-10-31 |
KR20130066640A (ko) | 2013-06-20 |
JP2013137770A (ja) | 2013-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103164346B (zh) | 使用lba位图的方法与系统 | |
US9652386B2 (en) | Management of memory array with magnetic random access memory (MRAM) | |
CN102693184B (zh) | 处理具有非易失性存储器的系统的动态和静态数据 | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
CN102999431B (zh) | 用于非易失性存储器系统的编织序列计数器 | |
US9507711B1 (en) | Hierarchical FTL mapping optimized for workload | |
US7594067B2 (en) | Enhanced data access in a storage device | |
US9063728B2 (en) | Systems and methods for handling hibernation data | |
KR101451482B1 (ko) | 데이터 이용가능성의 마운트타임 조정 | |
US20140129758A1 (en) | Wear leveling in flash memory devices with trim commands | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
KR20110117099A (ko) | 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 | |
US20200320012A1 (en) | Memory system and method for operating the same | |
JP2011530133A (ja) | キャッシュコンテンツの記憶管理 | |
WO2012166308A1 (en) | Mount-time unmapping of unused logical addresses in non-volatile memory systems | |
US20090132757A1 (en) | Storage system for improving efficiency in accessing flash memory and method for the same | |
WO2010145967A1 (en) | Memory device for managing the recovery of a non volatile memory | |
US8850160B2 (en) | Adaptive write behavior for a system having non-volatile memory | |
US11416410B2 (en) | Memory system, method of operating the same and data processing system for supporting address translation using host resource | |
KR20100099888A (ko) | 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 | |
Kim et al. | A new hash algorithm exploiting triple-state bucket directory for flash storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161019 |