CN109491927B - 数据存储、读取方法、装置及电子设备 - Google Patents
数据存储、读取方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109491927B CN109491927B CN201811311003.1A CN201811311003A CN109491927B CN 109491927 B CN109491927 B CN 109491927B CN 201811311003 A CN201811311003 A CN 201811311003A CN 109491927 B CN109491927 B CN 109491927B
- Authority
- CN
- China
- Prior art keywords
- layer mapping
- mapping table
- layer
- unit
- mapping unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例发明了一种数据存储、读取的方法、装置及电子设备。其中,数据存储方法,包括:响应于写操作,将逻辑区块地址范围分割为多个第一层映射单元;判断所述第一层映射单元是否连续和完整;将不连续或不完整的所述第一层映射单元分割为多个第二层映射单元;将所述逻辑区块的地址映射为物理地址;将不连续或不完整的所述第一层映射单元对应的第一层映射表指向第二层映射表;将所述第一层映射单元中的逻辑区块的物理地址写入第二层映射表。避免了写放大的问题。
Description
技术领域
本发明涉及数据读写领域,尤其涉及一种数据存储、读取的方法、装置及电子设备。
背景技术
固态硬盘***通常包括主机接口协议层,闪存转换层(FTL,Flash TranslationLayer),及闪存接口协议层。闪存转换层的一个主要功能是进行主机接口协议中的逻辑地址(LBA,Logical Block Address)到闪存的物理地址之间的映射。逻辑地址到物理地址的映射表(Logical to Physical Address Mapping Table,or L2P table)是闪存转换层的主要数据结构。随着固态硬盘的容量的增加,L2P映射表需要的存储空间也越来越大,给固态硬盘的***设计造成困难。简单地增加映射粒度可以降低映射表的存储空间,但是会造成写放大的问题。
发明内容
有鉴于此,本发明提供了一种数据存储、读取的方法、装置及电子设备,至少部分的解决现有技术中存在的问题。
第一方面,本发明提供了一种数据存储方法,包括:
响应于写操作,将逻辑区块地址范围分割为多个第一层映射单元;
判断所述第一层映射单元是否连续和完整;
将不连续或不完整的所述第一层映射单元分割为多个第二层映射单元;
将所述逻辑区块的地址映射为物理地址;
将不连续或不完整的所述第一层映射单元对应的第一层映射表指向第二层映射表;
将不连续或不完整的所述第一层映射单元中的逻辑区块的物理地址写入第二层映射表。
作为本发明的一种具体实现方式,所述将所述逻辑区块的地址映射为物理地址的步骤之后,包括:
将连续和完整的所述第一层映射单元中的逻辑区块的物理地址写入第一层映射表。
作为本发明的一种具体实现方式,所述判断所述第一层映射单元是否连续和完整的步骤之后,还包括:
如所述第一层映射单元是连续和完整的,则判断所述第一层映射单元是否有对应的第二层映射表;
如所述第一层映射单元是有对应的第二层映射表,则将所述第二层映射表释放;
将所述第一层映射单元直接映射为物理地址,并更新所述第一层映射表。
作为本发明的一种具体实现方式,所述将不连续或不完整的所述第一层映射单元对应的第一层映射表指向第二层映射表,包括:
判断不连续或不完整的所述第一层映射单元对应的第一层映射表是否已经指向第二层映射表,
如不连续或不完整的所述第一层映射单元对应的第一层映射表没有指向第二层映射表,则为所述第一层映射单元分配对应的第二层映射表。
作为本发明的一种具体实现方式,所述第二层映射表存放在第二层映射表资源池内。
作为本发明的一种具体实现方式,当需要第二层映射表时,从所述第二层映射表资源池中分配第二层映射表;
当所述第二层映射表不被需要时,则将该第二层映射表释放到所述第二层映射表资源池。
作为本发明的一种具体实现方式,当所述第二层映射表资源池中的第二层映射表减少到阈值时,进行映射单元合并操作。
作为本发明的一种具体实现方式,所述映射单元合并操作,包括:
将隶属于同一个第一层映射单元的所有逻辑区块中的数据读出来,
将读出的数据重新合并;
将重新合并的数据放入所述第一层映射单元,并将所述第一层映射单元通过第一层映射表映射为物理地址,从而将所述第一层映射表指向的第二层映射表释放到第二层映射表资源池中。
作为本发明的一种具体实现方式,在不存储数据时所述映射单元合并操作的触发阈值小于存储数据时所述映射单元合并操作的触发阈值。
作为本发明的一种具体实现方式,所述第一层的映射单元的大小是逻辑区块大小的整数倍,所述第二层映射单元的大小和逻辑区块的大小相同。
作为本发明的一种具体实现方式,所述第一层映射表是数组,所述第一层映射表的数组中的元素是物理地址或第二层映射表地址,所述第一层映射表的数组中元素的数量是逻辑区块地址范围分割的所述第一层映射单元的数量。
作为本发明的一种具体实现方式,所述第二层映射表是数组,所述第二层映射表的数组中的元素是物理地址,所述第二层映射表的数组中元素的数量是所述第一层映射单元所包含的逻辑区块的数量。
作为本发明的一种具体实现方式,能被分割为所述第二层映射单元的第一层映射单元的数量设有上限值。
作为本发明的一种具体实现方式,包括:
响应于写操作,将逻辑区块地址范围分割为多个第一层映射单元;
将所述第一层映射单元分割为多个第二层映射单元;
将所述第二层映射单元分割为多个第三层映射单元;
直至
将所述第n层映射单元分割为多个第n+1层映射单元。
作为本发明的一种具体实现方式,所述第n层映射单元大小是第n+1层的映射单元大小的整数倍,且所述第n+1层的映射单元大小与逻辑区块大小相同。
第二方面,本发明还提供了一种数据读取方法,包括:
响应于读操作,将逻辑区块地址范围分割为第一层映射单元;
查询所述第一层映射单元对应的第一层映射表;
如在所述第一层映射表中查询到逻辑区块对应的物理地址,则直接从所述第一层映射表中读出物理地址,然后通过所述第一层映射表中的所述物理地址读出数据;
如在所述第一层映射表中没有查询到逻辑区块对应的物理地址,则从所述第一层映射表中读出第二层映射表的地址,再从第二层映射表中读出物理地址;然后通过所述第二层映射表中的所述物理地址读出数据。
第三方面,本发明还提供了一种数据存储装置,使用第一方面的数据存储方法;
和\或
第二方面的数据读取方法。
第四方面,本发明还提供了一种电子设备,使用第三方面的数据存储装置。
本发明提供的数据存储、读取的方法、装置及电子设备,其中该数据存储方法通过对第一层映射单元分割为第二层映射单元,并将第一层映射单元对应的第一层映射表指向第二层映射表,从而将所述第一层映射单元中的逻辑区块的物理地址写入第二层映射表。在只将数据写入一个逻辑区块时,通过进一步对第一层映射单元进行分割,第一层映射表将第一层映射单元指向第二层映射表,从而只需要将新写入的逻辑区块写入第二层映射表内的物理地址。不用将原来已经保存的第一层映射单元中的逻辑区块从闪存内读出,避免了在只将数据写入一个逻辑区块时,将同一个第一层映射单元中的逻辑区块从闪存内读出,然后将读出的数据和新写入的数据进行合并后,再次映射为物理地址,将数据写入新的物理地址,因此造成的写放大的问题。
上述说明仅是本发明技术方案的概述,为了能更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种数据存储方法的流程图;
图2为本发明实施例提供的释放第二层映射表的流程图;
图3为本发明实施例提供的数据存储方法具体应用的流程图;
图4为本发明实施例提供的单层映射表和双层映射表的结构框图;
图5为本发明实施例提供的映射合并操作的流程图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本发明,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
映射粒度:即映射单元的大小,是指逻辑地址到物理地址映射的最小单元。
固态硬盘采用闪存做存储介质,闪存在写入之前必须先擦除,而擦除的粒度(块,block)远大于写入的粒度(页,page)。由于闪存的特性,主机按照逻辑地址写入数据时,FTL的算法将逻辑地址映射为闪存的物理地址,然后再将数据按照物理地址写入闪存;当主机重复向相同的逻辑地址写入数据的时候,每次都会映射为不同的物理地址。固态硬盘用L2P映射表来记录逻辑地址到物理地址的映射关系。
逻辑地址到物理地址的映射的粒度(也即映射单元的大小)通常是固定的(如4KB)。如果逻辑地址范围(即固态硬盘的容量)是L,而物理地址的范围(即固态硬盘存储介质的实际容量)是P,映射单元的大小是U,那么映射表的大小按大O标记法可以表示为:
S=O(L/U*log(P/U)),
可见如果映射粒度越大,则映射表越小。
映射表通常存放在固态硬盘的SDRAM中。由于SDRAM存储空间的限制,映射表的大小不能太大,因此固态硬盘的容量也受到限制。如果固态硬盘容量太大以致于SDRAM存放不下映射表,FTL算法通常将映射单元扩大为包含多个逻辑区块从而减少映射表的大小。在这种情况下,如果主机只将数据写入其中一个逻辑区块,那么FTL算法通常需要将数据从其他位于同一映射单元的已经写入闪存的逻辑区块中读出来,与新写入的数据合并,重新映射新的物理地址,然后将合并后的数据写入新的物理地址。这样主机侧一个逻辑区块的写入,需要在闪存侧读出多个逻辑区块,并写入多个逻辑区块,造成写放大。如果映射单元包含N个逻辑区块,则这种映射算法造成的写放大倍数也为N。
FTL在处理逻辑随机地址写入的时候本来就存在写放大,这种写放大与固态硬盘的过度供应系数(Over-Provisioning Ratio)有关。包含N个逻辑区块的映射单元会使原本存在的写放大进一步扩大N倍,从而对随机地址写入的性能造成很大的影响。
实施例一:
如图1所示,一种数据存储方法,包括:
步骤S101:响应于写操作,将逻辑区块地址范围分割为多个第一层映射单元;
逻辑区块地址范围包含多个逻辑区块,逻辑地址范围是固态硬盘的容量。对于分割为多个第一层映射单元中多个包括一个或一个以上,如果不够一个则分割为一个。
步骤S102:判断所述第一层映射单元是否连续和完整;连续是指写入数据的逻辑地址是否连续,主机写入数据时,可能是随机地址写入,也可能是连续写入多个逻辑区块,在随机地址写入时,会造成第一层映射单元不连续,对于完整是,如果主机写入的数据不能凑足一个第一层映射单元,那么第一层映射单元就是不完整,反则,如果写入的数据能凑足一个第一层映射单元,那么该第一层映射单元即是完整的。
步骤S103:将不连续或不完整的所述第一层映射单元分割为多个第二层映射单元;
第二层映射单元会比第一层映射单元小,因此将不完整或不连续的第一层映射单元分割为较小的第二层映射单元。
在一个优选的实施例中,第一层的映射单元的大小是逻辑区块大小的整数倍,第二层映射单元的大小和逻辑区块的大小相同。因第二层映射单元的大小和逻辑区块的大小相同,则对于第一层的映射单元不连续或不完整的写入数据,可以分割为完整和连续的第二层映射单元。
步骤S104:将所述逻辑区块的地址映射为物理地址;
将主机写入的逻辑区块的地址映射为固态硬盘中闪存的物理地址,即首先要为写入的逻辑区块的地址分配物理地址。
步骤S105:将不连续或不完整的所述第一层映射单元对应的第一层映射表指向第二层映射表;
如果主机写入的逻辑区块是连续和完整的通过第一层映射单元即将逻辑区块的地址通过第一层映射表映射为物理地址,但如果是不完整的则第一层映射表指向的将不是物理地址,而是第二层映射表。
步骤S106:将不连续或不完整的所述第一层映射单元中的逻辑区块的物理地址写入第二层映射表,在第一层映射表指向第二层映射表后,逻辑区块最终还是要存储到闪存内,因此第二层映射表内存储的为闪存的物理地址,这样逻辑区块的地址通过第一映射表指向第二层映射表,再通过第二层映射表指向物理地址,并将逻辑区块存储到第二层映射表指向的物理地址内。
作为本发明的一种具体实现方式,在步骤S104所述将所述逻辑区块的地址映射为物理地址的步骤之后,包括:
将连续和完整的所述第一层映射单元中的逻辑区块的物理地址写入第一层映射表。
如果是连续和完整的第一层映射单元通过第一层映射表直接就映射为物理地址。
本发明将通过第一层映射表直接就映射为物理地址称为单层映射,而将通过第一映射表指向第二层映射表,再通过第二层映射表指向物理地址的称为双层映射。
作为本发明的一种具体实现方式,步骤S102判断所述第一层映射单元是否连续和完整的步骤之后,还包括:
步骤S201:如所述第一层映射单元是连续和完整的,则判断所述第一层映射单元是否有对应的第二层映射表;
步骤S202:如所述第一层映射单元是有对应的第二层映射表,则将所述第二层映射表释放;
步骤S203:将所述第一层映射单元直接映射为物理地址,并更新所述第一层映射表。
作为本发明的一种具体实现方式,步骤S105将不连续或不完整的所述第一层映射单元对应的第一层映射表指向第二层映射表,包括:
判断不连续或不完整的所述第一层映射单元对应的第一层映射表是否已经指向第二层映射表,
如不连续或不完整的所述第一层映射单元对应的第一层映射表没有指向第二层映射表,则为所述第一层映射单元分配对应的第二层映射表。
如图3所示,在一个具体的应用场景中,响应主机或FTL写操作,将逻辑区块地址范围分割为多个第一层映射单元;
判断第一层映射单元是否连续和完整;
如果判断结果为是,那么判断这个第一层映射单元是否已经做了双层映射,如果做了双层映射,则将这个第一层映射单元对应的第二层映射表释放,优选的可以释放到第二层映射表资源池中。
如果判断第一层映射单元是否连续和完整的结果为否,则判断这个第一层映射单元是否已经做了双层映射,如果没做双层映射,则为这个第一层映射单元分配第二层映射表,优选的在第二层映射表资源池中选取进行分配。
然后判断这个第一层映射单元是否已经做了单层映射,如做了单层映射,则将第一层映射单元中的物理地址从第一层映射表中读出并转化为每个逻辑区块的物理地址。
然后将新写入的逻辑区块地址映射为物理地址,如果则判断这个第一层映射单元是否已经做了双层映射的步骤中结果为是的步骤后,或者判断这个第一层映射单元是否已经做了单层映射结果为否后的步骤后,均需要将新写入的逻辑区块地址映射为物理地址。
在第一层映射表中将第一层映射单元指向第二层映射表。
并将第一层映射单元中的每个逻辑区块的物理地址写入第二层映射表,从而将数据写入到固态硬盘的闪存内。
在一个具体的应用场景中主机或FTL本身触发写入闪存的操作的时候,FTL先将连续的逻辑区块地址切割成一个个的第一层映射单元,并将这些映射单元映射为物理地址,然后将映射关系记录在第一层的映射表中;如果写入的逻辑区块不足第一层映射单元大小,FTL就在第一层映射表中将这个第一层映射单元先指向一个第二层映射表,然后再在第二层映射表中将第一层映射单元内的逻辑区块逐个映射为物理地址,然后将映射关系记录在第二层的映射表中。
在一个具体的应用场景中,第一层映射表只有一个。因此本发明技术方案中描述的将第一层映射单元对应的第一层映射表指向第二层映射表,是指将第一层映射表中与第一层映射单元对应的部分。
作为本发明的一种具体实现方式,第一层映射表具体实现时可以是一个数组,而数组中的元素是物理地址或第二层映射表地址,如单层映射数组中的元素就是物理地址,如采用双层映射,那么数组中的元素就是第二层映射表地址,数组中元素的数量就是逻辑地址第一层映射单元的数量。如A即逻辑地址,B即物理地址,映射关系是:A0-B4,A1->B9,A2->B3,A3->B5,那映射表中就只需要有[B4,B9,B3,B5]。映射表的索引就是逻辑地址,内容就是物理地址。
如果逻辑区块地址范围为L,第一层映射单元的大小为U1,则数组中元素的数量是L/U1。
如果写入的数据包含一个或多个完整的第一层映射单元,那么每个第一层映射单元可以一次性映射为物理地址,而且第一层映射表中与这些第一层映射单元对应的元素就是对应的物理地址。
如果物理地址范围为P,那么物理地址可以划分为P/U1个第一层映射单元,因此第一层映射单元的物理地址需要log2(P/U1)/8个字节来表示。
第一层映射表需要的存储空间大小至少为:
S1=L/U1*log2(P/U1)/8。
如果主机写入的数据不能凑足一个第一层映射单元,那么这个第一层映射单元就不能按照单层映射进行映射;在这种情况下,在第一层映射表中,这个第一层映射单元所对应的元素就不是指向物理地址,而是指向第二层映射表。每一个第二层映射表也是一个数组,数组中的元素是物理地址,而数组中元素的数量就是第一层映射单元所包含的逻辑区块的数量。
对于第一层映射单元、第一层映射表和第二层映射表的关系具体如图4所示。
作为本发明的一种具体实现方式,能被分割为所述第二层映射单元的第一层映射单元的数量设有上限值。
即每一个不能做单层映射的第一层逻辑映射单元都有一个对应的第二层映射表。为节省映射表的存储空间,对不能做单层映射的第一层逻辑映射单元的数量有限制。如果最多允许有J个不能做单层映射的第一层逻辑映射单元,那么***中最多有J个第二层映射表。
如果第一层映射单元包含M个第二层映射单元,那第二层映射表中元素的数量就是M。
如果物理地址范围为P,第二层映射单元大小为U2,则第二层映射表中每个元素需要log2(P/U2)/8个字节来表示。
***中第二层映射表需要的存储空间大小至少为:
S2=J*M*log2(P/U2)/8。
作为本发明的一种具体实现方式,所述第二层映射表存放在第二层映射表资源池内。
作为本发明的一种具体实现方式,当需要第二层映射表时,从所述第二层映射表资源池中分配第二层映射表;
当所述第二层映射表不被需要时,则将该第二层映射表释放到所述第二层映射表资源池。
FTL将所有的第二层映射表放在一个资源池中,在需要进行双层映射的时候从资源池中分配第二层映射表,如果该第二层映射表不再需要则将其释放到资源池中。
在一个具体的应用场景中,当主机进行随机地址写入的时候,可能会对原本单层映射的第一层映射单元中的数据(逻辑地址对应的数据)进行改动,这样这个映射单元就需要从单层映射改为双层映射。在这种情况下,先从第二层映射表资源池中分配一个第二层映射表,将数据没有改动的第二层映射单元(即逻辑区块)的原有物理地址从第一层映射表拷贝并转化到第二层映射表中,再在第二层映射中将数据有改动的第二层映射单元重新映射为新的物理地址并记录在第二层映射表中,在第一层映射表将第一层映射单元指向这个第二层映射表。
当主机进行顺序地址写入的时候,可能会使原本需要双层映射的多个第二层映射单元可以连续映射为一个第一层映射单元,也就是说由原来的双层映射改变为单层映射。在这种情况下,先将原来的第二层映射表释放到第二层映射表资源池中,再将相应的第一映射单元一次映射为物理地址并更新到第一层映射表中。
作为本发明的一种具体实现方式,当所述第二层映射表资源池中的第二层映射表减少到阈值时,进行映射单元合并操作。
作为本发明的一种具体实现方式,所述映射单元合并操作,包括:
将隶属于同一个第一层映射单元的所有逻辑区块中的数据读出来,
将读出的数据重新合并;
将重新合并的数据放入所述第一层映射单元,并将所述第一层映射单元通过第一层映射表映射为物理地址,从而将所述第一层映射表指向的第二层映射表释放到第二层映射表资源池中。
作为本发明的一种具体实现方式,在不存储数据时所述映射单元合并操作的触发阈值小于存储数据时所述映射单元合并操作的触发阈值。
在一个具体的应用场景中,如图5所示。当主机进行随机地址写入的时候,FTL使用的第二层映射表的数量会增加,或者说第二层映射表资源池中的资源数量会减少;当主机进行顺序写入的时候,FTL使用的第二层映射表的数量会减少,或者说第二层映射表资源池中的资源数量会增加。当第二层映射表资源池中的资源数量减少到一定的门限(阈值)的时候,FTL会启动映射单元合并操作,也就是将双层映射的隶属于同一个第一层映射单元的所有逻辑区块中的数据从闪存中读出来,重新合并进行单层映射,从而释放原来的第二层映射表到第二层映射表资源池中。并判断第二层映射表资源池中的第二层映射表资源是否高于结束门限,如高于结束门限则结束映射单元合并操作,如没有高于结束门限,如可继续进行映射单元合并操作。
FTL在空闲状态的时候使用门限与工作状态使用的门限不同,使其在空闲状态比在工作状态更积极地进行映射单元合并。空闲状态即为在没有进行写操作时,工作状态为进行写操作时。主机在一段时间内做随机写入的时候不会触发FTL做映射单元合并;而在写入停止之后,就可能触发映射单元合并。如果主机持续不断地做随机写入,FTL最终会因为第二层映射表减少太多而启动映射单元合并操作。
作为优选的方案存储数据的方案,在上述双层映射的基础上,可以进一步的进行多层映射,具体包括:
响应于写操作,将逻辑区块地址范围分割为多个第一层映射单元;
将所述第一层映射单元分割为多个第二层映射单元;
将所述第二层映射单元分割为多个第三层映射单元;
等等直至,
将所述第n层映射单元分割为多个第n+1层映射单元。
在多层的映射方案中:第n层映射单元大小是第n+1层的映射单元大小的整数倍,且最后一层映射单元大小与逻辑区块大小相同;第n层映射单元在第n层映射表中要么指向物理地址(如果该映射单元包含的逻辑区块连续且完整),要么指向第n+1层映射表(如果不能将该映射单元直接映射为物理地址);第一层映射表可以是一个固定的数组,而其他层映射表则可以动态地分配和合并。多层映射为双层映射的延伸,其原理和方法同双层映射,在此不再赘述。
实施例二:
与实施例一中数据存储方法对应的,本发明还提供了一种数据读取方法,包括:
响应于读操作,将逻辑区块地址范围分割为第一层映射单元;
查询所述第一层映射单元对应的第一层映射表;
如在所述第一层映射表中查询到逻辑区块对应的物理地址,则直接从所述第一层映射表中读出物理地址,然后通过所述第一层映射表中的所述物理地址读出数据;
如在所述第一层映射表中没有查询到逻辑区块对应的物理地址,则从所述第一层映射表中读出第二层映射表的地址,再从第二层映射表中读出物理地址;然后通过所述第二层映射表中的所述物理地址读出数据。
当主机进行读操作的时候,FTL先将逻辑区块地址分割为第一层映射单元,然后查第一层映射表;如果发现是单层映射,直接从映射表中读出物理地址;如果是双层映射,先从第一层映射表中读出第二层映射表的地址,再从第二层映射表中读出物理地址;然后通过物理地址读出数据。
实施例三:
本发明还提供了一种数据存储装置,使用实施一的数据存储方法;
和\或
实施二的数据读取方法。
如固态硬盘,或其他基于固态硬盘的数据存储装置,或者与固态硬盘的存储原理一样的数据存储装置,如现有的手机或平板电脑的数据存储器。
实施例四:
本发明还提供了一种电子设备,使用实施例三的数据存储装置。
如手机、电脑、VR设备等。
在具体的应用中,主机在一段时间内随机写入的时候不会触发映射单元合并,从而不会额外增加写放大,不会影响主机随机写入的性能;在主机侧停止写入的时候,FTL可能会触发映射单元合并,释放更多的第二层映射表,这个时候虽然还是会造成写放大,但是由于是在空闲时间发生的,也不影响主机写的性能。
如果主机持续不断地进行随机写入,那FTL最终会因为剩余的第二层映射表太少而被迫在主机写入的同时进行映射单元合并。但这种写入模式是比较极端的情况,在很多实际的业务流程中不会发生。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述发明的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。
在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序,本发明中涉及的器件、装置、设备、***的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、***。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
另外,如在此使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
还需要指出的是,在本发明的***和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。
可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本发明的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所发明的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此发明的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此发明的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (18)
1.一种数据存储方法,其特征在于,包括:
响应于写操作,将逻辑区块地址范围分割为多个第一层映射单元;
判断所述第一层映射单元是否连续和完整;
将不连续或不完整的所述第一层映射单元分割为多个第二层映射单元;
将所述逻辑区块的地址映射为物理地址;
将不连续或不完整的所述第一层映射单元对应的第一层映射表指向第二层映射表;
将不连续或不完整的所述第一层映射单元中的逻辑区块的物理地址写入第二层映射表。
2.根据权利要求1所述的数据存储方法,其特征在于,所述将所述逻辑区块的地址映射为物理地址的步骤之后,包括:
将连续和完整的所述第一层映射单元中的逻辑区块的物理地址写入第一层映射表。
3.根据权利要求1所述的数据存储方法,其特征在于,所述判断所述第一层映射单元是否连续和完整的步骤之后,还包括:
如所述第一层映射单元是连续和完整的,则判断所述第一层映射单元是否有对应的第二层映射表;
如所述第一层映射单元是有对应的第二层映射表,则将所述第二层映射表释放;
将所述第一层映射单元直接映射为物理地址,并更新所述第一层映射表。
4.根据权利要求1所述的数据存储方法,其特征在于:所述将不连续或不完整的所述第一层映射单元对应的第一层映射表指向第二层映射表,包括:
判断不连续或不完整的所述第一层映射单元对应的第一层映射表是否已经指向第二层映射表,
如不连续或不完整的所述第一层映射单元对应的第一层映射表没有指向第二层映射表,则为所述第一层映射单元分配对应的第二层映射表。
5.根据权利要求1所述的数据存储方法,其特征在于,所述第二层映射表存放在第二层映射表资源池内。
6.根据权利要求5所述的数据存储方法,其特征在于:
当需要第二层映射表时,从所述第二层映射表资源池中分配第二层映射表;
当所述第二层映射表不被需要时,则将该第二层映射表释放到所述第二层映射表资源池。
7.根据权利要求6所述的数据存储方法,其特征在于:
当所述第二层映射表资源池中的第二层映射表减少到阈值时,进行映射单元合并操作。
8.根据权利要求7所述的数据存储方法,其特征在于,所述映射单元合并操作,包括:
将隶属于同一个第一层映射单元的所有逻辑区块中的数据读出来,
将读出的数据重新合并;
将重新合并的数据放入所述第一层映射单元,并将所述第一层映射单元通过第一层映射表映射为物理地址,从而将所述第一层映射表指向的第二层映射表释放到第二层映射表资源池中。
9.根据权利要求7所述的数据存储方法,其特征在于:
在不存储数据时所述映射单元合并操作的触发阈值小于存储数据时所述映射单元合并操作的触发阈值。
10.根据权利要求1所述的数据存储方法,其特征在于:
所述第一层的映射单元的大小是逻辑区块大小的整数倍,所述第二层映射单元的大小和逻辑区块的大小相同。
11.根据权利要求1所述的数据存储方法,其特征在于:
所述第一层映射表是数组,所述第一层映射表的数组中的元素是物理地址或第二层映射表地址,所述第一层映射表的数组中元素的数量是逻辑区块地址范围分割的所述第一层映射单元的数量。
12.根据权利要求11所述的数据存储方法,其特征在于:
所述第二层映射表是数组,所述第二层映射表的数组中的元素是物理地址,所述第二层映射表的数组中元素的数量是所述第一层映射单元所包含的逻辑区块的数量。
13.根据权利要求1所述的数据存储方法,其特征在于:
能被分割为所述第二层映射单元的第一层映射单元的数量设有上限值。
14.根据权利要求1所述的数据存储方法,其特征在于:包括:
响应于写操作,将逻辑区块地址范围分割为多个第一层映射单元;
将所述第一层映射单元分割为多个第二层映射单元;
将所述第二层映射单元分割为多个第三层映射单元;
直至
将第n层映射单元分割为多个第n+1层映射单元。
15.根据权利要求14所述的数据存储方法,其特征在于:
所述第n层映射单元大小是第n+1层的映射单元大小的整数倍,且所述第n+1层的映射单元大小与逻辑区块大小相同。
16.一种数据读取方法,其特征在于,包括:
响应于读操作,将逻辑区块地址范围分割为第一层映射单元;
查询所述第一层映射单元对应的第一层映射表;
如在所述第一层映射表中查询到逻辑区块对应的物理地址,则直接从所述第一层映射表中读出物理地址,然后通过所述第一层映射表中的所述物理地址读出数据;
如在所述第一层映射表中没有查询到逻辑区块对应的物理地址,则从所述第一层映射表中读出第二层映射表的地址,再从第二层映射表中读出物理地址;然后通过所述第二层映射表中的所述物理地址读出数据。
17.一种数据存储装置,其特征在于,使用权利要求1至权利要求15之一 所述的数据存储方法;
和\或
权利要求16所述的数据读取方法。
18.一种电子设备,其特征在于,使用权利要求17所述的数据存储装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811311003.1A CN109491927B (zh) | 2018-11-06 | 2018-11-06 | 数据存储、读取方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811311003.1A CN109491927B (zh) | 2018-11-06 | 2018-11-06 | 数据存储、读取方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109491927A CN109491927A (zh) | 2019-03-19 |
CN109491927B true CN109491927B (zh) | 2023-02-03 |
Family
ID=65693914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811311003.1A Active CN109491927B (zh) | 2018-11-06 | 2018-11-06 | 数据存储、读取方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491927B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897745B (zh) * | 2019-05-05 | 2024-04-05 | 兆易创新科技集团股份有限公司 | 一种数据存储方法、装置、电子设备及存储介质 |
CN110347614B (zh) * | 2019-07-08 | 2022-08-12 | 镕铭微电子(济南)有限公司 | 存储空间映射算法、缓存状态机、存储装置、存储介质 |
CN111158584B (zh) * | 2019-11-26 | 2022-09-30 | 国网江苏省电力有限公司盐城供电分公司 | 基于泛在电力物联网的配网施工安全质量管控平台大数据存储方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819496A (zh) * | 2012-08-16 | 2012-12-12 | 无锡紫芯集成电路***有限公司 | 闪存ftl的地址转换方法 |
CN104133779A (zh) * | 2013-05-02 | 2014-11-05 | 擎泰科技股份有限公司 | 非易失性存储装置及其动态调整映射方式的方法 |
CN106547703A (zh) * | 2016-10-08 | 2017-03-29 | 华中科技大学 | 一种基于块组结构的ftl优化方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5093294B2 (ja) * | 2010-05-14 | 2012-12-12 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
KR101453313B1 (ko) * | 2013-03-25 | 2014-10-22 | 아주대학교산학협력단 | 플래시 메모리 기반의 페이지 주소 사상 방법 및 시스템 |
US10459635B2 (en) * | 2016-02-11 | 2019-10-29 | SK Hynix Inc. | Window based mapping |
-
2018
- 2018-11-06 CN CN201811311003.1A patent/CN109491927B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819496A (zh) * | 2012-08-16 | 2012-12-12 | 无锡紫芯集成电路***有限公司 | 闪存ftl的地址转换方法 |
CN104133779A (zh) * | 2013-05-02 | 2014-11-05 | 擎泰科技股份有限公司 | 非易失性存储装置及其动态调整映射方式的方法 |
CN106547703A (zh) * | 2016-10-08 | 2017-03-29 | 华中科技大学 | 一种基于块组结构的ftl优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109491927A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10452562B2 (en) | File access method and related device | |
KR101818578B1 (ko) | 비휘발성 메모리를 갖는 시스템을 위한 동적 및 정적 데이터의 처리 | |
KR100874702B1 (ko) | 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법 | |
US7761648B2 (en) | Caching method for NAND flash translation layer | |
JP6311195B2 (ja) | ストレージデバイスによってデータを記憶するための方法およびストレージデバイス | |
CN109491927B (zh) | 数据存储、读取方法、装置及电子设备 | |
US8375191B2 (en) | Non-volatile memory, page dynamic allocation apparatus and page mapping apparatus therefor, and page dynamic allocation method and page mapping method therefor | |
JP6678230B2 (ja) | ストレージ装置 | |
US9304911B2 (en) | Semiconductor storage device and buffer operation method thereof | |
US20190391756A1 (en) | Data storage device and cache-diversion method thereof | |
JP2008192154A (ja) | メモリマッピング方法およびメモリマッピングシステム | |
US20100318760A1 (en) | Memory controller, nonvolatile storage device, and nonvolatile storage system | |
WO2016135954A1 (ja) | ストレージ装置および不揮発メモリデバイス | |
JP2009532761A (ja) | フラッシュ・ストレージの離散領域を記述して問い合わせること | |
CN107817945B (zh) | 一种混合内存结构的数据读取方法和*** | |
CN111309258B (zh) | 一种b+树的存取方法、装置和计算机可读存储介质 | |
US11630779B2 (en) | Hybrid storage device with three-level memory mapping | |
CN111143285A (zh) | 一种小文件存储文件***以及小文件处理方法 | |
WO2020192710A1 (zh) | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 | |
US9734057B2 (en) | Semiconductor storage device and buffer operation method thereof | |
CN107329909B (zh) | 一种数据管理方法及装置 | |
US10073851B2 (en) | Fast new file creation cache | |
CN115390747A (zh) | 存储设备及其操作方法 | |
CN105630410A (zh) | 使用非易失随机读写存储芯片动态管理文件存储区的方法 | |
CN117215485A (zh) | Zns ssd管理方法及数据写入方法、存储装置、控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211209 Address after: 250100 room 2-302-131, building 7, North District, Shandong design creative industrial park, No. 868, Tangye West Road, Jinan area, free trade pilot zone, Jinan, Shandong Province Applicant after: Rongming Microelectronics (Jinan) Co.,Ltd. Address before: 266100 blue Silicon Valley entrepreneurship center, No. 1, Keji Road, Jimo District, Qingdao, Shandong Applicant before: QINGDAO RONGMING SEMICONDUCTOR Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |