CN108027764B - 可转换的叶的存储器映射 - Google Patents
可转换的叶的存储器映射 Download PDFInfo
- Publication number
- CN108027764B CN108027764B CN201680054671.3A CN201680054671A CN108027764B CN 108027764 B CN108027764 B CN 108027764B CN 201680054671 A CN201680054671 A CN 201680054671A CN 108027764 B CN108027764 B CN 108027764B
- Authority
- CN
- China
- Prior art keywords
- leaf
- type
- data
- stored
- entries
- 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
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
系统、方法和/或装置用于将元数据储存在储存系统中。在一方面,要由储存系统储存的数据的指示由包含非易失性存储器和分层数据结构的计算装置接收。从分层数据结构选择具有第一叶型的叶。第一叶类型的叶包含在非易失性存储器中储存的可变长度的数据的位置。使用至少一个标准来确定是否将所选择的叶转换为具有第二叶类型的已转换的叶。第二类型的叶包含固定长度的数据的位置。响应于确定将所选择的叶转换为已转换的叶,将第一位置信息储存在已转换的叶中。响应于确定不转换所选择的叶,将第二位置信息储存在第二种叶中。
Description
技术领域
所公开的实施例一般涉及存储器系统,并且具体地涉及减少分层数据结构(tiered data structure)所消耗的存储器的量。
背景技术
包含闪速(flash)存储器的半导体存储器装置典型地利用存储器单元来将数据储存为电气值,诸如电荷或电压。例如,闪速存储器单元包含具有用于储存代表数据值的电荷的浮置栅极的单个晶体管。闪速存储器是可以被电擦除和重新编程的非易失性数据储存装置。更一般地,与需要电力以维持所储存的信息的易失性存储器相反,即使当没有被供电时,非易失性存储器(例如,闪速存储器、以及使用各种技术中的任一种来实现的其它类型的非易失性存储器)也保存所储存的信息。
随着闪速存储器储存系统的尺寸不断扩大,存取闪速存储器所储存的数据的效率可能变得更加重要。分层数据结构可以用于提高数据存取的速度和效率。一些分层数据结构使得能够在对数时间内进行数据搜索、数据插入、数据删除和序列性数据存取(sequential data access)。通常,分层数据结构用于将闪速存储器中所储存的数据的物理位置映射到逻辑地址。然而,当数据写入的平均尺寸很小时,分层数据结构所消耗的存储器可能急剧地增加。对分层数据结构组件的改进可以减少分层数据结构所消耗的存储器的量。
发明内容
在不限制所附权利要求的范围的情况下,在考虑本公开之后,并且具体地在考虑标题为“具体实施方式”的章之后,将理解如何使用各种实施例的方面来创建包含多个叶(leaf)类型的分层数据结构,其中第一叶类型的条目包含可变长度的数据的位置的指示,并且其中第二叶类型的条目包含固定长度的数据的位置的指示。
附图说明
为了能够更详细地理解本公开,可以通过参考各种实施例的特征来进行更具体的描述,一些实施例的特征在附图中示出。然而,附图仅示出了本公开的相关特征,并且因为该描述可以承认其它有效特征,因此不被认为是限制性的。
图1是示出根据一些实施例的数据储存系统的实现方式的框图。
图2A是示出根据一些实施例的管理模块的实现方式的框图。
图2B是示出根据一些实施例的管理模块的实现方式的框图。
图3A示出了根据一些实施例的包含第一类型的叶的分层数据结构的示例。
图3B示出了根据一些实施例的包含第一类型的叶和第二类型的叶的分层数据结构的示例。
图4示出了仅包含第一类型的叶的分层数据结构的计算的性能值与包含第一类型的叶和第二类型的叶的分层数据结构的计算的性能值的比较。
图5A-5C示出了根据一些实施例的储存元数据的方法的流程图表示。
根据惯例,附图中示出的各种特征可能不是按比例绘制的。因此,为了清楚起见,各种特征的大小(dimension)可以任意扩大或缩小。另外,附图中的一些可能未描述给定系统、方法或装置的所有组件。最后,贯穿说明书和附图,相同的附图标记可以用来表示相同的特征。
具体实施方式
用于储存闪速存储器的位置元数据的分层数据结构具有叶节点——在本文中有时称为叶,叶节点具有条目,条目包含诸如密钥的用于储存信息的字段(即,逻辑块地址)、物理地址(有时称为物理块地址)、数据长度等。诸如叶节点中的元数据条目的尺寸、数据稀疏性(sparseness)(即,与所映射的地址混合的未映射地址的普遍性)、数据顺序地写入的程度等的因素可能导致叶节点所消耗的空间急剧增加。在一些情况下,可以通过改变用于特定叶节点中使用的条目的格式来减少分层数据结构所消耗的存储器的量。需要注意到的是,在本文档中,术语“叶”和“叶节点”可以互换使用,并且因此意指相同的事物。
本文中所描述的各种实施例包含用于确定使用第一叶条目结构或第二叶条目结构来储存元数据的系统、方法和/或装置。
(A1)更具体而言,一些实施例包含储存元数据的方法。在一些实施例中,该方法包含在包含非易失性存储器和包含多个叶的树(tree)数据结构的计算装置处接收要由储存系统储存的数据的指示。该方法还包含从多个叶(有时称为叶节点)选择叶(有时称为叶节点),以储存要储存的数据的位置信息,其中所选择的叶具有第一叶类型。第一叶类型的叶包含指示在非易失性存储器中储存的可变长度的数据的位置的条目。该方法还包含使用至少一个第一类型到第二类型标准来确定是否将所选择的叶转换为已转换的叶(convertedleaf)。已转换的叶具有第二叶类型。第二类型的叶包含指示在非易失性存储器中储存的固定长度的数据的位置的条目。该方法还包含响应于确定将所选择的叶转换为已转换的叶来将要储存的数据的第一位置信息储存在已转换的叶中。该方法还包含响应于确定不转换所选择的叶,将要储存的数据的第二位置信息储存在所选择的叶中。
(A2)在A1的方法的一些实施例中,第一位置信息包含要储存的数据的物理块地址。
(A3)在A1-A2中任一项的方法的一些实施例中,第二位置信息包含要储存的数据的物理块地址以及以下至少一个:要储存的数据的逻辑块地址或要储存的数据的长度的指示。
(A4)在A1-A3中任一项的方法的一些实施例中,树数据结构包含第一叶类型的至少一个叶和第二叶类型的至少一个叶,其中第二叶类型的至少一个叶储存基本逻辑地址(base logic address)和固定尺寸的条目的序列,其中所映射的位置的每个固定尺寸的条目包含物理地址(有时称为物理块地址)。
(A5)在A1至A4中任一项的方法的一些实施例中,至少一个第一类型到第二类型标准包含根据以下所满足的标准:指示插入到所选择的叶中(即,一个或多个条目插入到所选择的叶中)将导致所选择的叶分割。
(A6)在A1-A5中任一项的方法的一些实施例中,至少一个第一类型到第二类型标准包含根据以下所满足的标准:对所选择的叶的潜在新条目和所选择的叶中的现存条目(如果有)确定总尺寸,并且确定所确定的总尺寸小于或等于第二叶类型的叶的所有条目的最大尺寸。潜在的新条目指示要储存的数据的位置。
(A7)在A1-A6中的任一项的方法的一些实施例中,该方法还包括使用至少一个第二类型到第一类型标准来确定是否将第二类型的叶还原(revert)成第一叶类型的新叶。
(A8)在A7的方法的一些实施例中,第二叶类型的叶具有第一数量的位置的条目,并且至少一个第二类型到第一类型标准包含根据以下所满足的标准:确定第一类型的新叶具有足够的空间以包含由第二叶类型的叶的条目所指示的所有所映射的位置的条目加上预定的裕度(margin)。
(A9)在A7-A8中任一项的方法的一些实施例中,响应于要由储存系统删除的数据的指示,确定是否将第二类型的叶还原成第一类型的新叶。第二类型的叶含有要删除的数据的位置信息。
(A10)在A1-A9中任一项的方法的一些实施例中,响应于要由储存系统覆写(overwrite)的数据的指示,确定是否将第二类型的叶还原成第一类型的新叶。第二类型的叶含有要覆写的数据的位置信息。
(A11)在A1-A10中任一项的方法的一些实施例中,由储存系统的储存装置进行在已转换的叶中接收、选择、确定、储存、或者在所选择的叶中储存中的一个或多个,其中储存装置储存要储存的数据。
(A12)在A1-A10中任一项的方法的一些实施例中,由与储存装置不同的储存系统的一个或多个子系统进行在已转换的叶中接收、选择、确定、储存、或者在所选择的叶中储存中的一个或多个,其中储存装置储存要储存的数据。
(A13)在另一方面,储存装置包含(1)非易失性存储器,(2)一个或多个处理器,以及(3)储存一个或多个程序的控制器存储器(例如储存装置中的非暂时性计算机可读储存介质),其中当由一个或多个处理器执行时,该一个或多个处理器使得储存装置进行本文中描述的方法A1-A10中的任一项,或者该一个或多个处理器控制本文中描述的方法A1-A10中的任一项的性能。
(A14)在又一方面中,上述方法A1-A10中的任一项由包含用于进行本文中描述的方法中的任一个的构件的存储装置进行。
(A15)在又一方面中,一些实施例包含非暂时性计算机可读储存介质,其储存配置为由储存装置的一个或多个处理器执行的一个或多个程序,该一个或多个程序包含用于进行本文中描述的方法A1-A10中的任一项的指令。
本文中描述了许多细节,以便提供对附图中所示的示例性实施例的透彻理解。然而,可以在没有许多具体细节的情况下实践一些实施例,并且权利要求的范围仅受权利要求书中具体记载的那些特征和方面的限制。此外,公知的方法、组件和电路未以穷尽细节的方式描述,以免不必要地混淆本文中描述的实施例的相关方面。
图1是示出根据一些实施例的数据储存系统100框图。尽管示出了一些示例性特征,但是为了简洁并且以免混淆本文所公开的示例性实施例的相关方面,没有示出各种其它特征。为此,作为非限制性示例,数据储存系统100包含具有储存控制器124和储存介质130的储存装置120,并且与计算机系统110结合使用或包含计算机系统110。在一些实施例中,储存介质130是单个闪速存储器装置,而在其它实施例中,储存介质130包含多个闪速存储器装置。在一些实施例中,储存介质130是NAND型闪速存储器或NOR型闪速存储器。在一些实施例中,如本文中进一步限定的,储存介质130包含一个或多个三维(3D)存储器装置。另外,在一些实施例中,储存控制器124是固态驱动器(SSD)控制器。然而,根据广泛的实施例(例如,PCRAM、ReRAM、STT-RAM等)的方面,可以包含其它类型的储存介质。在一些实施例中,闪速存储器装置包含一个或多个闪速存储器裸芯、一个或多个闪速存储器封装、一个或多个闪速存储器沟道等。在一些实施例中,数据储存系统100可以含有一个或多个储存装置120。
计算机系统110通过数据连接101耦合到储存控制器124。然而,在一些实施例中,计算机系统110包含储存控制器124或储存控制器124的部分,作为组件和/或子系统。例如,在一些实施例中,储存控制器124的功能的一些或全部由在计算机系统110上执行的软件来实现。计算机系统110可以是任何合适的计算机装置,诸如计算机、膝上型计算机、平板装置、上网本、互联网亭、个人数字助理、移动电话、智能电话、游戏装置、计算机服务器或任何其它计算装置。计算机系统110有时被称为主机、主机系统、用户端或用户端系统。在一些实施例中,计算机系统110是服务器系统,诸如数据中心中的服务器系统。在一些实施例中,计算机系统110包含一个或多个处理器、一种或多种类型的存储器、显示器和/或其它用户接口组件——诸如键盘、触摸屏显示器、鼠标、跟踪板、数码相机和/或任何数量的辅助装置,以添加功能性(functionality)。在一些实施例中,计算机系统110不具有显示器和其它用户接口组件。
储存介质130通过连接103耦合到储存控制器124。连接103有时被称为数据连接,但除了数据之外通常还传递指令,并且除了要储存在储存介质130中的数据值以及从储存介质130读取的数据值之外,可选地传递元数据、错误校正信息和/或其它信息。在一些实施例中,储存控制器124和储存介质130包含在相同的装置(即,集成装置)中,作为其组件。此外,在一些实施例中,储存控制器124和储存介质130嵌入在诸如移动装置、平板电脑、其它计算机或计算机所控制的装置的主机装置(例如,计算机系统110)中,并且本文中描述的方法至少部分由嵌入式存储器控制器来进行。储存介质130可以包含任何数量(即,一个或多个)存储器装置,该存储器装置包含但不限于诸如(多个)闪速存储器装置的非易失性半导体存储器装置。例如,(多个)闪速存储器装置可以配置用于企业储存装置,适合于诸如用于云计算的应用、数据库应用、主/次储存装置、或将所储存(要储存)的数据缓存在次储存装置中,诸如硬盘驱动器。另外地和/或可选地,(多个)闪速存储器也可以配置用于相对较小规模的应用,诸如个人闪速驱动器或用于个人计算机、膝上型计算机和平板计算机的硬盘替换。
在各种实施例中,储存介质130包含远离储存控制器124的一个或多个装置(例如,计算机系统110)和/或被包含在其中。
储存介质130被分成多个可寻址和可单独选择的块,诸如可选择部分131。在一些实施例中,可单独选择块(有时称为擦除块)是闪速存储器装置中的最小尺寸的可擦除单元。换言之,每个块含有可以被同时擦除的最小数量的存储器单元。每个块通常进一步被分成多个页和/或字线,其中每个页或字线典型地是块中最小的可单独存取(可读)部分的实例。然而,在一些实施例中(例如,使用某些类型的闪速存储器),数据集的最小单独可存取单元是扇区(sector),其是页的子单元。换言之,块包含多个页,每个页含有多个扇区,并且每个扇区是用于从闪速存储器装置读取数据的最小数据单位。
在一些实施例中,储存控制器124包含管理模块121-1、主机接口129、储存介质接口128和/或(多个)附加模块125。储存控制器124可以包含为了简洁并且以免混淆本文所公开的示例性实施例的相关特征而未示出的各种附加特征,并且特征的不同布置是可能的。主机接口129通过数据连接101向计算机系统110提供接口。类似地,储存介质接口128通过连接103向储存介质130提供接口。在一些实施例中,储存介质接口128包含读取和写入电路,其包含能够向储存介质130提供读取信号(例如,读取NAND型闪速存储器的阈值电压)的电路。
在一些实施例中,管理模块121-1包含配置为执行一个或多个程序中(例如,在管理模块121-1中)的指令的一个或多个处理单元(例如,(多个)CPU,有时也称为处理器)122。在一些实施例中,一个或多个CPU 122由储存控制器124的功能内的一个或多个组件共享,并且在一些情况下超出储存控制器124的功能。管理模块121-1耦合到主机接口129、(多个)附加模块125和储存介质接口128,以便协调这些组件的操作。在一些实施例中,管理模块121-1的一个或多个模块实现在计算机系统110的管理模块121-2中。在一些实施例中,计算机系统110的一个或多个处理器(未示出)配置为执行一个或多个程序中(例如,在管理模块121-2中)的指令。管理模块121-2耦合到储存装置120,以便管理储存装置120的操作。
(多个)附加模块125耦合到储存介质接口128、主机接口129和管理模块121-1。作为示例,(多个)附加模块125可以包含错误控制模块,以限制在向存储器写入或者从存储器读取期间无意地被引入到数据中的不可校正的错误的数量。
在一些实施例中,诸如管理模块121-1、管理模块121-2、管理模块121-1的模块、管理模块121-2的模块、附加模块125等的如本文中描述的(多个)模块由一个或多个(多个)CPU(例如,管理模块121-1的(多个)CPU 122、计算机系统110的(多个)CPU(未示出)等)以软件执行。在其它实施例中,如本文中描述的(多个)模块全部地或部分地使用专用电路(例如,进行编码和解码功能)来实现。
在一些实施例中,在写入操作期间,主机接口129从计算机系统110接收要储存在储存介质130中的数据。由主机接口129接收的数据可用于编码器(例如,在(多个)附加模块125中),其编码数据以产生一个或多个码字。该一个或多个码字可用于储存介质接口128,其以取决于正在利用的储存介质的类型的方式,将该一个或多个码字传送到储存介质130。
在一些实施例中,当计算机系统(主机)110向储存控制器124发送一个或多个主机读取指令(例如,经由数据连接101,或者替代地经由分开的控制线或总线)时,启动读取操作,以从储存介质130请求数据。储存控制器124经由储存介质接口128向储存介质130发送一个或多个读取存取指令,以根据由一个或多个主机读取指令指定的存储器位置(地址)获得原始读取数据。储存介质接口128向解码器(例如,在(多个)附加模块125中)提供原始读取数据(例如,包括一个或多个码字)。如果解码成功,则将所解码的数据提供给主机接口129,其中所解码的数据可用于计算机系统110。在一些实施例中,如果解码不成功,则储存控制器124可以求助于若干补救动作(remedial action),或者提供对不可解决的错误状况的指示。
如以上所解释的,储存介质(例如,储存介质130)被分成若干可寻址和可单独选择的块,并且每个块可选地(但典型地)进一步被分成多个页和/或字线和/或扇区。尽管以块为基础进行储存介质的擦除,但是在许多实施例中,在块的较小子单元上(例如,基于页、字线或扇区)进行储存介质的读取和编程。在一些实施例中,块的较小子单元由多个存储器单元(例如,单级单元(SLC)或多级单元)构成。在一些实施例中,在整个页上进行编程。在一些实施例中,多级单元(MLC)NAND闪速存储器典型地每个单元具有四个可能的状态,每个单元产生两个信息位。此外,在一些实施例中,MLC NAND具有两种页类型:(1)较低的页(有时称为快页(fast page))和(2)较高的页(有时称为慢页(slow page))。在一些实施例中,三级单元(TLC)NAND闪速存储器每个单元具有八个可能的状态,每个单元产生三位信息。虽然本文中的描述使用TLC、MLC和SLC作为示例,但是本领域技术人员将认识到,本文中描述的实施例可以扩展到每个单元具有多于八种可能状态的存储器单元,其每个单元产生多于三位的信息。
图2A是示出根据一些实施例的如图1所示的管理模块121-1的框图。管理模块121-1典型地包含用于执行在存储器202-1中储存的模块、程序和/或指令并由此进行处理操作的一个或多个处理单元122-1(有时称为CPU、处理器、硬件处理器或微处理器)、存储器202-1(有时称为控制器存储器)、以及用于互连这些组件的一个或多个通信总线204-1。一个或多个通信总线204-1可选地包含互连并控制系统组件之间的通信的电路(有时称为芯片组)。管理模块121-1由一个或多个通信总线204-1耦合到主机接口129、(多个)附加模块125和储存介质接口128。存储器202-1包含高速随机存取存储器,诸如DRAM、SRAM、DDR RAM或其它随机存取固态存储器装置,并且可以包含非易失性存储器,诸如一个或多个磁盘储存装置、光盘储存装置、闪速存储器装置或其它非易失性固态储存装置。存储器202-1可选地包含位于远离(多个)CPU122-1的一个或多个储存装置。存储器202-1或可选地存储器202-1内的(多个)非易失性存储器装置包括非暂时性计算机可读储存介质。在一些实施例中,存储器202-1或存储器202-1的非暂时性计算机可读储存介质储存以下程序、模块、和数据结构,或者其子集或超集(superset):
·操作系统212-1,其包含用于处理各种基本系统服务和用于进行硬件相关任务的过程。
·通信模块214-1,其用于与其它计算机系统(例如,计算机系统110)(例如,经由主机接口129和/或储存介质接口128)通信。
·驱动器216-1,其检测和处理从内部请求者和/或外部请求者(requestor)(例如(多个)附加模块125、计算机系统110等)接收的请求。(请求由例如数据读取模块218-1、数据写入模块220-1、数据擦除模块222-1等处理。)
·数据读取模块218-1,其从储存介质(例如储存介质130)中的一个或多个码字、页或块中读取数据。
·数据写入模块220-1,其向储存介质(例如储存介质130)中的一个或多个码字、页或块中写入数据。
·数据擦除模块222-1,其从储存介质(例如储存介质130)中的一个或多个块中擦除数据。
·分层数据结构(TDS)模块224-1,其在一个或多个分层数据结构(在本文中也称为树数据结构)内储存和撷取信息(例如,数据对象和节点)。一个或多个分层数据结构典型地储存在储存介质130中,但是在一些实施例中至少部分地(例如,所缓存的部分)储存在存储器202-1中或计算机系统110的存储器中。在一些实施例中,前述数据对象储存在分层数据结构的数据节点(有时称为溢出(overflow)节点)中,其继而储存在储存介质130中(即在储存装置的非易失性存储器中)。物理地址(有时称为物理块地址)指示数据对象在储存介质130中所储存的位置(例如,在分层数据结构的叶节点中的位置,其继而储存在储存介质130中)。分层数据结构模块224-1包含TDS储存模块226-1和TDS搜索模块228-1。
·TDS储存模块226-1,其通过写入信息、插入新的数据对象、或者替换或更新数据对象的值来向一个或多个分层数据结构的叶节点进行存储器操作(例如,替换、删除和插入操作),或者从一个或多个分层数据结构的叶节点删除信息(例如,删除数据对象和/或用墓碑(tombstone)替换数据对象的值),以便创建新的或修改的叶节点并将新的或修改的叶节点写入储存介质130。
·TDS搜索模块228-1,其通过一个或多个分层数据结构搜索所请求的数据(例如,定位和撷取对应于请求者所请求的事务中的存储器操作的数据对象或节点)。
以上标识的元件中的每一个可以储存在先前提到的存储器装置中的一个或多个中,并且与用于进行上述功能的指令集相对应。以上标识的模块或程序(即,指令集)不需要实现为分开的软件程序、过程或模块,因而这些模块的各种子集可以在各种实施例中组合或以其它方式重新布置。在一些实施例中,存储器202-1可以储存以上标识的模块和数据结构的子集。此外,存储器206-1可以储存以上没有描述的附加模块和数据结构。在一些实施例中,在存储器206-1中储存的程序、模块和数据结构或者存储器206-1的非暂时性计算机可读储存介质提供用于实现以下描述的一些方法的指令。在一些实施例中,这些模块中的一些或全部可以用归入(subsume)模块功能的部分或全部的专用硬件电路来实现。
虽然图2A示出了根据一些实施例的管理模块121-1,但是图2A旨在更多地作为可能存在于管理模块121-1中的各种特征的功能性描述,而不是作为本文中描述的实施例的结构性示意图。在实践中,并且如本领域普通技术人员所认识到的,可以组合分开示出的程序、模块和数据结构,并且可以分开一些程序、模块和数据结构。
图2B是示出根据一些实施例的(图1的计算机系统110的)管理模块121-2的框图。管理模块121-2典型地包含用于执行在存储器202-2中储存的模块、程序和/或指令并由此进行处理操作的一个或多个处理单元201(有时称为CPU、处理器、硬件处理器或微处理器)、存储器202-2、以及用于互连这些组件的一个或多个通信总线204-2。一个或多个通信总线204-2可选地包含互连并控制系统组件之间的通信的电路(有时称为芯片组)。管理模块121-2通过一个或多个通信总线204-2耦合到储存装置130。存储器202-2包含诸如DRAM、SRAM、DDR RAM或其它随机存取固态存储器装置的高速随机存取存储器,并且可以包含诸如一个或多个磁盘储存装置、光盘储存装置、闪速存储器装置或其它非易失性固态储存装置的非易失性存储器。存储器202-2可选地包含位于远离(多个)CPU 201的一个或多个储存装置。存储器202-2或者替代地存储器202-2内的(多个)非易失性存储器装置包括非暂时性计算机可读储存介质。在一些实施例中,存储器202-2或存储器202-2的非暂时性计算机可读储存介质储存以下程序、模块、和数据结构、以及其子集或超集:
·操作系统212-2,其包含用于处理各种基本系统服务和用于进行硬件相关任务的过程。
·应用213,其包含用于虚拟机托管、数据库接口工具、数据处理软件、数据分析软件、数据管理软件等的各种本地和/或第三方程序。
·通信模块214-2,其用于与其它计算机系统或计算机组件(例如,经由主机接口129)通信。
·驱动器216-2,其检测和处理从内部请求者和/或外部请求者(例如(多个)附加模块125、计算机系统110中的应用213等)接收的请求。(请求由例如数据读取模块218-2、数据写入模块220-2、数据擦除模块222-2等处理。)
·数据读取模块218-2,其从储存介质(例如储存介质130)中的一个或多个码字、页或块中读取数据。
·数据写入模块220-2,其向储存介质(例如储存介质130)中的一个或多个码字、页或块中写入数据。
·数据擦除模块222-2,其从储存介质(例如储存介质130)中的一个或多个块中擦除数据。
·分层数据结构(TDS)模块224-2,其在一个或多个分层数据结构(在本文中也称为树数据结构)内储存和撷取信息(例如,数据对象和节点)。一个或多个分层数据结构可以由存储器202-2、储存介质130、计算机系统110等储存。分层数据结构模块224-2包含TDS储存模块226-2和TDS搜索模块228-2。
·TDS储存模块226-2,其通过写入信息、插入新的数据对象、或者替换/更新数据对象的值来向一个或多个分层数据结构的叶节点进行存储器操作(例如,替换、删除和插入操作),或者从一个或多个分层数据结构的叶节点删除信息(例如,删除数据对象和/或用墓碑替换数据对象的值),以便创建新的/修改的叶节点并将新的/修改的叶节点写入储存介质130。
·TDS搜索模块228-2,其通过一个或多个分层数据结构搜索所请求的数据(例如,定位和撷取对应于请求者所请求的事务中的存储器操作的数据对象或节点)。
以上标识的元件中的每个可以储存在先前提到的存储器装置中的一个或多个中,并且对应于用于进行上述功能的指令集。以上标识的模块或程序(即,指令集)不需要实现为分开的软件程序、过程或模块,并且因而这些模块的各种子集可以在各种实施例中组合或以其它方式重新布置。在一些实施例中,存储器202-2可以储存以上标识的模块和数据结构的子集。此外,存储器202-2可以储存以上没有描述的附加模块和数据结构。在一些实施例中,在存储器202-2中储存的程序、模块和数据结构或存储器202-2的非暂时性计算机可读储存介质提供用于实现以下描述的一些方法的指令。在一些实施例中,这些模块中的一些或全部可以用归入模块功能的部分或全部的专用硬件电路来实现。
虽然图2B示出了根据一些实施例的管理模块121-2,但是图2B旨在更多地作为可能存在于管理模块121-2中的各种特征的功能性描述,而不是作为本文中描述的实施例的结构性示意图。在实践中,并且如本领域普通技术人员所认识到的,可以组合分开示出的程序、模块和数据结构,并且可以分开一些程序、模块和数据结构。
图3A示出了根据一些实施例的分层数据结构300的示例。分层数据结构300包含多个节点302-320。多个节点以分层结构组织,其中每个相应节点连接到在相应节点之上和/或之下的级(层)中的一个或多个其它节点。分层数据结构300中的相应节点的父节点(parent node)是作为分层数据结构300中的相应节点之上的级(层)的节点。典型地,父节点包含引用或指向相应节点的条目。分层数据结构300中的相应节点的子节点(childnode)是作为分层数据结构300中的相应节点之下的级(层)的节点。典型地,由相应节点中的条目引用子节点。如果两个节点要遍历相同数量的节点以到达根节点302,则两个节点处于相同的级。根节点302是不具有父节点的节点。内部节点304、306是均具有父节点(即302)和一个或多个子节点的节点,并且因而是在分层数据结构内部的节点。叶节点308-320是不具有子节点的节点。内部节点304、306(以及在一些实施例中,根节点302)是储存指示与另一节点的关系的信息的索引节点。例如,在一些实施例中,索引节点储存一个或多个条目,每个条目包含指向子索引节点或父索引节点的存储器指针。
在一些实施例中,每个叶节点具有最大尺寸。当叶节点超过最大尺寸时,叶节点分割成两个叶节点。在一些实施例中,每个叶节点具有最小尺寸。当叶节点在最小尺寸之下时,叶节点与一个或多个其它叶节点组合。在一些实施例中,每个非叶节点(例如,根节点或内部节点)具有最大子节点数量。当叶节点的分割导致非叶节点具有多于最大数量的子节点时,将非叶节点分割以适应额外的子节点。在一些实施例中,每个非叶节点(例如,根节点或内部节点)具有最小子节点数量。当组合两个或多个叶节点导致非叶节点具有小于最小数量的子节点时,非叶节点与一个或多个其它非叶节点组合以适应减少数量的子节点。分层数据结构可以附加地符合与B-树、B+树、B*树或其它分层数据结构相关联的规则的一些或全部。
在一些实施例中,叶节点包含位置信息,诸如所储存的数据的逻辑块地址(LBA)。例如,叶节点308将LBA储存在报头(header)字段321中(例如,叶节点308的格式包含用于储存逻辑块地址值的报头字段321)。在说明性示例中,叶节点308(例如,在节点报头321中或者节点308的第一条目322中)储存0的LBA,并且叶节点310(例如,在节点报头331中或节点310的第一条目328中)储存508的LBA,指示例如大于或等于0且小于508的LBA的条目储存在叶节点308中。
在一些实施例中,叶节点308-320(例如,叶节点308)的相应叶节点包含一个或多个条目,其包含指示所储存的数据的物理位置(例如,由储存介质130所储存的数据的物理地址)。在一些实施例中,条目的位置信息可以是包含所储存的数据的LBA和相同数据的物理地址的映射信息。数据的物理地址有时称为物理块地址(PBA)。然而,需要注意到的是,物理块地址(PBA)通常不指向(也不对应于)储存介质130中的整个块(即,擦除块),而是指向储存介质130中的储存对应的逻辑块地址的数据的位置。逻辑块地址典型地对应于比非易失性储存器的整个擦除块小得多的数据单元(例如,1KB),典型的逻辑块尺寸的范围从512字节到8KB。为了便于解释,在以下提供的示例中的一些中使用了1KB的逻辑块尺寸。
图3A展示了分层数据结构300,其中叶节点308-320都是第一类型的叶节点。第一(叶)类型的叶节点在本文中也称为“第一类型的叶”。在一些实施例中,第一类型的叶节点的条目包含所储存的数据的长度。在说明性示例中,叶节点308包含条目322-326。叶节点308的相应条目包含LBA、长度(“len”)和PBA,或者更一般地包含逻辑地址、长度和物理地址。对于在储存介质130的可选择部分131中储存的数据,PBA指示可选择部分131的物理地址,长度指示在可选择部分131处储存(或开始于可选择部分131处)的数据的长度,并且LBA指示对应于在可选择部分131处储存的数据的逻辑地址。例如,叶308的条目324包含分别储存1、2和1000的值的字段LBA、len和PBA。在该示例中,条目324指示在储存介质130的PBA1000处开始储存的具有2个逻辑块的长度(例如,2KB)的数据。在生成存储器请求的各种模块和/或装置(例如,应用213、附加模块125、管理模块121等)中,使用LBA来标识在储存介质130中所储存和/或要储存的数据。分层数据结构300的叶中的条目提供LBA与PBA之间的映射。例如,条目324提供LBA 8与PBA1000之间的映射。类似地,叶310的条目328指示在储存介质130的PBA4000处储存的具有一个逻辑块(例如,1KB)的长度的数据,并且条目328提供LBA508与PBA4000之间的映射。
在一些实施例中,通过选择性地使用不同于条目322-326的格式的第二条目格式来减少由分层数据结构224所消耗的储存空间的量。为了减少分层数据结构224所消耗的存储空间,当满足各种转换条件时,将具有第一类型的条目的相应叶(例如,叶310)转换为具有第二类型的条目的叶。
图3B示出了根据一些实施例的分层数据结构400的示例。在图3B中,图3A的分层数据结构300示出为处于替代状态,在该替代状态中叶310已经从第一类型的叶转换为第二类叶410。已转换的叶在本文中也被称为“第二叶类型的叶”和“第二类型的叶”。在说明性示例中,已转换的叶410包含条目352-358,在本文中有时称为PBA条目或所映射的条目。已转换的叶410的相应的所映射的条目(例如,条目352)包含PBA。例如,条目352、356和358分别指示在物理块地址PBA 4000、PBA 5080和PBA 6120处储存的数据。条目354没有被映射,指示不再(例如,由计算机系统110、应用213、附加模块125、管理模块121等)使用该块。
已转换的叶的条目具有固定的长度,并且条目典型地不储存长度信息。例如,在图3B中,已转换的叶410的每个PBA值指示具有固定长度(例如逻辑块的长度(例如1KB))的数据的位置。
因为已转换的叶的条目是固定长度的PBA条目,所以对应于已转换的叶中的第一PBA条目的LBA可从由已转换的叶所储存的单个起始点LBA确定(例如,在诸如由已转换的叶410所储存的LBA 508的已转换的叶的节点报头331中,或者在定位于例如在已转换的叶的LBA条目之前的LBA条目350中)。例如,通过将与叶节点410中的条目356的位置对应的整数(例如,2)添加到起点LBA 508来确定条目356的LBA,以为条目356产生510的LBA。
图4示出了仅使用第一类型的叶的分层数据结构的计算的性能值与使用第一类型的叶和第二类型的叶的分层数据结构的计算的性能值的比较。对于具有4KB格式(例如,页和逻辑块)尺寸的装置来计算图4中所示的数据。与分层数据结构404相比,随着写入到装置的数据的平均块尺寸降低到格式尺寸的两倍之下(即,在8KB之下),分层数据结构402的数据使用以增加的速率增长。图4展示了可以通过使用第一类型的叶和第二类型的叶两者的混合分层数据结构(诸如图3B中所示的分层数据结构)来实现节省数据使用。
图5A-图5C示出了根据一些实施例的储存元数据的方法500的流程图表示。在一些实施例中,方法500包含在储存系统(例如,数据储存系统100)的计算装置(例如,储存控制器124)处接收(502)要由储存系统所储存的数据的指示,储存系统的计算装置包含非易失性存储器(例如储存介质130)和分层数据结构(例如,分层数据结构模块224)。例如,储存控制器124接收指定要储存的数据的写入命令或指令。(例如,响应于从由计算机系统110执行的应用213接收的指令)由数据写入模块220进行用于储存所指定的数据的相应写入操作。写入操作将数据(例如,从计算机系统110接收的数据)储存到储存介质130。在一些实施例中,储存控制器124接收指示分配给要在储存介质130中储存的数据的逻辑位置(例如,LBA)的信息。
在一些实施例中,方法500包含从多个叶(例如,图3B的叶308、410和314-320)中选择(504)叶(例如,图3B的叶308)以储存要储存的数据的位置信息。所选择的叶具有第一叶类型。例如,如图3B中所示的叶308是具有第一叶类型的叶。第一叶类型的叶包含指示在非易失性存储器(储存介质130)中储存的可变长度的数据的位置的条目。例如,如关于图3A和图3B所讨论的,因为第一类型的叶的条目储存可变长度的数据,第一类型的叶308的条目322-326(图3A)和第一类型的叶310的条目328(图3A)包含具有长度字段(“len”)的条目,用于储存指示所储存的数据的长度的值。
在一些实施例中,方法500包含使用至少一个第一类型到第二类型标准来确定(506)是否将所选择的叶(例如,如图3A中所示的叶310)转换为已转换的叶(例如,如图3B中所示的叶410)。已转换的叶具有第二叶类型。第二类型的叶包含指示在非易失性存储器中储存的固定长度的数据的位置的条目。例如,如图3B中所示的叶410包含条目352、356和358,其中的每一个指示在储存介质130中储存的固定长度的数据的量(例如,通常在512字节与8KB之间的固定量)的PBA。
在一些实施例中,分层数据结构400包含(508)第一叶类型的至少一个叶(例如,如图3B中所示的叶308)和第二叶类型的至少一个叶(例如,如图3B中所示的叶410)。第二叶类型的叶储存基本逻辑地址(例如,叶410的LBA 508)和固定尺寸的条目的序列(例如,如图3B中所示的条目352、356、358)。所映射的位置的每个固定尺寸的条目352、356、358包含用于储存PBA值的PBA字段。在一些环境(cicumstance)下或在一些实施例中,第二叶类型的固定尺寸的条目指示储存介质130中的所储存的数据的连续块。然而,更一般地,第二叶类型的固定尺寸的条目对应于逻辑地址空间(例如,由计算机系统110使用的逻辑地址,图1)中的连续块,其从叶的基本逻辑地址处或与叶中第一所映射的条目相关联的逻辑地址处开始。
如以上关于506所讨论的,使用至少一个第一类型到第二类型标准来确定是否将所选择的叶转换为已转换的叶。在一些实施例中,至少一个第一类型到第二类型标准包含(510)根据以下而满足的标准:指示插入到所选择的叶中(例如,如图3A中所示的叶310)将导致所选择的叶进行分割。例如,当1)所选择的叶含有对于分层数据结构的第一类型的叶指定的最大数量的条目时以及2)不能将条目插入到所选择的叶的相邻页中时,插入到所选择的叶中将导致所选择的叶分割的指示发生。在一些实施例中,第一类型的叶的最大条目数量是例如508个条目(例如,当分层数据结构具有4KB叶节点尺寸,并且第一类型的叶条目的格式包含24位LBA、8位长度和32位PBA时)。在各种实施例中,第一类型的叶的最大条目数量是在200到1000的范围内的值,诸如451、406、369或338。在如图3A中所示的叶310是所选择的叶的说明性示例中,当满足以上所讨论的标准(1)和(2)时(换言之,当叶310是满的(即,含有如对于分层数据结构400的叶所限定的最大数量的条目)时),并且当叶310不能将其的条目中的一个移动到相邻叶(例如,不能将条目328移动到叶308或叶314)时,插入到叶310中将导致叶310进行分割。在一些实施例中,当相邻叶(例如,具有比叶310中所映射的条目的逻辑地址更低的逻辑地址的“向左”的(如果有)相邻叶)时以及具有比叶310中所映射条目的逻辑地址更高的逻辑地址的“向右”的(如果有)相邻叶)是满的时,叶310不能将它的条目中的一个移动到相邻叶。
一些实施例中,至少一个第一类型到第二类型标准包含(512)根据以下满足的标准:1)确定a)所选择的叶的指示要储存的数据的位置的潜在新条目和b)所选择的叶中的现存条目(如果有)的总尺寸,以及2)确定所确定的总尺寸小于或等于第二叶类型的叶的所有条目的最大尺寸。例如,当以下为真时满足标准:
如果条目[到来的].LBA>=条目[第一].LBA:
则条目[到来的].LBA +条目[到来的].len-条目[第一].LBA≤Max,
如果条目[到来的].LBA<条目[第一].LBA:
则条目[最后].LBA +条目[最后].len-条目[到来的].LBA ≤Max
其中Max是第二类型的叶的最大条目数量。如所示,取决于到来的的LBA比叶中的第一LBA更低还是更高,标准的数学表示不同。第二类型的叶的最大条目数量可以是在200到2000个条目范围内的值,例如,当32位PBA值储存在每个条目中时为1016个条目,或者当40位PBA值储存在每个条目中时为812个条目,等等。
在说明性示例中,接收的数据的到来的条目具有LBA 1300和长度8。如图3A中所示的叶310中的第一条目328具有LBA508。当Max=812时,因为(1300+8)-(508)小于812,因此满足关于操作512(图5A)所描述的。
在各种实施例中,仅当如关于操作510所描述的第一类型到第二类型标准以及如关于操作512所描述的第一类型到第二类型标准均满足时,才将第一类型的叶转换为第二类型的叶。
在一些实施例中,响应于确定将所选择的叶转换为已转换的叶,方法500将要储存的数据的第一位置信息储存(514)在已转换的叶(例如,如图3B中所示出的叶410)中。
在一些实施例中,第一位置信息包含(516)要储存的数据的PBA。例如,如图3B中所示的叶410的条目358包含指示要储存的数据在存储器130中的位置的PBA(诸如可选择部分131的PBA)。作为PBA储存在叶410的条目358中的值6120是要储存的数据的第一位置信息的示例。在各种实施例中,已转换的叶的条目不包含要储存的数据的长度元数据。因为已转换的叶中的条目的PBA字段具有固定尺寸(例如,限定了分层数据结构,使得32位PBA字段用于所有已转换的叶的条目),所以在已转换的叶的条目中不需要包含要储存的数据的长度元数据。通过使用具有储存位置信息的已转换的叶而不储存要储存的数据的长度元数据的条目,在一些情况下,诸如当将可变尺寸的数据写入存储器包含许多小尺寸的写入时,分层数据结构的存储器使用减少。
在一些实施例中,响应于确定不转换所选择的叶,方法500将要储存的数据的第二位置信息储存(518)在所选择的叶(例如,如图3A中所示出的叶310)中。
在一些实施例中,第二位置信息包含(520)要储存的数据的PBA以及以下至少一个:要储存的数据的LBA(即,密钥)或要储存的数据的长度的指示。在各种实施例中,第二位置信息包含LBA、长度和PBA。例如,如图3A中所示,在所选择的叶310的条目328中储存的第二位置信息包含LBA(508)、长度(2)和PBA(4000)。
在一些实施例中,方法500包含使用至少一个第二类型到第一类型标准来确定(522)是否将第二类型的叶(例如,如图3B中所示的叶410)还原成第一叶类型的新叶(例如,如图3A中所示的叶310)。在一些实施例中,如以下关于操作(526)和(528)所讨论的,在处理触发条件之后施加第二类型到第一类型标准。
在一些实施例中,第二叶类型的叶具有第一数量的位置的条目,并且至少一个第二类型到第一类型标准包含(524)根据以下满足的标准:确定第一类型的新叶具有足够的空间以包含由第二叶类型的条目所指示的所有所映射的位置的条目加上预定的裕度。例如,第二类型的叶可以包含分别由条目352、354和358(图3B)所指示的PBA4000、5080和6120的条目。在图3B中所示的示例中,如果第一叶类型的最大条目数量超过储存用于PBA4000、5080和6120的映射信息所需要的条目的数量足够的裕度(例如,为第一类型的叶中的一个附加条目留出可用空间),则满足第二类型到第一类型标准。
在一些实施例中,如关于操作522所讨论的,响应于要被储存系统删除或未映射的数据的指示,发生(526)确定是否将第二类型的叶还原成第一类型的新叶。第二类型的叶(例如图3B中所示的叶310)含有要删除或未映射的数据的位置信息(例如,如条目352中指示的PBA)。例如,通过删除——诸如由数据擦除模块222进行的删除(例如,响应于从由计算机系统110执行的应用213接收到的指令),来触发将第二类型的叶还原成第一类型的新叶。
在一些实施例中,如关于(522)所讨论的,响应于要被储存系统覆写的数据的指示,发生(528)确定是否将第二类型的叶还原成第一类型的新叶。第二类型的叶(例如,图3B中所示的叶310)含有要被覆写的数据的位置信息(例如,如条目352中指示的PBA)。例如,通过覆写——诸如由数据写入模块220进行的覆写(例如,响应于从由计算机系统110执行的应用程序213接收到的指令),来触发将第二类型的叶还原成第一类型的新叶。
在一些实施例中,由储存系统100的储存装置120进行(530)以下中一个或多个:在已转换的叶中接收、选择、确定、储存、或者在所选择的叶中储存(例如,由管理模块121-1进行)。储存装置120将要储存的数据储存在例如储存介质130中。
在一些实施例中,由储存系统100的一个或多个子系统进行(532)以下中的一个或多个:在已转换的叶中接收、选择、确定、储存、或在所选择的叶中储存(例如,由计算机系统110的管理模块121-2进行)。储存装置120将要储存的数据储存在例如储存介质130中。
半导体存储器装置包含易失性存储器装置,诸如动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”)装置;非易失性存储装置,诸如电阻式随机存取存储器(“ReRAM”)、可擦除可编程只读存储器(“EEPROM”)、闪速存储器(也可以认为是EEPROM的子集)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”);以及其它能够储存信息的半导体元件。每种类型的存储器装置可以具有不同的配置。例如,闪速存储器装置可以配置为NAND或NOR配置。
位于基板内和/或基板上方的半导体存储器元件可以以二维或三维布置,诸如二维存储器结构或三维存储器结构。
术语“三维存储器装置”(或3D存储器装置)在本文中限定为意指具有存储器元件的多个存储器层或多个级(例如,有时称为多个存储器装置级)的存储器装置,包含以下任一者:具有单片或非单片3D存储器阵列的存储器装置;或者两个或多个2D和/或3D存储器装置,其封装在一起以形成堆叠芯片存储器装置。
本领域技术人员将认识到,本发明不限于所描述的二维和三维结构,而是覆盖了在本文中描述的本发明的精神和范围内以及如本领域技术人员所理解的所有相关存储器结构。
将理解,虽然术语“第一”、“第二”等可以在本文中用于描述各种元件,但是这些元件不应该受这些术语限制。这些术语仅用于区分一个元件与另一个元件。例如,第一储存装置可以限定为第二储存装置,并且类似地,第二储存装置可以限定为第一储存装置,而不改变该描述的含义,只要将所有“第一储存装置”的所有出现一致地重命名,并且将“第二储存装置”的所有出现一致地重命名。第一储存装置和第二储存装置都是储存装置,但是它们不是相同的储存装置。
本文中使用的术语仅用于描述特定实施例的目的,而不旨在限制权利要求。如在实施例和所附权利要求的描述中所使用的,除非上下文另外清楚地指出,否则单数形式“一”、“一个”和“该”旨在也包含复数形式。还应当理解,如本文中所使用的术语“和/或”是指并且包含一个或多个相关联的所列项目的任何和所有可能的组合。将进一步理解的是,当在本说明书中使用时,术语“包括(comprises)”和/或“包含(comprising)”指定所述特征、整体、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其组合。
如本文中所使用的,取决于上下文,术语“如果”可以被解释为意指“当……时”或“一旦”或“响应于确定”或“根据确定”或“响应于检测到”所陈述的先决条件是真。类似地,短语“如果确定[所陈述的先决条件为真]”或“如果[所陈述的先决条件为真]”或“当[所陈述的先决条件为真]时”可以解释为意指“一旦确定”或“响应于确定”或“根据确定”或“一旦检测到”或“响应于检测到”所陈述的先决条件为真。
为了解释的目的,前面的描述已经参考具体实施例进行了描述。然而,以上的说明性讨论并非旨在穷尽或将权利要求限制为所公开的确切形式。鉴于以上教导,许多修改和变化是可能的。实施例被选择和描述为以便最佳地解释操作原理和实际应用,从而使能本领域的其它技术人员。
Claims (21)
1.一种储存元数据的方法,所述方法包括:
在包含非易失性存储器和分层数据结构的储存系统的计算装置处,其中所述分层数据结构包含多个叶:
接收要由所述储存系统储存的数据的指示;
从所述多个叶选择叶,以储存要储存的数据的位置信息,其中所选择的叶具有第一叶类型且包含具有相同长度的条目,其中所述第一叶类型的叶包含指示在所述非易失性存储器中储存的可变长度的数据的位置的条目;
使用至少一个第一类型到第二类型标准来确定是否将所述所选择的叶转换为已转换的叶,其中所述已转换的叶具有第二叶类型,其中第二类型的叶包含指示在所述非易失性存储器中储存的固定长度的数据的位置的条目;
响应于确定将所述所选择的叶转换为已转换的叶,将所述要储存的数据的第一位置信息储存在所述已转换的叶中;并且
响应于确定不转换所述所选择的叶,将所述要储存的数据的第二位置信息储存在所述所选择的叶中。
2.如权利要求1所述的方法,其中所述第一位置信息包含所述要储存的数据的物理地址,并且所述第二位置信息包含所述要储存的数据的物理地址以及以下中的至少一个:
所述要储存的数据的逻辑块地址,或
所述要储存的数据的长度的指示。
3.如权利要求1所述的方法,其中所述分层数据结构包含所述第一叶类型的至少一个叶和所述第二叶类型的至少一个叶,其中所述第二叶类型的至少一个叶储存基本逻辑地址和固定尺寸的条目的序列,其中所映射的位置的每个固定尺寸的条目包含物理块地址。
4.如权利要求1-3中任一项所述的方法,其中至少一个第一类型到第二类型标准包含根据以下满足的标准:指示插入到所述所选择的叶中将导致所述所选择的叶进行分割。
5.如权利要求1-3中任一项所述的方法,其中所述至少一个第一类型到第二类型标准包含根据以下满足的标准:
确定以下的总尺寸:
所述所选择的叶的潜在新条目,其指示所述要储存的数据的位置,和
所述所选择的叶中的如果有的现存条目;以及
确定所确定的总尺寸小于或等于所述第二叶类型的叶的所有条目的最大尺寸。
6.如权利要求1-3中任一项所述的方法,还包括:
使用至少一个第二类型到第一类型标准来确定是否将所述第二类型的叶还原成所述第一叶类型的新叶。
7.如权利要求6所述的方法,其中所述第二叶类型的叶具有第一数量的位置的条目,并且所述至少一个第二类型到第一类型标准包含根据以下满足的标准:确定所述第一类型的新叶具有足够的空间来包含由所述第二叶类型的叶的条目所指示的所有所映射的位置的条目加上预定的裕度。
8.如权利要求6所述的方法,其中响应于要被所述储存系统删除或未映射的数据的指示,确定是否将所述第二类型的叶还原成所述第一类型的新叶发生,并且其中所述第二类型的叶含有要删除或未映射的数据的位置信息。
9.如权利要求6所述的方法,其中响应于要被所述储存系统覆写的数据的指示,确定是否将所述第二类型的叶还原成所述第一类型的新叶发生,并且其中所述第二类型的叶含有要覆写的数据的位置信息。
10.如权利要求1-3中任一项所述的方法,其中由所述储存系统的储存装置进行以下中的一个或多个:在所述已转换的叶中接收、选择、确定、储存、或者在所述所选择的叶中储存,其中所述储存装置储存所述要储存的数据。
11.如权利要求1-3中任一项所述的方法,其中由与储存装置不同的所述储存系统的一个或多个子系统进行以下中的一个或多个:在所述已转换的叶中接收、选择、确定、储存、或者在所述所选择的叶中储存,其中所述储存装置储存所述要储存的数据。
12.一种储存装置,包括:
非易失性存储器;以及
控制器,所述控制器具有一个或多个处理器和储存一个或多个程序的控制器存储器,当由所述一个或多个处理器执行时,所述一个或多个程序使得所述储存装置:
接收要由所述储存装置储存的数据的指示;
从多个叶选择叶,以储存要储存的数据的位置信息,其中所选择的叶具有第一叶类型且包含具有相同长度的条目,其中所述第一叶类型的叶包含指示在所述非易失性存储器中储存的可变长度的数据的位置的条目;
使用至少一个第一类型到第二类型标准来确定是否将所述所选择的叶转换为已转换的叶,其中所述已转换的叶具有第二叶类型,其中第二类型的叶包含指示在所述非易失性存储器中储存的固定长度的数据的位置的条目;
响应于确定将所述所选择的叶转换为已转换的叶,将所述要储存的数据的第一位置信息储存在所述已转换的叶中;并且
响应于确定不转换所述所选择的叶,将所述要储存的数据的第二位置信息储存在所述所选择的叶中。
13.如权利要求12所述的储存装置,其中所述所选择的叶包括在所述非易失性存储器中储存的分层数据结构的叶节点,并且所述控制器包含分层数据结构模块,所述分层数据结构模块在所述分层数据结构内储存和撷取信息。
14.如权利要求12所述的储存装置,其中所述第一位置信息包含所述要储存的数据的物理地址,并且所述第二位置信息包含所述要储存的数据的物理地址以及以下中的至少一个:
所述要储存的数据的逻辑块地址,或
所述要储存的数据的长度的指示。
15.如权利要求12-14中任一项所述的储存装置,其中分层数据结构包含所述第一叶类型的至少一个叶和所述第二叶类型的至少一个叶,其中所述第二叶类型的至少一个叶储存基本逻辑地址和固定尺寸的条目的序列,其中所映射的位置的每个固定尺寸的条目包含物理块地址。
16.如权利要求12-14中任一项所述的储存装置,其中至少一个第一类型到第二类型标准包含根据以下满足的标准:指示插入到所述所选择的叶中将导致所述所选择的叶进行分割。
17.如权利要求12-14中任一项所述的储存装置,其中至少一个第一类型到第二类型标准包含根据以下满足的标准:
确定以下的总尺寸:
所述所选择的叶的潜在新条目,其指示所述要储存的数据的位置,和
所述所选择的叶中的如果有的现存条目;以及
确定所确定的总尺寸小于或等于所述第二叶类型的叶的所有条目的最大尺寸。
18.如权利要求12-14中任一项所述的储存装置,其中当由所述一个或多个处理器执行时,所述一个或多个程序还导致所述储存装置使用至少一个第二类型到第一类型标准来确定是否将所述第二类型的叶还原成所述第一叶类型的新叶。
19.如权利要求18所述的储存装置,其中所述第二叶类型的叶具有第一数量的位置的条目,并且所述至少一个第二类型到第一类型标准包含根据以下满足的标准:确定所述第一类型的新叶具有足够的空间来包含由所述第二叶类型的叶的条目所指示的所有所映射的位置的条目加上预定的裕度。
20.一种非暂时性计算机可读储存介质,所述非暂时性计算机可读储存介质储存为由储存装置的控制器的一个或多个处理器的执行所配置的一个或多个程序,所述储存装置包含非易失性存储器,所述一个或多个程序包含指令,当由所述一个或多个处理器执行时,所述指令使得所述储存装置:
接收要由所述储存装置储存的数据的指示;
从所述多个叶选择叶,以储存要储存的数据的位置信息,其中所述所选择的叶具有第一叶类型且包含具有相同长度的条目,其中所述第一叶类型的叶包含指示在所述非易失性存储器中储存的可变长度的数据的位置的条目;
使用至少一个第一类型到第二类型标准来确定是否将所述所选择的叶转换为已转换的叶,其中所述已转换的叶具有第二叶类型,其中所述第二类型的叶包含指示在所述非易失性存储器中储存的固定长度的数据的位置的条目;
响应于确定将所述所选择的叶转换为已转换的叶,将所述要储存的数据的第一位置信息储存在所述已转换的叶中;并且
响应于确定不转换所述所选择的叶,将所述要储存的数据的第二位置信息储存在所述所选择的叶中。
21.如权利要求20所述的非暂时性计算机可读储存介质,其中所述所选择的叶包括在所述非易失性存储器中储存的分层数据结构的叶节点,并且所述控制器包含分层数据结构模块,所述分层数据结构模块在所述分层数据结构内储存和撷取信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/929,171 US9619165B1 (en) | 2015-10-30 | 2015-10-30 | Convertible leaf memory mapping |
US14/929,171 | 2015-10-30 | ||
PCT/US2016/051717 WO2017074585A1 (en) | 2015-10-30 | 2016-09-14 | Convertible leaf memory mapping |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027764A CN108027764A (zh) | 2018-05-11 |
CN108027764B true CN108027764B (zh) | 2021-11-02 |
Family
ID=56979713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680054671.3A Active CN108027764B (zh) | 2015-10-30 | 2016-09-14 | 可转换的叶的存储器映射 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9619165B1 (zh) |
EP (1) | EP3338193B1 (zh) |
CN (1) | CN108027764B (zh) |
WO (1) | WO2017074585A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10467261B1 (en) | 2017-04-27 | 2019-11-05 | Intuit Inc. | Methods, systems, and computer program product for implementing real-time classification and recommendations |
US10528329B1 (en) | 2017-04-27 | 2020-01-07 | Intuit Inc. | Methods, systems, and computer program product for automatic generation of software application code |
US10467122B1 (en) | 2017-04-27 | 2019-11-05 | Intuit Inc. | Methods, systems, and computer program product for capturing and classification of real-time data and performing post-classification tasks |
US10705796B1 (en) | 2017-04-27 | 2020-07-07 | Intuit Inc. | Methods, systems, and computer program product for implementing real-time or near real-time classification of digital data |
US11126624B2 (en) | 2017-06-12 | 2021-09-21 | Western Digital Technologies, Inc. | Trie search engine |
US11068455B2 (en) * | 2019-04-26 | 2021-07-20 | EMC IP Holding Company LLC | Mapper tree with super leaf nodes |
CN111984650A (zh) * | 2020-08-20 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种树结构数据的存储方法、系统及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1781102A (zh) * | 2003-04-30 | 2006-05-31 | 诺基亚有限公司 | 低速存储器判定树 |
US8209307B2 (en) * | 2009-03-31 | 2012-06-26 | Commvault Systems, Inc. | Systems and methods for data migration in a clustered file system |
CN102708073A (zh) * | 2010-11-10 | 2012-10-03 | 株式会社东芝 | 存储装置以及数据处理方法 |
CN103370698A (zh) * | 2010-12-15 | 2013-10-23 | 桑迪士克科技股份有限公司 | 用于非易失性存储器系统的辅助接口 |
CN104166628A (zh) * | 2013-05-17 | 2014-11-26 | 华为技术有限公司 | 管理内存的方法、装置和系统 |
WO2015152830A1 (en) * | 2014-04-03 | 2015-10-08 | Agency For Science, Technology And Research | Method of maintaining data consistency |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6915291B2 (en) | 2002-06-07 | 2005-07-05 | International Business Machines Corporation | Object-oriented query execution data structure |
US7478096B2 (en) | 2003-02-26 | 2009-01-13 | Burnside Acquisition, Llc | History preservation in a computer storage system |
US7716180B2 (en) | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
US20070174309A1 (en) | 2006-01-18 | 2007-07-26 | Pettovello Primo M | Mtreeini: intermediate nodes and indexes |
US9002795B2 (en) | 2006-01-26 | 2015-04-07 | Seagate Technology Llc | Object-based data storage device |
KR100922389B1 (ko) | 2007-07-04 | 2009-10-19 | 삼성전자주식회사 | 플래시 메모리를 위한 색인 스킴 |
JP4535117B2 (ja) * | 2007-11-06 | 2010-09-01 | ソニー株式会社 | メモリ装置、メモリ管理方法、およびプログラム |
US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
US8700670B2 (en) | 2010-04-12 | 2014-04-15 | Symantec Corporation | Insert optimization for B+ tree data structure scalability |
US8433695B2 (en) | 2010-07-02 | 2013-04-30 | Futurewei Technologies, Inc. | System architecture for integrated hierarchical query processing for key/value stores |
US8874515B2 (en) | 2011-04-11 | 2014-10-28 | Sandisk Enterprise Ip Llc | Low level object version tracking using non-volatile memory write generations |
US9170938B1 (en) | 2013-05-17 | 2015-10-27 | Western Digital Technologies, Inc. | Method and system for atomically writing scattered information in a solid state storage device |
WO2015047398A1 (en) | 2013-09-30 | 2015-04-02 | Hewlett-Packard Development Company, L.P. | Overlays to modify data objects of source data |
US9575890B2 (en) | 2014-02-27 | 2017-02-21 | International Business Machines Corporation | Supporting atomic accumulation with an addressable accumulator |
US10956050B2 (en) | 2014-03-31 | 2021-03-23 | Sandisk Enterprise Ip Llc | Methods and systems for efficient non-isolated transactions |
US9916356B2 (en) | 2014-03-31 | 2018-03-13 | Sandisk Technologies Llc | Methods and systems for insert optimization of tiered data structures |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
-
2015
- 2015-10-30 US US14/929,171 patent/US9619165B1/en active Active
-
2016
- 2016-09-14 WO PCT/US2016/051717 patent/WO2017074585A1/en active Application Filing
- 2016-09-14 CN CN201680054671.3A patent/CN108027764B/zh active Active
- 2016-09-14 EP EP16770192.9A patent/EP3338193B1/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1781102A (zh) * | 2003-04-30 | 2006-05-31 | 诺基亚有限公司 | 低速存储器判定树 |
US8209307B2 (en) * | 2009-03-31 | 2012-06-26 | Commvault Systems, Inc. | Systems and methods for data migration in a clustered file system |
CN102708073A (zh) * | 2010-11-10 | 2012-10-03 | 株式会社东芝 | 存储装置以及数据处理方法 |
CN103370698A (zh) * | 2010-12-15 | 2013-10-23 | 桑迪士克科技股份有限公司 | 用于非易失性存储器系统的辅助接口 |
CN104166628A (zh) * | 2013-05-17 | 2014-11-26 | 华为技术有限公司 | 管理内存的方法、装置和系统 |
WO2015152830A1 (en) * | 2014-04-03 | 2015-10-08 | Agency For Science, Technology And Research | Method of maintaining data consistency |
Non-Patent Citations (2)
Title |
---|
Use of data assimilation technique for improveing the retrieval of leaf area index in time-series in alpine wetlands;Xingwen Quan et al.;《2012 IEEE International Geoscience and Remote Sensing Symposium》;20121112;全文 * |
以B+树和KD树结构存储多维索引的数据检索性能分析;刘勇 等;《科技信息》;20100705;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108027764A (zh) | 2018-05-11 |
EP3338193B1 (en) | 2020-08-05 |
US9619165B1 (en) | 2017-04-11 |
US20170123705A1 (en) | 2017-05-04 |
EP3338193A1 (en) | 2018-06-27 |
WO2017074585A1 (en) | 2017-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200233585A1 (en) | Data relocation in hybrid memory | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
CN107077427B (zh) | 跨电源周期来跟踪对写入命令和解除映射命令的混合 | |
CN107003942B (zh) | 对用于增强存储设备的性能和持久性的解除映射命令的处理 | |
CN109800180B (zh) | 用于地址映射的方法和存储器系统 | |
US9817752B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
KR20200022118A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
US11249897B2 (en) | Data storage device and operating method thereof | |
US10289340B2 (en) | Coalescing metadata and data writes via write serialization with device-level address remapping | |
US10922011B2 (en) | Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof | |
US11301393B2 (en) | Data storage device, operation method thereof, and storage system including the same | |
US10732877B1 (en) | Smart mapping table update post background operations | |
US20160147468A1 (en) | Data Integrity Enhancement to Protect Against Returning Old Versions of Data | |
KR20200020464A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
US20130024608A1 (en) | Flash memory apparatus | |
US20160054930A1 (en) | Nonvolatile memory systems configured to use deduplication and methods of controlling the same | |
KR20200043676A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
US11650929B2 (en) | Memory system and operation method thereof | |
US10896125B2 (en) | Garbage collection methods and memory systems for hybrid address mapping | |
US10133764B2 (en) | Reduction of write amplification in object store | |
KR20200116375A (ko) | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 | |
US9081664B2 (en) | Memory system capable of preventing data destruction | |
US11934264B2 (en) | ECC parity biasing for Key-Value data storage devices | |
KR102653017B1 (ko) | 비휘발성 메모리 장치들 및 이를 제어하는 방법들 | |
US11657000B2 (en) | Controller and memory system including the same |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |