JP2003521140A - データの圧縮に必要な時間を短縮するための方法および装置 - Google Patents

データの圧縮に必要な時間を短縮するための方法および装置

Info

Publication number
JP2003521140A
JP2003521140A JP2001513821A JP2001513821A JP2003521140A JP 2003521140 A JP2003521140 A JP 2003521140A JP 2001513821 A JP2001513821 A JP 2001513821A JP 2001513821 A JP2001513821 A JP 2001513821A JP 2003521140 A JP2003521140 A JP 2003521140A
Authority
JP
Japan
Prior art keywords
string
code
dictionary
pointer address
address
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.)
Granted
Application number
JP2001513821A
Other languages
English (en)
Other versions
JP3611319B2 (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 JP2003521140A publication Critical patent/JP2003521140A/ja
Application granted granted Critical
Publication of JP3611319B2 publication Critical patent/JP3611319B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 本発明により、コード化されたデータを圧縮するための最大システム速度性能を得るための新規な方法およびシステムが提供される。使用される新規ポインタアドレスは、ディクショナリ内で見出される最新整合ストリングを表すストリングコード部分、および該ストリングコード部分に付加される、入力データストリームから得られる次の文字を表す拡張文字コード部分からなっている。固有メモリロケーションを可能なすべてのポインタアドレスに提供するために、ディクショナリの構成は十分に大きくなっている。入力データストリーム中のデータストリングを表す固有ポインタアドレスは、メモリにアクセスするためのアドレスポインタとして使用される。メモリのアドレスポインタ部分にデータが存在しない場合、データストリングは未観察であり、新しい固有圧縮コード化データが、そのデータストリングのためのメモリのポインタアドレス中にストアされ、次の同一ポインタアドレスが、ディクショナリからデータストリングのためのコードを読み出すことができる。

Description

【発明の詳細な説明】
【0001】 (発明の背景) 1.発明の分野 本発明は、データ圧縮システムに関する。より詳細には、本発明は、無損失デ
ータ圧縮、およびストリングコード(string code)をストアするた
めのディクショナリを使用したシステムにおいてデータのストリームを圧縮する
速度を速めるための方法および手段に関する。
【0002】 2.従来技術の説明 従来、無損失データ圧縮アルゴリズムが知られていた。最も良く知られている
データ圧縮システムおよび方法の中には、Lempel Ziv One(LZ
−1)、Lempel Ziv Two(LZ−2)、およびLempel Z
iv Welch(LZW)と呼ばれているものがある。これらの適応無損失デ
ータ圧縮システムはすべて、入力データストリーム中で遭遇するデータストリン
グ、記号ストリングまたは文字列を表すストリングコードをストアするためのデ
ィクショナリを使用している。一旦ストリングが識別されると、識別されたデー
タストリングよりビット数の少ないコードとしてストアされ、それにより、デー
タストリーム中に同一のストリングが続いて発生した場合に、すでにストアされ
ているストリングコードと置き換えられる。上に挙げた3つのデータ圧縮システ
ムはすべて、調査中のストリングに対して、ストリングコードがすでにストアさ
れているか否かを決定するために、ディクショナリ中の複数のロケーションを探
索しなければならない。そのためには、入力データ文字列と、ディクショナリロ
ケーション中にすでにコード化されている同一文字列とを突き合せなければなら
ない。
【0003】 ディクショナリ中の複数のロケーションの探索に要する時間を最短にするため
に、ハッシングアルゴリズムを使用して上記マッチング機能を実行することが提
案されている。ハッシュ探索は、探索するデータに基づいてテーブル中の索引を
計算する。ハッシュ表探索の効率は、テーブルの構成および複数の項目を、競合
することなくテーブルの同一領域にハッシュすることができるか否かによって決
まる。ハッシングシステムは実施費用が高く、計算が複雑であり、そのため、オ
ーバヘッドが性能を低下させる。あるLZWハッシング法が、米国特許第4,5
58,302号に記載されており、参照により本明細書に組み込まれている。
【0004】 また、メモリおよびメモリの一部を分割し、整合または整合がないことが見出
されるまで逐次探索する二分探索法の使用も提案されている。定義によれば二分
探索法では、ディクショナリ内を複数回探索しなければならず、また、テーブル
を並べ換える必要もあるが、ハッシングに関連する複雑な計算が負うべきオーバ
ヘッドが低減されるという利点を有している。
【0005】 連想記憶装置(CAM)すなわち連想メモリを使用することにより、ディクシ
ョナリ中に位置付けされている複数のストリングの内容を比較する回数を少なく
することが提案されている。このシステムは効率的ではあるが、複雑であり、極
めて費用のかかるシステムである。この方法の一例が、米国特許第5,838,
264号に記載されており、参照により本明細書に組み込まれている。
【0006】 ストリングディクショナリを使用したデータ圧縮システムにおいて、複数探索
を完全に回避する方法および装置が提供されることは望ましいことであろう。ま
た、既存の圧縮解除器/デコーダが、いかなる変更もなく、圧縮データを受け取
り、かつ、復号化することができるように、新しいデータ圧縮システムからの出
力を、LZWなどの既存のデータ圧縮システムと互換性を持たせるべくフォーマ
ット可能にすることができることがさらに望ましい。
【0007】 (発明の概要) 本発明の本質的な目的は、ストリングディクショナリを使用して実施されるデ
ータ圧縮の速度を最適化することである。
【0008】 本発明の他の本質的な目的は、データ圧縮器のストリングディクショナリ内の
複数アドレスロケーションを探索する必要性を除去することである。
【0009】 本発明の他の本質的な目的は、ディクショナリ内の探索を不要にするために、
可能なすべての新規ストリングコードのための唯一の固有アドレスを有するルッ
クアップテーブルとして配ストリングされたLZWストリングディクショナリを
提供することである。
【0010】 本発明の他の本質的な目的は、効率的にフォーマット化し、それにより、スト
リングディクショナリ内を広範囲に渡って探索するペナルティを課すことなく、
漢字、日本語、およびその他の複雑な文字コードを圧縮することができる新規デ
ータ圧縮システムを提供することである。
【0011】 本発明の他の本質的な目的は、計算機システムに負担をかけることなく、低コ
ストのランダムアクセスメモリ(RAM)を使用して実施することができるデー
タ圧縮システムを提供することである。
【0012】 本発明の他の本質的な目的は、これまでに可能であった速度より速い速度でL
ZWデータ圧縮を実行する新規方法を提供し、それにより、標準化されている、
あるいはLZWなどのストリングデータ圧縮を使用している高速ネットワークの
ための実時間スループットを増加させることである。
【0013】 本発明の他の目的は、データストリームを圧縮するプロセスを高速化する、新
しい改良型LZWデータ圧縮実行方法を提供し、かつ、既存の回線およびリンク
上での伝送速度をより速くするための手段を提供することである。
【0014】 本発明の本質的な目的は、圧縮すべきデータストリーム中で遭遇するデータス
トリングのための新規拡張ポインタアドレスコードを提供することである。
【0015】 本発明の本質的な目的は、アクセス可能アドレスの数が、全ディクショナリ内
に使用されている最大ストリングコード数より多い、新規ストリングディクショ
ナリを提供することである。
【0016】 本発明の本質的な目的は、ビット数の少ない固有単一のストリングコード値を
、ビット数の多い固有ポインタアドレスコード中に含まれている文字列を表すデ
ィクショナリ中にストアすることである。
【0017】 本発明の本質的な目的は、ストリングディクショナリ内の複数のアドレスロケ
ーションの探索を必要とすることなく、LZWフォーマットで圧縮データストリ
ームを生成することである。
【0018】 本発明の本質的な目的は、ストリングコードを有する拡張文字をLZWディク
ショナリ中にストアする必要を無くすことである。
【0019】 本発明の一般的な目的は、ディクショナリが満杯の場合に、停止し、かつ、内
容をクリアする必要なく、同一LZWストリングディクショナリを複数回使用す
ることである。
【0020】 本発明の一般的な目的は、すべてのメモリロケーションの内容にわたって読み
出すことなく、ストリングディクショナリのすべてまたは選択部分を、パージす
なわちクリアすることである。
【0021】 本発明の一般的な目的は、コードデータがストアされているアドレスロケーシ
ョンのみを重ね書きすることによってクリアすることができるように、ストリン
グコードのアドレスロケーションを補助ルックアップテーブル中にストアするこ
とである。
【0022】 本発明のこれらおよびその他の目的によれば、ストリングコード部分および拡
張コード部分からなる固有ポインタアドレスの生成を含む、ストリングディクシ
ョナリを用いたデータ圧縮の最適高速性能のための方法および装置が提供される
。新規ポインタアドレスは、ディクショナリ内で見出された最新ストリング整合
を表すストリングコード部分、および上記ストリングコード部分に付加された、
データストリーム中の未知の次の文字を表す拡張文字コード部分からなっている
。ストリングコード部分が12ビット以下で規定され、かつ、拡張文字コード部
分が8ビットで規定される場合、可能なポインタアドレスは、わずかに220でし
かない。対応する220のディクショナリアドレスが提供されるため、ポインタア
ドレスを表すストリングがすでに観察済みであり、かつ、ディクショナリ内のポ
インタアドレス中においてストアされているストリングコードと置き換えられて
いるか否かを決定するために、ディクショナリ内のわずか1つのアドレスにアク
セスするだけで良い。
【0023】 (好ましい実施形態の詳細な説明) 図1および好ましい実施形態のデータ圧縮システムを参照する前に、ほとんど
のデータ圧縮システムに合った単一の形式は存在しないことを理解されたい。し
たがって、コンプレッサ/トランスミッタとレシーバ/デコーダはともに、1)
使用する文字セット、2)最大コード値または最大コードフィールドを定義する
のに使用する最大ビット数、3)停止、リセット、コードクリアなどの特別コー
ド、および4)使用するコード化データパッキング−分離スキームを知る必要が
ある。データコンプレッサおよびデコーダが、使用するプロトコルを既に確立し
ており、かつ前述した項目が分かっている場合、データ圧縮を開始する前にプリ
アンブル内またはヘッダ内でそのような情報を送信する必要はない。トランスミ
ッタおよびレシーバがプロトコル項目を知っている本発明の好ましい実施形態で
は、文字セットを使用する初期化なしに新規のストリングディクショナリ11を
含む圧縮システム10を開始することが可能である。ただし、従来のLZWデー
タ圧縮で使用されるとおりディクショナリを文字セットで初期化することも可能
である。データ圧縮システム10は、入力データストリームのための入力ライン
12を含み、この入力データストリームは、データストリームバッファ13内に
入れられ、このデータストリームバッファ13には、次の文字を取り出し、それ
をライン15上に出力する抽出器14が付加され、このライン15上で、この次
の文字は、ポインタアドレスレジスタ16の拡張文字コード部分17内に入れら
れる。アドレスポインタレジスタ16内には、LZWストリングコード部分18
内のLZWストリングコードが既に存在しており、このLZWストリングコード
部分は、ライン12上のデータストリーム内で見られる最後の一致したストリン
グに対するコードを含む。説明のため、LZWコード部分は12ビットを含み、
また拡張文字部分17は8ビットを含み、したがって、ライン19上のディクシ
ョナリポインタアドレスは20ビットを含むことになるものと想定する。新規デ
ィクショナリ11は、少なくとも220の固有メモリロケーションまたはメモリア
ドレスを備え、したがって、可能なすべてのディクショナリポインタアドレスが
、メモリロケーションを有することになる。ディクショナリが初期化されるとき
、例外なくすべての文字列には、それと一致するものが見つかることになり、こ
れにより、2つの文字列の圧縮が開始される。
【0024】 ライン19上のディクショナリポインタアドレスは、ディクショナリ11内で
読取り動作を生じさせ、また、そのポインタアドレスにある内容がライン21上
に現れて、HIT/NO HITバッファ22内にストアされる。ストリングコ
ードがそのポインタアドレスに存在しており、このことは、現在、検査されてい
るストリングが以前に見られたものであり、そのストリングがディクショナリ1
1内でコードで置き換えられていることをバッファ22内の論理に認識させるも
のと想定する。したがって、HITがライン23上で観察され、このことは、H
IT論理24に論理25内で次のポインタアドレスを生成させる。
【0025】 ポインタ論理25により、バッファ22は、ポインタアドレスレジスタ16の
ストリングコード部分18内に書き込まれた最後のHITコードをライン27上
に生成することができる。同時に、このポインタ論理は、イネーブル信号をライ
ン29上に生成し、この信号は、ポインタアドレスレジスタ16の拡張文字部分
17内に書き込まれるライン15上の次の文字コードを文字抽出器14に生成さ
せる。この時点で、ポインタアドレスレジスタ16は、ディクショナリ11から
読み取られた最後のHITコード、およびデータストリームから取り出された拡
張文字または次の文字を含む。ライン19上の新しいポインタアドレスが、その
新しいポインタアドレスにあるディクショナリの内容を再び読み取り、読み取っ
た内容をHIT/NO HITバッファレジスタ22内に入れる。このプロセス
は、ディクショナリ11から読み取られるHITコードが存在しなくなり、バッ
ファレジスタ22内の論理が、NO HIT論理31へのライン28上に信号を
生成するまで続く。NO HIT論理31は、ライン30を介して、ライン32
上およびトランスミッタ内またはレシーバ33内に、バッファレジスタ22から
の最後に一致したコードを読み込む。これは、ブロック33によって示されてい
るが、遠隔のレシーバに対して送信するためのラインであることも可能である。
NO HIT論理31は、ライン62を介して、NO HITポインタアドレス
でレジスタ11内に次の逐次コードをコードジェネレータ59が書き込むように
させる。また、NO HIT論理31は、論理ブロック34で、ライン29を介
してシステム10に新しいポインタアドレスを生成するように信号を送る。新し
いポインタを生成するため、論理34は、2つの逐次動作を行う。ブロック35
で示す第1の動作は、レジスタ16のブロック17内の拡張文字を、部分17に
接続されたライン36で示されるとおり、レジスタ16のブロック18内に移動
させることである。次の逐次動作は、ライン15を介して、データストリーム内
の次の文字を拡張文字部分17内にロードすることである。ブロック37で示す
とおり、この論理は、ライン38上にイネーブル信号を生成する。最後の文字が
読み取られたことを文字抽出ブロック14が感知した場合には、ブロック14が
、ブロック14で最後の文字が読み取られていることをコンピュータコントロー
ラ論理にブロック39で知らせ、これにより、探索論理の終りが完了する。
【0026】 図1のデータ圧縮システム10の動作を要約すると、入力データストリームが
、抽出器14からのデータストリーム内の次の文字または最後の文字をブロック
22で読み取られた最後の一致からのストリングコード部分18上に、常に付加
することが認められよう。アドレスポインタは、ライン19上の2つの部分17
および18によって生成され、このことは、その固有ポインタアドレスでディク
ショナリ11の内容をシステムが読み取るようにさせる。この実施形態において
アドレスポインタ位置に内容が存在する場合、その位置は、アドレスポインタに
よって示されるストリングに関する一致に対するコードを含む。ストリングが前
の一致を有する場合には、そのストリングを1つの文字によって拡張しなければ
ならず、より長い一致を見つける試行をしなければならない。これを行うため、
ディクショナリ11から読み取られたばかりのコードがバッファ22を通り、コ
ード部分18内にロードされ、データストリームからの次の文字コードまたは拡
張文字が部分17にロードされ、新しいポインタが生成される。この一連の動作
は、ディクショナリ11から読み取られるコードが全く存在しなくなるまで続く
。コードが全く存在しなくなることは、MISSまたはNO HITで示される
。これが生じたとき、MISSに対する新しいコードがポインタアドレスにおい
てディクショナリ11内にストアされ、新しいストリングは、この時点で部分1
7内にある最後の文字から開始しなければならない。新しいストリングを開始す
る前に、前の一致コードまたは最後の一致コードを、論理ブロック33として示
すとおり、レシーバに送信しなければならない。次に、NO HIT論理31が
、ポインタ論理34に2つのことを行わせる。第1に、拡張文字部分17内の最
後の文字をコード部分18内に移動し、次の文字を抽出器14から取り出し、拡
張文字部分14内にロードし、これにより、2つの1文字列を有する新しいスト
リングを開始する。これら2つの新しい1文字列は、既に観察された複数文字列
を構成することも、しないことも可能であるポインタアドレスを含むが、これは
、ディクショナリの内容をポインタアドレスに読み取らせ、前述したとおり、H
ITまたはNO HITが起きたかどうかを判定することによって判定すること
になる。
【0027】 ディクショナリ11を使用する文字コードセットで初期化するとき、複数文字
列の圧縮を開始するには、データストリーム内の最初の2文字を部分18および
17にロードするだけでよい。単一文字に対するポインタアドレスを使用する必
要はなく、また単一文字のためのコードは、好ましくは、特殊制御文字に続くよ
り下位のアドレス内に配置する。256文字ASCIIコードセットを使用する
場合、2文字列に対するコードは、3つの特殊コードコードを使用し、かつゼロ
アドレスを全く使用しない場合には、259で開始することになる。
【0028】 ディクショナリ11を初期化せず、レシーバが文字コードセットおよびプロト
コルを知っているとき、コードセット内の単一文字コードのためのアドレスは、
前述したとおり、より下位のアドレスとして予約することができる。ただし、単
一文字コードの内容は、レジスタ16によってアドレス指定可能ではないため、
2文字アドレスがMISSまたはNO HITを生じさせたとき、レジスタ22
内に最後の一致コードが全く存在しないことになる。これが起きた場合、単一文
字コードは、ストリングコード部分18内で入手可能であり、コントローラ39
によって読み取られることが可能である。MISSが生じたときに単一文字コー
ドを生成する別の仕方は、レジスタ18内の単一文字コードが、コントローラ3
9内で以前に見られたかどうかを判定することであり、見られていない場合、そ
れがMISSが生じたときの最後の一致であることになる。
【0029】 次に、テーブルレベル機能がそこで使用される、図1のデータ圧縮システムを
変形した実施形態の概略ブロック図を示す図2を参照する。データ圧縮システム
50は、同様のまたは拡張したディクショナリ11、および以下に説明するとお
り、ディクショナリの一部分であることが可能な、11Aで示したテーブルレベ
ルを使用する。この説明では、ライン12上、バッファ13内、および抽出器1
4内のデータストリームは、本明細書で前に説明したのと同じであると想定する
。したがって、次の文字は、拡張文字部分17にとって、必要なときにはいつで
もライン15上で手に入る。同様に、バッファ22内の最後の一致コードは、ポ
インタレジスタ16Aのコード部分18にとって、ライン27上で手に入る。変
形した実施形態では、ポインタレジスタ16Aは、テーブルカウンタ52によっ
て索引付けされているテーブルレベルブロック51を含むものとして示され、こ
のカウンタは、リセット入力およびセット入力、ならびにオーバーフロー出力4
0を有するものとして示されている。ライン19上のポインタアドレスでディク
ショナリ11にアクセスすることに加え、ディクショナリポインタアドレスと同
じポインタアドレスで、テーブル11A内にテーブルレベル値も提供されている
。例えば、11A内のテーブルレベルが、ディクショナリ11の内容と同時に読
み取られ、テーブルレベルブロック53内にストアされる場合、このレベルは、
論理ブロック54で、ブロック51内の現行のテーブルレベルと比較することが
できる。それらのテーブルレベルを比較する場合、HITが存在し、そうでない
場合、MISSまたはNO HITが存在する。HITが生じたとき、ライン5
5上の信号が、ブロック56でHIT論理を開始し、システム50に新しいポイ
ンタアドレスを生成させる。新しいポインタアドレスの生成は、図1に関連して
説明したのと同じであり、バッファ22内の最後の一致コードが、アドレスポイ
ンタレジスタ16Aのストリングコード部分18内に入れられ、入力ストリーム
内の拡張文字または次の文字が、抽出器14からアドレスポインタレジスタ16
Aの次の文字の部分17または拡張文字部分17に供給される。
【0030】 ただし、対応が存在している可能性があっても、つまりディクショナリ11内
にコードが存在している可能性があっても、テーブルレベル論理内でMISSが
生じた場合、MISSが存在し、システム50は、ライン57によって示される
とおり、MISS論理を実行する。MISS論理58は、次のストリングコード
をコードジェネレータ59が書き込むようにさせ、ブロック51で現行のテーブ
ルレベルをポインタアドレスでディクショナリ11内およびテーブルレベル11
A内にテーブル論理61が書き込むようにさせる。
【0031】 ディクショナリ11内に書き込まれる新しいストリングコードは、論理ブロッ
ク59によってステップされ、コードは、アドレスポインタ位置で書き込まれる
ようにディクショナリ11にとって入手可能である。同様に、テーブル論理61
は、ブロック51と同様の現行のテーブルレベルを提供し、ライン62上の書込
みイネーブル信号によってそのテーブルレベルで同じロケーションに書き込まれ
る。
【0032】 この場合、ポインタアドレスでディクショナリ11内にデータが存在してはい
ても、テーブルレベル11Aが、ブロック51内の現行のテーブルレベルと符合
し、それに等しくなるまで、一致またはHITは存在しないことが理解されよう
。ディクショナリ11を拡張することの目的は、割り当てられたストリングコー
ドのすべてが使用されるまで、ストリングコードでディクショナリを完全に埋め
るのを可能にすることである。ストリングコードのすべてが使用されてはいても
、ディクショナリ11内のすべてのアドレス位置は使用されてない。例えば、デ
ィクショナリが220のアクセス可能なアドレス位置を有する場合、およそ100
万の可能なアドレスが存在する。ただし、LZWコードが、212ビットを使用し
てコードを生成するだけである場合には、コードジェネレータ59によって生成
されるコードの数は、およそ4096のコードを有し、ディクショナリは、40
96のコードが使い果たされたとき、満杯になっている。ディクショナリ11に
テーブルレベル追加を加えることにより、ディクショナリが満杯のとき、テーブ
ルレベルを変更し、4096のストリングコードがその中に書き込まれているデ
ィクショナリのアドレスを除去またはクリアする必要なしに、コードジェネレー
タ59が生成する完全に新しいシーケンスの同じストリングコードを開始するこ
とができる。言い換えれば、最大数のストリングコードでディクショナリ11が
満杯になるたびに毎回、テーブルレベル11Aを実施し、テーブルレベル51が
ポインタアドレスのテーブルレベルに対応しない限り、HITが生じないように
する。HITが生じたとき、図1に関連して説明したのと同じ仕方で新しいポイ
ンタアドレスを生成し、ライン27上の最後の一致コードをレジスタ16Aのス
トリングコード部分18内に入れ、データストリームからの次の文字をレジスタ
16Aの次の文字部分17内に入れる。ディクショナリ11が満杯になったとき
、コードジェネレータ59をリセットし、再び、同じシーケンスのストリングコ
ードを開始するが、これらのコードは、この時点では、異なるテーブルレベルと
関連している。というのは、テーブルレベル論理が、テーブルカウンタ52およ
び現行のテーブルレベルブロック51により、次の高いレベルに設定しているか
らである。使用するメモリチップによっては、数百ものテーブルレベルを利用す
ることができ、ディクショナリ11をリセットする必要がない。
【0033】 次に、データ圧縮ディクショナリ11内の単一アドレス位置にディクショナリ
探索を制限するのに使用する一連の動作の簡略図を示す図3を参照する。ブロッ
ク66が、ブロック67で以下により詳細に説明するディクショナリの初期化お
よび/またはディクショナリのクリアで始まる開始動作を示す。次の動作は、ブ
ロック68で示すとおり、ポインタアドレスおよびシステム10のその他の部分
を初期化および/またはクリアすることである。これらの動作はブロック69で
始まり、そこで、「X」ビットストリングコードが、ポインタアドレスレジスタ
16のストリングコード部分18内に設定される。ただし、第1の文字がデータ
ストリームから読み取られるとき、ストリングコードは全く存在しない。ブロッ
ク71で、「Y」ビット文字コードが拡張文字部分17内に設定される。このコ
ードは、開始時のデータストリーム内の第2の文字、または第2の読取り動作に
関するデータストリーム内の第2の文字を含む。アドレスポインタレジスタ内の
2つのコードセットを使用する固有ポインタアドレスを使用してブロック72に
示す2x+yビットを有する固有ポインタアドレスが生成される。ブロック73で
、ディクショナリ11の内容が、そのポインタアドレスで読み取られる。ブロッ
ク74で、ディクショナリ11のストリングコード内容が、ブロック74に示す
とおり、出力バッファ22内に読み込まれる。ただし、内容が全く存在しない場
合には、まず、内容不在コードと等価のものが、バッファ22内に読み込まれる
。ブロック75で、ディクショナリから読み取られたストリングコードが、以前
にストアされたコードであるか否か、または情報の不在であるか否かの論理判定
が行われる。ストリングコードが読み取られた場合には、HITが存在し、ブロ
ック76に示すとおり、HIT論理に進む。HITが生じない場合、ブロック7
7に示されるとおり、MISS論理に進む。
【0034】 図3に関する説明は、図1上におよび図2上に直接に読まれる。ディクショナ
リ11を開始することを所望しない場合、図3Aに示すとおり、準備ステップが
行われるという条件で、やはり同じ一連の動作を使用することが可能である。
【0035】 同じ開始ブロック66を示す図3Aを参照する。ブロック67Aは、ディクシ
ョナリ11およびシステムがクリアされ、したがって、ディクショナリ11内に
以前に記録されているコード情報が全く存在しないことを示している。ただし、
圧縮システム10とデコーディングシステムの両方によって知られている数字に
よって文字セットに対するコード値が予約されている。
【0036】 ブロック78で、システム10を開始するため、データストリーム内の第1の
文字が、レジスタ16のストリングコード部分18内にロードされる。
【0037】 ブロック79で、データストリーム内の第2の文字または次の文字が、レジス
タ16の拡張文字コード部分17内にロードされる。
【0038】 ブロック80で、ストリングコード部分18内の文字が、単一文字列であり、
かつデータストリーム内で以前に生じていないかどうかが判定される。生じてい
ない場合、部分18内の文字は、最後に一致したコードとしてバッファレジスタ
22内にロードされる。この手続きは、ディクショナリ11を初期化せずにデー
タ圧縮システム10を開始する唯一の仕方であるだけでなく、ブロック80で判
定が行われた後、ブロック72ないし77に関連して説明したとおり初期化され
たときと同様に動作するシステム10を提供する。単一文字コードは、ディクシ
ョナリ11内に記録されていることが可能であるが、ライン19上のアドレスポ
インタは、それらのコードにアクセスしないことになる。
【0039】 ブロック78で、最初、図1に示すシステムを介して、データストリーム内の
第1の文字が、レジスタ22内にロードされ、またアドレスレジスタ16のスト
リングコード部分18内にもロードされる。次に、データストリーム内の拡張文
字または第2の文字が、ブロック79で示されるとおり、アドレスレジスタの文
字コード部分17内に設定される。システムがこのように開始のために始められ
ると、2つの別個の独立した文字が、ポインタアドレスレジスタ16内に設定さ
れ、またデータストリーム内の第1の文字を示す最後の一致文字が、バッファ2
2内に設定されることが理解されよう。図3のこの変形形態は、本明細書で前述
したものと同一であるその他のブロック72〜77を使用するので、さらなる説
明を必要としない。
【0040】 次に、アクセスされる単一のディクショナリアドレスが、HITをもたらすス
トリングコードを含むときに使用される一連の動作を有する簡略化した流れ図を
示す図4を参照する。ブロック81は、ディクショナリ11から読み取られたス
トリングコードがHITを示すことを示す。ブロック82は、より長いストリン
グのための新しいポインタを生成するのが望ましいことを示す。ブロック83は
、ディクショナリ11から読み取られたストリングコードが、部分18でアドレ
スレジスタ16内にストアされることを示し、またブロック84は、入力データ
ストリーム内の次の文字に対するコードが、ポインタアドレスレジスタ16の拡
張文字部分17内にストアされることを示す。ブロック85は、ポインタアドレ
スレジスタ16内の2つのコードを使用して新しいポインタアドレスが生成され
ることを示す。ブロック86は、そのポインタアドレスでディクショナリ11の
新しいストリングコード内容が読み取られることを示す。ブロック87は、ディ
クショナリのコード内容がバッファレジスタ22内にストアされることを示す。
ブロック88は、ディクショナリ11から読み取られた情報コードが以前にスト
アされたコードを含むかどうかについての論理判定を示す。ディクショナリから
コードが読み取られる場合、ライン89上でHITが存在し、ブロック82ない
し88に示す一連の動作が繰り返される。HITが存在しない場合、MISSが
存在し、一連の動作は、次に、ブロック91に示すとおり、MISS論理に進む
【0041】 アクセスされる単一のディクショナリアドレスが、ブロック91Aに示すとお
り、MISSをもたらすストリングコードを全く含まないときに使用される、簡
略化した流れ図および一連の動作を示す図5を参照する。図5のブロック91A
は、MISSが生じたとき、この論理に従う。情報として、MISSが生じると
き、文字列は、ストリングに追加された最後の追加文字によって新しいストリン
グがあまりにも長くなったため、それがディクショナリ内でもはや見られないと
ころまで拡張されていることを想起されたい。これが起きたとき、前のHITが
、ディクショナリ内で見られる最長の一致である。ブロック92は、この最後に
一致したHITコードが、レシーバまたはデコーダに送信されることを示す。最
後の一致はレジスタ22内に保持され、それをライン32上でレシーバまたはデ
コーダ33に出力することができる。ブロック93は、ポインタアドレスでディ
クショナリ11内に、コードジェネレータ59によって生成された次の逐次コー
ドを書き込むまたはストアする動作を示す。レジスタ18内の同じコードと最後
に一致したバッファ22内のコードは、同一であることを留意されたい。ただし
、これは、ポインタアドレスでディクショナリ内に書き込まれているコードでは
ない。ブロック93は、次の逐次コードがディクショナリ11内に書き込まれる
ことを示す。ブロック94および95に示し、説明する論理を使用して新しいポ
インタアドレスを生成することが必要であり、この論理では、アドレスレジスタ
部分17内に最後に入力された拡張文字コードのためのコードが、アドレスポイ
ンタレジスタ16のストリングコード部分18内に移動または転送される。新し
い文字または次の拡張文字が、ブロック94および95によってそれぞれ示され
るとおり、レジスタ部分17内にストアされる。ブロック96は、次に、レジス
タ16内の情報が使用され、ブロック94および95に示されるとおり、レジス
タ16内にロードされた2つのコード部分を使用して新しいポインタアドレスが
生成されることを示す。ブロック97は、ディクショナリ11のストリングコー
ド内容が、その新しいポインタアドレスでディクショナリから読み取られること
を示し、またブロック98は、ディクショナリ11のストリングコード内容が出
力コードバッファ22内にストアされることを示す。ブロック99は、ディクシ
ョナリ11から読み取られた情報が以前にストアされたコードを含むかどうかに
ついての論理判定を示し、ストアされている場合、この論理は、論理HITを示
すブロック101に行き、またストアされていない場合、この論理は、論理MI
SSを示すブロック102に進む。HIT論理およびMISS論理は、図4およ
び5にそれぞれ示し、またブロック101および102にそれぞれ示している。
【0042】 次に、ディクショナリ11として使用することができるメモリブロックまたは
メモリモジュールの概略を示す図6を参照する。メモリのモジュール103は、
深さ220行、幅16ビットのであるものとして示している。16ビットは、12
データ圧縮コードビット、およびディクショナリ11内に組み込まれるテーブル
レベルのために予約した最後の4ビットとして使用することができる。したがっ
て、およそ深さ100万のビットまたは行、幅16ビットを有する2つの標準の
メモリブロックは、実際には、およそ2.00ドルで購入することができる2メ
ガバイトのモジュールを含む。これは、モジュールが8ビットバイトの形態をと
り、共に接続されたとき、1つの幅16ビットのアドレス指定可能な行を構成す
ることを想定している。以下に説明するとおり、この2メガバイトのモジュール
は、変更することなく、本発明におけるディクショナリとして使用すること、あ
るいはテーブルを広げるため、さらなる4ビットバイトまたは8ビットバイトを
追加することによって変更することが可能である。LZWデータ圧縮を行うとき
、LZWコード内で9ビットないし12ビットを使用することが通常である。1
3ビットを超えてコードビットを拡張する正当な理由はめったにないが、正当な
理由がある場合、ディクショナリを拡大することによってより多くのコードビッ
トをディクショナリ内に収容することができる。
【0043】 次に、深さ221ビットで幅は8ビットだけ、つまり幅1バイトであるブロック
またはモジュールとしての同じ量のメモリを示す図7を参照する。この構成では
、図6に示すとおり、2つの8ビットバイトが直接に接続され、等価のメモリス
トレージをもたらす形で2つの行を使用することが可能である。各メモリモジュ
ールは、異なる仕方で接続されてはいるものの、2メガバイトを備え、その費用
は同じである。
【0044】 次に、それぞれ2メガバイトのメモリを備え、それらが図6に示したのと同じ
タイプであることを示すために103A、103B、103Cと番号を付けた、
図6および7に示した型の3つのメモリブロックまたはメモリモジュールの概略
を示す図8を参照する。3つの同じモジュール103Aないし103Cを使用し
てディクショナリを構成するとき、使用中(ビジー)モジュールである1つのモ
ジュール内で動作を行い、フラッシュまたはリセットした1つの完全に空のモジ
ュールを有し、許容される最大数のストリングコードまでちょうど満たし、まだ
フラッシュしていない別のモジュールを有することが可能である。
【0045】 図6〜8の説明では、圧縮コードのために使用するビット数は、12ビットと
して示した。12ビットを使用すると、4096の固有ストリングコードを生成
することだけが可能である。図1および2に関連して説明したとおり、およそ1
00万のアドレスが存在してはいるものの、4096の固有圧縮コードが割り当
てられると、ディクショナリは満杯になる。ディクショナリをリセットするテー
ブルレベル11Aシステムを回避するとき、圧縮コードのために、最高でモジュ
ールの16ビットすべてを使用することが可能である。例えば、図6では、図2
の番号11Aを参照して説明したテーブルレベル動作のために、16ビットのう
ち4ビットが予約されている。したがって、圧縮コードを形成するのに12ビッ
トだけしか残されていない。しかし、テーブルレベル11Aを完全に無くすと、
16ビットすべてを圧縮コードのために利用することができ、この場合、およそ
65000の別々の圧縮コードを生成することが可能であり、これにより、シス
テムは、それが所望される場合、より長いストリングを生成することができる。
可能な224のアドレスのうち65000だけが埋まっているので、この場合、図
8に示す型のディクショナリを構成し、9から16の間にコード圧縮ビット数を
最適化することが可能である。一旦選択したコードビット数によって許容される
最大数のコードでディクショナリが埋まると、データ圧縮システムは、リセット
コードをデコーダまたはレシーバに送信し、圧縮コードで埋められたモジュール
をリフレッシュまたはフラッシュするのを待つ必要なしに、即時に、次のモジュ
ール103B内で先行して新しいコードを生成し、新しいストリングを送信する
。この動作を代替の仕方で行い、2つのモジュールだけを使用することも可能で
あろうが、3つのモジュールが提供された場合、アクティブなモジュールが満杯
になる前に、第3のモジュール内でリフレッシュ動作またはフラッシュ動作を前
に完了できることが分かっていれば、あるモジュールが使用中のとき、別のモジ
ュールが常に空であることが保証される。
【0046】 本適用例に記載する型のディクショナリ11を実現するために、市販のメモリ
を配置することの簡略化したバージョンを説明したので、32メガバイトのメモ
リの費用が、およそ20.00ドルで購入することができ、本明細書に記載する
型のメモリは、コンピュータ動作時間を短縮することにより、非常に短い期間で
元が取れることが理解されよう。これは、大きなコンピュータまたはメインフレ
ームコンピュータでは、特にそうである。
【0047】 次に、図8に示したものと同様の多数のセクション、ブロック、またはモジュ
ールを有する概略図を示す図9を参照する。単一のモジュールをリフレッシュま
たはフラッシュすることが所望されるとき、ブロック105に示すとおり、2メ
ガバイトのアドレス生成容量を有するクリアアドレスカウンタを使用することが
できる。これらのアドレスのそれぞれ、および番号106で示すモジュールS1
ないしS16のそれぞれに、すべてゼロを書き込むことが好ましい。他のセクシ
ョンを除いてクリアされるべきセクション内のアドレスをポイントするための手
段として、選択入力108を有するマルチプレクサ107を使用することができ
る。したがって、ディクショナリの他のセクションがデータ圧縮システムのため
に使用されている最中に、セクションを1つずつ選択し、アドレス位置のそれぞ
れにゼロを書き込むことができる。
【0048】 次に、ディクショナリ11の概略、およびディクショナリ内の可能なすべての
アドレスに上書きすることを必要としない、ディクショナリの内容をクリアする
ための関連する構造を示す図10を参照する。ライン19上のアドレスポインタ
が、ディクショナリ11内のアドレスにアクセスするとき、補助メモリ110内
に同じアドレスを書き込むことが可能である。ANDゲートまたはそれに類する
デバイス111が、ブロッキングデバイスとして動作しているものとして示して
いる。というのは、MISSが生じたときにだけ、そのアドレスを記録すればよ
いからである。したがって、MISSが生じるたびに毎回、アドレスカウンタ1
12のカウントが、メモリ110内でステップされ、データ圧縮動作中に情報が
その中にストアされる4096のアドレスが、結果として、なんらかの順序でメ
モリ110内にストアされることになる。この場合、これらのアドレスを使用し
、クリアアドレスカウンタとともにアドレスポインタを生成し、情報がそこにス
トアされていることが分かっているアドレスだけをクリアするように、すべてゼ
ロを生成することが可能である。
【0049】 この場合、4096のアドレスのためのコードストーレッジを実装するのに必
要なメモリをディクショナリ11として使用するのと同じメモリモジュールで実
現してもよいことが認められよう。
【0050】 ディクショナリを探索する必要なしに、データ圧縮を行うことの基本原理を説
明したので、このシステムを実施する多くの仕方が存在することが理解されよう
。例えば、メモリは、現在、とても安価で、さらに安価になっているので、ほと
んどの適用例において専用メモリが見合うものとなる可能性があり、さらなる速
度が必要とされる場合、示したステップおよび動作のいくつかは、図1〜5に示
すアルゴリズムおよびステップを実現する安価な専用ハードウェア実装形態によ
って実行することができる。
【0051】 安価なメモリで置き換えることにより、テーブルまたはテーブルレベル11A
を無しで済ますのが可能なことを説明したので、システム全体がソフトウェアで
実行されるとき、テーブルレベル実装形態を使用するのが望ましい可能性がある
【0052】 マルチプロセッシングシステムを使用して大きいファイルに対するデータ圧縮
を行うことが望ましい場合、本発明を使用し、またそのメモリが満杯になるまで
、複数のプロセッサの1つを使用してデータ圧縮を行い、次に、そのデータ圧縮
システム内の第2のプロセッサにそのデータストリームを切り替え、データ圧縮
を行いつづけ、その一方で第1のプロセッサはそのディクショナリをフラッシュ
して、データ圧縮の速度を最適化することが可能である。
【0053】 中央プロセッシングシステムに売上げおよび在庫を送信する大手の製造業者は
、自らのデータをリアルタイムで圧縮し、十分な帯域幅を有するリンクを介して
そのデータをより高速に送信することができる。通信リンクが、データ圧縮シス
テムよりも遅い場合、圧縮データは、バッファシステム内に迅速にストアし、デ
ータ圧縮を行うコンピュータシステムを不利にすることなく、リンクが提供する
最大限の速度で送信することができる。
【0054】 探索するストリングに対してディクショナリ内にコードまたは値がストアされ
ているか否かを単一回の読取り動作で判定するための、好ましい実施形態として
のディクショナリおよびアドレスポインタを説明したので、本発明をコンピュー
タ内のソフトウェアで実行するのが可能である、またはハードウェアおよびソフ
トウェアを使用して実施するのが可能であることが理解されよう。文字のコード
セットを使用してディクショナリを初期化することの利点、およびトランスミッ
タおよびレシーバがともに使用されているコードセットを知っているとき、ディ
クショナリを初期化しないことの利点が存在する。少しでも疑念がある場合、圧
縮データに先立ってコードセットおよびプロトコルを送信することができる。デ
ィクショナリをコードセットで初期化しない場合、コンプレッサが初期にその欠
如を補い、単一文字コードをディクショナリ内にストアさせる。ただし、ディク
ショナリ内に複数文字列コードがストアされていると、新規のアドレスポインタ
は、同じ新規のHIT結果またはMISS結果を生成することになる。テーブル
レベルの変形実施形態では、異なるテーブルレベル内の異なるアドレスに同じ複
数ストリングコードを書き込むことが可能である。ディクショナリ内に新しいシ
ーケンスのストリングコード値が書き込まれるデータ圧縮動作中、1つのテーブ
ルレベルだけが有効であるので、HITが生じたとき、正しい最後に一致したコ
ードがわかり、レジスタ18内に書き込むためにその正しい最後に一致したコー
ドがバッファ22に読み込まれる限り、競合は存在しない。言い換えれば、HI
TまたはMISSが生じたかを判定するのに、そのポインタアドレスのテーブル
レベルだけを使用することができる。すべてのHITに続き、次のポインタアド
レスを構成するために最後に一致したコードを利用することができる。MISS
に続き、次のポインタアドレスは、ディクショナリの外で利用可能な2つの単一
文字コードを含み、したがって、HITが生じたとき、テーブルレベルを使用し
てHITまたはMISSを判定するのに、最後に一致したコードを有するだけで
よい。
【図面の簡単な説明】
【図1】 データストリーム中に見出される英数字または記号のストリングを表すコード
を生成するためのデータ圧縮システムの好ましい実施形態の概略ブロック図であ
る。
【図2】 ディクショナリ上またはディクショナリ中に付加されるテーブルレベル機能を
示す、図1に示すデータ圧縮システムの変形実施形態の概略構成図である。
【図3】 ディクショナリ探索を、データ圧縮システムにおける単一のディクショナリポ
インタアドレスに制限するために使用される動作シーケンスを示す簡易流れ図で
ある。
【図3A】 ディクショナリが初期化されない場合における、図3に示す流れ図を変形した
動作シーケンスの簡易流れ図である。
【図4】 アクセスされる単一のディクショナリポインタアドレスが、HITの結果をも
たらすストリングコードを含む場合に使用される動作シーケンスを示す簡易流れ
図である。
【図5】 アクセスされる単一のディクショナリポインタアドレスが、MISSの結果を
もたらすストリングコードを含まない場合に使用される動作シーケンスを示す簡
易流れ図である。
【図6】 本発明におけるディクショナリのために使用されるメモリのブロックすなわち
モジュールの概略図である。
【図7】 図6に示す構成とは異なるメモリの他のブロックすなわちモジュールの概略図
である。
【図8】 図6および7に示すタイプのメモリの3つのブロックすなわちモジュールの概
略図である。
【図9】 メモリが満杯になり、動作不能の場合にブロックをクリアするための構造を示
す、複数のブロックすなわちモジュールを有し、常時そのうちの1つしか動作す
ることができない大型ディクショナリの概略図である。
【図10】 ディクショナリと、ディクショナリを直ちにリセットすることが望ましい場合
に、ディクショナリの内容をフラッシングすなわちクリアするための構造を示す
概略図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 セイアー リンゼイ ヨーク アメリカ合衆国 19006 ペンシルベニア 州 ハンチントン バレー カントリー クラブ ドライブ 2130 Fターム(参考) 5B075 ND02 NK48 UU40 5J064 AA02 AA03 BA11 BB05 BC01 BC03 BC04 BC05 BC14 BC29 BD04

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 データストリーム中ですでに観察済みの、既知のストリング
    のための代替ストリングコード値を含む直列データストリームを圧縮するための
    方法であって、 前記ストリングコード値を受け取るためのディクショナリを準備するステップ
    と、 前記データストリーム中で最初に観察された時点で、ストリングのための固有
    コード値を前記ディクショナリ中にストアするステップと、 探索される同一のストリングが、前記ディクショナリ中にストアされているス
    トリングコードを有しているかどうかを決定するために使用すべき固有ポインタ
    アドレスであって、既知のストリングのためのコードに対応するストリングコー
    ド部分および前記データストリーム中における次の文字のためのコードに対応す
    る拡張文字部分からなる固有ポインタアドレスを生成するステップと、 前記固有ポインタアドレスにおいて前記ディクショナリの内容を読み出すステ
    ップと、 単一のポインタアドレスにおいて読み出された内容から、探索されるストリン
    グのためのコード値が前記ディクショナリ中に存在するか否かを決定するステッ
    プとを含むことを特徴とする方法。
  2. 【請求項2】 前記決定ステップが、 前記ディクショナリ中の内容がストリングコードを含むことを決定するステッ
    プと、 前記ディクショナリから読み出されるストリングコードと同一のストリングコ
    ードを用いる新しい固有ポインタアドレスを生成するステップと、 探索すべき次のストリングのための新しいポインタアドレスを形成するために
    、前記データストリーム中の次の文字のためのコードを、読み出されたストリン
    グコードに付加するステップとを含むことを特徴とする、請求項1に記載の方法
  3. 【請求項3】 前記決定ステップが、 前記固有ポインタアドレスにおいて前記ディクショナリの内容が、探索するス
    トリングのためのストリングコードを含んでいないことを決定するステップを含
    み、 その前のポインタアドレスにおいて見出された最新の整合ストリングコードを
    、レシーバに伝送するステップと、 次の固有ストリングコードを、該ディクショナリの現在のポイントアドレス中
    にストアするステップとをさらに含むことを特徴とする、請求項1に記載の方法
  4. 【請求項4】 その前のアクセスの間に、該データストリームから読み出さ
    れた最新の文字コードを含む、新しい固有ポインタアドレスを生成するステップ
    と、 前記新しい固有ポインタアドレスを形成するために、前記データストリーム中
    の次の文字のためのコードを付加するステップとをさらに含むことを特徴とする
    、請求項3に記載の方法。
  5. 【請求項5】 次の固有ストリングコードを、該ディクショナリ中にストア
    する前記ステップが、次の固有ストリングコードを提供するために、コードカウ
    ンタをインクリメントするステップを含むことを特徴とする、請求項3に記載の
    方法。
  6. 【請求項6】 前記ディクショナリから読み出された前記ストリングコード
    が、前記ディクショナリが満杯であることを示すために使用すべき最高の番号が
    振られたストリングコードであるか否かを決定するステップをさらに含むことを
    特徴とする、請求項5に記載の方法。
  7. 【請求項7】 前記ディクショナリの各ポイントアドレスにおける内容に関
    連するテーブルレベルメモリを提供するステップと、 新しい固有ストリングコードが前記ディクショナリ中にストアされる毎に、前
    記テーブルレベルメモリにレベル値を設定するステップと、 前記ディクショナリが満杯であることが決定された場合に、前記テーブルレベ
    ルメモリに、より高いレベル値を設定するステップとをさらに含み、 前記単一のポインタアドレスから読み出される内容から決定する該ステップが
    、固有ポインタアドレスにおけるテーブルレベル値が、探索されるストリングの
    ためのコードが前記ディクショナリ中に存在することを示す所定のテーブルレベ
    ル値に対応することを決定するステップをさらに含むことを特徴とする、請求項
    1に記載の方法。
  8. 【請求項8】 入力データストリーム中で遭遇するデータ文字列のためのコ
    ードをストアし、かつ、ストリングコードで既知のストリングを表すディクショ
    ナリを利用したデータを圧縮する方法であって、 既知のデータストリングを表す前記ディクショナリに固有ストリングコードを
    ストアさせるステップと、 前記入力データストリーム中のデータ文字列を示すポインタアドレスを生成す
    るステップと、 先行するストリングの最後の文字のためのコード、および前記コードに付加さ
    れる、該入力データストリームからの次の文字からなり、2つの文字コードスト
    リングアドレスを形成する、前記ポインタアドレスを形成するステップと、 前記ディクショナリから前記ポインタアドレスにおけるストリングコードを読
    み出すステップと、 前記ディクショナリから読み出されるストリングコード、および該ストリング
    コードに付加される、該入力データストリームから得られる次の文字のためのコ
    ードからなる、新しいポインタアドレスを生成するステップとを含むことを特徴
    とする方法。
  9. 【請求項9】 前記ディクショナリから前記ポインタアドレスにおいて読み
    出されるストリングコードが、すでに発生済みのストリングを表し、 新しいポインタアドレスの生成を継続するステップと、 前記ディクショナリから新しいポインタアドレスにおいて、すでにストアされ
    ているストリングコードの読出しを継続するステップと、 先行するストリングが見出される毎に、前記アドレスポインタによって表され
    るストリングの長さを拡張するステップとを含むことを特徴とする、請求項8に
    記載の方法。
  10. 【請求項10】 前記新しいポインタアドレスにおいて読み出されるコード
    が、未発生のストリングを表し、 すでにストアされているストリングから得られる最後の文字のためのコード、
    およびそれに付加される、該入力データストリームからの次の文字からなる、新
    しいポインタアドレスを生成するステップを含むことを特徴とする、請求項8に
    記載の方法。
  11. 【請求項11】 最新の整合ストリングコードをレシーバまたはデコーダに
    伝送するステップと、 新しい固有ストリングコード値を、該ディクショナリの前記ポインタアドレス
    中にストアするステップとをさらに含み、 前記新しい固有ストリングコード値が、コード生成器によって生成される逐次
    値を含むことを特徴とする、請求項10に記載の方法。
  12. 【請求項12】 入力データストリーム中の既知の文字列をコードに置き換
    えることにより直列データストリームを圧縮するデータ圧縮システムであって、 既知のストリングコード部分、および固有ポインタアドレスを形成するために
    、文字コードとして該ストリングコード部分に付加される、該入力データストリ
    ームから得られる次の文字の文字コード部分からなる、前記データストリーム中
    のデータストリングを表すコードを探索するためのポインタアドレス手段と、 前記入力データストリーム中に観察される複数の文字列のための固有ストリン
    グコード値を含む、各可能固有ポインタアドレスの少なくとも1つでアクセス可
    能な複数のメモリロケーションを有するストリングコードディクショナリと、 前記ストリングコードディクショナリから前記固有ポインタアドレスにおける
    前記固有ストリングコード値を読み出す手段と、 前記ストリングコードディクショナリから読み出した内容から、前記ディクシ
    ョナリ中に存在しているストリングコードが、前記入力データストリーム中の文
    字列を表し、かつ、前記ポインタアドレスによって示されているか否かを決定す
    るための手段とを備えることを特徴とするデータ圧縮システム。
  13. 【請求項13】 前記決定手段が、前記ディクショナリから読み出された、
    前記入力データストリーム中ですでに発生済みの複数の文字列を示すストリング
    コード値を受け取り、かつ、ストアするためのバッファレジスタ手段と、 前記入力データストリーム中に見出された最長整合文字列に対するストリング
    コードをレシーバに伝送するための手段とを備えることを特徴とする、請求項1
    2に記載のデータ圧縮システム。
  14. 【請求項14】 前記決定手段が、前記ディクショナリから読み出された、
    前記ディクショナリの前記ポインタアドレスにおいてストリングコードが存在し
    ないことを示すコード値を受け取るためのバッファレジスタ手段と、 前記ポインタアドレスによって示される、前記入力データストリーム中の前記
    文字列と置き換えるべき固有ストリングコード値を、前記ディクショナリに書き
    込むためのストリングコード生成手段とを備えることを特徴とする、請求項12
    に記載のデータ圧縮システム。
  15. 【請求項15】 前記ポインタアドレス手段が、長さが2nビットに等しい
    ポインタアドレスをストアするためのレジスタを備えることを特徴とする、請求
    項14に記載のデータ圧縮システム。
  16. 【請求項16】 前記コードディクショナリが、2nの最小ポインタアドレ
    スを有するメモリを備えることを特徴とする、請求項15に記載のデータ圧縮シ
    ステム。
  17. 【請求項17】 前記ストリングコード生成手段が、可能ポインタアドレス
    の数がコード値の数を超える、異なるポインタアドレスにおいて可変幅固有スト
    リングコード値を生成するための手段を備えることを特徴とする、請求項16に
    記載のデータ圧縮システム。
  18. 【請求項18】 前記ストリングコードディクショナリが、幅が可変の前記
    ストリングコード値に使用されるビット数より多いビット数を有するメモリロケ
    ーションを備えることを特徴とする、請求項12に記載のデータ圧縮システム。
  19. 【請求項19】 前記メモリロケーションの一部が、未使用ビット中にテー
    ブル値をストアするためのテーブルを含むことを特徴とする、請求項18に記載
    のデータ圧縮システム。
  20. 【請求項20】 前記ストリングコードディクショナリが、関連するテーブ
    ルレベル値メモリと、 前記ディクショナリがより下位のテーブルレベルのストリングコード値で満杯
    の場合、前記テーブルレベル値をより高いテーブルレベルにリセットするための
    手段とをさらに備えることを特徴とする、請求項12に記載のデータ圧縮システ
    ム。
JP2001513821A 1999-07-30 2000-07-19 データの圧縮に必要な時間を短縮するための方法および装置 Expired - Fee Related JP3611319B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/364,427 1999-07-30
US09/364,427 US6320523B1 (en) 1999-07-30 1999-07-30 Method and apparatus for reducing the time required for compressing data
PCT/US2000/019871 WO2001010037A1 (en) 1999-07-30 2000-07-19 Method and apparatus for reducing the time required for compressing data

Publications (2)

Publication Number Publication Date
JP2003521140A true JP2003521140A (ja) 2003-07-08
JP3611319B2 JP3611319B2 (ja) 2005-01-19

Family

ID=23434490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001513821A Expired - Fee Related JP3611319B2 (ja) 1999-07-30 2000-07-19 データの圧縮に必要な時間を短縮するための方法および装置

Country Status (5)

Country Link
US (1) US6320523B1 (ja)
EP (1) EP1201036B1 (ja)
JP (1) JP3611319B2 (ja)
DE (1) DE60002340T2 (ja)
WO (1) WO2001010037A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004528771A (ja) * 2001-04-04 2004-09-16 ハネウェル・インターナショナル・インコーポレーテッド カノニカル・ハフマン符号化データ圧縮解除アルゴリズム
US7500017B2 (en) * 2001-04-19 2009-03-03 Microsoft Corporation Method and system for providing an XML binary format
US7064688B2 (en) * 2001-07-09 2006-06-20 Good Technology, Inc. System and method for compressing data on a bandwidth-limited network
US20030009595A1 (en) * 2001-07-09 2003-01-09 Roger Collins System and method for compressing data using field-based code word generation
FR2838842B1 (fr) * 2002-04-22 2004-07-23 Barco View Texen Procede et dispositif de traitement de libelles, et produit programme d'ordinateur
US7173436B2 (en) * 2004-11-24 2007-02-06 Saab Rosemount Tank Radar Ag Antenna device for level gauging
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
US8081184B1 (en) * 2006-05-05 2011-12-20 Nvidia Corporation Pixel shader program thread assembly
US7453377B2 (en) * 2006-08-09 2008-11-18 Reti Corporation Apparatus and methods for searching a pattern in a compressed data
US8819288B2 (en) * 2007-09-14 2014-08-26 Microsoft Corporation Optimized data stream compression using data-dependent chunking
US9325813B2 (en) 2013-09-03 2016-04-26 Qualcomm Incorporated Formatting data packets for compression
US9690488B2 (en) * 2015-10-19 2017-06-27 Intel Corporation Data compression using accelerator with multiple search engines
CN108563796A (zh) * 2018-05-04 2018-09-21 蔷薇信息技术有限公司 区块链的数据压缩处理方法、装置及电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US4881075A (en) * 1987-10-15 1989-11-14 Digital Equipment Corporation Method and apparatus for adaptive data compression
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US4929946A (en) * 1989-02-09 1990-05-29 Storage Technology Corporation Adaptive data compression apparatus including run length encoding for a tape drive system
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5151697A (en) * 1990-10-15 1992-09-29 Board Of Regents Of The University Of Washington Data structure management tagging system
US5373290A (en) * 1991-09-25 1994-12-13 Hewlett-Packard Corporation Apparatus and method for managing multiple dictionaries in content addressable memory based data compression
US5229768A (en) 1992-01-29 1993-07-20 Traveling Software, Inc. Adaptive data compression system
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
US5389922A (en) * 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets
US5525982A (en) * 1994-04-15 1996-06-11 International Business Machines Corporation Method and means for character string pattern matching for compression and the like using minimal cycles per character
KR100260827B1 (ko) * 1994-06-16 2000-07-01 야스카와 히데아키 데이타 압축방법, 데이타 복원방법 및 정보처리 장치
US5642112A (en) * 1994-12-29 1997-06-24 Unisys Corporation Method and apparatus for performing LZW data compression utilizing an associative memory
US5815096A (en) * 1995-09-13 1998-09-29 Bmc Software, Inc. Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
US5798718A (en) * 1997-05-12 1998-08-25 Lexmark International, Inc. Sliding window data compression method and apparatus

