(57)【要約】【課題】データの圧縮効率を低下させずに、スループットを向上させる。【解決手段】実施形態のデータ処理装置は、分割部と、ハッシング部と、１以上のハッシュメモリと、アクセス部と、圧縮部とを備える。分割部は入力データを複数のブロックに分割する。ハッシング部はブロックからハッシュ値を算出する。１以上のハッシュメモリはブロックに基づく第１データを記憶する。アクセス部は、ハッシュ値によりハッシュメモリにアクセスし、ハッシュ値が示すハッシュメモリのアドレスに記憶されていた第１データのうち、一部の第１データを読み出した後、アドレスに、ハッシュ値が算出されたブロックに基づく第１データを書き込む。圧縮部は、入力データと、一部の第１データとに基づいて、入力データを圧縮データに圧縮する。【選択図】図１
2018046518.tif 000002
【特許請求の範囲】
【請求項１】
入力データを複数のブロックに分割する分割部と、
前記ブロックからハッシュ値を算出するハッシング部と、
前記ブロックに基づく第１データを記憶する１以上のハッシュメモリと、
前記ハッシュ値により前記ハッシュメモリにアクセスし、前記ハッシュ値が示す前記ハッシュメモリのアドレスに記憶されていた前記第１データのうち、一部の前記第１データを読み出した後、前記アドレスに、前記ハッシュ値が算出された前記ブロックに基づく第１データを書き込むアクセス部と、
前記入力データと、前記一部の第１データとに基づいて、前記入力データを圧縮データに圧縮する圧縮部と、
を備えるデータ処理装置。
【請求項２】
前記ブロックに基づく第１データは、複数の前記ブロックであり、
前記圧縮部は、前記入力データと、前記複数のブロックとを比較し、一致した部分のデータ量を削減することにより、前記入力データを圧縮データに圧縮する、
請求項１に記載のデータ処理装置。
【請求項３】
アドレスに、複数のブロックを記憶する１以上の辞書メモリを更に備え、
前記ブロックに基づく第１データは、前記複数のブロックが記憶される前記辞書メモリのアドレスであり、
前記アクセス部は、前記一部の第１データにより前記辞書メモリにアクセスして、前記複数のブロックを読み出し、
前記圧縮部は、前記入力データと、前記複数のブロックとを比較し、一致した部分のデータ量を削減することにより、前記入力データを圧縮データに圧縮する、
請求項１に記載のデータ処理装置。
【請求項４】
前記圧縮データと、前記ブロックに基づく第１データとから、前記入力データを復号する復号部、
を更に備える請求項１に記載のデータ処理装置。
【請求項５】
前記ハッシュメモリに記憶される前記第１データのアクセス位置を示すアドレスは、前記第１データの先頭を示すアドレスと、前記第１データに含まれるデータの位置を示すアドレスと、を含む、
請求項１に記載のデータ処理装置。
【請求項６】
入力データを複数のブロックに分割するステップと、
前記ブロックからハッシュ値を算出するステップと、
前記ブロックに基づく第１データを１以上のハッシュメモリに記憶するステップと、
前記ハッシュ値により前記ハッシュメモリにアクセスし、前記ハッシュ値が示す前記ハッシュメモリのアドレスに記憶されていた前記第１データのうち、一部の前記第１データを読み出した後、前記アドレスに、前記ハッシュ値が算出された前記ブロックに基づく第１データを書き込むステップと、
前記入力データと、前記一部の第１データとに基づいて、前記入力データを圧縮データに圧縮するステップと、
を含むデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はデータ処理装置及びデータ処理方法に関する。
【背景技術】
【０００２】
デジタルデータのロスレス圧縮方式として、圧縮対象のデータと辞書に保持されたデータとを比較し、データが一致した場合、一致したデータの辞書位置及び一致長等を利用して、データ量を削減する辞書式圧縮方式が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】ＵＳ２００６／０１０６８７０号公報
【特許文献２】特開２０１４−８２７６２号公報
【非特許文献】
【０００４】
【非特許文献１】Ｊ．Ｚｉｖ  ａｎｄ  Ａ．Ｌｅｍｐｅｌ，  “Ａ  Ｕｎｉｖｅｒｓａｌ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｓｅｑｕｅｎｔｉａｌ  Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ”，  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ，  Ｖｏｌ．２３，  Ｎｏ．３，  ＰＰ．３３７−３４３，１９７７．
【非特許文献２】Ｊ．Ｚｉｖ  ａｎｄ  Ａ．Ｌｅｍｐｅｌ，  “Ｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  Ｉｎｄｉｖｉｄｕａｌ  Ｓｅｑｕｅｎｃｅｓ  ｖｉａ  Ｖａｒｉａｂｌｅ−Ｒａｔｅ  Ｃｏｄｉｎｇ”，  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ，  Ｖｏｌ．２４，  Ｎｏ．５，  ＰＰ．５３０−６３６，１９７８．
【非特許文献３】Ｊ．Ａ．Ｓｔｏｒｅｒ  ａｎｄ  Ｔ．Ｇ．Ｓｚｙｍａｎｓｋｉ，  “Ｄａｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ  ｖｉａ  Ｔｅｘｔｕａｌ  Ｓｕｂｓｔｉｔｕｔｉｏｎ”，  Ｊｏｕｒｎａｌ  ｏｆ  ＡＣＭ，  Ｖｏｌ．２９，  Ｎｏ．４，  ＰＰ．９２８−９５１，１９８２．
【非特許文献４】Ｐ．Ｄｅｕｔｓｃｈ，  “Ｄｅｆｌａｔｅ  Ｃｏｍｐｒｅｓｓｉｏｎ  Ｄａｔａ  Ｆｏｒｍａｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．３”，ＲＦＣ１９５１，１９９６．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、データの圧縮効率を低下させずに、スループットを向上させることが難しかった。
【課題を解決するための手段】
【０００６】
実施形態のデータ処理装置は、分割部と、ハッシング部と、１以上のハッシュメモリと、アクセス部と、圧縮部とを備える。分割部は入力データを複数のブロックに分割する。ハッシング部は前記ブロックからハッシュ値を算出する。１以上のハッシュメモリは前記ブロックに基づく第１データを記憶する。アクセス部は、前記ハッシュ値により前記ハッシュメモリにアクセスし、前記ハッシュ値が示す前記ハッシュメモリのアドレスに記憶されていた前記第１データのうち、一部の前記第１データを読み出した後、前記アドレスに、前記ハッシュ値が算出された前記ブロックに基づく第１データを書き込む。圧縮部は、前記入力データと、前記一部の第１データとに基づいて、前記入力データを圧縮データに圧縮する。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態のデータ処理装置の構成の例を示す図。
【図２Ａ】第１実施形態の入力データの分割例１を示す図。
【図２Ｂ】第１実施形態の入力データの分割例２を示す図。
【図３】第１実施形態のメモリ構成の例を説明するための図。
【図４】第１実施形態のアクセス方法の例を説明するための図。
【図５】第１実施形態の辞書メモリの例を示す図。
【図６】第２実施形態のデータ処理装置の構成の例を示す図。
【図７】第２実施形態のメモリ構成の例を説明するための図。
【図８】第３実施形態のデータ処理装置の構成の例を示す図。
【図９】第３実施形態の復号部の処理の例を説明するための図。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、データ処理装置及びデータ処理方法の実施形態を詳細に説明する。
【０００９】
（第１実施形態）
はじめに第１実施形態のデータ処理装置の構成について説明する。
【００１０】
［データ処理装置の構成］
図１は第１実施形態のデータ処理装置１００の構成の例を示す図である。第１実施形態のデータ処理装置１００は、分割部１、ハッシング部２、アクセス部３、圧縮部４、ハッシュメモリ１１ａ、ハッシュメモリ１１ｂ及び辞書メモリ１２を備える。分割部１、ハッシング部２、アクセス部３及び圧縮部４は、例えばＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアにより実現される。
【００１１】
以下、ハッシュメモリ１１ａ及びハッシュメモリ１１ｂを区別しない場合は、単にハッシュメモリ１１という。
【００１２】
分割部１は、入力データを複数のブロックに分割する。入力データを複数のブロックに分割する方法は任意でよい。
【００１３】
＜分割方法の例＞
図２Ａは第１実施形態の入力データの分割例１を示す図である。図２Ａの分割例１は、Ｎバイトの入力データを、他のブロックと重複しない複数のブロックに分割する場合を示す。例えば分割部１は、Ｎバイトの入力データを、Ｎ／２バイトの２つのブロックに分割してもよい。また例えば、分割部１は、Ｎバイトの入力データを、Ｎ／４バイトの４つのブロックに分割してもよい。また例えば、分割部１は、Ｎバイトの入力データを、Ｎ／８バイトの８つのブロックに分割してもよい。なお分割部１は、分割数を１として、Ｎバイトの入力データを、そのまま出力してもよい。
【００１４】
図２Ｂは第１実施形態の入力データの分割例２を示す図である。図２Ｂの分割例２は、Ｎバイトの入力データを、他のブロックと重複する複数のブロックに分割する場合を示す。例えば分割部１は、Ｎバイトの入力データを、先頭から１バイトずつずらしながら、Ｍバイト（Ｍ＜Ｎ）のブロックに分割してもよい。
【００１５】
図１に戻り、分割部１は、上述のブロックをハッシング部２に入力する。
【００１６】
ハッシング部２は、分割部１からブロックを受け付けると、当該ブロックのハッシュ値を算出する。ハッシュ値の算出方法は任意でよい。ハッシング部２は、例えばブロックの先頭１バイトを、ハッシュ値としてもよい。また例えば、ハッシング部２は、ビット列により表されたブロックに含まれる１または０の数を、ハッシュ値としてもよい。また例えば、ハッシング部２は、その他のハッシュ生成アルゴリズムを使用して、ハッシュ値を算出してもよい。
【００１７】
ハッシング部２は、各ブロックのハッシュ値を、アクセス部３に入力する。
【００１８】
アクセス部３は、ハッシング部２から各ブロックのハッシュ値を受け付けると、ハッシュメモリ１１ａ、ハッシュメモリ１１ｂ及び辞書メモリ１２にアクセスする。アクセス部３の動作を説明する前に、第１実施形態のメモリ構成の例について説明する。
【００１９】
＜メモリ構成の例＞
図３は第１実施形態のメモリ構成の例を説明するための図である。第１実施形態のデータ処理装置１００は、２つのハッシュメモリ１１ａ及び１１ｂと、１つの辞書メモリ１２を備える。なおハッシュメモリ１１の数は任意でよい。同様に、辞書メモリ１２の数は任意でよい。
【００２０】
ハッシュメモリ１１のインデックスは、ハッシュ値である。またハッシュメモリ１１の格納データは、ブロックに基づく第１データ（中間データ）である。ブロックに基づく第１データは、ブロックから特定される任意のデータである。ブロックに基づく第１データは、例えば当該ブロックが記憶される辞書メモリ１２のアドレスである。
【００２１】
第１実施形態の説明では、ブロックに基づく第１データが、辞書メモリ１２に記憶される当該ブロックのアドレスである場合について説明する。
【００２２】
辞書メモリ１２は第２データを記憶する。第２データは、例えば連続する２つのブロックである。第２データは、圧縮部４による圧縮処理で、辞書データとして使用される。
【００２３】
図４は第１実施形態のアクセス方法の例を説明するための図である。まず図４中の記号について説明する。Ｋ（Ｘ）はブロックＸのハッシュ値を示す。またα（Ｘ）はブロックＸが記憶される辞書メモリ１２のアドレスを示す。
【００２４】
はじめに、アクセス部３が、ハッシング部２から、ブロックａのハッシュ値Ｋ（ａ）、ブロックｂのハッシュ値Ｋ（ｂ）、ブロックｃのハッシュ値Ｋ（ｃ）、及び、ブロックｄのハッシュ値Ｋ（ｄ）を受け付ける。すなわち図４の例では、入力データが、分割部１により４つのブロックに分割されている場合について説明する。
【００２５】
次に、アクセス部３は、ハッシュ値Ｋ（ａ）、Ｋ（ｂ）、Ｋ（ｃ）及びＫ（ｄ）をインデックスとして、ハッシュメモリ１１ａにアクセスする。そしてアクセス部３は、ハッシュ値が示すハッシュメモリ１１ａのアドレスに記憶されていた上述の第１データのうち、一部の第１データを読み出した後、当該アドレスに、当該ハッシュ値が算出されたブロックに基づく第１データを書き込む。
【００２６】
具体的には、図４の例では、アクセス部３は、ハッシュ値Ｋ（ａ）が示すハッシュメモリ１１ａのアドレスに記憶されていたα（ｗ）を読み出した後、当該アドレスにα（ａ）を書き込む。すなわちＫ（ａ）が示すアドレスに記憶されていたα（ｗ）は、α（ｗ）が読み出された後、α（ａ）に更新される。
【００２７】
また図４の例では、アクセス部３は、ハッシュ値Ｋ（ｂ）が示すハッシュメモリ１１ａのアドレスに記憶されていたα（ｘ）を読み出した後、当該アドレスにα（ｂ）を書き込む。すなわちＫ（ｂ）が示すアドレスに記憶されていたα（ｘ）は、α（ｘ）が読み出された後、α（ｂ）に更新される。
【００２８】
また図４の例では、アクセス部３は、ハッシュ値Ｋ（ｃ）が示すハッシュメモリ１１ａのアドレスにα（ｃ）を書き込む。すなわちＫ（ｃ）が示すアドレスに記憶されていたα（ｙ）は読み出されずに、α（ｃ）に更新される。
【００２９】
また図４の例では、アクセス部３は、ハッシュ値Ｋ（ｄ）が示すハッシュメモリ１１ａのアドレスにα（ｄ）を書き込む。すなわちＫ（ｄ）が示すアドレスに記憶されていたα（ｚ）は読み出されずに、α（ｄ）に更新される。
【００３０】
一方、図４の例では、ハッシュメモリ１１ｂの読出し及び更新は下記の動作となる。
【００３１】
アクセス部３は、ハッシュ値Ｋ（ａ）が示すハッシュメモリ１１ａのアドレスにα（ａ）を書き込む。すなわちＫ（ａ）が示すアドレスに記憶されていたα（ｗ）は読み出されずに、α（ａ）に更新される。
【００３２】
またアクセス部３は、ハッシュ値Ｋ（ｂ）が示すハッシュメモリ１１ａのアドレスにα（ｂ）を書き込む。すなわちＫ（ｂ）が示すアドレスに記憶されていたα（ｘ）は読み出されずに、α（ｂ）に更新される。
【００３３】
またアクセス部３は、ハッシュ値Ｋ（ｃ）が示すハッシュメモリ１１ａのアドレスに記憶されていたα（ｙ）を読み出した後、当該アドレスにα（ｃ）を書き込む。すなわちＫ（ｃ）が示すアドレスに記憶されていたα（ｙ）は、α（ｙ）が読み出された後、α（ｃ）に更新される。
【００３４】
またアクセス部３は、ハッシュ値Ｋ（ｄ）が示すハッシュメモリ１１ａのアドレスに記憶されていたα（ｄ）を読み出した後、当該アドレスにα（ｚ）を書き込む。すなわちＫ（ｄ）が示すアドレスに記憶されていたα（ｚ）は、α（ｚ）が読み出された後、α（ｄ）に更新される。
【００３５】
すなわちハッシュメモリ１１ｂの読出し回数は２回であり、ハッシュメモリ１１ｂの更新（書込み）回数は４回である。
【００３６】
アクセス部３は、ハッシュメモリ１１ａから読み出されたα（ｗ）及びα（ｘ）と、ハッシュメモリ１１ｂから読み出されたα（ｙ）及びα（ｚ）により、辞書メモリ１２にアクセスする。そしてアクセス部３は、辞書メモリ１２から第２データを読み出す。
【００３７】
またアクセス部３は、処理中の入力データ（分割部１により得られた複数のブロックデータ）を、第２データとして辞書メモリ１２に書き込む。なお、処理中の入力データが格納される辞書メモリ１２のアドレスは、ハッシュメモリ１１の更新の際に、第１データとして格納されるアドレスと対応させる必要がある。例えば、辞書メモリ１２の更新はアドレス位置をｋずつずらす方法により対応させてもよい。ｋは例えば１である。
【００３８】
ｋ＝１の場合、例えば第２データとして格納されるブロックａは、アドレスα（ａ）が示す辞書メモリのアクセス位置に書き込む。このとき、アドレスはα（ａ）＝α（ｐｒｅｖ）＋１である。なお、α（ｐｒｅｖ）は辞書メモリ１２が最後に書き込まれたアクセス位置である。すなわちこの場合は、直前に処理が完了した入力データのアクセス位置である。
【００３９】
また、例えば、ブロックａに続いてブロックｂ、ブロックｃ、ブロックｄを順に書き込む場合、アドレスは、α（ｂ）＝α（ａ）＋１、α（ｃ）＝α（ｂ）＋１、α（ｄ）＝α（ｃ）＋１である。
【００４０】
上述のように、ハッシュメモリ１１ａの読出し回数は２回であり、ハッシュメモリ１１ａの書込み回数は４回であるので、ハッシュメモリ１１ａのアクセス回数は合計６回である。すなわちアクセス部３が、ハッシュメモリ１１ａから第１データを読み出す回数と、ハッシュメモリ１１ａに第１データを書き込む回数は異なる。アクセス部３によるハッシュメモリ１１ａの書込み回数は４回なので、更新頻度は維持されており、辞書メモリ１２の検索性能を低下させない。
【００４１】
同様に、ハッシュメモリ１１ｂの読出し回数は２回であり、ハッシュメモリ１１ｂの書込み回数は４回であるので、ハッシュメモリ１１ｂのアクセス回数は合計６回である。すなわちアクセス部３が、ハッシュメモリ１１ｂから第１データを読み出す回数と、ハッシュメモリ１１ｂに第１データを書き込む回数と、は異なる。アクセス部３によるハッシュメモリ１１ｂの書込み回数は４回なので、更新頻度は維持されており、辞書メモリ１２の検索性能を低下させない。
【００４２】
また、ハッシュメモリ１１ａ及び１１ｂを並列に動作させることにより、例えば１つのハッシュメモリで読出しを４回、書込みを４回する従来のアクセス方法よりも、スループットを向上させることができる。
【００４３】
次に第１実施形態の辞書メモリ１２の例について説明する。
【００４４】
図５は第１実施形態の辞書メモリ１２の例を示す図である。アクセス部３は、分割部１により得られたブロックのデータ長よりも長いデータ長の第２データを、一度のアクセスで読み出す。図５の例は、上述の第２データとして、連続する２つのブロックを、辞書メモリ１２の１つのアドレスに記憶する場合を示す。すなわち図５の例では、第２データのデータ長は、ブロックのデータ長の２倍である。なお第２データのデータ長は、ブロックのデータ長の２倍に限られず、より長くしてもよい。
【００４５】
図５の例では、ブロックＡが記憶されるアドレスα（Ａ）＝０には、ブロックＡと、当該ブロックＡの次のブロックＢが記憶されている。またブロックＢが記憶されるアドレスα（Ｂ）＝１には、ブロックＢと、当該ブロックＢの次のブロックＣが記憶されている。またブロックＣが記憶されるアドレスα（Ｃ）＝２には、ブロックＣと、当該ブロックＣの次のブロックＤが記憶されている。
【００４６】
これにより、１つのアドレスに１つのブロックを記憶する従来の方法と比べて、一度のアクセスでより長いデータを取得できる。したがって、アクセス部３が、分割部１により得られたブロックのデータ長よりも長いデータ長を有する第２データを、従来の方法よりも少ないアクセス回数で、辞書メモリ１２から読み出すことができる。図５に示す辞書メモリ１２により、スループットを低下させずに圧縮効率を向上させることができる。なお第２データは、処理中の入力データとそれに続くデータでもよいし、処理中の入力データとそのデータから推察される何らかのデータでもよい。
【００４７】
なお辞書メモリ１２に記憶される第２データのアクセス位置を示すアドレスは、当該第２データの先頭を示すアドレスと、当該第２データに含まれるデータの位置を示すアドレスに分離できる。
【００４８】
図１に戻り、アクセス部３は、第２データを圧縮部４に入力する。アクセス部３は、例えば分割部１により入力データが４つのブロックに分割されていた場合、４つの第２データを圧縮部４に入力する。また、例えば分割部１により、入力データが４つのブロックに分割される場合と、８つに分割される場合とが同時に実行されてもよく、アクセス部３は複数の分割パターンの第２データを圧縮部４に入力してもよい。
【００４９】
圧縮部４は、アクセス部３から第２データ（例えば連続する複数のブロック）を受け付けると、当該第２データと、入力データとに基づいて、当該入力データを圧縮データに圧縮する。例えば圧縮部４は、入力データと、第２データとを比較し、一致した部分のデータ量を削減することにより、当該入力データを圧縮データに圧縮する。
【００５０】
記憶装置２００は、圧縮部４により圧縮された圧縮データを記憶する。なおデータ処理装置１００と記憶装置２００とでシステムを構成してもよい。
【００５１】
以上説明したように、第１実施形態のデータ処理装置１００では、アクセス部３が、ハッシュメモリ１１ａに記憶された第１データの読出しと更新とを、異なる回数で行う。同様に、アクセス部３は、ハッシュメモリ１１ｂに記憶された第１データの読出しと更新とを、異なる回数で行う。ハッシュメモリ１１ａ及びハッシュメモリ１１ｂは、並列に動作する。更に、アクセス部３は、辞書メモリ１２から、ブロックのデータ長よりも長いデータ長の第２のデータを１回のアクセスで読出す。またアクセス部３は、ブロックのデータ長よりも長いデータ長の第２のデータを１回のアクセスで、辞書メモリ１２に書き込む。
【００５２】
これにより第１実施形態のデータ処理装置１００によれば、ハッシュメモリ１１の並列処理による辞書メモリ１２の検索性能の低下を抑制することで、圧縮効率の低下を抑制できるとともに、ハッシュメモリ１１の並列処理による高スループットが期待できる。また、辞書メモリ１２のアクセス回数の増加を抑制しつつ、辞書メモリ１２からデータ長の長い第２データを取得できるので、圧縮効率を向上できる。
【００５３】
（第２実施形態）
次に第２実施形態について説明する。第２実施形態の説明では、第１実施形態と同様の説明については省略し、第１実施形態と異なる箇所について説明する。
【００５４】
［データ処理装置の構成］
図６は第２実施形態のデータ処理装置１００の構成の例を示す図である。第２実施形態のデータ処理装置１００は、分割部１、ハッシング部２、アクセス部３、圧縮部４及びハッシュメモリ１１を備える。すなわち第２実施形態のデータ処理装置１００では、メモリ構成が、第１実施形態のデータ処理装置１００と異なる。
【００５５】
第２実施形態の分割部１、ハッシング部２及び圧縮部４の説明は、第１実施形態の説明と同じなので省略する。第２実施形態の説明では、アクセス部３及びハッシュメモリ１１について説明する。
【００５６】
はじめに第２実施形態のメモリ構成の例について説明する。
【００５７】
＜メモリ構成の例＞
図７は第２実施形態のメモリ構成の例を説明するための図である。第２実施形態のデータ処理装置１００は、ハッシュメモリ１１を備える。
【００５８】
ハッシュメモリ１１のインデックスは、ハッシュ値である。またハッシュメモリ１１の格納データは、上述の第２データである。第２実施形態の第２データの説明は、第１実施形態と同じなので省略する。上述の第１実施形態では、辞書メモリ１２に記憶されていた第２データは、第２実施形態では、ハッシュメモリ１１に記憶される。
【００５９】
なおハッシュメモリ１１に記憶される第２データのアクセス位置を示すアドレスは、当該第２データの先頭を示すアドレスと、当該第２データに含まれるデータの位置を示すアドレスに分離できる。
【００６０】
アクセス部３は、ハッシュメモリ１１に記憶された第２データの読出し及び更新を行う。アクセス部３は、ハッシング部２から各ブロックのハッシュ値を受け付けると、当該ハッシュ値をインデックスとしてハッシュメモリ１１にアクセスする。そしてアクセス部３は、アクセスされた第２データの全てを読み出さずに、一部の第２データを読み出す。具体的には、アクセス部３は、ハッシュ値Ｋ（ａ）、Ｋ（ｂ）、Ｋ（ｃ）及びＫ（ｄ）によりハッシュメモリ１１にアクセスした場合、例えばハッシュ値Ｋ（ａ）及びＫ（ｂ）に記憶されていた第２データを読み出す。
【００６１】
次に、アクセス部３は、ハッシュ値に対応する処理中の入力データ（複数のブロックデータ）を書き込むことにより、ハッシュメモリ１１を更新する。具体的には、アクセス部３は、ハッシュ値Ｋ（ａ）、Ｋ（ｂ）、Ｋ（ｃ）及びＫ（ｄ）によりハッシュメモリ１１にアクセスした場合、Ｋ（ａ）が示すアドレスには、第２データとして、ブロックａ及びブロックｂを書き込み、Ｋ（ｂ）が示すアドレスには、第２データとして、ブロックｂ及びブロックｃを書き込み、Ｋ（ｃ）が示すアドレスには、第２データとして、ブロックｃ及びブロックｄを書き込み、Ｋ（ｄ）が示すアドレスには、第２データとして、ブロックｄ及びブロックｅを書き込む。
【００６２】
最後に、アクセス部３は、ハッシュメモリ１１から読み出された上述の一部の第２データを、圧縮部４に入力する。
【００６３】
以上説明したように、第２実施形態のデータ処理装置１００によれば、第１実施形態のデータ処理装置１００と同様の効果が得られる。
【００６４】
（第３実施形態）
次に第３実施形態について説明する。第３実施形態の説明では、第１実施形態と同様の説明については省略し、第１実施形態と異なる箇所について説明する。
【００６５】
［データ処理装置の構成］
図８は第３実施形態のデータ処理装置１００の構成の例を示す図である。第３実施形態のデータ処理装置１００は、分割部１、ハッシング部２、アクセス部３、圧縮部４、解析部５、復号部６、ハッシュメモリ１１ａ、ハッシュメモリ１１ｂ、辞書メモリ１２ａ及び辞書メモリ１２ｂを備える。すなわち第３実施形態のデータ処理装置１００では、第１実施形態のデータ処理装置１００の構成に、解析部５、復号部６及び辞書メモリ１２ｂが更に追加されている。分割部１、ハッシング部２、アクセス部３、圧縮部４、解析部５及び復号部６は、例えばＩＣ等のハードウェアにより実現される。辞書メモリ１２ｂは、圧縮データの復号に使用される。辞書メモリ１２ｂのメモリ構造及び格納データは、辞書メモリ１２ａのメモリ構造及び格納データと同じである。
【００６６】
第３実施形態の分割部１、ハッシング部２、アクセス部３、圧縮部４、ハッシュメモリ１１ａ、ハッシュメモリ１１ｂ及び辞書メモリ１２ａの説明は、第１実施形態の説明と同じなので省略する。第３実施形態の説明では、解析部５、復号部６及び辞書メモリ１２ｂについて説明する。
【００６７】
解析部５は圧縮データを解析することにより、解析結果を示す解析情報を取得する。解析情報は、例えば圧縮データと第２データ（辞書データ）との一致情報、及び、辞書メモリ１２ｂのアドレス等を含む。一致情報は、例えば圧縮データに含まれるデータと、辞書メモリ１２ｂに記憶された辞書データと、が一致するか否かの情報、及び、一致（または不一致）するデータ長を示す情報等を含む。また、辞書メモリ１２ｂのアドレスは、圧縮データに含まれるデータと一致する第２データのアクセス位置を示す。解析部５は、その他、可変長符号化や何らかの予測方式、例えば直前データとの差分値を用いた符号化により、入力データが圧縮されている場合は、当該圧縮データを復号（伸張）するために必要な情報も、解析情報として取得する。解析部５は解析情報を復号部６に入力する。
【００６８】
復号部６は、解析部５から解析情報を受け付けると、当該解析情報に基づいて圧縮データから復号データを生成する。なお復号データは、分割部１に入力された入力データと同じになる。
【００６９】
図９は第３実施形態の復号部６の処理の例を説明するための図である。復号部６は、辞書メモリ１２ｂに記憶された第２データの読出し及び更新をしながら、圧縮データを復号データに復号する。すなわち復号部６の復号処理（伸張処理）では、圧縮部４で入力データに行われた圧縮処理と、逆の処理を行う。具体的には、復号部６は、解析情報に含まれる辞書メモリ１２ｂのアドレスから、第２データを取得し、当該第２データを使用して圧縮データを復号する。なお復号部６は、辞書と不一致する場合やその他符号化方式によって圧縮された場合、もしくは、辞書一致とその他何らかの符号化方式が併用された場合は、必要な情報に基づいて、復号処理を行う。また復号部６は、既に復号されたブロックにより、辞書メモリ１２ｂを更新する。復号部６は、圧縮データの復号処理が終わると、復号データを出力する。
【００７０】
ここで、辞書メモリ１２ｂの１つのアドレスに記憶される第２データは、上述のブロックのデータ長よりも長いデータである。第２データは、例えばブロックのデータ長の２倍のデータ長を有する。これにより、１つのアドレスに、１つのブロックが記憶される場合に比べて、圧縮データを復号するための辞書メモリ１２ｂのアクセス回数をより少なくすることができるので、スループットが向上する。なお、辞書メモリ１２ｂに格納される第２データは、ブロックとそれに続くブロックでもよいし、ブロックと当該データから推察される何らかのデータでもよい。ただし、圧縮処理で使用された第２データと同様である必要がある。
【００７１】
以上説明したように、第３実施形態のデータ処理装置１００では、復号部６が、ブロックデータのデータ長より、データ長が長い第２データを、１回のアクセスで辞書メモリ１２ｂから取得する。これにより第３実施形態のデータ処理装置１００によれば、圧縮部４により生成された圧縮データを復号する復号処理のスループットを向上させることができる。
【００７２】
なお上述の第１〜第３実施形態のハッシュメモリ１１及び辞書メモリ１２には、入力データに即した何らかのデータが予め保持されていてもよい。
【００７３】
例えば第１実施形態のデータ処理装置１００では、統計的に出現頻度が高い第２データを予め辞書メモリ１２に保持し、当該辞書メモリ１２のアドレスを予めハッシュメモリ１１に保持しておいてもよい。例えば第２データが、２つのブロックを含む場合、先頭のブロックのハッシュ値が示すハッシュメモリ１１のアドレスに、先頭に当該ブロックを含む第２データのアクセス位置を示す辞書メモリ１２のアドレスが記憶される。この場合、ハッシュメモリ１１及び辞書メモリ１２は、更新されてもよいし更新されなくてもよい。
【００７４】
例えば、ハッシュメモリ１１及び辞書メモリ１２が更新される場合、ハッシュメモリ１１及び辞書メモリ１２が十分に更新されていない、圧縮処理の開始から間もない状況でも、入力データに含まれるデータと第２データ（辞書データ）との一致が期待できるので、入力データの圧縮が可能となる。
【００７５】
また、ハッシュメモリ１１及び辞書メモリ１２が更新されない場合、ハッシュメモリ１１及び辞書メモリ１２のアクセス回数を削減できるので、圧縮処理のスループットを向上できる。
【００７６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７７】
１  分割部
２  ハッシング部
３  アクセス部
４  圧縮部
５  解析部
６  復号部
１１  ハッシュメモリ
１２  辞書メモリ
１００  データ処理装置
【図１】
2018046518.tif 000003
【図２Ａ】
2018046518.tif 000004
【図２Ｂ】
2018046518.tif 000005
【図３】
2018046518.tif 000006
【図４】
2018046518.tif 000007
【図５】
2018046518.tif 000008
【図６】
2018046518.tif 000009
【図７】
2018046518.tif 000010
【図８】
2018046518.tif 000011
【図９】
2018046518.tif 000012