(57)【要約】新しいＬＺＷ圧縮実施アーキテクチャが、アルファベットのそれぞれの文字に対応する複数の文字テーブルを利用する。ストリングを記憶することが、そのストリングの拡張文字に対応する文字テーブル内にストリングプレフィックスの符号に対応する文字テーブル位置で、そのストリングに関連する符号を記憶することによって行われる。現在フェッチされている文字に関連する文字テーブル内の現在マッチされているストリングに関連する文字テーブル内の現在マッチされているストリングの符号に対応する文字テーブル位置が空であるかどうかを判定することにより、最長のマッチするストリングの探索が行われる。その位置は、空でない場合、現在フェッチされている文字で拡張された現在マッチされているストリングを含むストリングの符号を記憶している。このストリング符号を、次のフェッチされる文字に対して探索を続ける次のマッチとして使用する。その位置が空であった場合、最長マッチは、現在マッチされているストリングであることが特定される。記憶されたストリングは、次の用意されたストリング符号を空の位置に記憶することによって更新される。
2005501445.tif 000002
【特許請求の範囲】
【請求項１】
データ文字のアルファベットからのデータ文字の入力ストリームを圧縮して、圧縮された符号の出力ストリームにするためのデータ圧縮方法であって、
前記アルファベットのそれぞれの文字に対応する複数の文字テーブルを提供するステップと、
前記文字テーブル内に、前記入力ストリームの中で遭遇したデータ文字のストリングを記憶するステップであって、前記記憶されたストリングはそれぞれの関連付けられた符号を有しており、ストリングが、前記文字の少なくとも１つの後に拡張文字が続くプレフィックスストリングを含むステップと、
前記文字テーブル内に特定のストリングが記憶されるステップであって、前記特定のストリングの拡張文字に対応する文字テーブル内に、前記特定のストリングのプレフィックスストリングの符号に対応する文字テーブル位置で、前記特定のストリングに関連する符号を記憶することによって行われるステップと、
前記入力ストリームを前記記憶されたストリングと比較することで前記入力ストリームを探索して最長マッチを特定するステップと、
圧縮された符号の前記出力ストリームを提供するために前記最長マッチに関連する符号を出力するステップと、
拡張されたストリームを前記文字テーブル内に挿入するステップであって、前記拡張されたストリングは、前記最長マッチに続く前記入力ストリームの中の次のデータ文字によって拡張された前記最長マッチを含み、前記拡張されたストリングが、前記次のデータ文字に対応する文字テーブル内に記憶されるステップと
を含むことを特徴とする方法。
【請求項２】
前記特定するステップは、
（ａ）前記記憶されたストリングの１つをマッチさせて現行マッチを提供するステップと、
（ｂ）前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供するステップと、
（ｃ）前記現行文字に対応する文字テーブル内の前記現行マッチに対応する位置が空であるかどうかを判定するステップと、
（ｄ）前記位置が空でない場合、前記現行マッチを前記位置に記憶されている符号に設定し、ステップ（ｃ）の前記位置が空であると判定されるまでステップ（ｂ）から（ｄ）を繰り返して、前記最長マッチを特定するステップと
を含むことを特徴とする請求項１に記載の圧縮方法。
【請求項３】
ステップ（ｃ）において前記位置が空であると判定された場合、前記出力するステップは、前記現行マッチを出力するステップを含むことを特徴とする請求項２に記載の圧縮方法。
【請求項４】
ステップ（ｃ）において前記位置が空であると判定された場合、前記挿入するステップは、
次の使用可能なストリング符号を提供するステップと、
前記次の使用可能なストリング符号を前記空の位置に記憶するステップとを含み、
前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項２に記載の圧縮方法。
【請求項５】
圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するステップを含むことを特徴とする請求項３に記載の圧縮方法。
【請求項６】
前記特定するステップは、
（ａ）前記記憶されたストリングの１つをマッチさせて現行マッチを提供するステップと、
（ｂ）前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供するステップと、
（ｃ）前記複数の文字テーブル内の前記現行マッチに対応する位置にアクセスして、前記アクセスされた位置にそれぞれ対応する複数の文字テーブル出力を提供するようにするステップと、
（ｄ）前記現行文字に対応する前記文字テーブルから文字テーブル出力を選択するステップと、
（ｅ）前記選択された文字テーブル出力が空であるかどうかを判定するステップと、
（ｆ）前記選択された文字テーブル出力が空でなかった場合、前記現行マッチを前記選択された文字テーブル出力の中に記憶されている符号に設定し、ステップ（ｅ）の前記選択された文字テーブル出力が空であると判定されるまでステップ（ｂ）から（ｆ）を繰り返して、前記最長マッチを特定するステップと
を含むことを特徴とする請求項１に記載の圧縮方法。
【請求項７】
ステップ（ｅ）において前記選択された文字テーブル出力が空であると判定された場合、前記出力するステップは、前記現行マッチを出力するステップを含むことを特徴とする請求項６に記載の圧縮方法。
【請求項８】
ステップ（ｅ）において前記選択された文字テーブル出力が空であると判定された場合、前記挿入するステップは、
次の使用可能なストリング符号を提供するステップと、
前記次の使用可能なストリング符号を前記現行文字に対応する前記文字テーブル内の前記現行マッチに対応する位置に記憶するステップとを含み、
前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項６に記載の圧縮方法。
【請求項９】
圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するステップをさらに含むステップを特徴とする請求項７に記載の圧縮方法。
【請求項１０】
前記判定するステップは、
前記複数の文字テーブルの各位置に、前記各位置の空のステータスを表わす空フラグを含めるステップと、
現行文字に対応する文字テーブル内の現行マッチに対応する位置の前記空フラグを選択するステップと、
前記選択された空フラグが空のステータスを表わすかどうかを判定するステップと
を含むことを特徴とする請求項６に記載の圧縮方法。
【請求項１１】
さらに、特定の文字テーブルに対応する特定の文字に最初に遭遇した際に前記特定の文字テーブルを生成するステップを含むことを特徴とする請求項１に記載の圧縮方法。
【請求項１２】
文字テーブルは、前記文字テーブルのそれぞれの位置に対応するプレフィックス符号のリストを含むことを特徴とする請求項１に記載の圧縮方法。
【請求項１３】
前記特定するステップは、
（ａ）前記記憶されたストリングの１つをマッチさせて現行マッチを提供するステップと、
（ｂ）前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供するステップと、
（ｃ）前記現行マッチが、前記現行文字に対応する前記文字テーブルのプレフィックス符号リストの中のプレフィックス符号の１つであるかどうかを判定するステップと、
（ｄ）前記現行マッチが前記プレフィックス符号の１つである場合、前記現行マッチを前記プレフィックス符号の前記１つに対応する文字テーブルの中に記憶されている符号に設定し、ステップ（ｃ）の前記現行マッチが前記プレフィックス符号リストの中の前記プレフィックス符号の１つではないと判定されるまでステップ（ｂ）から（ｄ）を繰り返すステップとを含み、
前記最長マッチを特定することを特徴とする請求項１２に記載の圧縮方法。
【請求項１４】
ステップ（ｃ）において前記現行マッチが前記プレフィックス符号リストの中の前記プレフィックス符号の１つではないと判定された場合、前記出力するステップは、前記現行マッチを出力するステップを含むことを特徴とする請求項１３に記載の圧縮方法。
【請求項１５】
ステップ（ｃ）において前記現行マッチが前記プレフィックス符号リストの中の前記プレフィックス符号の１つではないと判定された場合、前記挿入するステップは、
前記現行マッチを前記現行文字に対応する前記文字テーブルの前記プレフィックス符号リストの中に記憶して、前記現行文字に対応する前記文字テーブル内で前記現行マッチに対応する位置を確立するステップと、
次の使用可能なストリング符号を提供するステップと、
前記次の使用可能なストリング符号を前記確立された位置に記憶するステップとを含み、
前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項１３に記載の圧縮方法。
【請求項１６】
圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するステップを含むことを特徴とする請求項１４に記載の圧縮方法。
【請求項１７】
さらに、前記文字テーブルの所定のテーブルをキャッシュメモリの中に確立するステップを含むことを特徴とする請求項１に記載の圧縮方法。
【請求項１８】
さらに、前記アルファベットの頻繁に出現する文字に対応する文字テーブルをキャッシュメモリの中に確立するステップを含むことを特徴とする請求項１に記載の圧縮方法。
【請求項１９】
さらに、前記文字テーブル内に記憶されるストリングを所定のストリング長限度より短い所定の文字数に制限するステップを含むことを特徴とする請求項１に記載の圧縮方法。
【請求項２０】
さらに、前記アルファベットの稀にしか出現しない文字に対応する文字テーブルの生成を除外するステップを含むことを特徴とする請求項１１に記載の圧縮方法。
【請求項２１】
さらに、所定の文字テーブルの長さをそれぞれ所定の文字テーブル長限度に制限するステップを含むことを特徴とする請求項１２に記載の圧縮方法。
【請求項２２】
データ文字のアルファベットからのデータ文字の入力ストリームを圧縮して、圧縮された符号の出力ストリームにするためのデータ圧縮装置において、
前記入力ストリームの中で遭遇したデータ文字のストリングを記憶するための前記アルファベットのそれぞれの文字に対応する複数の文字テーブルであって、前記記憶されたストリングはそれぞれの関連付けられた符号を有しており、ストリングが、前記文字の少なくとも１つの後に拡張文字が続くプレフィックスストリングを含むものと、
前記文字テーブル内に特定のストリングが記憶される手段であって、前記特定のストリングの拡張文字に対応する文字テーブル内に、前記特定のストリングのプレフィックスストリングの符号に対応する文字テーブル位置で、前記特定のストリングに関連する符号を記憶することによって行われる手段と、
前記入力ストリームを前記記憶されたストリングと比較することで前記入力ストリームを探索して最長マッチを特定する手段と、
圧縮された符号の前記出力ストリームを提供するために前記最長マッチに関連する符号を出力する手段と、
拡張されたストリームを前記文字テーブル内に挿入する手段であって、前記拡張されたストリングは、前記最長マッチに続く前記入力ストリームの中の次のデータ文字によって拡張された前記最長マッチを含み、前記拡張されたストリングが、前記次のデータ文字に対応する文字テーブル内に記憶される手段と
を備えることを特徴とする装置。
【請求項２３】
前記特定する手段は、
（ａ）前記記憶されたストリングの１つをマッチさせて現行マッチを提供し、
（ｂ）前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供し、
（ｃ）前記現行文字に対応する文字テーブル内の前記現行マッチに対応する位置が空であるかどうかを判定し、
（ｄ）前記位置が空でない場合、前記現行マッチを前記位置に記憶されている符号に設定し、かつ、（ｃ）の前記位置が空であると判定されるまで（ｂ）から（ｄ）を繰り返して、
前記最長マッチを特定するよう動作する手段を備えることを特徴とする請求項２２に記載の圧縮装置。
【請求項２４】
前記出力する手段は、前記現行マッチを出力するための手段を備えることを特徴とする請求項２３に記載の圧縮装置。
【請求項２５】
前記挿入する手段は、
次の使用可能なストリング符号を提供するための手段と、
前記次の使用可能なストリング符号を前記空の位置に記憶するための手段とを含み、
前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項２３に記載の圧縮装置。
【請求項２６】
圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するための手段を備えることを特徴とする請求項２４に記載の圧縮装置。
【請求項２７】
前記特定する手段は、
（ａ）前記記憶されたストリングの１つをマッチさせて現行マッチを提供し、
（ｂ）前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供し、
（ｃ）前記複数の文字テーブル内の前記現行マッチに対応する位置にアクセスして、前記アクセスされた位置にそれぞれ対応する複数の文字テーブル出力を提供するようにし、
（ｄ）前記現行文字に対応する前記文字テーブルから文字テーブル出力を選択し、
（ｅ）前記選択された文字テーブル出力が空であるかどうかを判定し、
（ｆ）前記選択された文字テーブル出力が空でなかった場合、前記現行マッチを前記選択された文字テーブル出力の中に記憶されている符号に設定し、かつ、（ｅ）の前記選択された文字テーブル出力が空であると判定されるまで（ｂ）から（ｆ）を繰り返して、
前記最長マッチを特定するよう動作する手段を備えることを特徴とする請求項２２に記載の圧縮装置。
【請求項２８】
前記出力する手段は、前記現行マッチを出力するための手段を備えることを特徴とする請求項２７に記載の圧縮装置。
【請求項２９】
前記挿入する手段は、
次の使用可能なストリング符号を提供するための手段と、
前記次の使用可能なストリング符号を前記現行文字に対応する前記文字テーブル内の前記現行マッチに対応する位置に記憶するための手段とを含み、
前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項２７に記載の圧縮装置。
【請求項３０】
圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するための手段を備えることを特徴とする請求項２８に記載の圧縮装置。
【請求項３１】
さらに、前記複数の文字テーブルの各位置に含まれる前記各位置の空のステータスを表わす空フラグを備え、
前記特定する手段は、現行文字に対応する文字テーブル内の現行マッチに対応する位置における前記空フラグを選択することによって前記選択された文字テーブル出力が空であるかどうかを判定し、かつ、前記選択された空フラグが空のステータスを表わすかどうかを判定するように動作することを特徴とする請求項２７に記載の圧縮装置。
【請求項３２】
特定の文字テーブルに対応する特定の文字に最初に遭遇した際に前記特定の文字テーブルを生成するための手段をさらに備えることを特徴とする請求項２２に記載の圧縮装置。
【請求項３３】
文字テーブルは、前記文字テーブルのそれぞれの位置に対応するプレフィックス符号のリストを備えることを特徴とする請求項２２に記載の圧縮装置。
【請求項３４】
前記特定する手段は、
（ａ）前記記憶されたストリングの１つをマッチさせて現行マッチを提供し、
（ｂ）前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供し、
（ｃ）前記現行マッチが、前記現行文字に対応する前記文字テーブルのプレフィックス符号リストの中のプレフィックス符号の１つであるかどうかを判定し、
（ｄ）前記現行マッチが前記プレフィックス符号の１つである場合、前記現行マッチを前記プレフィックス符号の前記１つに対応する文字テーブルの中に記憶されている符号に設定し、かつ、（ｃ）の前記現行マッチが前記プレフィックス符号リストの中の前記プレフィックス符号の１つではないと判定されるまで（ｂ）から（ｄ）を繰り返して、
前記最長マッチを特定するよう動作する手段を備えることを特徴とする請求項３３に記載の圧縮装置。
【請求項３５】
前記出力する手段は、前記現行マッチを出力するための手段を備えることを特徴とする請求項３４に記載の圧縮装置。
【請求項３６】
前記挿入する手段は、
前記現行マッチを前記現行文字に対応する前記文字テーブルの前記プレフィックス符号リストの中に記憶して、前記現行文字に対応する前記文字テーブル内で前記現行マッチに対応する位置を確立するための手段と、
次の使用可能なストリング符号を提供するための手段と、
前記次の使用可能なストリング符号を前記確立された位置に記憶するための手段とを含み、
前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項３４に記載の圧縮装置。
【請求項３７】
圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するための手段を備えることを特徴とする請求項３５に記載の圧縮装置。
【請求項３８】
さらに、前記文字テーブルの所定のテーブルを記憶するためのキャッシュメモリを備えることを特徴とする請求項２２に記載の圧縮装置。
【請求項３９】
さらに、前記アルファベットの頻繁に出現する文字に対応する文字テーブルを記憶するためのキャッシュメモリを備えることを特徴とする請求項２２に記載の圧縮装置。
【請求項４０】
さらに、前記文字テーブル内に記憶されるストリングを所定のストリング長限度より短い所定の文字数に制限するための手段を備えることを特徴とする請求項２２に記載の圧縮装置。
【請求項４１】
さらに、前記アルファベットの稀にしか出現しない文字に対応する文字テーブルの生成を除外するための手段を備えることを特徴とする請求項３２に記載の圧縮装置。
【請求項４２】
さらに、所定の文字テーブルの長さを所定の文字テーブル長限度にそれぞれ制限するための手段を備えることを特徴とする請求項３３に記載の圧縮装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は特にＬＺＷ圧縮法に関連するＬＺデータ圧縮システムに関する。より詳細には、本発明は、圧縮器内にデータ文字ストリングを記憶し、そのデータ文字ストリングにアクセスするためのアーキテクチャおよびプロトコルに関する。
【背景技術】
【０００２】
エイブラハムレンペル（Abraham Lempel）教授とジェイコブジブ（Jacob Zib）教授により、今日、広く使用されているＬＺデータ圧縮−伸張システムのための理論的な基礎が提供された。両教授の独創性に富んだ２つの論文が、非特許文献１および非特許文献２に掲載された。ｖ．４２  ビス（bis）モデム圧縮−伸張のための標準として採用されたＬＺＷとして知られる、いたるところで使用されているデータ圧縮−伸張システムが、１９８５年１２月１０日に発行されたウェルチ（Welch）による特許文献１で説明されている。ＬＺＷは、ＧＩＦイメージ通信プロトコルにおいて使用される圧縮−伸張の標準として採用されており、ＴＩＦＦイメージ通信プロトコルにおいて利用されている。ＧＩＦは、ＣｏｍｐｕＳｅｒｖｅインコーポレーテッドの開発物であり、ＧＩＦという名称は、ＣｏｍｐｕＳｅｒｖｅインコーポレーテッドのサービスマークである。ＧＩＦ規格の典拠は、非特許文献３で見られる。ＴＩＦＦは、Ａｌｄｕｓコーポレーションの開発物であり、ＴＩＦＦという名称は、Ａｌｄｕｓコーポレーションの商標である。ＴＩＦＦ規格の典拠は、非特許文献４で見られる。
【０００３】
ＬＺ辞書ベースの圧縮−伸張システムのさらなる例が、以下の米国特許明細書で説明されている。すなわち、１９８４年８月７日に発行されたイーストマン他による特許文献２、１９８９年３月２１日に発行されたミラー他による特許文献３、１９８９年１０月２４日に発行されたストアラによる特許文献４、１９９２年１０月６日に発行されたクラークによる特許文献５、１９９４年１２月１３日に発行されたレンペル他による特許文献６１９９８年１１月１７日に発行されたクーパーによる特許文献７、および１９９９年１月１９日に発行されたウェルチ他による特許文献８である。
【０００４】
前述した辞書ベースのＬＺ圧縮−伸張システムでは、圧縮器辞書および伸張器辞書を、文字アルファベットの単独文字ストリングのすべてを使用して初期化することが可能である。一部の実施形態では、単独文字ストリングは、明示的に記憶されないが、認識されているものと見なされる。そのようなシステムでは、単独文字の値をその文字の符号として利用することが可能であり、複数の文字ストリングに関して利用される最初の使用可能な符号は、単独文字値より大きい値を有することになる。このようにすると、伸張器は、単独の文字ストリングと複数の文字ストリングを区別し、ストリングの文字を回復することができる。例えば、ＡＳＣＩＩ環境では、アルファベットは、２５６文字のアルファベットをサポートする８ビット文字サイズを有する。したがって、文字は、０〜２５５の値を有する。最初の使用可能な複数文字ストリング符号は、例えば、２５８とすることが可能であり、ただし、周知の通り、符号２５６および２５７は、制御符号として利用される。
【０００５】
従来技術の辞書ベースのＬＺ圧縮システムでは、データ文字ストリングは、周知の探索ツリーのアーキテクチャおよびプロトコルを利用して圧縮器辞書の中に記憶され、アクセスされる。通常、探索ツリーは、各ノードが文字を表わし、文字のストリングがツリーを通るノード間パスによって表わされるノード群に構成される。入力文字ストリームが、マッチするノードまで辞書ツリーの中でマッチされた際、次の入力文字がフェッチされて、ストリングマッチを継続するかどうかが決められる。従来、フェッチされた文字がマッチしたノードの拡張ノードとして既に記憶されているかどうかを確かめる判定が行われる。当技術分野でよく理解されている通り、この判定を行うのに、ハッシング（hashing）や兄弟（sibling）リストなどの様々な技術が利用される。
【０００６】
【特許文献１】
米国特許第４，５５８，３０２号明細書
【特許文献２】
米国特許第４，４６４，６５０号明細書
【特許文献３】
米国特許第４，８１４，７４６号明細書
【特許文献４】
米国特許第４，８７６，５４１号明細書
【特許文献５】
米国特許第５，１５３，５９１号明細書
【特許文献６】
米国特許第５，３７３，２９０号明細書
【特許文献７】
米国特許第５，８３８，２６４号明細書
【特許文献８】
米国特許第５，８６１，８２７号明細書
【非特許文献１】
IEEE Transactions on Information Theory, IT-23-3, May 1977, pp. 337-343
【非特許文献２】
IEEE Transactions on Information Theory, IT-24-5, September 1978, pp. 530-536
【非特許文献３】
GRAPHICS INTERCHANGE FORMAT, Version 89a, 31 July, 1990
【非特許文献４】
TIFF, Revision 6.0, Final - June 3, 1992
【発明の開示】
【発明が解決しようとする課題】
【０００７】
周知の辞書のアーキテクチャおよびプロトコルによって効率的なデータ圧縮システムが提供されるが、圧縮器パフォーマンスを向上させることが当技術分野における目的であることに変わりない。
【０００８】
本発明は、ＬＺタイプのデータ圧縮アルゴリズムのパフォーマンスを向上させると考えられる新しいストリング記憶(string storage)−アクセスのアーキテクチャおよびプロトコルを提供する。
【課題を解決するための手段】
【０００９】
本発明では、従来の探索ツリー構造の辞書ではなく、アルファベットのそれぞれの文字に対応する複数の文字テーブルが利用される。ストリングを記憶することが、そのストリングの拡張文字に対応する文字テーブル内のストリングに関連する符号をストリングプレフィックスの符号に対応する文字テーブル位置で記憶することによって行われる。入力データ文字ストリームは、現在フェッチされている文字に関連する文字テーブル内の現在マッチされているストリングの符号に対応するテーブル位置が空（empty）であるかどうかを判定することにより、記憶されたストリングと比較される。その位置は、空でない場合、現在フェッチされている文字で拡張された現在マッチされているストリングを含むストリングの符号を記憶している。このストリング符号は、次のフェッチされる文字に対して探索を続ける次のマッチとして利用することができる。しかし、その位置が空である場合、最長マッチは、現在マッチされているストリングであると特定され、そのストリングの符号が出力される。記憶されたストリングは、次の使用可能なストリング符号を空の位置に記憶することによって更新される。空の位置に遭遇した文字テーブルを選択するのに利用される現在の文字は、ストリングマッチングプロセスが最長マッチで終了するようにさせるマッチしない文字である。ＬＺＷ実施形態では、マッチしない文字を利用して、その文字を新しいストリングに対する初期現行マッチ（current match）として使用することによって次のストリング探索を始める。
【００１０】
本発明の代替の実施形態は、文字テーブルに対応する文字に最初に入力において遭遇した際に文字テーブルを作成することを含む。
【００１１】
さらなる実施形態は、ストリングプレフィックスの符号をストリングの符号と一緒に、ある文字テーブル位置に記憶し、最新の拡張ストリングに遭遇した際にテーブル位置を生成することに関する。
【００１２】
本発明は、より高い速度や、より高いパフォーマンスなどの相当な利点をもたらすと考えられるＬＺＷなどのデータ圧縮アルゴリズムのための新しい実施アーキテクチャを提供する。
【発明を実施するための最良の形態】
【００１３】
本発明の文字テーブル実施アーキテクチャを利用する以下に説明する最良の実施形態は、一般に、ＬＺＷ法を前提としている。実施形態は、単独文字ストリングが、圧縮器内部で明示的に初期化されないが、圧縮器によって認識されているものと見なされる前述したのと同様の実施上の特徴を利用する。
【００１４】
図１を参照すると、入力１１で印加された入力データ文字のストリームを圧縮して、出力１２における対応する圧縮された符号のストリームにするデータ圧縮器１０が示されている。本発明によれば、圧縮が行われているアルファベットのそれぞれのデータ文字に対応する文字テーブル１４〜１６を含む文字テーブル構造１３が含まれる。文字テーブル１４〜１６のそれぞれは、文字テーブル構造１３の中に記憶されたデータ文字ストリングのそれぞれストリング符号を記憶するための複数のテーブル位置２０から成る。文字テーブル１４〜１６のテーブル位置２０は、それぞれのインデックス２１でアクセスされる。
【００１５】
データ文字ストリングは、１つまたは複数の文字のプレフィックスストリングの後に、拡張文字が続いて構成される。文字テーブル構造１３の中にストリングを記憶することは、そのストリングの拡張文字に対応する文字テーブル１４〜１６の中にストリングプレフィックスの符号に対応する文字テーブル位置２０で、そのストリングに関連するストリング符号を記憶することによって行われる。プレフィックス符号は、インデックス２１として利用される。制御バス２５の制御下の双方向データ・バス２４を介して、圧縮器１０と文字テーブル構造１３の間でデータが通信される。
【００１６】
通常のＬＺＷデータ圧縮器では、辞書は、４０９６のストリング符号に制限される。この制限が本発明に適用される場合、プレフィックス符号インデックス２１およびストリング符号位置２０はそれぞれ１２ビット幅であり、インデックス２１は、示した通りの０から４０９５までの範囲にある。制御符号を考慮する場合、制御符号に対応するインデックスおよびテーブル位置は利用されないことが理解されよう。さらに、Ｎの文字アルファベットが存在すると、各文字テーブル１４〜１６の最初のＮ個のインデックスは、Ｎ個のそれぞれの文字に対応することも理解されよう。最初のＮ個のテーブル位置には、それぞれ文字値でインデックスが付けられる。例えば、ＡＳＣＩＩ環境では、アルファベットは、０〜２５５の値を有する２５６の文字のアルファベットをサポートする８ビット文字サイズを有する。最初の使用可能な複数文字ストリング符号は、例えば、２５８であることが可能であり、ただし、符号２５６および２５７は、制御符号として利用される。
【００１７】
圧縮器１０は、現行マッチレジスタ３０、現行文字レジスタ３１、符号カウンタ３２、および符号サイズレジスタ３３を含む。符号カウンタ３２は、説明する仕方で文字テーブル構造１３の中に記憶されるデータ文字ストリングに割り当てられるべき符号値を順次に生成する。符号サイズレジスタ３３は、周知の通り、出力１２から圧縮された符号を伝送するために利用されるビットの数を制御するのに利用される。説明する仕方で現行文字（current character）に従って適切な文字テーブル１４〜１６を選択するためのテーブル選択ロジック３４も含まれる。圧縮器１０は、以下に説明する図２の動作流れ図に従って圧縮器１０の動作を制御するためのコントロール３５もさらに含む。
【００１８】
さらに、入力１１で受け取られた入力データ文字ストリームをバッファする入力文字バッファ４０も含まれる。入力データ文字は、説明する動作に従って、入力文字バッファ４０からバス４１を介して現行文字レジスタ３１、および現行マッチレジスタ３０に印加される。圧縮器１０は、制御バス４２を介して入力文字バッファ４０から入力データ文字を獲得することを制御する。
【００１９】
簡単に述べると、圧縮器１０の動作は以下の通りである。圧縮器１０は、符号カウンタ３２を最初の使用可能な複数文字ストリング符号に設定し、符号サイズレジスタ３３を初期符号サイズに設定することによって初期化される。さらに、現行マッチレジスタ３０がクリアされ、文字テーブル１４〜１６がクリアされて空にされる。第１の入力データ文字が、現行マッチレジスタ３０にフェッチされて圧縮サイクルが開始される。後続の圧縮サイクルを始めるのに、現行マッチレジスタ３０が、先行する圧縮サイクルから特定されたマッチしない文字を含むように設定される。
【００２０】
圧縮サイクルの開始時に、次のデータ文字が現行文字レジスタ３１にフェッチされる。現行文字に対応する文字テーブル１４〜１６が選択され、選択された文字テーブル内の現行マッチに対応する位置が、インデックス２１を利用して現行マッチによってアクセスされる。アクセスされた位置が空でない場合、現行マッチレジスタ３０は、そのアクセスされた位置に含まれるストリング符号に設定される。次の現行文字をフェッチすること、現行文字に対応する文字テーブルを選択すること、および選択された文字テーブル内で現行マッチに対応する位置にアクセスすることが、アクセスされる位置が空になるまで続けられる。
【００２１】
アクセスされた位置が空である場合、符号カウンタ３２の中の符号が、その空の位置に記憶され、現行マッチレジスタ３０の中の符号が、最長マッチとして出力される。現行マッチレジスタ３０は、現行文字レジスタ３１の中のマッチしない文字に設定され、符号カウンタ３２は、次の使用可能な符号にインクリメントされる。制御は、現行文字レジスタ３１に次のデータ文字をフェッチすることに戻り、次の圧縮サイクルにおいて２番目に長いマッチの探索を始める。
【００２２】
図１を参照し続けながら、図２を参照すると、圧縮器１０によって実行される詳細な動作を示す制御流れ図が示されている。圧縮器１０のコントロール３５は、動作の実行を制御する状態マシンなどの適切な回路、または適切なソフトウェアを含むものと考えられている。図２の流れ図は、可変長の出力を前提としており、符号サイズレジスタ３３が、そのために利用される。ＡＳＣＩＩ可変長符号実施形態では、符号サイズは、９ビットで始まり、それぞれ、符号５１２、１０２４、および２０４８で１０ビット、１１ビット、および１２ビットに順次、増加する。固定の符号サイズも、この実施形態に適切な変更を加えて利用できることが理解されよう。
【００２３】
制御は、ブロック５０に進み、符号カウンタ３２が、第１の使用可能な符号に、例えば、ＡＳＣＩＩ環境において２５８に初期化される。ブロック５１で、符号サイズレジスタ３３が、開始符号サイズに、例えば、ＡＳＣＩＩ実施形態において９ビットに初期化される。ブロック５２で、現行マッチレジスタ３０が、クリアされ、文字テーブル１４〜１６がクリアされて空にされる。文字テーブルの位置２０でゼロを利用して空の状態を表わすことができる。ブロック５３で、現行マッチレジスタ３０に最初の入力データ文字がフェッチされ、ブロック５４で、現行文字レジスタ３１に次の入力データ文字がフェッチされる。
【００２４】
ブロック５５で、現行文字に対応する文字テーブル１４〜１６が選択され、ブロック５６で、選択された文字テーブル内の現行マッチに対応する位置が、インデックス２１を介してアクセスされる。テーブル選択ロジック３４を利用してテーブル選択が行われる。ブロック５７で、選択された文字テーブル内のアクセスされた位置が空でなかった場合、ブロック５７から「ＮＯ」分岐を辿ってブロック５８に進む。ブロック５８で、現行マッチレジスタ３０が、選択された文字テーブルのアクセスされた位置のストリング符号に設定される。その後、制御は、ブロック５４に戻り、現行文字レジスタ３１に次の入力データ文字をフェッチする。
【００２５】
ブロック５７で、選択された文字テーブル内のアクセスされた位置が空であった場合、ブロック５７から「ＹＥＳ」分岐を辿ってブロック７０に進む。これが行われた場合、文字テーブル構造１３の中の最長のマッチするストリングが特定されている。ブロック７０で、符号カウンタ３２の中の符号が、選択された文字テーブルの空のアクセスされた位置に記憶され、これにより、適切な拡張ストリングが記憶される。
【００２６】
制御は、ブロック７１に進み、現行マッチの符号が、圧縮器出力１２で提供される圧縮された符号ストリームの一部として出力される。現行マッチの符号は、現行マッチレジスタ３０によって提供され、符号サイズレジスタ３３によって表わされるビット数を利用して出力される。現行マッチが複数文字ストリングである場合、ストリングの符号は、現行マッチレジスタ３０の中に存在し、ブロック５７に関連して前述した通り、文字テーブル構造１３の中で見出された最長マッチであった。ブロック７１で出力される現行マッチは、単一の文字であることも可能であることが理解されよう。その場合の出力符号は、やはり現行マッチレジスタ３０から提供される文字の値である。
【００２７】
処理は、ブロック７２に進み、現行文字レジスタ３１の中の文字が、現行マッチレジスタ３０の中に設定される。したがって、現行マッチレジスタ３０には、ブロック５７でミスマッチに終わった文字が設定される。
【００２８】
次に、処理は、ブロック７３に進み、符号カウンタ３２の中の符号を試験して、符号サイズの増加が必要とされるかどうかが判定される。必要とされる場合、処理はブロック７４に進み、符号サイズレジスタ３３が、１だけインクリメントされる。ブロック７３で符号サイズの増加が必要とされない場合、ブロック７４を迂回して、処理は、ブロック７５に進む。ブロック７５で、符号カウンタ３２が１だけインクリメントされる。次に、制御は、ブロック５４に戻り、現行マッチレジスタ３０の中に設定されたマッチしない文字を使用して次の圧縮サイクルを開始する。
【００２９】
以上のことから、ブロック５４〜５８を含むループは、対応する文字テーブルを選択して、現行マッチによって表わされるストリングが文字テーブル構造の中に記憶されるかどうかを決める入力データ文字を順次にフェッチすることが理解されよう。ブロック５７から「ＹＥＳ」分岐が辿られる場合、最長のマッチするストリングが特定されており、そのストリングの符号が現行マッチレジスタの中にあり、マッチしない文字が現行文字レジスタの中にある。マッチしない文字で拡張された最長マッチを含む拡張ストリングは、ブロック７０で、符号カウンタの中の符号を、現行文字によって選択された文字テーブル内の現行マッチによってアクセスされる空の位置に挿入することによって、文字テーブル構造の中に容易に記憶される。
【００３０】
図１および図２を引続き参照しながら、図３を参照すると、図２の流れ図に従う圧縮器１０の動作の例が示されている。図３の最上部で、文字順序番号で順次の文字が特定された入力データ文字ストリームが示されている。これは、例のステップ全体で文字の進行を追うのを容易にするために行っている。順序番号は、文字特定の目的で示しており、実際のデータ文字ストリームの中では出現しないことが理解されよう。
【００３１】
この例は、概ね自明であり、行われるアクションが、左側の列の中に画され、アクションに関与する図２のブロックが、右側の列に示されている。現行文字に対応する選択された文字テーブルは、文字テーブル列の中で示され、現行文字値が、現行文字列の中で表されている。文字テーブルインデックスおよび文字テーブルストリング符号フィールドが、示した通りのそれぞれの列の中に例示されている。図２のブロック５７で、アクセスされた文字テーブル位置が空でない場合、その位置に記憶されているストリング符号が、括弧で示される。文字テーブルのインデックス列は、括弧内で、記憶されているストリングのプレフィックス符号が、選択された文字テーブルの位置にインデックスを付ける、またはアクセスするのに利用されることを示している。インデックスは、現行マッチによって提供されることが理解されよう。
【００３２】
図３の動作例は、データ文字ストリングを記憶し、記憶されているストリングに対する最長マッチを求めて入力ストリームを探索し、拡張されたストリングで記憶されているストリングを更新するための本発明の斬新なデータ圧縮実施アーキテクチャを図示している。例えば、アクション１は、２５８というストリング符号で「ｂ」文字テーブル内に記憶されたストリング「ａｂ」を示している。図１および図２に関連して前述した通り、フェッチされた現行文字「ｂ」により、ストリングプレフィックス符号「ａ」（現行マッチ）でインデックスが付けられた「ｂ」文字テーブルが選択され、符号カウンタからのストリング符号２５８が、選択された文字テーブルのアクセスされた位置に記憶される。ストリングは、図２のブロック７０で説明する通り記憶される。というのは、ブロック５７で、選択された文字テーブルのアクセスされた位置が空であると判定されたからである。
【００３３】
アクション３で、このストリング「ａｂ」に「ｂ」文字テーブル内で遭遇し、アクション４で、ストリング「ａｂ」が、「ａ」文字テーブル内で拡張されて、「ａ」文字テーブルは、ストリング「ａｂａ」を記憶する。アクション４で示した通り、このストリングには、符号カウンタからストリング符号２６０が割り当てられる。アクション３で、このストリングは、以前に記憶されているものとして遭遇されている。というのは、ブロック５７で、選択された文字テーブル内のアクセスされた位置が空ではなかったからである。アクション４で見られる通り、アクション３で括弧内に示されたストリング符号２５８が、図２のブロック５８で現行マッチレジスタの中に設定される。
【００３４】
本明細書で説明する実施形態では、最後の入力データ文字がフェッチされた際、現行マッチレジスタ３０の中の値が、最後の圧縮された符号として出力される。したがって、アクション１９で、例示した入力データ文字ストリームの最後の文字が、図示する通り出力される。
【００３５】
図２のブロックに関連する図３のアクションのより詳細な説明は、一目瞭然であり、簡明にするために提供しない。
【００３６】
図１〜図３を引続き参照しながら図４を参照すると、本発明のデータ圧縮器の代替の最良の実施形態が示されている。図４の実施形態は、ハードウェア実施形態に特に適している。図４の実施形態の構成要素の多くは、図１の実施形態の構成要素に対応し、図１の対応する構成要素の符号よりも１００だけ大きい符号が付けられている。さらに、図４のさらなる構成要素が、図２のブロックに対応し、図２の対応するブロックの符号よりもやはり１００だけ大きい符号が付けられている。図１および図２に関連して上記で提供した説明は、図４のそれらの構成要素の構造および動作にも当てはまる。さらに、図４の圧縮器は、選択回路１８０および１８１、並びにテーブル出力バッファ１８４〜１８６を含む。
【００３７】
図１および図２に関連して上記で提供した構造上および機能上の説明は、図４の圧縮器の構造および動作にも当てはまるが、現行文字レジスタ１３１の中の現行文字に従って文字テーブル１１４〜１１６を選択するための相当な追加の特徴が、図４の圧縮器に含まれる。図４の圧縮器では、現行マッチレジスタ１３０の中の現行マッチが、インデックス１２１を介して文字テーブル１１４〜１１６に同時にアクセスする。現行文字レジスタ１３１の中の現行文字により、選択回路１８０を介して適切なアクセスされたストリング符号出力が選択される。文字テーブル１１４〜１１６からのストリング符号出力が、テーブル出力バッファ１８４〜１８６の中にそれぞれ入れられる。
【００３８】
同様に、現行文字レジスタ１３１の中の現行文字により、符号カウンタ１３２の中の符号が現行マッチレジスタ１３０の中の現行マッチによってアクセスされた空の位置に記憶される文字テーブル１１４〜１１６が、選択回路１８１を介して選択される。
【００３９】
図４の圧縮器のステップバイステップ（step by step）の動作は次の通りである。符号カウンタ１３２、並びに空のステータスに関して選択された文字テーブル位置を試験する検出器１５７に応答するコントローラ１３５が、図４のブロックのすべてに制御入力を提供して、図４のブロックの動作を制御する。コントローラ１３５は、動作を順に行う状態マシンを含むことが可能である。最初、符号カウンタ１３２が、制御入力１５０を介して最初の使用可能な符号に初期化され、現行マッチレジスタ１３０がクリアされ、文字テーブル１１４〜１１６がクリアされて空の状態になる。
【００４０】
最初の圧縮サイクルで、最初の入力データ文字が、入力文字バッファ１４０から現行マッチレジスタ１３０にバス１５３を介してフェッチされ、次の入力データ文字が、バス１５４を介して現行文字レジスタ１３１にフェッチされる。後続の圧縮サイクルでは、現行文字レジスタ１３１からの現行文字を現行マッチレジスタ１３０にバス１７２を介して転送することにより、現行マッチレジスタ１３０が、先行する圧縮サイクルから特定されたマッチしない文字を含むように設定される。
【００４１】
圧縮サイクルの開始時に、次の入力文字が現行文字レジスタ１３１にフェッチされ、現行マッチが、文字テーブル１１４〜１１６の中の自らに対応する位置にテーブルインデックス１２１を介して並行してアクセスする。アクセスされたストリング符号位置１２０の内容は、それぞれ、テーブル出力バッファ１８４〜１８６の中に同時に読み込まれる。現行文字に対応する文字テーブル出力が、選択回路１８０によって選択され、検出器１５７によって空であるか試験される。選択された文字テーブル内のアクセスされた位置１２０が空でなかった場合、コントローラ１３５により、選択回路１８０が、現行マッチレジスタ１３０を現行文字によって選択された文字テーブルストリング符号出力に設定することが可能にされる。そして、次の入力データ文字が、入力文字バッファ１４０から現行文字レジスタ１３１にバス１５４を介してフェッチされる。コントローラ１３５は、検出器１５７が、現行マッチによってアクセスされ、現行文字によって選択された文字テーブル位置が空であることを示すまで、以上の動作の反復を制御する。
【００４２】
アクセスされた位置が空であった場合、符号カウンタ１３２の中の符号は、現行文字によって選択された文字テーブルのストリング符号フィールドの中に、現行マッチに対応するアクセスされた位置で記憶されるように、選択回路１８１によって導かれる。その後、現行マッチが、符号サイズコントロール１３３によって決められたビット数を利用してバス１７１を介して出力される。コントローラ１３５は、周知の仕方で符号カウンタ１３２の中のカウントに従って適切な符号サイズを選択するように符号サイズコントロール１３３を制御する。
【００４３】
次の圧縮サイクルを準備するため、現行マッチレジスタ１３０が、バス１７２を介して現行マッチレジスタ１３１の中のマッチしない文字に設定され、符号カウンタ１３２が、入力１７５を介して次の使用可能な符号にインクリメントされる。
【００４４】
図３の動作例は、図４の実施形態にも当てはまることが理解されよう。
【００４５】
図１〜図４を引続き参照しながら、同様の符号が図４に関するのと同様の構成要素を示している図５を参照すると、本発明の圧縮器の代替の最良の実施形態が示されている。図５の実施形態は、図４の実施形態と実質的に同一であり、したがって、図２に描いた動作の流れに全体的に従って図４に関連して前述した通り動作する。図４の実施形態と図５の実施形態の間の主な差は、文字テーブル位置の空のステータスが検出される仕方である。図４の実施形態では、文字テーブルは、例えば、位置１２０のすべてをゼロなどの空の指示に設定することにより、最初にクリアされて空にされたものである。図５の実施形態では、１ビット空フラグ２００を文字テーブル１１４〜１１６のそれぞれの各ストリング符号位置１２０が含むようにされる。図５の実施形態では、文字テーブルを空に初期化するのに、各文字テーブル位置で空フラグ２００をリセットするだけでよい。
【００４６】
符号カウンタ１３２は、文字テーブル位置の占有ステータスを示すように１に設定される１ビット拡張子２０１を含む。前述した通り、拡張されたストリングが文字テーブル構造１１３の中に記憶される際、前述した通り、選択された文字テーブルのアクセスされた位置に符号カウンタ１３２の中の符号が書き込まれるだけでなく、ビット２０１も関連する空フラグ２００に書き込まれて、フラグを「占有」に設定する。前述した通り、文字テーブルが選択回路１８１によって選択され、そのテーブル内の適切な位置が、現行マッチレジスタ１３０によってアクセスされる。
【００４７】
図５の実施形態では、図２のブロック５７における空であるかどうかの試験が、現行文字レジスタ１３１に結合された選択回路２０２によって行われる。選択回路２０２は、現行文字によって選択された文字テーブルからの現行マッチによってアクセスされる現行テーブル位置に関連する空フラグ２００を選択する。選択回路２０２は、前述した通り空試験を行い、結果の動作を制御するようにコントローラ２０３に入力を提供する。コントローラ２０３は、図４に関連して前述したコントローラ１３５の機能を行うことが理解されよう。さらに、図３の動作例が、図５の実施形態にも当てはまることが理解されよう。
【００４８】
図４および図５に関連して前述した通り、現行マッチレジスタ１３０は、圧縮サイクルの終り頃に現行文字に設定され、これにより、文字テーブル１１４〜１１６のすべてのインデックス１２１が同時にアクセスされる。アクセスされた文字テーブル位置の内容は、テーブルからテーブル出力バッファ１８４〜１８６に同時に読み込まれる。したがって、圧縮サイクルの開始時に、アクセスされたストリング符号位置１２０からの適切な値が、テーブル出力バッファ１８４〜１８６の中に存在し、サイクルの開始時に現行文字が現行文字レジスタ１３１の中にフェッチされた際に選択回路１８０を介して選択される準備ができている。図４および図５の圧縮器は、現行文字がフェッチされた後に文字テーブル選択、および文字テーブル読取りを待つことを要さない。この構成により、圧縮器速度のさらなる向上が行われるものと考えられる。
【００４９】
図１〜図３を引続き参照しながら、同様の符号が図１に関するのと同様の構成要素を示す図６を参照すると、本発明のデータ圧縮器の代替の最良の実施形態が示されている。図６の実施形態は、図１および図２に関連して前述したのと同様の仕方で構成され、動作するが、図６の実施形態は、さらなる機能強化を提供する相当な追加の特徴を含む。
【００５０】
図１および図２の実施形態、並びに図４および図５の実施形態は、前述した通り、既定の文字テーブルを利用する。図６の実施形態では、文字テーブルは、文字テーブルに対応する文字に入力において最初に遭遇した際に確立される。さらなる特徴として、文字テーブル内の位置は、前述した拡張ストリングを記憶すべき位置が必要とされる際に確立される。以上の追加の特徴を利用することにより、圧縮器の動作によって実際に利用される文字テーブルメモリだけが必要とされる。
【００５１】
したがって、図６の実施形態は、文字テーブル３０１〜３０３を例示する文字テーブル構造３００を含む。各文字テーブル３０１〜３０３は、現行文字レジスタ３１の中で文字テーブルに対応する入力データ文字に最初に遭遇した際に確立される。図６の実施形態の追加の特徴の実施を容易にするため、文字テーブル３０１〜３０３は、ストリングの符号が記憶されるべき位置３０６、およびストリングのプレフィックスの符号が記憶されるべき対応する位置を含む。記憶されたプレフィックス符号により、対応するストリング符号３０６にインデックスをつけ、アクセスを行うのに使用するプレフィックス符号リスト３０７が提供される。
【００５２】
図６の実施形態は、前述した現行マッチレジスタ３０と、現行文字レジスタ３１と、符号カウンタ３２と、符号サイズレジスタ３３とを含む圧縮器３１０を含む。さらに、圧縮器３１０は、テーブル生成−選択ロジック３１１、および文字テーブル構造３００の「オンザフライ（on-the-fly）」生成で利用される文字テーブルリンク３１２を含む。文字テーブルリンク３１２は、アルファベットの個々の文字でインデックスが付けられたディレクトリとして構成されて、文字テーブル構造３００の中の対応する文字テーブルに対するそれぞれアドレスリンクを提供することが可能である。入力データ文字に関してリンクが記憶されていない場合、その文字に関する文字テーブルは、まだ確立されていない。入力データ文字に圧縮器３１０が最初に遭遇し、現行文字レジスタ３１の中にフェッチされた際、ロジック３１１が、新たに遭遇した文字に対応するようにディレクトリ３１２の中で記憶（storage）のためのアドレスリンクを選択する。次に、ロジック３１１は、そのアドレスによってリンクされた文字テーブルを生成して、文字に対応する文字テーブルを提供するようにする。
【００５３】
圧縮器３１０は、図７の動作流れ図に従って圧縮器３１０の動作を制御するためのコントロール３１３をさらに含む。
【００５４】
図１、２、および図６を引続き参照しながら、図７を参照すると、圧縮器３１０によって実行される詳細な動作を示す制御流れ図が示されている。圧縮器３１０のコントロール３１３は、動作の実行を制御する状態マシン（state machine）などの適切な回路、または適切なソフトウェアを含むものと考えられている。図７の流れ図は、図２に関連した前述した仕方で可変長出力を前提としている。図２に関連した上記で提供した説明は、該当する場合、図７の流れ図にも当てはまる。
【００５５】
制御はブロック３５０〜３５４に進み、図２のブロック５０〜５４にそれぞれ関連して前述したのと同様の機能を行う。ブロック３５２で、現行マッチレジスタがクリアされることに留意されたい。図２のブロック５２でクリアされた文字テーブルは、図６の実施形態ではまだ確立されていない。
【００５６】
ブロック３５５で、圧縮器３１０が、現行文字に関して文字テーブルが確立されているかどうかを判定する。この判定を行うために文字テーブルリンク３１２が調べられる。ブロック３５５で、現行文字に関して文字テーブルが確立されている場合、ブロック３５５から「ＹＥＳ」分岐を辿ってブロック３５６に進む。ブロック３５６で、現行文字に対応する文字テーブルが、テーブル生成−選択ロジック３１１を利用して選択される。
【００５７】
ブロック３５７で、現行マッチが選択された文字テーブルのプレフィックス符号リスト３０７と比較されて、現行マッチがプレフィックス符号リストの中に存在するかどうかが判定される。プレフィックス符号リストは、現行マッチを求めて連想式に（associatively）探索すること、または代替として、プレフィックス符号リストが現行マッチとの比較を行うようにプレフィックス符号の順序付けされ、リンクされたリストを含むことが可能である。当技術分野で周知の他のリスト探索手続きを同じ目的で利用することも可能である。現行マッチがプレフィックス符号リストの中で見出された場合、ブロック３５７から「ＹＥＳ」分岐を辿ってブロック３５８に進む。
【００５８】
ブロック３５８で、選択された文字テーブル内の現行マッチに対応する位置にアクセスが行われ、ブロック３５９で、現行マッチレジスタ３０が、選択された文字テーブルのアクセスされた位置のストリング符号に設定される。次に、制御はブロック３５４に戻り、次の文字を現行文字レジスタ３１にフェッチして、最長マッチの探索を続ける。
【００５９】
ブロック３５４〜３５９から成るループは、全体として図２のブロック５４〜５８に関連して前述した通りに文字テーブル構造３００の中で最長のマッチするストリングを探索することが理解されよう。図６の実施形態では、ブロック３５７でプレフィックス符号リストの中で現行マッチが見出された時点で、最長マッチはまだ特定されていない。しかし、ブロック３５７で、選択された文字テーブルのプレフィックス符号リストの中に現行マッチが存在しない場合、最長マッチが特定されており、ブロック３５７から「ＮＯ」分岐を辿ってブロック３７０に進む。
【００６０】
したがって、ブロック３７０で、現行マッチレジスタ３０の中の現行マッチが、選択された文字テーブルのプレフィックス符号リスト３０７に追加される。したがって、ブロック３７０で、現行マッチに対応する選択された文字テーブル内の位置が確立される。プレフィックス符号リストが、順序付けされ、リンクされたリストを含む場合、現行マッチは、適切な順序でプレフィックス符号リストの中に挿入され、リンクされる。ブロック３７１で、符号カウンタ３２からの符号が、ブロック３７０で確立された選択された文字テーブル内に位置のストリング符号フィールドの中に記憶される。図６のブロック３７１は、適切な拡張ストリングが記憶される動作の流れにおいて、図２のブロック７０に対応することが理解されよう。
【００６１】
制御はブロック３７１からブロック３９１〜３９５に進み、図２のブロック７１〜７５に関連して前述した機能が行われる。ブロック３９５の機能を実行した後、制御はブロック３５４に戻り、次の入力文字を現行文字レジスタ３１にフェッチして次の圧縮サイクルを開始する。
【００６２】
ブロック３５５で現行文字に関して文字テーブルが確立されていない場合、ブロック３５５から「ＮＯ」分岐を辿ってブロック３８０に進む。ブロック３８０で、現行文字に対応する文字テーブルが確立され、現行マッチが、確立された文字テーブルのプレフィックス符号リスト３０７の最初のエントリとして入力される。この最初のエントリは、確立された文字テーブル内で現行マッチに対応するストリング符号位置３０６を確立する。テーブル生成−選択ロジック３１１および文字テーブルリンクが、文字テーブルを確立する際に、前述した通り利用される。
【００６３】
ブロック３８１で、符号カウンタ３２からの符号が、確立された文字テーブル内の確立されたストリング符号位置３０６に記憶される。したがって、ブロック３７１の場合と同様に、適切な拡張ストリングが図２のブロック７０に関連して前述した仕方で記憶される。次に制御は、前述した通り、ブロック３９１〜３９５に進む。
【００６４】
図３の動作例は、図６の実施形態にも当てはまることが理解されよう。
【００６５】
図６の実施形態は、文字テーブルの「オンザフライ」生成、並びに文字テーブルの位置に関して説明したが、以上の特徴は、別々に使用することも可能であることが理解されよう。文字テーブルを確立する特徴が別個に利用される場合、図１に例示した完全な文字テーブルが、図１に関連した前述した仕方で確立され、インデックスが付けられることが可能である。そのような実施形態では、図６および７に関連して説明した通りプレフィックス符号リストを利用するのではなく、図２のブロック５７に関連して説明した通り、文字テーブル位置が空のステータスに関して試験される。
【００６６】
文字テーブル位置を確立する特徴が別個に利用される場合、図６の文字テーブルリンクは、説明した通りに使用されない。代わりに、プレフィックス符号を有する既定の文字テーブルが利用される。
【００６７】
図１〜図３を引続き参照しながら、同様の符号が図１に関連するのと同様の構成要素を示す図８を参照すると、本発明のデータ圧縮器の代替の最良の実施形態が示されている。図８の実施形態は、図１の実施形態と実質的に同一であり、ただし、文字テーブル構造が、キャッシュに入れられた文字テーブルとキャッシュに入れられない文字テーブルに分離されることが異なっている。
【００６８】
したがって、文字テーブル構造４００は、キャッシュに入れられたセクション４０１とキャッシュに入れられないセクション４０２から成る。データが、制御バス４０４の制御下の双方向データバス４０３を介して、圧縮器１０とキャッシュに入れられた文字テーブル４０１の間で通信される。データが、制御バス４０６の制御下の双方向データバス４０５を介して、圧縮器１０とキャッシュに入れられない文字テーブル４０２の間で通信される。
【００６９】
圧縮器１０は、図１および図２に関連した、前述したのと同様の仕方で図８の実施形態によって行われる動作の実行を制御するためのコントロール４１０を含む。さらに、コントロール４１０は、キャッシュに入れられたセクション４０１およびキャッシュに入れられないセクション４０２に関連して行われる動作も制御する。
【００７０】
キャッシュに入れられたセクション４０１は、当技術分野で周知のタイプの比較的小型の高速キャッシュメモリによって実施される。キャッシュに入れられないセクション４０２は、より大きくより低速のメモリ構成を使用して実施されることが可能である。図８の実施形態を利用して、アルファベット文字の頻度分布が既知である、または特定可能である種類のひとまとまりのデータからのデータを圧縮する場合、頻繁に遭遇する文字に対応する文字テーブルがキャッシュに入れられたセクション４０１の中で確立され、他方、稀にしか遭遇しない文字に対応する文字テーブルが、キャッシュに入れられないセクション４０２の中で確立される。全体的な速度の向上が、この構成によって実現されるものと考えられる。
【００７１】
図８の実施形態によれば、入力データの自動統計解析を提供すること、および頻繁に出現することが動的に見出されるアルファベットの文字に対応する文字テーブルをキャッシュに入れられたセクション４０１の中で自動的かつ動的に維持するためのロジックを圧縮器１０内部で提供することにより、自動的、かつ動的に構成可能にすることができる。
【００７２】
図３の動作例は、図８の実施形態にも当てはまることが理解されよう。
【００７３】
図６および図７を引続き参照しながら、図９を参照すると、さらなる望ましい特徴を制御するための図６の圧縮器３１０に対する追加が、概略的に描かれている。具体的には、図９の圧縮器３１０は、ストリング長制限ロジック３２０と、文字テーブル除外ロジック３２１と、文字テーブル長制限ロジック３２２とを含む。
【００７４】
ストリング長制限ロジック３２０は、図６の文字テーブル構造３００の中に記憶されるストリングの長さを制限する。適切な文字カウントロジックが、図７のブロック３５４でフェッチされる文字のカウントを保持するためにロジック３２０の中に含められる。探索されている入力ストリングの長さがストリング長限度を超えた場合、図７のブロック３９１〜３９５が、拡張されたストリングを記憶することなく実行される。ストリング長制限ロジック３２０は、再び出現する可能性の低い過度に長いストリングを記憶から除外するのに利用される。
【００７５】
文字テーブル除外ロジック３２１は、稀にしか出現しない可能性が高いアルファベット文字に対応する文字テーブルの生成を除外するのに利用される。このようにすると、出現する可能性が低い拡張文字で終わるストリングが、文字テーブル構造３００の中に記憶されることがない。ロジック３２１は、現行文字が、そのような稀にしか出現しない文字であるかどうかを判定するブロック３５５に関連する図７の機能を含めることによって実施することができる。稀にしか出現しない文字であると判定された場合、現行文字に対応する文字テーブルは生成されず、図７のブロック３９１〜３９５が実行されて圧縮サイクルが完了する。ロジック３２１の使用により、稀にしか出現しない文字で終り、したがって、繰り返される可能性が低いストリングが、記憶から除外される。
【００７６】
文字テーブル長制限ロジック３２２は、文字テーブル３０１〜３０３の長さをそれぞれの所定の数の位置に制限するのに利用される。図７のブロック３５７および３７０で使用されるカウンタがロジック３２２の中に含められる。図７のブロック３７０で文字テーブル内に位置が確立される前に、適切な文字テーブル位置カウンタが調べられて、文字テーブル内でさらなるスペースが存在するかどうかを判定してから位置が確立される。文字テーブル長限度を超えた場合、位置は確立されず、ストリングはブロック３７１で記憶されない。次に、図７のブロック３９１〜３９５が実行されて、圧縮サイクルが終了する。文字テーブル長限度は、文字出現頻度基準に依拠して確立することができる。頻繁に出現する文字に関する文字テーブルは、稀にしか出現しない文字に関する文字テーブルよりも長いことが可能である。
【００７７】
図９に示した特徴は、図６の実施形態に含めることに関して説明したが、これらの特徴は、本発明の前述した実施形態のいずれに含めることも可能であることが理解されよう。
【００７８】
図１〜図８の実施形態のそれぞれによって提供される圧縮された符号出力は、標準のＬＺＷ伸張器に適合し、圧縮された符号出力に対応するデータ文字ストリームは、標準のＬＺＷ伸張器によって回復できることが理解されよう。図９に関連して前述した特徴が、圧縮器に含められる場合、対応するロジックが伸張器において利用されなければならない。
【００７９】
さらなる入力データ文字が用意されていない場合、前述した実施形態は、現行マッチを出力して処理を終えることがさらに理解されよう。
【００８０】
本発明のアーキテクチャは、ＧＩＦのＬＺＷ圧縮要件を実施する際に使用するのが特に有利である。ＧＩＦプロトコルでは、ＬＺＷ文字サイズは、圧縮が行われるデータ文字アルファベットのサイズにマッチするように調整される。例えば、図６の実施形態では、アルファベット文字に最初に遭遇した際に文字テーブルが生成されるので、図６の実施形態により、アルファベットサイズに対するＬＺＷプロセスの自動的な適応が提供される。また、ＧＩＦ処理においてしばしば、遭遇するより少ないアルファベットに見合ったより少ない数の文字テーブルを使用することも有利である。
【００８１】
以上のことから、本発明の実施アーキテクチャにより、圧縮器速度の向上がもたらされるべきことが理解されよう。本発明は、文字テーブル位置の明確なアクセスを利用し、これにより、従来技術のハッシング実施形態または従来技術の兄弟リスト探索において衝突解決に要する時間がなくなる。さらに、本発明のアーキテクチャは、図４および図５に関連して前述した並列の文字テーブルアクセスに特に適している。図４および図５の実施形態に関して、本発明はハードウェア実施形態に容易に適応可能であり、ハードウェア実施形態に本来備わっている速度の利点の恩恵を受けることに留意されたい。また、前述した実施形態が明示する実施形態の単純さのため、さらなるパフォーマンスの向上が実現されるべきことも理解されよう。
【００８２】
本発明の前述した実施形態はＬＺＷベースであるが、本発明のアーキテクチャは他の周知の辞書ベースの圧縮方法で利用することも可能であることが理解されよう。さらに、本発明のアーキテクチャはアルファベットのそれぞれの文字に対応する文字テーブルを前提としているので、入力データ文字は任意の対応する文字ビットサイズを有する任意のサイズのアルファベットにわたることが可能であることも理解されよう。例えば、データ文字は、テキストデータ、イメージピクセルデータ、またはビットマップデータであることが可能である。入力データは、１ビットサイズ文字を有する２文字の２進アルファベット１および０に関する２進文字であることも可能である。
【００８３】
本発明の前述した実施形態は、ハードウェア、ファームウェア、ソフトウェア、または以上の組合せで実施できることが理解されよう。様々な前述した機能を行うためのディスクリート回路実施形態を容易に実施することができる。ソフトウェア実施形態では、以上の説明から容易に生成されるコーディングでプログラミングされた適切なモジュールを利用することができる。
【００８４】
本発明は、好ましい実施形態において説明してきたが、使用した言葉は、制限するものではなく、説明する言葉であり、より広い態様における本発明の真の範囲および趣旨を逸脱することなく、頭記の特許請求の範囲内で、変更を行うことが可能であることを理解されたい。
【図面の簡単な説明】
【００８５】
【図１】本発明によるデータを圧縮するためのデータ圧縮器を示す概略ブロック図である。図１の実施形態では、文字テーブルは、既定である。図１のデータ圧縮器は、ソフトウェア実施形態としての実施に特に適している。
【図２】本発明によるデータ圧縮を行うように図１の圧縮器によって実行される動作を示す制御流れ図である。
【図３】図２の制御流れ図に従った図１の圧縮器の動作を例示する図である。
【図４】本発明によるデータを圧縮するためのデータ圧縮器の代替の実施形態を示す概略ブロック図である。図４のデータ圧縮器は、ハードウェア実施形態として実施するのに特に適している。
【図５】文字テーブル位置の空のステータスを判定するための代替の構成を提示する図４と同様の概略ブロック図である。
【図６】本発明によるデータを圧縮するためのデータ圧縮器の代替の実施形態を示す概略ブロック図である。図６の実施形態では、文字テーブル、および文字テーブルの位置は、必要とされる時点で確立される。図６のデータ圧縮器は、ソフトウェア実施形態として実施するのに特に適している。
【図７】本発明によるデータ圧縮を行うように図６の圧縮器によって実行される動作を示す制御流れ図である。
【図８】頻繁に選択される文字テーブルがキャッシュメモリの中に記憶されている図１と同様の概略ブロック図である。
【図９】本明細書で説明する本発明の実施形態に含めるためのオプションの特徴を例示する概略ブロック図である。
【図１】
2005501445.tif 000003
【図２】
2005501445.tif 000004
【図３】
2005501445.tif 000005
【図４】
2005501445.tif 000006
【図５】
2005501445.tif 000007
【図６】
2005501445.tif 000008
【図７】
2005501445.tif 000009
【図８】
2005501445.tif 000010
【図９】
2005501445.tif 000011
【国際公開パンフレット】
2005501445.tif 000012
2005501445.tif 000013
2005501445.tif 000014
2005501445.tif 000015
2005501445.tif 000016
2005501445.tif 000017
2005501445.tif 000018
2005501445.tif 000019
2005501445.tif 000020
2005501445.tif 000021
2005501445.tif 000022
2005501445.tif 000023
2005501445.tif 000024
2005501445.tif 000025
2005501445.tif 000026
2005501445.tif 000027
2005501445.tif 000028
2005501445.tif 000029
2005501445.tif 000030
2005501445.tif 000031
2005501445.tif 000032
2005501445.tif 000033
2005501445.tif 000034
2005501445.tif 000035
2005501445.tif 000036
2005501445.tif 000037
2005501445.tif 000038
2005501445.tif 000039
2005501445.tif 000040
2005501445.tif 000041
2005501445.tif 000042
2005501445.tif 000043
2005501445.tif 000044
2005501445.tif 000045
2005501445.tif 000046
2005501445.tif 000047
2005501445.tif 000048
2005501445.tif 000049
2005501445.tif 000050
2005501445.tif 000051
2005501445.tif 000052
2005501445.tif 000053
2005501445.tif 000054
2005501445.tif 000055
2005501445.tif 000056
2005501445.tif 000057
2005501445.tif 000058
2005501445.tif 000059
【国際公開パンフレット（コレクトバージョン）】
2005501445.tif 000060
2005501445.tif 000061
【国際調査報告】
2005501445.tif 000062
2005501445.tif 000063