CN109684231A - 用于识别固态盘中的热数据和流的系统及方法 - Google Patents
用于识别固态盘中的热数据和流的系统及方法 Download PDFInfo
- Publication number
- CN109684231A CN109684231A CN201811189703.8A CN201811189703A CN109684231A CN 109684231 A CN109684231 A CN 109684231A CN 201811189703 A CN201811189703 A CN 201811189703A CN 109684231 A CN109684231 A CN 109684231A
- Authority
- CN
- China
- Prior art keywords
- bloom filter
- data
- counter
- solid
- state disk
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000003491 array Methods 0.000 claims abstract description 64
- 230000006870 function Effects 0.000 claims abstract description 27
- 238000003780 insertion Methods 0.000 claims abstract description 12
- 230000037431 insertion Effects 0.000 claims abstract description 12
- 239000004744 fabric Substances 0.000 claims description 23
- 230000015654 memory Effects 0.000 claims description 22
- 238000012360 testing method Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 4
- 230000003993 interaction Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 239000010813 municipal solid waste Substances 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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/0893—Caches characterised by their organisation or structure
-
- 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
-
- 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
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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/061—Improving I/O performance
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)
- Crystals, And After-Treatments Of Crystals (AREA)
- Die Bonding (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Storage Device Security (AREA)
Abstract
公开了一种为多流启用固态盘提供布隆过滤器的方法、以及一种固态盘。布隆过滤器包括两个布隆过滤器阵列、与所述两个布隆过滤器阵列对应的计数器、以及屏蔽逻辑。所述方法包括:利用多个散列函数将元素插入所述两个布隆过滤器阵列中的一个或更多个中;以及,基于元素的插入更新计数器。所述方法还包括:通过将一个或更多个另外的元素插入所述两个布隆过滤器阵列中的一个或更多个中并更新计数器,来更新布隆过滤器;以及,使用所述一个或更多个另外的元素屏蔽布隆过滤器中存储的数据,以利用屏蔽逻辑伪删除所述数据并降低布隆过滤器的误报率。
Description
相关申请的交叉引用
本申请要求于2017年10月19日提交的美国临时专利申请序列No.62/574,643的权益和优先权,其全部公开内容通过引用合并于此。
技术领域
本公开一般涉及多流启用固态盘(SSD),更具体地,涉及用于识别SSD的热数据和流的方法。
背景技术
多流使得固态盘(SSD)(例如,基于NAND闪存的SSD)能够根据“相似”特征来更高效地置放数据,从而减少写放大并提高SSD的性能。在一些情况下,主机系统可以明确地打开SSD中的流并根据不同流的预期寿命将写请求发送至不同流。多流启用SSD(multi-streamenabled SSD)确保具有相似寿命的特定流中的数据被物理地一同写入NAND闪存空间(或NAND闪存块)中,并将具有不同寿命的数据分开至不同流中。因此,需要高效的流分配来正确使用多流SSD。
可以在应用层修改主机系统上运行的现有应用来提供用于多流的流分配。在应用层修改应用效率很低,因为这需要每个单独应用创建者的工作。替代性地,主机系统上运行的进程可以在表格或队列中保持先前使用数据的日志,以用于流分配。这种方式会需要大量的内存、处理能力、或其它资源,以插入、搜索、更新和删除队列和表格中保持的数据。
布隆过滤器(BF)可用于测试数据集合内特定元素的组成(membership)。布隆过滤器专门设计用于提供空间效率。例如,布隆过滤器可以提供“绝对不在集合中”或“可能在集合中”的查询返回。为了提供快速查询速度和低内存消耗,布隆过滤器有时会给出“误报”,即,即使条目不存在于集合中,布隆过滤器也会回应说该条目存在。向数据集合中添加的元素越多,误报的几率就越大。
空布隆过滤器包括均被初始设置为0的m个比特的数据阵列,即,空数据阵列。可以定义总计k个不同的散列函数,并且每个散列函数通过产生均匀随机分布而将部分集合元素映射或散列至数据阵列中的一个或更多个位置。散列函数的数量k通常比数据阵列中的比特数量m小很多。数据阵列中的比特数量m一般设置为与待添加的元素的数量成比例;可以通过布隆过滤器的预期误报率来确定k的准确选择和m的比例常数。
因此,与其他数据结构(比如列表、队列、树,等等)相比,布隆过滤器提供快速查找或快速查询响应。然而,与其他数据结构(比如列表、队列、树,等等)不同,布隆过滤器具有若干缺点。例如,布隆过滤器不允许数据集合内的数据删除。因此,随着被散列到布隆过滤器中的数据数量的增加,误报几率和误报错误率增加。布隆过滤器最初提出用于这样的应用:如果应用“常规”无错误散列技术,源数据的数量将需要不切实际的大量内存。
当在多流应用中将布隆过滤器用于流分配时,误报可能是有害的。例如,在误报情况下,布隆过滤器意味着即使进入的数据之前从未见过(或进入的数据是冷数据),该数据也可被分配给流标识符(ID)作为热数据。这可能导致将数据不正确地分配给错误的流。此外,每一次在垃圾收集期间,与其它热数据一起的该冷数据会被复制。因此,高误报可导致高内部物理写。另一方面,对于多流应用而言,漏报不会向误报那样有害,这是因为将会继续使用较旧的流ID。因此,布隆过滤器无法直接用于数据温度识别或流识别。
发明内容
根据一个实施例,一种用于针对多流的布隆过滤器的方法包括:提供包括两个布隆过滤器阵列、与所述两个布隆过滤器阵列对应的计数器、以及屏蔽逻辑的布隆过滤器;利用多个散列函数将元素插入所述两个布隆过滤器阵列中的一个或更多个中;基于元素的插入更新计数器;通过将一个或更多个另外的元素插入所述两个布隆过滤器阵列中的一个或更多个中并更新计数器,来更新布隆过滤器;以及,使用所述一个或更多个另外的元素屏蔽布隆过滤器中存储的数据,以利用屏蔽逻辑伪删除所述数据并降低布隆过滤器的误报率。
根据另一实施例,一种固态盘(SSD)包括:闪速存储器;闪存控制器,其构造为与闪速存储器交互;主机接口,其构造为与主机计算机交互;以及,多流管理器,其构造为将用于访问闪速存储器的请求分派至多个流。多流管理器包括:两个布隆过滤器阵列、与所述两个布隆过滤器阵列对应的计数器、以及屏蔽逻辑。多流管理器构造为:通过将一个或更多个另外的元素插入所述两个布隆过滤器阵列中的一个或更多个并更新计数器,来更新布隆过滤器;以及,使用所述一个或更多个另外的元素屏蔽布隆过滤器中存储的数据,以利用屏蔽逻辑伪删除所述数据并降低布隆过滤器的误报率。
现在将参照附图更具体地描述并在权利要求中指出上述和其他优选特征,包括实施方式的各种新颖细节和各事件的组合。将理解的是,本文所述的具体系统和方法以仅示意而非限制的方式示出。如本领域技术人员将理解的,本文所述的原理和特征可以在不脱离本公开的范围的情况下在大量的各种实施例中采用。
附图说明
作为本说明书的一部分而包括的附图示出了当前优选实施例并且与上面给出的一般性描述和下面给出的优选实施例的具体描述一起用于说明和教导本文所述的原理。
图1示出了根据一个实施例的包括多流管理器的示例固态盘(SSD);
图2示出了根据一个实施例的用于布隆过滤器的屏蔽技术的示例;
图3示出了根据一个实施例的包括两个阵列和计数器的示例布隆过滤器系统的图形表示;
图4示出了根据一个实施例的用于操作示例布隆过滤器以屏蔽数据的流程图;以及
图5示出了根据一个实施例的用于操作示例布隆过滤器以识别多流SSD中的流标识符的流程图。
附图不必是按比例绘制的,并且在整个附图中为了示意目的,类似结构或功能的元素一般用相似的附图标记表示。附图仅旨在利于本文所述的各种实施例的描述。附图不描述本文所公开的教导的每一个方面并且不限制权利要求的范围。
具体实施方式
本文所公开的特征和教导中的每一个可以单独使用或可以与其它特征和教导结合使用,以提供多流启用固态盘SSD和用于识别SSD的热数据和流的方法。参照随附的附图进一步详细描述单独地和组合地利用这些额外特征和教导中的许多的代表性示例。本具体实施方式仅旨在向本领域技术人员教导用于实践本教导的各方面的进一步细节,而不旨在限制权利要求的范围。因此,具体实施方式中的上面公开的特征组合不必用于以最宽泛方式实践本教导,相反,教导具体实施方式仅用于描述本教导的具体的代表性示例。
在下面的描述内容中,仅仅为了说明目的,阐述具体术语以提供对本公开的透彻理解。然而,对于本领域技术人员而言显然的是,这些具体细节无需用于实践本公开的教导。
本文具体实施方式的一些部分按照对计算机存储器中的数据比特的操作的算法和符号表示示出。这些算法描述和表示被数据处理领域的技术人员用于有效地向该领域的其他技术人员表达他们工作的实质。这里及一般意义上的算法设想为通向期望结果的有条理的步骤序列。这些步骤是需要对物理量进行物理操控的步骤。尽管非必需,但是通常这些量采取能够被存储、传递、组合、比较及被其它操控的电信号或磁信号的形式。已证明,有时为了方便,但大部分是习惯用法的原因,将这些信号称作比特、值、元素、符号、字符、项、数字等。
但是,应当注意,这些和类似术语将与适当物理量相关联并且仅作为应用至这些量的便利标签。除非在下面的讨论中明显地具体指出其他情况,应该认识到的是,在整个说明书中,利用诸如“处理”、“运算”、“计算”、“确定”、“显示”等术语的讨论指的是计算机系统或类似电子计算装置的动作和处理,其将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据转换为计算机系统存储器或寄存器或其他信息存储、传输或显示装置内的表示为物理量的其它数据。
此外,代表性示例和从属权利要求的各种特征可以以未具体和明确列举的方式组合以提供本教导的额外有用实施例。还特别注意,所有值范围或实体的指示组公开了用于原始公开目的以及用于限定所请求的主题的目的的每一个可能的中间值或中间实体。还特别注意,附图中示出的组件的尺寸或形状被设计用于帮助理解如何实践本公开,而非旨在限制示例中示出的尺寸和形状。
本公开描述了利用布隆过滤器的系统,用于在多个流之间识别数据温度并管理数据的流ID,以分派主机的访问请求。根据一个实施例,当前的布隆过滤器包括数字屏蔽逻辑,用于屏蔽布隆过滤器中存储的在先数据。与诸如表格、队列等常规数据结构相比,当前的布隆过滤器具有用于识别数据温度的空间高效数据结构。当前的布隆过滤器可以按照其应用需求提供任意数量的类别,而非仅将数据分成“热”和“冷”两个类别。
数字屏蔽逻辑的示例包括但不限于XOR门。对在先数据的屏蔽是有效地(但非实际地)删除(本文也称作伪删除)布隆过滤器中存储的在先数据。在先数据可以被临时地“删除”,但是可以在另一数据被插入布隆过滤器之后恢复为具有原始数据。以这种方式,通过伪删除,布隆过滤器可以容纳新进入的数据而不会危害误报率。结果,即使在散列到布隆过滤器中的数据量增加的情况下,当前的布隆过滤器也可以降低误报率。可以利用任何数据屏蔽在先数据,所述任何数据包括但不限于:新进入的数据、任何先前接收的进入数据、以及用户提供的屏蔽数据。无论使用什么数据来屏蔽布隆过滤器,都可以通过对数据进行屏蔽来使布隆过滤器的阵列恢复至其原始状态。
图1示出了根据一个实施例的包括多流管理器的示例固态盘(SSD)。SSD 100包括构造为与主机计算机150交互的主机接口110、多流管理器120、闪存控制器130、以及闪速存储器140。主机接口110构造为使SSD 100与主机计算机150耦接。主机接口110可以兼容于外围组件互连(PCI)高速(PCIe)、串行SCSI(SAS)以及串行AT附件中的任一项或本领域其他已知技术。替代性地,SSD 100可以在网络结构(比如以太网、光纤通道、无线带宽及其他网络结构)上耦接至主机计算机。在这种情况下,SSD 100可以兼容于结构上高速非易失性存储器(NVMe)(NVM-oF),并且SSD 100可以被称作以太网连接SSD或简称为eSSD。
多流管理器120包括布隆过滤器阵列121和用于对布隆过滤器阵列121执行屏蔽操作的屏蔽逻辑122。多流管理器120可以基于从主机计算机150接收到的访问请求的特征和与流的关联性将所述访问请求分派至适当的流。例如,多流管理器120可以在闪速存储器140的相同物理擦除块上存储具有相似特征(例如,失效时间)的数据,以高效地进行垃圾收集。因此,多流管理器120可以降低SSD 100的写放大因子(WAF)。屏蔽逻辑122可以通过删除新进入到布隆过滤器阵列121的数据来临时屏蔽该新进入的数据。将参照图2进一步详细说明对通过屏蔽逻辑122进行的屏蔽技术的详细描述。
在一个实施例中,多流管理器120可以以专用硬件逻辑(比如专用集成电路(ASIC))来实现,或者可以实现为通用处理器或控制器中实现的软件或固件。在一些实施例中,多流管理器120可以集成在闪存控制器130中。闪存控制器130可以提供到闪速存储器140的闪存接口135。
虽然在图1中将多流管理器120示出为包括在SSD 100中,但是注意,在一些实施例中,多流管理器120可以在主机计算机150中实现而不脱离本公开的范围。在主机侧,主机计算机150可以建立预定数量的流来访问SSD 100,例如,8至16个流。在这种情况下,多流管理器120可以从主机侧利用布隆过滤器阵列121来识别热数据和主机流,并且SSD 100可以仅经由基于主机侧上的数据和流标识而在主机计算机150与SSD 100之间建立的多个流来与主机计算机150交互。
当多流管理器120在SSD 100中实现时,主机计算机150上运行的应用可以无需为了实现多流能力而改变或重授权。在这种情况下,SSD 100可以耦接至另一主机计算机而不会失去关于布隆过滤器阵列121的知识。可以在SSD 100内确定基于访问请求的频率的数据温度(热或冷),因此,主机计算机150上运行的应用可以仅访问SSD 100中存储的数据而无需得知SSD 100能够进行多流。
根据一个实施例,当前的布隆过滤器用于识别SSD中存储的热数据。此外,同一布隆过滤器可以在多流应用中用于识别与多个流当中的热数据或冷数据对应的流ID。主机计算机150可以明确地打开SSD 100中的流并根据不同流的预期寿命将写请求发送至不同流。就这一点而言,用于多流应用的当前的布隆过滤器在这里也被称作布隆流。
图2示出了根据一个实施例的用于布隆过滤器的屏蔽技术的示例。布隆过滤器具有7比特的数据阵列。需注意,图2中示出的当前的布隆过滤器仅为示例,并且数据阵列可以具有任意数量的比特而不脱离本公开的范围。
在当前示例中,布隆过滤器具有7比特阵列(或寄存器)。最初,寄存器比特为空,因此,该阵列是包括针对全部7比特的各个0的空寄存器。利用数字XOR逻辑将新数据A插入布隆过滤器阵列,并且相应地更新布隆过滤器阵列。
接着,假设另一数据B到达,其需要被存储在同一7比特阵列中。随后,通过使用屏蔽来将数据B插入布隆过滤器阵列,即,将布隆过滤器阵列的前一状态与新到达的数据B进行XOR。在当前示例中,数据A先前已经被插入布隆过滤器阵列,因此将数据B屏蔽在数据A上,即,A(XOR)B。因此,布隆过滤器阵列被更新为存储数据A和数据B两者的当前状态。可以通过再次应用XOR逻辑来伪删除插入至布隆过滤器的数据。这里,伪删除意指可以通过再次重新应用XOR逻辑来恢复数据。布隆过滤器阵列可以恢复至与插入数据B之前的状态对应的其前一状态(即,数据A)。
当前XOR屏蔽技术通过在布隆过滤器的相同比特处存储多个数据来允许一定程度地复用布隆过滤器。屏蔽和恢复循环的数量可以为任意次数。只要布隆过滤器存储所插入数据的历史(例如,利用计数器),布隆过滤器就可以将其值恢复至任意先前状态。例如,当前XOR屏蔽可用于为新进入的数据产生空间并降低布隆过滤器的误报率。具有较低误报率的布隆过滤器可足以用于在主机计算机与SSD之间所建立的多个热流之中识别热流。
根据一个实施例,具有预定大小的数据阵列的当前的布隆过滤器可以通过插入和屏蔽数据而用于多流应用。当在原始布隆过滤器阵列中屏蔽(或插入)数据时,比特可能无效并且布隆过滤器阵列中的原始数据可能丢失。为了克服这个问题,当前的布隆过滤器包括两个布隆过滤器阵列和计数器。计数器存储两个布隆过滤器阵列中的数据的总组合频率。为了便于说明,以下示例使用两个布隆过滤器阵列。但是,应理解的是,多于两个的布隆过滤器阵列可以用于更方便和高效的数据插入和屏蔽而不脱离本公开的范围。
图3示出了根据一个实施例的包括两个阵列和计数器的示例布隆过滤器系统的图形表示。布隆过滤器包括第一阵列BFi和第二阵列BFi’。计数器记录对阵列中的每个比特的访问数量以指定相应比特的频率。两个阵列BFi和BFi’是在其中通过相同的散列函数将数据散列的两个布隆过滤器阵列。在当前示例中,示出了三个散列函数f1、f2和f3,以指示当前布隆过滤器系统的示例使用;然而,应理解的是,当前的布隆过滤器系统可与任意数量的散列函数相关联。每个散列函数可以设置两个布隆过滤器阵列BFi和BFi’中的每一个的一个比特或更多个比特。
周期性地,两个布隆过滤器阵列和计数器的当前状态可以保存在包括历史布隆过滤器和历史计数器的历史数据结构中,并且随后将历史布隆过滤器和历史计数器用于分配流。在将当前状态存储在历史数据结构中之后,两个布隆过滤器阵列被设置为空或被清空,以存储新的数据,并且重新启动计数器。将布隆过滤器状态周期性复制至历史数据结构可以捕获被插入至布隆过滤器的数据的近度(recency)(以及频率)。在特定时间间隔之后,布隆过滤器可以忽略过去的数据活动并且作为新布隆过滤器前行以更注重当前的数据活动。当前的布隆过滤器结构不仅可以识别SSD的热区,而且可以在热区随时间变化的情况下通过更新其自身来检测热区的改变,从而相应地分配流ID。
在一个实施例中,可以利用定时器来以预定时间间隔周期性地保存布隆过滤器阵列和计数器。替代性地,主机计算机150上运行的应用或多流管理器120可以确定将布隆过滤器存储在历史数据结构中的适当时间。例如,布隆过滤器可以切换操作的模式,并且在切换之前,布隆过滤器存储布隆过滤器阵列和计数器的快照以使得当其返回至原始模式时,布隆过滤器可以将布隆过滤器阵列和计数器恢复至它们的原始状态。在另一个示例中,多流管理器120监控布隆过滤器阵列的各比特,并且在布隆过滤器阵列的比特的数量超过阈值时确定复位布隆过滤器和计数器。以这种方式,通过向历史计数器施加衰减(decay),可以为更近的数据赋予更高重要性。
传递两个布隆过滤器阵列BFi和BFi’以在它们之间执行OR运算(BFi||BFi’),以存储作为历史布隆过滤器。当然,在布隆过滤器阵列的一个中,所有数据以未屏蔽的形式存在。在当前示例中,布隆过滤器阵列中具有高的相应计数器比特的特定数据的存在(或组成)表示该数据被频繁访问,即,热数据。OR运算可以确定数据是否存在于布隆过滤器阵列中的至少一个中。OR过的历史布隆过滤器阵列和历史计数器可以指示对SSD中存储的特定数据的访问的具体频率,并且该频率可用于分配用于访问数据的流。访问的频率可以对应于从布隆过滤器阵列和计数器被复位或空化(null ified)的时间开始直到它们被存储在历史数据结构为止的时间段。
参照图1,多流管理器120可以将与从主机计算机150接收到的访问请求对应的多个逻辑地址空间(LBA空间)分派给SSD 100,好像SSD 100包括多个虚拟驱动器那样。多流管理器120分派给特定流的数据可以具有相似的特征,比如预期生命周期、写序列性、寿命、时序模式、I/0大小、文件类型、以及/或者I/0流量模式。从主机计算机150接收到的写命令可以包括元数据或所请求的数据的标识符,并且写命令可以基于元数据和/或它们自身的特征而与多个流之中的特定流相关联(或分派至特定流ID)。
根据一个实施例,多流管理器120可以确定访问存储在SSD 100的特定LBA中的数据的频率。例如,可以通过存储在历史数据结构中的与OR过的布隆过滤器阵列中的比特对应的历史计数器值来确定访问数据的频率。基于该频率,多流管理器120可以将被访问的LBA分配给主机计算机150和SSD 100之间已经建立的流当中的特定流。
接着,将描述与数据插入和数据的流ID的取得有关的布隆过滤器的算法实现以及历史计数器的更新的细节。应理解的是,当前布隆过滤器可以用于缓存、分层等,以高效地捕获数据的热度并且基于数据温度信息制定决策。以下例程显示了如何在多流启用SSD中实现流分配。
多流管理器包括提交队列以存储从主机计算机接收到的条目。插入布隆过滤器例程(这里称作INSERT_BF())用于将条目Xi从提交队列插入至布隆过滤器。两个布隆过滤器阵列中的一个被指定为当前布隆过滤器并首先尝试将数据插入到该当前布隆过滤器。当待存储的数据到达时,将该数据散列以识别布隆过滤器中的比特。随后,尝试将散列的数据存储在(BF和BF’中的)当前布隆过滤器中。如果当前布隆过滤器已经具有该数据,则另一布隆过滤器变为当前布隆过滤器,并且将该数据屏蔽至新的当前布隆过滤器上。对应计数器比特增加。上述插入过程通过以下Algorithm 1INSERT_BF()给出。通过该插入数据的过程,确保布隆过滤器阵列中的一个始终包含数据的干净(即,未屏蔽)副本。
多流管理器的另一重要操作是根据布隆过滤器结构确定数据的流ID。获取流布隆过滤器例程(这里称作GET_STREAM_BF())用于从布隆过滤器获得流ID。流ID可以根据针对历史布隆过滤器中的数据的散列比特的历史计数器值来确定。数据被散列为布隆过滤器中的多个比特。识别具有最低频率计数的比特的索引。如果设置该比特,则通过布隆过滤器已看到该数据,并且与该比特对应的计数器值指示该数据的相对频率。随后,使用通过历史计数器导出的频率因子,可以通过应用函数f获得流ID。如果该比特为空,则之前从未见过该数据,并且该数据不存在于布隆过滤器中
这里,位于GET_STREAM_BF例程的第8行的函数f表示类函数,其可以根据基本数学运算导出。函数f可根据当前布隆过滤器的数据结构应用至何处以及如何应用而变化。例如,以下示例性函数fun1、fun2和fun3可以用于在多流启用SSD中获得流ID。
更新历史例程(这里称作UPDATA_HIST())用于利用条目Xi更新布隆过滤器的历史数据结构。如上所述,两个布隆过滤器阵列和计数器的当前状态周期性地保存为“历史布隆过滤器”和“历史计数器”,并且历史布隆过滤器和历史计数器用于分配流。该转换的示例由下面的算法3示出。通过两个布隆过滤器阵列的OR运算以及先前的历史布隆过滤器状态来构建历史布隆过滤器。在当前示例中,针对每个时间间隔将衰减因子2用于计数器中存储的频率计数。因此,在每一个间隔处,当前计数器的值被添加至历史计数器的衰减后的值。如果对于任一比特,累积计数器为空,则表示该数据曾经热过一次并且随后变得非常冷。在这种情况下,无论何时累积计数器值为空,相应比特的布隆过滤器值都同样设置为空,从而保持一致性。
图4示出了根据一个实施例的用于操作示例布隆过滤器以屏蔽数据的流程图。多流管理器120对包括两个布隆过滤器阵列、与所述两个布隆过滤器阵列对应的计数器、以及屏蔽逻辑的布隆过滤器进行操作。多流管理器120利用多个散列函数将元素插入到所述两个布隆过滤器阵列中的一个或更多个中(401)并且基于元素的插入来更新计数器(402)。多流管理器120还通过将一个或更多个另外的元素插入所述两个布隆过滤器阵列中的一个或更多个中并更新计数器来更新布隆过滤器,并且使用所述一个或更多个另外的元素屏蔽布隆过滤器中存储的数据,以利用屏蔽逻辑伪删除所述数据并降低布隆过滤器的误报率(403)。多流管理器120确定是否在历史数据结构中保存布隆过滤器数据和计数器值(404)。例如,在切换布隆过滤器的操作模式之后或者在所述两个布隆过滤器阵列的比特数量超过阈值时,可以周期性地保存布隆过滤器数据和计数器值。
当多流管理器120确定在历史数据结构中保存布隆过滤器数据和计数器值时,多流管理器120在所述两个布隆过滤器阵列之间执行OR运算以产生第三布隆过滤器阵列(405)并且保存第三布隆过滤器阵列和计数器的计数器值(406)。保存之后,多流管理器120将所述两个布隆过滤器阵列和计数器复位(407)并且继续将数据元素插入至布隆过滤器阵列中以及相应地更新计数器的处理。
图5示出了根据一个实施例的用于操作示例布隆过滤器以识别多流SSD中的流标识符的流程图。多流管理器120复位布隆过滤器阵列和计数器(501)。当布隆过滤器首次启动(例如,SSD是新的或者在主机计算机150上启动新的应用时)或被复位时,布隆过滤器阵列是空阵列,并且计数器包括各个零。多流管理器120可以利用一个或多个散列函数和屏蔽逻辑122将数据插入布隆过滤器阵列并更新计数器(502)。如果请求查找历史数据结构(503),则多流管理器120可以从历史数据结构中恢复布隆过滤器阵列和计数器(511)。否则,用于复位布隆过滤器的定时器期满(504:是),多流管理器120在两个布隆过滤器阵列之间执行OR运算并且将OR过的布隆过滤器阵列和相应的计数器存储在历史数据结构中(505)。在布隆过滤器复位时重复所述处理,以在降低误报率的同时容纳新进入的数据。当请求时,布隆过滤器可以利用历史数据结构来恢复先前状态。
根据一个实施例,一种方法包括:提供包括两个布隆过滤器阵列、与所述两个布隆过滤器阵列对应的计数器、以及屏蔽逻辑的布隆过滤器;利用多个散列函数将元素插入所述两个布隆过滤器阵列中的一个或更多个中;基于元素的插入更新计数器;通过将一个或更多个另外的元素插入所述两个布隆过滤器阵列中的一个或更多个中并更新计数器,来更新布隆过滤器;以及,使用所述一个或更多个另外的元素屏蔽布隆过滤器中存储的数据,以利用屏蔽逻辑伪删除所述数据并降低布隆过滤器的误报率。
所述方法还包括:在所述两个布隆过滤器阵列之间执行OR运算以产生第三布隆过滤器阵列;并且在历史数据结构中保存第三布隆过滤器阵列和计数器的计数器值。
第三布隆过滤器阵列和计数器值可以周期性地保存在历史数据结构中。
可以在切换布隆过滤器的操作模式之前将第三布隆过滤器阵列和计数器值保存在历史数据结构中。
可以在所述两个布隆过滤器阵列的比特数量超过阈值时将第三布隆过滤器阵列和计数器值保存在历史数据结构中。
计数器值可以指示对存储在固态盘(SSD)中的由所述多个散列函数识别的地址处的数据进行访问的频率。
SSD可以包括闪速存储器和构造为与闪速存储器交互的闪存控制器。
所述方法还可以包括:基于访问的频率识别为了访问SSD而建立的多个流中的流。
所述方法还可以包括:利用多个测试函数来测试第三布隆过滤器阵列,以基于计数器的计数器值确定访问与对SSD的访问请求相对应的数据的频率,所述访问请求从主机计算机接收;以及,经由所述多个流中的所述流访问SSD中存储的数据。
所述方法还可以包括:在将第三布隆过滤器阵列和计数器的计数器值保存在历史数据结构中之后,复位所述两个布隆过滤器阵列和计数器。
可以彼此独立地管理和使用所述两个布隆过滤器阵列。
根据另一实施例,一种固态盘(SSD)包括:闪速存储器;闪存控制器,其构造为与闪速存储器交互;主机接口,其构造为与主机计算机交互;以及,多流管理器,其构造为将用于访问闪速存储器的请求分派至多个流。多流管理器包括:两个布隆过滤器阵列、与所述两个布隆过滤器阵列对应的计数器、以及屏蔽逻辑。多流管理器构造为:通过将一个或更多个另外的元素插入所述两个布隆过滤器阵列中的一个或更多个并更新计数器,来更新布隆过滤器;以及,使用所述一个或更多个另外的元素屏蔽布隆过滤器中存储的数据,以利用屏蔽逻辑伪删除所述数据并降低布隆过滤器的误报率。
多流管理器还可以构造为:通过在所述两个布隆过滤器阵列之间执行OR运算来产生第三布隆过滤器阵列并且将与所述两个布隆过滤器阵列中的至少一个相对应的第三布隆过滤器阵列和计数器的计数器值存储在历史数据结构中。
多流管理器还可以构造为周期性地将第三布隆过滤器阵列和计数器值保存在历史数据结构中。
多流管理器还可以构造为在切换布隆过滤器的操作模式之前将第三布隆过滤器阵列和计数器值保存在历史数据结构中。
多流管理器还可以构造为在所述两个布隆过滤器阵列的比特数量超过阈值时将第三布隆过滤器阵列和计数器值保存在历史数据结构中。
计数器值可以指示对存储在固态盘中的由所述多个散列函数识别的地址处的数据进行访问的频率。
多流管理器还可以构造为基于访问的频率而识别为了访问SSD而建立的多个流中的流。
所述多流管理器还可以构造为:利用多个测试函数来测试第三布隆过滤器阵列,以基于计数器的计数器值确定访问与对SSD的访问请求相对应的数据的频率,所述访问请求从主机计算机接收;以及,经由所述多个流中的所述流访问SSD中存储的数据。
多流管理器可以独立地管理所述两个布隆过滤器阵列。
多流管理器还可以构造为:在将第三布隆过滤器阵列和计数器的计数器值保存在历史数据结构中之后,复位所述两个布隆过滤器阵列和计数器。
上面已经描述了上述示例实施例以示出实现用于提供多流启用固态盘(SSD)的系统和方法以及用于识别SSD的热数据和流的方法的各种实施例。本领域普通技术人员将想到所公开的实施例的各种修改和变化。在随附权利要求书中阐述旨在处于本发明范围内的主题。
Claims (21)
1.一种用于针对多流的布隆过滤器的方法,包括:
提供包括两个布隆过滤器阵列、与所述两个布隆过滤器阵列对应的计数器、以及屏蔽逻辑的布隆过滤器;
利用多个散列函数将元素插入所述两个布隆过滤器阵列中的一个或更多个中;
基于所述元素的插入更新所述计数器;
通过将一个或更多个另外的元素插入所述两个布隆过滤器阵列中的一个或更多个中并更新所述计数器,来更新所述布隆过滤器;以及
使用所述一个或更多个另外的元素屏蔽所述布隆过滤器中存储的数据,以利用所述屏蔽逻辑伪删除所述数据并降低所述布隆过滤器的误报率。
2.根据权利要求1所述的方法,还包括:
在所述两个布隆过滤器阵列之间执行OR运算以产生第三布隆过滤器阵列;以及
将所述第三布隆过滤器阵列和所述计数器的计数器值保存在历史数据结构中。
3.根据权利要求2所述的方法,其中,周期性地将所述第三布隆过滤器阵列和所述计数器值保存在所述历史数据结构中。
4.根据权利要求2所述的方法,其中,在切换所述布隆过滤器的操作模式之前将所述第三布隆过滤器阵列和所述计数器值保存在所述历史数据结构中。
5.根据权利要求2所述的方法,其中,在所述两个布隆过滤器阵列的比特数量超过阈值时将所述第三布隆过滤器阵列和所述计数器值保存在所述历史数据结构中。
6.根据权利要求2所述的方法,其中,所述计数器值指示对存储在固态盘中的由所述多个散列函数识别的地址处的数据进行访问的频率。
7.根据权利要求6所述的方法,其中,所述固态盘包括闪速存储器和构造为与所述闪速存储器交互的闪存控制器。
8.根据权利要求6所述的方法,还包括:基于访问的所述频率识别为了访问所述固态盘而建立的多个流中的流。
9.根据权利要求8所述的方法,还包括:
利用多个测试函数来测试所述第三布隆过滤器阵列,以基于所述计数器的所述计数器值确定访问与对所述固态盘的访问请求相对应的数据的频率,所述访问请求从主机计算机接收;以及
经由所述多个流中的所述流访问所述固态盘中存储的数据。
10.根据权利要求2所述的方法,还包括:在将所述第三布隆过滤器阵列和所述计数器的所述计数器值保存在所述历史数据结构中之后,复位所述两个布隆过滤器阵列和所述计数器。
11.根据权利要求1所述的方法,其中,彼此独立地管理和使用所述两个布隆过滤器阵列。
12.一种固态盘,包括:
闪速存储器;
闪存控制器,其构造为与所述闪速存储器交互;
主机接口,其构造为与主机计算机交互;以及
多流管理器,其构造为将用于访问所述闪速存储器的请求分派至多个流,
其中,所述多流管理器包括:两个布隆过滤器阵列、与所述两个布隆过滤器阵列对应的计数器、以及屏蔽逻辑,
其中,所述多流管理器构造为:
通过将一个或更多个另外的元素插入所述两个布隆过滤器阵列中的一个或更多个中并更新所述计数器,来更新布隆过滤器;以及
使用所述一个或更多个另外的元素屏蔽所述布隆过滤器中存储的数据,以利用所述屏蔽逻辑伪删除所述数据并降低所述布隆过滤器的误报率。
13.根据权利要求12所述的固态盘,其中,所述多流管理器还构造为:通过在所述两个布隆过滤器阵列之间执行OR运算来产生第三布隆过滤器阵列并且将所述第三布隆过滤器阵列和所述计数器的计数器值存储在历史数据结构中,所述第三布隆过滤器阵列与所述两个布隆过滤器阵列中的至少一个相对应。
14.根据权利要求13所述的固态盘,其中,所述多流管理器还构造为:周期性地将所述第三布隆过滤器阵列和所述计数器值保存在所述历史数据结构中。
15.根据权利要求13所述的固态盘,其中,所述多流管理器还构造为:在切换所述布隆过滤器的操作模式之前将所述第三布隆过滤器阵列和所述计数器值保存在所述历史数据结构中。
16.根据权利要求13所述的固态盘,其中,所述多流管理器还构造为:在所述两个布隆过滤器阵列的比特数量超过阈值时将所述第三布隆过滤器阵列和所述计数器值保存在所述历史数据结构中。
17.根据权利要求12所述的固态盘,其中,所述计数器值指示对存储在所述固态盘中的由多个散列函数识别的地址处的数据进行访问的频率。
18.根据权利要求17所述的固态盘,其中,所述多流管理器还构造为:基于访问的所述频率识别为了访问所述固态盘而建立的多个流中的流。
19.根据权利要求18所述的固态盘,其中,所述多流管理器还构造为:
利用多个测试函数来测试所述第三布隆过滤器阵列以基于所述计数器的所述计数器值确定访问与对所述固态盘的访问请求相对应的数据的频率,所述访问请求从主机计算机接收;以及
经由所述多个流中的所述流访问所述固态盘中存储的数据。
20.根据权利要求12所述的固态盘,其中,所述多流管理器独立地管理所述两个布隆过滤器阵列。
21.根据权利要求13所述的固态盘,其中,所述多流管理器构造为:在将所述第三布隆过滤器阵列和所述计数器的计数器值保存在所述历史数据结构中之后,复位所述两个布隆过滤器阵列和所述计数器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762574643P | 2017-10-19 | 2017-10-19 | |
US62/574,643 | 2017-10-19 | ||
US15/895,797 US10901907B2 (en) | 2017-10-19 | 2018-02-13 | System and method for identifying hot data and stream in a solid-state drive |
US15/895,797 | 2018-02-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109684231A true CN109684231A (zh) | 2019-04-26 |
Family
ID=66169931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811189703.8A Pending CN109684231A (zh) | 2017-10-19 | 2018-10-12 | 用于识别固态盘中的热数据和流的系统及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10901907B2 (zh) |
KR (1) | KR102440370B1 (zh) |
CN (1) | CN109684231A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699323A (zh) * | 2021-01-07 | 2021-04-23 | 西藏宁算科技集团有限公司 | 一种基于双重布隆过滤器的云缓存系统及云缓存方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10664268B2 (en) * | 2018-10-24 | 2020-05-26 | EMC IP Holding Company LLC | Data storage optimization using replication statistics to automatically generate NVMe stream identifiers |
US11777712B2 (en) * | 2019-03-22 | 2023-10-03 | International Business Machines Corporation | Information management in a database |
US11042308B2 (en) * | 2019-04-03 | 2021-06-22 | Macronix International Co., Ltd. | Memory management apparatus and memory management method |
CN112948171A (zh) * | 2019-12-11 | 2021-06-11 | 华为技术有限公司 | 数据处理方法、装置、终端设备及计算机可读存储介质 |
CN111290706B (zh) * | 2020-01-15 | 2023-03-31 | 哈尔滨工业大学 | 一种基于布隆过滤器的双层读写磨损均衡方法 |
US11784800B2 (en) * | 2020-02-14 | 2023-10-10 | Google Llc | Secure multi-party reach and frequency estimation |
US11223562B1 (en) * | 2020-08-11 | 2022-01-11 | Fortinet, Inc. | Selectively processing packets based on their classification by a counting bloom filter as a first packet or a subsequent packet of a transport protocol connection |
CN112052190B (zh) * | 2020-09-03 | 2022-08-30 | 杭州电子科技大学 | 一种基于布隆过滤器和二级lru表的固态硬盘热数据识别方法 |
CN112905575A (zh) * | 2020-12-30 | 2021-06-04 | 创盛视联数码科技(北京)有限公司 | 数据采集的方法、系统、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050022009A1 (en) * | 2003-06-05 | 2005-01-27 | Aguilera Macros K. | System and method for preventing replay attacks |
US20090043993A1 (en) * | 2006-03-03 | 2009-02-12 | Simon Andrew Ford | Monitoring Values of Signals within an Integrated Circuit |
US20130019111A1 (en) * | 2010-03-31 | 2013-01-17 | British Telecommunications Public Limited Company | Secure data recorder |
US20140250155A1 (en) * | 2011-11-17 | 2014-09-04 | Huawei Technologies Co., Ltd. | Metadata storage and management method for cluster file system |
US20160072685A1 (en) * | 2007-03-15 | 2016-03-10 | Cisco Technology, Inc. | Detection of heavy users of network resources |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6591339B1 (en) | 1999-05-03 | 2003-07-08 | 3Ware, Inc. | Methods and systems for selecting block sizes for use with disk arrays |
US8321955B2 (en) * | 2003-08-26 | 2012-11-27 | Wu-Chang Feng | Systems and methods for protecting against denial of service attacks |
US20050108368A1 (en) | 2003-10-30 | 2005-05-19 | Aditya Mohan | Method and apparatus for representing data available in a peer-to-peer network using bloom-filters |
JP2006235960A (ja) | 2005-02-24 | 2006-09-07 | Fujitsu Ltd | ガーベッジコレクション高速化方法 |
US7937535B2 (en) | 2007-02-22 | 2011-05-03 | Arm Limited | Managing cache coherency in a data processing apparatus |
US7808898B2 (en) * | 2007-08-14 | 2010-10-05 | Hewlett-Packard Development Company, L.P. | Flow estimator |
US20100274893A1 (en) * | 2009-04-27 | 2010-10-28 | Sonus Networks, Inc. | Methods and apparatus for detecting and limiting focused server overload in a network |
EP2455865B1 (en) | 2009-07-17 | 2020-03-04 | Toshiba Memory Corporation | Memory management device |
JP2011175615A (ja) | 2010-01-27 | 2011-09-08 | Toshiba Corp | ホスト装置およびメモリデバイス |
US8694703B2 (en) * | 2010-06-09 | 2014-04-08 | Brocade Communications Systems, Inc. | Hardware-accelerated lossless data compression |
US9401967B2 (en) * | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
WO2012020544A1 (ja) | 2010-08-11 | 2012-02-16 | 日本電気株式会社 | データ処理システム、データ処理方法、およびプログラム |
US9703796B2 (en) * | 2011-12-06 | 2017-07-11 | Brocade Communications Systems, Inc. | Shared dictionary between devices |
JP5723812B2 (ja) | 2012-03-16 | 2015-05-27 | 株式会社 日立産業制御ソリューションズ | ファイルサーバ、データ入出力方法、i/oフックモジュールプログラム及びi/o代行デーモンプログラム |
US20140222988A1 (en) * | 2013-02-04 | 2014-08-07 | Samsung Electronics Co., Ltd. | Method for adaptive content discovery for distributed shared caching system |
WO2014132136A2 (en) * | 2013-02-27 | 2014-09-04 | Marvell World Trade Ltd. | Efficient longest prefix matching techniques for network devices |
US20160196076A1 (en) | 2013-07-08 | 2016-07-07 | Wilus Institute Of Standards And Technology Inc. | Memory system and method for controlling same |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
CN106575223B (zh) | 2014-07-21 | 2020-05-19 | 宇龙计算机通信科技(深圳)有限公司 | 图像分类方法和图像分类装置 |
US9836229B2 (en) | 2014-11-18 | 2017-12-05 | Netapp, Inc. | N-way merge technique for updating volume metadata in a storage I/O stack |
US10409526B2 (en) | 2014-12-17 | 2019-09-10 | Violin Systems Llc | Adaptive garbage collection |
US20160283125A1 (en) | 2015-03-25 | 2016-09-29 | Kabushiki Kaisha Toshiba | Multi-streamed solid state drive |
US9696935B2 (en) | 2015-04-24 | 2017-07-04 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
US10089239B2 (en) | 2015-05-27 | 2018-10-02 | Google Llc | Memory system architecture |
US10277481B2 (en) * | 2015-09-23 | 2019-04-30 | Futurewei Technologies, Inc. | Stateless forwarding in information centric networks with bloom filters |
US9977623B2 (en) | 2015-10-15 | 2018-05-22 | Sandisk Technologies Llc | Detection of a sequential command stream |
US20170123666A1 (en) | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | System and method for managing maintenance scheduling in a non-volatile memory |
US10248695B2 (en) * | 2016-05-23 | 2019-04-02 | International Business Machines Corporation | Extreme value computation |
US10019456B2 (en) * | 2016-06-29 | 2018-07-10 | Microsoft Technology Licensing, Llc | Recovering free space in nonvolatile storage with a computer storage system supporting shared objects |
JP6623137B2 (ja) * | 2016-09-21 | 2019-12-18 | 株式会社東芝 | 通信装置、コンピュータプログラムおよび無線通信システム |
US10225201B2 (en) * | 2017-01-27 | 2019-03-05 | Futurewei Technologies, Inc. | Scalable multicast for notification-driven content delivery in information centric networks |
-
2018
- 2018-02-13 US US15/895,797 patent/US10901907B2/en active Active
- 2018-09-11 KR KR1020180108376A patent/KR102440370B1/ko active IP Right Grant
- 2018-10-12 CN CN201811189703.8A patent/CN109684231A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050022009A1 (en) * | 2003-06-05 | 2005-01-27 | Aguilera Macros K. | System and method for preventing replay attacks |
US20090043993A1 (en) * | 2006-03-03 | 2009-02-12 | Simon Andrew Ford | Monitoring Values of Signals within an Integrated Circuit |
US20160072685A1 (en) * | 2007-03-15 | 2016-03-10 | Cisco Technology, Inc. | Detection of heavy users of network resources |
US20130019111A1 (en) * | 2010-03-31 | 2013-01-17 | British Telecommunications Public Limited Company | Secure data recorder |
US20140250155A1 (en) * | 2011-11-17 | 2014-09-04 | Huawei Technologies Co., Ltd. | Metadata storage and management method for cluster file system |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699323A (zh) * | 2021-01-07 | 2021-04-23 | 西藏宁算科技集团有限公司 | 一种基于双重布隆过滤器的云缓存系统及云缓存方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190121742A1 (en) | 2019-04-25 |
KR20190043998A (ko) | 2019-04-29 |
KR102440370B1 (ko) | 2022-09-06 |
US10901907B2 (en) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684231A (zh) | 用于识别固态盘中的热数据和流的系统及方法 | |
CN103064639B (zh) | 数据存储方法及装置 | |
JP6356675B2 (ja) | 集約/グループ化動作:ハッシュテーブル法のハードウェア実装 | |
CN104040516B (zh) | 用于数据去重的方法、设备和系统 | |
CN103514249B (zh) | 一种数据自精简方法和系统及存储装置 | |
US20170185645A1 (en) | Database caching in a database system | |
US11663328B2 (en) | Detection of compromised storage device firmware | |
US9665485B2 (en) | Logical and physical block addressing for efficiently storing data to improve access speed in a data deduplication system | |
CN110226157A (zh) | 用于减少行缓冲冲突的动态存储器重新映射 | |
US9779026B2 (en) | Cache bypass utilizing a binary tree | |
KR20170056418A (ko) | 분산 다중 모드 저장 관리 | |
CN109416681A (zh) | 使用幽灵指纹进行工作负载优化的重复数据删除 | |
CN106708423A (zh) | 多模存储管理系统 | |
CN103034562A (zh) | 闪存介质控制器中的元数据处理 | |
CN106610903A (zh) | 层级化存储器系统、存储器控制器和去重及存储器层级化方法 | |
CN103890729A (zh) | 共享资源的协同管理 | |
US20140082316A1 (en) | Selecting pages implementing leaf nodes and internal nodes of a data set index for reuse | |
JP2015505623A (ja) | ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置 | |
CN110297787A (zh) | I/o设备访问内存的方法、装置及设备 | |
US10114566B1 (en) | Systems, devices and methods using a solid state device as a caching medium with a read-modify-write offload algorithm to assist snapshots | |
CN110147203A (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
US11016676B2 (en) | Spot coalescing of distributed data concurrent with storage I/O operations | |
CN104969167B (zh) | 控制装置及控制方法 | |
CN106484313A (zh) | 数据信息备份方法、数据备份方法及装置 | |
US11347414B2 (en) | Using telemetry data from different storage systems to predict response time |
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 |