CN102483754B - 在非均匀存取存储器中的可扩展编制索引 - Google Patents
在非均匀存取存储器中的可扩展编制索引 Download PDFInfo
- Publication number
- CN102483754B CN102483754B CN201080033622.4A CN201080033622A CN102483754B CN 102483754 B CN102483754 B CN 102483754B CN 201080033622 A CN201080033622 A CN 201080033622A CN 102483754 B CN102483754 B CN 102483754B
- Authority
- CN
- China
- Prior art keywords
- bucket
- index
- storer
- write
- flash memory
- 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
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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- 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/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- 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/402—Encrypted 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/60—Details of cache memory
- G06F2212/6032—Way prediction in set-associative cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
用于构造索引的方法和设备,所述索引扩展为大量记录并且提供高处理速率。提供了新的数据结构和方法,从而确保编制索引算法以对所述算法自然(有效)的方式执行,同时非均匀存取存储器装置监视对存储器装置有效的IO(输入/输出)业务。产生一个数据结构、转换表格,其将由编制索引算法检查的逻辑存储桶映射到存储器装置上的物理存储桶。这种映射使得增强对非均匀存取SSD和闪存装置的写性能。另一种数据结构,即相关联的高速缓冲存储器,用于收集存储桶并且在大量顺序写的情况下将其顺序地写出到存储器装置。方法用于用编制索引算法要求的(记录的)存储桶填充高速缓冲存储器。额外的存储桶可以在需要的读取期间或者通过清除处理自存储器装置读取到高速缓冲存储器,从而便利可用擦除块的生成。
Description
技术领域
本发明涉及用于构造索引的方法和设备,所述索引扩展为大量记录并且提供高处理速率。
背景技术
一些当代的文件系统使用对象来存储文件数据和其他内部文件系统结构(“元数据”)。文件被分解为许多小对象,可能小到4KB(2^12字节)。例如,对于横越64TB(2^46字节)的文件系统,这导致对超过2^(46-12)=2^34,或大约160亿个对象保持跟踪。
在本文中,对象是二进制数据的序列并且具有对象名称,所述对象名称通常是GUID(全局唯一的ID)或内容的加密散列,但是只要每个唯一的对象均具有唯一的名称,则其他命名习惯也是可行的。对象名称通常是意图由程序使用的固定长度的二进制字符串,与意图由人们使用的有别。对象尺寸是任意的,但实践中通常是2的幂并且在从512字节(2^9)直到1MB(2^20)的范围内。本文中的对象不应该与例如Java和C++等编程语言中使用的对象相混淆。
文件系统需要全部对象的索引(有时称作字典或名单)。索引中的每个记录可以包含对象名称、长度、位置和其他混杂的信息。所述索引可以将对象名称和/或对象的位置作为其初始密钥。记录具有数十字节的级数,32字节是一个示例。
在这种索引上操作包括增加条目、查找条目、对条目进行修改和删除条目。这些全是在任意索引上执行的典型操作。
因为这些文件系统使用对象工作,所以为了文件系统获得可接受的性能水平,编制索引方案具有不容易实现的两个挑战:
1)索引中的条目的数量可以非常大。在以上列出的示例中,如果每个索引条目是32(2^5)字节,则所述索引占据存储器中的2^(5+34)=2^39字节或512GB。这不符合当今的存储器技术的成本效益。
2)针对索引的操作是巨大的。商业可行的存储器系统可能需要以例如256MB/s(2^28字节/秒)执行。对于4KB的对象尺寸,其是每秒2^(28-12)=2^16或64000次操作。假设文件系统通常在内部生成并且引用其他数据(对象),因此编制索引操作速率可以轻易地超过每秒10万次操作。作为比较点,现有技术的磁盘可以最多进行每秒400次操作。
仅使用DRAM存储器技术或磁盘技术来实现必要的性能和容量水平是不现实的。DRAM存储器足够快,但不够密集。磁盘具有密集度,但不具有所述性能。扩展任何一个(DRAM存储器或磁盘)以达到期望的特性均过于昂贵。
对象名称通常在其分布和存取模式中是均匀的,因此取决于空间和时间位置的典型的高速缓存(caching)方案发挥了有限的作用。因此,编制索引问题在尺寸和操作速率方面均存在困难。
发明内容
根据本发明的一个实施例,提供了一种通过均匀存取编制索引处理而存取索引的方法,所述索引存储在非均匀存取存储器中,所述方法包括:
维持转换表格,以便将由编制索引处理生成的逻辑存储桶标识符映射到存储器的物理存储桶位置,从而存取所述索引中的每个记录数据条目;
在后续的将条目的集合顺序写入存储器的至少一个物理存储桶位置之前,在高速缓冲存储器中收集将被写入所述索引的多个记录数据条目。
在一个实施例中,所述方法包括:
将来自所述高速缓冲存储器的记录数据条目的集合以顺序写入的方式写入存储器的存储桶位置;
以用于所述集合的记录数据条目的存储桶位置更新所述转换表格。
在一个实施例中,所述方法包括:
自存储器将一个或多个顺序的记录数据条目读取到所述高速缓冲存储器;
将存储器中一个或多个条目被读取的物理位置指定为可用。
在一个实施例中,所述方法包括:
通过将所述块中的任意有效条目读取到高速缓冲存储器,并且将存储器中这些条目被读取的物理位置指定为可用,使所述存储器中的多个顺序的物理存储桶位置作为可用块。
在一个实施例中:
所述编制索引处理基于均匀分布并且唯一的索引密钥而向所述索引生成随机存取请求。
在一个实施例中:
所述密钥包括加密的散列摘要。
在一个实施例中:
所述编制索引处理包括置换散列处理。
在一个实施例中:
所述置换散列包括布谷鸟散列处理。
在一个实施例中:
所述存储器包括一个或多个闪存、相变以及固态磁盘存储器装置。
在一个实施例中:
所述存储器由随机写入存取时间、随机的读-修改-写存取时间、顺序写入、对准约束、擦除时间、擦除块边界和磨损中的一个或多个来限制。
在一个实施例中:
物理存储桶的尺寸包括所述存储器的最小的写尺寸。
在一个实施例中:
所述物理存储桶的尺寸包括页或部分页。
在一个实施例中:
所述存储器具有包括多页的擦除块。
在一个实施例中,所述方法包括:
维持存储桶有效表格,其用于跟踪存储器中的哪个存储桶位置是有效的。
在一个实施例中:
存储器中的存储桶包括一个或多个记录数据条目的集合以及在存储桶转换表格中的自索引。
在一个实施例中:
所述存储桶中的记录数据条目不按顺序。
在一个实施例中,所述方法包括:
指定被顺序地写入所述存储器的记录数据条目在高速缓冲存储器中只读。
在一个实施例中:
存储桶转换表格被存储在永久性的存储器中。
在一个实施例中,所述方法包括:
跟踪擦除块中的可用的存储桶的数量,并且执行处理,从而当达到可用的存储桶的阈值时,生成可用的可擦除块。
在一个实施例中:
所述编制索引处理基于记录被插入、删除、查找和/或修改的请求而执行编制索引操作。
在一个实施例中:
编制索引处理包括用于对存储所述索引的记录的物理存储桶读和写的逻辑存储桶操作。
在一个实施例中:
所述物理存储桶操作包括随机读和顺序写。
在一个实施例中:
所述物理存储桶操作进一步包括修剪命令。
在一个实施例中:
所述存储器包括物理装置层,该物理装置层的特征在于非均匀的读和写存取,以及关于尺寸、对准和定时的不变性。
在一个实施例中:
记录数据条目包括用于密钥、引用计数和物理块地址的字段。
在一个实施例中:
所述密钥包括数据的加密的散列摘要;
所述物理块地址字段包括对存储在存储器装置上的数据的物理块地址的指针。
在一个实施例中:
所述逻辑存储桶位置由多个散列函数生成。
在一个实施例中:
所述存储器包括闪存装置,该闪存装置包括多个擦除块,每个擦除块包括多页,并且每页包括多个存储桶。
根据本发明的另一个实施例,提供了包括程序代码装置的计算机程序产品,当由处理器执行时,其执行前述方法的步骤。
根据本发明的另一个实施例,提供了计算机可读介质,其包含可执行的程序指令,该可执行的程序指令用于通过均匀存取编制索引处理而存取存储在非均匀存取存储器中的索引的方法,所述方法包括:
维持转换表格,以便将由编制索引处理生成的逻辑存储桶标识符映射到存储器的物理存储桶位置,从而存取所述索引中的每个记录数据条目;
在后续的将条目的集合顺序写入存储器的至少一个物理存储桶位置之前,在高速缓冲存储器中收集将被写入所述索引的多个记录数据条目。
根据本发明的另一个实施例,提供了一种系统,其包括:
包括计算机可读介质的物理处理器和存储器装置,所述计算机可读介质包含可执行的程序指令,该可执行的程序指令用于通过均匀存取编制索引处理而存取存储在非均匀存取存储器中的索引的方法,所述方法包括:
维持转换表格,以便将由编制索引处理生成的逻辑存储桶标识符映射到存储器的物理存储桶位置,从而存取所述索引中的每个记录数据条目;
在后续的将条目的集合顺序写入存储器的至少一个物理存储桶位置之前,在高速缓冲存储器中收集将被写入所述索引的多个记录数据条目。
在一个实施例中:
存储所述索引的存储器包括物理装置层,该物理装置层的特征在于非均匀的读和写存取,以及关于尺寸、对准和定时的不变性。
在一个实施例中:
存储所述索引的所述存储器包括闪存、相变和固态磁盘存储器装置中的一个或多个。
在一个实施例中:
存储所述索引的存储器包括闪存装置,该闪存装置包括多个擦除块,每个擦除块包括多页,并且每页包括多个存储桶。
根据本发明的另一个实施例,提供了一种通过均匀存取编制索引处理存取存储在非均匀存取存储器中的索引的方法,所述方法包括:
提供转换表格,该转换表格将逻辑存储桶标识符映射到用于所述索引中的每个记录数据条目的存储器的物理存储桶位置,所述逻辑存储桶标识符由编制索引处理生成;
存取映射到所述逻辑存储桶标识符的物理存储桶位置;
在高速缓冲存储器中收集将被写入所述索引的记录数据条目;
随后将来自高速缓冲存储器的所述记录数据条目的集合顺序地写入在所述存储器的至少一个新的物理存储桶位置中的索引;以及
更新所述转换表格,从而将所述至少一个新的物理存储桶位置与逻辑存储桶标识符相关联。
根据本发明的另一个实施例,提供了一种计算机系统,其包括:
非均匀存取存储器,其中存储了索引,所述索引包括在存储器的物理存储桶位置中的记录数据条目;
转换表格,其将由均匀存取编制索引处理生成的逻辑存储桶标识符映射到每个所述记录数据条目的存储器的物理存储桶位置;
高速缓冲存储器,其用于被收集的将被写入索引的记录数据条目;
用于存取存储器的物理存储桶位置的装置,所述物理存储桶位置被映射到通过所述编制索引处理提供到所述转换表格的逻辑存储桶标识符;
用于将来自所述高速缓冲存储器的记录数据条目的集合顺序地写入在所述存储器的至少一个物理存储桶位置中的索引;以及
用于更新所述转换表格以使所述至少一个物理存储桶位置与逻辑存储桶标识符相关联的装置。
附图说明
本发明将通过结合附图参考具体实施方式而被更全面地理解:
图1是说明了根据本发明的一个实施例执行的多种编制索引操作的示意性框图;
图2A-2D说明了可以在本发明中使用的数据结构的多种实施例;
图3是说明了根据本发明的一个实施例的查找操作的示意性框图;
图4是说明了根据本发明的一个实施例的插入操作的示意性框图;
图5是根据本发明的一个实施例的删除操作的示意性框图;
图6是根据本发明的一个实施例的更新操作的示意性框图;
图7A和7B是说明了根据本发明的一个实施例用于生成可用擦除块的随机读处理的示意性框图;
图8A和8B是说明了根据清除处理生成可用擦除块的另一种方法的示意性框图;
图9是说明了用于说明本发明的实施方式的六层图示或堆栈的示意性框图;
图10是在本发明的一个实施例中使用的记录条目的示意图;
图11A-11E示意性地说明了根据本发明的一个实施例的布谷鸟散列的实施方式;
图12是根据本发明的一个实施例的多个存储桶的示意性说明,每个存储桶保持多个记录;
图13是根据本发明的一个实施例的存储桶的内容的示意图;
图14是说明了根据本发明的一个实施例的物理闪存芯片的一个示例的示意性框图,所述物理闪存芯片具有多个晶片、擦除块、页和存储桶;
图15A-15B说明了根据本发明的一个实施例的装置管理层的特定组件。
具体实施方式
A.概述
根据本发明的一个或多个实施例,专用的存储器技术和算法被用于构建同时具有大量记录和处理要求的索引。一个实施例利用置换散列编制索引算法,例如布谷鸟散列。本发明使能使用非均匀存取存储器技术,例如闪存、相变和固态磁盘(SSD)存储器装置。
在本发明的多个实施例中,提供了新的数据结构和方法以确保编制索引算法以对该算法固有(有效)的方式执行,同时存储器装置具有对存储器装置有效的IO(输入/输出)模式。
产生一种数据结构,即间接表格,其将由编制索引算法视为的逻辑存储桶映射到存储器装置上的物理存储桶。这种映射使得增强了对非均匀存取存储器装置的写性能。
另一种数据结构,即相关的高速缓冲存储器被用于收集存储桶并将所述存储桶顺序地写出到存储器装置,作为高速缓冲存储器的收回(eviction)和写回策略的一部分。
多种方法被用于以被编制索引算法要求的(记录的)存储桶填充(populate)高速缓冲存储器。可以在要求读取期间或通过清除处理自存储器装置将额外的存储桶读取到高速缓冲存储器。
结合间接表格使用高速缓冲存储器允许对存储器装置的大量有顺序的写入。
虽然闪存技术具有获得用于编制索引问题所需要的容量和IO速率的基本能力,但闪速存取(flash access)特征是非均匀的。这种非均匀性足够重要地使以闪存装置(如果有的话)工作的一般的编制索引算法表现欠佳。
在本发明中使用的非均匀存取闪存是电可擦除的可编程只读存储器(EEPROM),其必须以数百至数千比特的大块尺寸被读、写和擦除,即无字节水平的随机存取。物理地,闪存是非易失性存储器形式,其将信息存储在由浮栅晶体管制成的存储器单元的阵列中。存在两种类型的闪存装置:NAND闪存和NOR闪存。NAND闪存以比NOR闪存更低的成本、更快的擦除、顺序的写速度和顺序的读速度提供了更高的密集性和大容量。如在本申请和本发明中使用的,“闪”存意味着覆盖NAND闪存,而不覆盖NOR存储器。NAND包括单层单元(SLC)装置和更新的多层单元(MLC)装置,在单层单元装置中,每个单元仅存储1比特的信息,所述多层单元装置能够在每单元中存储多于1比特。虽然NAND闪存提供了快速存取时间,但其不能和用作PC中的主存储器的易失性DRAM存储器一样快。闪存装置可以或者可以不包括闪存文件系统。闪存文件系统通常与不具有内置的控制器的嵌入式闪存一起使用,用于执行磨损水准测量和误差校正。
典型的NAND闪存芯片可以存储数GB的内容。与附连到计算机的存储器不同,闪存芯片上的存储器必须以特定尺寸并且在特定边界上存取。此外,一旦存储器的区段被写入,则必须在这些存储器位置能够被再次写入之前执行擦除操作。同样,位置磨损,从而确保全部位置获得相同数量的写入进一步使使用复杂化。读时间、写时间以及擦除时间可以显著变化(从数微秒到数毫秒)。因此,所述定时、磨损水准测量和对准约束使得闪存的实际应用极为困难。
闪存装置可以包括一个或多个晶片(硅晶圆)。每个晶片在极大程度上能够被独立地存取。
晶片包括数千个擦除块。擦除块通常具有128-512KB的尺寸。当数据需要被清除时,其必须在擦除块边界上被清除。
NAND闪存的另一个限制是数据仅能够被顺序地写。此外,用于写的建立时间很长,约为读的10倍。
数据在页粒度上被读取。页可以基于特定的闪存芯片而在1KB至4KB的范围内。与每页相关联的是一些字节,所述字节可以用于纠错码(ECC)校验和。
数据在页粒度上被写入。一旦写入,则所述页不能被再次写入,直至其擦除块(包括所述页)被擦除。擦除块可以包括几十至超过100页。
以上读和写页粒度的一个例外是子页写或部分页编程。基于所述技术,页可以在需要擦除之前被部分地写入多达4次。
由于NAND闪存块中的页可以被顺序地写入并且仅在块擦除操作间写入一次,因此随后的写入要求对不同的页的写入,通常位于不同的闪存块中。块擦除的问题由依据闪存文件系统产生可写的闪存块的池而操控。
对擦除块进行擦除是关于时间的(time-wise)最昂贵的操作,因其可进行数毫秒。对于大量使用(有关业务(traffic-wise))的装置,可以生成擦除块的速度(即可用擦除块能够以多快的速度可用)通常是闪存设计中的限制因素。
许多SSD(固态磁盘)使用闪存技术。SSD中的固件操控在称为闪存转换层(FTL)的层中的前述存取问题。然而,这么做,固件对将如何使用SSD做出假设(例如,主要读、主要写、读和写的尺寸和对准),并且作为这些假设的结果,SSD的性能特征通常对于编制索引算法是次优的。
人们在文献和实践中发现的许多编制索引算法是基于均匀存储器存取模型的,即全部存储器可在时间上被均等地存取以用于读和写,并且没有对存取尺寸或对准的任何第一级的约束。
如果人们考虑编制索引方案,则例如插入、删除、查找和修改等操作通常要求更大量并且变化量的时间,而块,通常很小的块(大约4KB)的读和写要求更少的时间。块表现为随机的,即任意块均可以被读,并且任意其他块均可以被写。对于一些算法,具有随机的读-修改-写IO概况,即随机块被读,并且之后以略微修改的数据写回相同的位置。
编制索引算法需要有效操作的这种随机IO不是闪存意图提供的。虽然闪存能够很好地操控随机读,但随机写是困难的,读-修改-写也困难。这是因为人们不能在已写入的情况下复写一些内容,人们必须首先对其进行擦除。为了进一步使所述方案复杂化,擦除需要时间,并且必须发生在大的边界上(通常为64KB)。
当擦除块被擦除时,在该块中的任何有效数据需要被移动到别处。如果所述算法在闪存装置两端写入随机的4KB块,则简单的实施方式将导致块始终被擦除。由于擦除时间较慢,因此将显著地损害性能。
根据本发明,为了允许顺序地写入闪存,同时仍保持编制索引算法期望的逻辑随机存取,产生了转换或间接表格。这种表格将编制索引算法需要的(记录的)逻辑存储桶映射到闪存装置的物理存储桶(例如,页)。
当编制索引算法在存储桶(例如来自闪存的数据页)中读取时,为了修改存储桶内容(插入、更新或删除操作),存储桶被移动到高速缓冲存储器。闪存装置上相应的存储桶现在可以被标记为无效(可用)。在SSD的情况下,这可以采取TRIM命令的形式。
根据本发明的进一步的实施例,提供方法以生成可用擦除块。在任意给定时间,擦除块可以具有有效和无效数据的组合。为了释放擦除块,全部有效数据必须从所述块中移除。存在两种能够用于完成此任务的机构。一种机构是使用由编制索引算法生成的随机读取来(比编制索引算法要求的)更多地读取,从而释放擦除块。当编制索引算法试图生成随机读取时,随着时间的流逝,全部擦除块最终被读取并且收获空页。例如,如果包含所述读取的擦除块具有一些可用页以及一些有效页,则所述算法可以选择在整个擦除块中读取并且将全部有效页置于高速缓冲存储器中。这具有的作用是释放所述擦除块,以便用于随后的擦除和之后的写入。
可替换地,例如,如果前述随机读取处理不足够快,则分离的清除处理(例如,线程)能够用于读取擦除块,并且将有效页置于高速缓冲存储器中,以便接合到其他擦除块中。
当高速缓冲存储器被填满时,条目必须被写出。高速缓冲存储器条目的集合被收集,其将被顺序地写入部分页(如果闪存装置允许部分页写入的话)的相邻集合、多个页和/或一个或多个擦除块。当高速缓冲存储器条目被写入闪存装置时,间接表格被更新,使得编制索引算法仍视条目为处于固定的逻辑地址。
B.编制索引操作
现在将利用附图1-6说明本发明的多个实施例,从而说明根据本发明执行的多种编制索引操作。图7-8说明了两种生成可用擦除块以有效利用存储介质(例如闪存)的方法。这些实施例意味着是示例性的,而非限制性的。
图1是一些编制索引操作的概览,所述编制索引操作利用根据本发明的一个实施例的存储桶转换表格17和高速缓冲存储器23。在图1的顶部,三个编制索引操作12-14被显示为对查找函数15和转换函数16的可替换的输入。第一编制索引操作12是用于自用于密钥的(记录条目)返回卫星数据的“查找密钥”。第二编制索引操作13是用于更新(修改)用于所述密钥的记录条目的“更新用于密钥的卫星数据”。第三编制索引操作14是用于插入新的记录条目的“插入新的密钥”。例如删除的其他编制索引操作未在图1中示出,但在以下关于图5进行了说明。
全部三个编制索引操作首先执行查找函数15,其中密钥f(key)的一些函数被用于生成索引,此处为支持(例如加速)散列表格查找的逻辑存储桶标识符。存储桶标识符(索引)被输入到转换函数16,其中逻辑存储桶标识符f(index)的一些函数在闪存中生成物理存储桶位置。转换函数由存储桶转换表格17实现,所述存储桶转换表格17是逻辑存储桶标识符(由编制索引算法提供)到目标闪存位置(闪存中的物理存储桶位置)的映射。存储在闪存26中的字典(索引)可以包括将查找密钥(例如,对象名称)映射到卫星数据(例如,指向存储在磁盘上的对象的位置指针)的记录。
接着,取决于执行的是三个编制索引操作(查找、更新或插入)中的哪个编制索引操作,执行在图1的下半部分中显示的步骤中的一个或多个。
对于查找操作18,由转换函数标识的存储桶条目通过后备的(lookaside)高速缓冲存储器自闪存中的目标存储桶22读取30(例如,如果目标存储桶被存储在高速缓冲存储器中,则所述目标存储桶可以自高速缓冲存储器23读取,而不是自闪存26读取)。
对于更新操作19,由转换函数标识的存储桶条目(原始的存储桶条目)自闪存(或高速缓冲存储器)的擦除块21a中的目标存储桶22读取30,所述存储桶被更新并且移动32到高速缓冲存储器,并且在随后的写入24中,多个高速缓冲存储器存储桶条目被顺序地读取到闪存中的部分页、多个页和/或擦除块(例如,新的擦除块21b)的相邻的集合。所述处理将闪存中全部被移动的存储桶的状态更新33为无效数据(例如,对于修整操作可用或可使用)。
对于插入操作20,目标存储桶再次自闪存读取并且被修改的存储桶条目被移动34到高速缓冲存储器,再次用于随后的顺序地写入24闪存中的新的位置。
图1示意性地示出了用于在执行将高速缓冲存储器存储桶条目的集合顺序地写入24相邻的闪存存储桶之前,收集多个存储桶条目的高速缓冲存储器23。在一个实施例中,清除操作25被用于产生可用的擦除块,所述处理包括在清除处理以及重新分配被释放的闪存擦除块期间,在高速缓冲存储器中存储任意有效的存储桶(来自擦除块)。
以下将关于图3-6的流程图更为具体地说明图2中说明的新的数据结构、图1中引用的编制索引操作的讨论。
C.数据结构
图2说明了在本发明中有用的数据结构的多个实施例。这些数据结构意味着是示例性的,而非限制性的。
图2a说明了用于将逻辑存储桶索引(由编制索引算法生成)转换到物理闪存存储桶地址的存储桶转换表格(BTT)300的一个实施例。BTT表格条目被显示为具有三个域:有效301、闪存物理存储桶地址302和扩展的存储桶状态303。存储桶地址粒度是闪存装置的最小的写入尺寸,称作部分页写入(例如,用于SLC NAND)或页写入(例如,用于MLC NAND)。BTT是逻辑存储桶条目与物理存储桶条目的1∶1的映射。所述表格使能闪存存储桶分配的重组,以用于更高的随机性能(由编制索引算法随机读和随机写)。额外的状态信息可以被增加到第三域中的BTT,从而使能算法加速。
图2b示出了存储桶有效表格(BVT)305的一个实施例。这种表格跟踪闪存中的哪个物理存储桶是有效的,从而管理存储桶到用于修整的块的清除。作为一个示例,标记为有效的字段306可以是紧凑的比特阵列(1比特/存储桶)。BVT的尺寸是闪存存储桶条目的总数,BTT仅使用所述闪存存储桶条目的子集。
图2c说明了具有连同相反BTT指针313(在存储桶转换表格17中的自索引)一起包括在存储桶中的多个记录310、311、312...的闪存存储桶309的一个实施例。因此,每个存储桶包括一个或多个记录以及用于在闪存存储桶(例如,页)被插入、移动或删除时更新BTT的相反指针的集合。存储桶的每个元素(记录或指针)可以具有增加的冗余的内容,例如额外的ECC比特,从而改善数据结构的单个的可靠性并且显著增大存储器装置的使用寿命。例如,任意的序列号字段可以被增加到闪存存储桶309,以用于在电力故障事件期间执行数据一致性校验,还可以提供其他最优化标记。
因为记录尺寸相对于存储桶尺寸较小,所以这提供了在单个的记录基础上实现额外的错误恢复信息的机会(可选地)。这种可选的特征将通过增大可以被校正的比特误差和故障的数量而改善方案的整体可靠性,并且由此增大潜在的存储技术的有效工作寿命。
图2d示出了包括多个擦除块316(1-M)的SLC NAND闪存装置315的一个示例。每个擦除块包括多个页317(1-N)。在本示例中,每一页是4KB,并且每一页包括多个存储桶318(1-B),每个存储桶是1KB。在本示例中,所述装置支持部分页写入。
存储桶表示闪存装置的最小写入尺寸。通常,存储桶是页。如果允许部分页写入,则每个闪存页可以提供一个或多个存储桶,例如四个部分页SLC NAND装置支持每页四个存储桶。
每个擦除块提供多个闪存页。每个闪存装置具有多个擦除块,并且每个块是被独立地擦除的。
典型的闪存子系统包括多个闪存装置。NAND闪存装置在擦除操作之间,在给定块内的每一页(或部分页)上被顺序写入一次,其中多个块可用于同时写和读。
D.处理流程图
图3说明了用于验证密钥的存在并且返回相关联的卫星数据的查找操作处理的一个实施例。在步骤一41中,查找密钥被输入到查找函数。在步骤二42中,查找函数f(key)生成支持(例如,加速)散列表格查找的逻辑存储桶标识符。所述逻辑存储桶标识符被输入到转换函数,所述转换函数在步骤三43中经由存储桶转换表格(BTT)17映射到闪存(物理存储桶)位置。在步骤四44中,闪存中的目标存储桶自闪存读取45a,除非存储桶被存储在高速缓冲存储器中,在此情况下,目标存储桶可以自高速缓冲存储器23读取45b。在步骤六46中,用于密钥的卫星(记录)数据被返回到编制索引算法。
图4示出了插入操作处理的一个实施例。第一步骤71输入密钥到查找函数。在步骤二72中,查找函数f(key)生成索引,此处是逻辑存储桶标识符。在步骤三73中,存储桶标识符被输入到转换函数,该转换函数利用存储桶转换表格(BTT)17,将存储桶标识符映射到应该发生插入的闪存物理存储桶位置。在步骤四74中,插入处理自转换函数接收目标存储桶位置。在步骤五75中,插入处理自闪存75a的擦除块21a或自高速缓冲存储器75b读取目标存储桶22。在步骤六76中,插入处理将记录条目插入到目标存储桶中并且将修改后的存储桶写入高速缓冲存储器。在步骤七77中,多个存储桶条目(包括修改后的目标存储桶)通过插入处理自高速缓冲存储器73读取。在步骤八78中,插入处理将修改后的目标存储桶和自高速缓冲存储器读取的其他存储桶写入闪存26中的新的位置(擦除块21b中的页)。在步骤九79中,插入处理以用于从高速缓冲存储器移动到闪存79a的全部存储桶的新位置更新存储桶转换表格17,并且还更新用于被移动的全部存储桶的BVT 79b中的存储桶有效条目。在步骤十80中,插入处理将被移动的高速缓冲存储器条目标记为只读(可使用)。在步骤十一81中,插入处理将原始的闪存存储桶(现在移动到新的擦除块)标记为可用。
图5示出了删除操作处理的一个实施例。在第一步骤91中,密钥被提供到查找函数。在步骤二92中,查找函数f(key)生成索引,此处是逻辑存储桶标识符。在步骤三93中,存储桶标识符被提供到转换函数,该转换函数利用存储桶转换表格17将存储桶标识符映射到物理闪存存储桶位置。在步骤四94中,删除处理接收闪存位置。在步骤五95中,目标存储桶自闪存读取。在步骤六96中,所述处理删除存储桶中的原始记录条目并且将修改后的存储桶(删除了条目)写入高速缓冲存储器23。在步骤七97中,存储桶的组(集合)自高速缓冲存储器读取。在步骤八98中,自高速缓冲存储器23读取的更新的目标存储桶和其他存储桶被顺序地写入闪存中的可用页的相邻集合。在步骤九99中,删除处理以闪存中用于全部被移动的存储桶99a的新位置更新存储桶转换表格,并且更新其在BVT 99b中的有效状态。在步骤十100中,删除处理将高速缓冲存储器条目标记为只读。在步骤十一101中,删除处理将现在移动到闪存中的新位置的原始闪存存储桶标记为可用。
图6示出了用于修改存储在闪存中的索引中的记录的更新操作处理的一个实施例。在第一步骤51中,密钥被提供为查找函数的输入。在步骤二52中,查找函数f(key)生成索引,此处为逻辑存储桶标识符。存储桶标识符被输入到转换函数。在步骤三53中,该转换函数利用存储桶转换表格17将存储桶标识符映射到应该发生更新的闪存中的物理存储桶。在步骤五55中,目标存储桶自闪存55a或自高速缓冲存储器55b读取。在步骤六56中,在更新所述条目后,更新的存储桶被写入高速缓冲存储器23。在步骤七57中,存储桶的组自高速缓冲存储器23读取,并且在步骤八58中,自高速缓冲存储器顺序地写入闪存26中的新位置。在步骤九59中,更新处理以用于全部被移动的存储桶59a的新位置更新存储桶转换表格17,并且更新其在BVT 59b中的有效状态。在步骤十60中,更新处理将高速缓冲存储器条目23中的被移动的条目标记为只读(并且由此可用于重写)。最终,在步骤十一61中,更新处理将现在移动到新位置的原始闪存存储桶标记为可用(可使用)。
图7A示出了用于生成可用擦除块的处理的一个实施例,其中(由例如查找、插入或修改等上游编制索引操作生成的)需求读取对相同擦除块中(作为目标存储桶)的额外的存储桶进行读取。在图7A中,所述处理被显示为更新请求。在步骤一111中,密钥被提供到查找函数。在步骤二112中,查找函数f(key)生成索引,此处为逻辑存储桶标识符。在步骤三113中,存储桶标识符被映射到闪存中的物理目标存储桶位置。在步骤四114中,更新和清除处理接收目标闪存位置。在步骤五115中,所述处理将相同擦除块中的全部有效存储桶标识为目标存储桶。在步骤六116中,更新处理自包含目标存储桶的闪存块读取目标存储桶和全部被标识的有效存储桶。在步骤七117中,所述处理更新目标存储桶中的记录条目并且将来自闪存块的全部有效存储桶写入高速缓冲存储器23。在步骤八118中,更新处理自高速缓冲存储器读取一组块。在步骤九119中,更新处理将自高速缓冲存储器23读取的更新后的目标存储桶和其他存储桶写入闪存26。在步骤十120中,更新处理以用于被移动的全部存储桶120a(从高速缓冲存储器写入闪存中的新的擦除块21b)的新位置更新存储桶转换表格17,并且更新BVT 120b中的存储桶条目。在步骤十一121中,更新处理将现在变陈旧的高速缓冲存储器条目标记为只读。在步骤十二122中,更新处理将原始闪存块(目标块中的全部块)标记为可用。
图7B示出了仅说明用于生成可用擦除块的随机读取处理的一个特定的实施例。
在本实施例中,置换散列编制索引算法125生成逻辑存储桶126。由编制索引算法观察到的逻辑存储桶尺寸被绑定到闪存擦除块尺寸,从而使得兼容编制索引算法和闪存。这些存储桶将因为索引读取和更新而被随机地读取。
存储桶转换(间接)表格127将逻辑存储桶索引转换到物理闪存装置存储桶位置。这种间接表格使编制索引算法能随机地工作,以便读、写和更新,并且具有在闪存装置等级下执行的大量顺序写。优选地,间接表格存储在永久存储器中,但如果所述间接表格存储在易失性存储器中,则其可以按需要重建。
间接表格的输出,即物理装置存储桶位置,被作为输入提供到充分相关的存储桶高速缓冲存储器128。在本实施例中,如果空擦除块先入先出129的内容在高水印Q之下,则整个擦除块(包含4KB的目标存储桶)被读取。
擦除块托管逻辑存储桶,典型的配置是一个擦除块保持16个4KB的逻辑存储桶。物理装置被配置为用于负载,例如90%,意味着使用了存储桶的90%。高速缓存(Caching)和牺牲(victimization)(收回)被用于在闪存中封装(集中)逻辑存储桶,从而使10%的其余的存储桶中的绝大部分被集中在可用擦除块中。
高速缓冲存储器牺牲(收回处理)利用在高速缓冲存储器中收集的16个存储桶,并且将所述16个存储桶自高速缓冲存储器写出到可用擦除块130。因为擦除块通过随机读操作而被随机地联系,所以读操作可以用于生成可用擦除块。使用加密散列函数以生成逻辑存储桶标识符将增大读操作的随机本质,并且由此改善生成可用擦除块的随机读。
图8A和8B示出了用于生成可用擦除块的一个可替换的清除处理。这种清除处理并非任何编制索引操作的一部分。而是,其被实现为低级的装置管理层的一部分。在这种处理中,闪存擦除块中的一组物理存储桶(的一些或全部)自闪存直接读取,并且存储桶有效表格27用于确定擦除块中的哪个存储桶是有效的。
如图8A中所示,在步骤一220中,清除处理25读取完整的擦除块21a。在步骤二222中,清除处理使用存储桶有效表格27来标识那些有效的读取的全部存储桶。在步骤三224中,对于每个有效存储桶,逻辑存储桶标识符自所述存储桶中提取。在步骤四226中,有效存储桶被存储在高速缓冲存储器23中,每个有效存储桶由其逻辑存储桶标识符作为索引。
图8B示出了一个示例,其中在步骤一中,清除处理25读取包含的存储桶[94,97]。在步骤二中,所述处理确定在95和96处的存储桶是有效的。有效的存储桶显示在存储桶有效表格中并被指定为“1”,而无效存储桶被指定为“0”。在步骤三中,用于存储桶95和96的逻辑存储桶标识符,即标签23和49,被分别提取自存储桶。在步骤四中,所述两个标签及其各自的存储桶95和96使用其各自的作为索引的标签23、49而插入到高速缓冲存储器中。
E.堆栈级图示和实施方式
现在将参考图9-16说明本发明的另一个更为具体的示例。
图9示出了用于说明本发明的实施方式的六层图示或堆栈200,其中闪存适应层207适应编制索引算法203期望的IO使用剖视图,其是与物理闪存装置211期望的图示非常不同的图示。在顶级201处,提供了记录的字典(索引),该字典要求特定的编制索引操作204(查找、删除、插入和修改记录)。编制索引算法层203以一个或多个编制索引算法实现字典,例如作为一个示例的杜鹃置换散列算法。所述编制索引算法具有将如何由索引持续层205存储用于索引的密钥的图示。所述索引图示是逻辑图,指定逻辑地址位置。所述图示进一步假设将存在对索引的关于尺寸、对准和定时的均匀存取,并且所述索引被存储在易变的(稳定的)存储器上。
索引持续层205将呈现用于向存储索引的记录的物理存储桶读和写的逻辑存储桶操作206。这些逻辑存储桶操作206被呈现到闪存适应层207,如前所述,该闪存适应层207将(编制索引处理的)逻辑存储桶转换为闪存装置上的物理存储桶位置。因此,所述闪存适应层适应由上述编制索引算法期望的所述图示和IO使用概况,其与下面由物理存储器装置(闪存211)期望的图示非常不同。此处,物理存储桶操作208包括随机读和集体(按块的顺序)写,其构成了存储桶存取的非均匀模型。本示例中的物理存储桶操作可以进一步包括修整命令。
物理存储桶操作由装置管理层209实现,其跟踪并且调整物理闪存装置上的资源。此处的这些物理装置操作210包括随机读、大量的顺序写以及修整命令。
物理装置层211的特征在于其关于尺寸、对准和定时的非均匀的读和写以及不变性。这种物理装置的示例包括原始闪存、相变、SSD和/或具有位于所述装置上的闪存文件系统的闪存。
本发明使能装置管理层下面的额外的可选增强,例如:
-如果直接并入SSD的闪存文件系统或等价的存储器装置中,则存储桶修整(精细页修整)和跟踪页内的存储桶的模型使能更好的擦除块管理。
-将存储桶映射到闪存页(flash page)上是一种提取。存储桶可以映射到用于SLC NAND的部分页,从而通过最小化每次改变写入闪存的数据量而增大这些装置的使用寿命。存储桶还可以映射到多个闪存页上,如果这对整个系统性能有益的话。
图10示出了索引记录的一个示例。记录140总共是32字节,包括用于存储指纹(密钥)的第一20字节字段141。指纹优选是数据内容的加密的散列摘要,例如SHA-1散列算法。为了便于说明,而非指定指纹的类型为例如“AB92345E203...”的十六进制数字,单个指纹将在图11-14中通过例如P、Q、R、S、T等单个大写字母指定。这些大写字母还将作为用于整个记录的代用品,再次为了说明目的而简化。记录的字段还包括两字节引用计数字段142、五字节物理块地址字段143、一字节标记字段144以及四字节混杂字段145。PBA字段143包含对存储在磁盘上的数据的物理块地址的指针,以用于指定的指纹141。所述引用计数跟踪对存储在磁盘上的数据的引用的数量。
根据本发明的一个实施例,来自索引记录的指纹141被用作前述(图1)的查找函数f(key)的输入密钥。在本示例中,函数f(key)包括四个散列函数H0、H1、H2和H3的集合。一般地,人们可以使用任意的两个或更多个散列函数的集合。散列函数Hx将指纹映射到包括[0,N-1]的范围,其中N是散列表格的尺寸。假设在本示例中指纹自身是散列,则人们可以提取比特字段(BitField)来生成以下四个散列值的族:
H0(x)=x<0:31>mod N
H1(x)=x<032:63>mod N
H2(x)=x<064:95>mod N
H3(x)=x<096:127>mod N
所提取的比特字段的宽度大于或等于log2(N)。可以使用符合log2(N)约束的没有交集的比特的任意组合。如图10所示,仅第一字段141中的指纹是散列,从而形成密钥。记录140的其余内容(字段142-145)包括数值或有效载荷。
图11示出了已知为布谷鸟散列的置换散列编制索引算法的一个示例。为了便于说明,仅使用两个函数。图11A示出了2×3个栅格,其中指纹P分别自函数H0(x)和H1(x)生成散列值2和5,同时指纹Q自这些相同的函数生成散列值1和3。所述布谷鸟散列算法将在两个可替换的散列值中选择,从而将P和Q置于标记为0-6的七个槽中的一个槽中(图11B)。P可以位于2或5两个槽中的一个槽中,而Q可以位于1或3两个槽中的一个槽中。所述算法将Q置于最下面的空槽1中,而将P置于槽2中,如图11C所示。虽然在本示例中,记录容器被称作保持一个记录的槽,但应该理解本发明不限于此,编制索引算法还将保持多个记录的存储桶视为容器。此处,使用单个记录槽以简化说明。
现在,提供了另一个指纹R,其自相同的散列函数(见图11D中的表格)生成散列值1和2。所述散列算法将R置于左边的位置,即槽1,置换当前的条目Q(图11E)。Q现在将被移动到由H1(Q)指定的其他可选位置,即位置3。所述算法将保持置换记录,直至每个记录均处于空槽中。
在本示例中,为了完成“插入R”的操作,所述编制索引算法生成以下读和写请求:
读1(获得Q)
读2(获得P)
写1(写R)
读3(有效性校验)
写3(Q)
前两个读用于验证R已不存在于索引中。有效性校验(读3)确定槽号3是否为空。如果是,则Q可以被写入槽3,并且当没有条目被再写入槽3中时,所述算法完成。如果槽3不为空,则槽3中的当前条目需要被移动到其他槽。如果我们具有位图,则槽3的内容是已知的。否则,我们需要读取槽3中的条目以确定其状态。每个条目包含有效位,该有效位指示该条目是否有效。有效意味着其在被使用(并且当前占据的位置必须被置换)。无效意味着所述位置为空,并且被处理的记录可以被写入该处。有效位的内容还可以在占据一些存储器的情况下被存储在分离的位图中。
布谷鸟散列算法是递归的,因为其保持对条目的重写,置换之前的内容,直至其处于空条目中。实践中,这种处理很少超过一次置换。
所述编制索引算法具有存储桶和独立的记录操作。所述编制索引算法在以上(图11中)被描述为将一个记录置于一个容器(槽)中,但应该理解,通过所述编制索引算法,记录还可以被集中到存储桶中,即包含多个记录的存储桶。因此,以上示例是非限制性的,并且意味着一般地说明记录操作。
如前所述,因为独立的记录的读和写对闪存无效,所以独立的记录被集中在存储桶中。图12示出了四个这种存储桶,每个存储桶包含两个或更多个记录,即存储桶B0具有记录位置0和1,B1具有记录位置2和3,B2具有记录位置4和5,而B3具有记录位置6和x。存储桶尺寸是由闪存装置指示的最小写尺寸的函数(并且优选为等于所述最小写尺寸),即整页写入或部分页写入。典型的存储桶尺寸可以是4KB。存储桶内的记录没有特定的顺序要求,在查找操作期间,整个存储桶作为有效记录被搜索,使得能够在存储桶内的任意点处插入所述记录。当置换时,根据布谷鸟散列算法,存储桶中的条目可以被随机置换。因此,所述编制索引算法将逻辑存储桶写入表现为随机的位置,一次写入一个,最终通过散列适应层集中到更大的物理相邻(顺序)写入闪存装置。
图13示出了存储桶条目160的一个示例。4KB的存储桶尺寸是基于隐含的装置最小写尺寸的,所述最小写尺寸在此为4KB页。4KB存储桶包括4字节的第一字段161,其指定存储桶条目中的记录数量。4字节标签字段162指定逻辑存储桶标识符。这种标识符(标签)是逻辑地址,而非物理地址。所述转换表格将算法存储桶地址(ABA)映射到闪存存储桶地址FBA。所述高速缓冲存储器工作为(CPU术语中的)虚拟高速缓冲存储器,其中每个高速缓冲存储器行(条目)由标签标识,所述标签在此情况下为ABA。当所述算法请求其知道的在高速缓冲存储器中的全部记录时,请求的ABA被高速缓存,其中被映射(到FBA)的记录处于高速缓冲存储器的底端(例如,见图2C中,对BTT的相反指针313)。所述存储桶包括用于保持多个记录R0、R1、R2...的字段163,每个记录均具有32字节的尺寸。在本示例中,4KB的存储桶将保持:(4096-4-4)/32个记录,即每个存储桶中约127个记录。
图14是说明了一个实施例中的存储桶、页和擦除块的相对尺寸的闪存装置164的示意图。物理闪存装置是尺寸为2GB的芯片(封装)165。在芯片上,存在两个晶片(硅晶圆)166a、167b。在每个晶片上,可以具有2^14个擦除块,每个擦除块167通常是64KB。页168是可以被写入的最小尺寸,此处为4KB,并且确定存储桶169的尺寸同样为4KB,如在堆栈中的较高处使用的(见图9)。
图15示出了根据装置管理层(图9中的209)的一个实施例的选择组件,所述装置管理层用于跟踪和调整物理闪存装置上的资源。图15A(在顶部)示出了多个页(存储桶)170,随后是指示哪页有效的页分配映射171(1为有效,0为无效)。在此之下是在未来将被修整但目前还未进行的页的未决的修整映射172。页分配和未决修整映射可以用在如前所述的本发明的多个实施例中,以便确定存储桶是否保持了有效数据(见图1中所示的存储桶有效表格27)。
图15B示出了擦除块描述符表格175的一个示例,其由擦除块索引作为索引。每个擦除块描述符条目176包括多个字段,所述字段包括擦除的数量177、部分写入的数量178、部分读取的数量179、全部读取的数量180、全部写入的数量181和错误的数量182。这种信息可以用于生成如之前在本发明的多个实施例中所述的可用擦除块。
F.进一步的实施例
本发明可以用于实现文件系统的索引,例如在与本申请同一天提交并要求2009年6月26日提交的美国临时申请No.61/269,633的优先权的名为File System的由A.J.Beaverson和P.Bowden共同未决和共同拥有的序列号为No.的美国专利申请中公开的文件系统。此处对两个申请均要求优先权,并且每个申请的完整公开内均作通过引用整体并入本文。
本发明的实施例能够以数字电子电路实现,或以计算机硬件、固件、软件或其组合而实现。本发明的实施例可以被实现为计算机程序产品,即有形地嵌入例如机器可读存储器装置等计算机可读介质中的计算机程序,该计算机程序由数据处理设备执行或控制数据处理设备的操作,所述数据处理设备例如为可编程处理器、一台计算机或多台计算机。计算机程序能够以任意形式的编程语言写入,包括汇编或解释语言,并且所述计算机程序能够以任意形式配置,包括作为独立的程序或作为模块、组件、子例程或适于用在计算环境中的其他单元。计算机程序可以被配置为在一台计算机或多台计算机上执行,所述计算机位于一个位置或分布在多个位置中并由通信网络互连。
本发明的实施例的方法步骤可以由实施计算机程序的一个或多个可编程处理器执行,从而通过在输入数据上操作并且生成输出而执行本发明的多个功能。方法步骤还可以由专用逻辑电路执行,并且本发明的设备可以实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适于执行计算机程序的处理器以示例性的方式包括通用微处理器和专用微处理器以及任意类型的数字计算机中的一个或多个处理器。一般地,处理器将接收来自只读存储器和/或随机存取存储器的指令和数据。计算机的主要元件是用于执行指令的处理器和用于存储指令和数据的一个或更个存储器装置。一般地,计算机还将包括用于存储数据的一个或多个海量存储装置,或者可操作地耦接到所述一个或多个海量存储装置,以便从所述一个或多个海量存储装置接收数据和/或发送数据到所述一个或多个海量存储装置,所述海量存储装置例如为磁盘、磁光盘或光盘。适于嵌入计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,以示例性的方式包括半导体存储器装置,例如EPROM、EEPROM和闪存装置;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
应该理解的是,前述说明意图说明本发明的范围,而非限制本发明的范围。
Claims (23)
1.一种由均匀存取编制索引处理存取存储在非均匀存取存储器中的索引的方法,所述方法包括:
维持转换表格,从而将由编制索引处理生成的逻辑存储桶标识符映射到存储器的物理存储桶位置,以便存取所述索引中的每个记录数据条目;
在随后将条目的集合顺序写入所述存储器的至少一个物理存储桶位置之前,在高速缓冲存储器中收集将被写入所述索引的多个记录数据条目;
将来自所述高速缓冲存储器的记录数据条目的集合写入所述存储器的存储桶位置,作为顺序写入;以及
以用于集合的记录数据条目的存储桶位置更新所述转换表格,
其中,所述编制索引处理包括置换散列处理。
2.如权利要求1所述的方法,其包括:
将来自所述存储器的一个或多个顺序的记录数据条目读取到所述高速缓冲存储器;
将存储器中一个或多个条目被读取的物理位置指定为可用。
3.如权利要求1所述的方法,其包括:
使所述存储器中的多个顺序的物理存储桶位置作为可用块,这是通过将所述可用块中的任意有效条目读取到高速缓冲存储器,并且将存储器中这些条目被读取的物理位置指定为可用而实现的。
4.如权利要求1所述的方法,其中:
基于均匀地分布和唯一的索引密钥,所述编制索引处理生成对所述索引的随机存取请求。
5.如权利要求1所述的方法,其中:
所述存储器包括闪存、相变和固态磁盘存储器装置中的一个或多个。
6.如权利要求1所述的方法,其中:
所述存储器由随机写存取时间、随机读-修改-写存取时间、顺序写、对准约束、擦除时间、擦除块边界和磨损中的一个或多个限制。
7.如权利要求1所述的方法,其中:
所述存储桶的尺寸根据如页或部分页的所述存储器的最小写尺寸。
8.如权利要求7所述的方法,其中:
所述存储器具有包括多页的擦除块。
9.如权利要求1所述的方法,其包括:
维持存储桶有效表格,以用于跟踪所述存储器中的哪个物理存储桶位置有效。
10.如权利要求1所述的方法,其中:
存储器中的物理存储桶位置包括一个或多个记录数据条目的集合,以及对存储桶转换表格的自索引。
11.如权利要求10所述的方法,其中:
所述存储桶中的记录数据条目是不按顺序的。
12.如权利要求1所述的方法,其中:
所述存储桶转换表格被存储在永久存储器中。
13.如权利要求1所述的方法,其包括:
跟踪擦除块中可用的物理存储桶位置的数量,并且执行处理,从而在达到可用存储桶位置的阈值时,生成可用擦除块。
14.如权利要求1所述的方法,其中:
所述编制索引处理基于记录被插入、删除、查找和/或修改的请求而执行编制索引操作。
15.如权利要求1所述的方法,其中:
所述编制索引处理提供逻辑存储桶操作,该逻辑存储桶操作用于对存储所述索引的记录的物理存储桶位置进行读和写。
16.如权利要求1所述的方法,其中:
所述存储器包括闪存装置,该闪存装置包括多个擦除块,每个擦除块包括多页,并且每页包括多个存储桶。
17.如权利要求16所述的方法,包括:
通过响应于随机读取操作,将附加的存储桶读取到高速缓冲存储器,来产生可用的擦除块。
18.如权利要求16所述的方法,包括:
通过将擦除块读取到高速缓冲存储器,执行清除处理以产生可用的擦除块。
19.一种用于由均匀存取编制索引处理存取存储在非均匀存取存储器中的索引的装置,所述装置包括:
用于维持转换表格,从而将由编制索引处理生成的逻辑存储桶标识符映射到存储器的物理存储桶位置,以便存取所述索引中的每个记录数据条目的模块;
用于在随后将条目的集合顺序写入所述存储器的至少一个物理存储桶位置之前,在高速缓冲存储器中收集将被写入所述索引的多个记录数据条目的模块;
用于将来自所述高速缓冲存储器的记录数据条目的集合写入所述存储器的存储桶位置,作为顺序写入的模块;以及
用于以用于集合的记录数据条目的存储桶位置更新所述转换表格的模块,
其中,所述编制索引处理包括置换散列处理。
20.一种计算机系统,其包括:
非均匀存取存储器(26),包括在所述存储器的物理存储桶位置中存储的索引;
存储桶转换表格(17),其将由均匀存取编制索引处理生成的逻辑存储桶标识符映射到存储器的物理存储桶位置,以便存取所述索引中的每个记录数据条目;
高速缓冲存储器(23),其用于收集将被写入到存储器的记录数据条目;
用于存取(18)被映射到逻辑存储桶标识符的所述存储器的物理存储桶位置的装置,所述逻辑存储桶标识符通过所述编制索引处理提供到所述存储桶转换表格;
用于将来自所述高速缓冲存储器的记录数据条目的集合顺序地写入(24)在所述存储器的至少一个物理存储桶位置处的装置;以及
用于以所述记录数据条目的集合的至少一个物理存储桶更新(19)所述存储桶转换表格(17)的装置,
其中,所述编制索引处理包括置换散列处理。
21.如权利要求20所述的系统,其中:
存储所述索引的存储器包括物理装置层,该物理装置层的特征在于关于尺寸、对准和定时的不变性以及非均匀的读和写存取。
22.如权利要求20所述的系统,其中:
存储所述索引的存储器包括闪存、相变和固态磁盘存储器装置中的一个或多个。
23.如权利要求20所述的系统,其中:
存储所述索引的存储器包括闪存装置,该闪存装置包括多个擦除块,每个擦除块包括多页,并且每页包括多个存储桶。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26963309P | 2009-06-26 | 2009-06-26 | |
US61/269,633 | 2009-06-26 | ||
PCT/US2010/039966 WO2010151750A1 (en) | 2009-06-26 | 2010-06-25 | Scalable indexing in a non-uniform access memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102483754A CN102483754A (zh) | 2012-05-30 |
CN102483754B true CN102483754B (zh) | 2015-03-11 |
Family
ID=42541578
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080033630.9A Active CN102483755B (zh) | 2009-06-26 | 2010-06-25 | 文件系统 |
CN201080033622.4A Active CN102483754B (zh) | 2009-06-26 | 2010-06-25 | 在非均匀存取存储器中的可扩展编制索引 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080033630.9A Active CN102483755B (zh) | 2009-06-26 | 2010-06-25 | 文件系统 |
Country Status (10)
Country | Link |
---|---|
US (2) | US8880544B2 (zh) |
EP (2) | EP2433227B1 (zh) |
JP (3) | JP5695040B2 (zh) |
CN (2) | CN102483755B (zh) |
AU (2) | AU2010265954B2 (zh) |
BR (2) | BRPI1013794A8 (zh) |
CA (2) | CA2766161C (zh) |
DK (2) | DK2433226T3 (zh) |
ES (2) | ES2548194T3 (zh) |
WO (2) | WO2010151813A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847098B2 (en) | 2017-08-07 | 2023-12-19 | Weka.IO Ltd. | Metadata control in a load-balanced distributed storage system |
Families Citing this family (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
US10558705B2 (en) * | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
WO2012126180A1 (en) | 2011-03-24 | 2012-09-27 | Microsoft Corporation | Multi-layer search-engine index |
US8346810B2 (en) * | 2011-05-13 | 2013-01-01 | Simplivity Corporation | Reference count propagation |
US8924629B1 (en) | 2011-06-07 | 2014-12-30 | Western Digital Technologies, Inc. | Mapping table for improving write operation efficiency |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
US9626434B2 (en) * | 2011-08-30 | 2017-04-18 | Open Text Sa Ulc | Systems and methods for generating and using aggregated search indices and non-aggregated value storage |
CN102364474B (zh) * | 2011-11-17 | 2014-08-20 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
US9032183B2 (en) * | 2012-02-24 | 2015-05-12 | Simplivity Corp. | Method and apparatus for content derived data placement in memory |
US9165005B2 (en) * | 2012-02-24 | 2015-10-20 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
US9390055B2 (en) | 2012-07-17 | 2016-07-12 | Coho Data, Inc. | Systems, methods and devices for integrating end-host and network resources in distributed memory |
US9152325B2 (en) | 2012-07-26 | 2015-10-06 | International Business Machines Corporation | Logical and physical block addressing for efficiently storing data |
US8805793B2 (en) | 2012-08-08 | 2014-08-12 | Amazon Technologies, Inc. | Data storage integrity validation |
US10120579B1 (en) | 2012-08-08 | 2018-11-06 | Amazon Technologies, Inc. | Data storage management for sequentially written media |
US9225675B2 (en) | 2012-08-08 | 2015-12-29 | Amazon Technologies, Inc. | Data storage application programming interface |
US9904788B2 (en) | 2012-08-08 | 2018-02-27 | Amazon Technologies, Inc. | Redundant key management |
KR101954594B1 (ko) * | 2012-08-08 | 2019-03-06 | 아마존 테크놀로지스, 인크. | 아카이벌 데이터 저장 시스템 |
US8392428B1 (en) * | 2012-09-12 | 2013-03-05 | DSSD, Inc. | Method and system for hash fragment representation |
EP2898424B8 (en) * | 2012-09-19 | 2019-08-21 | Hitachi Vantara Corporation | System and method for managing deduplication using checkpoints in a file storage system |
US9043334B2 (en) * | 2012-12-26 | 2015-05-26 | Industrial Technology Research Institute | Method and system for accessing files on a storage system |
US9043923B2 (en) | 2012-12-27 | 2015-05-26 | Empire Technology Development Llc | Virtual machine monitor (VMM) extension for time shared accelerator management and side-channel vulnerability prevention |
US9612955B2 (en) * | 2013-01-09 | 2017-04-04 | Wisconsin Alumni Research Foundation | High-performance indexing for data-intensive systems |
US10558581B1 (en) | 2013-02-19 | 2020-02-11 | Amazon Technologies, Inc. | Systems and techniques for data recovery in a keymapless data storage system |
US9208105B2 (en) | 2013-05-30 | 2015-12-08 | Dell Products, Lp | System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support |
US9594795B1 (en) * | 2013-06-28 | 2017-03-14 | EMC IP Holding Company LLC | Maintaining data consistency when data is changed out from under another data service |
US9430492B1 (en) * | 2013-06-28 | 2016-08-30 | Emc Corporation | Efficient scavenging of data and metadata file system blocks |
US9043576B2 (en) * | 2013-08-21 | 2015-05-26 | Simplivity Corporation | System and method for virtual machine conversion |
US9531722B1 (en) | 2013-10-31 | 2016-12-27 | Google Inc. | Methods for generating an activity stream |
US9542457B1 (en) | 2013-11-07 | 2017-01-10 | Google Inc. | Methods for displaying object history information |
US9614880B1 (en) | 2013-11-12 | 2017-04-04 | Google Inc. | Methods for real-time notifications in an activity stream |
US9509772B1 (en) | 2014-02-13 | 2016-11-29 | Google Inc. | Visualization and control of ongoing ingress actions |
EP2913938A1 (de) * | 2014-02-26 | 2015-09-02 | Siemens Aktiengesellschaft | Verfahren und Anordnung zum Zugriff auf Informationen eines drahtlos zugreifbaren Datenträgers |
US9536199B1 (en) | 2014-06-09 | 2017-01-03 | Google Inc. | Recommendations based on device usage |
US9507791B2 (en) | 2014-06-12 | 2016-11-29 | Google Inc. | Storage system user interface with floating file collection |
US10078781B2 (en) | 2014-06-13 | 2018-09-18 | Google Llc | Automatically organizing images |
CN105320466A (zh) * | 2014-07-29 | 2016-02-10 | 广明光电股份有限公司 | 固态硬盘安排操作的方法 |
US9727575B2 (en) * | 2014-08-29 | 2017-08-08 | Microsoft Technology Licensing, Llc | File system with data block sharing |
WO2016093809A1 (en) * | 2014-12-09 | 2016-06-16 | Hewlett Packard Enterprise Development Lp | Storage media sections with alternative cells |
US9870420B2 (en) | 2015-01-19 | 2018-01-16 | Google Llc | Classification and storage of documents |
WO2016118607A1 (en) * | 2015-01-20 | 2016-07-28 | Ultrata Llc | Distributed index for fault tolerant object memory fabric |
US9880755B2 (en) | 2015-02-25 | 2018-01-30 | Western Digital Technologies, Inc. | System and method for copy on write on an SSD |
US10678650B1 (en) * | 2015-03-31 | 2020-06-09 | EMC IP Holding Company LLC | Managing snaps at a destination based on policies specified at a source |
US10303453B2 (en) | 2015-05-08 | 2019-05-28 | Desktop 365, LLC | Method and system for managing the end to end lifecycle of the virtualization environment for an appliance |
US11449322B2 (en) | 2015-05-08 | 2022-09-20 | Desktop 365, Inc. | Method and system for managing the end to end lifecycle of a cloud-hosted desktop virtualization environment |
JP6818982B2 (ja) | 2015-06-01 | 2021-01-27 | エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd | ファイルを格納する方法 |
JP6030713B1 (ja) * | 2015-06-16 | 2016-11-24 | 株式会社ソフトギア | 分散型データ処理プログラム、情報処理装置、分散型データベースシステム及び分散システム |
US10019382B2 (en) * | 2015-10-20 | 2018-07-10 | Sap Se | Secondary data structures for storage class memory (scm) enables main-memory databases |
JP6034467B2 (ja) * | 2015-10-23 | 2016-11-30 | 株式会社東芝 | システム |
CN105183401A (zh) * | 2015-10-30 | 2015-12-23 | 深圳市泽云科技有限公司 | 一种固态硬盘数据恢复方法、装置及系统 |
US10887232B2 (en) * | 2015-12-16 | 2021-01-05 | Hewlett Packard Enterprise Development Lp | Dynamic allocation of hash table resources |
CN105550345B (zh) * | 2015-12-25 | 2019-03-26 | 百度在线网络技术(北京)有限公司 | 文件操作方法和装置 |
US9880743B1 (en) * | 2016-03-31 | 2018-01-30 | EMC IP Holding Company LLC | Tracking compressed fragments for efficient free space management |
US20170315928A1 (en) * | 2016-04-28 | 2017-11-02 | Netapp, Inc. | Coarse-grained cache replacement scheme for a cloud-backed deduplication storage system |
JP6203929B2 (ja) * | 2016-10-20 | 2017-09-27 | 株式会社ソフトギア | 分散型データ処理プログラム、情報処理装置、分散型データベースシステム及び分散システム |
US11010300B2 (en) | 2017-05-04 | 2021-05-18 | Hewlett Packard Enterprise Development Lp | Optimized record lookups |
CN107391701B (zh) * | 2017-07-27 | 2021-04-23 | 郑州云海信息技术有限公司 | 一种文件创建方法及装置 |
CN107688463B (zh) * | 2017-09-21 | 2020-08-18 | 杭州全维技术股份有限公司 | 一种嵌入式设备版本文件打包的方法 |
US11243703B2 (en) | 2018-04-27 | 2022-02-08 | Hewlett Packard Enterprise Development Lp | Expandable index with pages to store object records |
JP2019194780A (ja) | 2018-05-01 | 2019-11-07 | 富士通株式会社 | 情報処理装置、データ管理プログラム及びデータ管理方法 |
EP3791274B1 (en) * | 2018-05-08 | 2024-05-01 | Telefonaktiebolaget LM Ericsson (publ) | Method and node for managing a request for hardware acceleration by means of an accelerator device |
US11163489B2 (en) * | 2018-05-23 | 2021-11-02 | SK Hynix Inc. | Workload clusterization for memory system and method of executing the same |
CN110633296A (zh) * | 2018-05-31 | 2019-12-31 | 北京京东尚科信息技术有限公司 | 数据查询方法、装置、介质及电子设备 |
CN108984686B (zh) * | 2018-07-02 | 2021-03-30 | 中国电子科技集团公司第五十二研究所 | 一种基于日志合并的分布式文件系统索引方法和装置 |
US10884917B2 (en) * | 2018-12-05 | 2021-01-05 | Western Digital Technologies, Inc | Dual media packaging targeted for SSD usage |
US11170803B1 (en) | 2019-04-05 | 2021-11-09 | Western Digital Technologies, Inc. | Magnetic recording write head with spin-torque oscillator (STO) and extended seed layer |
US11354038B2 (en) | 2019-07-19 | 2022-06-07 | International Business Machines Corporation | Providing random access to variable-length data |
WO2021170228A1 (en) * | 2020-02-26 | 2021-09-02 | Huawei Technologies Co., Ltd. | A device and a method for indexing snapshots of multiple file systems |
US11138115B2 (en) * | 2020-03-04 | 2021-10-05 | Micron Technology, Inc. | Hardware-based coherency checking techniques |
US11403023B2 (en) | 2020-10-20 | 2022-08-02 | Micron Technology, Inc. | Method of organizing a programmable atomic unit instruction memory |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US11436187B2 (en) | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
US12020062B2 (en) * | 2020-10-20 | 2024-06-25 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US11740929B2 (en) * | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11734189B2 (en) * | 2021-03-16 | 2023-08-22 | Micron Technology, Inc. | Caching of logical-to-physical mapping information in a memory sub-system |
US11755495B2 (en) * | 2021-03-16 | 2023-09-12 | Micron Technology, Inc. | Storing a logical-to-physical mapping in NAND memory |
CN113703678B (zh) * | 2021-08-20 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种存储桶索引重分裂的方法、装置、设备和介质 |
KR102670498B1 (ko) * | 2021-12-27 | 2024-05-29 | (주)하몬소프트 | 블록체인 기반의 엔드포인트 위협탐지 및 대응 장치 |
US12007911B2 (en) | 2022-03-10 | 2024-06-11 | Samsung Electronics Co., Ltd | System and method for efficiently obtaining information stored in an address space |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1297623A (zh) * | 1998-04-14 | 2001-05-30 | 摩托罗拉公司 | 量化数字系统中的信号的方法和装置 |
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN101369240A (zh) * | 2007-08-14 | 2009-02-18 | 戴尔产品有限公司 | 用于在信息处理系统中管理存储错误的系统和方法 |
Family Cites Families (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
JPH06195253A (ja) * | 1992-12-24 | 1994-07-15 | Nippon Telegr & Teleph Corp <Ntt> | ファイル管理装置 |
US5815709A (en) * | 1996-04-23 | 1998-09-29 | San Microsystems, Inc. | System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like |
US6412080B1 (en) * | 1999-02-23 | 2002-06-25 | Microsoft Corporation | Lightweight persistent storage system for flash memory devices |
US6453404B1 (en) * | 1999-05-27 | 2002-09-17 | Microsoft Corporation | Distributed data cache with memory allocation model |
US6704730B2 (en) | 2000-02-18 | 2004-03-09 | Avamar Technologies, Inc. | Hash file system and method for use in a commonality factoring system |
US7266555B1 (en) | 2000-03-03 | 2007-09-04 | Intel Corporation | Methods and apparatus for accessing remote storage through use of a local device |
CA2331474A1 (en) | 2001-01-19 | 2002-07-19 | Stergios V. Anastasiadis | Stride-based disk space allocation scheme |
US7043637B2 (en) | 2001-03-21 | 2006-05-09 | Microsoft Corporation | On-disk file format for a serverless distributed file system |
US7062490B2 (en) | 2001-03-26 | 2006-06-13 | Microsoft Corporation | Serverless distributed file system |
US6912645B2 (en) | 2001-07-19 | 2005-06-28 | Lucent Technologies Inc. | Method and apparatus for archival data storage |
US7115919B2 (en) * | 2002-03-21 | 2006-10-03 | Hitachi, Ltd. | Storage system for content distribution |
JP3896077B2 (ja) * | 2002-09-11 | 2007-03-22 | 株式会社東芝 | 計算機システムおよびファイル管理方法 |
JP4077313B2 (ja) * | 2002-12-27 | 2008-04-16 | 株式会社リコー | 情報処理装置、フラッシュrom管理方法およびプログラム |
US7139781B2 (en) | 2003-04-29 | 2006-11-21 | International Business Machines Corporation | Managing filesystem versions |
US7380059B2 (en) * | 2003-05-16 | 2008-05-27 | Pillar Data Systems, Inc. | Methods and systems of cache memory management and snapshot operations |
US7092976B2 (en) * | 2003-06-24 | 2006-08-15 | International Business Machines Corporation | Parallel high speed backup for a storage area network (SAN) file system |
US7877426B2 (en) | 2003-07-17 | 2011-01-25 | International Business Machines Corporation | Performance-enhancing system and method of accessing file system objects |
US7509473B2 (en) * | 2003-08-27 | 2009-03-24 | Adaptec, Inc. | Segmented storage system mapping |
US7328217B2 (en) | 2003-11-26 | 2008-02-05 | Symantec Operating Corporation | System and method for detecting and storing file identity change information within a file system |
US20050187898A1 (en) * | 2004-02-05 | 2005-08-25 | Nec Laboratories America, Inc. | Data Lookup architecture |
US7272654B1 (en) * | 2004-03-04 | 2007-09-18 | Sandbox Networks, Inc. | Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US8583657B2 (en) * | 2004-05-06 | 2013-11-12 | Oracle International Corporation | Method and apparatus for using a hash-partitioned index to access a table that is not partitioned or partitioned independently of the hash partitioned index |
US8108429B2 (en) | 2004-05-07 | 2012-01-31 | Quest Software, Inc. | System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services |
US7827182B1 (en) * | 2004-06-02 | 2010-11-02 | Cisco Technology, Inc | Searching for a path to identify where to move entries among hash tables with storage for multiple entries per bucket during insert operations |
EP1617341A1 (en) | 2004-07-16 | 2006-01-18 | International Business Machines Corporation | File operation management device |
US7730114B2 (en) * | 2004-11-12 | 2010-06-01 | Microsoft Corporation | Computer file system |
US7814078B1 (en) | 2005-06-20 | 2010-10-12 | Hewlett-Packard Development Company, L.P. | Identification of files with similar content |
US20060294163A1 (en) | 2005-06-23 | 2006-12-28 | Emc Corporation | Methods and apparatus for accessing content stored in a file system |
US8560503B1 (en) | 2006-01-26 | 2013-10-15 | Netapp, Inc. | Content addressable storage system |
US7454592B1 (en) * | 2006-02-16 | 2008-11-18 | Symantec Operating Corporation | Block-level and hash-based single-instance storage |
US8131682B2 (en) | 2006-05-11 | 2012-03-06 | Hitachi, Ltd. | System and method for replacing contents addressable storage |
US8307148B2 (en) * | 2006-06-23 | 2012-11-06 | Microsoft Corporation | Flash management techniques |
US8145865B1 (en) * | 2006-09-29 | 2012-03-27 | Emc Corporation | Virtual ordered writes spillover mechanism |
WO2008070688A1 (en) | 2006-12-04 | 2008-06-12 | Commvault Systems, Inc. | Systems and methods for creating copies of data, such as archive copies |
US20100115175A9 (en) * | 2006-12-18 | 2010-05-06 | Zhiqing Zhuang | Method of managing a large array of non-volatile memories |
US20080201335A1 (en) | 2007-02-20 | 2008-08-21 | Nec Laboratories America, Inc. | Method and Apparatus for Storing Data in a Peer to Peer Network |
US7657500B2 (en) * | 2007-03-12 | 2010-02-02 | Sun Microsystems, Inc. | Concurrent extensible cuckoo hashing |
US20080243878A1 (en) * | 2007-03-29 | 2008-10-02 | Symantec Corporation | Removal |
US8489830B2 (en) * | 2007-03-30 | 2013-07-16 | Symantec Corporation | Implementing read/write, multi-versioned file system on top of backup data |
US7870122B2 (en) * | 2007-04-23 | 2011-01-11 | Microsoft Corporation | Self-tuning index for flash-based databases |
US20080270436A1 (en) * | 2007-04-27 | 2008-10-30 | Fineberg Samuel A | Storing chunks within a file system |
US8028106B2 (en) | 2007-07-06 | 2011-09-27 | Proster Systems, Inc. | Hardware acceleration of commonality factoring with removable media |
US7890555B2 (en) * | 2007-07-10 | 2011-02-15 | International Business Machines Corporation | File system mounting in a clustered file system |
US7725437B2 (en) * | 2007-07-31 | 2010-05-25 | Hewlett-Packard Development Company, L.P. | Providing an index for a data store |
JP4949176B2 (ja) * | 2007-09-10 | 2012-06-06 | ソニー株式会社 | 情報処理装置、記録方法およびコンピュータプログラム |
US8024545B2 (en) | 2007-10-19 | 2011-09-20 | Inha-Industry Partnership Institute | Efficient prefetching and asynchronous writing for flash memory |
US20090198952A1 (en) * | 2008-02-04 | 2009-08-06 | Apple Inc | Memory Mapping Architecture |
US7747663B2 (en) | 2008-03-05 | 2010-06-29 | Nec Laboratories America, Inc. | System and method for content addressable storage |
US8346730B2 (en) | 2008-04-25 | 2013-01-01 | Netapp. Inc. | Deduplication of data on disk devices based on a threshold number of sequential blocks |
US8271564B2 (en) * | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US8135723B2 (en) * | 2008-11-12 | 2012-03-13 | Microsoft Corporation | Leveraging low-latency memory access |
US9542409B2 (en) | 2008-11-26 | 2017-01-10 | Red Hat, Inc. | Deduplicated file system |
US20100274772A1 (en) * | 2009-04-23 | 2010-10-28 | Allen Samuels | Compressed data objects referenced via address references and compression references |
US8195636B2 (en) | 2009-04-29 | 2012-06-05 | Netapp, Inc. | Predicting space reclamation in deduplicated datasets |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
US9165005B2 (en) * | 2012-02-24 | 2015-10-20 | Simplivity Corporation | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory |
-
2010
- 2010-06-25 CN CN201080033630.9A patent/CN102483755B/zh active Active
- 2010-06-25 JP JP2012517787A patent/JP5695040B2/ja active Active
- 2010-06-25 WO PCT/US2010/040058 patent/WO2010151813A1/en active Application Filing
- 2010-06-25 CA CA2766161A patent/CA2766161C/en not_active Expired - Fee Related
- 2010-06-25 AU AU2010265954A patent/AU2010265954B2/en not_active Ceased
- 2010-06-25 AU AU2010265984A patent/AU2010265984C1/en not_active Ceased
- 2010-06-25 CN CN201080033622.4A patent/CN102483754B/zh active Active
- 2010-06-25 EP EP10731653.1A patent/EP2433227B1/en active Active
- 2010-06-25 WO PCT/US2010/039966 patent/WO2010151750A1/en active Application Filing
- 2010-06-25 CA CA2766231A patent/CA2766231C/en not_active Expired - Fee Related
- 2010-06-25 BR BRPI1013794A patent/BRPI1013794A8/pt not_active Application Discontinuation
- 2010-06-25 DK DK10730310.9T patent/DK2433226T3/en active
- 2010-06-25 US US12/823,452 patent/US8880544B2/en active Active
- 2010-06-25 DK DK10731653.1T patent/DK2433227T3/en active
- 2010-06-25 ES ES10731653.1T patent/ES2548194T3/es active Active
- 2010-06-25 EP EP10730310.9A patent/EP2433226B1/en active Active
- 2010-06-25 ES ES10730310.9T patent/ES2546562T3/es active Active
- 2010-06-25 BR BRPI1013789A patent/BRPI1013789A8/pt not_active Application Discontinuation
- 2010-06-25 JP JP2012517764A patent/JP2012531674A/ja active Pending
-
2014
- 2014-10-21 US US14/519,722 patent/US10176113B2/en active Active
-
2015
- 2015-04-02 JP JP2015075686A patent/JP6126158B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1297623A (zh) * | 1998-04-14 | 2001-05-30 | 摩托罗拉公司 | 量化数字系统中的信号的方法和装置 |
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN101369240A (zh) * | 2007-08-14 | 2009-02-18 | 戴尔产品有限公司 | 用于在信息处理系统中管理存储错误的系统和方法 |
Non-Patent Citations (1)
Title |
---|
An Efficient B-Tree Layer for Flash-Memory Storage Systems;Chin-Hsien Wu etc;《Real-Time and Embedded Computing Systems and Applications 9th International Conference RTCSA 2003》;20041231;第2968卷;全文 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847098B2 (en) | 2017-08-07 | 2023-12-19 | Weka.IO Ltd. | Metadata control in a load-balanced distributed storage system |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102483754B (zh) | 在非均匀存取存储器中的可扩展编制索引 | |
JP7446482B2 (ja) | 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること | |
US11100071B2 (en) | Key-value store tree data block spill with compaction | |
US9684462B2 (en) | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory | |
Ma et al. | LazyFTL: A page-level flash translation layer optimized for NAND flash memory | |
US10915546B2 (en) | Counter-based compaction of key-value store tree data block | |
US7509471B2 (en) | Methods for adaptively handling data writes in non-volatile memories | |
CN113851172B (zh) | 存储器子系统映射中的错误处置优化 | |
Xiang et al. | A reliable B-tree implementation over flash memory | |
Kaiser et al. | Extending SSD lifetime in database applications with page overwrites | |
Gong et al. | A write-optimized B-tree layer for NAND flash memory | |
Chen et al. | Parallel-log-single-compaction-tree: Flash-friendly two-level key-value management in kvssds | |
Chowdhur et al. | A survey of flash memory design and implementation of database in flash memory | |
CN103098034B (zh) | 用于条件和原子存储操作的装置和方法 | |
Fevgas | Data structuring techniques for non-volatile memories | |
CN103098034A (zh) | 用于条件和原子存储操作的装置、系统和方法 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170803 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: Massachusetts USA Patentee before: SimpliVT Corp. |