CN106257402A - 用于对于数据传递的单遍熵检测的设备和方法 - Google Patents

用于对于数据传递的单遍熵检测的设备和方法 Download PDF

Info

Publication number
CN106257402A
CN106257402A CN201610447012.8A CN201610447012A CN106257402A CN 106257402 A CN106257402 A CN 106257402A CN 201610447012 A CN201610447012 A CN 201610447012A CN 106257402 A CN106257402 A CN 106257402A
Authority
CN
China
Prior art keywords
data
hash
input traffic
values match
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610447012.8A
Other languages
English (en)
Other versions
CN106257402B (zh
Inventor
A.纳拉西姆哈
A.辛格海
V.卡拉姆切蒂
K.斯坎达库马兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Hitachi Global Storage Technologies Netherlands BV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Global Storage Technologies Netherlands BV filed Critical Hitachi Global Storage Technologies Netherlands BV
Publication of CN106257402A publication Critical patent/CN106257402A/zh
Application granted granted Critical
Publication of CN106257402B publication Critical patent/CN106257402B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • H03M7/3093Data deduplication using fixed length segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/355Class or cluster creation or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6029Pipelining
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6058Saving memory space in the encoder or decoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明的实施例包括存储单元和耦接到存储单元的处理器。该处理器可操作以分组来自所述输入数据流的多个数据子集,并计算与第一分组的数据子集对应的第一哈希值。另外,该处理器可操作以检测所述第一哈希值和哈希表中存储的第二哈希值之间的匹配,监视所述输入数据流的哈希值匹配频率,其中所述处理器可操作以响应于所述匹配的检测来递增计数器值,并基于所述计数器值相对于频繁哈希值匹配阈值来确定用于所述输入数据流的熵级别。该处理器能生成以下指令,当所述计数器值满足或超出所述频繁哈希值匹配阈值时,初始化数据压缩操作的执行,或者当所述计数器值未能满足所述频繁哈希值匹配阈值时,避免所述数据压缩操作的所述执行。

Description

用于对于数据传递的单遍熵检测的设备和方法
相关申请的交叉引用
该申请涉及与该申请并发提交的具有代理人卷号HGST-H20151036US1的专利申请:“APPARATUS AND METHOD FOR INLINE COMPRESSION AND DEDUPLICATION”,其在这里通过引用被全部合并。
技术领域
本公开一般涉及数据缩减技术的领域。
背景技术
高性能非易失性储存类别存储子系统一般包括相对昂贵的组件。这样,高度期望使用数据缩减技术使得这样的系统中的数据储存最大化。数据缩减表示数据自压缩和数据消重(deduplication)的技术,以缩减向后端储存系统写入或从后端储存系统读取的信息总量。数据缩减导致用户(输入)数据向能存储的更紧凑表示的变换。数据缩减的优点包括除了别的优点之外的、改进的储存利用、增加的寿命(在全闪存储存系统的上下文中)、和应用加速。
数据压缩表示寻找相同数据块内的冗余度并然后按照缩减数据总体尺寸的方式来编码这些重复的序列的处理。数据消重表示即使个别块具有不可压缩的数据、仍为了找到匹配序列而跨过多个块匹配数据序列的处理。然而,传统系统执行压缩和数据消重作为数据缩减处理中的分离步骤。这样,这些传统系统不将他们组合为单一步骤,并因此付出等待时间(latency)和带宽惩罚(penalties)。
此外,传统数据缩减方案花费大量周期和功率以便执行压缩功能。在任何给定应用数据流中,总是存在数据块的特定集合可以不呈现自压缩属性(properties)的高概率。典型地,在压缩阶段的结束,传统方案执行检查以确保结果不大于原始块。因此,因为在尝试压缩数据时已利用了资源,所以这是相当迟的。
发明内容
因此,存在对于以下方案的需求,即创建在单遍(single pass)中执行数据压缩和消重两者的统一数据路径。本发明的实施例组合数据压缩技术,并通过将它们与数据消重方法合并来扩充它们。本发明的实施例的单遍本质(nature)允许系统等待时间的控制,并帮助实现更高速度的线速率压缩和消重(例如,按照能满足用于给定FPGA的PCIe Gen3速度、或其他速度需求或标准的方式)。
本发明的实施例利用较小的数据子集(诸如4千字节尺寸数据块)用于压缩,并且能推翻(override)压缩编码副本格式,以区分自我参考的副本和参考参考块的副本。应理解的是,实施例不限于4千字节尺寸数据块,并且能使用任何块尺寸或块尺寸的范围(例如,4kb、8kb、10kb、4kb–8kb块尺寸范围等)。实施例能创建以下存储缓冲器结构,其具有多个并行输入缓冲器以保存参考数据块。而且,实施例可包括并行哈希表查找方案,其中能与对于输入数据缓冲器中存储的数据的哈希查找同时地、执行与参考数据块缓冲器中存储的数据对应的搜索。
另外,为了增强数据缩减性能的目的,实施例能使用参考数据缓冲器的填充时间,以计算和存储参考数据的叠瓦(shingled)哈希函数值。实施例还能创建参考哈希表计算和压缩开始之间的互锁。按照该方式,当压缩开始时,能在参考哈希表、压缩哈希表、或两者中执行搜索。本发明的实施例能使用试探法(heuristics)来确定当在哈希表的一个或多个中检测到哈希命中时使用哪个序列(如果存在任一个的话)。此外,本发明的实施例能修改用于输入数据流或来自输入参考缓冲器的回溯引用(back-reference)解释。
此外,本发明的实施例能早期检测并预测块的可压缩性,以便使得浪费的努力最小化并避免总体系统性能的损耗。这里描述的实施例能分析可压缩性特性,以作出对于给定数据块执行数据缩减过程(诸如压缩)的判断。这样,当给定不可压缩的数据时,能按照使得高性能数据缩减系统能节约功率和压缩单元周期的方式,来执行低影响-高性能熵检测操作。
附图说明
该说明书中合并的、并且形成其一部分的、并且其中相同附图标记描绘相同元件的附图图示了本公开的实施例,并且和该描述一起,用来解释本公开的原理。
图1A是描绘了根据本发明实施例的为了数据缩减的目的能够并行执行双压缩和消重过程的直列(inline)压缩和消重系统的示范硬件配置的框图。
图1B是描绘了根据本发明实施例的用于执行直列压缩和消重过程的存储器中提供的示范组件的框图。
图1C描绘了根据本发明实施例生成的示范压缩数据成帧格式。
图1D描绘了根据本发明实施例的示范组合参考哈希表和压缩哈希表查找方案。
图2A是根据本发明实施例的用于单遍熵检测的示范处理的第一部分的流程图。
图2B是根据本发明实施例的用于单遍熵检测的示范处理的第二部分的流程图。
图3A是根据本发明实施例的用于同时数据消重和压缩的示范处理的流程图。
图3B是根据本发明实施例的用于执行哈希表查找过程的示范处理的流程图。
具体实施方式
现在将对本发明的优选实施例进行详细参考,其示例在附图中进行了图示。尽管将结合优选实施例描述本发明,但是将理解的是,它们并不意欲将本发明限于这些实施例。相反,本发明意欲覆盖可在所附权利要求所限定的本发明的精神和范围内包括的替换、修改和等效。
此外,在本发明的实施例的以下详细描述中,阐明许多特定细节,以便提供本发明的透彻理解。然而,本领域技术人员将认识到,可在没有这些特定细节的情况下实践本发明。在其他实例中,还没有详细描述公知方法、过程、组件、和电路,以便不会不必要地模糊本发明的实施例的各方面。尽管为了清楚方法可被描绘为编号的步骤的序列,但是该编号并非必须规定这些步骤的顺序。
应当理解的是,一些步骤可被跳过、并行执行、或在没有维持序列的严格顺序的需求的情况下执行。示出本发明的实施例的图是半图解的(semi-diagrammatic)并且不按照比例绘制,并且特别是,一些维度是为了呈现的清楚,并在制图的图中被夸大示出。类似地,尽管为了易于描述图中的视图一般示出类似方位,但是图中的该描绘对于绝大部分是任意的。一般,本发明能按照任何方位操作。
符号和术语:
然而,应注意的是所有这些和类似术语应与适当物理量关联,并仅是向这些量应用的便利标签。除非特别阐明,否则如同根据以下讨论清楚的那样,理解贯穿本发明,利用诸如“接收”或“选择”或“生成”或“分组”或“监视”等的术语的讨论表示计算机系统或类似电子计算装置的动作和处理,所述计算机系统或类似电子计算装置操纵计算机系统的寄存器和存储器以及其他计算机可读介质中的表示为物理(例如,电子)量的数据,并变换为计算机系统存储器或寄存器或其他这样的信息储存、传送或显示装置中的类似表示为物理量的其他数据。当组件在几个实施例中出现时,相同附图标记的使用意味着该组件是与原始实施例中图示的组件相同的组件。
示范直列压缩和消重系统配置
图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所接收的数据流执行签名计算。根据一个实施例,签名计算引擎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能连同它们的相应压缩的有效载荷数据部分(诸如压缩有效载荷116b)一起被包括在数据颗粒的集合中,诸如数据颗粒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。例如,能通过流行高性能压缩方案来利用哈希表模块111,所述方案包括Snappy、Lempel-Ziv(LZ)压缩方案、Gzip或类似方案。
数据的子集可以是预定的固定尺寸,并且为了执行消重过程的目的能被使用来表示较大文件。这样,哈希表模块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还能执行用于针对存储的参考数据块和/或与哈希表模块111先前标识的数据对应的压缩哈希值,来比较系统100所接收的字节的随后集合的过程。
例如,参考图1D,当通过参考块标识模块114标识参考块118时,哈希表模块111在参考哈希表111-1中存储与参考块缓冲器中原样存储的参考块118的一部分(例如,用于参考块数据子集118-1、118-2、118-3、118-4等的值)对应的所计算的哈希值条目。按照该方式,系统100能使用参考数据缓冲器的填充时间,以计算和存储与参考块118对应的参考数据的叠瓦哈希函数值,这增强了系统100所执行的压缩和消重过程的性能。
此外,如图1D中图示的,系统100还能接收与进入数据流关联的输入数据块120。这样,扫描和匹配引擎109能使用哈希表逻辑109-3,以使用增添数据的(populated)参考哈希表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通过数据分组逻辑108-1所选择的重叠数据叠瓦计算哈希值。此外,哈希表模块111对于重叠叠瓦所计算的哈希值能被用作存储地址位置,其代表叠瓦偏移值被存储在数据结构(诸如压缩哈希表111-2和/或系统100上驻留的存储器)中的哪里。
另外,扫描和匹配引擎109能使用哈希表模块111来定位计算的叠瓦,并且当它们被写入到数据输入缓冲器112-1时,并行地对数据块执行比较操作。例如,使用压缩哈希表111-2,如果确定对于与进入数据集相关的叠瓦的计算的哈希值与压缩哈希表111-2中存储的哈希值共享相同签名,则扫描和匹配引擎109能检测“哈希命中”的发生。按照该方式,当两个叠瓦具有签名计算引擎113所计算的相同或相似签名时,扫描和匹配引擎109能检测哈希命中的发生。
此外,扫描和匹配引擎109包括向解压模块108发送信号以递增可压缩性计数器(例如哈希命中计数器111-3)的功能性。按照该方式,每当扫描和匹配引擎109检测到哈希命中的发生时,哈希命中计数器111-3能递增。哈希命中计数器111-3允许系统100明了(keep track of)在系统100所接收的进入数据集中频繁出现的哈希值。因此,在数据传递到数据输入缓冲器112-1中的结束时,系统100能存储用于整个数据集的计算的哈希的集合。
另外,系统100能被配置以存储频繁哈希值匹配阈值,该阈值使得能够较好确定哪些数据块将从具有对其执行的数据缩减过程(例如,数据消重过程、参考块标识过程、数据压缩过程等)受益最多。按照该方式,系统100能按照以下方式配置,即,允许其使用预定阈值和/或计算的可压缩性计数,来自动解释可压缩性特性。例如,在系统100的任何数据缩减过程的执行之前,其能首先参考预定阈值计数,并判断是否执行、暂停和/或停止数据缩减操作。
按照该方式,当阈值计数满足或超出频繁哈希值匹配阈值时,诸如解压模块108的系统100的组件能生成命令系统100的组件初始化数据缩减操作(例如,数据消重过程、参考块标识过程、数据压缩过程等)的执行的指令或指令集。因此,当该阈值计数未能满足频繁哈希值匹配阈值时,系统100的组件能生成命令系统100的组件避免执行数据缩减操作的指令或指令集。系统100的这样的确定不仅能节约主机CPU周期,而且还能允许数据在系统中移动,而不中断其它驱动器,诸如主机驱动器。
例如,在一个实施例中,如果哈希命中计数器111-3的值低于预定阈值,则解压模块108可确定当前分析下的数据块呈现低可压缩性特性,由此证明用于该数据流的至少一部分的高熵级别。因此,响应于该确定,解压模块108能被配置以不执行任何解压操作。按照该方式,解压模块108能被配置以发送暂停和/或停止解压操作的执行的指令。
然而,如果哈希命中计数器111-3的值等于或高于预定阈值,则解压模块108可确定数据块呈现高可压缩性特性,由此证明用于该数据流的至少一部分的低熵级别。因此,响应于该确定,解压模块108能被配置以发送初始化解压操作的执行的指令。按照该方式,解压模块108使用可压缩性因子来确定对于与数据输入缓冲器112-1中存储的进入数据集相关的字节的给定集合、是否向系统100的其他组件发布“压缩”或“绕开压缩”信号。
按照该方式,系统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是根据本发明实施例的用于同时数据消重和压缩的示范处理的流程图。图3A中概括了操作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 (21)

1.一种设备,包括:
存储单元,被配置为存储数据流;和
处理器,耦接到所述存储单元,所述处理器被配置为检测在单遍期间输入数据流的熵,所述处理器可操作地分组来自所述输入数据流的多个数据子集,计算与第一分组的数据子集对应的第一哈希值,检测所述第一哈希值和哈希表中存储的第二哈希值之间的匹配,监视所述输入数据流的哈希值匹配频率,
其中所述处理器可操作以响应于所述匹配的检测来递增计数器值,并基于所述计数器值相对于频繁哈希值匹配阈值来确定用于所述输入数据流的一部分的熵级别,并且生成以下指令,当所述计数器值满足或超出所述频繁哈希值匹配阈值时,初始化数据压缩操作的执行,或者当所述计数器值未能满足所述频繁哈希值匹配阈值时,避免所述数据压缩操作的所述执行。
2.根据权利要求1的设备,其中初始化所述数据压缩操作的所述执行的所述指令导致包括所述输入数据流的压缩部分的输出。
3.根据权利要求1的设备,其中避免所述数据压缩操作的所述执行的所述指令导致包括所述输入数据流的未压缩部分的输出。
4.根据权利要求1的设备,其中所述处理器可操作以生成当所述计数器值未能满足所述频繁哈希值匹配阈值时、停止所述数据压缩操作的执行的指令。
5.根据权利要求1的设备,其中所述处理器可操作以计算用于所述多个数据子集的每一数据子集的签名,并且所述匹配表示与具有相同签名的所述输入数据流相关的至少两个分组的数据子集。
6.根据权利要求1的设备,其中所述处理器可操作以基于当前系统负荷调整所述频繁哈希值匹配阈值。
7.根据权利要求1的设备,其中所述处理器可操作以基于用户偏好调整所述频繁哈希值匹配阈值。
8.一种检测在单遍期间输入数据流的熵的计算机实现的方法,所述方法包括:
接收输入数据流;
分组来自所述输入数据流的多个数据子集;
计算与第一分组的数据子集对应的第一哈希值;
检测所述第一哈希值和哈希表中存储的第二哈希值之间的匹配,并响应于所述匹配的检测来递增计数器值;
监视所述输入数据流的哈希值匹配频率;
基于所述计数器值相对于频繁哈希值匹配阈值,来确定用于所述输入数据流的一部分的熵级别;和
生成以下指令,当所述计数器值满足或超出所述频繁哈希值匹配阈值时,初始化数据压缩操作的执行,或者当所述计数器值未能满足所述频繁哈希值匹配阈值时,避免所述数据压缩操作的所述执行。
9.根据权利要求8的计算机实现的方法,其中初始化所述数据压缩操作的所述执行的所述指令导致包括所述输入数据流的压缩部分的输出。
10.根据权利要求9的计算机实现的方法,其中避免所述数据压缩操作的所述执行的所述指令导致包括所述输入数据流的未压缩部分的输出。
11.根据权利要求8的计算机实现的方法,其中所述生成步骤进一步包括生成当所述计数器值未能满足所述频繁哈希值匹配阈值时、停止所述数据压缩操作的执行的指令。
12.根据权利要求8的计算机实现的方法,其中所述分组进一步包括计算用于所述多个数据子集的每一数据子集的签名,并且所述匹配表示与具有相同签名的所述输入数据流相关的至少两个分组的数据子集。
13.根据权利要求8的计算机实现的方法,进一步包括:
基于当前系统负荷调整所述频繁哈希值匹配阈值。
14.根据权利要求8的计算机实现的方法,进一步包括:
基于用户偏好调整所述频繁哈希值匹配阈值。
15.一种设备,包括:
存储单元,配置为存储数据流;和
处理器,耦接到所述存储单元,所述处理器被配置为检测在单遍期间输入数据流的熵,所述处理器可操作地计算来自所述输入数据流的多个数据子集的每一数据子集的签名,计算与第一分组的数据子集对应的第一哈希值,检测所述第一哈希值和哈希表中存储的第二哈希值之间的匹配,监视所述输入数据流的哈希值匹配频率,
其中所述处理器可操作以响应于所述匹配的检测来递增计数器值,并基于所述计数器值相对于频繁哈希值匹配阈值来确定用于所述输入数据流的一部分的熵级别,并且生成以下指令,当所述计数器值满足或超出所述频繁哈希值匹配阈值时,初始化数据缩减操作的执行,或者当所述计数器值未能满足所述频繁哈希值匹配阈值时,避免所述数据缩减操作的所述执行。
16.根据权利要求15的设备,其中初始化所述数据缩减操作的所述执行的所述指令导致包括所述输入数据流的压缩部分的输出。
17.根据权利要求15的设备,其中避免所述数据缩减操作的所述执行的所述指令导致包括所述输入数据流的未压缩部分的输出。
18.根据权利要求15的设备,其中所述数据缩减操作是数据消重操作。
19.根据权利要求15的设备,其中所述数据缩减操作是数据压缩操作。
20.根据权利要求15的设备,其中所述处理器可操作以基于当前系统负荷调整所述频繁哈希值匹配阈值。
21.根据权利要求15的设备,其中所述处理器可操作以基于用户偏好调整所述频繁哈希值匹配阈值。
CN201610447012.8A 2015-06-19 2016-06-20 用于检测在单遍期间输入数据流的熵的设备和方法 Active CN106257402B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/744,947 2015-06-19
US14/744,947 US9552384B2 (en) 2015-06-19 2015-06-19 Apparatus and method for single pass entropy detection on data transfer

Publications (2)

Publication Number Publication Date
CN106257402A true CN106257402A (zh) 2016-12-28
CN106257402B CN106257402B (zh) 2021-05-25

Family

ID=55590307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610447012.8A Active CN106257402B (zh) 2015-06-19 2016-06-20 用于检测在单遍期间输入数据流的熵的设备和方法

Country Status (9)

Country Link
US (2) US9552384B2 (zh)
JP (1) JP2017011703A (zh)
KR (3) KR101945026B1 (zh)
CN (1) CN106257402B (zh)
AU (2) AU2015215975B1 (zh)
CA (1) CA2933370C (zh)
DE (1) DE102016007364A1 (zh)
FR (1) FR3037677B1 (zh)
GB (1) GB2542453B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121504A (zh) * 2017-11-16 2018-06-05 成都华为技术有限公司 数据删除方法及装置
CN110572160A (zh) * 2019-08-01 2019-12-13 浙江大学 一种指令集模拟器译码模块代码的压缩方法
CN111580746A (zh) * 2019-02-18 2020-08-25 慧荣科技股份有限公司 在存储服务器中进行数据压缩管理的方法及设备
CN112233715A (zh) * 2019-07-15 2021-01-15 美光科技公司 用于存储器系统的维护操作

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10152389B2 (en) 2015-06-19 2018-12-11 Western Digital Technologies, Inc. Apparatus and method for inline compression and deduplication
DE102015112143B4 (de) * 2015-07-24 2017-04-06 Infineon Technologies Ag Ein Verfahren zum Bestimmen einer Integrität einer Ausführung eines Codefragments und ein Verfahren zum Bereitstellen einer abstrahierten Repräsentation eines Programmcodes
US9971850B2 (en) * 2015-12-29 2018-05-15 International Business Machines Corporation Hash table structures
US10275376B2 (en) * 2016-03-02 2019-04-30 Western Digital Technologies, Inc. Efficient cross device redundancy implementation on high performance direct attached non-volatile storage with data reduction
US10831370B1 (en) * 2016-12-30 2020-11-10 EMC IP Holding Company LLC Deduplicated and compressed non-volatile memory cache
US10282127B2 (en) 2017-04-20 2019-05-07 Western Digital Technologies, Inc. Managing data in a storage system
US20180321855A1 (en) 2017-05-03 2018-11-08 Samsung Electronics Co., Ltd. Multistreaming in heterogeneous environments
US10809928B2 (en) 2017-06-02 2020-10-20 Western Digital Technologies, Inc. Efficient data deduplication leveraging sequential chunks or auxiliary databases
US10503608B2 (en) 2017-07-24 2019-12-10 Western Digital Technologies, Inc. Efficient management of reference blocks used in data deduplication
US11195107B1 (en) * 2017-09-13 2021-12-07 Hrl Laboratories, Llc Method of malicious social activity prediction using spatial-temporal social network data
US10528600B1 (en) * 2017-09-13 2020-01-07 Hrl Laboratories, Llc System to identify unknown communication behavior relationships from time series
GB2568165B (en) * 2017-10-18 2022-08-31 Frank Donnelly Stephen Entropy and value based packet truncation
US10733290B2 (en) 2017-10-26 2020-08-04 Western Digital Technologies, Inc. Device-based anti-malware
US11163912B2 (en) 2019-03-25 2021-11-02 Micron Technology, Inc. Data attestation in memory
US11082168B1 (en) 2020-03-19 2021-08-03 Western Digital Technologies, Inc. Entropy driven endurance for normalized quality of service

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06290020A (ja) * 1993-03-31 1994-10-18 Fujitsu Sooshiaru Sci Raboratori:Kk データ圧縮方法
US6278735B1 (en) * 1998-03-19 2001-08-21 International Business Machines Corporation Real-time single pass variable bit rate control strategy and encoder
CN1437738A (zh) * 2000-01-03 2003-08-20 埃菲克塔技术股份有限公司 数据发送和存储的有效且无损耗转换
CN101383616A (zh) * 2007-09-07 2009-03-11 三星电子株式会社 数据压缩设备和方法
JP2010061518A (ja) * 2008-09-05 2010-03-18 Nec Corp データ保存装置及びデータ保存方法並びにプログラム
US20110264676A1 (en) * 2010-04-26 2011-10-27 Adi Belan Method and system for providing the download of transcoded files
US8184663B2 (en) * 2007-06-25 2012-05-22 Entropic Communications Multi-format stream re-multiplexer for multi-pass, multi-stream, multiplexed transport stream processing
CN103236847A (zh) * 2013-05-06 2013-08-07 西安电子科技大学 基于多层哈希结构与游程编码的数据无损压缩方法
US8542135B2 (en) * 2011-11-24 2013-09-24 International Business Machines Corporation Compression algorithm incorporating automatic generation of a bank of predefined huffman dictionaries

Family Cites Families (48)

* Cited by examiner, † Cited by third party
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
US5406279A (en) * 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US6374266B1 (en) 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing system
US6195024B1 (en) 1998-12-11 2001-02-27 Realtime Data, Llc Content independent data compression method and system
US6624761B2 (en) * 1998-12-11 2003-09-23 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
AU2002232817A1 (en) * 2000-12-21 2002-07-01 Digimarc Corporation Methods, apparatus and programs for generating and utilizing content signatures
DE10147755B4 (de) * 2001-09-27 2004-06-17 Siemens Ag Verfahren und Vorrichtungen zur Header-Kompression in paketorientierten Netzwerken
TWI220959B (en) 2003-06-05 2004-09-11 Carry Computer Eng Co Ltd Storage device with optimized compression management mechanism
KR100626719B1 (ko) * 2004-09-01 2006-09-21 주식회사 우진넷 헤더변환을 이용한 데이터 패킷 압축 전송방법
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
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
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
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 삼성전자주식회사 제한된 리소스 환경에서의 안정적인 중복 데이터 제거 장치 및 방법
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
KR20130081526A (ko) * 2012-01-09 2013-07-17 삼성전자주식회사 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
KR101862341B1 (ko) * 2012-01-09 2018-05-30 삼성전자주식회사 데이터 압축 기능을 갖는 데이터 저장 장치
US8650163B1 (en) * 2012-08-20 2014-02-11 International Business Machines Corporation Estimation of data reduction rate in a data storage system
WO2014030252A1 (ja) 2012-08-24 2014-02-27 株式会社日立製作所 ストレージ装置及びデータ管理方法
US9087187B1 (en) 2012-10-08 2015-07-21 Amazon Technologies, Inc. Unique credentials verification
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
US9710166B2 (en) * 2015-04-16 2017-07-18 Western Digital Technologies, Inc. Systems and methods for predicting compressibility of data
US10152389B2 (en) 2015-06-19 2018-12-11 Western Digital Technologies, Inc. Apparatus and method for inline compression and deduplication

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06290020A (ja) * 1993-03-31 1994-10-18 Fujitsu Sooshiaru Sci Raboratori:Kk データ圧縮方法
US6278735B1 (en) * 1998-03-19 2001-08-21 International Business Machines Corporation Real-time single pass variable bit rate control strategy and encoder
CN1437738A (zh) * 2000-01-03 2003-08-20 埃菲克塔技术股份有限公司 数据发送和存储的有效且无损耗转换
US8184663B2 (en) * 2007-06-25 2012-05-22 Entropic Communications Multi-format stream re-multiplexer for multi-pass, multi-stream, multiplexed transport stream processing
CN101383616A (zh) * 2007-09-07 2009-03-11 三星电子株式会社 数据压缩设备和方法
JP2010061518A (ja) * 2008-09-05 2010-03-18 Nec Corp データ保存装置及びデータ保存方法並びにプログラム
US20110264676A1 (en) * 2010-04-26 2011-10-27 Adi Belan Method and system for providing the download of transcoded files
US8542135B2 (en) * 2011-11-24 2013-09-24 International Business Machines Corporation Compression algorithm incorporating automatic generation of a bank of predefined huffman dictionaries
CN103236847A (zh) * 2013-05-06 2013-08-07 西安电子科技大学 基于多层哈希结构与游程编码的数据无损压缩方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121504A (zh) * 2017-11-16 2018-06-05 成都华为技术有限公司 数据删除方法及装置
CN108121504B (zh) * 2017-11-16 2021-01-29 成都华为技术有限公司 数据删除方法及装置
CN111580746A (zh) * 2019-02-18 2020-08-25 慧荣科技股份有限公司 在存储服务器中进行数据压缩管理的方法及设备
CN112233715A (zh) * 2019-07-15 2021-01-15 美光科技公司 用于存储器系统的维护操作
CN110572160A (zh) * 2019-08-01 2019-12-13 浙江大学 一种指令集模拟器译码模块代码的压缩方法

Also Published As

Publication number Publication date
JP2017011703A (ja) 2017-01-12
US10089360B2 (en) 2018-10-02
FR3037677B1 (fr) 2019-06-14
GB201610255D0 (en) 2016-07-27
US20170097960A1 (en) 2017-04-06
KR20200024193A (ko) 2020-03-06
KR101945026B1 (ko) 2019-02-08
KR20160150029A (ko) 2016-12-28
US20160371267A1 (en) 2016-12-22
CN106257402B (zh) 2021-05-25
DE102016007364A1 (de) 2016-12-22
KR102261811B1 (ko) 2021-06-04
KR20190014033A (ko) 2019-02-11
GB2542453B (en) 2017-12-06
GB2542453A (en) 2017-03-22
FR3037677A1 (zh) 2016-12-23
US9552384B2 (en) 2017-01-24
CA2933370C (en) 2021-02-16
AU2015215975B1 (en) 2016-03-17
CA2933370A1 (en) 2016-12-19
AU2016203418A1 (en) 2016-06-16

Similar Documents

Publication Publication Date Title
CN106257402A (zh) 用于对于数据传递的单遍熵检测的设备和方法
CN106257403A (zh) 用于关于数据传送的单通熵检测的装置和方法
Xia et al. {FastCDC}: A fast and efficient {Content-Defined} chunking approach for data deduplication
CN101803203B (zh) 使用数据依赖组块的优化数据流压缩
Kruus et al. Bimodal content defined chunking for backup streams.
Xia et al. Ddelta: A deduplication-inspired fast delta compression approach
US20180196609A1 (en) Data Deduplication Using Multi-Chunk Predictive Encoding
Yu et al. Leap-based content defined chunking—theory and implementation
CN103248369A (zh) 基于fpga的压缩系统及其方法
CN110990603B (zh) 用于分段图像数据的格式识别的方法和系统
US9256503B2 (en) Data verification
CN113516506B (zh) 一种数据处理方法、装置及电子设备
CN114840502A (zh) 使用不同的散列大小和压缩大小进行散列
WO2020088211A1 (zh) 压缩数据、解压缩数据的方法和相关装置
Dude et al. A Fast SIMD-Based Chunking Algorithm.
CN114840501A (zh) 使用多个散列引擎对数据集进行散列
Khalaila et al. Quick-instead of Merge-sort for pipelines systems

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
TA01 Transfer of patent application right

Effective date of registration: 20210322

Address after: California, USA

Applicant after: Western Digital Technologies, Inc.

Address before: Amsterdam

Applicant before: HGST Netherlands B.V.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant