CN106257403B - 用于关于数据传送的单通熵检测的装置和方法 - Google Patents
用于关于数据传送的单通熵检测的装置和方法 Download PDFInfo
- Publication number
- CN106257403B CN106257403B CN201610447015.1A CN201610447015A CN106257403B CN 106257403 B CN106257403 B CN 106257403B CN 201610447015 A CN201610447015 A CN 201610447015A CN 106257403 B CN106257403 B CN 106257403B
- Authority
- CN
- China
- Prior art keywords
- data
- hash
- hash value
- subset
- hash table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/1448—Management of the data involved in backup or backup restore
- G06F11/1453—Management of the data involved in backup or backup restore using de-duplication of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- 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
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
提出一种用于内嵌压缩和删除重复的装置和方法。本发明的实施例包括存储器单元以及耦合到所述存储器单元的处理器。所述处理器被配置为:从数据流接收数据子集;以及选择与所述数据子集对应的基准数据块,其中,所述基准数据块存储在所述存储器单元中驻留的存储器缓冲器中。所述处理器还被配置为:对关于所述数据子集所计算的第一散列值与关于所述基准数据块所计算的第二散列值进行比较,其中,所述第一散列值和所述第二散列值存储在分离的散列表中;以及通过响应于所述分离的散列表之一中的所述第一散列值与所述第二散列值之间的检测到的匹配而修改与所述数据子集对应的头数据来生成所述数据子集的压缩式表述。
Description
相关申请的交叉引用
该申请涉及与该申请同时提交的具有律师签号HGST-H20151055US1的专利申请:“APPARATUS AND METHOD FOR SINGLE PASS ENTROPY DETECTION ON DATA TRANSFER”,其通过其完整引用合并到此。
技术领域
本公开总体上涉及数据缩减技术的领域。
背景技术
高性能非易失性存储类存储器子系统通常包括相对昂贵的组件。故此,高度期望使用数据缩减技术来使得这些系统中的数据存储最大化。数据缩减指代用于缩减写入到或读取自后端存储系统的信息总量的数据自压缩和重复数据删除(data deduplication)的技术。数据缩减带来用户(输入)数据变换为可以存储的更致密的表述。在其它优点当中,数据缩减的优点包括改进的存储利用率、增加的寿命(在全闪速存储系统的上下文中)以及应用加速。
数据压缩指代寻找同一数据块内的冗余度并且然后以使得缩减总体数据大小的方式对这些重复序列进行编码的处理。重复数据删除指代即使单独块具有不可压缩的数据也通过尽力找寻匹配序列而跨越多个块来匹配数据序列的处理。然而,传统系统在数据缩减处理内将压缩和重复数据删除执行为分离的步骤。故此,这些传统系统并未将它们组合为单个步骤,并且因此遭受延时和带宽损失。
此外,传统数据缩减解决方案占用很多周期和功率以执行压缩功能。在任何给定的应用数据流中,总是存在特定数据块集合可能未展现自压缩性质的很高概率。典型地,在压缩阶段的结束时,传统解决方案执行检查,以确保结果不大于初始块。相应地,这是非常晚的,因为在尝试压缩数据方面已经利用了资源。
发明内容
相应地,需要一种创建统一数据路径的解决方案,其在单通(single pass)中执行数据压缩和删除重复二者。本发明实施例组合数据压缩技术,并且通过将它们与重复数据删除方法集成来扩展它们。本发明实施例的单通性质允许控制系统延时,并且有助于以更高的速度(例如,以可以满足用于给定的FPGA的PCIe Gen3或其它速度要求或标准的方式)来实现线速率压缩和删除重复。
本发明实施例利用较小的数据子集(例如4千字节大小数据块)用于压缩,并且可以超越压缩编码拷贝格式以区分自引用拷贝与基准块引用拷贝。应理解,实施例不限于4千字节大小数据块,并且可以使用任何块大小或块大小范围(例如4kb、8kb、10kb、4kb-8kb块大小范围等)。实施例可以创建具有多个并行输入缓冲器的存储器缓冲器结构,以保存基准数据块。此外,实施例可以包括并行散列表查找方案,其中,可以与对于输入数据缓冲器中所存储的数据所执行的散列查找同时执行与基准数据块缓冲器中所存储的数据对应的搜索。
此外,实施例可以使用基准数据缓冲器的填充时间以计算并且存储基准数据的瓦片式散列函数值,目的是增强数据缩减性能。实施例也可以创建基准散列表计算与压缩的开始之间的互锁。以此方式,当压缩开始时,可以在基准散列表、压缩散列表或二者中执行搜索。本发明实施例可以使用启发法以确定当在散列表中的一个或多个中检测到散列命中时使用哪个序列(如果存在)。此外,本发明实施例可以修改用于输入数据流或来自输入基准缓冲器的反向引用解释。
此外,本发明实施例可以在早期检测并且预测块的可压缩度,以使得所浪费的努力最小化并且避免总体系统性能方面的损失。在此所描述的实施例可以分析可压缩度特性以对于给定的数据块做出用于执行数据缩减过程(例如压缩)的判断。故此,可以通过当给出不可压缩的数据时使得高性能数据缩减系统能够节省功率和压缩单元周期的方式来执行低影响-高性能熵检测操作。
附图说明
合并到该说明书中并且形成其一部分而且相同标号描述相同要素的附图示出本公开实施例,并且连同描述一起用于解释本公开的原理。
图1A是描述根据本发明实施例的目的是数据缩减的能够并行执行双压缩和删除重复过程的内嵌压缩和删除重复系统的示例性硬件配置的框图。
图1B是描述根据本发明实施例的用于执行内嵌压缩和删除重复过程的存储器中所提供的示例性组件的框图。
图1C描述根据本发明实施例所生成的示例性压缩数据成帧格式。
图1D描述根据本发明实施例的示例性组合式基准散列表和压缩散列表查找方案。
图2A是根据本发明实施例的用于单通熵检测的示例性处理的第一部分的流程图。
图2B是根据本发明实施例的用于单通熵检测的示例性处理的第二部分的流程图。
图3A是根据本发明实施例的用于同时重复数据删除和压缩的示例性处理的流程图。
图3B是根据本发明实施例的用于执行散列表查找过程的示例性处理的流程图。
具体实施方式
现将详细参照本发明优选实施例,其示例示出于附图中。虽然将结合优选实施例描述本发明,但应理解,它们并非意图将本发明限制为这些实施例。反之,本发明意图覆盖可以包括于所附权利要求所限定的精神和范围内的替选、修改和等同。
此外,在本发明实施例的以下详细描述中,阐述大量具体细节以提供本发明的透彻理解。然而,本领域技术人员应理解,可以在没有这些具体细节的情况下实践本发明。在其它实例中,并未详细描述公知方法、过程、组件和电路,以免不必要地模糊本发明实施例的各方面。虽然方法可以为了清楚而描述为一系列带编号的步骤,但编号并不一定规定步骤的顺序。
应理解,可以跳过、并行执行或在无需保持严格的序列顺序的情况下执行一些步骤。示出本发明实施例的附图是半图示性的,而非按比例的,并且具体地说,一些尺寸用于澄清陈述,并且在附图中是夸大地示出的。相似地,虽然附图中的视图为了易于描述而通常示出相似定向,但附图中的这种描述绝大部分是任意的。通常,本发明可以按任何定向而操作。
注记和命名法:
然而,应理解,所有这些和相似的术语是与适当的物理量关联的,并且仅是应用于这些量的方便的标记。除非据以下讨论明显地另外具体地声明,否则应理解,贯穿本发明,使用例如“接收”或“选择”或“生成”或“分组”或“监控”等的术语的讨论指代将表示为计算机系统的寄存器和存储器以及其它计算机可读介质内的物理(例如电子)量的数据操控并且变换为相似地表示为计算机系统存储器或寄存器或其它这样的信息存储、传输或显示设备内的物理量的其它数据的计算机系统或相似的电子计算设备的动作和处理。当组件出现在若干实施例中时,使用相同标号指明组件是与最初实施例所示的相同组件。
示例性内嵌压缩和删除重复系统配置
图1A是描述根据本发明实施例的目的是数据缩减的能够并行执行双压缩和删除重复过程的内嵌压缩和删除重复系统(例如系统100)的示例性硬件配置的框图。以此方式,系统100可以在单通中执行数据缩减过程,从而与数据缩减操作有关的操作(例如数据压缩和重复数据删除)组合为单个处理、单个处理路径或处于单个步骤中,由此缩减普通系统延时和/或带宽损失。虽然图1A中公开具体组件,但应理解,这些组件是示例性的。也就是说,本发明实施例良好地适合于具有各种其它硬件组件或图1A中陈述的组件的变形。应理解,图1A中的硬件组件可以与除了所呈现的组件之外的组件操作,并且并不要求图1A中所描述的所有硬件组件实现本发明的目的。根据一些实施例,图1A内所描述的组件可以组合,以实现本发明的目的。
系统100可以实现为能够通过数据通信总线与其它电子设备进行通信的电子设备。例如,总线106描述这种数据通信总线。可以实现本公开实施例的示例性系统100包括通用计算系统环境。在其最基本的配置中,系统100典型地包括至少一个处理单元101以及存储器存储单元。例如,计算机可读存储介质104描述这种存储器存储单元。取决于设备的确切配置和类型,计算机可读存储介质104可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存)或二者的某种组合。计算机可读存储介质104的部分当运行时促进关于线程组的存储器操作或请求的高效运行。
在一个实施例中,处理器101可以是可编程电路,被配置为:执行在此所描述的内嵌压缩和删除重复操作。例如,处理器101可以是FPGA控制器或闪存设备控制器。替代地,在一个实施例中,处理器101可以可操作为运行存储在计算机可读存储介质104中并且被配置为执行在此所描述的功能的内嵌压缩和删除重复程序(见例如下文中所讨论的图1B)。系统100可以还包括可选图形系统105,用于例如通过在可选显示设备102上显示信息来将信息呈现给计算机用户。系统100还包括可选字母数字输入/输出设备103。输入/输出设备103可以包括可选光标控件或导向设备以及一个或多个信号通信接口(例如网络接口卡)。此外,接口模块115包括用于允许系统100通过电子通信网络(例如互联网、有线通信网络、无线通信网络或相似的网络)与其它计算机系统进行通信的功能性。
此外,系统100可以还具有附加特征和功能性。例如,系统100可以还包括附加存储介质(可拆卸和/或不可拆卸的),包括但不限于磁或光盘或带。计算机存储介质包括通过用于存储例如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可拆卸和不可拆卸介质。
图1B是描述根据本发明实施例的用于执行内嵌压缩和删除重复过程的存储器中所提供的示例性组件的框图。虽然图1B中公开具体组件,但应理解,这些计算机存储介质组件是示例性的。也就是说,本发明实施例良好地适合于具有各种其它组件或图1B中陈述的计算机存储介质组件的变形。应理解,图1B中的组件可以与除了所呈现的组件之外的组件操作,并且并不要求图1B中所描述的所有计算机存储介质组件实现本发明的目的。根据一些实施例,图1B内所描述的组件可以组合,以实现本发明的目的。此外,应理解,图1A中所描述的一些硬件组件可以与图1B中所描述的一些组件组合而操作,目的是实现本发明的目标。
如图1B中所描述的那样,计算机可读存储介质104包括操作系统107。当系统100初始化时,操作系统107加载到处理器101中。此外,在由处理器101运行时,操作系统107可以被配置为:提供对系统100的可编程接口。系统100可以还包括无线通信机构。通过这些设备,系统100可以通过通信网络(例如互联网或内部网(例如局域网))以通信方式耦合到其它计算机系统。
此外,如图1B所示,计算机可读存储介质104包括指纹计算引擎110。指纹计算引擎110包括用于使用字节序列生成指纹的功能性,目的是执行鉴权和/或查找过程。在检测到接收到数据流时,缓冲器管理控制器112可以将信号传递到指纹计算引擎110,以在其接收时处理数据输入缓冲器112-1中所存储的数据。
指纹计算引擎110所生成的指纹可以用于表示这些较大文件,同时使用存储较大文件另外所需的存储空间的部分。例如,较大文件可以包括内容的页面或多媒体文件。指纹计算引擎110可以使用传统计算机实现的过程(例如散列函数)以将数据流缩减为数据比特,目的是生成指纹,从而可以由系统100的组件(例如签名计算引擎113)处理。可以以与系统100的其它组件(例如散列表模块111)如何计算散列值一致的方式或通过不同的方式来执行散列计算。
以此方式,指纹计算引擎110可以被配置为:随着系统100接收数据流,生成用于与之关联的到来数据子集的指纹。例如,数据子集可以是4千字节增量的形式。在一个实施例中,指纹计算引擎110可以计算用于与系统100接收到的并且存储在缓冲器管理控制器112所生成的数据输入缓冲器112-1内的数据流关联的到来4千字节集合的指纹。
签名计算引擎113包括用于计算用于系统100接收到的数据流的签名的功能性。签名计算引擎113可以基于各种传统的基于散列的签名方案(包括Merkle,Spooky、CRC、MD5、SHA或相似的方案)而计算签名。签名计算引擎113可以被配置为:对系统100接收到的数据流使用子块签名计算、基于Rabin签名的相似度检测计算和/或其它基于相似度的签名计算来执行签名计算。根据一个实施例,签名计算引擎113可以使用指纹计算引擎110所生成的指纹数据以生成签名。在一个实施例中,在接收到数据流时,缓冲器管理控制器112可以被配置为:将信号传递到签名计算引擎113,以在其接收时处理数据输入缓冲器112-1中所存储的数据。
签名计算引擎113可以被配置为:对于输入数据流的各个部分偶尔计算用于数据子集的多个签名。以此方式,签名计算引擎113所计算的用于子集的签名可以传递到系统100的其它组件(例如基准块标识模块114),以用于进一步处理。例如,如果在彼此相似或相同的块上计算签名,则签名计算引擎113所计算的签名可以包括允许它们相似或相同的数学性质。故此,系统100的组件(例如基准块标识模块114)所选择的基准块可以基于最佳地表示驻留在系统100上的存储器中所存储的多个相似签名聚类的所计算的签名。因此,系统100的组件可以使用签名计算引擎113所计算的签名来执行基准块标识过程。例如,基准块标识模块114可以使用子块签名以执行基准块标识过程。
基准块标识模块114包括用于分析签名计算引擎113所生成的多个不同的签名聚类并且选择系统100的组件(例如散列表模块111)可以处理的基准块的功能性。基准块标识模块114可以被配置为:对所计算的签名与系统100当前所存储的签名的聚类进行比较,并且对应地选择最佳地表示所计算的签名的基准块。例如,基准块标识模块114可以被配置为:对所计算的签名与缓冲器管理控制器112所生成的缓冲器中当前所存储的签名的聚类进行比较,并且对应地选择最佳地表示所计算的签名的基准块。
基准块标识模块114所选择的基准块可以存储在缓冲器管理控制器112所生成的缓冲器(例如基准块缓冲器112-3)内,以用于由系统100的组件进一步处理。基准块可以是已经通过各种方法发现为与输入数据相似的有规律的数据块。例如,基准块可以是使用子块签名、相似度检测机制、应用提示检测方案或相似的方案所计算的已经发现为与输入数据相似的有规律的数据块。基准块也可以是包含发现为具有较大重复因子的重复数据序列的纯合成块。根据一个实施例,基准块标识模块114可以被配置为:使用先验知识、内容相似度匹配、应用提示、数据模式识别或相似的手段来标识基准块。
此外,涉及基准块标识模块114所标识的基准块(例如基准块缓冲器112-3内所存储的基准块)的信息可以存储在数据流的头部分内。例如,参照图1C,用于基准块标识模块114所标识的基准块的基准块标识符可以存储在数据流116的头部分116a内。如图1C所示,头数据116a可以连同它们的各个压缩的净荷数据部分(例如压缩的净荷116)一起包括于数据颗粒(例如数据颗粒116-1、116-2和116-N)内。在一个实施例中,除了比特矢量117-2、颗粒计数117-3和/或头CRC数据117-4之外,头数据116a可以还存储基准标识符117-1。
参照图1B,散列表模块111包括用于基于与系统100接收到的数据流关联的数据而计算散列值并且动态地生成散列表的功能性。在接收到数据流时,缓冲器管理控制器112可以将信号传递到散列表模块111,以在每个缓冲器接收到数据时处理数据输入缓冲器112-1和/或基准块缓冲器112-3中所存储的数据。散列表模块111包括用于计算可以存储在所生成的散列表内的用于与系统100接收到的数据流关联的数据子集(例如数据字节)的散列值的功能性。例如,散列表模块111可以计算用于与系统100接收到的数据流关联的数据字节的散列值。故此,流行高性能压缩方案可以通过加速对重复数据序列的搜索的方式来利用散列表模块111。例如,流行高性能压缩方案(包括Snappy、Lempel-Ziv(LZ)压缩方案、Gzip或相似的方案)可以利用散列表模块111。
数据子集可以是预定的、固定大小的,并且可以用于表示较大文件,目的是执行删除重复过程。故此,散列表模块111可以计算用于系统100接收到的数据的每个字节的散列值。以此方式,散列表模块111可以与数据子集的接收以及在缓冲器管理控制器112所生成的缓冲器内的存储同时计算用于其的散列值。此外,可以通过与系统100的其它组件(例如指纹计算引擎110)如何计算散列值一致的方式或通过不同的方式来执行散列计算。
根据一个实施例,散列表模块111包括基于基准块标识模块130所标识的基准数据块而动态地生成基准散列表的功能性。一旦由基准块标识模块114选择,与基准块对应的数据块就可以存储在基准块缓冲器(例如基准块缓冲器112-3)内。随着基准块正得以存储,散列表模块111可以被配置为:计算与基准块对应的瓦片式散列值。以此方式,散列表模块111可以生成预先所计算的散列表,其可以加速执行系统100所执行的压缩和删除重复过程。
例如,参照图1B,当字节集合由系统100接收并且存储在驻留在系统100上的数据输入缓冲器112-1内时,散列表模块111可以计算与接收到的字节集合对应的用于基准块标识模块114所确定和/或选择的基准块的散列值。随着基准数据块存储在缓冲器管理控制器112动态地生成的基准数据块缓冲器112-3内,散列表模块111计算这些散列值。以此方式,缓冲器管理控制器112包括用于创建基准数据块缓冲器的功能性,其可以并行驻留在系统100上的数据输入缓冲器(例如数据输入缓冲器112-1)的功能性。故此,这些所计算的基准块散列值可以于是随后存储在散列表模块111所生成的基准散列表111-1内。
散列表模块111包括用于使用系统100接收到的和/或存储在数据输入缓冲器内的数据流来动态地生成压缩散列表的功能性。此外,散列表模块111包括用于修改和/或生成可以用于随后解压和/或重构系统100先前所处理的数据流的所编码的数据的功能性。以此方式,散列表模块111可以被配置为:于在压缩操作期间标识相似的数据序列时对头数据进行修改和/或编码。故此,散列表模块111可以生成包括散列表模块111先前所标识的与所存储的数据对应的基准标识符的所编码的数据。
例如,散列表模块111可以在完成散列计算过程时生成和/或修改包括散列表模块111所标识的未压缩的数据字节的数量(例如所标识的文字的数量)的所编码的头数据。以此方式,散列表模块111所生成的所编码的数据可以提供涉及解压模块可以如何对与关联于经受解压过程的数据流的集合字节对应的文字和/或拷贝元素进行解压或解码的指令。拷贝元素可以包括待拷贝的字节(“长度”)和/或待拷贝的数据后退多远(“偏移”)。
例如,在一个实施例中,散列表模块111所生成和/或修改的头数据可以包括所标识的文字的表述以及对应文字数据序列。故此,解压模块108可以读取所编码和/或修改的头信息,其提供涉及模块可以如何解压文字序列的指令。此外,解压模块108可以被配置为:基于各个压缩方案(例如Snappy、LZ压缩方案、Gzip或相似的方案)而执行解压过程。
根据一个实施例,倘若选择并且指定至少一个基准块以用于基准块缓冲器内的存储,那么散列表模块111可以将信号发送到系统100的组件,以基于所计算的散列值而使用基准散列表和/或压缩散列表来执行散列表查找和/或头修改过程,以用于进一步处理。以此方式,散列表模块111可以创建基准散列表计算与解压过程的开始之间的互锁。此外,散列表模块111对于压缩散列表和基准散列表所执行的散列计算过程可以是相同计算机实现的过程或函数或不同计算机实现的过程或函数。
表I提供能够通过本发明实施例修改的示例性头格式或反向引用编码格式修改集合。
压缩的头 | 意义 |
00 | 文字,最大长度60字节 |
01 | 局部拷贝,3比特长度,11比特偏移 |
10 | 局部拷贝,6比特长度,12比特偏移 |
11 | 引用拷贝,12比特长度,12比特偏移 |
表I
扫描和匹配引擎109包括用于执行散列表查找过程并且执行散列值比较的功能性。扫描和匹配引擎109包括用于从散列表模块111发送和/或接收信号以执行用于对用于数据子集的所计算的散列值与系统100当前所存储的基准数据块进行比较的计算机实现的查找过程的功能性。
扫描和匹配引擎109可以使用散列表查找逻辑以定位散列表模块111所生成的散列表内的所计算的散列值并且比较数据。例如,散列表模块111可以生成基准散列表111-1和压缩散列表111-2并且执行比较操作。故此,扫描和匹配引擎109可以被配置为:针对缓冲器管理控制器112所生成的缓冲器(例如基准块缓冲器112-3)内的系统100当前所存储的基准数据块查找用于字节子集的所计算的散列值。
以此方式,扫描和匹配引擎109可以在散列表模块111所创建的基准散列表和压缩散列表中都执行并行搜索或同时搜索。当执行这些查找过程时,扫描和匹配引擎109也可以执行用于对系统100接收到的后续字节集合与散列表模块111先前所标识的对应于数据的所存储的基准数据块和/或压缩散列值进行比较的过程。
例如,参照图1D,当基准块标识模块114标识基准块118时,散列表模块111随着所计算的散列值项(例如用于基准块数据子集118-1、118-2、118-3、118-4等的值)存储在基准块缓冲器中而将其存储在与基准块118的部分对应的基准散列表111-1内。以此方式,系统100可以使用基准数据缓冲器的填充时间,以计算并且存储与基准块118对应的基准数据的瓦片式散列函数值,这样增强系统100所执行的压缩和删除重复过程的性能。
此外,如图1D所示,系统100也可以接收与到来数据流关联的输入数据块120。故此,扫描和匹配引擎109可以使用散列表逻辑109-3,以使用所布居的基准散列表111-1和压缩散列表111-2来执行并行查找过程,以标识先前所存储的作为相似的接收到的数据块120的数据序列。以此方式,扫描和匹配引擎109可以在每字节基础上使用较小数据子集(例如输入数据块数据子集120-1)和基准块来执行比较。
如果扫描和匹配引擎109检测到基准散列表111和/或压缩散列表111-2内的项与用于数据块120的所计算的散列值之间的匹配,则扫描和匹配引擎109可以于是对应地将信号发送到解压模块108,以使用修改后的压缩头格式(例如在此所描述的反向引用编码格式修改)来解压基准块缓冲器或数据输入缓冲器内的数据子集。相应地,解压后的输出可以于是存储在缓冲器管理控制器112所生成的缓冲器(例如数据输出缓冲器112-2)内。
在一个实施例中,在执行解压过程期间,解压模块108可以被配置为:当扫描和匹配引擎109检测到匹配基准散列表111-1和/或压缩散列表111-2时,选择多个不同序列之一。例如,基于预定启发法,解压模块108可以被配置为:解压数据作为文字、局部拷贝和/或引用拷贝。以此方式,在解压时,系统100可以创建相似的基准数据输入缓冲器,从而解压实现方式可以修改为解释来自输入数据流或来自基准块缓冲器的反向引用。
故此,解压模块108可以被配置为:处理扫描和匹配引擎109所使用的文字扫描逻辑109-1和/或局部拷贝扫描逻辑109-2。可以理解,本发明实施例不限于使用单个基准块。实施例可以扩展为通过对现有数据路径和帧结构的简单修改来压缩多个基准块。例如,实施例可以扩展为并行执行的多个基准块比较。此外,散列表模块111可以被配置为:生成与不同基准块集合中的各个基准块对应的多个基准散列表。此外,多个基准块可以存储在散列表模块111所生成的单个基准散列表内。
此外,系统100可以被配置为:早期检测并且预测块的可压缩度,然后执行例如在此所描述的数据缩减操作,以使得浪费的努力最小化,并且避免总体系统性能方面的损失。例如,解压模块108包括用于对系统100接收到的数据执行分组过程的功能性。故此,解压模块108可以包括数据分组逻辑108-1,其允许解压模块108将经由数据输入缓冲器112-1接收到的到来数据分组为可以在单个实例中处理或操作的数据字节或“瓦片”子集。以此方式,散列表模块111可以通过数据分组逻辑108-1对解压模块108所选择的重叠数据瓦片计算散列值。此外,用于重叠瓦片的散列表模块111所计算的散列值可以用作表示瓦片偏移值存储在数据结构(例如压缩散列表111-2)和/或驻留在系统100上的存储器内的地方的存储器地址位置。
此外,扫描和匹配引擎109可以使用散列表模块111以定位所计算的瓦片,并且随着数据块写入到数据输入缓冲器112-1而对其并行执行比较操作。例如,使用压缩散列表111-2,如果扫描和匹配引擎109确定用于与到来数据集合有关的瓦片的所计算的散列值共享与压缩散列表111-2内所存储的散列值相同的签名,则其可以检测到出现“散列命中”。以此方式,当两个瓦片具有签名计算引擎113所计算的相同或相似签名时,扫描和匹配引擎109可以检测到出现散列命中。
此外,扫描和匹配引擎109包括用于将信号发送到解压模块108以增加可压缩度计数器(例如散列命中计数器111-3)的功能性。以此方式,每次扫描和匹配引擎109检测到出现散列命中,散列命中计数器111-3就可以增加。散列命中计数器111-3允许系统100保持跟踪频繁显现在系统100接收到的到来数据集合内的散列值。相应地,在数据传送到数据输入缓冲器112-1中的结束时,系统100可以存储所计算的用于整个数据集合的散列集合。
此外,系统100可以被配置为:存储使得其能够更好地确定哪些数据块将最受益于对其执行的数据缩减过程(例如重复数据删除过程、基准块标识过程、数据压缩等)的频繁散列值匹配阈值。以此方式,能够以如下方式配置系统100:允许系统100使用预定阈值和/或所计算的可压缩度计数来自动地解释可压缩度特性。例如,在系统100执行数据缩减过程之前,可以首先参照预定阈值计数并且判断是否执行、暂停和/或挂起数据缩减操作。
以此方式,系统100的组件(例如解压模块108)可以生成当阈值计数满足或超过频繁散列值匹配阈值时指令系统100的组件初始化执行数据缩减操作(例如重复数据删除过程、基准块标识过程、数据压缩过程等)的指令或指令集合。相应地,系统100的组件可以生成当阈值计数无法满足频繁散列值匹配阈值时指令系统100的组件抑制执行数据缩减操作的指令或指令集合。系统100进行的这种确定不仅可以节省主机CPU周期,而且其也可以允许数据移动通过系统,而不中断其它驱动器(例如主机驱动器)。
例如,在一个实施例中,如果散列命中计数器111-3的值小于预定阈值,则解压模块108可以确定在当前分析之下的数据块展现低可压缩度特性,由此对于数据流的至少一部分展示高熵等级。相应地,响应于该确定,解压模块108可以被配置为:不执行任何解压操作。以此方式,解压模块108可以被配置为:发送暂停和/或挂起执行解压操作的指令。
然而,如果散列命中计数器111-3的值等于或大于预定阈值,则解压模块108可以确定数据块展现高可压缩度特性,由此对于数据流的至少一部分展示低熵等级。相应地,响应于该确定,解压模块108可以被配置为:发送初始化执行解压操作的指令。以此方式,解压模块108使用可压缩度因子以确定是将“压缩”信号还是“绕过压缩”信号发送到系统100的其它组件,以用于与数据输入缓冲器112-1内所存储的到来数据集合有关的给定字节集合。
以此方式,系统100可以基于给定的数据集合的各数据块之间的检测到的相似度的频率而测量与数据输入缓冲器112-1内所存储的数据集合有关的熵。根据一个实施例,扫描和匹配引擎109可以使用数据的柱状图表述来计算散列命中的频率。此外,可以通过硬件或软件来实现散列命中计数器111-3。
此外,系统100也可以被配置为:基于系统负载和/或用户偏好而动态地调整阈值。以此方式,用于压缩的阈值可以得以松弛,目的是以功率和延时的代价增加压缩率。相似地,为了实现较低的平均延时,可以使用较高的阈值。
图2A是根据本发明实施例的用于单通熵检测的示例性处理的第一部分的流程图。
在步骤205,输入数据流由系统接收并且存储在数据输入缓冲器内。在接收到数据流时,解压模块使用数据分组逻辑,以对数据输入流内所发现的多个数据子集进行分组。子集的大小可以是预定的,并且是固定大小。
在步骤206,使用指纹计算引擎所生成的指纹数据用于数据输入缓冲器中所存储的数据,签名计算引擎随着在步骤205期间数据流正在被存储而计算用于数据流内的第一分组数据子集的第一签名。
在步骤207,散列表模块计算用于第一分组数据子集的第一散列值,并且对所计算的散列值与散列表中所存储的散列值进行比较,以检测匹配。
在步骤208,散列表模块计算用于第二分组数据子集的第二散列值,并且对所计算的散列值与散列表中所存储的散列值进行比较,以检测匹配。
在步骤209,散列表模块计算用于第n分组数据子集的第n散列值,并且对所计算的散列值与散列表中所存储的散列值进行比较,以检测匹配。
在步骤210,解压模块监控散列表模块检测到的匹配,并且对应地关于每个检测到的匹配增加计数器。
图2B是根据本发明实施例的用于单通熵检测的示例性处理的第二部分的流程图。在图2B中概述操作210(见图2A)的细节。
在步骤211,解压模块基于与预定频繁散列值匹配阈值有关的计数器的值而确定用于输入数据流的部分的熵等级。
在步骤212,解压模块针对其是否检测到已经满足或超过频繁散列值匹配阈值而进行确定。如果解压模块检测到已经满足或超过频繁散列值匹配阈值,则解压模块确定用于输入数据流的部分的高熵等级,并且对应地将信号传递到系统组件,以初始化执行数据缩减操作,如步骤213中详述的那样。如果解压模块检测到尚未满足频繁散列值匹配阈值,则解压模块确定用于输入数据流的部分的低熵等级,并且对应地将信号传递到系统组件,以暂停执行数据缩减操作,如步骤214中详述的那样。
在步骤213,解压模块检测到已经满足或超过频繁散列值匹配阈值,并且因此,解压模块确定用于输入数据流的部分的高熵等级,并且对应地将信号传递到系统组件,以初始化执行数据缩减操作。
在步骤214,解压模块检测到尚未满足频繁散列值匹配阈值,并且因此,解压模块确定用于输入数据流的部分的低熵等级,并且对应地将信号传递到系统组件,以暂停执行数据缩减操作。
图3A是根据本发明实施例的用于同时重复数据删除和压缩的示例性处理的流程图。在图2B中概述操作213(见图2B)的细节。
在步骤215,基准块标识模块对在步骤206期间计算的签名与系统当前所存储的签名聚类进行比较,并且对应地选择最佳地表示所计算的签名的基准块。基准块标识模块所选择的基准块存储在基准块缓冲器内,以用于由系统进一步处理。
在步骤216,随着在步骤215中正存储基准块,散列表模块计算与基准块对应的瓦片式散列值。
在步骤217,倘若在216期间计算的散列值并未已经存储在基准散列表内,那么散列值存储在散列表模块所生成的基准散列表内。
在步骤218,倘若至少一个基准块存储在基准块缓冲器内,那么散列表模块将信号发送到扫描和匹配引擎,以基于在步骤207、208和/或209期间所计算的散列值而使用基准散列表和/或压缩散列表执行散列表查找和/或头修改过程,以用于进一步处理。
图3B是根据本发明实施例的用于执行散列表查找过程的示例性处理的流程图。在图3B中概述操作218(见图3A)的细节。
在步骤219,扫描和匹配引擎针对其是否检测到所计算的散列值与基准散列表内独占地存储的项之间的匹配进行确定。如果扫描和匹配引擎确定检测到匹配,则扫描和匹配引擎在每字节基础上对关联于散列值的数据子集与关联于所匹配的项的基准块缓冲器中所存储的基准块进行比较,如步骤220中详述的那样。如果扫描和匹配引擎确定未检测到匹配,则扫描和匹配引擎针对其是否检测到所计算的散列值与压缩散列表内独占地存储的项之间的匹配进行确定,如步骤221中详述的那样。
在步骤220,扫描和匹配引擎确定检测到匹配,并且因此,扫描和匹配引擎在每字节基础上对关联于散列值的数据子集与关联于所匹配的项的基准块缓冲器中所存储的基准块进行比较,并且对应地将信号发送到解压模块,以使用用于引用拷贝的修改后的压缩头格式(例如“11”)来对基准块缓冲器内的数据子集进行解压。解压的输出存储在数据输出缓冲器内。
在步骤221,扫描和匹配引擎确定未检测到匹配,并且因此,扫描和匹配引擎针对其是否检测到所计算的散列值与压缩散列表内独占地存储的项之间的匹配进行确定。如果扫描和匹配引擎确定检测到匹配,则扫描和匹配引擎在每字节基础上对关联于散列值的数据子集与数据输入缓冲器内当前所存储的数据进行比较,如步骤222中详述的那样。如果扫描和匹配引擎确定未检测到匹配,则扫描和匹配引擎针对其是否检测到所计算的散列值与基准散列表和压缩散列表二者内所存储的项之间的匹配进行确定,如步骤223中详述的那样。
在步骤222,扫描和匹配引擎确定检测到匹配,并且因此,扫描和匹配引擎在每字节基础上对关联于散列值的数据子集与数据输入缓冲器内当前所存储的数据进行比较,并且对应地将信号发送到解压模块,以基于增强的比特长度和偏移而使用用于局部拷贝的修改后的压缩头格式(例如“01”或“10”)来解压数据输入缓冲器内的数据子集。解压的输出存储在数据输出缓冲器内。
在步骤223,扫描和匹配引擎确定未检测到匹配,并且因此,扫描和匹配引擎针对其是否检测到所计算的散列值与基准散列表和压缩散列表二者内所存储的项之间的匹配进行确定。如果扫描和匹配引擎确定检测到匹配,则扫描和匹配引擎在每字节基础上对关联于散列值的数据子集与数据输入缓冲器内当前所存储的数据进行比较,并且对应地将信号发送到解压模块,以基于预定过程而解压数据输入缓冲器内的数据子集。
在步骤224,扫描和匹配引擎确定检测到匹配,并且因此,扫描和匹配引擎在每字节基础上对关联于散列值的数据子集与数据输入缓冲器内当前所存储的数据进行比较,并且对应地将信号发送到解压模块,以基于预定过程而解压数据输入缓冲器内的数据子集。根据一个实施例,预定过程可以包括:配置扫描和匹配引擎,以取决于与数据流关联的数据的拷贝的长度和/或某种另外知识而将其解压过程的选择偏置朝向局部匹配或基准匹配。
在步骤225,扫描和匹配引擎确定未检测到匹配,并且因此,所计算的散列值存储在散列表模块所生成的压缩散列表内。
在步骤226,扫描和匹配引擎将信号传递到解压模块,以使用用于文字序列的修改后的压缩头格式(例如“00”)来解压数据输入缓冲器中所存储的数据子集。解压的输出存储在数据输出缓冲器内。
虽然在此已经公开了特定优选实施例和方法,但本领域技术人员据前述公开应理解,可以在不脱离本发明的精神和范围的情况下进行这些实施例和方法的变形和修改。
根据实施例,一个或多个专用计算设备可以实现在此描述的技术。专用计算设备可以是硬引线的,以执行技术,或可以包括恒久地编程以执行技术的数字电子设备(例如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)),或可以包括编程以执行根据固件、存储器、其它存储或组合中的程序指令的技术的一个或多个通用硬件处理器。这些专用计算设备也可以将定制的硬引线逻辑、ASIC或FPGA与定制的编程进行组合,以实现技术。专用计算设备可以是数据库服务器、存储设备、台式计算机系统、便携式计算机系统、手持设备、联网设备或包括硬引线和/或程序逻辑以实现技术的任何另外设备。
在本发明实施例的前面详细描述中,已经阐述大量具体细节以提供本发明的透彻理解。然而,本领域技术人员应理解,能够在没有这些具体细节的情况下实践本发明。在其它实例中,并未详细描述公知方法、过程、组件和电路,以免不必要地模糊本发明实施例的各方面。虽然方法能够为了清楚而描述为一系列带编号的步骤,但编号并不一定规定步骤的顺序。应理解,可以跳过、并行执行或在无需保持严格的序列顺序的情况下执行一些步骤。示出本发明实施例的附图是半图示性的,而非按比例的,并且具体地说,一些尺寸用于澄清陈述,并且在附图中是夸大地示出的。相似地,虽然附图中的视图为了易于描述而通常示出相似定向,但附图中的这种描述绝大部分是任意的。
Claims (12)
1.一种在单通期间对输入数据流执行数据缩减操作的装置,包括:
存储器单元,用于存储数据流;以及
处理器,耦合到所述存储器单元,所述处理器被配置为:在单通中执行压缩操作和删除重复操作,所述处理器被配置为:
使用来自数据流的数据子集以生成与所述数据子集对应的基准数据块;使用同一函数计算所述数据子集的第一散列值和所述基准数据块的第二散列值;
对关于所述数据子集所计算的所述第一散列值与关于所述基准数据块所计算的所述第二散列值进行比较,其中,所述第一散列值和所述第二散列值存储在分离的散列表中;
通过响应于所述第一散列值与所述第二散列值之间的检测到的匹配、而至少修改与所述数据子集对应的头数据来生成所述数据子集的压缩的表述和删除重复的表述,其中,响应于检测到所述第一散列表与所述第二散列表之间的匹配而使用所述基准数据块来生成所述压缩的表述,其中,所述分离的散列表包括基准散列表,并且所述第二散列值存储在所述基准散列表中;
在将所述基准数据块存储在存储器缓冲器中并且在生成所述压缩的表述时,启动解压过程。
2.如权利要求1所述的装置,其中,所述分离的散列表包括压缩散列表。
3.如权利要求1所述的装置,其中,所述处理器可操作为:在将所述基准数据块存储在所述存储器缓冲器中时,通过发起解压过程来生成互锁。
4.如权利要求1所述的装置,其中,所述处理器可操作为:基于启发法而使用反向引用编码格式来修改所述头数据。
5.一种在单通期间对输入数据流执行数据缩减操作的计算机实现的方法,所述方法包括:
从数据流接收数据子集;
选择与所述数据子集对应的基准数据块,其中,所述基准数据块存储在存储器缓冲器中;
对关于所述数据子集所计算的第一散列值与关于所述基准数据块所计算的第二散列值进行比较,其中,所述第一散列值和所述第二散列值存储在分离的散列表中,其中,使用同一函数计算所述第一散列值和所述第二散列值;以及
通过响应于所述第一散列值与所述第二散列值之间的检测到的匹配而至少修改与所述数据子集对应的头数据,来生成所述数据子集的压缩的表述,其中,响应于检测到所述第一散列表与所述第二散列表之间的匹配而使用所述基准数据块来生成所述压缩的表述,其中,所述分离的散列表包括基准散列表,并且所述第二散列值存储在所述基准散列表中;以及
在将所述基准数据块存储在存储器缓冲器中并且在生成所述压缩的表述时,启动解压过程。
6.如权利要求5所述的方法,其中,所述分离的散列表包括压缩散列表。
7.如权利要求5所述的方法,还包括:
在将所述基准数据块存储在所述存储器缓冲器中时通过发起解压过程来生成互锁。
8.如权利要求5所述的方法,其中,所述修改还包括:基于启发法而使用反向引用编码格式来修改所述头数据。
9.一种在单通期间对输入数据流执行数据缩减操作的装置,包括:
存储器单元,用于存储存储器缓冲器;以及
处理器,耦合到所述存储器单元,并且被配置为:
从数据流接收数据子集;
将所述数据子集存储在数据输入存储器缓冲器内;
计算用于所述数据子集的签名;
使用所述计算的签名来选择基准数据块,其中,所述基准数据块存储在所述存储器单元中驻留的存储器缓冲器中;
使用同一函数计算所述数据子集的第一散列值和所述基准数据块的第二散列值;对关于所述数据子集所计算的所述第一散列值与关于所述基准数据块所计算的所述第二散列值进行比较,其中,所述第一散列值和所述第二散列值存储在分离的散列表中;以及
通过响应于所述第一散列值与所述第二散列值之间的检测到的匹配修改与所述数据子集对应的头数据来生成所述数据子集的压缩的表述,其中,响应于检测到所述第一散列表与所述第二散列表之间的匹配而使用所述基准数据块来生成所述压缩的表述,其中,所述分离的散列表包括基准散列表,并且所述第二散列值存储在所述基准散列表中;以及在将所述基准数据块存储在存储器缓冲器中并且在生成所述压缩的表述时,启动解压过程。
10.如权利要求9所述的装置,其中,所述分离的散列表包括压缩散列表。
11.如权利要求9所述的装置,其中,所述处理器可操作为:在将所述基准数据块存储在所述存储器缓冲器中时,通过发起解压过程来生成互锁。
12.如权利要求9所述的装置,其中,所述处理器可操作为:基于启发法而使用反向引用编码格式来修改所述头数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/744,444 | 2015-06-19 | ||
US14/744,444 US10152389B2 (en) | 2015-06-19 | 2015-06-19 | Apparatus and method for inline compression and deduplication |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106257403A CN106257403A (zh) | 2016-12-28 |
CN106257403B true CN106257403B (zh) | 2020-11-03 |
Family
ID=55442979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610447015.1A Active CN106257403B (zh) | 2015-06-19 | 2016-06-20 | 用于关于数据传送的单通熵检测的装置和方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10152389B2 (zh) |
JP (1) | JP6370838B2 (zh) |
KR (1) | KR102052789B1 (zh) |
CN (1) | CN106257403B (zh) |
AU (2) | AU2015215974B1 (zh) |
CA (1) | CA2933374A1 (zh) |
DE (1) | DE102016007365A1 (zh) |
FR (1) | FR3037676A1 (zh) |
GB (1) | GB2540666B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100325054A1 (en) * | 2009-06-18 | 2010-12-23 | Varigence, Inc. | Method and apparatus for business intelligence analysis and modification |
US9552384B2 (en) | 2015-06-19 | 2017-01-24 | HGST Netherlands B.V. | Apparatus and method for single pass entropy detection on data transfer |
US10585611B2 (en) * | 2016-04-26 | 2020-03-10 | Netapp Inc. | Inline deduplication |
US10282127B2 (en) | 2017-04-20 | 2019-05-07 | Western Digital Technologies, Inc. | Managing data in a storage system |
US10809928B2 (en) | 2017-06-02 | 2020-10-20 | Western Digital Technologies, Inc. | Efficient data deduplication leveraging sequential chunks or auxiliary databases |
KR102276912B1 (ko) * | 2017-06-07 | 2021-07-13 | 삼성전자주식회사 | 스토리지 시스템 및 이의 동작 방법 |
US10503608B2 (en) | 2017-07-24 | 2019-12-10 | Western Digital Technologies, Inc. | Efficient management of reference blocks used in data deduplication |
US10521400B1 (en) * | 2017-07-31 | 2019-12-31 | EMC IP Holding Company LLC | Data reduction reporting in storage systems |
US11144227B2 (en) * | 2017-09-07 | 2021-10-12 | Vmware, Inc. | Content-based post-process data deduplication |
US11126594B2 (en) * | 2018-02-09 | 2021-09-21 | Exagrid Systems, Inc. | Delta compression |
US12013760B2 (en) * | 2019-07-10 | 2024-06-18 | Centurion Holdings I, Llc | Methods and systems for recognizing unintended file system changes |
CN114365097A (zh) * | 2019-08-27 | 2022-04-15 | 美光科技公司 | 受管理存储器系统中的写入缓冲器控制 |
US11436209B2 (en) * | 2019-10-31 | 2022-09-06 | EMC IP Holding Company LLC | Techniques for efficiently determining similarity hashes |
CN115827619B (zh) * | 2023-01-06 | 2023-05-09 | 山东捷瑞数字科技股份有限公司 | 一种基于三维引擎的重复数据检测方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5032987A (en) * | 1988-08-04 | 1991-07-16 | Digital Equipment Corporation | System with a plurality of hash tables each using different adaptive hashing functions |
CN102541751A (zh) * | 2010-11-18 | 2012-07-04 | 微软公司 | 用于数据去重复的可缩放块存储 |
CN102567503A (zh) * | 2010-12-16 | 2012-07-11 | 微软公司 | 用于数据去重复的可扩展流水线 |
CN104346304A (zh) * | 2013-07-23 | 2015-02-11 | 国际商业机器公司 | 使用存储器控制器来请求资源的方法和系统 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5406279A (en) | 1992-09-02 | 1995-04-11 | Cirrus Logic, Inc. | General purpose, hash-based technique for single-pass lossless data compression |
JP2564749B2 (ja) | 1993-03-31 | 1996-12-18 | 株式会社富士通ソーシアルサイエンスラボラトリ | データ圧縮方法 |
US6278735B1 (en) | 1998-03-19 | 2001-08-21 | International Business Machines Corporation | Real-time single pass variable bit rate control strategy and encoder |
US6374266B1 (en) | 1998-07-28 | 2002-04-16 | Ralph Shnelvar | Method and apparatus for storing information in a data processing system |
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6195024B1 (en) | 1998-12-11 | 2001-02-27 | Realtime Data, Llc | Content independent data compression method and system |
US6601104B1 (en) | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US6724817B1 (en) | 2000-06-05 | 2004-04-20 | Amphion Semiconductor Limited | Adaptive image data compression |
WO2002051063A1 (en) * | 2000-12-21 | 2002-06-27 | Digimarc Corporation | Methods, apparatus and programs for generating and utilizing content signatures |
TWI220959B (en) | 2003-06-05 | 2004-09-11 | Carry Computer Eng Co Ltd | Storage device with optimized compression management mechanism |
US7487169B2 (en) | 2004-11-24 | 2009-02-03 | International Business Machines Corporation | Method for finding the longest common subsequences between files with applications to differential compression |
US8484427B1 (en) | 2006-06-28 | 2013-07-09 | Acronis International Gmbh | System and method for efficient backup using hashes |
US7970216B2 (en) | 2006-08-24 | 2011-06-28 | Dell Products L.P. | Methods and apparatus for reducing storage size |
US7885988B2 (en) | 2006-08-24 | 2011-02-08 | Dell Products L.P. | Methods and apparatus for reducing storage size |
EP2168276A4 (en) | 2007-06-25 | 2010-11-10 | Nxp Bv | MULTI-PASS STREAM REMULTIPLEXERS FOR MULTI-PASS, MULTI-STREAM AND MULTIPLEX TRANSPORT TREAM PROCESSING |
US8819288B2 (en) | 2007-09-14 | 2014-08-26 | Microsoft Corporation | Optimized data stream compression using data-dependent chunking |
US7937371B2 (en) | 2008-03-14 | 2011-05-03 | International Business Machines Corporation | Ordering compression and deduplication of data |
JP2010061518A (ja) | 2008-09-05 | 2010-03-18 | Nec Corp | データ保存装置及びデータ保存方法並びにプログラム |
US8751462B2 (en) * | 2008-11-14 | 2014-06-10 | Emc Corporation | Delta compression after identity deduplication |
US8205065B2 (en) | 2009-03-30 | 2012-06-19 | Exar Corporation | System and method for data deduplication |
US8706727B2 (en) | 2009-06-19 | 2014-04-22 | Sybase, Inc. | Data compression for reducing storage requirements in a database system |
US9058298B2 (en) | 2009-07-16 | 2015-06-16 | International Business Machines Corporation | Integrated approach for deduplicating data in a distributed environment that involves a source and a target |
GB2472072B (en) * | 2009-07-24 | 2013-10-16 | Hewlett Packard Development Co | Deduplication of encoded data |
US20110093439A1 (en) | 2009-10-16 | 2011-04-21 | Fanglu Guo | De-duplication Storage System with Multiple Indices for Efficient File Storage |
US8364929B2 (en) | 2009-10-23 | 2013-01-29 | Seagate Technology Llc | Enabling spanning for a storage device |
US8407193B2 (en) * | 2010-01-27 | 2013-03-26 | International Business Machines Corporation | Data deduplication for streaming sequential data storage applications |
US8427346B2 (en) | 2010-04-13 | 2013-04-23 | Empire Technology Development Llc | Adaptive compression |
US9613142B2 (en) | 2010-04-26 | 2017-04-04 | Flash Networks Ltd | Method and system for providing the download of transcoded files |
US8533550B2 (en) | 2010-06-29 | 2013-09-10 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
KR101725223B1 (ko) | 2011-03-25 | 2017-04-11 | 삼성전자 주식회사 | 저장 장치에서의 데이터 압축 방법 |
US8725933B2 (en) | 2011-07-01 | 2014-05-13 | Intel Corporation | Method to detect uncompressible data in mass storage device |
US9363339B2 (en) * | 2011-07-12 | 2016-06-07 | Hughes Network Systems, Llc | Staged data compression, including block level long range compression, for data streams in a communications system |
KR20130048595A (ko) | 2011-11-02 | 2013-05-10 | 삼성전자주식회사 | 제한된 리소스 환경에서의 안정적인 중복 데이터 제거 장치 및 방법 |
US8542135B2 (en) | 2011-11-24 | 2013-09-24 | International Business Machines Corporation | Compression algorithm incorporating automatic generation of a bank of predefined huffman dictionaries |
US9047304B2 (en) | 2011-11-28 | 2015-06-02 | International Business Machines Corporation | Optimization of fingerprint-based deduplication |
US9703796B2 (en) | 2011-12-06 | 2017-07-11 | Brocade Communications Systems, Inc. | Shared dictionary between devices |
JPWO2014030252A1 (ja) | 2012-08-24 | 2016-07-28 | 株式会社日立製作所 | ストレージ装置及びデータ管理方法 |
US9087187B1 (en) * | 2012-10-08 | 2015-07-21 | Amazon Technologies, Inc. | Unique credentials verification |
KR101956031B1 (ko) * | 2012-10-15 | 2019-03-11 | 삼성전자 주식회사 | 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템 |
US9035809B2 (en) | 2012-10-15 | 2015-05-19 | Seagate Technology Llc | Optimizing compression engine throughput via run pre-processing |
US9495552B2 (en) | 2012-12-31 | 2016-11-15 | Microsoft Technology Licensing, Llc | Integrated data deduplication and encryption |
JPWO2014125582A1 (ja) | 2013-02-13 | 2017-02-02 | 株式会社日立製作所 | ストレージ装置及びデータ管理方法 |
US20140244604A1 (en) | 2013-02-28 | 2014-08-28 | Microsoft Corporation | Predicting data compressibility using data entropy estimation |
US8751763B1 (en) | 2013-03-13 | 2014-06-10 | Nimbus Data Systems, Inc. | Low-overhead deduplication within a block-based data storage |
US9471500B2 (en) | 2013-04-12 | 2016-10-18 | Nec Corporation | Bucketized multi-index low-memory data structures |
CN104123309B (zh) | 2013-04-28 | 2017-08-25 | 国际商业机器公司 | 用于数据管理的方法和系统 |
US9384204B2 (en) | 2013-05-22 | 2016-07-05 | Amazon Technologies, Inc. | Efficient data compression and analysis as a service |
KR101532283B1 (ko) * | 2013-11-04 | 2015-06-30 | 인하대학교 산학협력단 | Ssd 기반 raid 스토리지에서 데이터 및 패리티 디스크의 복합적 중복제거 방법 |
KR102187127B1 (ko) * | 2013-12-03 | 2020-12-04 | 삼성전자주식회사 | 데이터 연관정보를 이용한 중복제거 방법 및 시스템 |
US9552384B2 (en) | 2015-06-19 | 2017-01-24 | HGST Netherlands B.V. | Apparatus and method for single pass entropy detection on data transfer |
-
2015
- 2015-06-19 US US14/744,444 patent/US10152389B2/en active Active
- 2015-08-24 AU AU2015215974A patent/AU2015215974B1/en not_active Ceased
-
2016
- 2016-05-25 AU AU2016203410A patent/AU2016203410A1/en not_active Abandoned
- 2016-06-16 CA CA2933374A patent/CA2933374A1/en not_active Abandoned
- 2016-06-16 GB GB1610526.4A patent/GB2540666B/en not_active Expired - Fee Related
- 2016-06-16 DE DE102016007365.9A patent/DE102016007365A1/de not_active Withdrawn
- 2016-06-17 JP JP2016121095A patent/JP6370838B2/ja not_active Expired - Fee Related
- 2016-06-17 KR KR1020160075507A patent/KR102052789B1/ko active IP Right Grant
- 2016-06-17 FR FR1655674A patent/FR3037676A1/fr not_active Withdrawn
- 2016-06-20 CN CN201610447015.1A patent/CN106257403B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5032987A (en) * | 1988-08-04 | 1991-07-16 | Digital Equipment Corporation | System with a plurality of hash tables each using different adaptive hashing functions |
CN102541751A (zh) * | 2010-11-18 | 2012-07-04 | 微软公司 | 用于数据去重复的可缩放块存储 |
CN102567503A (zh) * | 2010-12-16 | 2012-07-11 | 微软公司 | 用于数据去重复的可扩展流水线 |
CN104346304A (zh) * | 2013-07-23 | 2015-02-11 | 国际商业机器公司 | 使用存储器控制器来请求资源的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
AU2015215974B1 (en) | 2016-02-25 |
JP2017010551A (ja) | 2017-01-12 |
KR20160150043A (ko) | 2016-12-28 |
FR3037676A1 (fr) | 2016-12-23 |
AU2016203410A1 (en) | 2016-06-16 |
GB2540666B (en) | 2018-03-21 |
CN106257403A (zh) | 2016-12-28 |
GB2540666A (en) | 2017-01-25 |
KR102052789B1 (ko) | 2019-12-05 |
DE102016007365A1 (de) | 2016-12-22 |
CA2933374A1 (en) | 2016-12-19 |
JP6370838B2 (ja) | 2018-08-08 |
GB201610526D0 (en) | 2016-08-03 |
US10152389B2 (en) | 2018-12-11 |
US20160371292A1 (en) | 2016-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106257403B (zh) | 用于关于数据传送的单通熵检测的装置和方法 | |
KR102261811B1 (ko) | 데이터 전송의 단일 패스 엔트로피 검출 장치 및 방법 | |
Kruus et al. | Bimodal content defined chunking for backup streams. | |
US20180196609A1 (en) | Data Deduplication Using Multi-Chunk Predictive Encoding | |
US9947113B2 (en) | Controlling real-time compression detection | |
US9564918B2 (en) | Real-time reduction of CPU overhead for data compression | |
US20140195499A1 (en) | Real-time classification of data into data compression domains | |
US20130198150A1 (en) | File-type dependent data deduplication | |
US9843802B1 (en) | Method and system for dynamic compression module selection | |
US10606499B2 (en) | Computer system, storage apparatus, and method of managing data | |
US20150227540A1 (en) | System and method for content-aware data compression | |
WO2016091282A1 (en) | Apparatus and method for de-duplication of data | |
US9571698B1 (en) | Method and system for dynamic compression module selection | |
US9843702B1 (en) | Method and system for dynamic compression module selection | |
US20160313932A1 (en) | Data storage system and device | |
US10922187B2 (en) | Data redirector for scale out |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210326 Address after: California, USA Patentee after: Western Digital Technologies, Inc. Address before: Amsterdam Patentee before: HGST Netherlands B.V. |
|
TR01 | Transfer of patent right |