Also Published As

Publication number Publication date
WO2001010037A1 (en) 2001-02-08
DE60002340T2 (de) 2004-03-04
US6320523B1 (en) 2001-11-20
EP1201036B1 (en) 2003-04-23
EP1201036A1 (en) 2002-05-02
DE60002340D1 (de) 2003-05-28
JP3611319B2 (ja) 2005-01-19

Similar Documents

Publication Publication Date Title
US4558302A (en) High speed data compression and decompression apparatus and method
US5281967A (en) Data compression/decompression method and apparatus
US5410671A (en) Data compression/decompression processor
JP3342700B2 (ja) ストリングリバーサル機構を具備した単一クロックサイクルデータ圧縮装置/圧縮解除装置
JP2502469B2 (ja) 文字デ―タを圧縮し圧縮済みデ―タを展開するための静的辞書構造を提供する方法および手段
US5485526A (en) Memory circuit for lossless data compression/decompression dictionary storage
US5373290A (en) Apparatus and method for managing multiple dictionaries in content addressable memory based data compression
US4988998A (en) Data compression system for successively applying at least two data compression methods to an input data stream
US5339398A (en) Memory architecture and method of data organization optimized for hashing
EP0666651B1 (en) Apparatus and method for lempel ziv data compression with management of multiple dictionaries in content addressable memory
CA1330838C (en) Method and apparatus for encoding, decoding and transmitting data in compressed form
US5016009A (en) Data compression apparatus and method
US5229768A (en) Adaptive data compression system
US5838264A (en) Method and apparatus for performing LZW data compression utilizing an associative memory
EP0471518A1 (en) Data compression method and apparatus
JP2003521140A (ja) データの圧縮に必要な時間を短縮するための方法および装置
JPH06224778A (ja) マッチングストリング探索およびハフマン符合化を用いたデータ圧縮装置および方法
US5815096A (en) Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
JP3983674B2 (ja) 動的に変更可能なまれに出会う列の組込みフィルタリングを有するデータ圧縮伸長の方法および装置
JP4156381B2 (ja) 文字テーブルによって実施されるデータ圧縮の方法および装置
JP2003510881A (ja) データを展開するのに要する時間を短縮するための方法と装置
JP6363581B2 (ja) 入力ブロックのスキャンと同時にソート済みシンボル・リストを維持するハードウェア・データ圧縮器
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JP2535655B2 (ja) 辞書検索方式
EP0595539A1 (en) A sequential pattern memory searching and storage management technique

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040227

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040813

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040823

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

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20041018

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041018

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091029

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091029

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101029

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees