CN108009098A - 具有经压缩的正向映射的存储分层 - Google Patents
具有经压缩的正向映射的存储分层 Download PDFInfo
- Publication number
- CN108009098A CN108009098A CN201711022700.0A CN201711022700A CN108009098A CN 108009098 A CN108009098 A CN 108009098A CN 201711022700 A CN201711022700 A CN 201711022700A CN 108009098 A CN108009098 A CN 108009098A
- Authority
- CN
- China
- Prior art keywords
- direct mapping
- mapping
- entry
- storage
- data structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/1008—Correctness of operation, e.g. memory ordering
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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
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
背景技术
数据存储设备可以使用如可在O(log n)时间内或更快地搜索的正向映射等正向映射来将逻辑地址与存储分层上的物理位置关联以供主机设备使用。根据逻辑和物理地址范围的大小以及存储介质上数据的碎片化水平,表示正向映射的数据结构(比如,树或散列表)对于可用存储器空间来说可能增长得太大。对于具有有限存储器空间以及可能需要频繁更新正向映射的动态存储分层的单独存储设备,表示正向映射的数据结构的大小更有可能是个问题。
发明内容
一种数据存储设备包括存储分层和存储控制器,所述存储控制器可操作地耦合至所述存储分层并且被配置成通信地耦合至主机设备。所述存储控制器包括第一存储器,所述第一存储器可操作地耦合至所述存储控制器并且被配置用于存储替代数据结构。所述存储控制器进一步包括第二存储器,所述第二存储器可操作地耦合至所述存储控制器并且被配置用于存储正向映射,所述正向映射被配置用于将多个逻辑块地址映射到所述存储分层上的物理位置。所述存储控制器进一步包括筛选模块,所述筛选模块被配置用于基于包含在所述替代数据结构中的数据对所述正向映射进行筛选。所述存储控制器进一步包括压缩模块,所述压缩模块被配置用于压缩所述正向映射以便生成压缩正向映射。
提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本文还描述和叙述了其他实施方式。
附图说明
图1是用于管理具有压缩正向映射的存储分层的示例装置的框图。
图2是示例正向映射的中间压缩级别。
图3是具有里程碑逻辑块地址条目的示例压缩正向映射。
图4展示了用于更新正向映射的示例操作。
图5是对环形缓冲器中的压缩正向映射的筛选操作的示例简化图。
图6展示了筛选操作的示例操作。
图7展示了用于在筛选操作期间搜索和更新正向映射的示例操作。
具体实施方式
本公开涉及对存储分层上的逻辑和物理地址进行映射。从逻辑到物理地址的映射在本文中被称为正向映射。正向映射可以用于基于逻辑地址找到数据的物理地址以供主机设备用于访问数据。在具有非常大的存储器容量的数据存储系统上,可以使用可以提供对正向映射的可更新且可搜索表示的数据结构(例如,树、索引文件、散列表等)来表示正向映射。表示正向映射的数据结构的特性可以是搜索所述特性满足搜索度量,包括但不限于满足O(log n)或更好的对数搜索的搜索复杂度。具有这些能力的数据结构根据其大小而伴随有存储器占地面积成本,并且可能无法增长到大到足以将正向映射维持在对数据存储设备上的可用存储器的约束内。可能需要更多存储器以便存储表示正向映射的数据结构,其中,数据存储介质具有大范围的物理地址和/或其中,预计碎片化水平很大。为了使设备增大正向映射的大小并保留令人满意的搜索和更新能力,可用压缩正向映射(例如,使用哈夫曼码来压缩的正向映射)来代替数据结构以便减小与存储正向映射相关联的存储器占地面积,但是还构想了其他压缩方案或编码。
压缩正向映射可以保留搜索能力(比如,在对数时间内或以更好的方式进行搜索的能力),同时相比基于树或散列表的数据结构,占据较小的存储器占地面积。关于对压缩正向映射的修改,在一些情况下,如下文中更详细地描述的,有可能在不首先进行解压缩的情况下对本文中描述的正向映射进行更新。在不进行解压缩的情况下不可能改变压缩映射的情况下,可以对单独数据结构进行实例化和维持以便存储无法输入到压缩正向映射上的任何替代条目,所述数据结构在本文中被称为替代数据结构。可以在各种存储器结构(包括但不限于:静态缓冲器、环形缓冲器、动态存储器等和/或其任何组合)中实施压缩正向映射。
当替代条目的单独数据结构接近容量条件或刷新条件时,“筛选”操作可以对压缩正向映射进行解压缩(或者分段地或者全部地)、合并来自单独数据结构的替代条目、然后对正向映射进行再压缩并丢弃单独数据结构(或者一些条目或者全部)。正向映射在筛选操作期间保持可搜索,这是因为单独数据结构(或其子集)为了搜索目的而“滑动”进入到压缩正向映射的域中,同时对尚存较高优先序(可能地,最近实例化的)单独数据结构(其将在筛选操作期间和之后存储未来替代条目,直到其在下一个筛选操作中合并到正向映射中)做出任何新替代条目。筛选操作将分摊改变压缩列表的成本。筛选到压缩正向映射中的替代条目越多,筛选操作将更高效。
图1是用于管理具有压缩正向映射的存储分层的示例装置100的框图。装置100包括数据存储设备102,所述数据存储设备具有经由主机接口122将存储分层108通信地耦合至主机104的存储控制器106。在实施方式中,存储分层108是动态存储分层。存储控制器106提供用于允许主机104将数据存储到存储分层108中并从其中检索数据的机制。在实施方式中,存储分层108是数据高速缓存,包括但不限于:易失性随机存取存储器(RAM)存储介质(比如,DRAM)或非易失性RAM(比如,NAND闪存)。在另一种实施方式中,存储分层108是主数据存储设备,比如,旋转磁盘数据存储介质。
存储控制器106可以利用通信接口和协议(包括SATA、SCSI、eSATA、SAS、USB等)经由主机接口122与主机104通信。存储控制器106还包括功能模块110(比如,正向映射模块112、压缩模块114、更新模块116、筛选模块118、替代数据结构模块120、滑动模块126以及正向映射搜索模块130)。正向映射模块112生成将逻辑块地址与物理位置关联的正向映射。正向映射搜索模块130对正向映射进行搜索以便定位正向映射的与逻辑块地址相对应的区域。在实施方式中,搜索模块130被配置用于使用以下各项中的至少一项在最差的O(log n)时间内定位压缩正向映射的与逻辑块地址相对应的区域:索引文件、树、里程碑条目以及散列表。压缩模块114可以将正向映射重写成可压缩格式(例如,通过用逻辑块地址增量(△)来代替全宽逻辑块地址、为连续块数量添加值、移除可以从其他数据(比如,在此示例中,等于具有下降的二进制表示的低16位逻辑块地址的“文件编号”)中推断的任何数据、等等)。压缩模块114可以进一步根据各种压缩技术对可压缩正向映射进行压缩以便生成压缩正向映射。压缩模块114还可以作为筛选操作的一部分、搜索操作的一部分或为了将压缩正向映射准备好以便更新正向映射中的条目的目的而对压缩正向映射进行解压缩。更新模块116可以对正向映射、可压缩正向映射和/或压缩正向映射中的任何数据执行更新。例如,更新模块116可以通过将物理位置字段中的值编辑为指示压缩正向映射中的条目被删除的特殊值来将所述条目标记为删除。更新模块116可以进一步通过用等宽或较窄宽度位置来代替条目的物理位置字段中的值从而更新压缩正向映射中的物理位置字段。更新模块116可以进一步对解压缩正向映射或可压缩正向映射做出任何编辑。
存储控制器106可以进一步包括用于执行本文公开的筛选操作的筛选模块118。筛选模块118本身可以对压缩正向映射进行解压缩,或者其可以调用压缩模块114以便对压缩正向映射进行解压缩。筛选模块118可以执行如下文更加详细地解释的与筛选操作有关的其他功能,包括确定什么时候应当执行筛选操作、存储压缩或解压缩正向映射、对其进行复制、对其执行操作和/或将其移动到存储器124中或将其从所述存储器中移动。
存储控制器106可以包括替代数据结构模块120。替代数据结构模块120可以执行多项操作,包括使新替代数据结构实例化以供在筛选操作期间和之后使用、更新替代数据结构以便包括不适合于在不明显地对压缩正向映射进行解压缩的情况下在压缩正向映射上直接做出的条目或条目改变、向筛选模块118提供替代条目以供用于执行筛选操作、响应于来自主机的请求而搜索替代数据结构以及本文公开的其他操作。存储控制器106可以进一步包括滑动模块126。滑动模块126可以执行多项操作,包括在筛选操作期间将替代数据结构移动到压缩正向映射的域中以便促进在筛选操作期间搜索替代数据结构和压缩正向映射。存储控制器106可以进一步包括正向映射搜索模块130。正向映射搜索模块130可以对压缩、解压缩和/或筛选正向映射以及对替代数据结构执行搜索。例如,正向映射搜索模块可以经由主机接口122接受来自主机104的读取、写入和/或擦除请求,并且对压缩、解压缩和/或筛选正向映射以及对替代数据结构执行请求的操作。
存储控制器106还包括用于存储数据的存储器124和/或与本公开一致的功能模块110。在实施方式中,存储器124存储正向映射、压缩正向映射、替代数据结构和/或最近实例化的替代数据结构以供在筛选操作期间使用。存储控制器106进一步包括处理器128。处理器128可以执行存储控制器106的功能中的任何功能,包括本文公开的如由功能模块110中的任何功能模块执行的任何功能。处理器128可以执行存储在非瞬态计算机可读介质上的指令以便执行本文中公开的存储控制器106功能中的任何功能。
存储控制器106的一个方面是数据存储设备102的操作相对于存储分层108的抽象化。例如,主机104可以通过参考由存储控制器106映射到根据与逻辑块寻址方案不同的物理寻址方案(例如,基于柱面、磁头、扇区、偏移、文件等的寻址方案)组织的物理地址上的逻辑块地址(LBA)来访问数据。存储控制器106可以使用供在筛选操作期间使用的正向映射、压缩正向映射、替代数据结构和/或最近实例化的替代数据结构来将LBA与存储分层108上的物理地址关联。当主机104根据数据的LBA地址发送对数据的数据访问请求时,存储控制器106可以将被请求LBA处的数据与物理地址关联并且可以在主机不知道被请求数据的物理位置的情况下经由主机接口122向主机104返回被请求数据。
图2是示例正向映射200的中间压缩级别。图2的示例通过介绍和示例的方式提供。还可以使用正向映射的其他中间压缩级别。解压缩正向映射202将第一列中的逻辑块地址与第二列中的物理位置关联。第一列中的每个条目包含逻辑块的完整地址,并且第二列中的每个条目包含与相同行中的逻辑块地址相对应的物理位置的文件和偏移值。用于描述物理位置的其他格式也是有可能的。与逻辑块地址相对应的物理位置的文件和偏移值仅仅是通过示例的方式。逻辑块的完整地址也被称为“全宽”地址。正向映射202仅包括某些逻辑块地址,因为正向映射202仅适用于逻辑块地址空间的子集。未包括在正向映射202中的其他逻辑块地址或者处于不同分层、层、高速缓存等中或者置于同一分层、层或高速缓存中,其方式为使得当前暗示了或以其他方式更简单地标识了物理位置。
当主机提交针对逻辑块地址的数据访问请求时,存储控制器可以根据正向映射202确定被请求逻辑块地址处的数据的物理位置并且可以经由主机接口向主机返回所述数据。在实施方式中,正向映射202可由需要比如针对固定大小数据存储介质的表示的最大数量物理条目组成。在另一种实施方式中,比如当更多数据存储介质被添加到由数据存储控制器处理的数据存储设备中时,正向映射202可以仅在大小上增大。
正向映射压缩方案可以包括用于准备解压缩正向映射202并输出可压缩正向映射206的第一操作204。相比于解压缩正向映射202,对于每行,可压缩正向映射206包括三列数据。可压缩正向映射206中呈现的数据的许多特性与解压缩正向映射202不同。首先,包含在可压缩正向映射的第一列中的信息包含或者全宽逻辑块地址或者逻辑块地址增量。可压缩正向映射206的第一行中的全宽逻辑块地址与解压缩正向映射202的第一列中的条目相同。
然而,可压缩正向映射206的第一列中的剩余行仅包含逻辑块地址增量,其意指映射中逻辑块距前一个逻辑块地址的距离。例如,正向映射206中包含数据的第二行(其处于第二压缩阶段)包含逻辑块地址增量列中的值3Ah。3Ah等于318h减去2DEh,即,解压缩映射202中的前两个逻辑块地址之差。类似地,可压缩映射206中包含数据的第三行中的条目是FD1Dh。FD1Dh等于10035h减去318h,即,解压缩映射202中的前两个逻辑块地址之差。正向映射206的这种特性准备利用这样一种事实:第一列中的逐渐增大的逻辑块地址之差比全宽逻辑块地址本身“窄”得多(就其在基数中的表示而言)。可替代地或另外地,逻辑块地址增量可能是相对于逻辑块地址加上前一个条目的长度(以连续块数量计)。
在某些情况下,可以保证比逻辑块地址更窄的逻辑块地址增量的特性为真。例如,如果存在足够密度的映射表条目(比如,当存在局限于某个逻辑块范围的大量表条目时),则在逻辑块寻址空间中,所有逻辑块地址增量不可能彼此距离非常远。换言之,映射越密,在逻辑块地址之间可用的空间将越少。如果映射足够密,则相比存储全宽逻辑块地址,仅存储逻辑块地址增量将节省空间。
可压缩正向映射206相比于解压缩正向映射202的另一种不同特性是被标记为连续块数量的新列。此列中的数据基于这样一种结论:物理上连续存储的连续逻辑块有可能是存储分层上的正向映射的共同特征。物理上连续存储的连续逻辑块有可能是因为将写入到存储分层中的数据转移通常具有起始逻辑块地址和长度。可压缩正向映射206包括被标记为连续块数量的附加列,用于反映在由逻辑块地址或逻辑块地址增量列中的条目指示的起始逻辑块之后物理上连续存储的连续逻辑块的数量,而不是使某个行专用于物理上连续存储的每个连续逻辑块(比如,解压缩正向映射202的第四和第五行)。在连续块数量列中大于1的任何条目都通过暗示接下来的(多个)逻辑块的位置来指示已经保存了多个行。
例如,在解压缩正向映射202中,第四和第五行指示存储在连续物理位置中的连续逻辑地址。通过指示具有地址增量11FEh的逻辑块之后的连续块数量为2,这两行已经被组合成了可压缩正向映射206中的单个行——以逻辑块地址增量11FEh开始的包含数据的第四行。虽然对存储在逻辑块地址0000000000011234h处的数据的主机请求不与可压缩正向映射206中的行相对应,但是尽管如此被请求数据的物理位置也可以从可压缩正向映射206的第四行中的信息推断出来(因为所述行中的连续块数量为2)。因此,将连续块数量列包括在可压缩正向映射206中允许省略数据行,并且由此在以上描述的情况下,减小了映射的大小。
解压缩映射202与可压缩正向映射206之间的又另一个不同特性是包含在第三列中的数据在每一行中指示逻辑块的物理位置。此列中的数据缺少在解压缩映射202中存在的“文件号”信息。在某些情况下,作为物理位置的示例方面,可以从此列中的数据中省略“文件号”信息。例如,如果文件号与全宽逻辑块地址的最高有效48位(即,前12个十六进制数字)相对应,则可以暗示而不是在表中明确列出文件号。
可以根据多种压缩技术进一步对示例中间阶段可压缩正向映射206进行压缩。在实施方式中,可以使用哈夫曼编码来对可压缩正向映射206进行压缩。在哈夫曼编码中,可以通过各种格式表示可压缩正向映射206中的条目。每个表条目的格式都可以在压缩表示中由哈夫曼前缀或类似压缩前缀指示。在可压缩正向映射206中,每一行的逻辑块地址增量字段、连续块数量字段以及物理位置字段将具有因条目而异的宽度,其中,“宽度”是指在特定基数中表示数据所需的数字的数量,即,数据的“基础”或者在位置编号系统中用于表示数据的唯一数字的数量。因为哈夫曼前缀本身还将由于其不同长度而需要不同的存储器量,所以较短的哈夫曼前缀码可以被选择用于较通常应用的映射表条目格式。随着正向映射表条目格式变得较不常见,可以使用较长的哈夫曼前缀。分配哈夫曼前缀的这种策略减小了存储压缩正向映射所需的存储器。
哈夫曼码的其他实施方式也可用于对可压缩正向映射206进行压缩。例如,哈夫曼前缀可以指定整个条目的格式包括针对逻辑块地址增量、连续块数量和物理位置的字段。可替代地,条目中的每个字段可以具有其自己的哈夫曼前缀。在另一种实施方式中,条目编码可以指示某个字段的值与表的压缩表示中的某个向后距离处的条目中的字段值具有某种关系。例如,一些逻辑上靠近的条目的物理位置可以具有简要描述的关系。在另一种实施方式中,压缩正向映射中的不同条目相对于正向映射中的其他条目可以包含不同字段。某些条目中缺少某些字段可以暗示那些字段在解压缩表示中的值,或者可以暗示其他某种信息,比如,如果某些字段确实不存在于某些条目中。在又另一种实施方式中,在一个压缩映射数据结构中表示不同数据存储分层的多个正向映射。
正向映射可以具有某些特性,比如,高效地接收对逻辑块地址到物理地址的映射的更新的能力或者高效地搜索正向映射的能力。一个特性可以是在对数时间内搜索正向映射的能力。如本文使用的,在对数时间内进行搜素是指受函数O(log n)界定的正向映射搜索算法的时间复杂度,其中,n是正向映射的条目的数量。可以在对数时间内搜索根据本公开的压缩正向映射,即使正向映射被压缩。在实施方式中,图3中展示的压缩正向映射300包括逻辑块地址的“块”(其中,“块”包括全宽逻辑块地址302(也被称为“块头”或里程碑)),随后是仅由逻辑块地址增量表示的有序逻辑块地址集合304。包括仅由通过里程碑条目(包括全宽逻辑块地址)分离的逻辑块地址增量表示的逻辑块地址的块可以改善在O(log n)时间内或以更好的方式搜索压缩正向映射的能力。图3的压缩正向映射仅仅是可以使用的压缩策略的示例;还可以使用其他压缩策略。在另一种实施方式中,动态存储器存储可以用于存储压缩正向映射。由于其与O(log n)搜索时间有关,所以里程碑条目可以可替代地通过索引文件或与压缩正向映射的剩余部分物理分离的其他数据结构来实施。
可以以二进制搜索方式搜索压缩正向映射300中的条目:搜索算法可以首先检查“块头”302以便定位包含被搜索条目的特定范围304,然后在特定范围304中搜索被搜索条目本身。通过选择仅由逻辑块地址增量表示的逻辑块地址的范围304中的条目的数量,可以建立定位逻辑块地址所需的压缩量上限。仅由里程碑302之间的逻辑块地址增量表示的逻辑块地址的范围304越大,定位条目所需的压缩界限越高。在实施方式中,“块头”或里程碑302保持被解压缩以便增大二进制搜索操作的效率,并且仅对由逻辑块地址增量表示的逻辑块地址的范围304进行压缩。在另一种实施方式中,对里程碑302和仅由逻辑块地址增量表示的逻辑块地址的范围304两者进行压缩。在又另一种实施方式中,对里程碑302和仅由逻辑块地址增量表示的逻辑块地址的范围304两者的解压缩不需要来自使用里程碑的初始索引“粗略”搜索之外的信息。里程碑可以存在以便允许在不必查询局部范围之外的内容的情况下或者在不必查询局部范围之外的重要内容的情况下对压缩列表的局部范围进行解压缩。
压缩正向映射的另一个特性是:即使正向映射与必须每秒更新几百次或几千次的动态存储分层相关联,也可以高效地更新压缩正向映射。在不明显地(如果真会发生的话)进行解压缩和再压缩的情况下更新正向映射在本文中被称为“直接更新”。直接更新可用于删除压缩正向映射中的条目。删除条目可能涉及将压缩表示中的物理位置中的条目值编辑为指示条目已经被删除的特殊值。如下文解释的,筛选操作可以在稍后时间消除被标记为删除的这种条目。直接更新的另一个示例是在逻辑块地址中的数据从第一物理位置迁移到第二物理位置时,其中,对第二物理位置的描述在宽度上比第一物理位置更窄或与其相等。在此上下文中,“更窄”指示对第二物理位置的描述在相关基数中包含较少数字。在这种情况下,可以简单地编辑压缩正向映射中与被迁移数据相关联的物理位置。直接更新的又另一个示例是在仅删除了条目盘区的一部分时,比如,在正向映射中的条目包括多于一个连续块时。在这种情况下,可以在不超过压缩编码的限制的情况下减小条目的长度和/或条目的逻辑块地址增量字段。在实施例中,还可以对试图被删除的条目之前的条目或所述条目之后的条目的逻辑块地址增量字段进行调整以便适应仅删除条目盘区的一部分。
在不明显地对压缩正向映射进行解压缩和/或再压缩的情况下不可能更新正向映射的情况下,可以对单独数据结构进行实例化和维持以便存储替代压缩表中的信息的条目。单独数据结构可以是可快速修改且可高效搜索的结构。在实施方式中,单独数据结构可以是树(比如,B+树或红/黑树)或散列表。当单独数据结构接近大小限制时,或者当满足刷新条件时,“筛选”操作可以对正向映射进行解压缩、丢弃任何被删除或被替代逻辑范围、插入来自单独数据结构的表条目、并且对正向映射进行再压缩。
图4展示了用于管理具有压缩正向映射的存储分层的示例操作400。操作400可由包含存储分层的存储设备上的存储控制器上的处理器和/或存储器实施。操作402是从主机接收数据请求,比如,将数据写入到存储分层中或从存储分层中删除数据的请求。为了适应来自主机的数据访问请求,可能有必要对压缩正向映射进行更新以便添加新条目、删除条目或以其他方式对压缩正向映射中的数据进行编辑。如果在决策框403处适应来自主机的数据访问请求需要对正向映射进行更新,则方法400继续到决策框404。如果适应来自主机的数据访问请求(数据读取访问请求)不需要对正向映射进行更新,则方法400返回到操作402。如果在操作404处可以直接更新压缩正向映射(比如,当盘访问请求包括删除条目、将条目迁移到“更窄”的物理位置、仅删除条目盘区的一部分等的请求时),则在操作406处例如由存储控制器上的更新模块直接更新压缩正向映射。如果在操作404处有可能直接更新压缩正向映射,则可以在操作408中例如由存储控制器上的替代数据结构模块将表示对逻辑块地址到物理位置映射的变化的一个或多个条目存储在单独数据结构中。替代数据结构可以是任何容易修改且可搜索的数据结构,包括但不限于树或散列表数据结构。在实施方式中,替代数据结构可以存储在存储控制器上的存储器中。
如果在操作410处单独数据结构满了或接近满了,则在操作412处开始筛选操作。在图4和图5中,筛选操作对整个压缩正向映射进行处理。出于对计算机械的考虑和/或出于对搜索与筛选之间的竞争或一致性的考虑,筛选操作仍可以在短时间内执行。在实施方式中,筛选操作可由存储控制器上的筛选模块实施。如果单独数据结构满足大小条件,则单独数据结构可以被考虑为是满的。在另一种实施方式中,如果自前一筛选操作起已经过去了最小量的时间,则单独数据结构可以被考虑为是满的。操作410无需仅取决于单独数据结构的大小是否占据某个量。操作410反而可以取决于专用于筛选操作的系统资源的量,这是因为单独数据结构变得越大,筛选将越资源密集。例如,操作410可以取决于存储控制器上的存储器中可用的存储器量。在这种情况下,筛选操作是“可调整的”,这是因为判定单独数据结构是否是“满的”的条件可基于之前提及的考虑因素调整。如果在操作410处单独数据结构未满,则操作400返回到操作402以便从主机接收下一个数据请求。
图5是对环形缓冲器中的压缩正向映射506的筛选操作的简化图500。在实施方式中,环形缓冲器可以存储在耦合至存储分层的存储控制器上的存储器上。用于存储压缩正向映射的其他存储器配置也是可能的。替代数据结构502包含对正向映射的更新,不可能直接在环形缓冲器中对正向映射506(在其压缩状态下)做出所述更新。换言之,替代数据结构502中的条目是在不明显地进行以下操作的情况下,系统将不可能对压缩正向映射做出的条目:首先对正向映射进行解压缩、然后使用条目来更新解压缩正向映射以及然后在更新之后对正向映射进行再压缩。
在图5中,如通过箭头510和520指示的,存储控制器上的筛选模块504对之前的压缩列表516进行解压缩,由此对消耗所述之前的压缩列表。如通过箭头508指示的,筛选模块从替代数据结构502接收更新。如通过箭头514指示的,筛选模块移除被删除和被替代条目。随着筛选模块对条目进行再压缩,如通过箭头522指示的,新压缩内容被附加到新压缩列表518上。随着新压缩列表被附加并且之前的压缩列表被消耗,环形缓冲器506中的间隙524逆时针方向移动,直到其到达条512。条512是之前的压缩列表516与新压缩列表518之间的界限(在筛选开始时建立)。环形缓冲器的在条512下面的部分(被标记为新压缩列表518)是压缩正向映射的包括来自之前的压缩列表的条目的部分。
环形缓冲器506包括间隙524,从而使得压缩正向映射不占据整个环形缓冲器。包含压缩正向映射506的环形缓冲器被大小设定用于说明由筛选模块504实施的筛选操作在筛选过程结束之前不会遇到任何被删除或被替代条目的可能性。换言之,如果筛选模块504在筛选过程结束之前未遇到任何被删除或被替代条目512,则在筛选操作期间可能存在正向映射的合并压缩部分加上正向映射的还未由筛选模块504处理的部分的组合大于筛选操作开始之前的压缩正向映射506的时间点。为了说明在筛选操作期间的潜在大小增大,可以使用环形缓冲器中的间隙524。间隙524可以被大小设定成使得:即使筛选模块504仅在筛选过程后期遇到所有被删除和被替代的条目,间隙也不会完全关闭。
图6展示了筛选操作的示例操作600。操作602是将条目写入到替代数据结构中。在实施方式中,条目表示来自主机的不适合于直接写入到压缩正向映射中的数据访问请求。条目可由存储控制器上的替代数据结构模块写入到替代数据结构中。应当理解,不直接写入到压缩正向映射中意味着在不明显地首先对正向映射进行解压缩以及在更新之后进行再压缩的情况下无法对压缩正向映射做出条目。例如,如果主机请求将数据写入到新逻辑块中,则在不对压缩正向映射进行解压缩的情况下,不可能对正向映射进行所述更新。作为另一个示例,如果主机发送需要将数据从物理位置迁移到比起始物理位置“更宽”的目的地物理位置的数据访问请求,则可能无法直接更新压缩正向映射。为了使目的地物理位置具有比起始物理位置“更宽”的描述,意味着逻辑块地址的包含迁移数据的物理位置字段在相关基数中具有比起始物理位置更多的数字。
如果在操作604处替代数据结构接近满了,则筛选操作以在步骤606处对压缩正向映射进行解压缩开始。步骤606可由存储控制器上的筛选模块实施。在实施方式中,可以在动态存储器中实施压缩正向映射。如果在步骤606处替代数据结构未接近满了,则操作600返回到操作602以便比如由存储控制器上的替代数据结构模块将无法直接写入到压缩正向映射中的另一个条目写入到替代数据结构中。在实施方式中,为了使替代数据结构被考虑为接近满了而需要满足的条件取决于用于存储替代数据结构的可用存储器。如果存储器可用于存储替代数据结构的预定部分被替代数据结构占据,则替代数据结构可以被考虑为接近满了。在另一种实施方式中,当替代数据结构包含最小数量的条目时,替代数据结构可以被考虑为接近满了。
在一些情况下,如果在被删除和被替代条目被丢弃之前大量新条目被添加到正向映射中,则压缩正向映射可能在筛选操作期间增长。在实施方式中,包含正向映射的环形缓冲器可以包括“间隙”或自由空间以便适应这样一种可能性:在可以通过丢弃被删除和被替代条目来裁剪压缩正向映射之前,压缩正向映射可能需要增长。替代数据结构变得越大,对包含压缩正向映射的环形缓冲器中的“间隙”的潜在需要变得越大。因为包含压缩正向映射的环形缓冲器可能具有有限量的空间,所以可以在需要合并到压缩正向映射中的替代条目的数量超过限制之前执行筛选操作,从而使得在筛选操作期间压缩正向映射不会增长得太大而不能装入环形缓冲器。在另一种实施方式中,可以基于动态变化限制将替代数据结构考虑为接近满了,动态变化限制基于将在压缩正向映射中被删除或丢弃(从而使得筛选操作将不会使压缩正向映射超过包含压缩正向映射的环形缓冲器的可用空间)的条目的位置。
筛选操作的结果可以保存到数据存储介质中。在实施方式中,筛选操作的结果可以保存到日志系统快照中。在又另一种实施方式中,筛选操作的结果可以在许多介质操作的过程中保存。在又另一种实施方式中,筛选操作的结果可以与累积日志(其包括替代数据结构的从筛选操作开始起的历史的至少一部分)同时保存。替代数据结构的历史可以从筛选操作开始并且可以包括替代数据结构滑动进入压缩正向映射的域中。累积日志可以保存在非易失性存储器中并且可以包括关于对正向映射的修改的信息。
在某些场景下,比如当累积日志未缺少关于对正向映射的修改的任何信息时,可以重放累积日志。另一种实施方式包括生成对筛选操作的保存结果的编辑列表、以简要格式将编辑列表存储到保存的筛选结果中以供在保存的筛选结果变为常驻之后进行应用。生成和存储边界列表可以在加载保存的筛选结果的同时执行。
操作606对正向映射进行解压缩。正向映射可以根据许多压缩或编码方案(比如,使用哈夫曼码)进行压缩。哈夫曼码可以应用于以多种方式对正向映射进行压缩。例如,哈夫曼前缀可以指定整个条目的格式包括针对逻辑块地址增量、连续块数量和物理位置的字段。可替代地,条目中的每个字段可以具有其自己的哈夫曼前缀。在另一种实施方式中,条目编码可以指示某个字段的值与表的压缩表示中的某个向后距离处的条目中的字段值具有某种关系。在正向映射存储在动态存储器上的实施方式中,操作606可以仅包括对正向映射的小部分进行解压缩。当在操作606处仅对正向映射的小部分进行解压缩时,经可通过筛选和再压缩操作对小的解压缩部分进行操作。
在操作606中已经对正向映射进行了解压缩之后,操作608丢弃正向映射中的被删除和/或被替代的条目。通过操作608移除的一种条目类型是被删除的条目。删除条目是可以在不进行解压缩的情况下直接对压缩正向映射做出的一种改变类型,这是因为待删除条目的物理位置可以被设置为指示条目删除的特殊值。在操作608期间,从压缩映射中移除已经通过在物理位置字段中设置特殊值被标记为删除的条目。通过操作608移除的另一种条目类型是被替代的条目。在对逻辑块地址的物理位置做出改变之后,被替代的条目可以保持在正向映射中,但是改变将需要明显地对正向映射进行解压缩以便对正向映射本身做出改变。对替代数据结构做出替代条目,而不是进行解压缩。操作608可以对替代数据结构进行迭代以便找到无法在正向映射被压缩时直接对正向映射做出的条目,并且对反映替代数据结构中的条目的解压缩正向映射作出改变。
操作608可以包括保存筛选操作的结果。在实施方式中,筛选操作的结果可以保存到日志系统快照中(有可能在多项介质操作过程中)。在多项介质操作过程中保存筛选操作的结果可以使系统保持响应于将在筛选操作的结果被保存的同时进行的其他必须介质操作。在另一种实施方式中,筛选操作的结果可以与累积日志同时保存,所述累积日志包括替代数据结构的从筛选开始之后的时间起的历史,所述历史可以包括滑动时刻。筛选操作的结果可以保存到非易失性存储器中,因为非易失性存储器是最丰富的可用非易失性存储器和/或最不宝贵的非易失性存储器,所以选择了非易失性存储器。保存到较不宝贵的非易失性存储器中的任何日志可以包括关于对正向映射的修改的额外信息。如果在电力恢复之后在保存的筛选结果已经恢复常驻之前存在一段时间,则这种修改允许与筛选结果加载同时重放累积日志。在已经重放了累积日志之后,因为在正向映射已经恢复之后、在重放缺少关于对正向映射的修改的额外信息的累积日志之前,正向映射可以接收进一步更新和搜索,所以系统可以等待保存的筛选结果恢复常驻。等待保存的筛选结果恢复常驻允许较宝贵的日志存储器(其可以包含在保存到较不宝贵的非易失性存储器中的部分之后的日志结束部分)每字节包含更多历史(由于其省略了额外信息),一旦保存的筛选结果恢复常驻,额外信息就变得可用。
操作610是将来自替代数据结构的表条目插入到正向映射中。在实施方式中,无法直接对压缩正向映射做出新条目。相反,当主机发送要求添加新条目以便将物理位置与逻辑块地址关联的数据访问请求时,反而对替代数据结构做出了条目。在操作610中,对解压缩正向映射做出这些新条目。如果在动态存储器中实施正向映射,则操作610可以包括如局部、部分和/或分段筛选操作等操作。
操作612是在完成操作608和610之后再次对正向映射进行压缩。各种编码和压缩方案可以用于对正向映射进行压缩,包括但不限于哈弗曼编码。每个表条目的格式都可以在压缩表示中由哈夫曼前缀或类似压缩前缀指示。在解压缩正向映射中,每一行的逻辑块地址增量字段、连续块数量字段以及物理位置字段将具有因条目而异的宽度,其中,“宽度”是指在特定基数中表示数据所需的数字的数量,即,数据的“基础”或者在位置编号系统中用于表示数据的唯一数字的数量。因为哈夫曼前缀本身还将由于其不同长度而需要不同的存储器量,所以较短的哈夫曼前缀码可以被选择用于较通常应用的映射表条目格式。随着正向映射表条目格式变得较不常见,可以使用较长的哈夫曼前缀。分配哈夫曼前缀的这种策略减小了存储压缩正向映射所需的存储器。在实施例中,可以基于正向映射的内容对各种压缩方案的压缩效率进行评估以便选择具有令人满意的压缩效率的压缩方案。
图7展示了用于在筛选操作期间搜索和更新正向映射的示例操作700。操作702是开始筛选操作以便对正向映射进行解压缩、将替代数据结构中的条目合并到解压正向映射中。可以包括在筛选操作中的一些操作包括丢弃被替代和被删除的条目、插入新条目以及对正向映射进行再压缩。在实施方式中,操作702可以仅在最低限度地包括对正向映射进行解压缩和再压缩。
当正在进行筛选操作时(比如,当筛选模块通过解压缩正向映射中的条目取得进展时),在筛选模块仅部分地完成处理包含解压缩正向映射的缓冲器中的条目的时间段内可能存在来自主机的附加数据访问请求。正向映射仍可基于在此时间期间来自主机的数据访问请求进行搜索。尽管筛选操作可能是计算密集的,但是筛选操作不需要是用于跟踪与存储分层有关的元数据变化的任何日志系统的负担。具体地,无需记录包括筛选的单独修改(比如,移除被删除的条目、更新被替代的条目以及插入新条目)。日志仅需要描述对压缩正向映射的编辑和对替代数据结构的修改。过度的日志长度可以是开始筛选操作的标准,因为筛选的图像可以充当日志系统中的快照的一部分。
当在操作702处开始筛选操作时,压缩表的概念立即扩展以便包括当前替代数据结构。换言之,基于从主机接收到的数据访问请求进行的搜索变成对替代数据结构和实际压缩/解压缩正向映射的搜索以及对被实例化以便代替滑动到压缩列表的域中的数据结构的任何新替代数据结构的搜索,其中,所述新替代数据结构将具有最高优先序。单个日志条目可以指示在操作704处的这种变化,所述变化在本文中被称为“滑动”,因为当前替代数据结构“滑动”到压缩正向映射的域中。操作704可由存储控制器上的滑动模块实施。
操作706是使新替代数据结构实例化。新替代数据结构替代之前的替代数据结构和压缩正向映射。在筛选操作期间,之前的替代数据结构和之前的压缩正向映射被合并到新压缩正向映射中。如果在操作708处从主机接收到数据访问请求,则在操作710处对替代数据结构和压缩正向映射实施搜索/更新。在筛选操作期间,不论筛选进度如何,由于滑动替代数据结构和压缩正向映射的组合,压缩表的扩展概念对查询总是给出相同的回答。是这种事实减轻了对筛选操作中的步骤进行记录的负担。在实施方式中,在筛选期间不对压缩正向映射进行编辑,而相反,依赖于最近实例化的替代数据结构来提供从主机接收到的数据访问请求的结果并且接收映射更新。在另一种实施方式中,在筛选操作期间对压缩正向映射进行更新。
如果在操作712处从主机接收到写入/删除请求,则在操作714处更新的条目被存储在最近实例化的替代数据结构中。当在操作718中完成了筛选操作时,在操作720处丢弃之前的替代数据结构。因为所有内容都已经被筛选到压缩列表中并且因为对最近实例化的替代数据结构(其将在下一项筛选操作期间被合并到正向映射中)做出了在筛选操作期间发生的所有更新,所以不再需要之前的替代数据结构。
在实施方式中,使用了日志系统,所述日志系统允许将数据结构(例如,压缩正向映射、替代数据结构等)保存到图像中,其之后是给出了必须对图像做出的改变的历史的日志。给出了必须对图像做出的改变的历史的日志继续,直到数据结构下一次被保存,并且然后,执行针对从上一次保存起发生的变化的附加记录。换言之,日志系统给出了自数据结构上一次被保存起发生的变化的历史。这种类型的日志系统防止“通电重放时间”免于无限制增大。在压缩正向映射的情况下,保存的图像可以是筛选结果(即,压缩正向映射),随后是自之前的替代数据结构“滑动”到压缩正向映射的域中的时间起对新替代数据结构做出的改变的历史。日志系统可以使用时间或序列号来标记其信息。当筛选操作完成并且筛选结果被保存为图像时,日志机构可以使更新的图像可供与记录的历史组合以便恢复至掉电之前的状态。即使新替代数据结构的日志描述了在时间上比被筛选的压缩正向映射的反映于保存图像中的状态更晚的事件,但是那些日志事件中的一些可以在筛选操作完成创建待保存的被筛选的压缩正向映射之前被记录。
如果在筛选操作期间发生掉电或其他类型的复位事件,则在通电时进行的日志重放必须至少恢复对筛选操作的输入(例如,旧的压缩正向映射和“滑动”替代数据结构)并且重放对新替代数据结构的一直到掉电事件的改变。然后,可以使正向映射回到在线状态,以便对从主机接收到的搜索请求进行响应并且以便由于主机数据访问请求而接受对正向映射的更新,并且然后可以重新开始筛选操作。在筛选操作完成时,筛选操作的结果将保存到数据结构图像中,并且然后,旧替代数据结构的存储器资源变得可用于新替代数据结构中。如果掉电事件重复地或者接连不断地发生,则在使正向映射在线以便进行新的更新之前,可以引起对正向映射和替代数据结构的筛选操作和图像保存所需的时间。在实施方式中,存在对保持供用于新替代数据结构中以便允许正向映射保持可使用且可搜索(直到筛选操作完成并且为“滑动”替代数据结构释放存储器)的替代数据结构节点的预算。
尽管在一些情况下,本文描述的掉电行为可能呈现挑战,但是包括微处理器和存储器架构的现代设备可以能够在几秒内处理包含几百万个条目的压缩正向映射,这可以减小紧急筛选(如果需要紧急筛选来使正向映射在线)的影响。在实施方式中,筛选模块是自定义逻辑块,所述自定义逻辑块可以能够比微处理器更快地运行。在另一种实施方式中,筛选模块可以在专用处理单元上与数据存储系统的剩余部分同时运行,从而使得筛选操作所需的处理能力并不使其他处理元件的吞吐量降级。
除了以上提及的从掉电事件恢复的方面之外,重放替代数据结构的日志变化可能与对压缩正向映射的最近保存的图像的加载同时发生。如果在压缩正向映射中存在对日志重放应当如何进行具有影响的条目,则在创建日志条目时可以将所述信息置于日志中,从而使得即使压缩表还不是常驻的,所述信息也是可用的。在将日志的帧从快速或更宝贵的非易失性RAM刷新到较慢或更丰富的非易失性存储器中的系统中,这种附加信息可能使日志变大,但是其不需要影响被用于存储日志的最新帧的任何有限非易失性RAM。在快速非易失性RAM中,日志的最新帧可以具有“冗长的”大表示和“简洁的”较小表示。“简洁的”表示将排除可以从最终必须是常驻的加载或重放表中获得的信息。在每次成功的日志帧保存(例如,从快速非易失性存储器保存到较慢的更丰富的非易失性存储器中)之后,冗长帧被保存,并且针对简洁表示的存储器变得可用。在日志重放期间,当冗长日志流结束并且到达日志的最终简洁帧时,重放可以暂停,直到压缩正向映射完全常驻。如果记录了对压缩正向映射的编辑,则所述编辑将被记录在冗长流中并且被置于将在压缩图像常驻时应用的特殊编辑列表中。如果日志重放可以在压缩图像不常驻的情况下进行,则其应当能够在经编辑的压缩图像不常驻的情况下进行。
对于用于对正向映射进行压缩的编码类型,在实施方式中,高度固定的编码可以用于实现可证明的压缩比例,从而使得可以为压缩正向映射留出固定量的存储器。其他类型的压缩方案可能试图创建针对被压缩的数据而优化或定制的编码。然而,定制或优化的编码方案可能导致不可预测的压缩比例,并且可能难以提供具有充足存储器以便适应不可预测的压缩比例的数据存储设备。另一方面,高度固定的压缩比例适用于待存储在特定存储器中的最大数量条目,但是还可以证明的是,相比由待压缩的较少条目产生的存储器增益,由待压缩的较少条目引起的压缩比例下降具有较小影响。
例如,图3中展示的正向映射具有用于存储逻辑块地址增量值的第一列。在给定条目密度(每个逻辑地址空间量的条目数量)的情况下,可以知道平均逻辑地址增量。因为一些条目可以非常靠近、几个条目可以间隔非常远并且其他增量处于中间,所以可以通过构造逻辑块地址增量的最差情况方差来计算可证明的压缩比例,并且可以使用最差情况场景来约束压缩比例。
本文公开的任何前述方法的示例方法包括:其中,正向映射中的至少一个条目包括全宽逻辑块地址字段。本文公开的任何方法的另一种示例方法包括:其中,更新操作进一步包括对供删除的条目进行标记。本文公开的任何前述方法的另一种示例方法包括:筛选操作,所述筛选操作包括替代数据结构到压缩正向映射的域的滑动进行记录。本文公开的任何前述方法的另一种示例方法包括:筛选操作进一步包括将新替代数据结构实例化以便存储在开始筛选操作之后接收到的替代条目。本文公开的任何前述方法的另一种示例方法包括:将筛选操作的结果保存到存储介质中。本文公开的任何前述方法的另一种示例方法包括:其中,保存操作将筛选操作的结果保存到日志系统快照中。本文公开的任何前述方法的另一种示例方法包括:其中,保存操作在多项介质操作的过程中保存筛选操作的结果。本文公开的任何前述方法的另一种示例方法包括:其中,保存操作与累积日志同时保存筛选操作的结果,所述累积日志至少记录了替代数据结构的从筛选操作开始起的历史的至少一部分。本文公开的任何前述方法的另一种示例方法包括:重放累积日志。本文公开的任何前述方法的另一种示例方法包括:在重放操作期间,生成对筛选操作的保存结果的编辑列表、以简单格式将编辑列表存储到保存的筛选结果中以供在保存的筛选结果变为常驻之后进行应用;并且其中,生成和存储操作是在加载保存的筛选结果的同时执行的。
本文描述的实施方式可以被实施为一个或多个计算机系统中的逻辑操作。本文描述的各种实施方式的逻辑操作被实施为(1)在一个或多个计算系统中执行的处理器实施的操作序列;以及(2)一个或多个计算及系统内的互连机器或电路模块。所述实施方式是依赖于计算系统的性能要求的选择问题。因此,构成本文描述的实施方式的逻辑操作被不同地称为操作、操作、对象或模块。此外,还应该理解,逻辑操作也可以以任何顺序执行,除非明确地声明,或者由权利要求语言固有地要求特定的顺序。
为清晰起见,图中和文中并未对本文所述的实施方式的所有常见特征都进行图示和描述。应该意识到:在任何这种实际实施方式的开发过程中,为了实现开发者的特定目标,例如为了符合实际的应用情况和与商业有关的限制,针对特定的实施方式做出了多种特定的决断,且那些特定目标将随着实施方式的不同和开发者的不同而产生变化。
以上说明书、示例和数据提供了示例实施方式的结构和使用的完整描述。因为在不背离本发明精神和范围的情况下可以进行许多替代性实施方式,所以本发明归于所附权利要求书。此外,在不偏离所述权利要求书的情况下,不同实施方式的结构特征可以与又另一种实施方式相组合。
Claims (20)
1.一种方法,包括:
生成存储分层的正向映射,所述正向映射将多个逻辑块地址映射到所述存储分层上的物理位置;
压缩所述正向映射;
从主机接收对所述正向映射中逻辑块地址到所述动态存储分层上的物理位置的映射进行修改的请求;以及
响应于来自所述主机的所述请求来更新经压缩的正向映射。
2.如权利要求1所述的方法,其中,所述更新操作进一步包括:在不对所述正向映射进行解压缩的情况下更新所述正向映射。
3.如权利要求2所述的方法,其中,所述更新操作进一步包括:减小条目的物理位置字段的长度。
4.如权利要求2所述的方法,其中,所述更新操作进一步包括:仅删除条目的盘区的一部分。
5.如权利要求1所述的方法,进一步包括:
使用以下各项中的至少一项在O(log n)时间内或更快地定位所述经压缩正向映射的与逻辑块地址相对应的区域:索引文件、里程碑条目、树和散列表。
6.如权利要求1所述的方法,其中,所述正向映射中的一个或多个条目包括逻辑块地址△字段、连续块数量字段和物理位置字段。
7.如权利要求1所述的方法,其中,所述更新操作进一步包括:更新替代数据结构,所述替代数据结构包括以下各项之一:树和散列表。
8.一种方法,包括:
生成存储分层的正向映射,所述正向映射将多个逻辑块地址映射到所述存储分层上的物理位置;
压缩所述正向映射;
从主机接收对所述正向映射中逻辑块地址到所述动态存储分层上的物理位置的映射进行修改的请求;
响应于来自所述主机的所述请求来更新替代数据结构;
对所述正向映射的至少一部分进行解压缩;
对所述正向映射的至少一部分进行筛选;以及
对所述正向映射的至少一部分进行再压缩。
9.如权利要求8所述的方法,其中,所述筛选操作进一步包括:
从经解压缩的正向映射中丢弃被删除条目;
从所述经解压缩的正向映射中丢弃被替代逻辑块地址范围;以及
将来自所述数据结构的替代表条目插入到所述经解压缩的正向映射中。
10.如权利要求9所述的方法,其中,所述筛选操作进一步包括:对所述经解压缩的正向映射中的条目的压缩效率进行评估;以及
基于评估操作来选择用于所述再压缩操作的压缩方案。
11.如权利要求8所述的方法,其中,所述正向映射包括至少一个条目,所述至少一个条目具有逻辑块地址△字段、连续块数量字段和物理位置字段。
12.如权利要求8所述的方法,其中,所述筛选操作进一步包括:对存储在环形缓冲器中的正向映射进行筛选,所述环形缓冲器包括间隙,所述间隙被配置用于在所述筛选操作期间适应所述正向映射的大小的增大。
13.如权利要求8所述的方法,其中,所述正向映射存储在动态存储器上。
14.如权利要求8所述的方法,其中,所述替代数据结构的从所述筛选操作开始起的历史包括所述替代数据结构到所述经压缩的正向映射的域的滑动。
15.如权利要求8所述的方法,其中,所述保存操作进一步包括:保存累积日志,所述累积日志记录所述替代数据结构的从所述筛选操作开始起的所述历史的至少一部分。
16.如权利要求15所述的方法,其中,所述累积日志保存在非易失性存储器中,所述累积日志包括关于对所述正向映射的修改的信息。
17.如权利要求8所述的方法,进一步包括:在所述筛选操作的所保存结果不是常驻的时,重放累积日志。
18.一种数据存储设备,包括:
存储分层;
存储控制器,所述存储控制器可操作地耦合至所述存储分层并且被配置成通信地耦合至主机设备,所述存储控制器包括:
第一存储器,所述第一存储器可操作地耦合至所述存储控制器并且被配置用于存储替代数据结构;
第二存储器,所述第二存储器可操作地耦合至所述存储控制器并且被配置用于存储正向映射,所述正向映射被配置用于将多个逻辑块地址映射到所述存储分层上的物理位置;
筛选模块,所述筛选模块被配置用于基于包含在所述替代数据结构中的数据对所述正向映射进行筛选;以及
压缩模块,所述压缩模块被配置用于压缩所述正向映射以便生成经压缩的正向映射。
19.如权利要求18所述的数据存储设备,其中,所述筛选模块被进一步配置用于:
从所述经压缩的正向映射中丢弃被替代逻辑块地址范围;并且
将来自所述替代数据结构的替代表条目插入到所述经压缩的正向映射中。
20.如权利要求18所述的数据存储设备,其中,所述正向映射包括至少一个条目,所述至少一个条目具有逻辑块地址△字段、连续块数量字段和物理位置字段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/336,667 US10747678B2 (en) | 2016-10-27 | 2016-10-27 | Storage tier with compressed forward map |
US15/336,667 | 2016-10-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108009098A true CN108009098A (zh) | 2018-05-08 |
CN108009098B CN108009098B (zh) | 2021-07-06 |
Family
ID=62021380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711022700.0A Active CN108009098B (zh) | 2016-10-27 | 2017-10-27 | 具有经压缩的正向映射的存储分层 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10747678B2 (zh) |
KR (1) | KR20180046377A (zh) |
CN (1) | CN108009098B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110636064A (zh) * | 2019-09-23 | 2019-12-31 | 浪潮软件集团有限公司 | 一种基于gzip压缩的高速加密数据同步方法及系统 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6779821B2 (ja) * | 2017-03-24 | 2020-11-04 | キオクシア株式会社 | メモリシステム及びデータの読み出し方法 |
US10852947B2 (en) * | 2017-05-26 | 2020-12-01 | Dell Products, L.P. | Organization and compression of data in storage arrays to reduce cleaning overhead |
US10649909B2 (en) * | 2018-06-14 | 2020-05-12 | Western Digital Technologies, Inc. | Logical block addressing range collision crawler |
US11159833B2 (en) * | 2018-11-23 | 2021-10-26 | Sony Corporation | Buffer management for storing files of a received packet stream |
US10983918B2 (en) * | 2018-12-31 | 2021-04-20 | Micron Technology, Inc. | Hybrid logical to physical caching scheme |
US11244008B1 (en) * | 2019-08-30 | 2022-02-08 | Quantcast Corporation | Accelerated operations on compressed data stores |
US10977189B2 (en) * | 2019-09-06 | 2021-04-13 | Seagate Technology Llc | Reducing forward mapping table size using hashing |
KR102392880B1 (ko) * | 2021-09-06 | 2022-05-02 | (주) 바우디움 | 계층화 문서를 관리하는 방법 및 이를 이용한 장치 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1425986A (zh) * | 2003-01-17 | 2003-06-25 | 清华大学 | 自动压缩/解压缩文件系统及其压缩算法 |
US20080104359A1 (en) * | 2006-10-30 | 2008-05-01 | Sauer Jonathan M | Pattern-based mapping for storage space management |
US20100023682A1 (en) * | 2007-10-11 | 2010-01-28 | Super Talent Electronics Inc. | Flash-Memory System with Enhanced Smart-Storage Switch and Packed Meta-Data Cache for Mitigating Write Amplification by Delaying and Merging Writes until a Host Read |
US20100161567A1 (en) * | 2008-12-22 | 2010-06-24 | Innobase Oy | Compressed data page with uncompressed data fields |
CN102833541A (zh) * | 2012-08-03 | 2012-12-19 | 东莞中山大学研究院 | 用于mpeg-2视频解码的sdram存储结构 |
US20150039573A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Compressing a multi-version database |
US20150058577A1 (en) * | 2013-08-26 | 2015-02-26 | Vmware, Inc. | Compressed block map of densely-populated data structures |
CN104881367A (zh) * | 2014-02-28 | 2015-09-02 | 英特尔公司 | 处理分布式缓存组织结构中的已压缩数据 |
CN105068813A (zh) * | 2015-08-19 | 2015-11-18 | 北京奇虎科技有限公司 | 一种提供安卓包apk修改服务的方法和装置 |
WO2016054212A1 (en) * | 2014-10-01 | 2016-04-07 | Cacheio Llc | Efficient metadata in a storage system |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8195912B2 (en) | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US8583692B2 (en) * | 2009-04-30 | 2013-11-12 | Oracle International Corporation | DDL and DML support for hybrid columnar compressed tables |
US8417904B2 (en) | 2010-03-17 | 2013-04-09 | Seagate Technology Llc | Garbage collection management in a data storage device |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US9875180B2 (en) * | 2014-02-24 | 2018-01-23 | Sandisk Technologies Llc | Systems and methods for managing storage compression operations |
-
2016
- 2016-10-27 US US15/336,667 patent/US10747678B2/en active Active
-
2017
- 2017-10-26 KR KR1020170140428A patent/KR20180046377A/ko not_active Application Discontinuation
- 2017-10-27 CN CN201711022700.0A patent/CN108009098B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1425986A (zh) * | 2003-01-17 | 2003-06-25 | 清华大学 | 自动压缩/解压缩文件系统及其压缩算法 |
US20080104359A1 (en) * | 2006-10-30 | 2008-05-01 | Sauer Jonathan M | Pattern-based mapping for storage space management |
US20100023682A1 (en) * | 2007-10-11 | 2010-01-28 | Super Talent Electronics Inc. | Flash-Memory System with Enhanced Smart-Storage Switch and Packed Meta-Data Cache for Mitigating Write Amplification by Delaying and Merging Writes until a Host Read |
US20100161567A1 (en) * | 2008-12-22 | 2010-06-24 | Innobase Oy | Compressed data page with uncompressed data fields |
CN102833541A (zh) * | 2012-08-03 | 2012-12-19 | 东莞中山大学研究院 | 用于mpeg-2视频解码的sdram存储结构 |
US20150039573A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Compressing a multi-version database |
US20150058577A1 (en) * | 2013-08-26 | 2015-02-26 | Vmware, Inc. | Compressed block map of densely-populated data structures |
CN104881367A (zh) * | 2014-02-28 | 2015-09-02 | 英特尔公司 | 处理分布式缓存组织结构中的已压缩数据 |
WO2016054212A1 (en) * | 2014-10-01 | 2016-04-07 | Cacheio Llc | Efficient metadata in a storage system |
CN105068813A (zh) * | 2015-08-19 | 2015-11-18 | 北京奇虎科技有限公司 | 一种提供安卓包apk修改服务的方法和装置 |
Non-Patent Citations (2)
Title |
---|
L. WIROLA: "Bandwidth and storage reduction of radio maps for offline WLAN positioning", 《INTERNATIONAL CONFERENCE ON INDOOR POSITIONING AND INDOOR NAVIGATION》 * |
黄海平: "多维对称空间的压缩存储及其应用研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110636064A (zh) * | 2019-09-23 | 2019-12-31 | 浪潮软件集团有限公司 | 一种基于gzip压缩的高速加密数据同步方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20180046377A (ko) | 2018-05-08 |
CN108009098B (zh) | 2021-07-06 |
US20180121364A1 (en) | 2018-05-03 |
US10747678B2 (en) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009098A (zh) | 具有经压缩的正向映射的存储分层 | |
US9317218B1 (en) | Memory efficient sanitization of a deduplicated storage system using a perfect hash function | |
US9430164B1 (en) | Memory efficient sanitization of a deduplicated storage system | |
CN108319602B (zh) | 数据库管理方法及数据库系统 | |
CN107787489B (zh) | 包括层级的文件存储系统 | |
US9424185B1 (en) | Method and system for garbage collection of data storage systems | |
US20210263795A1 (en) | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction | |
JP4537083B2 (ja) | データ処理装置及びその制御方法 | |
US9367448B1 (en) | Method and system for determining data integrity for garbage collection of data storage systems | |
US20150234616A1 (en) | System and method for providing long-term storage for data | |
JP4975724B2 (ja) | 低冗長記憶システム内のサブブロックの存在を検出する方法 | |
WO2012056491A1 (en) | Storage apparatus and data control method | |
US20120254559A1 (en) | Method and Apparatus For Detecting The Presence of Subblocks in a Reduced Redundancy Storing System | |
KR102310246B1 (ko) | 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치 | |
US8271456B2 (en) | Efficient backup data retrieval | |
US20110219049A1 (en) | System for permanent file deletion | |
CN108763473A (zh) | 一种分布式存储的本地对象存储方法及装置 | |
CN105009067A (zh) | 管理对存储数据单元的操作 | |
CN105791353A (zh) | 基于纠删码的分布式数据存储方法及系统 | |
US10496612B2 (en) | Method for reliable and efficient filesystem metadata conversion | |
CN113495847B (zh) | 一种存储空间回收方法、系统及计算机存储介质 | |
KR100703680B1 (ko) | 플래시 파일 시스템 | |
CN113868244A (zh) | 生成键-值索引快照 | |
CN106874399B (zh) | 一种联网备份系统及备份方法 | |
CN113806341A (zh) | 数据处理方法及存储设备 |
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 |