CN107534445B - 用于分割哈希值计算的向量处理 - Google Patents

用于分割哈希值计算的向量处理 Download PDF

Info

Publication number
CN107534445B
CN107534445B CN201680005071.8A CN201680005071A CN107534445B CN 107534445 B CN107534445 B CN 107534445B CN 201680005071 A CN201680005071 A CN 201680005071A CN 107534445 B CN107534445 B CN 107534445B
Authority
CN
China
Prior art keywords
partial
sequence
rolling
data stream
hash values
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
Application number
CN201680005071.8A
Other languages
English (en)
Other versions
CN107534445A (zh
Inventor
大卫·叶赫那丹
亚伊尔·托弗
迈克尔·赫希
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN107534445A publication Critical patent/CN107534445A/zh
Application granted granted Critical
Publication of CN107534445B publication Critical patent/CN107534445B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization
    • 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/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3347Query execution using vector based model
    • 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/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/3095Data deduplication using variable length segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Image Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种采用向量分割输入数据流的系统,包括:处理器,用于在整个输入数据流中重复以下步骤以创建包括多个分段的分割的数据流:在输入数据流的连续数据项的序列上应用滚动序列,其中,所述滚动序列包括所述序列的连续数据项的子集;由所述处理器的处理管线分别为多个部分滚动序列同时计算部分哈希值,其中,每个部分滚动序列包括所述子集的间隔均匀的数据项;确定所述多个部分哈希值中的每一个对一个或多个相应的部分分割标准的符合性;当所述部分哈希值中的至少一些符合相应的部分分割标准时,将所述序列指定为可变长度分段。

Description

用于分割哈希值计算的向量处理
技术领域
本发明的一些实施例涉及输入数据流的分割,更具体地但不仅限于,涉及采用向量分割输入数据流。
背景技术
当今是信息时代,需要在各地之间存储和/或传输的数据量迅速增加。考虑到用于存储数据的存储空间和/或用于传输数据的网络带宽,巨大的数据量可能主要带来成本和/或复杂性的挑战。
常用于减少存储和/或传输的数据的量的一种解决方案是重复数据删除(通常称为“智能压缩”或“单实例存储”),其是通过消除冗余数据来减少数据量的方法。虽然存在用于重复文件删除的方法,但是考虑到数据压缩,块重复删除可以呈现更好的结果。在块重复删除中,实际上只保留数据流的数据段(块)的唯一一个实例,而与已经保留的数据段相同的冗余数据段替换为指向保留数据段的副本的指针。块重复删除处理可以为多个数据类型之一,例如,数据文件、媒体文件、流数据等的数据流,以识别一个或多个数据段(块)的唯一实例。采用哈希算法为每个分段生成唯一的数(哈希值)。为此,通常使用密码强度哈希算法,例如MD5和/或SHA-1。将针对每个分段生成的哈希值与针对先前分段生成的现有哈希值进行比较,并且当该哈希值等于现有哈希值,则该分段不保留,而由指向现有分段的副本的指针替代。此外,当该分段更新,可仅保留改变的数据,而不保留可能包括大量这种分段的剩余未改变数据。
主要挑战之一是有效地分割数据流,以使对分段的数据内容的改变尽可能少地影响分段。如业内已知,滚动哈希技术可以用于对数据流进行分割。使用滚动哈希,计算在数据流中对数据序列进行移位的哈希值(在每个滚动序列中删除结束数据项并插入新数据项)。检查所计算的哈希值是否符合预定义的一个或多个分割标准,且当识别出符合,将各个滚动序列的末端指定为分段边界或切割点。
发明内容
根据本发明的第一方面,提供一种采用向量分割输入数据流的系统,包括:处理器,用于在整个输入数据流中重复以下步骤以创建包括多个分段的分割的数据流:在输入数据流的连续数据项的序列上应用滚动序列,其中,所述滚动序列包括所述序列的连续数据项的子集;由所述处理器的处理管线为多个部分滚动序列同时计算部分哈希值,其中,每个部分滚动序列包括所述子集的间隔均匀的数据项;确定所述多个部分哈希值中的每一个对至少一个相应的部分分割标准的符合性;当所述多个部分哈希值中的至少一些符合相应的至少一个部分分割标准时,将所述序列指定为可变长度分段。
术语“同时”因此具有在持续时间中重叠的含义,还包括同时的,例如,发生在同一时间的含义。
在本发明第一方面的第一种实现方式中,所述处理器是单指令多数据(single-instruction-multiple data,简称SIMD)处理器。
根据第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述处理器用于使用相应的先前部分滚动序列的部分哈希值、从所述相应部分滚动序列中删除的删除数据项以及添加到所述相应部分滚动序列中的添加数据项来计算所述多个部分哈希值中的每一个作为部分滚动哈希值。
根据第一方面的第一或第二种实现方式中的任一种实现方式,在第一方面的第三种实现方式中,所述处理器用于:当针对符合所述相应的至少一个部分分割标准的序列的连续子集计算的连续的符合部分哈希值的数量超过多个部分滚动序列的数量时,将所述序列指定为可变长分段。
根据第一方面的第一至第三种实现方式中的任一种实现方式,在第一方面的第四种实现方式中,所述序列包括预定义的最少连续数据项。
根据第一方面的第一至第四种实现方式中的任一种实现方式,在第一方面的第五种实现方式中,当在检测到所述部分哈希值对所述相应的至少一个部分分割标准的符合性之前,所述多个序列中的至少一个大序列的大小超过预定义最大值,所述处理器用于将所述大序列指定为可变长度分段。
根据本发明的第二方面,提供一种采用向量分割输入数据流的方法,包括:处理器在整个输入数据流中重复以下步骤以创建包括多个分段的分割的数据流:在输入数据流的连续数据项的序列上应用滚动序列,其中,所述滚动序列包括所述序列的连续数据项的子集;处理器的处理管线为多个部分滚动序列同时计算部分哈希值,其中,每个部分滚动序列包括所述子集的间隔均匀的数据项;确定所述多个部分哈希值中的每一个对至少一个相应的部分分割标准的符合性;当所述多个部分哈希值中的至少一些符合相应的至少一个部分分割标准时,将所述序列指定为可变长分段。
在本发明第二方面的第一种实现方式中,使用相应的先前部分滚动序列的部分哈希值、从所述相应部分滚动序列中删除的删除数据项以及添加到所述相应部分滚动序列中的添加数据项来计算所述多个部分哈希值中的每一个作为部分滚动哈希值。
根据第二方面的第一种实现方式,在第二方面的第二种实现方式中,当针对符合所述相应的至少一个部分分割标准的序列的连续子集计算的连续的符合部分哈希值的数量超过多个部分滚动序列的数量时,将所述序列指定为可变长分段。
根据第二方面的第一或第二种实现方式中的任一种实现方式,在第二方面的第三种实现方式中,所述序列包括预定义的最少连续数据项。
根据第二方面的第一至第三种实现方式中的任一种实现方式,在第二方面的第四种实现方式中,当在检测所述部分哈希值对所述相应的至少一个部分分割标准的符合性之前,所述多个序列中的至少一个大序列的大小超过预定义最大值,将所述大序列指定为可变大小分段。
附图说明
此处仅作为示例,结合附图描述了本发明的一些实施例。现在具体结合附图,需要强调的是所示的项目作为示例,为了说明性地讨论本发明的实施例。这样,根据附图说明,如何实践本发明实施例对本领域技术人员而言是显而易见的。
在附图中:
图1是本发明一些实施例采用向量分割输入数据流的示例性系统的示意图;
图2是本发明一些实施例采用向量分割输入数据流的示例性过程的流程图;
图3A是计算用于分割输入数据流的滚动哈希值的示例性过程的示意图;
图3B是计算用于分割输入数据流的滚动哈希值的示例性过程的示意图;
图3C是计算用于分割输入数据流的滚动哈希值的示例性公式;
图4A是本发明一些实施例计算用于采用向量来分割输入数据流的部分滚动哈希值的示例性过程的示意图;
图4B是本发明一些实施例计算用于采用向量来分割输入数据流的部分滚动哈希值的示例性过程的示意图;
图4C是本发明一些实施例用于分割输入数据流的部分滚动哈希值计算的示例性公式的示意图;
图5A是本发明一些实施例部分滚动哈希值符合部分分割标准的示例性过程的示意图;
图5B是本发明一些实施例部分滚动哈希值符合部分分割标准的示例性过程的示意图;
图5C是本发明一些实施例部分滚动哈希值符合部分分割标准的示例性过程的示意图;
图5D是本发明一些实施例部分滚动哈希值符合部分分割标准的示例性过程的示意图。
具体实施方式
本发明的一些实施例涉及输入数据流的分割,更具体地但不仅限于,涉及采用向量分割输入数据流。
本发明提供一种分割输入数据流的系统和方法,采用向量作为应用于输入数据流的重复删除过程的一部分,以便通过去除冗余(重复的)数据段减少输入数据流的数据量。执行用于减少输入数据流例如,数据文件、媒体文件、流数据等的数据量的重复删除过程,以便减少存储和/或传输输入数据流所需的存储空间和/或网络带宽。分割通过以下方式实现:并发或同时处理构成滚动序列的多个部分滚动序列,所述滚动序列逐渐在连续数据项的序列中移位,例如输入数据流的字节、字、双字和/或像素。同时处理部分滚动序列以计算每个部分滚动序列的部分滚动哈希值。在一个或多个向量处理器,例如单指令多数据(single instruction multiple data,简称SIMD)处理器的多个处理管线中计算多个部分滚动的每一个的哈希值。虽然滚动序列包括序列的连续数据项的子集,多个部分滚动序列中的每一个包括滚动序列的子集的间隔均匀的数据项。当针对每个部分滚动序列计算的部分滚动哈希值的至少一些符合(满足)相应的一个或多个部分分割标准,可以将该序列指定为可变长分段。对整个输入数据流中的多个后续滚动序列重复该过程以创建分割的数据流,其中,每个滚动序列在先前滚动序列的末端开始。
与现有的顺序分割方法相比,采用向量同时分割可能呈现显著的优点。向量处理技术在许多方面迅速发展,例如,在现代处理器中可用的处理管线的数量、可以并行处理的数据项的数量和/或处理器的处理能力。虽然输入数据流的有效分割可能对整个重复删除过程的有效性做出了主要贡献,但该分割可能是重复删除过程中主要的耗时操作和/或处理器密集操作之一。由于在计算滚动序列的哈希值时可以将输入序列的数据项视为彼此独立的,因此作为分割过程的一部分,对部分滚动序列的同时处理可以充分利用向量处理技术,例如具有SIMD引擎的处理器。与当前分割方法所采用的顺序分割相比,采用向量处理器处理输入数据流可以显著减少分割时间。随着分割时间显著减少,整个重复删除过程可以显著缩短,并且可能去除数据传输和/或数据存储操作中的瓶颈。
在详细解释本发明的至少一个实施例之前,应当理解,本发明不必将其应用限于在下面的描述中阐述的和/或在附图和/或实施例中说明的部件和/或方法的结构和布置的细节。本发明可以有其他实施例或可以采用各种方式实践或执行。
本发明可以是系统、方法和/或计算机程序产品。所述计算机程序产品可以包括具有计算机可读程序指令的一个(或多个)计算机可读存储介质,所述指令用于使处理器执行本发明的各个方面。
所述计算机可读存储介质可以是有形设备,该有形设备可以保存和存储指令执行设备使用的指令。例如,所述计算机可读存储介质可以是但不限于电子存储设备、磁性存储设备、光存储设备、电磁存储设备、半导体存储设备或这几者的任意合适组合。
可以从计算机可读存储介质中将此处描述的计算机可读程序指令下载到各个计算/处理设备上,或通过网络下载到外部计算机或外部存储设备上,所述网络如因特网、局域网、广域网和/或无线网。
所述计算机可读程序指令可以完全在用户电脑上执行,部分在用户电脑上执行,或作为独立的软件包,部分在用户电脑上执行,部分在远端电脑上执行,或完全在远端电脑或服务器上执行。在后面的场景中,远端电脑可以通过任何类型的网络与用户电脑连接,包括局域网(local area network,简称LAN)或广域网(wide area network,简称WAN),或者,可以(例如,使用因特网服务提供商通过因特网)在外部电脑上建立该连接。在一些实施例中,包括可编程逻辑电路、现场可编程门阵列(field-programmable gate array,简称FPGA)或可编程逻辑阵列(programmable logic array,简称PLA)等的电子电路可以利用计算机可读程序指令的状态信息执行所述计算机可读程序指令以个性化所述电子电路,以便执行本发明的各方面。
此处,结合本发明实施例的方法、装置(系统)以及计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
附图中的流程图和框图示出了本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。此时,流程图或框图中的每个框都可以代表一个模块、分段或指令的一部分,包括一个或多个用于实现特定逻辑功能的可执行指令。在一些替代的实现方式中,框中指出的功能可以不按照图中的顺序实现。例如,事实上,连续展示的两个框可以同时执行,或者有时候,框可以按照相反的顺序执行,这取决于所涉及的功能。还应注意的是,框图和/或流程图中每一个框以及框图和/或流程图中框的组合可以由基于专用硬件的系统执行,该系统执行指定的功能或动作,或者执行专用硬件和计算机指令的组合。
现在参考图1,其是本发明的一些实施例的采用向量分割输入数据流的示例性系统的示意图。系统100包括用于接收和/或指定输入数据流120和输出分割的数据流130的输入/输出(I/O)接口102;处理器104,包括多个处理管线106,用于分割输入数据流120以创建分割的数据流130;和程序存储器108。输入数据流120可以一种或多种格式接收,例如数据文件、媒体文件和流数据等。输入数据流120包括多个数据项,例如可以作为流的顺序排列的字节、字、双字和/或像素。I/O接口102可以包括一个或多个接口,例如网络接口、存储器接口和/或存储接口。I/O接口102可以用于,例如,通过网络接收和/或传输数据流120和/或130,用于获取数据流120和/或130和/或将数据流120和/或130存储到存储器设备和/或存储设备等。处理器104可以包括一个或多个处理器,每个处理器具有一个或多个核。处理器104还包括向量处理能力,例如多个处理管线106。处理管线106支持均能够处理数据的多个独立执行管线,例如多个处理器、多核和/或向量处理器,例如SIMD处理器和/或SIMD引擎。SIMD引擎包括能够在处理器104的单个指令下同时处理多个数据项的多个处理管线106。程序存储器108可以包括一个或多个非易失性持久存储设备,例如硬盘驱动器和闪存阵列等。
现在同时参考图2,其是本发明的一些实施例采用向量分割输入数据流的示例性过程的流程图。用于分割输入数据流的分割过程200可以由系统100等系统执行。分割过程200使用多个处理管线106来同时处理输入数据流120的部分序列以产生分割的数据流130。
分割过程200可以由一个或多个软件模块完成,例如协调器110和/或计算节点112,其包括由处理器104和/或处理管线106执行的来自程序存储器108的多个程序指令。可选地,计算节点112可以包括嵌有处理管线106的一个或多个微代码模块,其中,微代码模块包括由处理管线106执行的程序指令。协调器110可以例如由处理器104的处理单元执行。协调器110可以管理和/或协调分割过程,例如在多个处理管线106之间分发数据,从多个处理管线106收集数据,同步数据,同步任务,协调计算节点112和/或指定分段等等。处理器104和/或每个处理管线106可以执行多个计算节点112的实例以同时处理输入数据流120的部分序列。当处理器104是包括作为独立处理单元的处理管线106的向量处理器,每个处理管线106可以独立地执行计算节点112实例。然而,当处理器104将SIMD引擎并入,计算节点112可以由向SIMD引擎的每个处理管线106分配数据的处理器104执行。然后,处理器104可以发起单个指令以指示SIMD引擎的所有处理管线106同时执行相同的操作(指令),每个处理管线106处理其各自的分配的数据。
如202所示,过程200开始于协调器110从I/O接口102接收输入数据流120。
在说明采用向量处理同时进行分割过程之前,首先描述采用滚动序列和滚动哈希的分割过程。
现在参考图3A和图3B,其是计算用于分割输入数据流的滚动哈希值的示例性过程的示意图。在包括多个数据项,例如,字节、字、双字、像素等的输入数据流120上应用移位的滚动序列来处理输入数据流120。滚动序列从数据流120的开始处在输入数据流120上开始移位,并且向输入数据流120的末端移位。一直对滚动序列进行移位直到识别和指定分段。一旦指定了分段,则从先前指定的分段的末端开始后续序列,并且向输入数据流120的末端移位的相应的滚动序列。重复该过程,直到分割了整个输入数据流以产生分割的数据流130。滚动序列中包括的数据项的数量可以根据一个或多个方面变化,例如,分割要求、数据吞吐量和处理能力等。示例性输入数据流120用滚动序列处理,每个滚动序列包括64个数据项,然而正如本发明实施例所描述的,数据项的数量可以不同。计算包括数据项SK 310A0至SK-63 310A63的滚动序列310A的哈希值HK 312A。然后将滚动序列向左移位以定义滚动序列310B,删除数据项SK-63 310A63并添加新数据项SK+1 310B1。计算包括数据项SK+1 310B1至SK-62 310A62的滚动序列310B的新哈希值HK+1 312B。滚动序列在输入数据流120的序列中移位,直到如下文所述的检测到分段。可以使用多种滚动哈希函数中的例如Rabin-Karp滚动哈希和/或Buzhash来计算哈希值HK 312A和HK+1 312B以及计算针对输入数据流120的后续序列的哈希值。
尽管可以计算由滚动序列310A和310B等对应的滚动序列哈希值HK 312A和HK+1312B等哈希值,但如前所述,显而易见的是,每个哈希值HK 312A和HK+1 312B取决于先前哈希值、来自相应序列的删除数据项以及添加到相应序列的数据项。因此,每个哈希值可以视为滚动哈希值,并且可以使用先前哈希值、删除数据项和添加数据项的值来计算,从而避免对整个相应滚动序列例如对滚动序列310A和310B的冗余复杂计算。
现在参考图3C,其是计算用于分割输入数据流的滚动哈希值的示例性公式。应用于输入流120等示例性输入流的序列的滚动序列310B相应滚动序列的滚动哈希值为HK+1312B,滚动哈希值HK+1 312B可以作为哈希值HK 312A先前哈希值、删除数据项SK-63 310A63删除数据项和添加数据项SK+1 310B1添加数据项的函数来计算。
比较哈希值HK 312A和HK+1 312B等哈希值中的每个哈希值是否符合一个或多个分割标准,以识别“切割”序列以指定分段所在的点。一个或多个分割标准可以定义例如数据模式,例如,检查哈希值的最后12位等于预定义的值。这样通常平均每4096字节会产生一次“切割”。当然,分段的长度是可变的并且取决于序列内的位置,在该序列中,计算的滚动哈希值符合一个或多个分割标准。可以为多个可变长分段中的每一个预定义最小长,使得输入数据流120的处理的序列从最小块长开始并一直增大直到“切割”。可以为多个可变长分段中的每一个预定义最大长,这样,如果在识别处理的序列中的“切割”点之前达到预定义的最大长,则即使哈希值不符合一个或多个分割标准,也“切割”该分段。
分割过程在输入数据流120的后续序列上继续直到输入数据流120的末端,以创建分割的数据流,例如分割的数据流130。
再次参考图2。如204所示,协调器110在输入流120等输入流的连续数据项的序列上应用滚动序列,例如滚动序列310A和/或310B。协调器110选择从输入数据流120的起点开始,并向输入数据流120的末端移动的第一序列。协调器110在所处理的序列上对滚动序列进行移位,例如滚动序列310A和310B。如上所述,每个滚动序列中包括的数据项的数量,例如,32、64和/或128,取决于分割过程和/或处理资源特征和/或能力的一个或多个方面。
如206所示,协调器110将滚动序列拆分成多个部分滚动序列,其中,分别由相应的一个处理管线106执行的多个计算节点112中的相应一个计算节点对这些部分滚动序列分别同时进行处理。当过程200由具有SIMD引擎的处理器104执行,计算节点112由处理器104执行,处理器104将相应部分滚动序列的数据分配给SIMD引擎的处理管线106。设置部分滚动序列的数量以适合可用的处理管线106的数量,例如4、8、16、32、64和/或128。每个部分滚动序列包括滚动序列310A和310B等滚动序列的子集的间隔均匀的数据项。例如,滚动序列310A和310B拆分成4个部分滚动序列以适合由具有处理管线106等4个处理管线的向量处理器104或由带有具有4个处理管线106的SIMD引擎的向量处理器104执行的4个计算节点112。滚动序列310A和310B中的每个部分滚动序列分别包括滚动序列310A或310B的第四数据项。第一部分滚动序列可以包括数据项0、4、8、……,第二部分滚动序列可以包括数据项1、5、9、……,第三部分滚动序列可以包括数据项2、6、10、……,第四部分滚动序列可以包括数据项3、7、11、……,类似地,又例如,当滚动序列310A和310B拆分成8个部分滚动序列以适合由具有8个处理管线106或8个SIMD处理管线106等处理管线的向量处理器104执行的8个计算节点112,其中,每个部分滚动序列分别包括滚动序列的子集的第八数据项。第一部分滚动序列可以包括数据项0、8、16、……,第二部分滚动序列可以包括数据项1、9、17、……,第三部分滚动序列可以包括数据项2、10、18、……,第四部分滚动序列可以包括数据项3、11、19、……,第五部分滚动序列可以包括数据项4、12、20、……,第六部分滚动序列可以包括数据项5、13、21、……,第七部分滚动序列可以包括数据项6、14、22、……,第八部分滚动序列可以包括数据项7、15和23等等。类似地,协调器110可以将序列拆分为16、32、64、128和256等以适合可用计算节点112的数量,即可用处理管线106的数量。
由多个处理管线106中的相应一个所执行的每个计算节点112处理各个部分滚动序列以计算各个部分滚动序列的部分滚动哈希值。计算节点112可以使用多个滚动哈希函数中的例如,Rabin-Karp滚动哈希和/或Buzhash来计算部分哈希值。多个计算节点112同时处理各自的部分滚动序列,以同时处理所有部分滚动序列。对于具有SIMD引擎的处理器104,处理器104执行的计算节点112发起单个命令(指令)以指示所有SIMD引擎处理管线106同时计算部分滚动序列的部分滚动哈希值。
现在参考图4A和图4B,其是本发明的一些实施例计算用于采用向量来分割输入数据流的部分滚动哈希值的示例性过程的示意图。
如图4A所示,协调器110将滚动序列310A等滚动序列拆分成8个部分滚动序列410A0至410A7,以适合具有8个处理管线106的示例性向量处理器104。协调器110可以将部分滚动序列410A0至410A7分发给8个相应的计算节点112。对于具有SIMD引擎的处理器104,由处理器104执行的单个计算节点112向每个SIMD引擎处理管线106分配部分滚动序列410A0-410A7中相应一个的数据。然而,如上所述,部分滚动序列的数量可以根据计算节点112和/或可用处理管线106的数量不同。由多个处理管线106中的相应一个执行的相应计算节点112处理部分滚动序列410A0至410A7中的每一个。对于具有SIMD引擎的处理器104,SIMD引擎处理管线106在(由处理器104执行的)计算节点112的单个指令下同时处理部分滚动序列410A0-410A7。
本文呈现的示例性过程200遵循上文所呈现的示例,其中每个滚动序列例如滚动序列310A包括具有64个数据项的子集,因此协调器110将滚动序列310A拆分成8个部分滚动序列410A0至410A7,每个部分滚动序列包括8个数据项。因此,示例性部分滚动序列410A0包括8个数据项SK 310A0、SK-8 310A8、SK-16 310A16、SK-24 310A24、SK-32 310A32、SK-40 310A40、SK-48 310A48和SK-56 310A56,示例性部分滚动序列410A7包括8个数据项SK-7 310A7、SK-15310A15、SK-23 310A23、SK-31 310A31、SK-39 310A39、SK-47 310A47、SK-55 310A55和SK-63 310A63等等。需要再次强调的是,部分滚动序列410A0至410A7等多个部分滚动序列中的每一个都包括8个数据项,然而,数据项的数量可以根据一个或多个方面变化,例如,分割要求、哈希函数类型、数据吞吐量和处理器架构等。处理器架构可以包括一个或多个特征,例如寄存器的宽度、缓存行宽度、存储器接口宽度和/或速度、网络接口宽度和/或速度和存储介质接口宽度和/或速度等。
8个计算节点112同时处理8个部分滚动序列410A0至410A7,以计算相应部分滚动序列410A0至410A7中的每一个的部分滚动哈希值,例如部分滚动哈希值H’K 412A0至H’K-7412A7。另外和/或可选地,当处理器104包括SIMD引擎,由处理器104执行的计算节点112指示8个SIMD引擎处理管线106处理8个部分滚动序列410A0至410A7。8个SIMD引擎处理管线106分别为部分滚动序列410A0-410A7中的相应一个计算部分滚动哈希值H’K 412A0至H’K-7412A7。计算节点112可以使用一个或多个哈希函数,例如Rabin-Karp或Buzhash来计算部分滚动哈希值H’K 412A0至H’K-7 412A7。
如图4B所示,每个处理管线106将部分滚动序列向右移位以创建部分滚动序列410B0至410B7,删除先前滚动序列410A0-410A7中的每一个的最左侧数据项,并添加新数据项。例如,部分滚动序列410B0对应于移位的部分滚动序列410A0,其中删除了数据项SK-56310A56并且添加了新数据项SK+8 310B8。类似地,部分滚动序列410B7对应于移位的部分滚动序列410A7,其中删除了数据项SK-63 310A63并且添加了新数据项SK+1 310B1。
8个处理管线106同时处理其各自的部分滚动序列410B0-410B7,以计算各个部分滚动序列410B0-410B7的每一个的部分哈希值,例如哈希值H’K+8 412B0至H’K+1 412B7。
与哈希值HK 312A和HK+1 312B等哈希值相似,可以为相应的部分序列410A0-410A7和410B0-410B7分别计算部分哈希值H’K 412A0-H’K-7 412A7和H’K+8 412B0-H’K+1 412B7等部分哈希值。然而,如上文所述,显而易见的,部分哈希值H’K 412A0-H’K-7 412A7和H’K+8412B0-H’K+1 412B7分别取决于先前相应部分哈希值、来自相应部分滚动序列的删除数据项和相应的部分滚动序列的添加数据项。因此,部分哈希值H’K 412A0-H’K-7 412A7和H’K+8412B0-H’K+1 412B7均可以视为滚动哈希。因此,计算节点112可以使用先前相应的部分哈希值、相应的删除数据项和相应的添加数据项的值来计算部分哈希值H’K 412A0-H’K-7412A7,从而避免对整个相应的部分滚动序列410A0-410A7和/或410B0-410B7的冗余计算。
现在参考图4C,其是本发明一些实施例计算用于分割输入数据流的部分滚动哈希值的示例性公式的示意图。相应的处理管线106可以为部分滚动序列410B7等相应的部分滚动序列计算部分滚动哈希值H’K+1 412B7等部分滚动哈希值,作为部分滚动哈希值H’K-7412A7等先前部分滚动哈希值、删除数据项SK-63 310A63等删除数据项和添加数据项SK+1310B1等添加数据项的函数。类似地,每个其他处理管线106可以使用相同的方法来计算部分滚动哈希值H’K+2 412B6至H’K+8 412B0。
再次参考图2。如208所示,检查每个计算的部分滚动哈希值是否符合和/或满足相应的一个或多个部分分割标准,以确定包括滚动序列310A和310B(分别包括相应的部分滚动序列)等滚动序列的完整序列是否可以指定为分段。分别检查部分滚动哈希值H’K412A0-H’K-7 412A7和/或H’K+8 412B0-H’K+1 412B7等相应部分哈希值的符合性,以识别可以“切割”序列以指定分段所在的点。一个或多个部分分割标准可以定义例如数据模式,例如,部分滚动哈希值412大于预定义值和/或部分滚动哈希值412中的预定数量的位等于预定义值。每个符合相应部分分割标准的连续部分哈希值的数量影响平均分段长度。符合其相应的部分分割标准所需的连续部分哈希值的数量可以根据最大允许和/或期望的数据段长度变化。
如210所示,当部分滚动哈希值符合相应的部分分割标准,协调器110可以“切割”滚动序列移位所在的序列(并且其包括部分滚动序列),并且指定该序列为数据段。协调器110可以使用一个或多个分割标准来“切割”序列并将其指定为分段,其中,该分割标准是一个或多个部分分割标准的组合。
当然,分段的长度是可变的并且取决于序列内的位置,在该序列中,识别相应的计算的部分滚动哈希值对相应的一个或多个部分分割标准的符合性。通常,对于重复数据删除,数据段的平均长度可以是例如4千字节(kilo byte,简称KB)、6KB和/或8KB,其可能最适合当前处理,存储和/或网络吞吐量和性能,以关于分段的数量优化处理数据段的开销。
可选地,可以为多个可变长度分段中的每一个预定义最小长度,使得部分滚动序列从最小块长度开始并一直增大直到“切割”。基于典型的段长度,预定义的最小长度可以是例如2KB。
可选地,可以为多个可变长度分段中的每一个预定义最大长度,这样,如果在识别“切割”点之前达到预定义的最大长度,则即使哈希值与一个或多个分割标准不匹配,也“切割”该分段。基于典型的段长度,预定义的最大长度可以是例如16KB。
现在参考图5A和图5B,其是本发明一些实施例部分滚动哈希值符合部分分割标准的示例性过程的示意图。当计算节点112识别到与多个部分滚动序列中的一个相关联的各个部分滚动哈希值对相应的部分分割标准的符合性时,协调器110可以识别对分割标准的符合性。当处理器104具有SIMD引擎,由处理器执行的计算节点112收集分别由SIMD处理管线106计算的部分滚动哈希值,并比较部分滚动哈希值与相应的部分分割标准。例如,当部分滚动序列410A0-410A7等各个部分滚动序列的部分滚动哈希值H’K 412A0-H’K-7 412A7等部分滚动哈希值全部符合相应的部分分割标准,协调器110可以将数据项SK 310A0的点的序列指定为分段。
如图5A所示,QK 510A是分割标准,其是一组部分分割标准Q’K-7 510A7-Q’K 510A0的组合,其中,“1”表示相应部分哈希值对相应的部分分割标准的符合性,且“0”表示相应的部分哈希值对相应的一个或多个部分分割标准的不符合性。例如,部分分割标准Q’K-7510A7表示部分哈希值H’K-7 412A7符合。由于部分分割标准Q’K-5 510A5、Q’K-3 510A3和Q’K-1510A1不符合相应的部分分割标准,因此不满足整个分割标准QK 510A。
另一方面,如图5B所示,所有部分分割标准Q’K-7 510A7-Q’K 510A0符合其各自的部分分割标准,因此满足整个分割标准QK 510A,并进行“切割”520以指定包括包括相应部分滚动序列的滚动序列的序列作为分段。
可选地,协调器110检查连续滚动序列,例如,先前滚动序列和/或后续滚动序列,的连续部分滚动哈希值对相应部分分割标准的符合性。需要符合相应的部分分割标准的连续部分哈希值的数量可能超过部分滚动哈希值的数量(当然,其是部分滚动序列的数量和处理管线106的数量)。因此,滚动序列对分割标准的符合性是连续部分滚动序列的部分哈希值的符合性的函数。如上所述,可以设置检查对部分分割标准的符合性的连续部分滚动哈希值的数量,以适合所需的和/或期望的典型数据段长度,因为连续的相符的部分滚动哈希值的数量影响平均分段长度。在此呈现的示例呈现8个连续的部分滚动哈希值对相应的部分分割标准的符合性,然而,根据所需/期望的典型数据段长度,可以使用其他数量的连续部分滚动哈希值。
通过检查两组连续的部分滚动序列的连续部分哈希值的符合性,协调器可以呈现额外的优点,因为与识别滚动序列310A和/或310B等原始滚动序列的符合性相比,用于分割序列的分辨率和/或粒度提高了。
现在参考图5C和图5D,其是本发明一些实施例部分滚动哈希值符合部分分割标准的示例性过程的示意图。
如图5C所示,QK 510A是分割标准,其是一组部分分割标准Q’K-7 510A7-Q’K 510A0的组合。由于部分分割标准Q’K-5 510A5、Q’K-3 510A3和Q’K-1 510A1不符合相应的部分分割标准,因此协调器110可以判定不满足整个分割标准QK 510A。这同样适用于作为一组部分分割标准Q’K+1 510B7-Q’K+8 510B0的组合的并且未满足的分割标准QK+8 510B,因为不是所有部分分割标准Q’K+1 510B7-Q’K+8 510B0均符合相应的部分分割标准。此外,在随后的两个分割标准QK 510A和QK+8 510B中没有部分分割标准的序列,其全部符合其各自的部分分割标准,因此相应的序列可能不会指定为分割边界或“切割”点。
另一方面,如图5D所示,协调器110可以识别出一组8个连续的部分分割标准Q’K+6510B2至Q’K+13 510C3都符合其各自的部分分割标准,因此协调器可以插入“切割”520以将相应的序列指定为分段,其中,该序列包括数据项到滚动序列510C3(包括在内)。
协调器110然后可以继续识别输入数据流120的序列中的后续分段,其中后续序列从先前检测到的分段的末端开始。
再次参考图2。如212所示,其是判定点,当协调器110检测到到达输入数据流120的末端,过程200分出214。当协调器110检测到输入数据流120包括添加数据项,协调器110可以转到204以对输入数据流120的后续序列重复分割过程。协调器110重复步骤204至212,直到到达输入数据流120的末端以创建分割的数据流130。
如214所示,一旦用于输入数据流120的分割过程200结束,协调器110可以采用例如I/O接口102输出分割的数据流130。
在分割之后,协调器110可输出分割的数据流以用于多个应用中的一个或多个,例如,重复数据删除。
对本发明各个实施例的描述只是为了说明的目的,而这些描述并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,本领域技术人员可以清楚理解许多修改和变化。相比于市场上可找到的技术,选择此处使用的术语可最好地解释本实施例的原理、实际应用或技术进步,或使本领域其他技术人员理解此处公开的实施例。
预期在从本申请衍生出的专利的有效期内能产生多个相关的向量处理技术,例如SIMD,当然,术语SIMD的范围旨在先验地包括所有这样的新技术。
此处使用的术语“大约”表示±10%。
术语“包括”以及“有”表示“包括但不限于”。这个术语包括了术语“由……组成”以及“本质上由……组成”。
短语“本质上由……组成”是指构成或方法在当且仅当附加成分和/或步骤不会实质性改变所要求保护的构成或方法的基本和新颖特征时才可以包括附加成分和/或步骤。
除非上下文中另有明确说明,此处使用的单数形式“一个”和“所述”包括复数含义。例如,术语“一个复合物”或“至少一个复合物”可以包括多个复合物,包括其混合物。
此处使用的词“示例性的”表示“作为一个例子、示例或说明”。任何“示例性的”实施例不必理解为优先于或优越于其他实施例,和/或并不排除其他实施例特征的结合。
此处使用的词语“可选地”表示“在一些实施例中提供且在其他实施例中没有提供”。本发明的任意特定的实施例可以包括多个“可选的”特征,除非这些特征相互矛盾。
单个实施例也可以提供某些特征的组合,这些特征在各个实施例正文中有简短的描述。相反地,本发明的各个特征在单个实施例的正文中有简短的描述,也可以分别提供这些特征或任何适合的子组合或者作为本发明所述的任何合适的其他实施例。不可认为各个实施例的正文中描述的某些特征是这些实施例的必要特征,除非没有这些元素,该实施例无效。

Claims (11)

1.一种采用向量分割输入数据流的系统,其特征在于,包括:
处理器,用于在整个输入数据流中重复以下步骤以创建包括多个分段的分割的数据流:
在输入数据流的连续数据项的序列上应用滚动序列,其中,所述滚动序列包括所述序列的连续数据项的子集;
由所述处理器的处理管线利用向量处理为多个部分滚动序列同时计算部分哈希值,其中,每个部分滚动序列包括所述子集的间隔均匀的数据项;
确定所述多个部分哈希值中的每一个对至少一个相应的部分分割标准的符合性;所述分割标准包括部分滚动哈希值是否大于预定义值和/或部分滚动哈希值中的预定数量的位是否等于预定义值;
当所述多个部分哈希值中的至少一些符合相应的至少一个部分分割标准时,将所述序列指定为可变长度分段。
2.根据权利要求1所述的系统,其特征在于,所述处理器是单指令多数据(SIMD)处理器。
3.根据权利要求1或2所述的系统,其特征在于,所述处理器用于使用相应的先前部分滚动序列的部分哈希值、从所述相应部分滚动序列中删除的删除数据项以及添加到所述相应部分滚动序列中的添加数据项来计算所述多个部分哈希值中的每一个作为部分滚动哈希值。
4.根据权利要求1所述的系统,其特征在于,所述处理器用于:当针对符合所述相应的至少一个部分分割标准的序列的连续子集计算的连续的符合部分哈希值的数量超过多个部分滚动序列的数量时,将所述序列指定为可变长度分段。
5.根据权利要求4所述的系统,其特征在于,所述序列包括预定义的最少连续数据项。
6.根据权利要求1所述的系统,其特征在于,当在检测到所述部分哈希值对所述相应的至少一个部分分割标准的符合性之前,所述多个序列中的至少一个大序列的大小超过预定义最大值,所述处理器用于将所述大序列指定为可变长度分段。
7.一种采用向量分割输入数据流的方法,其特征在于,包括:
通过处理器在整个输入数据流中重复以下步骤以创建包括多个分段的分割的数据流:
在输入数据流的连续数据项的序列上应用滚动序列,其中,所述滚动序列包括所述序列的连续数据项的子集;
由处理器的处理管线利用向量处理为多个部分滚动序列同时计算部分哈希值,其中,每个部分滚动序列包括所述子集的间隔均匀的数据项;
确定所述多个部分哈希值中的每一个对至少一个相应的部分分割标准的符合性;所述分割标准包括部分滚动哈希值是否大于预定义值和/或部分滚动哈希值中的预定数量的位是否等于预定义值;
当所述多个部分哈希值中的至少一些符合相应的至少一个部分分割标准时,将所述序列指定为可变长度分段。
8.根据权利要求7所述的方法,其特征在于,使用相应的先前部分滚动序列的部分哈希值、从所述相应部分滚动序列中删除的删除数据项以及添加到所述相应部分滚动序列中的添加数据项来计算所述多个部分哈希值中的每一个作为部分滚动哈希值。
9.根据权利要求7或8所述的方法,其特征在于,当针对符合所述相应的至少一个部分分割标准的序列的连续子集计算的连续的符合部分哈希值的数量超过多个部分滚动序列的数量时,将所述序列指定为可变长度分段。
10.根据权利要求9所述的方法,其特征在于,所述序列包括预定义的最少连续数据项。
11.根据权利要求7所述的方法,其特征在于,当在检测到所述部分哈希值对所述相应的至少一个部分分割标准的符合性之前,所述多个序列中的至少一个大序列的大小超过预定义最大值,将所述大序列指定为可变长度分段。
CN201680005071.8A 2016-04-19 2016-04-19 用于分割哈希值计算的向量处理 Active CN107534445B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2016/058673 WO2017182063A1 (en) 2016-04-19 2016-04-19 Vector processing for segmentation hash values calculation

Publications (2)

Publication Number Publication Date
CN107534445A CN107534445A (zh) 2018-01-02
CN107534445B true CN107534445B (zh) 2020-03-10

Family

ID=55809098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680005071.8A Active CN107534445B (zh) 2016-04-19 2016-04-19 用于分割哈希值计算的向量处理

Country Status (6)

Country Link
US (1) US10459961B2 (zh)
EP (2) EP3726732A1 (zh)
JP (1) JP6420489B2 (zh)
CN (1) CN107534445B (zh)
SG (1) SG11201704732PA (zh)
WO (1) WO2017182063A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USD927802S1 (en) * 2019-11-25 2021-08-10 Fna Group, Inc. Pressure washer
CN111090397B (zh) * 2019-12-12 2021-10-22 苏州浪潮智能科技有限公司 一种数据重删方法、系统、设备及计算机可读存储介质
CN117555903B (zh) * 2024-01-05 2024-04-09 珠海星云智联科技有限公司 一种数据处理方法、计算机设备及介质

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5990810A (en) 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating such subblocks
US6704730B2 (en) 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
AU2003207836A1 (en) 2002-02-04 2003-09-02 Cataphora, Inc. A method and apparatus for sociological data mining
US8504791B2 (en) 2007-01-26 2013-08-06 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory coprocessor
US8407428B2 (en) 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
US9805123B2 (en) 2008-11-18 2017-10-31 Excalibur Ip, Llc System and method for data privacy in URL based context queries
US8060492B2 (en) 2008-11-18 2011-11-15 Yahoo! Inc. System and method for generation of URL based context queries
US20100125569A1 (en) 2008-11-18 2010-05-20 Yahoo! Inc. System and method for autohyperlinking and navigation in url based context queries
US8024317B2 (en) 2008-11-18 2011-09-20 Yahoo! Inc. System and method for deriving income from URL based context queries
US8032508B2 (en) 2008-11-18 2011-10-04 Yahoo! Inc. System and method for URL based query for retrieving data related to a context
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
JP5500257B2 (ja) 2010-09-30 2014-05-21 日本電気株式会社 ストレージシステム
US8396905B2 (en) 2010-11-16 2013-03-12 Actifio, Inc. System and method for improved garbage collection operations in a deduplicated store by tracking temporal relationships among copies
US8788769B2 (en) 2010-11-16 2014-07-22 Actifio, Inc. System and method for performing backup or restore operations utilizing difference information and timeline state information
US9858155B2 (en) 2010-11-16 2018-01-02 Actifio, Inc. System and method for managing data with service level agreements that may specify non-uniform copying of data
US8299944B2 (en) 2010-11-16 2012-10-30 Actifio, Inc. System and method for creating deduplicated copies of data storing non-lossy encodings of data directly in a content addressable store
US8904126B2 (en) 2010-11-16 2014-12-02 Actifio, Inc. System and method for performing a plurality of prescribed data management functions in a manner that reduces redundant access operations to primary storage
US8843489B2 (en) 2010-11-16 2014-09-23 Actifio, Inc. System and method for managing deduplicated copies of data using temporal relationships among copies
US8402004B2 (en) 2010-11-16 2013-03-19 Actifio, Inc. System and method for creating deduplicated copies of data by tracking temporal relationships among copies and by ingesting difference data
US8417674B2 (en) 2010-11-16 2013-04-09 Actifio, Inc. System and method for creating deduplicated copies of data by sending difference data between near-neighbor temporal states
US8332372B2 (en) * 2010-12-16 2012-12-11 International Business Machines Corporation Method and system for processing data
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8935506B1 (en) 2011-03-31 2015-01-13 The Research Foundation For The State University Of New York MemX: virtualization of cluster-wide memory
CN103733020A (zh) 2011-07-25 2014-04-16 伊雷克托科学工业股份有限公司 用于特征化对象并监视制造过程的方法与设备
WO2013019869A2 (en) 2011-08-01 2013-02-07 Actifio, Inc. Data fingerpringting for copy accuracy assurance
US8849759B2 (en) 2012-01-13 2014-09-30 Nexenta Systems, Inc. Unified local storage supporting file and cloud object access
US9665304B2 (en) 2011-09-07 2017-05-30 Nec Corporation Storage system with fast snapshot tree search
US20130087297A1 (en) 2011-10-10 2013-04-11 Lori Wolin VertiQuiet
JP5838927B2 (ja) 2011-10-14 2016-01-06 Tdk株式会社 積層セラミック電子部品
CN104781791A (zh) 2011-12-05 2015-07-15 持续电信解决方案公司 通用可插拔云灾难恢复系统
USD680519S1 (en) 2012-03-14 2013-04-23 Yamaha Corporation Digital mixer
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US20130311433A1 (en) * 2012-05-17 2013-11-21 Akamai Technologies, Inc. Stream-based data deduplication in a multi-tenant shared infrastructure using asynchronous data dictionaries
JP2015525419A (ja) 2012-06-18 2015-09-03 アクテフィオ,インク. 高度データ管理仮想化システム
USD676167S1 (en) 2012-07-13 2013-02-12 Litek Enterprise Co., Ltd. Exterior surface configuration of vehicular headlight
US9548908B2 (en) 2012-08-21 2017-01-17 Cisco Technology, Inc. Flow de-duplication for network monitoring
WO2014081727A1 (en) * 2012-11-20 2014-05-30 Denninghoff Karl L Search and navigation to specific document content
US9678975B2 (en) 2013-03-15 2017-06-13 International Business Machines Corporation Reducing digest storage consumption in a data deduplication system
CA2912394A1 (en) 2013-05-14 2014-11-20 Actifio, Inc. Efficient data replication and garbage collection predictions
CN103281538B (zh) * 2013-06-06 2016-01-13 上海交通大学 基于滚动哈希和块级别帧内预测的帧内编码方法
US9286314B2 (en) * 2013-07-15 2016-03-15 International Business Machines Corporation Applying a maximum size bound on content defined segmentation of data
US9244830B2 (en) * 2013-07-15 2016-01-26 Globalfoundries Inc. Hierarchical content defined segmentation of data
USD737528S1 (en) 2013-09-18 2015-08-25 Alfred Kaercher Gmbh & Co. Kg High pressure cleaner
US9904603B2 (en) 2013-11-18 2018-02-27 Actifio, Inc. Successive data fingerprinting for copy accuracy assurance
US20150161194A1 (en) 2013-12-06 2015-06-11 Actifio, Inc. System and method for rapid estimation of data similarity
US20150228004A1 (en) 2014-02-07 2015-08-13 Kristin Kaye Bednarek Smart Device Apps and Incentives For Encouraging The Creation and Sharing Electronic Lists To Imrpove Targeted Marketing While Preserving User Anonymity
US20150227890A1 (en) 2014-02-07 2015-08-13 Kristin Kaye Bednarek Communications system and smart device apps supporting segmented order distributed distribution system
US20150227602A1 (en) 2014-02-13 2015-08-13 Actifio, Inc. Virtual data backup
US10133572B2 (en) * 2014-05-02 2018-11-20 Qualcomm Incorporated Techniques for serialized execution in a SIMD processing system
WO2015170333A2 (en) 2014-05-07 2015-11-12 Sankhya Technologies Private Limited Manifold system and synthesis of a manifold system from input models
USD756678S1 (en) 2014-05-19 2016-05-24 Ascion, Llc Adjustable bed
WO2015195834A1 (en) 2014-06-17 2015-12-23 Rangasamy Govind Resiliency director
US10803019B2 (en) * 2014-07-02 2020-10-13 International Business Machines Corporation Hash-based multi-tenancy in a deduplication system
US20160070714A1 (en) 2014-09-10 2016-03-10 Netapp, Inc. Low-overhead restartable merge operation with efficient crash recovery
US10042710B2 (en) 2014-09-16 2018-08-07 Actifio, Inc. System and method for multi-hop data backup
US10127301B2 (en) 2014-09-26 2018-11-13 Oracle International Corporation Method and system for implementing efficient classification and exploration of data
US20160132523A1 (en) 2014-11-12 2016-05-12 Strato Scale Ltd. Exploiting node-local deduplication in distributed storage system
US10558690B2 (en) * 2015-07-06 2020-02-11 International Business Machines Corporation Multiple sub-string searching

Also Published As

Publication number Publication date
EP3251216A1 (en) 2017-12-06
JP2018517947A (ja) 2018-07-05
US20170344559A1 (en) 2017-11-30
SG11201704732PA (en) 2017-11-29
CN107534445A (zh) 2018-01-02
EP3726732A1 (en) 2020-10-21
WO2017182063A1 (en) 2017-10-26
US10459961B2 (en) 2019-10-29
JP6420489B2 (ja) 2018-11-07

Similar Documents

Publication Publication Date Title
JP6537202B2 (ja) ベクトル処理を使用する並行セグメント化
US20180285014A1 (en) Data storage method and apparatus
US20170286443A1 (en) Optimizing data block size for deduplication
US9471386B2 (en) Allocating resources to tasks in a build process
US10938961B1 (en) Systems and methods for data deduplication by generating similarity metrics using sketch computation
US10416915B2 (en) Assisting data deduplication through in-memory computation
CN107534445B (zh) 用于分割哈希值计算的向量处理
US9632720B2 (en) Data de-duplication
CN107016053B (zh) 一种并行的数据差分方法
US10489160B2 (en) General purpose data compression using SIMD engine
JP2012164130A (ja) データ分割プログラム
US10346256B1 (en) Client side cache for deduplication backup systems
US11995050B2 (en) Systems and methods for sketch computation
JP7299334B2 (ja) チャンキング方法および装置
US10505739B2 (en) Prefix fingerprint
US20210191640A1 (en) Systems and methods for data segment processing
JP2018517947A5 (zh)
GB2524515A (en) Method to improve compression ratio for a compression engine
US11347424B1 (en) Offset segmentation for improved inline data deduplication
CN112181974B (zh) 标识信息分配方法、系统及存储设备
JP6961950B2 (ja) 格納方法、格納装置および格納プログラム
JP7494190B2 (ja) ファイルを更新するための技術
US10747729B2 (en) Device specific chunked hash size tuning
CN112463021A (zh) 数据处理方法及装置、芯片

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant