(57)【特許請求の範囲】
【請求項１】
圧縮すべきデータの以前の履歴を格納した辞書ウィンドウと前記圧縮すべきデータとを比較し、データの一致が検出された場合に一致データの一致長と前記辞書ウィンドウにおける相対位置とをコード化して圧縮データを生成するデータ圧縮方法において、
（ａ）前記辞書ウィンドウ中のｍ組（ｍ＝２，３，．．．）のｎ個のデータ（ｎ＝２，３，．．．）と前記圧縮すべきデータ中のｎ個のデータとを実質的に同時に比較し、
（ｂ）前記段階（ａ）の比較結果において、最長の一致を検出したデータをコード化して前記圧縮データを生成する各段階
を有することを特徴とするデータ圧縮方法。
【請求項２】
前記段階（ａ）は、ｎ個のデータの一致が検出された場合、前記ｎの値をｎ１（ｎ１＝３，４，．．）に増加させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとを実質的に同時に比較する段階を含むことを特徴とする請求項１記載のデータ圧縮方法。
【請求項３】
前記段階（ａ）は、ｎ個のデータの一致が検出された場合、前記ｍの値をｍ１（ｍ１＝１，２，．．．）に減少させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ１組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとを実質的に同時に比較する段階をさらに含むことを特徴とする請求項２記載のデータ圧縮方法。
【請求項４】
前記段階（ａ）は、ｎ個のデータの一致が検出された場合、前記ｎの値をｉ×ｎに増加させかつ前記ｍの値をｍ／ｉに減少させて（ｉ＝２，３，．．．）、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ／ｉ組のｉ×ｎ個のデータと前記圧縮すべきデータ中のｉ×ｎ個のデータとを実質的に同時に比較する段階をさらに含むことを特徴とする請求項３記載のデータ圧縮方法。
【請求項５】
前記データ圧縮方法は、Ｌａｍｐｅｌ／Ｚｉｖが提案したＬＺ７７方式の改良方式であり、前記ｎ個のデータはｎ個のバイトであり、前記辞書ウィンドウ中のｍ組のｎ個のデータは、１バイトずつシフトされたｍ組のｎ個のデータであることを特徴とする請求項１乃至４のうちいずれか１項記載のデータ圧縮方法。
【請求項６】
圧縮すべきデータの以前の履歴を格納した辞書ウィンドウと前記圧縮すべきデータとを比較する比較部と、データの一致が検出された場合に一致データの一致長と前記辞書ウィンドウにおける相対位置とをコード化して圧縮データを生成する処理部とを有するデータ圧縮装置において、
前記比較部は、前記辞書ウィンドウ中のｍ組（ｍ＝２，３，．．．）のｎ個のデータ（ｎ＝２，３，．．．）と前記圧縮すべきデータ中のｎ個のデータとを実質的に同時に比較するｍ個の比較回路を有し、
前記処理部は、前記比較部の比較結果において、最長の一致を検出したデータをコード化して前記圧縮データを生成する手段を有することを特徴とするデータ圧縮装置。
【請求項７】
前記比較部は、ｎ個のデータの一致が検出された場合、前記ｎの値をｎ１（ｎ１＝３，４，．．）に増加させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとを実質的に同時に比較する手段を含むことを特徴とする請求項６記載のデータ圧縮装置。
【請求項８】
前記比較部は、ｎ個のデータの一致が検出された場合、前記ｍの値をｍ１（ｍ１＝１，２，．．．）に減少させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ１組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとを実質的に同時に比較する手段をさらに含むことを特徴とする請求項７記載のデータ圧縮装置。
【請求項９】
前記比較部は、ｎ個のデータの一致が検出された場合、前記ｎの値をｉ×ｎに増加させかつ前記ｍの値をｍ／ｉに減少させて（ｉ＝２，３，．．．）、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ／ｉ組のｉ×ｎ個のデータと前記圧縮すべきデータ中のｉ×ｎ個のデータとを実質的に同時に比較する手段をさらに含むことを特徴とする請求項８記載のデータ圧縮装置。
【請求項１０】
前記データ圧縮装置は、Ｌａｍｐｅｌ／Ｚｉｖが提案したＬＺ７７方式用改良装置であり、前記ｎ個のデータはｎ個のバイトであり、前記辞書ウィンドウ中のｍ組のｎ個のデータは、１バイトずつシフトされたｍ組のｎ個のデータであることを特徴とする請求項６乃至９のうちいずれか１項記載のデータ圧縮装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ圧縮方法及び装置に関し、特に、コンピュータ等で用いられる元のデータを完全に復元できる可逆的なデータ圧縮方法及び装置に関する。
【０００２】
【従来の技術】
コンピュータの利用方法が高度化するにつれて、コンピュータにおいて扱うプログラムやデータ量が急速に増大してきている。これに対応するため、コンピュータの記憶媒体や伝送の速度も向上している。また、さらなる伝送速度の向上や、取扱いの容易化のため、データをより小さいサイズに圧縮するデータ圧縮の技法が適用されてきている。
【０００３】
データ圧縮のためには、主に２つの方法があり、１つは、情報をその実効的な効果を損なわない程度に変形させて冗長性を削減する方法であり、音声や画像のような感性に依存する情報に適用される。他の１つは、データの繰り返し等の冗長性を利用して元データが完全に復元できるように（可逆的に）圧縮する方法であり、主に、数値・文書データやプログラムコードのような正確なデジタルデータを必要とする情報に適用される。
【０００４】
後者の可逆的なデータ圧縮方法としては、Ｌａｍｐｅｌ／Ｚｉｖの考案によるＬＺ７７方式が広く使用されている。ＬＺ７７方式は、先行データの一部を直接辞書として利用している。また、ＬＺ７７方式を改良した、先行データから辞書を作成するＬＺ７８方式やＬＺＷ方式も多く使用されている。
【０００５】
以下に、ＬＺ７７データ圧縮方式について説明する。
このＬＺ７７方式では、圧縮するデータが先行するデータの一定範囲と比較され、最も一致長が長いデータ列が検出された場合、先行データにおけるそのデータ列の相対位置と一致長の情報によって圧縮データが生成される。
【０００６】
図５は、一般的なＬＺ７７データ圧縮方式の動作例を示す図である。（Ａ）は、圧縮の対象となるデータ（入力データ）とそれと比較される先行データの一定範囲（スライディングウィンドウ）とを示し、（Ｂ）は、非圧縮データを示し、（Ｃ）は、圧縮データを示す。入力データと先行データとは一般的には連続的なものである。
【０００７】
図５に示すＬＺ７７方式の例では、圧縮の対象となる入力データ（最大一致長）は、１７バイト、ウィンドウサイズは、５１２バイトに設定されている。ＬＺ７７方式では、先行データの一定の範囲は、スライディングする辞書（スライディング辞書）として扱われる。入力データが圧縮される場合、まず、入力データがスライディング辞書内のデータと比較される。この比較は、一般的には後で述べる２進木（Ｂｉｎａｒｙ  ｔｒｅｅ）検索法を用いて行われる。
【０００８】
上述の比較動作では、１７バイトの入力データにスライディング辞書中の先頭からできるだけ長く一致している場所が検出され、その場所情報（相対バイト位置）と一致長（一致バイト数）とが、１４ビットの圧縮データにコード化される。
【０００９】
圧縮データの先頭の１ビットは、Ｐｒｅｆｉｘなるデータ種別を示しす。このＰｒｅｆｉｘが“１”のときは、次の１３ビットは圧縮データ（圧縮Ｔｏｋｅｎ）であることを表し、Ｐｒｅｆｉｘが“０”のときは、次の８ビットは１バイトの非圧縮データであることを表す。
【００１０】
圧縮データ中のＰｒｅｆｉｘの次の９ビットは、入力データと一致したデータのスライディング辞書中の相対バイト位置（アドレス）を示している。上記の例では、スライディング辞書は５１２（＝２9 ）バイトに設定されているので、相対バイト位置を表すために９ビット必要となる。
【００１１】
圧縮データ中の相対バイト位置に続く４ビットは、入力データと一致したデータとの間の一致バイト数を示している。上記の例では、入力データは１７バイトに設定されているので、一致バイト数の最大値は１７となる。しかし、一致バイト数が１の場合、該バイト（８ビット）が圧縮データに変換されると、伝送されるビット数は８ビットから１４ビットに増加し、圧縮の効果が得られない。この場合は、該バイトは、非圧縮データ（９ビット）として伝送される。
【００１２】
一致バイト数が２の場合、その２つのバイト（１６ビット）が圧縮データに変換されると、伝送されるビット数は１６ビットから１４ビットに減少し、圧縮の効果が得られる。即ち、ＬＺ７７方式では、圧縮の効果は一致バイト数が２から得られる。また、１７バイト全てが一致した場合、伝送されるビット数は、１３６ビット（８ビット×１７）から１４ビットに圧縮できる。従って、圧縮データ中の一致バイト数は２〜１７の何れかとなり、４ビットでそれらの数を表すことができる。
【００１３】
また、上述したように、比較動作において、一致バイト数が２以上のデータ列がスライディング辞書中に存在しない場合には、生データが非圧縮データとして伝送される。入力データと先行するスライディング辞書との比較動作が終了した後、入力データ及びスライディング辞書ともに１バイトづつシフトされ、再度比較動作が行われる。
【００１４】
以上のデータ圧縮動作によって、入力データを１／２〜１／３程度に圧縮することができる。このようなデータ圧縮を行うためには、入力データから最大一致長を得るデータをスライディング辞書内において高速に検索する手段が必要である。従来、このような検索には二進木（Ｂｉｎａｒｙ−ｔｒｅｅ）検索法が広く用いられてきた。この方法では、ウィンドウ（スライディング辞書）の各位置から始まるデータ列を辞書順序に並べた検索列（Ｔｒｅｅ）が構成され、入力データ列がこのＴｒｅｅと比較され、最大一致長を有するデータの場所が検出される。上記比較が終了した後、ウィンドウの位置が１バイトだけシフトされ辞書の更新が行われる。
【００１５】
以下に、２進木検索法の動作について説明する。
図６は、２進木検索法の動作例を説明するための図である。図６の例では、文字列“Ｔｈｅ  Ｃｒｕｅｌｔｙ  ｏｆ  Ｒｅａｌｌｙ  Ｔｅａ”と該文字列に続く１７文字の文字例（図示せず）が比較される。即ち、文字列“Ｔｈｅ  Ｃｒｕｅｌｔｙ  ｏｆ  Ｒｅａｌｌｙ  Ｔｅａ”がウィンドウ（スライディング辞書）として定義される。比較動作では、文字列“Ｔｈｅ  Ｃｒｕｅｌｔｙ  ｏｆ  Ｒｅａｌｌｙ  Ｔｅａ”の先頭から１７文字が、１文字づつシフトされながら（ｓｔｒｉｎｇ１  ｔｏ  ｓｔｒｉｎｇ８）、１７文字の入力データと比較される。
【００１６】
２進木検索法では、上記の比較動作に先立ち、文字列“Ｔｈｅ  Ｃｒｕｅｌｔｙ  ｏｆ  Ｒｅａｌｌｙ  Ｔｅａ”に対して図６に示すような２進木が形成される。この２進木検索法では、スペース，Ａ−Ｚ，ａ−ｚの順で、文字のレベルが高いと設定されている。
【００１７】
例えば、ｓｔｒｉｎｇ１とｓｔｒｉｎｇ２とを比較すると、ｓｔｒｉｎｇ２の先頭の文字“ｈ”のレベルの方がｓｔｒｉｎｇ１の先頭の文字“Ｔ”のレベルよりも高いので、ｓｔｒｉｎｇ２は高いレベルの側（この図では右側）に記載される。次に、ｓｔｒｉｎｇ２とｓｔｒｉｎｇ３とを比較すると、ｓｔｒｉｎｇ２の先頭の文字“ｈ”のレベルの方がｓｔｒｉｎｇ３の先頭の文字“ｅ”のレベルよりも高いので、ｓｔｒｉｎｇ３はｓｔｒｉｎｇ２よりも低いレベルの側（この図では左側）に記載される。
【００１８】
次に、ｓｔｒｉｎｇ３とｓｔｒｉｎｇ４とを比較すると、ｓｔｒｉｎｇ２の先頭の文字“ｈ”のレベルの方がｓｔｒｉｎｇ４の先頭の文字“Ｃ”のレベルよりも高い。さらに、ｓｔｒｉｎｇ４とｓｔｒｉｎｇ１とを比較すると、ｓｔｒｉｎｇ１の先頭の文字“Ｔ”のレベルの方がｓｔｒｉｎｇ４の先頭の文字“Ｃ”のレベルよりも高い。従って、ｓｔｒｉｎｇ４はｓｔｒｉｎｇ１よりも低いレベルの側に記載される。このようにして、文字のレベルの大小によって、Ｔｒｅｅが形成される。
【００１９】
このウィンドウのＴｒｅｅと入力データとの比較動作が行なわれる場合、その比較動作を容易に行うことができる。
【００２０】
【発明が解決しようとする課題】
しかしながら、上述した従来のデータ圧縮方法には次のような問題点がある。（１）従来のデータ圧縮方法に広く使用されている二進木検索法では、検索時間は、理想的にはウィンドウ長の対数に比例する時間になりえる。従って、２進木検出法は、大きなウィンドウにも適応可能である。しかし、入力データのパターンによっては非常に多くの検索時間を要する場合がある。例えば、形成されたＴｒｅｅが、図６に示すような構成と異なり、常に大きい方向、或いは常に小さい方向というように、直線に近い形に形成される場合、実質的に全てのｓｔｒｉｎｇと比較する必要があり、結果的に大きな検索時間を要する。従って、リアルタイムに処理するシステム形態での利用を困難にする。
（２）２進木検索法において理想的なＴｒｅｅが形成される場合、データ圧縮動作では複数バイトが同時に処理されているとみなされる。しかし、ウィンドウ（スライディング辞書）の更新は、１バイト毎に行う必要がある。従って、データ圧縮動作とはあまり関係のない箇所が、データ圧縮動作の処理速度のボトルネックとなっている。
（３）二進木検索法は、本質的に直前の演算結果から次の処理を決定する。従って、この方法は並列処理に不適切である。このためハードウェア化による高速化が難しい。
【００２１】
本発明の目的は、上記の問題点に鑑みて、入力データのパターンに依存せずに高速にデータ圧縮動作を行うことができ、さらに容易にハードウェア化が可能なデータ圧縮方法及び装置を提供する。
【００２２】
【課題を解決するための手段】
上記課題を解決するために本発明では、下記の手段を講じたことを特徴とするものである。
請求項１記載の発明装置では、
圧縮すべきデータの以前の履歴を格納した辞書ウィンドウと前記圧縮すべきデータとを比較し、データの一致が検出された場合に一致データの一致長と前記辞書ウィンドウにおける相対位置とをコード化して圧縮データを生成するデータ圧縮方法において、
（ａ）前記辞書ウィンドウ中のｍ組（ｍ＝２，３，．．．）のｎ個のデータ（ｎ＝２，３，．．．）と前記圧縮すべきデータ中のｎ個のデータとを実質的に同時に比較し、
（ｂ）前記段階（ａ）の比較結果において、最長の一致を検出したデータをコード化して前記圧縮データを生成する各段階
を有することを特徴とする。
【００２３】
請求項２記載の発明装置では、
請求項１記載のデータ圧縮方法において、前記段階（ａ）は、ｎ個のデータの一致が検出された場合、前記ｎの値をｎ１（ｎ１＝３，４，．．）に増加させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとを実質的に同時に比較する段階を含むことを特徴とする。
【００２４】
請求項３記載の発明装置では、
請求項２記載のデータ圧縮方法において、前記段階（ａ）は、ｎ個のデータの一致が検出された場合、前記ｍの値をｍ１（ｍ１＝１，２，．．．）に減少させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ１組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとを実質的に同時に比較する段階をさらに含むことを特徴とする。
【００２５】
請求項４記載の発明装置では、
請求項３記載のデータ圧縮方法において、前記段階（ａ）は、ｎ個のデータの一致が検出された場合、前記ｎの値をｉ×ｎに増加させかつ前記ｍの値をｍ／ｉに減少させて（ｉ＝２，３，．．．）、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ／ｉ組のｉ×ｎ個のデータと前記圧縮すべきデータ中のｉ×ｎ個のデータとを実質的に同時に比較する段階をさらに含むことを特徴とする。
【００２６】
請求項５記載の発明装置では、
請求項１乃至４のうちいずれか１項記載のデータ圧縮方法において、前記データ圧縮方法は、Ｌａｍｐｅｌ／Ｚｉｖが提案したＬＺ７７方式の改良方式であり、前記ｎ個のデータはｎ個のバイトであり、前記辞書ウィンドウ中のｍ組のｎ個のデータは、１バイトずつシフトされたｍ組のｎ個のデータであることを特徴とする。
【００２７】
請求項６記載の発明装置では、
圧縮すべきデータの以前の履歴を格納した辞書ウィンドウと前記圧縮すべきデータとを比較する比較部と、データの一致が検出された場合に一致データの一致長と前記辞書ウィンドウにおける相対位置とをコード化して圧縮データを生成する処理部とを有するデータ圧縮装置において、
前記比較部は、前記辞書ウィンドウ中のｍ組（ｍ＝２，３，．．．）のｎ個のデータ（ｎ＝２，３，．．．）と前記圧縮すべきデータ中のｎ個のデータとを実質的に同時に比較するｍ個の比較回路を有し、
前記処理部は、前記比較部の比較結果において、最長の一致を検出したデータをコード化して前記圧縮データを生成する手段を有することを特徴とする。
【００２８】
請求項７記載の発明装置では、
請求項６記載のデータ圧縮装置において、前記比較部は、ｎ個のデータの一致が検出された場合、前記ｎの値をｎ１（ｎ１＝３，４，．．）に増加させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとを実質的に同時に比較する手段を含むことを特徴とする。
【００２９】
請求項８記載の発明装置では、
請求項７記載のデータ圧縮装置において、前記比較部は、ｎ個のデータの一致が検出された場合、前記ｍの値をｍ１（ｍ１＝１，２，．．．）に減少させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ１組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとを実質的に同時に比較する手段をさらに含むことを特徴とする。
【００３０】
請求項９記載の発明装置では、
請求項８記載のデータ圧縮装置において、前記比較部は、ｎ個のデータの一致が検出された場合、前記ｎの値をｉ×ｎに増加させかつ前記ｍの値をｍ／ｉに減少させて（ｉ＝２，３，．．．）、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ／ｉ組のｉ×ｎ個のデータと前記圧縮すべきデータ中のｉ×ｎ個のデータとを実質的に同時に比較する手段をさらに含むことを特徴とする。
【００３１】
請求項１０記載の発明装置では、
請求項６乃至９のうちいずれか１項記載のデータ圧縮装置において、前記データ圧縮装置は、Ｌａｍｐｅｌ／Ｚｉｖが提案したＬＺ７７方式用改良装置であり、前記ｎ個のデータはｎ個のバイトであり、前記辞書ウィンドウ中のｍ組のｎ個のデータは、１バイトずつシフトされたｍ組のｎ個のデータであることを特徴とする。
【００３２】
上記発明方法及び装置以下のように作用する。
請求項１記載のデータ圧縮方法、及び請求項６記載データ圧縮装置においては、前記辞書ウィンドウ中の複数組のｎ個のデータと前記圧縮すべきデータ中のｎ個のデータとが実質的に同時に比較され、最長の一致を検出したデータが前記圧縮データとして生成される。
【００３３】
従って、入力データのパターンに依存せずに、データ圧縮方法の一致データ検索時間を大幅に短縮化できる。
請求項２記載のデータ圧縮方法、及び請求項７記載データ圧縮装置においては、ｎ個のデータの一致が検出された場合、前記ｎの値をｎ１に増加させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとが実質的に同時に比較される。
【００３４】
従って、データ圧縮方法の一致データ検索時間をさらに短縮化することができる。
請求項３又は４記載のデータ圧縮方法、及び請求項８又は９記載のデータ圧縮装置においては、ｎ個のデータの一致が検出された場合、前記ｎの値をｎ１に増加させかつ前記ｍの値をｍ１に減少させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ１組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとが実質的に同時に比較される。
【００３５】
従って、同じハードウェア（比較回路）を用いて、異なる一致幅の比較を行うことができる。よって、ハードウェアを大型化せずに、高速にデータ圧縮動作を行うことができる。
請求項５記載のデータ圧縮方法、及び請求項１０記載データ圧縮装置においては、本発明に係わるデータ圧縮方法は、Ｌａｍｐｅｌ／Ｚｉｖが提案したＬＺ７７方式に適用できる。従って、ＬＺ７７方式のデータ圧縮動作を大幅に高速化でき、かつそのデータ圧縮装置を容易にハードウェア化できる。
【００３６】
【発明の実施の形態】
本発明に係わるデータ圧縮方法及び装置は、ＬＺ７７データ圧縮方法において辞書となるウィンドウと圧縮対象データとの比較を高速に行う方法及び装置に関する。
【００３７】
図１は、本発明に係わるデータ圧縮装置を含むシステムの構成例を示す図である。図２は、本発明に係わるデータ圧縮装置の大要のブロック構成図である。図１では、圧縮装置１−１は、ＭＰＵ（マイクロコンピュータ）１−２によって制御される。図２では、圧縮装置１−１は、圧縮機構１−１ａ、制御回路１−１ｂ、アドレスレジスタ読出し回路１−１ｃ、アドレスレジスタ書き込み回路１−１ｄ、及びバイトカウンタで１−１ｅ構成されている。本発明に係わるデータ圧縮方法は、主に圧縮機構において実施される。
【００３８】
本発明に係わるデータ圧縮方法では、辞書となるウィンドウと圧縮対象データ（入力データ）とが逐次並列に比較され、さらに、辞書の生成及び更新が不要化される。従って、データ圧縮動作における比較動作を高速に行うことができる。以下に、本発明に係わるデータ圧縮方法の第１実施例について説明する。図３は、本発明に係わるデータ圧縮方法の第１実施例を説明するための図である。図３では、特に、本発明に係わるデータ圧縮方法におけるウィンドウと圧縮対象データとの比較方法（一致データ検索方法）が示されている。
【００３９】
図３は、図２に示す圧縮機構を示しており、該圧縮機構は、先行データを格納するウィンドウ２−１、先行データに続く圧縮対象データを格納するレジスタ２−２、ウィンドウ２−１の先行データとレジスタ２−２の圧縮データとを並列比較する比較ユニット２−３、及び比較結果等を格納するレジスタ２−４を含んでいる。
【００４０】
この第１実施例では、ウィンドウ２−１は、スライディング辞書として動作し、５１２バイトのシフトレジスタにより構成されている。また、レジスタ２−２は、１７バイトのシフトレジスタで構成されており、最大１７バイトの一致長を得ることができる。
【００４１】
比較ユニット２−３は、さらに複数の比較回路２−３（１）〜２−３（３２）を含んでいる。比較回路２−３（１）〜２−３（３２）の各々は、２バイトのデータを比較する回路である。例えば、比較回路２−３（１）は、ウィンドウ２−１の第１及び第２番目のデータと、レジスタ２−２に格納されている圧縮対象データの第１及び第２番目のデータとを比較する。比較回路２−３（２）は、ウィンドウ２−１の第２及び第３番目のデータと、レジスタ２−２に格納されている圧縮対象データの第１及び第２番目のデータとを比較する。
【００４２】
同様に、比較回路２−３（３）は、ウィンドウ２−１の第３及び第４番目のデータと、レジスタ２−２に格納されている圧縮対象データの第１及び第２番目のデータとを比較する。比較回路２−３（３２）は、ウィンドウ２−１の第３２及び第３３番目のデータと、レジスタ２−２に格納されている圧縮対象データの第１及び第２番目のデータとを比較する。
【００４３】
このように、ウィンドウ２−１の第１及び第２番目のデータから第３２及び第３３番目のデータの３２組のデータが、圧縮対象データの第１及び第２番目のデータと同時に比較される。第１番目から第３３番目までのデータを区間１として設定される。
【００４４】
３２組の比較が行なわれた後、比較回路２−３（１）〜２−３（３２）によって、ウィンドウ２−１の第３３及び第３４番目のデータ〜第６４及び第６５番目のデータと、レジスタ２−２に格納されている圧縮対象データの第１及び第２番目のデータとが同時に比較される。第３３番目から第６５番目までのデータは区間２として設定される。このようにして、２バイト同志の比較の場合、５１２バイトのウィンドウ２−１において、区間１〜区間１６が設定される。そして、各区間において３２組の比較動作が同時に行われる。
【００４５】
各区間における３２組の比較結果は、レジスタ２−４に格納される。レジスタ２−４は、レジスタ２−４（ａ）〜（ｃ）を含んでおり、レジスタ２−４（ａ）には、検索が行なわれた区間の番号が格納され、レジスタ２−４（ｂ）には、最大一致（この実施例では２バイト）が得られたデータの開始位置が格納され、レジスタ２−（ｃ）には、そのときの一致数が格納される。
【００４６】
３２組の比較の結果、２バイトの一致が１つも得られない場合には、次の区間での検索に移る。もし、２バイトの一致が得られた場合には、その次のデータがさらに一致しているか否かが判定される（この方法については、第２実施例において詳述する）。
【００４７】
上述のように、第１実施例では、ウィンドウが複数の区間に分割され、各区間毎に複数の開始位置において複数の比較が同時に行なわれ、その部分的な最大一致が求められる。従って、高速にウィンドウと圧縮対象データとの比較が行なわれ、よって、高速のデータ圧縮動作を実現できる。
【００４８】
また、比較ユニット２−３における比較回路の比較バイト数及び比較回路の数は、検索速度とハードウェア規模のトレードオフから決定できる。しかし、「従来の技術」の項目で議論したように、１バイトだけの比較では圧縮効果がないため、比較バイト数は２バイト以上に設定する必要がある。例えば、各比較回路の比較バイト数を４バイトに設定し、３２組の比較回路を設けることも可能である。この場合、回路規模は、図３に示す構成の実質的に２倍になる。
【００４９】
次に、本発明に係わるデータ圧縮方法の第２実施例について説明する。図４は、本発明に係わるデータ圧縮方法の第２実施例を説明するための図である。図４には、図３に示した本発明に係わるデータ圧縮方法の第１実施例におけるウィンドウと圧縮対象データとの比較方法（一致データ検索方法）の改良した方法が示されている。
【００５０】
図４に示したデータ圧縮方法では、上述した区間１から圧縮対象データの先頭の２バイトの探索（２バイト一致の探索）が行われ、もし、ある区間において２バイトの一致が検出された場合、圧縮対象データの先頭から４バイトまでのデータの探索（４バイトまでの一致の比較）が、２バイト一致が検出されたデータのアドレスの位置から行われる。もし、４バイトの一致が検出された場合、次に圧縮対象データの先頭から８バイトまでのデータの探索（８バイトまでの一致の比較）が、４バイト一致が検出されたデータのアドレスの位置から行われる。
【００５１】
さらに、もし、８バイトの一致が検出された場合、次に圧縮対象データの先頭から１７バイト（全バイト）までのデータの探索（１７バイトまでの一致の比較）が、８バイト一致が検出されたデータのアドレスの位置から行われる。
以下に、図４に示した圧縮機構の構成、及び詳細な一致データ検索方法について説明する。
【００５２】
図４に示した圧縮機構は、図３に示した圧縮機構と同様に、先行データを格納するウィンドウ２−１、先行データに続く圧縮対象データを格納するレジスタ２−２、ウィンドウ２−１の先行データとレジスタ２−２の圧縮データとを並列比較する比較ユニット２−３’、及び比較結果等を格納するレジスタ２−４を含んでいる。
【００５３】
図４に示した圧縮機構は、さらに、レジスタ２−５、切り替えゲート２−６，２−７、及び制御回路２−８を含んでいる。また、比較ユニット２−３’は、２バイトのデータ同志を比較する比較回路２−３（１）〜２−３（３２）と、１バイトのデータ同志を比較する比較回路２−３（３３）〜２−３（３６）と、最大一致選択回路２−９とを含んでいる。
【００５４】
この第２実施例においても、第１実施例と同様に、ウィンドウ２−１は、スライディング辞書として動作し、５１２バイトのシフトレジスタにより構成されている。ウィンドウ２−１の第１番目のデータのアドレスは、Ｗ０００、第５１２番目のデータのアドレスは、Ｗ５１１で表されている。また、レジスタ２−２は、１７バイトのシフトレジスタで構成されており、最大１７バイトの一致長を得ることができる。
【００５５】
レジスタ２−５は、ウィンドウ２−１の一部のバイトデータを一時的に記憶する。図４に示す例では、レジスタ２−５は、最大３３バイトＧ００〜Ｇ３２のバイトデータを記憶できる。また、レジスタ２−５に供給されるウィンドウ２−１のバイトデータの一部は、４バイト×ｎ（ｎ＝０，１，２，．．．）を境界（以後、４バイト境界と称する）として構成される。例えば、Ｗ０００からｍバイト（ｍ≦３３）、Ｗ００４からｍバイト、．．．Ｗ４９６からｍバイトが、レジスタ２−５に供給される。レジスタ２−５に供給されるバイト数ｍは、比較されるバイト数によって決定される（動作説明で詳細に記述する）。
【００５６】
切り替えゲート２−６、２−７は、レジスタ２−５に供給されたバイトデータと圧縮対象データとの比較方法を、制御回路２８からの指示によって決定する。比較方法としては、（ａ）２バイト一致の探索、（ｂ）４バイトまでの一致の比較、（ｃ）８バイトまでの一致の比較、（ｄ）１７バイトまでの一致の比較のいづれかが選択される。
【００５７】
（ａ）２バイト一致の探索、（ｂ）４バイトまでの一致の比較、（ｃ）８バイトまでの一致の比較については、比較ユニット２−３’内の比較回路２−３（１）〜２−３（３２）が使用され、（ｄ）１７バイトまでの一致の比較のためには、比較回路２−３（１）〜２−３（３２）に加えて、比較回路２−３（３３）〜２−３（３６）が使用される。
【００５８】
以下に、本発明に係わるデータ圧縮方法の第２実施例の動作について説明する。
（ａ）〔２バイト一致の探索〕
（１）ウィンドウ２−１の３３バイトのデータＷ０００〜Ｗ０３２が、レジスタ２−５にバイトデータＧ００〜Ｇ３２としてロードされる（図４には、２バイト一致検索の場合の例が示されている）。切り替えゲート２−６，２−７によって、レジスタ２−５のバイトデータＧ００〜Ｇ３２と、比較回路２−３（１）〜２−３（３２）が、第１実施例で示した接続状態と同様に接続される。
【００５９】
即ち、３２組の２バイトデータＧ００−Ｇ０１，Ｇ０１−Ｇ０２，Ｇ０２−Ｇ０３，Ｇ０３−Ｇ０４，．．．．Ｇ３０−Ｇ３１，Ｇ３１−Ｇ３２が、圧縮対象データの第１及び第２番目のバイトデータと、それぞれ比較回路２−３（１），２−３（２），２−３（３），２−３（４）．．．２−３（３１），２−３（３２）においてそれぞれ比較される。
【００６０】
（２）ここで、データＷ０００〜Ｗ０３２において２バイトの一致が検出されない場合、次の３３バイトのデータＷ０３２〜Ｗ０６４が、レジスタ２−５にバイトデータＧ００〜Ｇ３２としてロードされ、再度２バイト一致の探索が行われる。
（ｂ）〔４バイトまでの一致の比較〕
（３）２バイト一致の探索の動作中に２バイトの一致が検出された場合、始めに一致した２バイトが含まれる４バイト境界から、１９バイトのデータがレジスタ２−５にバイトデータＧ００〜Ｇ１８としてロードされる。このとき、切り替えゲート２−６，２−７によって、レジスタ２−５のバイトデータＧ００〜Ｇ１８と比較回路２−３（１）〜２−３（３２）が、圧縮対象データの先頭から４バイトまでのデータと比較できるように接続される。
【００６１】
例えば、１６組の４バイトデータＧ００−Ｇ０３，Ｇ０１−Ｇ０４，Ｇ０２−Ｇ０５，．．．．Ｇ１５−Ｇ１８が、圧縮対象データの第１から第４番目のバイトデータと、それぞれ比較回路２−３（１）及び２−３（２），２−３（３）及び２−３（４），２−３（４）及び２−３（５）．．．２−３（３１）及び２−３（３２）においてそれぞれ比較される。
【００６２】
（４）ここで、レジスタ２−５のバイトデータＧ００〜Ｇ１８において、３バイト以下の一致が検出された場合、次のブロック（現在の先頭アドレスに１６を加算したブロック）において、４バイト一致の探索が行われる。
（ｃ）〔８バイトまでの一致の比較〕
（５）４バイトの一致が検出された場合、始めに一致した４バイトが含まれる４バイト境界から、１５バイトのデータがレジスタ２−５にバイトデータＧ００〜Ｇ１５としてロードされる。このとき、切り替えゲート２−６，２−７によって、レジスタ２−５のバイトデータＧ００〜Ｇ１５と比較回路２−３（１）〜２−３（３２）が、圧縮対象データの先頭から８バイトまでのデータと比較できるように接続される。
【００６３】
例えば、８組の８バイトデータＧ００−Ｇ０７，Ｇ０１−Ｇ０８，Ｇ０２−Ｇ０９，．．．．Ｇ０７−Ｇ１５が、圧縮対象データの第１から第８番目のバイトデータと、それぞれ比較回路２−３（１）〜２−３（４），２−３（５）〜２−３（８），２−３（９）〜２−３（１２）．．．２−３（２９）〜２−３（３２）においてそれぞれ比較される。
【００６４】
（６）ここで、レジスタ２−５のバイトデータＧ００〜Ｇ１５において、７バイト以下の一致が検出された場合、次のブロック（現在の先頭アドレスに８を加算したブロック）において、８バイト一致の探索が行われる。
（ｄ）〔１７バイトまでの一致の比較〕
（７）８バイトの一致が検出された場合、始めに一致した８バイトが含まれる４バイト境界から、２０バイトのデータがレジスタ２−５にバイトデータＧ００〜Ｇ１９としてロードされる。このとき、切り替えゲート２−６，２−７によって、レジスタ２−５のバイトデータＧ００〜Ｇ１９、比較回路２−３（１）〜２−３（３２）及び比較回路２−３（３３）〜２−３（３６）が、圧縮対象データの先頭から１７バイトまでのデータと比較できるように接続される。
【００６５】
例えば、４組の１７バイトデータＧ００−Ｇ１６，Ｇ０１−Ｇ１７，Ｇ０２−Ｇ１８，Ｇ０３−Ｇ１９が、圧縮対象データの第１から第１７番目のバイトデータと、それぞれ比較回路２−３（１）〜２−３（８）及び２−３（３３），２−３（９）〜２−３（１６）及び２−３（３４），２−３（１７）〜２−３（２４）及び２−３（３５），２−３（２５）〜２−３（３２）及び２−３（３６）においてそれぞれ比較される。
【００６６】
（８）ここで、レジスタ２−５のバイトデータＧ００〜Ｇ１９において、１６バイト以下の一致が検出された場合、次のブロック（現在の先頭アドレスに４を加算したブロック）において、１７バイト一致の探索が行われる。
（９）１７バイトの一致が検出された場合、これ以上の一致はあり得ないので、その位置で比較を終了する。
【００６７】
以上の検索及び比較の結果は、最大一致選択回路２−９を介して、図３で示した実施例１と同様にレジスタ２−４に格納される。レジスタ２−４は、レジスタ２−４（ａ）〜（ｃ）を含んでおり、レジスタ２−４（ａ）には、検索が行なわれた区間の番号が格納され、レジスタ２−４（ｂ）には、最大一致が得られたデータの開始位置が格納され、レジスタ２−（ｃ）には、そのときの一致数が格納される。レジスタ２−４への格納は、上述の各検索及び比較動作毎に行うことができる。
【００６８】
レジスタ２−４の各データが、図５の（Ｃ）に示す圧縮データに供給され、圧縮対象データが圧縮される。
上述のデータ圧縮方法では、一致幅が大きくなるにつれて一度に検索される区間の幅は減少する。しかし、このときには既に一定数の一致が得られているので、一致した量のデータが処理された後に次の検索が必要になる。即ち、２バイトの一致が検出された場合、その一致が検出されない場合と比較して２倍の処理時間をかけて検索することが可能となる。また、４バイトの一致が検出された場合、４倍の処理時間の検索まで許容される。
【００６９】
また、図４の比較ユニット２−３’で示したように、データ圧縮装置は、バイトデータの一致検出を行う回路を種々の一致長に対して共通に使用できる。従って、比較的に小さいハードウェアによって高速の一致検索を行うことが可能となる。
【００７０】
本発明で示したデータ圧縮方法において、一致長は必ずしも２倍のステップで増加させるように限定する必要はない。回路の複雑性と検索の速度に応じて、一致長は１バイトまたは複数バイトで増加することも可能である。また、ウィンドウ用レジスタ２−１は、所定の速度が実現可能なメモリを用いて構成することもできる。
【００７１】
以上、本発明の実施例により説明したが、本発明はこれらの実施例に限定されるものではなく、本発明の範囲内で改良及び変形が可能であることは言うまでもない。
【００７２】
【発明の効果】
上述したように、本発明によれば以下に示す効果を有する。
請求項１記載のデータ圧縮方法、及び請求項６記載データ圧縮装置においては、前記辞書ウィンドウ中の複数組のｎ個のデータと前記圧縮すべきデータ中のｎ個のデータとが実質的に同時に比較され、最長の一致を検出したデータが前記圧縮データとして生成される。
【００７３】
従って、入力データのパターンに依存せずに、データ圧縮方法の一致データ検索時間を大幅に短縮化できる。
請求項２記載のデータ圧縮方法、及び請求項７記載データ圧縮装置においては、ｎ個のデータの一致が検出された場合、前記ｎの値をｎ１に増加させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとが実質的に同時に比較される。
【００７４】
従って、データ圧縮方法の一致データ検索時間をさらに短縮化することができる。
請求項３又は４記載のデータ圧縮方法、及び請求項８又は９記載のデータ圧縮装置においては、ｎ個のデータの一致が検出された場合、前記ｎの値をｎ１に増加させかつ前記ｍの値をｍ１に減少させて、前記辞書ウィンドウ中の一致が検出されたデータの位置からｍ１組のｎ１個のデータと前記圧縮すべきデータ中のｎ１個のデータとが実質的に同時に比較される。
【００７５】
従って、同じハードウェア（比較回路）を用いて、異なる一致幅の比較を行うことができる。よって、ハードウェアを大型化せずに、高速にデータ圧縮動作を行うことができる。
請求項５記載のデータ圧縮方法、及び請求項１０記載データ圧縮装置においては、本発明に係わるデータ圧縮方法は、Ｌａｍｐｅｌ／Ｚｉｖが提案したＬＺ７７方式に適用できる。従って、ＬＺ７７方式のデータ圧縮動作を大幅に高速化でき、かつそのデータ圧縮装置を容易にハードウェア化できる。
【図面の簡単な説明】
【図１】本発明に係わるデータ圧縮装置を含むシステムの構成例を示す図。
【図２】本発明に係わるデータ圧縮装置の大要のブロック構成図。
【図３】本発明に係わるデータ圧縮方法の第１実施例を説明するための図。
【図４】本発明に係わるデータ圧縮方法の第２実施例を説明するための図。
【図５】一般的なＬＺ７７データ圧縮方式の動作例を示す図である。（Ａ）は、圧縮の対象となるデータ（入力データ）とそれと比較される先行データの一定範囲（スライディングウィンドウ）、（Ｂ）は、非圧縮データ、（Ｃ）は、圧縮データを示す。
【図６】２進木検索法の動作例を説明するための図。
【符号の説明】
１−１  圧縮装置
１−２  ＭＰＵ（マイクロコンピュータ）
１−３  メモリ
１−１ａ  圧縮機構
１−１ｂ  制御回路
１−１ｃ  アドレスレジスタ読出し回路
１−１ｄ  アドレスレジスタ書き込み回路
１−１ｅ  バイトカウンタ
２−１  ウィンドウ（スライディング辞書）
２−２  圧縮対象データ用レジスタ
２−３，２−３’  比較ユニット
２−３（１）〜２−３（３２）２バイト比較回路
２−３（３３）〜２−３（３６）１バイト比較回路
２−４  レジスタ
２−４（ａ）〜２−４（ｃ）  レジスタ
２−５  レジスタ
２−６，２−７  切り替えゲート
２−８  制御回路
２−９  最大一致選択回路
【図１】
0003540109.tif 000002
【図２】
0003540109.tif 000003
【図３】
0003540109.tif 000004
【図４】
0003540109.tif 000005
【図５】
0003540109.tif 000006
【図６】
0003540109.tif 000007