JP6420489B2 - セグメント化ハッシュ値計算のためのベクトル処理 - Google Patents

セグメント化ハッシュ値計算のためのベクトル処理 Download PDF

Info

Publication number
JP6420489B2
JP6420489B2 JP2017539609A JP2017539609A JP6420489B2 JP 6420489 B2 JP6420489 B2 JP 6420489B2 JP 2017539609 A JP2017539609 A JP 2017539609A JP 2017539609 A JP2017539609 A JP 2017539609A JP 6420489 B2 JP6420489 B2 JP 6420489B2
Authority
JP
Japan
Prior art keywords
partial
sequence
rolling
hash value
data stream
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
JP2017539609A
Other languages
English (en)
Other versions
JP2018517947A5 (ja
JP2018517947A (ja
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 JP2018517947A publication Critical patent/JP2018517947A/ja
Publication of JP2018517947A5 publication Critical patent/JP2018517947A5/ja
Application granted granted Critical
Publication of JP6420489B2 publication Critical patent/JP6420489B2/ja
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/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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Image Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Multi Processors (AREA)

Description

本発明は、そのいくつかの実施形態では、入力データストリームのセグメント化に関し、より詳細には、排他的ではないが、ベクトル処理を使用した入力データストリームのセグメント化に関する。
情報時代である現在、記憶され、および/または位置間で転送される必要があるデータの量が急速に増加している。おびただしい量のデータは、データを記憶するための記憶空間および/またはそれを転送するためのネットワーク帯域幅に関して、重大なコストおよび/または複雑性の課題を提起し得る。
記憶するため、および/または転送するためのデータの量を少なくするために広く使用されている1つの解決法は、冗長なデータを排除することによってデータ量を少なくする方法であるデータ重複排除である(しばしば「インテリジェント圧縮」または「単一インスタンス記憶」と呼ばれている)。ファイル重複排除のための方法が存在しているが、ブロック重複排除は、データ圧縮に関してより良好な結果を提供し得る。ブロック重複排除では、データストリームのデータセグメント(ブロック)の1つの一意のインスタンスのみが実際に保持され、一方、既に保持されているデータセグメントと全く同じである冗長なデータセグメントは、保持されているデータセグメントの複製に対するポインタと置換される。ブロック重複排除は、複数のデータタイプ、例えば1つまたは複数のデータセグメント(ブロック)の一意のインスタンスを特定するためのデータファイル、媒体ファイル、ストリームデータ等のうちの1つであってもよいデータストリームを処理する。一意の数(ハッシュ値)は、ハッシュアルゴリズムを使用してセグメント毎に生成される。暗号化強度ハッシュアルゴリズムは、通常、この目的、例えばMD5および/またはSHA−1のために使用される。セグメント毎に生成されるハッシュ値は、その前のセグメントに対して生成された既存のハッシュ値に対して比較され、ハッシュ値が既存のハッシュ値に等しい場合、セグメントは保持されず、その代わりに、既存のセグメントの複製に対するポインタと置換される。さらに、セグメントが更新される場合、変化したデータのみが保持されることがあり、一方、著しい量のセグメントを含み得る残りの不変のデータは保持されない。
主な課題のうちの1つは、セグメントのデータコンテンツに対する変化によってセグメントが受ける影響が可能な限り小さくなるよう、データストリームを効果的にセグメント化することである。ローリングハッシュ技法は、当業界で知られているように、データストリームをセグメント化するために使用され得る。ローリングハッシュを使用して、データストリーム中のデータのシーケンスをシフトさせるためのハッシュ値が計算される(各々のローリングシーケンス中では、終了データ項目が省略され、かつ、新しいデータ項目が挿入される)。計算されたハッシュ値は、予め定義済みの1つまたは複数のセグメント化基準との整合性がチェックされ、整合性が確認される場合、それぞれのローリングシーケンスの終了がセグメント境界または切断点として指定される。
本発明の第1の態様によれば、ベクトル処理を使用して入力データストリームをセグメント化するためのシステムが提供され、システムは、複数のセグメントからなるセグメント化されたデータストリームを生成するために、入力データストリーム全体を通して、以下のステップ、すなわち、入力データストリームの連続的なデータ項目のシーケンスに対してローリングシーケンスを適用するステップであって、ローリングシーケンスは、シーケンスの連続的なデータ項目のサブセットを含む、ステップと、複数の部分ハッシュ値を並行に計算するステップであって、各々の部分ハッシュ値は、プロセッサの複数の処理パイプラインのうちの1つによって計算され、各々の部分ハッシュ値は、サブセットの均等に間隔を隔てたデータ項目を各々が含む複数の部分ローリングシーケンスのうちのそれぞれの1つのためのものである、ステップと、複数の部分ハッシュ値の各々の、それぞれの少なくとも1つの部分セグメント化基準との整合性を決定するステップと、複数の部分ハッシュ値のうちの少なくともいくつかがそれぞれの少なくとも1つの部分セグメント化基準に適合する場合、シーケンスを可変サイズセグメントとして指定するステップとを繰り返すように適合されたプロセッサを備える。
並行という用語は、それによって継続期間の重畳という意味を有しており、また、同時という意味、例えば同じ時間に生じるという意味をも含む。
本発明の第1の態様の第1の実装形態自体によれば、プロセッサは単一命令複数データSIMDプロセッサである。
第1の態様の第2の実装形態自体によれば、または第1の態様の第1の実装形態によれば、プロセッサは、それぞれの以前の部分ローリングシーケンスのそれぞれの部分ハッシュ値、それぞれの部分ローリングシーケンスから省略される被省略データ項目、およびそれぞれの部分ローリングシーケンスに追加される被追加データ項目を使用して、複数の部分ハッシュ値の各々を部分ローリングハッシュ値として計算するように適合される。
第1の態様の第3の実装形態自体によれば、または第1の態様の第1の実装形態または第2の実装形態のいずれかによれば、プロセッサは、それぞれの少なくとも1つの部分セグメント化基準に適合するシーケンスの連続するサブセットに対して計算された連続的な適合する部分ハッシュ値の数が複数の部分ローリングシーケンスの数を超える場合、シーケンスを可変サイズセグメントとして指定するように適合される。
第1の態様の第4の実装形態自体によれば、または第1の態様の第1実装形態から第3の実装形態のいずれかによれば、シーケンスは、予め定義済みの最小個数の連続的なデータ項目を含む。
第1の態様の第5の実装形態自体によれば、または第1実装形態から第4の実装形態のいずれかによれば、プロセッサは、部分ハッシュ値の、それぞれの少なくとも1つの部分セグメント化基準との整合性を検出する前に、大きいシーケンスのサイズが予め定義済みの最大値を超える場合、複数のシーケンスのうちの少なくとも1つの大きいシーケンスを可変サイズセグメントとして指定するように適合される。
本発明の第2の態様によれば、ベクトル処理を使用して入力データストリームをセグメント化するための方法が提供され、方法は、複数のセグメントからなるセグメント化されたデータストリームを生成するために、入力データストリーム全体を通して、以下のステップ、すなわち、入力データストリームの連続的なデータ項目のシーケンスに対してローリングシーケンスを適用するステップであって、ローリングシーケンスがシーケンスの連続的なデータ項目のサブセットを含む、ステップと、複数の部分ハッシュ値を並行に計算するステップであって、各々の部分ハッシュ値は、プロセッサの複数の処理パイプラインのうちの1つによって計算され、各々の部分ハッシュ値は、サブセットの均等に間隔が隔てられたデータ項目を各々が含む複数の部分ローリングシーケンスのうちのそれぞれの1つのためのものである、ステップと、複数の部分ハッシュ値の各々の、それぞれの少なくとも1つの部分セグメント化基準との整合性を決定するステップと、複数の部分ハッシュ値のうちの少なくともいくつかがそれぞれの少なくとも1つの部分セグメント化基準に適合する場合、シーケンスを可変サイズセグメントとして指定するステップとを繰り返すように適合されたプロセッサを使用するステップを含む。
本発明の第2の態様の第1の実装形態自体によれば、複数の部分ハッシュ値の各々は、それぞれの以前の部分ローリングシーケンスのそれぞれの部分ハッシュ値、それぞれの部分ローリングシーケンスから省略される被省略データ項目、およびそれぞれの部分ローリングシーケンスに追加される被追加データ項目を使用して、部分ローリングハッシュ値として計算される。
第2の態様の第2の実装形態自体によれば、または第2の態様の第1の実装形態によれば、シーケンスは、それぞれの少なくとも1つの部分セグメント化基準に適合するシーケンスの連続するサブセットに対して計算された連続的な適合する部分ハッシュ値の数が複数の部分ローリングシーケンスの数を超える場合、可変サイズセグメントとして指定される。
第2の態様の第3の実装形態自体によれば、または第2の態様の第1実装形態または第2の実装形態のいずれかによれば、シーケンスは、予め定義済みの最小個数の連続的なデータ項目を含む。
第2の態様の第4の実装形態自体によれば、または第2の態様の第1実装形態から第3の実装形態のいずれかによれば、複数のシーケンスのうちの少なくとも1つの大きいシーケンスは、部分ハッシュ値の、それぞれの少なくとも1つの部分セグメント化基準との整合性を検出する前に、大きいシーケンスのサイズが予め定義済みの最大値を超える場合、可変サイズセグメントとして指定される。
本発明のいくつかの実施形態が、本明細書においてほんの一例として、添付の図面を参照して説明される。以下、図面をとりわけ詳細に参照するが、示されている特定の内容は一例であり、本発明の実施形態の例示的な議論のためのものであることが強調される。この点に関し、図面を参照してなされる説明は、本発明の実施形態が実践され得る方法を当業者に明らかにする。
本発明のいくつかの実施形態による、ベクトル処理を使用して入力データストリームをセグメント化するための例示的システムの概略図である。 本発明のいくつかの実施形態による、ベクトル処理を使用して入力データストリームをセグメント化するための例示的処理のフローチャートである。 入力データストリームをセグメント化するためのローリングハッシュ値を計算する例示的処理の概略図である。 入力データストリームをセグメント化するためのローリングハッシュ値を計算する例示的処理の概略図である。 入力データストリームをセグメント化するためのローリングハッシュ値計算の例示的公式化を示す図である。 本発明のいくつかの実施形態による、ベクトル処理を使用して入力データストリームをセグメント化するための部分ローリングハッシュ値を計算する例示的処理の概略図である。 本発明のいくつかの実施形態による、ベクトル処理を使用して入力データストリームをセグメント化するための部分ローリングハッシュ値を計算する例示的処理の概略図である。 本発明のいくつかの実施形態による、セグメント化のための部分ローリングハッシュ値計算の例示的公式化の概略図である。 本発明のいくつかの実施形態による、部分セグメント化基準を使用して部分ローリングハッシュ値を制限する例示的処理の概略図である。 本発明のいくつかの実施形態による、部分セグメント化基準を使用して部分ローリングハッシュ値を制限する例示的処理の概略図である。 本発明のいくつかの実施形態による、部分セグメント化基準を使用して部分ローリングハッシュ値を制限する例示的処理の概略図である。 本発明のいくつかの実施形態による、部分セグメント化基準を使用して部分ローリングハッシュ値を制限する例示的処理の概略図である。
本発明は、そのいくつかの実施形態では、入力データストリームのセグメント化に関し、より詳細には、排他的ではないが、ベクトル処理を使用した入力データストリームのセグメント化に関する。
本発明は、冗長な(重複した)データセグメントを除去することによって入力データストリームのデータの量を少なくするために、入力データストリームに適用される重複排除処理の一部としてベクトル処理を使用して入力データストリームをセグメント化するためのシステムおよび方法を提供する。入力データストリーム、例えばデータファイル、媒体ファイル、ストリーミングデータ等のデータの量を少なくするための重複排除処理は、入力データストリームを記憶し、および/または転送するために必要な記憶空間および/またはネットワーク帯域幅を低減するために実施される。セグメント化は、連続的なデータ項目、例えばバイト、ワード、ダブルワードおよび/または入力データストリームのピクセルのシーケンスを通じて漸進的にシフトされるローリングシーケンスを構成している複数の部分ローリングシーケンスを並行または同時に処理することによって実施される。部分ローリングシーケンスは、部分ローリングシーケンスの各々に対して部分ローリングハッシュ値を計算するために並行に処理される。複数の部分ローリングハッシュ値の各々は、1つまたは複数のベクトルプロセッサ、例えば単一命令複数データ(SIMD)プロセッサの複数の処理パイプラインのうちのそれぞれの1つの中で計算される。ローリングシーケンスは、シーケンスの連続的なデータ項目のサブセットを含むが、複数の部分ローリングシーケンスの各々は、ローリングシーケンスのサブセットの均等に間隔が隔てられたデータ項目を含む。シーケンスは、部分ローリングシーケンスの各々に対して計算される部分ローリングハッシュ値のうちの少なくともいくつかがそれぞれの1つまたは複数の部分セグメント化基準に適合する(満たす)場合、可変サイズセグメントとして指定され得る。処理は、セグメント化されたデータストリームを生成するために、入力データストリーム全体を通して、複数の後続するローリングシーケンスに対して繰り返され、各ローリングシーケンスは、その前のローリングシーケンスが終了する点で始まる。
ベクトル処理を使用した同時セグメント化は、既存の逐次セグメント化方法と比較すると著しい利点を提供し得る。ベクトル処理技術は、多くの面、例えば近代のプロセッサの中で利用可能な処理パイプラインの数、並列に処理され得るデータ項目の数、および/またはプロセッサの処理能力が急速に進歩している。入力データストリームの効果的なセグメント化は、重複排除処理全体の有効性に対する大きな貢献を有し得るが、それは、大きな時間消費および/または重複排除処理のプロセッサ集中操作のうちの1つであり得る。入力シーケンスのデータ項目は、ローリングシーケンスに対するハッシュ値の計算に関して、互いに独立していると見なされ得るため、セグメント化処理の一部として同時に起こる部分ローリングシーケンスの処理は、SIMDエンジンを有するプロセッサなどのベクトル処理技術を全面的に利用し得る。ベクトルプロセッサを使用した入力データストリームの処理は、現在のセグメント化方法によって使用されている逐次セグメント化と比較すると、セグメント化時間を著しく短縮し得る。セグメント化時間が著しく短縮されるため、重複排除処理全体が著しく短縮され得るし、また、事によるとデータ転送および/またはデータ記憶操作におけるボトルネックを除去し得る。
本発明の少なくとも1つの実施形態を詳細に説明する前に、本発明は、その適用が、以下の説明の中で示され、および/もしくは図面および/もしくは実施例に示されている構成要素ならびに/または方法の構造および配置の詳細に必ずしも限定されないことを理解されたい。本発明は、他の実施形態が可能であり、または様々な方法で実践または実施することができる。
本発明は、システム、方法および/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、本発明の態様をプロセッサに実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持し、かつ、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、それらに限定されないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記デバイスの任意の適切な組合せであってもよい。
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算/処理デバイスにダウンロードされ、もしくはネットワーク、例えばインターネット、ローカルエリアネットワーク、広域ネットワークおよび/または無線ネットワークを介して、外部コンピュータまたは外部記憶デバイスにダウンロードされることができる。
コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体を実行し、独立ソフトウェアパッケージとしてユーザのコンピュータ上で一部を実行し、ユーザのコンピュータ上および遠隔コンピュータ上で一部を実行し、または遠隔コンピュータもしくはサーバ上で全体を実行し得る。後者のシナリオの場合、遠隔コンピュータは、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または外部コンピュータに接続がなされ得る(例えばインターネットサービスプロバイダを使用してインターネットを介して)。いくつかの実施形態では、例えばプログラム可能論理回路機構、フィールドプログラマブルゲートアレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路機構は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機構を個別化することによってコンピュータ可読プログラム命令を実行し得る。
本発明の態様は、本明細書においては、本発明の実施形態による方法、装置(システム)およびコンピュータプログラム製品のフローチャートの例および/またはブロック図を参照して説明される。フローチャートの例および/またはブロック図の各ブロック、およびフローチャートの例および/またはブロック図におけるブロックの組合せは、コンピュータ可読プログラム命令によって実現できることは理解されよう。
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能および操作を示したものである。この点に関して、フローチャートまたはブロック図における各ブロックは、明記された論理機能を実現するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表し得る。いくつかの代替の実装では、ブロックに記されている機能は、図に記されている順序に依らずに生じ得る。例えば連続して示されている2つのブロックは、実際、実質的に並行に実行されてもよく、またはブロックは、時には、含まれている機能に応じて逆の順序で実行され得る。また、ブロック図および/またはフローチャートの例の各ブロック、およびブロック図および/またはフローチャートの例におけるブロックの組合せは、明記された機能または行為を実施し、または専用ハードウェアおよびコンピュータ命令の組合せを実施する専用ハードウェアベースシステムによって実現可能であることにも留意されよう。
ここで、本発明のいくつかの実施形態による、ベクトル処理を使用して入力データストリームをセグメント化するための例示的システムの概略図である図1を参照する。システム100は、入力データストリーム120を受け取り、および/または指定し、かつ、セグメント化されたデータストリーム130を出力するための入出力(I/O)インタフェース102と、入力データストリーム120をセグメント化してセグメント化されたデータストリーム130を生成するための複数の処理パイプライン106を備えるプロセッサ104と、プログラムストア108とを含む。入力データストリーム120は、1つまたは複数のフォーマット、例えばデータファイル、媒体ファイル、ストリーミングデータ等で受け取られ得る。入力データストリーム120は、複数のデータ項目、例えばストリームとしてシーケンスで配列され得るバイト、ワード、ダブルワードおよび/またはピクセルを含む。入出力インタフェース102は、1つまたは複数のインタフェース、例えばネットワークインタフェース、メモリインタフェースおよび/または記憶装置インタフェースを含み得る。入出力インタフェース102は、データストリーム120および/または130を取り出し、ならびに/またはメモリデバイスおよび/もしくは記憶デバイス等に記憶するために、例えばデータストリーム120および/もしくは130をネットワークを介して受け取り、ならびに/または伝送するために使用され得る。プロセッサ104は、1つまたは複数のコアを各々が有する1つまたは複数のプロセッサを含み得る。プロセッサ104は、複数の処理パイプライン106などのベクトル処理機能をさらに含む。処理パイプライン106は、それぞれデータを処理することができる複数の独立した実行パイプライン、例えば複数のプロセッサ、複数のコアおよび/またはベクトルプロセッサ、例えばSIMDプロセッサおよび/またはSIMDエンジンをサポートする。SIMDエンジンは、プロセッサ104の単一の命令で複数のデータ項目を並行に処理することができる複数の処理パイプライン106を備える。プログラムストア108は、1つまたは複数の非一時的持続性記憶デバイス、例えばハードドライブ、フラッシュアレイ等を含み得る。
本発明のいくつかの実施形態による、ベクトル処理を使用して入力データストリームをセグメント化するための例示的処理のフローチャートである図2をさらに参照する。入力データストリームをセグメント化するためのセグメント化処理200は、システム100などのシステムによって実施され得る。セグメント化処理200は、入力データストリーム120の部分シーケンスを並行に処理してセグメント化されたデータストリーム130を生成するために複数の処理パイプライン106を使用する。
セグメント化処理200は、例えば、プロセッサ104および/または処理パイプライン106によって実行される複数のプログラム命令を含む、プログラムストア108からのコーディネータ110および/またはワーカー112などの1つまたは複数のソフトウェアモジュールによって実施され得る。任意選択で、ワーカー112は、処理パイプライン106と共に埋め込まれた1つまたは複数のマイクロコードモジュールを含んでよく、マイクロコードモジュールは、処理パイプライン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が入出力インタフェース102から入力データストリーム120を受け取ることから開始する。
ベクトル処理を使用した同時セグメント化処理を説明する前に、ローリングシーケンスおよびローリングハッシュを使用したセグメント化処理が最初に説明される。
ここで、入力データストリームをセグメント化するためのローリングハッシュ値を計算する例示的処理の概略図である図3Aおよび図3Bを参照する。入力データストリーム120は、複数のデータ項目、例えばバイト、ワード、ダブルワード、ピクセル等を含む入力データストリーム120に対してシフトするローリングシーケンスを適用することによって処理される。ローリングシーケンスは、データストリーム120の開始で始まる入力データストリーム120に対してシフトされ、また、入力データストリーム120の終了に向かってシフトされる。ローリングシーケンスは、セグメントが識別され、かつ、指定されるまでシフトされる。セグメントが指定されると、後続するシーケンスがその前の指定済みセグメントの終了から始まり、かつ、それぞれのローリングシーケンスが入力データストリーム120の終了に向かってシフトされる。この処理は、セグメント化されたデータストリーム130を生成するために、入力データストリーム全体がセグメント化されるまで繰り返される。ローリングシーケンスに含まれるデータ項目の数は、1つまたは複数の態様、例えばセグメント化要件、データスループット、処理能力等に応じて変化し得る。例示的入力データストリーム120は、64個のデータ項目を各々が含むローリングシーケンスにより処理されるが、説明したようにデータ項目の数は異なり得る。ハッシュ値HK 312Aは、データ項目SK 310A0からSK-63 310A63を含むローリングシーケンス310Aに対して計算される。ローリングシーケンスは、次に、データ項目SK-63 310A63が省略され、かつ、新しいデータ項目SK+1 310B1が追加されるよう、左側へシフトされてローリングシーケンス310Bを画定する。新しいハッシュ値HK+1 312Bは、データ項目SK+1 310B1からSK-62 310A62を含むローリングシーケンス310Bに対して計算される。ローリングシーケンスは、以下で説明されるようにセグメントが検出されるまで、入力データストリーム120のシーケンスを通じてシフトされる。ハッシュ値HK 312AおよびHK+1 312B、ならびに入力データストリーム120の後続するシーケンスに対して計算される後続するハッシュ値は、多くのローリングハッシュ関数、例えばRabin−Karpローリングハッシュおよび/またはBuzhashのうちの1つを使用して計算され得る。
ハッシュ値HK 312AおよびHK+1 312Bなどのハッシュ値を、ローリングシーケンス310Aおよび310Bなどのそれらのそれぞれのローリングシーケンスから計算することは可能であるが、上記から、ハッシュ値HK 312AおよびHK+1 312Bの各々は、その前のハッシュ値、それぞれのシーケンスからの被省略データ項目、およびそれぞれのシーケンスへの被追加データ項目に依存することは明らかである。したがって各々のハッシュ値は、ローリングハッシュ値と見なされてもよく、また、その前のハッシュ値、被省略データ項目および被追加データ項目の値を使用して計算されてもよく、こうしてローリングシーケンス310Aおよび310Bなどのそれぞれのローリングシーケンス全体の冗長で複雑な演算を回避する。
ここで、入力データストリームをセグメント化するためのローリングハッシュ値計算の例示的公式化である図3Cを参照する。入力ストリーム120などの例示的入力ストリームのシーケンスに適用されるローリングシーケンス310Bなどのそれぞれのローリングシーケンスに対するローリングハッシュ値HK+1 312Bなどのローリングハッシュ値は、ハッシュ値HK 312Aなどのその前のハッシュ値、被省略データ項目SK-63 310A63などの被省略データ項目、および被追加データ項目SK+1 310B1などの被追加データ項目の関数として計算され得る。
ハッシュ値HK 312AおよびHK+1 312Bなどのハッシュ値の各々は、シーケンスが「切断」される点を特定してセグメントを指定するために、1つまたは複数のセグメント化基準に対する整合性に対して比較される。1つまたは複数のセグメント化基準は、例えばハッシュ値の最後の12ビットが予め定義済みの値に等しいことをチェックすることなどの例えばデータパターンを定義し得る。これは、通常、平均的に4,096バイト毎に「切断」を生成することになる。当然、セグメントのサイズは可変であり、計算されたローリングハッシュ値が1つまたは複数のセグメント化基準に適合するシーケンス内の位置に依存する。最小サイズは、入力データストリーム120の処理されたシーケンスが、最小ブロックサイズから始まって「切断」まで大きくなるよう、複数の可変サイズセグメントの各々に対して予め定義され得る。最大サイズは、処理されたシーケンス中の「切断」点を特定する前に予め定義済みの最大サイズに到達すると、ハッシュ値が1つまたは複数のセグメント化基準に適合しない場合であってもセグメントが「切断」されるよう、複数の可変サイズセグメントの各々に対して予め定義され得る。
セグメント化処理は、セグメント化されたデータストリーム130などのセグメント化されたデータストリームを生成するために、入力データストリーム120の後続するシーケンスに対して、入力データストリーム120の終了まで継続する。
もう一度図2を参照する。204に示されているように、コーディネータ110は、入力ストリーム120などの入力ストリームの連続的なデータ項目のシーケンスに対して、ローリングシーケンス310Aおよび/または310Bなどのローリングシーケンスを適用する。コーディネータ110は、第1のシーケンスを選択して、入力データストリーム120の開始から始まって、入力データストリーム120の終了に向かって進行する。コーディネータ110は、処理されたシーケンスに対して、ローリングシーケンス310Aおよび310Bなどのローリングシーケンスをシフトさせる。上記で説明したように、ローリングシーケンスの各々に含まれるデータ項目の数、例えば32個、64個および/または128個は、セグメント化処理ならびに/または処理資源特性および/もしくは能力の1つまたは複数の態様に依存する。
206に示されているように、コーディネータ110は、ローリングシーケンスを複数の部分ローリングシーケンスに分割し、複数の部分ローリングシーケンスの各々は、処理パイプライン106のうちのそれぞれの1つによって各々が実行される複数のワーカー112のうちのそれぞれの1つによって並行に(concurrently)処理される。処理200がSIMDエンジンを有するプロセッサ104によって実施される場合、ワーカー112は、それぞれの部分ローリングシーケンスのデータをSIMDエンジンの処理パイプライン106の各々に割り当てるプロセッサ104によって実行される。部分ローリングシーケンスの数は、利用可能な処理パイプライン106の数、例えば4個、8個、16個、32個、64個および/または128個に適合するように設定される。部分ローリングシーケンスの各々は、ローリングシーケンス310Aおよび310Bなどのローリングシーケンスのサブセットの均等に間隔が隔てられたデータ項目を含む。例えばローリングシーケンス310Aおよび310Bは、処理パイプライン106などの4つの処理パイプラインを有するベクトルプロセッサ104、または4つの処理パイプライン106を有するSIMDエンジンを備えたベクトルプロセッサ104によって実行される4つのワーカー112に適合するために4つの部分ローリングシーケンスに分割される。ローリングシーケンス310Aおよび310Bの各々の部分ローリングシーケンスは、ローリングシーケンス310Aまたは310Bの4番目毎のデータ項目を含む。第1の部分ローリングシーケンスは、データ項目0、4、8…を含み、第2のデータサブストリームは、データ項目1、5、9…を含み、第3のデータサブストリームは、データ項目2、6、10…を含み、また、第4のデータサブストリームは、データ項目3、7、11…を含み得る。同様に、別の例として、ローリングシーケンス310Aおよび310Bが、処理パイプライン106などの8つの処理パイプラインおよび8つのSIMD処理パイプライン106を有するベクトルプロセッサ104によって実行される8つのワーカー112に適合するために8つの部分ローリングシーケンスに分割される場合、各々の部分ローリングシーケンスは、ローリングシーケンスのサブセットの8番目毎のデータ項目を含む。第1の部分ローリングシーケンスは、データ項目0、8、16…を含み、第2の部分ローリングシーケンスは、データ項目1、9、17…を含み、第3の部分ローリングシーケンスは、データ項目2、10、18…を含み、第4の部分ローリングシーケンスは、データ項目3、11、19…を含み、第5の部分ローリングシーケンスは、データ項目4、12、20…を含み、第6の部分ローリングシーケンスは、データ項目5、13、21…を含み、第7の部分ローリングシーケンスは、データ項目6、14、22…を含み、また、第8の部分ローリングシーケンスは、データ項目7、15、23を含んでもよく、以下同様である。同様に、コーディネータ110は、利用可能なワーカー112の数、すなわち利用可能な処理パイプライン106の数に適合するために、シーケンスを16個、32個、64個、128個、256個等に分割し得る。
複数の処理パイプライン106のうちのそれぞれの1つによって実行されるワーカー112の各々は、それぞれの部分ローリングシーケンスを処理して、それぞれの部分ローリングシーケンスに対する部分ローリングハッシュ値を計算する。ワーカー112は、多くのローリングハッシュ関数、例えばRabin−Karpローリングハッシュおよび/またはBuzhashのうちの1つを使用して部分ハッシュ値を計算し得る。複数のワーカー112は、すべての部分ローリングシーケンスが並行に処理されるよう、それらのそれぞれの部分ローリングシーケンスを並行に処理する。SIMDエンジンを有するプロセッサ104の場合、プロセッサ104によって実行されるワーカー112は、単一コマンド(命令)を開始して、それらのそれぞれの部分ローリングシーケンスの部分ローリングハッシュ値を並行に計算するよう、すべてのSIMDエンジン処理パイプライン106に命令する。
ここで、本発明のいくつかの実施形態による、ベクトル処理を使用して入力データストリームをセグメント化するための部分ローリングハッシュ値を計算する例示的処理の概略図である図4Aおよび図4Bを参照する。
図4Aに示されているように、コーディネータ110は、8つの処理パイプライン106を有する例示的ベクトルプロセッサ104に適合するために、ローリングシーケンス310Aなどのローリングシーケンスを8つの部分ローリングシーケンス410A0から410A7に分割する。コーディネータ110は、部分ローリングシーケンス410A0から410A7を8つのそれぞれのワーカー112に分配し得る。SIMDエンジンを有するプロセッサ104の場合、プロセッサ104によって実行される単一のワーカー112は、SIMDエンジン処理パイプライン106の各々に、部分ローリングシーケンス410A0〜410A7のうちのそれぞれの1つのデータを割り当てる。しかしながら、本明細書において上記で示したように、部分ローリングシーケンスの数は、ワーカー112および/または利用可能な処理パイプライン106の数に応じて異なり得る。部分ローリングシーケンス410A0から410A7の各々は、複数の処理パイプライン106のうちのそれぞれの1つによって実行されるそれぞれのワーカー112によって処理される。SIMDエンジンを有するプロセッサ104の場合、SIMDエンジン処理パイプライン106は、それぞれの部分ローリングシーケンス410A0〜410A7をワーカー112(プロセッサ104によって実行される)による単一命令で並行に処理する。
本明細書において提供される例示的処理200は、本明細書において以前に提供された例であって、ローリングシーケンス310Aなどのローリングシーケンスの各々が64個のデータ項目のサブセットを含み、したがってコーディネータ110がローリングシーケンス310Aを、8つのデータ項目を各々が含む8つの部分ローリングシーケンス410A0から410A7に分割する例に従う。したがって例示的部分ローリングシーケンス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-15 310A15、SK-23 310A23、SK-31 310A31、SK-39 310A39、SK-47 310A47、SK-55 310A55およびSK-63 310A63を含み、以下同様である。部分ローリングシーケンス410A0から410A7などの複数の部分ローリングシーケンスの各々は、それぞれ8つのデータ項目を含むが、データ項目の数は、1つまたは複数の態様、例えばセグメント化要件、ハッシュ関数タイプ、データスループット、プロセッサアーキテクチャ等に応じて変化し得ることがもう一度強調される。プロセッサアーキテクチャは、1つまたは複数の特性、例えばレジスタの幅、キャッシュ線幅、メモリインタフェース幅および/または速度、ネットワークインタフェース幅および/または速度、記憶媒体インタフェース幅および/または速度等を含み得る。
8つのワーカー112は、8つの部分ローリングシーケンス410A0から410A7を並行に処理して、それぞれの部分ローリングシーケンス410A0から410A7の各々に対する部分ローリングハッシュ値H’K 412A0からH’K-7 412A7などの部分ローリングハッシュ値を計算する。追加的におよび/または代替として、プロセッサ104がSIMDエンジンを含む場合、プロセッサ104によって実行されるワーカー112は、8つの部分ローリングシーケンス410A0から410A7を処理するように8つのSIMDエンジン処理パイプライン106に命令する。8つのSIMDエンジン処理パイプライン106は、部分ローリングシーケンス410A0〜410A7のうちのそれぞれの1つの各々に対する部分ローリングハッシュ値H’K 412A0からH’K-7 412A7を計算する。ワーカー112は、1つまたは複数のハッシュ関数、例えばRabin−KarpまたはBuzhashを使用して、部分ローリングハッシュ値H’K 412A0からH’K-7 412A7を計算し得る。
図4Bに示されているように、処理パイプライン106の各々は、その前のローリングシーケンス410A0〜410A7の各々の一番左側のデータ項目が省略され、かつ、新しいデータ項目が追加されるよう、部分ローリングシーケンスを右側へシフトさせて、部分ローリングシーケンス410B0から410B7を生成する。例えば部分ローリングシーケンス410B0は、データ項目SK-56 310A56が省略され、かつ、新しいデータ項目SK+8 310B8が追加される、シフトされた部分ローリングシーケンス410A0に対応している。同様に、部分ローリングシーケンス410B7は、データ項目SK-63 310A63が省略され、かつ、新しいデータ項目SK+1 310B1が追加される、シフトされた部分ローリングシーケンス410A7に対応している。
8つの処理パイプライン106は、それらのそれぞれの部分ローリングシーケンス410B0〜410B7を並行に処理して、それぞれの部分ローリングシーケンス410B0〜410B7の各々に対するハッシュ値H’K+8 412B0からH’K+1 412B7などの部分ハッシュ値を計算する。
ハッシュ値HK 312AおよびHK+1 312Bなどのハッシュ値と同様、部分ハッシュ値H’K 412A0〜H’K-7 412A7およびH’K+8 412B0〜H’K+1 412B7などの部分ハッシュ値の各々は、それらのそれぞれの部分シーケンス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+8 412B0〜H’K+1 412B7は、ローリングハッシュと見なされ得る。したがってワーカー112は、その前のそれぞれの部分ハッシュ値、それぞれの被省略データ項目およびそれぞれの被追加データ項目の値を使用して部分ハッシュ値H’K 412A0〜H’K-7 412A7を計算してもよく、こうしてそれぞれの部分ローリングシーケンス410A0〜410A7および/または410B0〜410B7の全体の冗長な演算を回避する。
ここで、本発明のいくつかの実施形態による、入力データストリームをセグメント化するための部分ローリングハッシュ値計算の例示的公式化である図4Cを参照する。それぞれの処理パイプライン106は、部分ローリングシーケンス410B7などのそれぞれの部分ローリングシーケンスに対する部分ローリングハッシュ値H’K+1 412B7などの部分ローリングハッシュ値を、部分ローリングハッシュ値H’K-7 412A7、被省略データ項目SK-63 310A63などの被省略データ項目、および被追加データ項目SK+1 310B1などの被追加データ項目などのその前の部分ローリングハッシュ値の関数として計算し得る。同様に、他の処理パイプライン106の各々は、同じ方法論を使用して部分ローリングハッシュ値H’K+2 412B6からH’K+8 412B0を計算し得る。
もう一度図2を参照する。208に示されているように、計算された部分ローリングハッシュ値の各々が、ローリングシーケンス310Aおよび310B(それぞれの部分ローリングシーケンスを各々が含む)などのローリングシーケンスを含む完全なシーケンスがセグメントとして指定され得るかどうかを決定するために、それぞれの1つまたは複数の部分セグメント化基準との整合性についてチェックされ、および/またはそれぞれの1つまたは複数の部分セグメント化基準を満たしている。部分ローリングハッシュ値H’K 412A0〜H’K-7 412A7および/またはH’K+8 412B0〜H’K+1 412B7などのそれぞれの部分ハッシュ値の各々は、シーケンスが「切断」され得る点を特定してセグメントを指定するために整合性がチェックされる。1つまたは複数の部分セグメント化基準は、例えば部分ローリングハッシュ値412が予め定義済みの値より大きい、および/または部分ローリングハッシュ値412内のビットの予め定義済みの数が予め定義済みの値に等しい、などのデータパターンを定義し得る。各々がそれぞれの部分セグメント化基準に適合する連続的な部分ハッシュ値の数は、平均セグメントサイズに影響を及ぼす。それらのそれぞれの部分セグメント化基準に適合するために要求される連続的な部分ハッシュ値の数は、許容される最大データセグメントサイズ、および/または所望のデータセグメントサイズに応じて変化し得る。
210に示されているように、部分ローリングハッシュ値がそれぞれの部分セグメント化基準に適合する場合、コーディネータ110は、ローリングシーケンスがシフトされる(また、部分ローリングシーケンスを含む)シーケンスを「切断」し、かつ、シーケンスをデータセグメントとして指定し得る。コーディネータ110は、シーケンスを「切断し」、かつ、それをセグメントとして指定するための1つまたは複数のセグメント化基準を使用してもよく、セグメント化基準は、1つまたは複数の部分セグメント化基準の組合せである。
当然、セグメントのサイズは可変であり、それぞれの計算された部分ローリングハッシュ値に対するそれぞれの1つまたは複数の部分セグメント化基準との整合性が確認されるシーケンス内の位置に依存する。通常、データ重複排除のためには、データセグメントの平均サイズは、例えば4キロバイト(KB)、6KBおよび/または8KBであってもよく、これらは、データセグメントを処理するオーバヘッドがセグメントの数に関して最適化されるよう、現在の処理、記憶および/またはネットワーク化スループットおよび性能と最も良く適合し得る。
任意選択で、最小サイズは、部分ローリングシーケンスが最小ブロックサイズから始まって「切断」まで大きくなるよう、複数の可変サイズセグメントの各々に対して予め定義され得る。典型的なセグメントサイズに基づいて、予め定義される最小サイズは、例えば2KBであり得る。
任意選択で、最大サイズは、「切断」点を特定する前に予め定義済みの最大サイズに到達すると、ハッシュ値が1つまたは複数のセグメント化基準に適合しない場合であってもセグメントが「切断」されるよう、複数の可変サイズセグメントの各々に対して予め定義され得る。典型的なセグメントサイズに基づいて、予め定義される最大サイズは、例えば16KBであり得る。
ここで、本発明のいくつかの実施形態による、部分セグメント化基準を使用して部分ローリングハッシュ値を制限する例示的処理の概略図である図5Aおよび図5Bを参照する。コーディネータ110は、ワーカー112が、複数の部分ローリングシーケンスのうちの1つと結合したそれらのそれぞれの部分ローリングハッシュ値の、それぞれの部分セグメント化基準との整合性を確認すると、セグメント化基準との整合性を確認し得る。プロセッサ104がSIMDエンジンを有している場合、プロセッサによって実行されるワーカー112は、それぞれSIMD処理パイプライン106のうちのそれぞれの1つによって計算された部分ローリングハッシュ値を収集し、かつ、部分ローリングハッシュ値をそれぞれの部分セグメント化基準に対して比較する。例えば部分ローリングシーケンス410A0〜410A7などのそれぞれの部分ローリングシーケンスの部分ローリングハッシュ値H’K 412A0〜H’K-7 412A7などの部分ローリングハッシュ値が、すべて、それぞれの部分セグメント化基準に適合する場合、コーディネータ110は、データ項目SK 310A0の点までのシーケンスをセグメントとして指定し得る。
図5Aに示されているように、QK 510Aは、部分セグメント化基準Q’K-7 510A7〜Q’K 510A0のセットの組合せであるセグメント化基準であり、「1」は、それぞれの部分ハッシュ値の、それぞれの部分セグメント化基準との整合性を示し、また、「0」は、それぞれの部分ハッシュ値のそれぞれの1または複数の部分セグメント化基準との非整合性を示す。例えば部分セグメント化基準Q’K-7 510A7は、部分ハッシュ値H’K-7 412A7の整合性を示している。部分セグメント化基準Q’K-5 510A5、Q’K-3 510A3およびQ’K-1 510A1は、それぞれの部分セグメント化基準に適合していないため、セグメント化基準QK 510A全体が満たされていない。
一方、図5Bに示されているように、すべての部分セグメント化基準Q’K-7 510A7〜Q’K 510A0は、それらのそれぞれの部分セグメント化基準に適合しており、したがってセグメント化基準QK 510A全体が満たされ、「切断」520が実施されて、それぞれの部分ローリングシーケンスを含むローリングシーケンスを含むシーケンスをセグメントとして指定する。
任意選択で、コーディネータ110は、連続するローリングシーケンス、例えばその前のローリングシーケンスおよび/または後続するローリングシーケンスの連続的な部分ローリングハッシュ値の、それぞれの部分セグメント化基準との整合性をチェックする。それぞれの部分セグメント化基準に適合するために必要な連続的な部分ハッシュ値の数は、部分ローリングハッシュ値の数を超え得る(この数は、当然、部分ローリングシーケンスの数および処理パイプライン106の数である)。したがってローリングシーケンスのセグメント化基準との整合性は、連続する部分ローリングシーケンスの部分ハッシュ値の整合性の関数である。上記で説明したように、連続的な適合する部分ローリングハッシュ値の数は平均セグメントサイズに影響を及ぼすため、部分セグメント化基準との整合性がチェックされる連続的な部分ローリングハッシュ値の数は、必要な、および/または所望の典型的なデータセグメントサイズに適合するように設定され得る。本明細書において提供されている例は、8つの連続的な部分ローリングハッシュ値の、それぞれの部分セグメント化基準との整合性を提供しているが、データセグメントの必要な/所望の典型的なサイズに応じて、連続的な部分ローリングハッシュ値の他の数も使用され得る。
ローリングシーケンス310Aおよび/または310Bなどの元のローリングシーケンスの整合性を確認することと比較すると、シーケンスをセグメント化するための分解能および/または細分性が増すため、部分ローリングシーケンスの2つの連続するグループの連続的な部分ハッシュ値の整合性をチェックすることにより、コーディネータは追加利点を提供し得る。
ここで、本発明のいくつかの実施形態による、部分セグメント化基準を使用して部分ローリングハッシュ値を制限する例示的処理の概略図である図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がそれぞれの部分セグメント化基準に適合しているわけではないため、満たされていない。さらに、すべてがそれらのそれぞれの部分セグメント化基準に適合している2つの後続するセグメント化基準QK 510AおよびQK+8 510Bには、部分セグメント化基準のシーケンスは存在せず、したがって対応するシーケンスは、セグメント境界または「切断」点が指定され得ない。
一方、図5Dに示されているように、コーディネータ110は、8つの連続的な部分セグメント化基準Q’K+6 510B2からQ’K+13 510C3のセットが、すべて、それらのそれぞれの部分セグメント化基準に適合していることを確認してもよく、したがってコーディネータは、「切断」520を挿入して、対応するシーケンスをセグメントとして指定してもよく、シーケンスは、ローリングシーケンス510C3(これを含む)までのデータ項目を含む。
コーディネータ110は、次に、入力データストリーム120のシーケンス内の後続するセグメントの特定に進行してもよく、後続するシーケンスは、その前に検出されたセグメントの終了から始まる。
もう一度図2を参照する。決定点である212に示されているように、入力データストリーム120の終了に到達したことをコーディネータ110が検出する場合、処理200は214へ分岐される。コーディネータ110が、入力データストリーム120が追加データ項目を含むことを検出する場合、コーディネータ110は、204へ分岐して、入力データストリーム120の後続するシーケンスのためにセグメント化処理を繰り返し得る。コーディネータ110は、入力データストリーム120の終了に到達するまでステップ204から212を反復し、セグメント化されたデータストリーム130を生成する。
214に示されているように、入力データストリーム120に対するセグメント化処理200が終了すると、コーディネータ110は、セグメント化されたデータストリーム130を例えば入出力インタフェース102を使用して出力し得る。
セグメント化に引き続いて、コーディネータ110は、複数のアプリケーションのうちの1つまたは複数、例えばデータ重複排除のために使用されるべく、セグメント化されたデータストリームを出力し得る。
本発明の様々な実施形態の説明は、例示を目的として提供されたものであり、網羅的であること、または開示された実施形態に限定されることは意図されていない。当業者には、説明された実施形態の範囲および精神を逸脱することなく、多くの修正および変更が明らかであろう。本明細書において使用されている専門用語は、実施形態の原理、実際的なアプリケーション、または市場で見出される技術に対する技術的な改善を最も良好に説明するために、または本明細書において開示されている実施形態についての他の当業者による理解を可能にするために選択された。
本出願からの成就後の特許権の存続期間の間、SIMDなどの多くの関連するベクトル処理技術が開発されることが期待され、SIMDという用語の範囲には、推測的にすべてのこのような新しい技術を含むことが意図されている。
本明細書において使用されているように、「約」という用語は±10%を意味している。
「備える」、「備えている」、「含む」、「含んでいる」、「有している」という用語およびそれらの同根語は、「含んでいるが、それには限定されない」を意味している。この用語は、「〜からなっている」および「本質的に〜からなっている」という用語を包含している。
「本質的に〜からなっている」という語句は、構成または方法は、追加要素および/またはステップを含み得るが、それは、追加要素および/またはステップが特許請求される構成または方法の基本的で、かつ、新規な特性を実質的に変えない場合のみであることを意味している。
本明細書において使用されているように、単数形の表現は、そうではないことを文脈が明確に示していない限り、複数の参照を含む。例えば「化合物」または「少なくとも1つの化合物」という用語は、その混合物を含む複数の化合物を含み得る。
「例示的」という語は、本明細書においては、「例、実例または例示として働く」ことを意味するべく使用されている。「例示的」として説明されている任意の実施形態は、必ずしも他の実施形態に優る好ましい、または有利なものとして解釈してはならず、および/または他の実施形態からの特徴の組込みを排除するものとして解釈してはならない。
「任意選択で」という語は、本明細書においては、「いくつかの実施形態では提供され、また、他の実施形態では提供されない」ことを意味するべく使用されている。本発明の任意の特定の実施形態は、このような特徴が競合しない限り、複数の「任意選択の」特徴を含み得る。
明確にするために個別の実施形態の文脈で説明されている本発明の特定の特徴は、単一の実施形態における組合せで提供されてもよいことを認識されたい。一方、簡潔にするために単一の実施形態の文脈で説明されている本発明の様々な特徴は、個別に、もしくは任意の適切な副組合せで、または適切である場合、本発明の任意の他の説明されている実施形態でも提供され得る。様々な実施形態の文脈で説明されている特定の特徴は、これらの要素なしには実施形態が動作しない限り、これらの実施形態の本質的な特徴と見なされるべきではない。

Claims (11)

  1. ベクトル処理を使用して入力データストリームをセグメント化するためのシステムであって、
    複数のセグメントからなるセグメント化されたデータストリームを生成するために、入力データストリーム全体を通して、以下のステップ、すなわち
    入力データストリームの連続的なデータ項目のシーケンスに対してローリングシーケンスを適用するステップであって、前記ローリングシーケンスは、前記シーケンスの連続的なデータ項目のサブセットを含む、ステップと、
    複数の部分ハッシュ値を並行に計算するステップであって、各々の部分ハッシュ値は、プロセッサの複数の処理パイプラインのうちの1つによって計算され、各々の部分ハッシュ値は、前記サブセットの均等に間隔が隔てられたデータ項目を各々が含む複数の部分ローリングシーケンスのうちのそれぞれの1つのためのものである、ステップと、
    前記複数の部分ハッシュ値の各々の、それぞれの少なくとも1つの部分セグメント化基準との整合性を決定するステップと、
    前記複数の部分ハッシュ値のうちの少なくともいくつかが前記それぞれの少なくとも1つの部分セグメント化基準に適合する場合、前記シーケンスを可変サイズセグメントとして指定するステップと
    を繰り返すように適合されたプロセッサ
    を備えることを特徴とするシステム。
  2. 前記プロセッサは、単一命令複数データSIMDプロセッサであることを特徴とする請求項1に記載のシステム。
  3. 前記プロセッサは、それぞれの以前の部分ローリングシーケンスのそれぞれの部分ハッシュ値、前記それぞれの部分ローリングシーケンスから省略される被省略データ項目、および前記それぞれの部分ローリングシーケンスに追加される被追加データ項目を使用して、前記複数の部分ハッシュ値の各々を部分ローリングハッシュ値として計算するように適合されることを特徴とする請求項1または2に記載のシステム。
  4. 前記プロセッサは、前記それぞれの少なくとも1つの部分セグメント化基準に適合する前記シーケンスの連続するサブセットに対して計算された連続的な適合する部分ハッシュ値の数が前記複数の部分ローリングシーケンスの数を超える場合、前記シーケンスを前記可変サイズセグメントとして指定するように適合されることを特徴とする請求項1乃至3のいずれかに記載のシステム。
  5. 前記シーケンスは、予め定義済みの最小個数の前記連続的なデータ項目を含むことを特徴とする請求項1乃至4のいずれかに記載のシステム。
  6. 前記プロセッサは、前記部分ハッシュ値の、前記それぞれの少なくとも1つの部分セグメント化基準との整合性を検出する前に、大きいシーケンスのサイズが予め定義済みの最大値を超える場合、前記複数のシーケンスのうちの少なくとも1つの大きいシーケンスを前記可変サイズセグメントとして指定するように適合されることを特徴とする請求項1乃至5のいずれかに記載のシステム。
  7. ベクトル処理を使用して入力データストリームをセグメント化するための方法であって、
    複数のセグメントからなるセグメント化されたデータストリームを生成するために、入力データストリーム全体を通して、以下のステップ、すなわち
    入力データストリームの連続的なデータ項目のシーケンスに対してローリングシーケンスを適用するステップであって、前記ローリングシーケンスは、前記シーケンスの連続的なデータ項目のサブセットを含む、ステップと、
    複数の部分ハッシュ値を並行に計算するステップであって、各々の部分ハッシュ値は、プロセッサの複数の処理パイプラインのうちの1つによって計算され、各々の部分ハッシュ値は、前記サブセットの均等に間隔が隔てられたデータ項目を各々が含む複数の部分ローリングシーケンスのうちのそれぞれの1つのためのものである、ステップと、
    前記複数の部分ハッシュ値の各々の、それぞれの少なくとも1つの部分セグメント化基準との整合性を決定するステップと、
    前記複数の部分ハッシュ値のうちの少なくともいくつかが前記それぞれの少なくとも1つの部分セグメント化基準に適合する場合、前記シーケンスを可変サイズセグメントとして指定するステップと
    を繰り返すように適合されたプロセッサを使用すること
    を含むことを特徴とする方法。
  8. 前記複数の部分ハッシュ値の各々は、それぞれの以前の部分ローリングシーケンスのそれぞれの部分ハッシュ値、前記それぞれの部分ローリングシーケンスから省略される被省略データ項目、および前記それぞれの部分ローリングシーケンスに追加される被追加データ項目を使用して、部分ローリングハッシュ値として計算されることを特徴とする請求項7に記載の方法。
  9. 前記シーケンスは、前記それぞれの少なくとも1つの部分セグメント化基準に適合する前記シーケンスの連続するサブセットに対して計算された連続的な適合する部分ハッシュ値の数が前記複数の部分ローリングシーケンスの数を超える場合、前記可変サイズセグメントとして指定されることを特徴とする請求項7または8に記載の方法。
  10. 前記シーケンスは、予め定義済みの最小個数の前記連続的なデータ項目を含むことを特徴とする請求項7乃至9のいずれかに記載の方法。
  11. 前記複数のシーケンスのうちの少なくとも1つの大きいシーケンスは、前記部分ハッシュ値の、前記それぞれの少なくとも1つの部分セグメント化基準との整合性を検出する前に、前記大きいシーケンスのサイズが予め定義済みの最大値を超える場合、前記可変サイズセグメントとして指定されることを特徴とする請求項7乃至10のいずれかに記載の方法。
JP2017539609A 2016-04-19 2016-04-19 セグメント化ハッシュ値計算のためのベクトル処理 Active JP6420489B2 (ja)

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 (3)

Publication Number Publication Date
JP2018517947A JP2018517947A (ja) 2018-07-05
JP2018517947A5 JP2018517947A5 (ja) 2018-10-11
JP6420489B2 true JP6420489B2 (ja) 2018-11-07

Family

ID=55809098

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017539609A Active JP6420489B2 (ja) 2016-04-19 2016-04-19 セグメント化ハッシュ値計算のためのベクトル処理

Country Status (6)

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

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
WO1996025801A1 (en) 1995-02-17 1996-08-22 Trustus Pty. Ltd. Method for partitioning a block of data into subblocks and for storing and communicating 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
CA2475267C (en) 2002-02-04 2014-08-05 Cataphora, Inc. A method and apparatus for sociological data mining
US8407428B2 (en) 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
US8504791B2 (en) 2007-01-26 2013-08-06 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory coprocessor
US8032508B2 (en) 2008-11-18 2011-10-04 Yahoo! Inc. System and method for URL based query for retrieving data related to a context
US8024317B2 (en) 2008-11-18 2011-09-20 Yahoo! Inc. System and method for deriving income from 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
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
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
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
CN103098015B (zh) 2010-09-30 2015-11-25 日本电气株式会社 存储系统
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
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
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
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
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
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
US8843489B2 (en) 2010-11-16 2014-09-23 Actifio, Inc. System and method for managing deduplicated copies of data using temporal relationships among copies
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
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 伊雷克托科学工业股份有限公司 用于特征化对象并监视制造过程的方法与设备
US8983915B2 (en) 2011-08-01 2015-03-17 Actifio, Inc. Successive data fingerprinting 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株式会社 積層セラミック電子部品
WO2013086040A2 (en) 2011-12-05 2013-06-13 Doyenz Incorporated Universal pluggable cloud disaster recovery system
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
AU2013277351A1 (en) 2012-06-18 2015-01-22 Actifio, Inc. Enhanced data management virtualization system
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
US9356574B2 (en) * 2012-11-20 2016-05-31 Karl L. Denninghoff 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
US9646067B2 (en) 2013-05-14 2017-05-09 Actifio, Inc. 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
WO2015074033A1 (en) 2013-11-18 2015-05-21 Madhav Mutalik Copy data techniques
US20150161194A1 (en) 2013-12-06 2015-06-11 Actifio, Inc. System and method for rapid estimation of data similarity
US20150227890A1 (en) 2014-02-07 2015-08-13 Kristin Kaye Bednarek Communications system and smart device apps supporting segmented order distributed distribution system
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
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
WO2016044403A1 (en) 2014-09-16 2016-03-24 Mutalik, Madhav Copy data techniques
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
US20170344559A1 (en) 2017-11-30
US10459961B2 (en) 2019-10-29
WO2017182063A1 (en) 2017-10-26
CN107534445A (zh) 2018-01-02
EP3726732B1 (en) 2024-07-31
SG11201704732PA (en) 2017-11-29
CN107534445B (zh) 2020-03-10
JP2018517947A (ja) 2018-07-05
EP3726732A1 (en) 2020-10-21

Similar Documents

Publication Publication Date Title
JP6537202B2 (ja) ベクトル処理を使用する並行セグメント化
US8533456B2 (en) Accelerating stream cipher operations using single and grid systems
US20160335024A1 (en) Assisting data deduplication through in-memory computation
JP6420489B2 (ja) セグメント化ハッシュ値計算のためのベクトル処理
US11144412B2 (en) Virtual machine image file synchronization using delta bitmaps and delta files
EP3376393A1 (en) Data storage method and apparatus
JP7494190B2 (ja) ファイルを更新するための技術
JP2012525633A5 (ja)
US9632720B2 (en) Data de-duplication
US10346256B1 (en) Client side cache for deduplication backup systems
CN107016053B (zh) 一种并行的数据差分方法
US20190146801A1 (en) General purpose data compression using simd engine
JP2012164130A (ja) データ分割プログラム
WO2019001021A1 (zh) 数据处理方法、装置、系统、服务器及计算机存储介质
US8775775B1 (en) Dynamic prefetch throttling for multi-controller systems
US10505739B2 (en) Prefix fingerprint
JP2018517947A5 (ja)
US11182342B2 (en) Identifying common file-segment sequences
US10901952B2 (en) Method for transferring a difference file
CN112181974B (zh) 标识信息分配方法、系统及存储设备
GB2524515A (en) Method to improve compression ratio for a compression engine
US9241046B2 (en) Methods and systems for speeding up data recovery
US11971857B2 (en) Adaptively providing uncompressed and compressed data chunks
NL2015248B1 (en) Method and system for managing client data replacement.
US20190073376A1 (en) Device-specific chunked hash size tuning

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180511

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180911

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181011

R150 Certificate of patent or registration of utility model

Ref document number: 6420489

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250