JP4156381B2 - 文字テーブルによって実施されるデータ圧縮の方法および装置 - Google Patents

文字テーブルによって実施されるデータ圧縮の方法および装置 Download PDF

Info

Publication number
JP4156381B2
JP4156381B2 JP2002592294A JP2002592294A JP4156381B2 JP 4156381 B2 JP4156381 B2 JP 4156381B2 JP 2002592294 A JP2002592294 A JP 2002592294A JP 2002592294 A JP2002592294 A JP 2002592294A JP 4156381 B2 JP4156381 B2 JP 4156381B2
Authority
JP
Japan
Prior art keywords
character
current
string
match
character table
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.)
Expired - Fee Related
Application number
JP2002592294A
Other languages
English (en)
Other versions
JP2005501445A (ja
Inventor
ビー.クーパー アルベルト
Original Assignee
ユニシス コーポレーション
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 ユニシス コーポレーション filed Critical ユニシス コーポレーション
Publication of JP2005501445A publication Critical patent/JP2005501445A/ja
Application granted granted Critical
Publication of JP4156381B2 publication Critical patent/JP4156381B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • 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/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は特にLZW圧縮法に関連するLZデータ圧縮システムに関する。より詳細には、本発明は、圧縮器内にデータ文字ストリングを記憶し、そのデータ文字ストリングにアクセスするためのアーキテクチャおよびプロトコルに関する。
エイブラハムレンペル(Abraham Lempel)教授とジェイコブジブ(Jacob Zib)教授により、今日、広く使用されているLZデータ圧縮−伸張システムのための理論的な基礎が提供された。両教授の独創性に富んだ2つの論文が、非特許文献1および非特許文献2に掲載された。v.42 ビス(bis)モデム圧縮−伸張のための標準として採用されたLZWとして知られる、いたるところで使用されているデータ圧縮−伸張システムが、1985年12月10日に発行されたウェルチ(Welch)による特許文献1で説明されている。LZWは、GIFイメージ通信プロトコルにおいて使用される圧縮−伸張の標準として採用されており、TIFFイメージ通信プロトコルにおいて利用されている。GIFは、CompuServeインコーポレーテッドの開発物であり、GIFという名称は、CompuServeインコーポレーテッドのサービスマークである。GIF規格の典拠は、非特許文献3で見られる。TIFFは、Aldusコーポレーションの開発物であり、TIFFという名称は、Aldusコーポレーションの商標である。TIFF規格の典拠は、非特許文献4で見られる。
LZ辞書ベースの圧縮−伸張システムのさらなる例が、以下の米国特許明細書で説明されている。すなわち、1984年8月7日に発行されたイーストマン他による特許文献2、1989年3月21日に発行されたミラー他による特許文献3、1989年10月24日に発行されたストアラによる特許文献4、1992年10月6日に発行されたクラークによる特許文献5、1994年12月13日に発行されたレンペル他による特許文献61998年11月17日に発行されたクーパーによる特許文献7、および1999年1月19日に発行されたウェルチ他による特許文献8である。
前述した辞書ベースのLZ圧縮−伸張システムでは、圧縮器辞書および伸張器辞書を、文字アルファベットの単独文字ストリングのすべてを使用して初期化することが可能である。一部の実施形態では、単独文字ストリングは、明示的に記憶されないが、認識されているものと見なされる。そのようなシステムでは、単独文字の値をその文字の符号として利用することが可能であり、複数の文字ストリングに関して利用される最初の使用可能な符号は、単独文字値より大きい値を有することになる。このようにすると、伸張器は、単独の文字ストリングと複数の文字ストリングを区別し、ストリングの文字を回復することができる。例えば、ASCII環境では、アルファベットは、256文字のアルファベットをサポートする8ビット文字サイズを有する。したがって、文字は、0〜255の値を有する。最初の使用可能な複数文字ストリング符号は、例えば、258とすることが可能であり、ただし、周知の通り、符号256および257は、制御符号として利用される。
従来技術の辞書ベースのLZ圧縮システムでは、データ文字ストリングは、周知の探索ツリーのアーキテクチャおよびプロトコルを利用して圧縮器辞書の中に記憶され、アクセスされる。通常、探索ツリーは、各ノードが文字を表わし、文字のストリングがツリーを通るノード間パスによって表わされるノード群に構成される。入力文字ストリームが、マッチするノードまで辞書ツリーの中でマッチされた際、次の入力文字がフェッチされて、ストリングマッチを継続するかどうかが決められる。従来、フェッチされた文字がマッチしたノードの拡張ノードとして既に記憶されているかどうかを確かめる判定が行われる。当技術分野でよく理解されている通り、この判定を行うのに、ハッシング(hashing)や兄弟(sibling)リストなどの様々な技術が利用される。
米国特許第4,558,302号明細書 米国特許第4,464,650号明細書 米国特許第4,814,746号明細書 米国特許第4,876,541号明細書 米国特許第5,153,591号明細書 米国特許第5,373,290号明細書 米国特許第5,838,264号明細書 米国特許第5,861,827号明細書 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
周知の辞書のアーキテクチャおよびプロトコルによって効率的なデータ圧縮システムが提供されるが、圧縮器パフォーマンスを向上させることが当技術分野における目的であることに変わりない。
本発明は、LZタイプのデータ圧縮アルゴリズムのパフォーマンスを向上させると考えられる新しいストリング記憶(string storage)−アクセスのアーキテクチャおよびプロトコルを提供する。
本発明では、従来の探索ツリー構造の辞書ではなく、アルファベットのそれぞれの文字に対応する複数の文字テーブルが利用される。ストリングを記憶することが、そのストリングの拡張文字に対応する文字テーブル内のストリングに関連する符号をストリングプレフィックスの符号に対応する文字テーブル位置で記憶することによって行われる。入力データ文字ストリームは、現在フェッチされている文字に関連する文字テーブル内の現在マッチされているストリングの符号に対応するテーブル位置が空(empty)であるかどうかを判定することにより、記憶されたストリングと比較される。その位置は、空でない場合、現在フェッチされている文字で拡張された現在マッチされているストリングを含むストリングの符号を記憶している。このストリング符号は、次のフェッチされる文字に対して探索を続ける次のマッチとして利用することができる。しかし、その位置が空である場合、最長マッチは、現在マッチされているストリングであると特定され、そのストリングの符号が出力される。記憶されたストリングは、次の使用可能なストリング符号を空の位置に記憶することによって更新される。空の位置に遭遇した文字テーブルを選択するのに利用される現在の文字は、ストリングマッチングプロセスが最長マッチで終了するようにさせるマッチしない文字である。LZW実施形態では、マッチしない文字を利用して、その文字を新しいストリングに対する初期現行マッチ(current match)として使用することによって次のストリング探索を始める。
本発明の代替の実施形態は、文字テーブルに対応する文字に最初に入力において遭遇した際に文字テーブルを作成することを含む。
さらなる実施形態は、ストリングプレフィックスの符号をストリングの符号と一緒に、ある文字テーブル位置に記憶し、最新の拡張ストリングに遭遇した際にテーブル位置を生成することに関する。
本発明は、より高い速度や、より高いパフォーマンスなどの相当な利点をもたらすと考えられるLZWなどのデータ圧縮アルゴリズムのための新しい実施アーキテクチャを提供する。
本発明の文字テーブル実施アーキテクチャを利用する以下に説明する最良の実施形態は、一般に、LZW法を前提としている。実施形態は、単独文字ストリングが、圧縮器内部で明示的に初期化されないが、圧縮器によって認識されているものと見なされる前述したのと同様の実施上の特徴を利用する。
図1を参照すると、入力11で印加された入力データ文字のストリームを圧縮して、出力12における対応する圧縮された符号のストリームにするデータ圧縮器10が示されている。本発明によれば、圧縮が行われているアルファベットのそれぞれのデータ文字に対応する文字テーブル14〜16を含む文字テーブル構造13が含まれる。文字テーブル14〜16のそれぞれは、文字テーブル構造13の中に記憶されたデータ文字ストリングのそれぞれストリング符号を記憶するための複数のテーブル位置20から成る。文字テーブル14〜16のテーブル位置20は、それぞれのインデックス21でアクセスされる。
データ文字ストリングは、1つまたは複数の文字のプレフィックスストリングの後に、拡張文字が続いて構成される。文字テーブル構造13の中にストリングを記憶することは、そのストリングの拡張文字に対応する文字テーブル14〜16の中にストリングプレフィックスの符号に対応する文字テーブル位置20で、そのストリングに関連するストリング符号を記憶することによって行われる。プレフィックス符号は、インデックス21として利用される。制御バス25の制御下の双方向データ・バス24を介して、圧縮器10と文字テーブル構造13の間でデータが通信される。
通常のLZWデータ圧縮器では、辞書は、4096のストリング符号に制限される。この制限が本発明に適用される場合、プレフィックス符号インデックス21およびストリング符号位置20はそれぞれ12ビット幅であり、インデックス21は、示した通りの0から4095までの範囲にある。制御符号を考慮する場合、制御符号に対応するインデックスおよびテーブル位置は利用されないことが理解されよう。さらに、Nの文字アルファベットが存在すると、各文字テーブル14〜16の最初のN個のインデックスは、N個のそれぞれの文字に対応することも理解されよう。最初のN個のテーブル位置には、それぞれ文字値でインデックスが付けられる。例えば、ASCII環境では、アルファベットは、0〜255の値を有する256の文字のアルファベットをサポートする8ビット文字サイズを有する。最初の使用可能な複数文字ストリング符号は、例えば、258であることが可能であり、ただし、符号256および257は、制御符号として利用される。
圧縮器10は、現行マッチレジスタ30、現行文字レジスタ31、符号カウンタ32、および符号サイズレジスタ33を含む。符号カウンタ32は、説明する仕方で文字テーブル構造13の中に記憶されるデータ文字ストリングに割り当てられるべき符号値を順次に生成する。符号サイズレジスタ33は、周知の通り、出力12から圧縮された符号を伝送するために利用されるビットの数を制御するのに利用される。説明する仕方で現行文字(current character)に従って適切な文字テーブル14〜16を選択するためのテーブル選択ロジック34も含まれる。圧縮器10は、以下に説明する図2の動作流れ図に従って圧縮器10の動作を制御するためのコントロール35もさらに含む。
さらに、入力11で受け取られた入力データ文字ストリームをバッファする入力文字バッファ40も含まれる。入力データ文字は、説明する動作に従って、入力文字バッファ40からバス41を介して現行文字レジスタ31、および現行マッチレジスタ30に印加される。圧縮器10は、制御バス42を介して入力文字バッファ40から入力データ文字を獲得することを制御する。
簡単に述べると、圧縮器10の動作は以下の通りである。圧縮器10は、符号カウンタ32を最初の使用可能な複数文字ストリング符号に設定し、符号サイズレジスタ33を初期符号サイズに設定することによって初期化される。さらに、現行マッチレジスタ30がクリアされ、文字テーブル14〜16がクリアされて空にされる。第1の入力データ文字が、現行マッチレジスタ30にフェッチされて圧縮サイクルが開始される。後続の圧縮サイクルを始めるのに、現行マッチレジスタ30が、先行する圧縮サイクルから特定されたマッチしない文字を含むように設定される。
圧縮サイクルの開始時に、次のデータ文字が現行文字レジスタ31にフェッチされる。現行文字に対応する文字テーブル14〜16が選択され、選択された文字テーブル内の現行マッチに対応する位置が、インデックス21を利用して現行マッチによってアクセスされる。アクセスされた位置が空でない場合、現行マッチレジスタ30は、そのアクセスされた位置に含まれるストリング符号に設定される。次の現行文字をフェッチすること、現行文字に対応する文字テーブルを選択すること、および選択された文字テーブル内で現行マッチに対応する位置にアクセスすることが、アクセスされる位置が空になるまで続けられる。
アクセスされた位置が空である場合、符号カウンタ32の中の符号が、その空の位置に記憶され、現行マッチレジスタ30の中の符号が、最長マッチとして出力される。現行マッチレジスタ30は、現行文字レジスタ31の中のマッチしない文字に設定され、符号カウンタ32は、次の使用可能な符号にインクリメントされる。制御は、現行文字レジスタ31に次のデータ文字をフェッチすることに戻り、次の圧縮サイクルにおいて2番目に長いマッチの探索を始める。
図1を参照し続けながら、図2を参照すると、圧縮器10によって実行される詳細な動作を示す制御流れ図が示されている。圧縮器10のコントロール35は、動作の実行を制御する状態マシンなどの適切な回路、または適切なソフトウェアを含むものと考えられている。図2の流れ図は、可変長の出力を前提としており、符号サイズレジスタ33が、そのために利用される。ASCII可変長符号実施形態では、符号サイズは、9ビットで始まり、それぞれ、符号512、1024、および2048で10ビット、11ビット、および12ビットに順次、増加する。固定の符号サイズも、この実施形態に適切な変更を加えて利用できることが理解されよう。
制御は、ブロック50に進み、符号カウンタ32が、第1の使用可能な符号に、例えば、ASCII環境において258に初期化される。ブロック51で、符号サイズレジスタ33が、開始符号サイズに、例えば、ASCII実施形態において9ビットに初期化される。ブロック52で、現行マッチレジスタ30が、クリアされ、文字テーブル14〜16がクリアされて空にされる。文字テーブルの位置20でゼロを利用して空の状態を表わすことができる。ブロック53で、現行マッチレジスタ30に最初の入力データ文字がフェッチされ、ブロック54で、現行文字レジスタ31に次の入力データ文字がフェッチされる。
ブロック55で、現行文字に対応する文字テーブル14〜16が選択され、ブロック56で、選択された文字テーブル内の現行マッチに対応する位置が、インデックス21を介してアクセスされる。テーブル選択ロジック34を利用してテーブル選択が行われる。ブロック57で、選択された文字テーブル内のアクセスされた位置が空でなかった場合、ブロック57から「NO」分岐を辿ってブロック58に進む。ブロック58で、現行マッチレジスタ30が、選択された文字テーブルのアクセスされた位置のストリング符号に設定される。その後、制御は、ブロック54に戻り、現行文字レジスタ31に次の入力データ文字をフェッチする。
ブロック57で、選択された文字テーブル内のアクセスされた位置が空であった場合、ブロック57から「YES」分岐を辿ってブロック70に進む。これが行われた場合、文字テーブル構造13の中の最長のマッチするストリングが特定されている。ブロック70で、符号カウンタ32の中の符号が、選択された文字テーブルの空のアクセスされた位置に記憶され、これにより、適切な拡張ストリングが記憶される。
制御は、ブロック71に進み、現行マッチの符号が、圧縮器出力12で提供される圧縮された符号ストリームの一部として出力される。現行マッチの符号は、現行マッチレジスタ30によって提供され、符号サイズレジスタ33によって表わされるビット数を利用して出力される。現行マッチが複数文字ストリングである場合、ストリングの符号は、現行マッチレジスタ30の中に存在し、ブロック57に関連して前述した通り、文字テーブル構造13の中で見出された最長マッチであった。ブロック71で出力される現行マッチは、単一の文字であることも可能であることが理解されよう。その場合の出力符号は、やはり現行マッチレジスタ30から提供される文字の値である。
処理は、ブロック72に進み、現行文字レジスタ31の中の文字が、現行マッチレジスタ30の中に設定される。したがって、現行マッチレジスタ30には、ブロック57でミスマッチに終わった文字が設定される。
次に、処理は、ブロック73に進み、符号カウンタ32の中の符号を試験して、符号サイズの増加が必要とされるかどうかが判定される。必要とされる場合、処理はブロック74に進み、符号サイズレジスタ33が、1だけインクリメントされる。ブロック73で符号サイズの増加が必要とされない場合、ブロック74を迂回して、処理は、ブロック75に進む。ブロック75で、符号カウンタ32が1だけインクリメントされる。次に、制御は、ブロック54に戻り、現行マッチレジスタ30の中に設定されたマッチしない文字を使用して次の圧縮サイクルを開始する。
以上のことから、ブロック54〜58を含むループは、対応する文字テーブルを選択して、現行マッチによって表わされるストリングが文字テーブル構造の中に記憶されるかどうかを決める入力データ文字を順次にフェッチすることが理解されよう。ブロック57から「YES」分岐が辿られる場合、最長のマッチするストリングが特定されており、そのストリングの符号が現行マッチレジスタの中にあり、マッチしない文字が現行文字レジスタの中にある。マッチしない文字で拡張された最長マッチを含む拡張ストリングは、ブロック70で、符号カウンタの中の符号を、現行文字によって選択された文字テーブル内の現行マッチによってアクセスされる空の位置に挿入することによって、文字テーブル構造の中に容易に記憶される。
図1および図2を引続き参照しながら、図3を参照すると、図2の流れ図に従う圧縮器10の動作の例が示されている。図3の最上部で、文字順序番号で順次の文字が特定された入力データ文字ストリームが示されている。これは、例のステップ全体で文字の進行を追うのを容易にするために行っている。順序番号は、文字特定の目的で示しており、実際のデータ文字ストリームの中では出現しないことが理解されよう。
この例は、概ね自明であり、行われるアクションが、左側の列の中に画され、アクションに関与する図2のブロックが、右側の列に示されている。現行文字に対応する選択された文字テーブルは、文字テーブル列の中で示され、現行文字値が、現行文字列の中で表されている。文字テーブルインデックスおよび文字テーブルストリング符号フィールドが、示した通りのそれぞれの列の中に例示されている。図2のブロック57で、アクセスされた文字テーブル位置が空でない場合、その位置に記憶されているストリング符号が、括弧で示される。文字テーブルのインデックス列は、括弧内で、記憶されているストリングのプレフィックス符号が、選択された文字テーブルの位置にインデックスを付ける、またはアクセスするのに利用されることを示している。インデックスは、現行マッチによって提供されることが理解されよう。
図3の動作例は、データ文字ストリングを記憶し、記憶されているストリングに対する最長マッチを求めて入力ストリームを探索し、拡張されたストリングで記憶されているストリングを更新するための本発明の斬新なデータ圧縮実施アーキテクチャを図示している。例えば、アクション1は、258というストリング符号で「b」文字テーブル内に記憶されたストリング「ab」を示している。図1および図2に関連して前述した通り、フェッチされた現行文字「b」により、ストリングプレフィックス符号「a」(現行マッチ)でインデックスが付けられた「b」文字テーブルが選択され、符号カウンタからのストリング符号258が、選択された文字テーブルのアクセスされた位置に記憶される。ストリングは、図2のブロック70で説明する通り記憶される。というのは、ブロック57で、選択された文字テーブルのアクセスされた位置が空であると判定されたからである。
アクション3で、このストリング「ab」に「b」文字テーブル内で遭遇し、アクション4で、ストリング「ab」が、「a」文字テーブル内で拡張されて、「a」文字テーブルは、ストリング「aba」を記憶する。アクション4で示した通り、このストリングには、符号カウンタからストリング符号260が割り当てられる。アクション3で、このストリングは、以前に記憶されているものとして遭遇されている。というのは、ブロック57で、選択された文字テーブル内のアクセスされた位置が空ではなかったからである。アクション4で見られる通り、アクション3で括弧内に示されたストリング符号258が、図2のブロック58で現行マッチレジスタの中に設定される。
本明細書で説明する実施形態では、最後の入力データ文字がフェッチされた際、現行マッチレジスタ30の中の値が、最後の圧縮された符号として出力される。したがって、アクション19で、例示した入力データ文字ストリームの最後の文字が、図示する通り出力される。
図2のブロックに関連する図3のアクションのより詳細な説明は、一目瞭然であり、簡明にするために提供しない。
図1〜図3を引続き参照しながら図4を参照すると、本発明のデータ圧縮器の代替の最良の実施形態が示されている。図4の実施形態は、ハードウェア実施形態に特に適している。図4の実施形態の構成要素の多くは、図1の実施形態の構成要素に対応し、図1の対応する構成要素の符号よりも100だけ大きい符号が付けられている。さらに、図4のさらなる構成要素が、図2のブロックに対応し、図2の対応するブロックの符号よりもやはり100だけ大きい符号が付けられている。図1および図2に関連して上記で提供した説明は、図4のそれらの構成要素の構造および動作にも当てはまる。さらに、図4の圧縮器は、選択回路180および181、並びにテーブル出力バッファ184〜186を含む。
図1および図2に関連して上記で提供した構造上および機能上の説明は、図4の圧縮器の構造および動作にも当てはまるが、現行文字レジスタ131の中の現行文字に従って文字テーブル114〜116を選択するための相当な追加の特徴が、図4の圧縮器に含まれる。図4の圧縮器では、現行マッチレジスタ130の中の現行マッチが、インデックス121を介して文字テーブル114〜116に同時にアクセスする。現行文字レジスタ131の中の現行文字により、選択回路180を介して適切なアクセスされたストリング符号出力が選択される。文字テーブル114〜116からのストリング符号出力が、テーブル出力バッファ184〜186の中にそれぞれ入れられる。
同様に、現行文字レジスタ131の中の現行文字により、符号カウンタ132の中の符号が現行マッチレジスタ130の中の現行マッチによってアクセスされた空の位置に記憶される文字テーブル114〜116が、選択回路181を介して選択される。
図4の圧縮器のステップバイステップ(step by step)の動作は次の通りである。符号カウンタ132、並びに空のステータスに関して選択された文字テーブル位置を試験する検出器157に応答するコントローラ135が、図4のブロックのすべてに制御入力を提供して、図4のブロックの動作を制御する。コントローラ135は、動作を順に行う状態マシンを含むことが可能である。最初、符号カウンタ132が、制御入力150を介して最初の使用可能な符号に初期化され、現行マッチレジスタ130がクリアされ、文字テーブル114〜116がクリアされて空の状態になる。
最初の圧縮サイクルで、最初の入力データ文字が、入力文字バッファ140から現行マッチレジスタ130にバス153を介してフェッチされ、次の入力データ文字が、バス154を介して現行文字レジスタ131にフェッチされる。後続の圧縮サイクルでは、現行文字レジスタ131からの現行文字を現行マッチレジスタ130にバス172を介して転送することにより、現行マッチレジスタ130が、先行する圧縮サイクルから特定されたマッチしない文字を含むように設定される。
圧縮サイクルの開始時に、次の入力文字が現行文字レジスタ131にフェッチされ、現行マッチが、文字テーブル114〜116の中の自らに対応する位置にテーブルインデックス121を介して並行してアクセスする。アクセスされたストリング符号位置120の内容は、それぞれ、テーブル出力バッファ184〜186の中に同時に読み込まれる。現行文字に対応する文字テーブル出力が、選択回路180によって選択され、検出器157によって空であるか試験される。選択された文字テーブル内のアクセスされた位置120が空でなかった場合、コントローラ135により、選択回路180が、現行マッチレジスタ130を現行文字によって選択された文字テーブルストリング符号出力に設定することが可能にされる。そして、次の入力データ文字が、入力文字バッファ140から現行文字レジスタ131にバス154を介してフェッチされる。コントローラ135は、検出器157が、現行マッチによってアクセスされ、現行文字によって選択された文字テーブル位置が空であることを示すまで、以上の動作の反復を制御する。
アクセスされた位置が空であった場合、符号カウンタ132の中の符号は、現行文字によって選択された文字テーブルのストリング符号フィールドの中に、現行マッチに対応するアクセスされた位置で記憶されるように、選択回路181によって導かれる。その後、現行マッチが、符号サイズコントロール133によって決められたビット数を利用してバス171を介して出力される。コントローラ135は、周知の仕方で符号カウンタ132の中のカウントに従って適切な符号サイズを選択するように符号サイズコントロール133を制御する。
次の圧縮サイクルを準備するため、現行マッチレジスタ130が、バス172を介して現行マッチレジスタ131の中のマッチしない文字に設定され、符号カウンタ132が、入力175を介して次の使用可能な符号にインクリメントされる。
図3の動作例は、図4の実施形態にも当てはまることが理解されよう。
図1〜図4を引続き参照しながら、同様の符号が図4に関するのと同様の構成要素を示している図5を参照すると、本発明の圧縮器の代替の最良の実施形態が示されている。図5の実施形態は、図4の実施形態と実質的に同一であり、したがって、図2に描いた動作の流れに全体的に従って図4に関連して前述した通り動作する。図4の実施形態と図5の実施形態の間の主な差は、文字テーブル位置の空のステータスが検出される仕方である。図4の実施形態では、文字テーブルは、例えば、位置120のすべてをゼロなどの空の指示に設定することにより、最初にクリアされて空にされたものである。図5の実施形態では、1ビット空フラグ200を文字テーブル114〜116のそれぞれの各ストリング符号位置120が含むようにされる。図5の実施形態では、文字テーブルを空に初期化するのに、各文字テーブル位置で空フラグ200をリセットするだけでよい。
符号カウンタ132は、文字テーブル位置の占有ステータスを示すように1に設定される1ビット拡張子201を含む。前述した通り、拡張されたストリングが文字テーブル構造113の中に記憶される際、前述した通り、選択された文字テーブルのアクセスされた位置に符号カウンタ132の中の符号が書き込まれるだけでなく、ビット201も関連する空フラグ200に書き込まれて、フラグを「占有」に設定する。前述した通り、文字テーブルが選択回路181によって選択され、そのテーブル内の適切な位置が、現行マッチレジスタ130によってアクセスされる。
図5の実施形態では、図2のブロック57における空であるかどうかの試験が、現行文字レジスタ131に結合された選択回路202によって行われる。選択回路202は、現行文字によって選択された文字テーブルからの現行マッチによってアクセスされる現行テーブル位置に関連する空フラグ200を選択する。選択回路202は、前述した通り空試験を行い、結果の動作を制御するようにコントローラ203に入力を提供する。コントローラ203は、図4に関連して前述したコントローラ135の機能を行うことが理解されよう。さらに、図3の動作例が、図5の実施形態にも当てはまることが理解されよう。
図4および図5に関連して前述した通り、現行マッチレジスタ130は、圧縮サイクルの終り頃に現行文字に設定され、これにより、文字テーブル114〜116のすべてのインデックス121が同時にアクセスされる。アクセスされた文字テーブル位置の内容は、テーブルからテーブル出力バッファ184〜186に同時に読み込まれる。したがって、圧縮サイクルの開始時に、アクセスされたストリング符号位置120からの適切な値が、テーブル出力バッファ184〜186の中に存在し、サイクルの開始時に現行文字が現行文字レジスタ131の中にフェッチされた際に選択回路180を介して選択される準備ができている。図4および図5の圧縮器は、現行文字がフェッチされた後に文字テーブル選択、および文字テーブル読取りを待つことを要さない。この構成により、圧縮器速度のさらなる向上が行われるものと考えられる。
図1〜図3を引続き参照しながら、同様の符号が図1に関するのと同様の構成要素を示す図6を参照すると、本発明のデータ圧縮器の代替の最良の実施形態が示されている。図6の実施形態は、図1および図2に関連して前述したのと同様の仕方で構成され、動作するが、図6の実施形態は、さらなる機能強化を提供する相当な追加の特徴を含む。
図1および図2の実施形態、並びに図4および図5の実施形態は、前述した通り、既定の文字テーブルを利用する。図6の実施形態では、文字テーブルは、文字テーブルに対応する文字に入力において最初に遭遇した際に確立される。さらなる特徴として、文字テーブル内の位置は、前述した拡張ストリングを記憶すべき位置が必要とされる際に確立される。以上の追加の特徴を利用することにより、圧縮器の動作によって実際に利用される文字テーブルメモリだけが必要とされる。
したがって、図6の実施形態は、文字テーブル301〜303を例示する文字テーブル構造300を含む。各文字テーブル301〜303は、現行文字レジスタ31の中で文字テーブルに対応する入力データ文字に最初に遭遇した際に確立される。図6の実施形態の追加の特徴の実施を容易にするため、文字テーブル301〜303は、ストリングの符号が記憶されるべき位置306、およびストリングのプレフィックスの符号が記憶されるべき対応する位置を含む。記憶されたプレフィックス符号により、対応するストリング符号306にインデックスをつけ、アクセスを行うのに使用するプレフィックス符号リスト307が提供される。
図6の実施形態は、前述した現行マッチレジスタ30と、現行文字レジスタ31と、符号カウンタ32と、符号サイズレジスタ33とを含む圧縮器310を含む。さらに、圧縮器310は、テーブル生成−選択ロジック311、および文字テーブル構造300の「オンザフライ(on-the-fly)」生成で利用される文字テーブルリンク312を含む。文字テーブルリンク312は、アルファベットの個々の文字でインデックスが付けられたディレクトリとして構成されて、文字テーブル構造300の中の対応する文字テーブルに対するそれぞれアドレスリンクを提供することが可能である。入力データ文字に関してリンクが記憶されていない場合、その文字に関する文字テーブルは、まだ確立されていない。入力データ文字に圧縮器310が最初に遭遇し、現行文字レジスタ31の中にフェッチされた際、ロジック311が、新たに遭遇した文字に対応するようにディレクトリ312の中で記憶(storage)のためのアドレスリンクを選択する。次に、ロジック311は、そのアドレスによってリンクされた文字テーブルを生成して、文字に対応する文字テーブルを提供するようにする。
圧縮器310は、図7の動作流れ図に従って圧縮器310の動作を制御するためのコントロール313をさらに含む。
図1、2、および図6を引続き参照しながら、図7を参照すると、圧縮器310によって実行される詳細な動作を示す制御流れ図が示されている。圧縮器310のコントロール313は、動作の実行を制御する状態マシン(state machine)などの適切な回路、または適切なソフトウェアを含むものと考えられている。図7の流れ図は、図2に関連した前述した仕方で可変長出力を前提としている。図2に関連した上記で提供した説明は、該当する場合、図7の流れ図にも当てはまる。
制御はブロック350〜354に進み、図2のブロック50〜54にそれぞれ関連して前述したのと同様の機能を行う。ブロック352で、現行マッチレジスタがクリアされることに留意されたい。図2のブロック52でクリアされた文字テーブルは、図6の実施形態ではまだ確立されていない。
ブロック355で、圧縮器310が、現行文字に関して文字テーブルが確立されているかどうかを判定する。この判定を行うために文字テーブルリンク312が調べられる。ブロック355で、現行文字に関して文字テーブルが確立されている場合、ブロック355から「YES」分岐を辿ってブロック356に進む。ブロック356で、現行文字に対応する文字テーブルが、テーブル生成−選択ロジック311を利用して選択される。
ブロック357で、現行マッチが選択された文字テーブルのプレフィックス符号リスト307と比較されて、現行マッチがプレフィックス符号リストの中に存在するかどうかが判定される。プレフィックス符号リストは、現行マッチを求めて連想式に(associatively)探索すること、または代替として、プレフィックス符号リストが現行マッチとの比較を行うようにプレフィックス符号の順序付けされ、リンクされたリストを含むことが可能である。当技術分野で周知の他のリスト探索手続きを同じ目的で利用することも可能である。現行マッチがプレフィックス符号リストの中で見出された場合、ブロック357から「YES」分岐を辿ってブロック358に進む。
ブロック358で、選択された文字テーブル内の現行マッチに対応する位置にアクセスが行われ、ブロック359で、現行マッチレジスタ30が、選択された文字テーブルのアクセスされた位置のストリング符号に設定される。次に、制御はブロック354に戻り、次の文字を現行文字レジスタ31にフェッチして、最長マッチの探索を続ける。
ブロック354〜359から成るループは、全体として図2のブロック54〜58に関連して前述した通りに文字テーブル構造300の中で最長のマッチするストリングを探索することが理解されよう。図6の実施形態では、ブロック357でプレフィックス符号リストの中で現行マッチが見出された時点で、最長マッチはまだ特定されていない。しかし、ブロック357で、選択された文字テーブルのプレフィックス符号リストの中に現行マッチが存在しない場合、最長マッチが特定されており、ブロック357から「NO」分岐を辿ってブロック370に進む。
したがって、ブロック370で、現行マッチレジスタ30の中の現行マッチが、選択された文字テーブルのプレフィックス符号リスト307に追加される。したがって、ブロック370で、現行マッチに対応する選択された文字テーブル内の位置が確立される。プレフィックス符号リストが、順序付けされ、リンクされたリストを含む場合、現行マッチは、適切な順序でプレフィックス符号リストの中に挿入され、リンクされる。ブロック371で、符号カウンタ32からの符号が、ブロック370で確立された選択された文字テーブル内に位置のストリング符号フィールドの中に記憶される。図6のブロック371は、適切な拡張ストリングが記憶される動作の流れにおいて、図2のブロック70に対応することが理解されよう。
制御はブロック371からブロック391〜395に進み、図2のブロック71〜75に関連して前述した機能が行われる。ブロック395の機能を実行した後、制御はブロック354に戻り、次の入力文字を現行文字レジスタ31にフェッチして次の圧縮サイクルを開始する。
ブロック355で現行文字に関して文字テーブルが確立されていない場合、ブロック355から「NO」分岐を辿ってブロック380に進む。ブロック380で、現行文字に対応する文字テーブルが確立され、現行マッチが、確立された文字テーブルのプレフィックス符号リスト307の最初のエントリとして入力される。この最初のエントリは、確立された文字テーブル内で現行マッチに対応するストリング符号位置306を確立する。テーブル生成−選択ロジック311および文字テーブルリンクが、文字テーブルを確立する際に、前述した通り利用される。
ブロック381で、符号カウンタ32からの符号が、確立された文字テーブル内の確立されたストリング符号位置306に記憶される。したがって、ブロック371の場合と同様に、適切な拡張ストリングが図2のブロック70に関連して前述した仕方で記憶される。次に制御は、前述した通り、ブロック391〜395に進む。
図3の動作例は、図6の実施形態にも当てはまることが理解されよう。
図6の実施形態は、文字テーブルの「オンザフライ」生成、並びに文字テーブルの位置に関して説明したが、以上の特徴は、別々に使用することも可能であることが理解されよう。文字テーブルを確立する特徴が別個に利用される場合、図1に例示した完全な文字テーブルが、図1に関連した前述した仕方で確立され、インデックスが付けられることが可能である。そのような実施形態では、図6および7に関連して説明した通りプレフィックス符号リストを利用するのではなく、図2のブロック57に関連して説明した通り、文字テーブル位置が空のステータスに関して試験される。
文字テーブル位置を確立する特徴が別個に利用される場合、図6の文字テーブルリンクは、説明した通りに使用されない。代わりに、プレフィックス符号を有する既定の文字テーブルが利用される。
図1〜図3を引続き参照しながら、同様の符号が図1に関連するのと同様の構成要素を示す図8を参照すると、本発明のデータ圧縮器の代替の最良の実施形態が示されている。図8の実施形態は、図1の実施形態と実質的に同一であり、ただし、文字テーブル構造が、キャッシュに入れられた文字テーブルとキャッシュに入れられない文字テーブルに分離されることが異なっている。
したがって、文字テーブル構造400は、キャッシュに入れられたセクション401とキャッシュに入れられないセクション402から成る。データが、制御バス404の制御下の双方向データバス403を介して、圧縮器10とキャッシュに入れられた文字テーブル401の間で通信される。データが、制御バス406の制御下の双方向データバス405を介して、圧縮器10とキャッシュに入れられない文字テーブル402の間で通信される。
圧縮器10は、図1および図2に関連した、前述したのと同様の仕方で図8の実施形態によって行われる動作の実行を制御するためのコントロール410を含む。さらに、コントロール410は、キャッシュに入れられたセクション401およびキャッシュに入れられないセクション402に関連して行われる動作も制御する。
キャッシュに入れられたセクション401は、当技術分野で周知のタイプの比較的小型の高速キャッシュメモリによって実施される。キャッシュに入れられないセクション402は、より大きくより低速のメモリ構成を使用して実施されることが可能である。図8の実施形態を利用して、アルファベット文字の頻度分布が既知である、または特定可能である種類のひとまとまりのデータからのデータを圧縮する場合、頻繁に遭遇する文字に対応する文字テーブルがキャッシュに入れられたセクション401の中で確立され、他方、稀にしか遭遇しない文字に対応する文字テーブルが、キャッシュに入れられないセクション402の中で確立される。全体的な速度の向上が、この構成によって実現されるものと考えられる。
図8の実施形態によれば、入力データの自動統計解析を提供すること、および頻繁に出現することが動的に見出されるアルファベットの文字に対応する文字テーブルをキャッシュに入れられたセクション401の中で自動的かつ動的に維持するためのロジックを圧縮器10内部で提供することにより、自動的、かつ動的に構成可能にすることができる。
図3の動作例は、図8の実施形態にも当てはまることが理解されよう。
図6および図7を引続き参照しながら、図9を参照すると、さらなる望ましい特徴を制御するための図6の圧縮器310に対する追加が、概略的に描かれている。具体的には、図9の圧縮器310は、ストリング長制限ロジック320と、文字テーブル除外ロジック321と、文字テーブル長制限ロジック322とを含む。
ストリング長制限ロジック320は、図6の文字テーブル構造300の中に記憶されるストリングの長さを制限する。適切な文字カウントロジックが、図7のブロック354でフェッチされる文字のカウントを保持するためにロジック320の中に含められる。探索されている入力ストリングの長さがストリング長限度を超えた場合、図7のブロック391〜395が、拡張されたストリングを記憶することなく実行される。ストリング長制限ロジック320は、再び出現する可能性の低い過度に長いストリングを記憶から除外するのに利用される。
文字テーブル除外ロジック321は、稀にしか出現しない可能性が高いアルファベット文字に対応する文字テーブルの生成を除外するのに利用される。このようにすると、出現する可能性が低い拡張文字で終わるストリングが、文字テーブル構造300の中に記憶されることがない。ロジック321は、現行文字が、そのような稀にしか出現しない文字であるかどうかを判定するブロック355に関連する図7の機能を含めることによって実施することができる。稀にしか出現しない文字であると判定された場合、現行文字に対応する文字テーブルは生成されず、図7のブロック391〜395が実行されて圧縮サイクルが完了する。ロジック321の使用により、稀にしか出現しない文字で終り、したがって、繰り返される可能性が低いストリングが、記憶から除外される。
文字テーブル長制限ロジック322は、文字テーブル301〜303の長さをそれぞれの所定の数の位置に制限するのに利用される。図7のブロック357および370で使用されるカウンタがロジック322の中に含められる。図7のブロック370で文字テーブル内に位置が確立される前に、適切な文字テーブル位置カウンタが調べられて、文字テーブル内でさらなるスペースが存在するかどうかを判定してから位置が確立される。文字テーブル長限度を超えた場合、位置は確立されず、ストリングはブロック371で記憶されない。次に、図7のブロック391〜395が実行されて、圧縮サイクルが終了する。文字テーブル長限度は、文字出現頻度基準に依拠して確立することができる。頻繁に出現する文字に関する文字テーブルは、稀にしか出現しない文字に関する文字テーブルよりも長いことが可能である。
図9に示した特徴は、図6の実施形態に含めることに関して説明したが、これらの特徴は、本発明の前述した実施形態のいずれに含めることも可能であることが理解されよう。
図1〜図8の実施形態のそれぞれによって提供される圧縮された符号出力は、標準のLZW伸張器に適合し、圧縮された符号出力に対応するデータ文字ストリームは、標準のLZW伸張器によって回復できることが理解されよう。図9に関連して前述した特徴が、圧縮器に含められる場合、対応するロジックが伸張器において利用されなければならない。
さらなる入力データ文字が用意されていない場合、前述した実施形態は、現行マッチを出力して処理を終えることがさらに理解されよう。
本発明のアーキテクチャは、GIFのLZW圧縮要件を実施する際に使用するのが特に有利である。GIFプロトコルでは、LZW文字サイズは、圧縮が行われるデータ文字アルファベットのサイズにマッチするように調整される。例えば、図6の実施形態では、アルファベット文字に最初に遭遇した際に文字テーブルが生成されるので、図6の実施形態により、アルファベットサイズに対するLZWプロセスの自動的な適応が提供される。また、GIF処理においてしばしば、遭遇するより少ないアルファベットに見合ったより少ない数の文字テーブルを使用することも有利である。
以上のことから、本発明の実施アーキテクチャにより、圧縮器速度の向上がもたらされるべきことが理解されよう。本発明は、文字テーブル位置の明確なアクセスを利用し、これにより、従来技術のハッシング実施形態または従来技術の兄弟リスト探索において衝突解決に要する時間がなくなる。さらに、本発明のアーキテクチャは、図4および図5に関連して前述した並列の文字テーブルアクセスに特に適している。図4および図5の実施形態に関して、本発明はハードウェア実施形態に容易に適応可能であり、ハードウェア実施形態に本来備わっている速度の利点の恩恵を受けることに留意されたい。また、前述した実施形態が明示する実施形態の単純さのため、さらなるパフォーマンスの向上が実現されるべきことも理解されよう。
本発明の前述した実施形態はLZWベースであるが、本発明のアーキテクチャは他の周知の辞書ベースの圧縮方法で利用することも可能であることが理解されよう。さらに、本発明のアーキテクチャはアルファベットのそれぞれの文字に対応する文字テーブルを前提としているので、入力データ文字は任意の対応する文字ビットサイズを有する任意のサイズのアルファベットにわたることが可能であることも理解されよう。例えば、データ文字は、テキストデータ、イメージピクセルデータ、またはビットマップデータであることが可能である。入力データは、1ビットサイズ文字を有する2文字の2進アルファベット1および0に関する2進文字であることも可能である。
本発明の前述した実施形態は、ハードウェア、ファームウェア、ソフトウェア、または以上の組合せで実施できることが理解されよう。様々な前述した機能を行うためのディスクリート回路実施形態を容易に実施することができる。ソフトウェア実施形態では、以上の説明から容易に生成されるコーディングでプログラミングされた適切なモジュールを利用することができる。
本発明は、好ましい実施形態において説明してきたが、使用した言葉は、制限するものではなく、説明する言葉であり、より広い態様における本発明の真の範囲および趣旨を逸脱することなく、頭記の特許請求の範囲内で、変更を行うことが可能であることを理解されたい。
本発明によるデータを圧縮するためのデータ圧縮器を示す概略ブロック図である。図1の実施形態では、文字テーブルは、既定である。図1のデータ圧縮器は、ソフトウェア実施形態としての実施に特に適している。 本発明によるデータ圧縮を行うように図1の圧縮器によって実行される動作を示す制御流れ図である。 図2の制御流れ図に従った図1の圧縮器の動作を例示する図である。 本発明によるデータを圧縮するためのデータ圧縮器の代替の実施形態を示す概略ブロック図である。図4のデータ圧縮器は、ハードウェア実施形態として実施するのに特に適している。 文字テーブル位置の空のステータスを判定するための代替の構成を提示する図4と同様の概略ブロック図である。 本発明によるデータを圧縮するためのデータ圧縮器の代替の実施形態を示す概略ブロック図である。図6の実施形態では、文字テーブル、および文字テーブルの位置は、必要とされる時点で確立される。図6のデータ圧縮器は、ソフトウェア実施形態として実施するのに特に適している。 本発明によるデータ圧縮を行うように図6の圧縮器によって実行される動作を示す制御流れ図である。 頻繁に選択される文字テーブルがキャッシュメモリの中に記憶されている図1と同様の概略ブロック図である。 本明細書で説明する本発明の実施形態に含めるためのオプションの特徴を例示する概略ブロック図である。

Claims (42)

  1. データ文字のアルファベットからのデータ文字の入力ストリームを圧縮して、圧縮された符号の出力ストリームにするためのデータ圧縮方法であって、
    前記アルファベットのそれぞれの文字に対応する複数の文字テーブルを提供するステップと、
    前記文字テーブル内に、前記入力ストリームの中で遭遇したデータ文字のストリングを記憶するステップであって、前記記憶されたストリングはそれぞれの関連付けられた符号を有しており、ストリングが、前記文字の少なくとも1つの後に拡張文字が続くプレフィックスストリングを含むステップと、
    前記文字テーブル内に特定のストリングが記憶されるステップであって、前記特定のストリングの拡張文字に対応する文字テーブル内に、前記特定のストリングのプレフィックスストリングの符号に対応する文字テーブル位置で、前記特定のストリングに関連する符号を記憶することによって行われるステップと、
    前記入力ストリームを前記記憶されたストリングと比較することで前記入力ストリームを探索して最長マッチを特定するステップと、
    圧縮された符号の前記出力ストリームを提供するために前記最長マッチに関連する符号を出力するステップと、
    拡張されたストリームを前記文字テーブル内に挿入するステップであって、前記拡張されたストリングは、前記最長マッチに続く前記入力ストリームの中の次のデータ文字によって拡張された前記最長マッチを含み、前記拡張されたストリングが、前記次のデータ文字に対応する文字テーブル内に記憶されるステップと
    を含むことを特徴とする方法。
  2. 前記特定するステップは、
    (a)前記記憶されたストリングの1つをマッチさせて現行マッチを提供するステップと、
    (b)前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供するステップと、
    (c)前記現行文字に対応する文字テーブル内の前記現行マッチに対応する位置が空であるかどうかを判定するステップと、
    (d)前記位置が空でない場合、前記現行マッチを前記位置に記憶されている符号に設定し、ステップ(c)の前記位置が空であると判定されるまでステップ(b)から(d)を繰り返して、前記最長マッチを特定するステップと
    を含むことを特徴とする請求項1に記載の圧縮方法。
  3. ステップ(c)において前記位置が空であると判定された場合、前記出力するステップは、前記現行マッチを出力するステップを含むことを特徴とする請求項2に記載の圧縮方法。
  4. ステップ(c)において前記位置が空であると判定された場合、前記挿入するステップは、
    次の使用可能なストリング符号を提供するステップと、
    前記次の使用可能なストリング符号を前記空の位置に記憶するステップとを含み、
    前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項2に記載の圧縮方法。
  5. 圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するステップを含むことを特徴とする請求項3に記載の圧縮方法。
  6. 前記特定するステップは、
    (a)前記記憶されたストリングの1つをマッチさせて現行マッチを提供するステップと、
    (b)前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供するステップと、
    (c)前記複数の文字テーブル内の前記現行マッチに対応する位置にアクセスして、前記アクセスされた位置にそれぞれ対応する複数の文字テーブル出力を提供するようにするステップと、
    (d)前記現行文字に対応する前記文字テーブルから文字テーブル出力を選択するステップと、
    (e)前記選択された文字テーブル出力が空であるかどうかを判定するステップと、
    (f)前記選択された文字テーブル出力が空でなかった場合、前記現行マッチを前記選択された文字テーブル出力の中に記憶されている符号に設定し、ステップ(e)の前記選択された文字テーブル出力が空であると判定されるまでステップ(b)から(f)を繰り返して、前記最長マッチを特定するステップと
    を含むことを特徴とする請求項1に記載の圧縮方法。
  7. ステップ(e)において前記選択された文字テーブル出力が空であると判定された場合、前記出力するステップは、前記現行マッチを出力するステップを含むことを特徴とする請求項6に記載の圧縮方法。
  8. ステップ(e)において前記選択された文字テーブル出力が空であると判定された場合、前記挿入するステップは、
    次の使用可能なストリング符号を提供するステップと、
    前記次の使用可能なストリング符号を前記現行文字に対応する前記文字テーブル内の前記現行マッチに対応する位置に記憶するステップとを含み、
    前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項6に記載の圧縮方法。
  9. 圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するステップをさらに含むステップを特徴とする請求項7に記載の圧縮方法。
  10. 前記判定するステップは、
    前記複数の文字テーブルの各位置に、前記各位置の空のステータスを表わす空フラグを含めるステップと、
    現行文字に対応する文字テーブル内の現行マッチに対応する位置の前記空フラグを選択するステップと、
    前記選択された空フラグが空のステータスを表わすかどうかを判定するステップと
    を含むことを特徴とする請求項6に記載の圧縮方法。
  11. さらに、特定の文字テーブルに対応する特定の文字に最初に遭遇した際に前記特定の文字テーブルを生成するステップを含むことを特徴とする請求項1に記載の圧縮方法。
  12. 文字テーブルは、前記文字テーブルのそれぞれの位置に対応するプレフィックス符号のリストを含むことを特徴とする請求項1に記載の圧縮方法。
  13. 前記特定するステップは、
    (a)前記記憶されたストリングの1つをマッチさせて現行マッチを提供するステップと、
    (b)前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供するステップと、
    (c)前記現行マッチが、前記現行文字に対応する前記文字テーブルのプレフィックス符号リストの中のプレフィックス符号の1つであるかどうかを判定するステップと、
    (d)前記現行マッチが前記プレフィックス符号の1つである場合、前記現行マッチを前記プレフィックス符号の前記1つに対応する文字テーブルの中に記憶されている符号に設定し、ステップ(c)の前記現行マッチが前記プレフィックス符号リストの中の前記プレフィックス符号の1つではないと判定されるまでステップ(b)から(d)を繰り返すステップとを含み、
    前記最長マッチを特定することを特徴とする請求項12に記載の圧縮方法。
  14. ステップ(c)において前記現行マッチが前記プレフィックス符号リストの中の前記プレフィックス符号の1つではないと判定された場合、前記出力するステップは、前記現行マッチを出力するステップを含むことを特徴とする請求項13に記載の圧縮方法。
  15. ステップ(c)において前記現行マッチが前記プレフィックス符号リストの中の前記プレフィックス符号の1つではないと判定された場合、前記挿入するステップは、
    前記現行マッチを前記現行文字に対応する前記文字テーブルの前記プレフィックス符号リストの中に記憶して、前記現行文字に対応する前記文字テーブル内で前記現行マッチに対応する位置を確立するステップと、
    次の使用可能なストリング符号を提供するステップと、
    前記次の使用可能なストリング符号を前記確立された位置に記憶するステップとを含み、
    前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項13に記載の圧縮方法。
  16. 圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するステップを含むことを特徴とする請求項14に記載の圧縮方法。
  17. さらに、前記文字テーブルの所定のテーブルをキャッシュメモリの中に確立するステップを含むことを特徴とする請求項1に記載の圧縮方法。
  18. さらに、前記アルファベットの頻繁に出現する文字に対応する文字テーブルをキャッシュメモリの中に確立するステップを含むことを特徴とする請求項1に記載の圧縮方法。
  19. さらに、前記文字テーブル内に記憶されるストリングを所定のストリング長限度より短い所定の文字数に制限するステップを含むことを特徴とする請求項1に記載の圧縮方法。
  20. さらに、前記アルファベットの稀にしか出現しない文字に対応する文字テーブルの生成を除外するステップを含むことを特徴とする請求項11に記載の圧縮方法。
  21. さらに、所定の文字テーブルの長さをそれぞれ所定の文字テーブル長限度に制限するステップを含むことを特徴とする請求項12に記載の圧縮方法。
  22. データ文字のアルファベットからのデータ文字の入力ストリームを圧縮して、圧縮された符号の出力ストリームにするためのデータ圧縮装置において、
    前記入力ストリームの中で遭遇したデータ文字のストリングを記憶するための前記アルファベットのそれぞれの文字に対応する複数の文字テーブルであって、前記記憶されたストリングはそれぞれの関連付けられた符号を有しており、ストリングが、前記文字の少なくとも1つの後に拡張文字が続くプレフィックスストリングを含むものと、
    前記文字テーブル内に特定のストリングが記憶される手段であって、前記特定のストリングの拡張文字に対応する文字テーブル内に、前記特定のストリングのプレフィックスストリングの符号に対応する文字テーブル位置で、前記特定のストリングに関連する符号を記憶することによって行われる手段と、
    前記入力ストリームを前記記憶されたストリングと比較することで前記入力ストリームを探索して最長マッチを特定する手段と、
    圧縮された符号の前記出力ストリームを提供するために前記最長マッチに関連する符号を出力する手段と、
    拡張されたストリームを前記文字テーブル内に挿入する手段であって、前記拡張されたストリングは、前記最長マッチに続く前記入力ストリームの中の次のデータ文字によって拡張された前記最長マッチを含み、前記拡張されたストリングが、前記次のデータ文字に対応する文字テーブル内に記憶される手段と
    を備えることを特徴とする装置。
  23. 前記特定する手段は、
    (a)前記記憶されたストリングの1つをマッチさせて現行マッチを提供し、
    (b)前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供し、
    (c)前記現行文字に対応する文字テーブル内の前記現行マッチに対応する位置が空であるかどうかを判定し、
    (d)前記位置が空でない場合、前記現行マッチを前記位置に記憶されている符号に設定し、かつ、(c)の前記位置が空であると判定されるまで(b)から(d)を繰り返して、
    前記最長マッチを特定するよう動作する手段を備えることを特徴とする請求項22に記載の圧縮装置。
  24. 前記出力する手段は、前記現行マッチを出力するための手段を備えることを特徴とする請求項23に記載の圧縮装置。
  25. 前記挿入する手段は、
    次の使用可能なストリング符号を提供するための手段と、
    前記次の使用可能なストリング符号を前記空の位置に記憶するための手段とを含み、
    前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項23に記載の圧縮装置。
  26. 圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するための手段を備えることを特徴とする請求項24に記載の圧縮装置。
  27. 前記特定する手段は、
    (a)前記記憶されたストリングの1つをマッチさせて現行マッチを提供し、
    (b)前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供し、
    (c)前記複数の文字テーブル内の前記現行マッチに対応する位置にアクセスして、前記アクセスされた位置にそれぞれ対応する複数の文字テーブル出力を提供するようにし、
    (d)前記現行文字に対応する前記文字テーブルから文字テーブル出力を選択し、
    (e)前記選択された文字テーブル出力が空であるかどうかを判定し、
    (f)前記選択された文字テーブル出力が空でなかった場合、前記現行マッチを前記選択された文字テーブル出力の中に記憶されている符号に設定し、かつ、(e)の前記選択された文字テーブル出力が空であると判定されるまで(b)から(f)を繰り返して、
    前記最長マッチを特定するよう動作する手段を備えることを特徴とする請求項22に記載の圧縮装置。
  28. 前記出力する手段は、前記現行マッチを出力するための手段を備えることを特徴とする請求項27に記載の圧縮装置。
  29. 前記挿入する手段は、
    次の使用可能なストリング符号を提供するための手段と、
    前記次の使用可能なストリング符号を前記現行文字に対応する前記文字テーブル内の前記現行マッチに対応する位置に記憶するための手段とを含み、
    前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項27に記載の圧縮装置。
  30. 圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するための手段を備えることを特徴とする請求項28に記載の圧縮装置。
  31. さらに、前記複数の文字テーブルの各位置に含まれる前記各位置の空のステータスを表わす空フラグを備え、
    前記特定する手段は、現行文字に対応する文字テーブル内の現行マッチに対応する位置における前記空フラグを選択することによって前記選択された文字テーブル出力が空であるかどうかを判定し、かつ、前記選択された空フラグが空のステータスを表わすかどうかを判定するように動作することを特徴とする請求項27に記載の圧縮装置。
  32. 特定の文字テーブルに対応する特定の文字に最初に遭遇した際に前記特定の文字テーブルを生成するための手段をさらに備えることを特徴とする請求項22に記載の圧縮装置。
  33. 文字テーブルは、前記文字テーブルのそれぞれの位置に対応するプレフィックス符号のリストを備えることを特徴とする請求項22に記載の圧縮装置。
  34. 前記特定する手段は、
    (a)前記記憶されたストリングの1つをマッチさせて現行マッチを提供し、
    (b)前記現行マッチに続く前記入力ストリームからの次のデータ文字をフェッチして現行文字を提供し、
    (c)前記現行マッチが、前記現行文字に対応する前記文字テーブルのプレフィックス符号リストの中のプレフィックス符号の1つであるかどうかを判定し、
    (d)前記現行マッチが前記プレフィックス符号の1つである場合、前記現行マッチを前記プレフィックス符号の前記1つに対応する文字テーブルの中に記憶されている符号に設定し、かつ、(c)の前記現行マッチが前記プレフィックス符号リストの中の前記プレフィックス符号の1つではないと判定されるまで(b)から(d)を繰り返して、
    前記最長マッチを特定するよう動作する手段を備えることを特徴とする請求項33に記載の圧縮装置。
  35. 前記出力する手段は、前記現行マッチを出力するための手段を備えることを特徴とする請求項34に記載の圧縮装置。
  36. 前記挿入する手段は、
    前記現行マッチを前記現行文字に対応する前記文字テーブルの前記プレフィックス符号リストの中に記憶して、前記現行文字に対応する前記文字テーブル内で前記現行マッチに対応する位置を確立するための手段と、
    次の使用可能なストリング符号を提供するための手段と、
    前記次の使用可能なストリング符号を前記確立された位置に記憶するための手段とを含み、
    前記拡張されたストリングを前記現行文字に対応する前記文字テーブル内に挿入することを特徴とする請求項34に記載の圧縮装置。
  37. 圧縮サイクルで動作し、さらに、次の圧縮サイクルを行う準備として前記現行マッチを前記現行文字に設定するための手段を備えることを特徴とする請求項35に記載の圧縮装置。
  38. さらに、前記文字テーブルの所定のテーブルを記憶するためのキャッシュメモリを備えることを特徴とする請求項22に記載の圧縮装置。
  39. さらに、前記アルファベットの頻繁に出現する文字に対応する文字テーブルを記憶するためのキャッシュメモリを備えることを特徴とする請求項22に記載の圧縮装置。
  40. さらに、前記文字テーブル内に記憶されるストリングを所定のストリング長限度より短い所定の文字数に制限するための手段を備えることを特徴とする請求項22に記載の圧縮装置。
  41. さらに、前記アルファベットの稀にしか出現しない文字に対応する文字テーブルの生成を除外するための手段を備えることを特徴とする請求項32に記載の圧縮装置。
  42. さらに、所定の文字テーブルの長さを所定の文字テーブル長限度にそれぞれ制限するための手段を備えることを特徴とする請求項33に記載の圧縮装置。
JP2002592294A 2001-05-14 2002-04-15 文字テーブルによって実施されるデータ圧縮の方法および装置 Expired - Fee Related JP4156381B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/855,127 US6426711B1 (en) 2001-05-14 2001-05-14 Character table implemented data compression method and apparatus
PCT/US2002/011989 WO2002095950A1 (en) 2001-05-14 2002-04-15 Character table implemented data compression method and apparatus

Publications (2)

Publication Number Publication Date
JP2005501445A JP2005501445A (ja) 2005-01-13
JP4156381B2 true JP4156381B2 (ja) 2008-09-24

Family

ID=25320421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002592294A Expired - Fee Related JP4156381B2 (ja) 2001-05-14 2002-04-15 文字テーブルによって実施されるデータ圧縮の方法および装置

Country Status (6)

Country Link
US (1) US6426711B1 (ja)
EP (1) EP1393451B1 (ja)
JP (1) JP4156381B2 (ja)
CA (1) CA2446952C (ja)
DE (1) DE60203618D1 (ja)
WO (1) WO2002095950A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6570511B1 (en) * 2001-10-15 2003-05-27 Unisys Corporation Data compression method and apparatus implemented with limited length character tables and compact string code utilization
US6628211B1 (en) * 2002-03-19 2003-09-30 Unisys Corporation Prefix table implemented data compression method and apparatus
US6650259B1 (en) * 2002-05-06 2003-11-18 Unisys Corporation Character table implemented data decompression method and apparatus
US7167115B1 (en) 2005-08-26 2007-01-23 American Megatrends, Inc. Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
US9344528B2 (en) 2011-08-31 2016-05-17 Microsoft Technology Licensing, Llc Data compressor using hints
KR101956031B1 (ko) * 2012-10-15 2019-03-11 삼성전자 주식회사 데이터 압축 장치 및 방법, 데이터 압축 장치를 포함하는 메모리 시스템
US8872679B1 (en) * 2012-12-05 2014-10-28 Teradata Us, Inc. System and method for data compression using multiple small encoding tables
JP6032292B2 (ja) * 2012-12-19 2016-11-24 富士通株式会社 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置
JP6032291B2 (ja) * 2012-12-19 2016-11-24 富士通株式会社 圧縮プログラム、圧縮装置、伸張プログラム、伸張装置およびシステム
US8786471B1 (en) 2013-03-15 2014-07-22 Oracle International Corporation Lossless data compression with variable width codes
CN103326732B (zh) * 2013-05-10 2016-12-28 华为技术有限公司 压缩数据的方法、解压数据的方法、编码器和解码器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4814746A (en) * 1983-06-01 1989-03-21 International Business Machines Corporation Data compression method
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
GB8815978D0 (en) * 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
US5818873A (en) * 1992-08-03 1998-10-06 Advanced Hardware Architectures, Inc. Single clock cycle data compressor/decompressor with a string reversal mechanism
US5442350A (en) * 1992-10-29 1995-08-15 International Business Machines Corporation Method and means providing static dictionary structures for compressing character data and expanding compressed data
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5642112A (en) * 1994-12-29 1997-06-24 Unisys Corporation Method and apparatus for performing LZW data compression utilizing an associative memory
US6169499B1 (en) * 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding
US6188333B1 (en) * 1999-08-12 2001-02-13 Unisys Corporation LZW data compression apparatus and method using look-ahead mathematical run processing
US6307488B1 (en) * 2000-05-04 2001-10-23 Unisys Corporation LZW data compression and decompression apparatus and method using grouped data characters to reduce dictionary accesses

Also Published As

Publication number Publication date
CA2446952A1 (en) 2002-11-28
WO2002095950A1 (en) 2002-11-28
JP2005501445A (ja) 2005-01-13
EP1393451B1 (en) 2005-04-06
EP1393451A1 (en) 2004-03-03
WO2002095950A8 (en) 2003-01-30
US6426711B1 (en) 2002-07-30
DE60203618D1 (de) 2005-05-12
CA2446952C (en) 2010-04-06

Similar Documents

Publication Publication Date Title
US6570511B1 (en) Data compression method and apparatus implemented with limited length character tables and compact string code utilization
US6614368B1 (en) Data compression method and apparatus utilizing cascaded character tables
US4988998A (en) Data compression system for successively applying at least two data compression methods to an input data stream
US5841376A (en) Data compression and decompression scheme using a search tree in which each entry is stored with an infinite-length character string
KR100332709B1 (ko) 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터
US5870036A (en) Adaptive multiple dictionary data compression
US5281967A (en) Data compression/decompression method and apparatus
US5229768A (en) Adaptive data compression system
US6307488B1 (en) LZW data compression and decompression apparatus and method using grouped data characters to reduce dictionary accesses
JPH0773012A (ja) データ圧縮方法及びシステム
JP4156381B2 (ja) 文字テーブルによって実施されるデータ圧縮の方法および装置
US6400286B1 (en) Data compression method and apparatus implemented with limited length character tables
JPH10508170A (ja) 連想メモリを使用するlzwデータ圧縮
US6392568B1 (en) Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings
JP2003521140A (ja) データの圧縮に必要な時間を短縮するための方法および装置
US6628211B1 (en) Prefix table implemented data compression method and apparatus
US6650259B1 (en) Character table implemented data decompression method and apparatus
JP6363581B2 (ja) 入力ブロックのスキャンと同時にソート済みシンボル・リストを維持するハードウェア・データ圧縮器
US6724330B1 (en) Prefix table implemented data compression method and apparatus utilizing string code reassignment
US6653950B2 (en) Data compression method and apparatus utilizing cascaded subdictionaries
US6674374B1 (en) Data compressor utilizing switched input coincidence elements
JPH07152533A (ja) データ圧縮装置
US6608570B1 (en) Matrix implemented data compression apparatus and method
JP3236747B2 (ja) データ伸長方式
US6756923B1 (en) Data compressor utilizing switched input coincidence elements arranged in virtual levels

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050316

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071113

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: 20080613

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080709

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120718

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees