JP2018046518A - データ処理装置及びデータ処理方法 - Google Patents
データ処理装置及びデータ処理方法 Download PDFInfo
- Publication number
- JP2018046518A JP2018046518A JP2016182090A JP2016182090A JP2018046518A JP 2018046518 A JP2018046518 A JP 2018046518A JP 2016182090 A JP2016182090 A JP 2016182090A JP 2016182090 A JP2016182090 A JP 2016182090A JP 2018046518 A JP2018046518 A JP 2018046518A
- Authority
- JP
- Japan
- Prior art keywords
- data
- hash
- memory
- block
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】データの圧縮効率を低下させずに、スループットを向上させる。【解決手段】実施形態のデータ処理装置は、分割部と、ハッシング部と、1以上のハッシュメモリと、アクセス部と、圧縮部とを備える。分割部は入力データを複数のブロックに分割する。ハッシング部はブロックからハッシュ値を算出する。1以上のハッシュメモリはブロックに基づく第1データを記憶する。アクセス部は、ハッシュ値によりハッシュメモリにアクセスし、ハッシュ値が示すハッシュメモリのアドレスに記憶されていた第1データのうち、一部の第1データを読み出した後、アドレスに、ハッシュ値が算出されたブロックに基づく第1データを書き込む。圧縮部は、入力データと、一部の第1データとに基づいて、入力データを圧縮データに圧縮する。【選択図】図1
Description
本発明の実施形態はデータ処理装置及びデータ処理方法に関する。
デジタルデータのロスレス圧縮方式として、圧縮対象のデータと辞書に保持されたデータとを比較し、データが一致した場合、一致したデータの辞書位置及び一致長等を利用して、データ量を削減する辞書式圧縮方式が知られている。
J.Ziv and A.Lempel, "A Universal Algorithm for Sequential Data Compression", IEEE Transactions on Information Theory, Vol.23, No.3, PP.337−343,1977.
J.Ziv and A.Lempel, "Compression of Individual Sequences via Variable−Rate Coding", IEEE Transactions on Information Theory, Vol.24, No.5, PP.530−636,1978.
J.A.Storer and T.G.Szymanski, "Data Compression via Textual Substitution", Journal of ACM, Vol.29, No.4, PP.928−951,1982.
P.Deutsch, "Deflate Compression Data Format Specification version 1.3",RFC1951,1996.
しかしながら、従来の技術では、データの圧縮効率を低下させずに、スループットを向上させることが難しかった。
実施形態のデータ処理装置は、分割部と、ハッシング部と、1以上のハッシュメモリと、アクセス部と、圧縮部とを備える。分割部は入力データを複数のブロックに分割する。ハッシング部は前記ブロックからハッシュ値を算出する。1以上のハッシュメモリは前記ブロックに基づく第1データを記憶する。アクセス部は、前記ハッシュ値により前記ハッシュメモリにアクセスし、前記ハッシュ値が示す前記ハッシュメモリのアドレスに記憶されていた前記第1データのうち、一部の前記第1データを読み出した後、前記アドレスに、前記ハッシュ値が算出された前記ブロックに基づく第1データを書き込む。圧縮部は、前記入力データと、前記一部の第1データとに基づいて、前記入力データを圧縮データに圧縮する。
以下に添付図面を参照して、データ処理装置及びデータ処理方法の実施形態を詳細に説明する。
(第1実施形態)
はじめに第1実施形態のデータ処理装置の構成について説明する。
はじめに第1実施形態のデータ処理装置の構成について説明する。
[データ処理装置の構成]
図1は第1実施形態のデータ処理装置100の構成の例を示す図である。第1実施形態のデータ処理装置100は、分割部1、ハッシング部2、アクセス部3、圧縮部4、ハッシュメモリ11a、ハッシュメモリ11b及び辞書メモリ12を備える。分割部1、ハッシング部2、アクセス部3及び圧縮部4は、例えばIC(Integrated Circuit)等のハードウェアにより実現される。
図1は第1実施形態のデータ処理装置100の構成の例を示す図である。第1実施形態のデータ処理装置100は、分割部1、ハッシング部2、アクセス部3、圧縮部4、ハッシュメモリ11a、ハッシュメモリ11b及び辞書メモリ12を備える。分割部1、ハッシング部2、アクセス部3及び圧縮部4は、例えばIC(Integrated Circuit)等のハードウェアにより実現される。
以下、ハッシュメモリ11a及びハッシュメモリ11bを区別しない場合は、単にハッシュメモリ11という。
分割部1は、入力データを複数のブロックに分割する。入力データを複数のブロックに分割する方法は任意でよい。
<分割方法の例>
図2Aは第1実施形態の入力データの分割例1を示す図である。図2Aの分割例1は、Nバイトの入力データを、他のブロックと重複しない複数のブロックに分割する場合を示す。例えば分割部1は、Nバイトの入力データを、N/2バイトの2つのブロックに分割してもよい。また例えば、分割部1は、Nバイトの入力データを、N/4バイトの4つのブロックに分割してもよい。また例えば、分割部1は、Nバイトの入力データを、N/8バイトの8つのブロックに分割してもよい。なお分割部1は、分割数を1として、Nバイトの入力データを、そのまま出力してもよい。
図2Aは第1実施形態の入力データの分割例1を示す図である。図2Aの分割例1は、Nバイトの入力データを、他のブロックと重複しない複数のブロックに分割する場合を示す。例えば分割部1は、Nバイトの入力データを、N/2バイトの2つのブロックに分割してもよい。また例えば、分割部1は、Nバイトの入力データを、N/4バイトの4つのブロックに分割してもよい。また例えば、分割部1は、Nバイトの入力データを、N/8バイトの8つのブロックに分割してもよい。なお分割部1は、分割数を1として、Nバイトの入力データを、そのまま出力してもよい。
図2Bは第1実施形態の入力データの分割例2を示す図である。図2Bの分割例2は、Nバイトの入力データを、他のブロックと重複する複数のブロックに分割する場合を示す。例えば分割部1は、Nバイトの入力データを、先頭から1バイトずつずらしながら、Mバイト(M<N)のブロックに分割してもよい。
図1に戻り、分割部1は、上述のブロックをハッシング部2に入力する。
ハッシング部2は、分割部1からブロックを受け付けると、当該ブロックのハッシュ値を算出する。ハッシュ値の算出方法は任意でよい。ハッシング部2は、例えばブロックの先頭1バイトを、ハッシュ値としてもよい。また例えば、ハッシング部2は、ビット列により表されたブロックに含まれる1または0の数を、ハッシュ値としてもよい。また例えば、ハッシング部2は、その他のハッシュ生成アルゴリズムを使用して、ハッシュ値を算出してもよい。
ハッシング部2は、各ブロックのハッシュ値を、アクセス部3に入力する。
アクセス部3は、ハッシング部2から各ブロックのハッシュ値を受け付けると、ハッシュメモリ11a、ハッシュメモリ11b及び辞書メモリ12にアクセスする。アクセス部3の動作を説明する前に、第1実施形態のメモリ構成の例について説明する。
<メモリ構成の例>
図3は第1実施形態のメモリ構成の例を説明するための図である。第1実施形態のデータ処理装置100は、2つのハッシュメモリ11a及び11bと、1つの辞書メモリ12を備える。なおハッシュメモリ11の数は任意でよい。同様に、辞書メモリ12の数は任意でよい。
図3は第1実施形態のメモリ構成の例を説明するための図である。第1実施形態のデータ処理装置100は、2つのハッシュメモリ11a及び11bと、1つの辞書メモリ12を備える。なおハッシュメモリ11の数は任意でよい。同様に、辞書メモリ12の数は任意でよい。
ハッシュメモリ11のインデックスは、ハッシュ値である。またハッシュメモリ11の格納データは、ブロックに基づく第1データ(中間データ)である。ブロックに基づく第1データは、ブロックから特定される任意のデータである。ブロックに基づく第1データは、例えば当該ブロックが記憶される辞書メモリ12のアドレスである。
第1実施形態の説明では、ブロックに基づく第1データが、辞書メモリ12に記憶される当該ブロックのアドレスである場合について説明する。
辞書メモリ12は第2データを記憶する。第2データは、例えば連続する2つのブロックである。第2データは、圧縮部4による圧縮処理で、辞書データとして使用される。
図4は第1実施形態のアクセス方法の例を説明するための図である。まず図4中の記号について説明する。K(X)はブロックXのハッシュ値を示す。またα(X)はブロックXが記憶される辞書メモリ12のアドレスを示す。
はじめに、アクセス部3が、ハッシング部2から、ブロックaのハッシュ値K(a)、ブロックbのハッシュ値K(b)、ブロックcのハッシュ値K(c)、及び、ブロックdのハッシュ値K(d)を受け付ける。すなわち図4の例では、入力データが、分割部1により4つのブロックに分割されている場合について説明する。
次に、アクセス部3は、ハッシュ値K(a)、K(b)、K(c)及びK(d)をインデックスとして、ハッシュメモリ11aにアクセスする。そしてアクセス部3は、ハッシュ値が示すハッシュメモリ11aのアドレスに記憶されていた上述の第1データのうち、一部の第1データを読み出した後、当該アドレスに、当該ハッシュ値が算出されたブロックに基づく第1データを書き込む。
具体的には、図4の例では、アクセス部3は、ハッシュ値K(a)が示すハッシュメモリ11aのアドレスに記憶されていたα(w)を読み出した後、当該アドレスにα(a)を書き込む。すなわちK(a)が示すアドレスに記憶されていたα(w)は、α(w)が読み出された後、α(a)に更新される。
また図4の例では、アクセス部3は、ハッシュ値K(b)が示すハッシュメモリ11aのアドレスに記憶されていたα(x)を読み出した後、当該アドレスにα(b)を書き込む。すなわちK(b)が示すアドレスに記憶されていたα(x)は、α(x)が読み出された後、α(b)に更新される。
また図4の例では、アクセス部3は、ハッシュ値K(c)が示すハッシュメモリ11aのアドレスにα(c)を書き込む。すなわちK(c)が示すアドレスに記憶されていたα(y)は読み出されずに、α(c)に更新される。
また図4の例では、アクセス部3は、ハッシュ値K(d)が示すハッシュメモリ11aのアドレスにα(d)を書き込む。すなわちK(d)が示すアドレスに記憶されていたα(z)は読み出されずに、α(d)に更新される。
一方、図4の例では、ハッシュメモリ11bの読出し及び更新は下記の動作となる。
アクセス部3は、ハッシュ値K(a)が示すハッシュメモリ11aのアドレスにα(a)を書き込む。すなわちK(a)が示すアドレスに記憶されていたα(w)は読み出されずに、α(a)に更新される。
またアクセス部3は、ハッシュ値K(b)が示すハッシュメモリ11aのアドレスにα(b)を書き込む。すなわちK(b)が示すアドレスに記憶されていたα(x)は読み出されずに、α(b)に更新される。
またアクセス部3は、ハッシュ値K(c)が示すハッシュメモリ11aのアドレスに記憶されていたα(y)を読み出した後、当該アドレスにα(c)を書き込む。すなわちK(c)が示すアドレスに記憶されていたα(y)は、α(y)が読み出された後、α(c)に更新される。
またアクセス部3は、ハッシュ値K(d)が示すハッシュメモリ11aのアドレスに記憶されていたα(d)を読み出した後、当該アドレスにα(z)を書き込む。すなわちK(d)が示すアドレスに記憶されていたα(z)は、α(z)が読み出された後、α(d)に更新される。
すなわちハッシュメモリ11bの読出し回数は2回であり、ハッシュメモリ11bの更新(書込み)回数は4回である。
アクセス部3は、ハッシュメモリ11aから読み出されたα(w)及びα(x)と、ハッシュメモリ11bから読み出されたα(y)及びα(z)により、辞書メモリ12にアクセスする。そしてアクセス部3は、辞書メモリ12から第2データを読み出す。
またアクセス部3は、処理中の入力データ(分割部1により得られた複数のブロックデータ)を、第2データとして辞書メモリ12に書き込む。なお、処理中の入力データが格納される辞書メモリ12のアドレスは、ハッシュメモリ11の更新の際に、第1データとして格納されるアドレスと対応させる必要がある。例えば、辞書メモリ12の更新はアドレス位置をkずつずらす方法により対応させてもよい。kは例えば1である。
k=1の場合、例えば第2データとして格納されるブロックaは、アドレスα(a)が示す辞書メモリのアクセス位置に書き込む。このとき、アドレスはα(a)=α(prev)+1である。なお、α(prev)は辞書メモリ12が最後に書き込まれたアクセス位置である。すなわちこの場合は、直前に処理が完了した入力データのアクセス位置である。
また、例えば、ブロックaに続いてブロックb、ブロックc、ブロックdを順に書き込む場合、アドレスは、α(b)=α(a)+1、α(c)=α(b)+1、α(d)=α(c)+1である。
上述のように、ハッシュメモリ11aの読出し回数は2回であり、ハッシュメモリ11aの書込み回数は4回であるので、ハッシュメモリ11aのアクセス回数は合計6回である。すなわちアクセス部3が、ハッシュメモリ11aから第1データを読み出す回数と、ハッシュメモリ11aに第1データを書き込む回数は異なる。アクセス部3によるハッシュメモリ11aの書込み回数は4回なので、更新頻度は維持されており、辞書メモリ12の検索性能を低下させない。
同様に、ハッシュメモリ11bの読出し回数は2回であり、ハッシュメモリ11bの書込み回数は4回であるので、ハッシュメモリ11bのアクセス回数は合計6回である。すなわちアクセス部3が、ハッシュメモリ11bから第1データを読み出す回数と、ハッシュメモリ11bに第1データを書き込む回数と、は異なる。アクセス部3によるハッシュメモリ11bの書込み回数は4回なので、更新頻度は維持されており、辞書メモリ12の検索性能を低下させない。
また、ハッシュメモリ11a及び11bを並列に動作させることにより、例えば1つのハッシュメモリで読出しを4回、書込みを4回する従来のアクセス方法よりも、スループットを向上させることができる。
次に第1実施形態の辞書メモリ12の例について説明する。
図5は第1実施形態の辞書メモリ12の例を示す図である。アクセス部3は、分割部1により得られたブロックのデータ長よりも長いデータ長の第2データを、一度のアクセスで読み出す。図5の例は、上述の第2データとして、連続する2つのブロックを、辞書メモリ12の1つのアドレスに記憶する場合を示す。すなわち図5の例では、第2データのデータ長は、ブロックのデータ長の2倍である。なお第2データのデータ長は、ブロックのデータ長の2倍に限られず、より長くしてもよい。
図5の例では、ブロックAが記憶されるアドレスα(A)=0には、ブロックAと、当該ブロックAの次のブロックBが記憶されている。またブロックBが記憶されるアドレスα(B)=1には、ブロックBと、当該ブロックBの次のブロックCが記憶されている。またブロックCが記憶されるアドレスα(C)=2には、ブロックCと、当該ブロックCの次のブロックDが記憶されている。
これにより、1つのアドレスに1つのブロックを記憶する従来の方法と比べて、一度のアクセスでより長いデータを取得できる。したがって、アクセス部3が、分割部1により得られたブロックのデータ長よりも長いデータ長を有する第2データを、従来の方法よりも少ないアクセス回数で、辞書メモリ12から読み出すことができる。図5に示す辞書メモリ12により、スループットを低下させずに圧縮効率を向上させることができる。なお第2データは、処理中の入力データとそれに続くデータでもよいし、処理中の入力データとそのデータから推察される何らかのデータでもよい。
なお辞書メモリ12に記憶される第2データのアクセス位置を示すアドレスは、当該第2データの先頭を示すアドレスと、当該第2データに含まれるデータの位置を示すアドレスに分離できる。
図1に戻り、アクセス部3は、第2データを圧縮部4に入力する。アクセス部3は、例えば分割部1により入力データが4つのブロックに分割されていた場合、4つの第2データを圧縮部4に入力する。また、例えば分割部1により、入力データが4つのブロックに分割される場合と、8つに分割される場合とが同時に実行されてもよく、アクセス部3は複数の分割パターンの第2データを圧縮部4に入力してもよい。
圧縮部4は、アクセス部3から第2データ(例えば連続する複数のブロック)を受け付けると、当該第2データと、入力データとに基づいて、当該入力データを圧縮データに圧縮する。例えば圧縮部4は、入力データと、第2データとを比較し、一致した部分のデータ量を削減することにより、当該入力データを圧縮データに圧縮する。
記憶装置200は、圧縮部4により圧縮された圧縮データを記憶する。なおデータ処理装置100と記憶装置200とでシステムを構成してもよい。
以上説明したように、第1実施形態のデータ処理装置100では、アクセス部3が、ハッシュメモリ11aに記憶された第1データの読出しと更新とを、異なる回数で行う。同様に、アクセス部3は、ハッシュメモリ11bに記憶された第1データの読出しと更新とを、異なる回数で行う。ハッシュメモリ11a及びハッシュメモリ11bは、並列に動作する。更に、アクセス部3は、辞書メモリ12から、ブロックのデータ長よりも長いデータ長の第2のデータを1回のアクセスで読出す。またアクセス部3は、ブロックのデータ長よりも長いデータ長の第2のデータを1回のアクセスで、辞書メモリ12に書き込む。
これにより第1実施形態のデータ処理装置100によれば、ハッシュメモリ11の並列処理による辞書メモリ12の検索性能の低下を抑制することで、圧縮効率の低下を抑制できるとともに、ハッシュメモリ11の並列処理による高スループットが期待できる。また、辞書メモリ12のアクセス回数の増加を抑制しつつ、辞書メモリ12からデータ長の長い第2データを取得できるので、圧縮効率を向上できる。
(第2実施形態)
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
[データ処理装置の構成]
図6は第2実施形態のデータ処理装置100の構成の例を示す図である。第2実施形態のデータ処理装置100は、分割部1、ハッシング部2、アクセス部3、圧縮部4及びハッシュメモリ11を備える。すなわち第2実施形態のデータ処理装置100では、メモリ構成が、第1実施形態のデータ処理装置100と異なる。
図6は第2実施形態のデータ処理装置100の構成の例を示す図である。第2実施形態のデータ処理装置100は、分割部1、ハッシング部2、アクセス部3、圧縮部4及びハッシュメモリ11を備える。すなわち第2実施形態のデータ処理装置100では、メモリ構成が、第1実施形態のデータ処理装置100と異なる。
第2実施形態の分割部1、ハッシング部2及び圧縮部4の説明は、第1実施形態の説明と同じなので省略する。第2実施形態の説明では、アクセス部3及びハッシュメモリ11について説明する。
はじめに第2実施形態のメモリ構成の例について説明する。
<メモリ構成の例>
図7は第2実施形態のメモリ構成の例を説明するための図である。第2実施形態のデータ処理装置100は、ハッシュメモリ11を備える。
図7は第2実施形態のメモリ構成の例を説明するための図である。第2実施形態のデータ処理装置100は、ハッシュメモリ11を備える。
ハッシュメモリ11のインデックスは、ハッシュ値である。またハッシュメモリ11の格納データは、上述の第2データである。第2実施形態の第2データの説明は、第1実施形態と同じなので省略する。上述の第1実施形態では、辞書メモリ12に記憶されていた第2データは、第2実施形態では、ハッシュメモリ11に記憶される。
なおハッシュメモリ11に記憶される第2データのアクセス位置を示すアドレスは、当該第2データの先頭を示すアドレスと、当該第2データに含まれるデータの位置を示すアドレスに分離できる。
アクセス部3は、ハッシュメモリ11に記憶された第2データの読出し及び更新を行う。アクセス部3は、ハッシング部2から各ブロックのハッシュ値を受け付けると、当該ハッシュ値をインデックスとしてハッシュメモリ11にアクセスする。そしてアクセス部3は、アクセスされた第2データの全てを読み出さずに、一部の第2データを読み出す。具体的には、アクセス部3は、ハッシュ値K(a)、K(b)、K(c)及びK(d)によりハッシュメモリ11にアクセスした場合、例えばハッシュ値K(a)及びK(b)に記憶されていた第2データを読み出す。
次に、アクセス部3は、ハッシュ値に対応する処理中の入力データ(複数のブロックデータ)を書き込むことにより、ハッシュメモリ11を更新する。具体的には、アクセス部3は、ハッシュ値K(a)、K(b)、K(c)及びK(d)によりハッシュメモリ11にアクセスした場合、K(a)が示すアドレスには、第2データとして、ブロックa及びブロックbを書き込み、K(b)が示すアドレスには、第2データとして、ブロックb及びブロックcを書き込み、K(c)が示すアドレスには、第2データとして、ブロックc及びブロックdを書き込み、K(d)が示すアドレスには、第2データとして、ブロックd及びブロックeを書き込む。
最後に、アクセス部3は、ハッシュメモリ11から読み出された上述の一部の第2データを、圧縮部4に入力する。
以上説明したように、第2実施形態のデータ処理装置100によれば、第1実施形態のデータ処理装置100と同様の効果が得られる。
(第3実施形態)
次に第3実施形態について説明する。第3実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
次に第3実施形態について説明する。第3実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
[データ処理装置の構成]
図8は第3実施形態のデータ処理装置100の構成の例を示す図である。第3実施形態のデータ処理装置100は、分割部1、ハッシング部2、アクセス部3、圧縮部4、解析部5、復号部6、ハッシュメモリ11a、ハッシュメモリ11b、辞書メモリ12a及び辞書メモリ12bを備える。すなわち第3実施形態のデータ処理装置100では、第1実施形態のデータ処理装置100の構成に、解析部5、復号部6及び辞書メモリ12bが更に追加されている。分割部1、ハッシング部2、アクセス部3、圧縮部4、解析部5及び復号部6は、例えばIC等のハードウェアにより実現される。辞書メモリ12bは、圧縮データの復号に使用される。辞書メモリ12bのメモリ構造及び格納データは、辞書メモリ12aのメモリ構造及び格納データと同じである。
図8は第3実施形態のデータ処理装置100の構成の例を示す図である。第3実施形態のデータ処理装置100は、分割部1、ハッシング部2、アクセス部3、圧縮部4、解析部5、復号部6、ハッシュメモリ11a、ハッシュメモリ11b、辞書メモリ12a及び辞書メモリ12bを備える。すなわち第3実施形態のデータ処理装置100では、第1実施形態のデータ処理装置100の構成に、解析部5、復号部6及び辞書メモリ12bが更に追加されている。分割部1、ハッシング部2、アクセス部3、圧縮部4、解析部5及び復号部6は、例えばIC等のハードウェアにより実現される。辞書メモリ12bは、圧縮データの復号に使用される。辞書メモリ12bのメモリ構造及び格納データは、辞書メモリ12aのメモリ構造及び格納データと同じである。
第3実施形態の分割部1、ハッシング部2、アクセス部3、圧縮部4、ハッシュメモリ11a、ハッシュメモリ11b及び辞書メモリ12aの説明は、第1実施形態の説明と同じなので省略する。第3実施形態の説明では、解析部5、復号部6及び辞書メモリ12bについて説明する。
解析部5は圧縮データを解析することにより、解析結果を示す解析情報を取得する。解析情報は、例えば圧縮データと第2データ(辞書データ)との一致情報、及び、辞書メモリ12bのアドレス等を含む。一致情報は、例えば圧縮データに含まれるデータと、辞書メモリ12bに記憶された辞書データと、が一致するか否かの情報、及び、一致(または不一致)するデータ長を示す情報等を含む。また、辞書メモリ12bのアドレスは、圧縮データに含まれるデータと一致する第2データのアクセス位置を示す。解析部5は、その他、可変長符号化や何らかの予測方式、例えば直前データとの差分値を用いた符号化により、入力データが圧縮されている場合は、当該圧縮データを復号(伸張)するために必要な情報も、解析情報として取得する。解析部5は解析情報を復号部6に入力する。
復号部6は、解析部5から解析情報を受け付けると、当該解析情報に基づいて圧縮データから復号データを生成する。なお復号データは、分割部1に入力された入力データと同じになる。
図9は第3実施形態の復号部6の処理の例を説明するための図である。復号部6は、辞書メモリ12bに記憶された第2データの読出し及び更新をしながら、圧縮データを復号データに復号する。すなわち復号部6の復号処理(伸張処理)では、圧縮部4で入力データに行われた圧縮処理と、逆の処理を行う。具体的には、復号部6は、解析情報に含まれる辞書メモリ12bのアドレスから、第2データを取得し、当該第2データを使用して圧縮データを復号する。なお復号部6は、辞書と不一致する場合やその他符号化方式によって圧縮された場合、もしくは、辞書一致とその他何らかの符号化方式が併用された場合は、必要な情報に基づいて、復号処理を行う。また復号部6は、既に復号されたブロックにより、辞書メモリ12bを更新する。復号部6は、圧縮データの復号処理が終わると、復号データを出力する。
ここで、辞書メモリ12bの1つのアドレスに記憶される第2データは、上述のブロックのデータ長よりも長いデータである。第2データは、例えばブロックのデータ長の2倍のデータ長を有する。これにより、1つのアドレスに、1つのブロックが記憶される場合に比べて、圧縮データを復号するための辞書メモリ12bのアクセス回数をより少なくすることができるので、スループットが向上する。なお、辞書メモリ12bに格納される第2データは、ブロックとそれに続くブロックでもよいし、ブロックと当該データから推察される何らかのデータでもよい。ただし、圧縮処理で使用された第2データと同様である必要がある。
以上説明したように、第3実施形態のデータ処理装置100では、復号部6が、ブロックデータのデータ長より、データ長が長い第2データを、1回のアクセスで辞書メモリ12bから取得する。これにより第3実施形態のデータ処理装置100によれば、圧縮部4により生成された圧縮データを復号する復号処理のスループットを向上させることができる。
なお上述の第1〜第3実施形態のハッシュメモリ11及び辞書メモリ12には、入力データに即した何らかのデータが予め保持されていてもよい。
例えば第1実施形態のデータ処理装置100では、統計的に出現頻度が高い第2データを予め辞書メモリ12に保持し、当該辞書メモリ12のアドレスを予めハッシュメモリ11に保持しておいてもよい。例えば第2データが、2つのブロックを含む場合、先頭のブロックのハッシュ値が示すハッシュメモリ11のアドレスに、先頭に当該ブロックを含む第2データのアクセス位置を示す辞書メモリ12のアドレスが記憶される。この場合、ハッシュメモリ11及び辞書メモリ12は、更新されてもよいし更新されなくてもよい。
例えば、ハッシュメモリ11及び辞書メモリ12が更新される場合、ハッシュメモリ11及び辞書メモリ12が十分に更新されていない、圧縮処理の開始から間もない状況でも、入力データに含まれるデータと第2データ(辞書データ)との一致が期待できるので、入力データの圧縮が可能となる。
また、ハッシュメモリ11及び辞書メモリ12が更新されない場合、ハッシュメモリ11及び辞書メモリ12のアクセス回数を削減できるので、圧縮処理のスループットを向上できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 分割部
2 ハッシング部
3 アクセス部
4 圧縮部
5 解析部
6 復号部
11 ハッシュメモリ
12 辞書メモリ
100 データ処理装置
2 ハッシング部
3 アクセス部
4 圧縮部
5 解析部
6 復号部
11 ハッシュメモリ
12 辞書メモリ
100 データ処理装置
Claims (6)
- 入力データを複数のブロックに分割する分割部と、
前記ブロックからハッシュ値を算出するハッシング部と、
前記ブロックに基づく第1データを記憶する1以上のハッシュメモリと、
前記ハッシュ値により前記ハッシュメモリにアクセスし、前記ハッシュ値が示す前記ハッシュメモリのアドレスに記憶されていた前記第1データのうち、一部の前記第1データを読み出した後、前記アドレスに、前記ハッシュ値が算出された前記ブロックに基づく第1データを書き込むアクセス部と、
前記入力データと、前記一部の第1データとに基づいて、前記入力データを圧縮データに圧縮する圧縮部と、
を備えるデータ処理装置。 - 前記ブロックに基づく第1データは、複数の前記ブロックであり、
前記圧縮部は、前記入力データと、前記複数のブロックとを比較し、一致した部分のデータ量を削減することにより、前記入力データを圧縮データに圧縮する、
請求項1に記載のデータ処理装置。 - アドレスに、複数のブロックを記憶する1以上の辞書メモリを更に備え、
前記ブロックに基づく第1データは、前記複数のブロックが記憶される前記辞書メモリのアドレスであり、
前記アクセス部は、前記一部の第1データにより前記辞書メモリにアクセスして、前記複数のブロックを読み出し、
前記圧縮部は、前記入力データと、前記複数のブロックとを比較し、一致した部分のデータ量を削減することにより、前記入力データを圧縮データに圧縮する、
請求項1に記載のデータ処理装置。 - 前記圧縮データと、前記ブロックに基づく第1データとから、前記入力データを復号する復号部、
を更に備える請求項1に記載のデータ処理装置。 - 前記ハッシュメモリに記憶される前記第1データのアクセス位置を示すアドレスは、前記第1データの先頭を示すアドレスと、前記第1データに含まれるデータの位置を示すアドレスと、を含む、
請求項1に記載のデータ処理装置。 - 入力データを複数のブロックに分割するステップと、
前記ブロックからハッシュ値を算出するステップと、
前記ブロックに基づく第1データを1以上のハッシュメモリに記憶するステップと、
前記ハッシュ値により前記ハッシュメモリにアクセスし、前記ハッシュ値が示す前記ハッシュメモリのアドレスに記憶されていた前記第1データのうち、一部の前記第1データを読み出した後、前記アドレスに、前記ハッシュ値が算出された前記ブロックに基づく第1データを書き込むステップと、
前記入力データと、前記一部の第1データとに基づいて、前記入力データを圧縮データに圧縮するステップと、
を含むデータ処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016182090A JP2018046518A (ja) | 2016-09-16 | 2016-09-16 | データ処理装置及びデータ処理方法 |
US15/443,133 US20180081596A1 (en) | 2016-09-16 | 2017-02-27 | Data processing apparatus and data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016182090A JP2018046518A (ja) | 2016-09-16 | 2016-09-16 | データ処理装置及びデータ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018046518A true JP2018046518A (ja) | 2018-03-22 |
Family
ID=61618094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016182090A Pending JP2018046518A (ja) | 2016-09-16 | 2016-09-16 | データ処理装置及びデータ処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180081596A1 (ja) |
JP (1) | JP2018046518A (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060106870A1 (en) * | 2004-11-16 | 2006-05-18 | International Business Machines Corporation | Data compression using a nested hierarchy of fixed phrase length dictionaries |
US8458144B2 (en) * | 2009-10-22 | 2013-06-04 | Oracle America, Inc. | Data deduplication method using file system constructs |
US9075532B1 (en) * | 2010-04-23 | 2015-07-07 | Symantec Corporation | Self-referential deduplication |
-
2016
- 2016-09-16 JP JP2016182090A patent/JP2018046518A/ja active Pending
-
2017
- 2017-02-27 US US15/443,133 patent/US20180081596A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20180081596A1 (en) | 2018-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101841103B1 (ko) | Vlsi 효율적인 허프만 인코딩 장치 및 방법 | |
JP5895545B2 (ja) | プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体 | |
US8988257B2 (en) | Data compression utilizing variable and limited length codes | |
US8400335B2 (en) | Using variable length code tables to compress an input data stream to a compressed output data stream | |
CN103326732A (zh) | 压缩数据的方法、解压数据的方法、编码器和解码器 | |
JP5008106B2 (ja) | データ圧縮装置および方法 | |
US8669889B2 (en) | Using variable length code tables to compress an input data stream to a compressed output data stream | |
US8106799B1 (en) | Data compression and decompression using parallel processing | |
US9590655B2 (en) | Scalable high-bandwidth architecture for lossless compression | |
JP2009531976A (ja) | セットアソシアティブキャッシュマッピング技術に基づく高速データ圧縮 | |
KR101866151B1 (ko) | 적응형 레이트 압축 해시 프로세싱 디바이스 | |
US20190052284A1 (en) | Data compression apparatus, data decompression apparatus, data compression program, data decompression program, data compression method, and data decompression method | |
JP2021527376A (ja) | データ圧縮 | |
WO2013102818A1 (en) | Generating a code alphabet of symbols to generate codewords for words used with a program | |
JP2017073615A (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
JP6540308B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
US9391636B2 (en) | Method and system | |
CN111061722A (zh) | 一种数据压缩、数据解压缩方法、装置及设备 | |
US9479195B2 (en) | Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device | |
US9455742B2 (en) | Compression ratio for a compression engine | |
US20100265110A1 (en) | Conversion of bit lengths into codes | |
JP2016052046A (ja) | 圧縮装置、伸長装置およびストレージ装置 | |
JP2018046518A (ja) | データ処理装置及びデータ処理方法 | |
JP2016170750A (ja) | データ管理プログラム、情報処理装置およびデータ管理方法 | |
JP6363581B2 (ja) | 入力ブロックのスキャンと同時にソート済みシンボル・リストを維持するハードウェア・データ圧縮器 |