JP2534465B2 - デ―タ圧縮装置および方法 - Google Patents
デ―タ圧縮装置および方法Info
- Publication number
- JP2534465B2 JP2534465B2 JP6246548A JP24654894A JP2534465B2 JP 2534465 B2 JP2534465 B2 JP 2534465B2 JP 6246548 A JP6246548 A JP 6246548A JP 24654894 A JP24654894 A JP 24654894A JP 2534465 B2 JP2534465 B2 JP 2534465B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- memory
- location
- data element
- 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
Links
- 238000000034 method Methods 0.000 title claims description 43
- 238000013144 data compression Methods 0.000 title claims description 40
- 238000012545 processing Methods 0.000 claims description 21
- 238000007726 management method Methods 0.000 claims description 13
- 238000007906 compression Methods 0.000 description 27
- 230000006835 compression Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 12
- 238000006073 displacement reaction Methods 0.000 description 6
- 239000003550 marker Substances 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 150000002500 ions Chemical class 0.000 description 1
- 238000002789 length control Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
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
【0001】
【産業上の利用分野】本発明は、データを圧縮し、伸張
するための方法と装置に関するもので、特に逐次データ
の圧縮と伸張に関するものである。
するための方法と装置に関するもので、特に逐次データ
の圧縮と伸張に関するものである。
【0002】
【従来の技術】多くのタイプのデータ圧縮システムが存
在する。一般に使われる一つの技法は、IEEE Transact
ions on Information Theory, Sept., 1977, pp.530-53
6に掲載のLempel,Ziv両氏による"Compression of Indiv
idual Sequences via variable Rate Coding" に記載さ
れているLempel-Zivアルゴリズムである。
在する。一般に使われる一つの技法は、IEEE Transact
ions on Information Theory, Sept., 1977, pp.530-53
6に掲載のLempel,Ziv両氏による"Compression of Indiv
idual Sequences via variable Rate Coding" に記載さ
れているLempel-Zivアルゴリズムである。
【0003】図1から図3は、Lempel-Zivアルゴリズム
の典型的な実施例を示す図である。図1において、長さ
N+1バイトのシフト・レジスタ10が、前に処理され
たデータを一時的に記憶するために使われる。処理され
るべき新しいデータが前に処理されたデータ・バイトの
ストリング(図では「ABC」)を含む場合、シフト・
レジスタ中の以前に処理されたデータ・ストリングの長
さと相対アドレスを含むトークンが生成される。このト
ークンは、一般的には、データ・ストリングそれ自身よ
り少ない情報ビットを使用して表すことができ、従っ
て、データ・ストリングは、効率的に圧縮される。処理
されるべきデータがシフト・レジスタの中に存在してい
る前のデータ・ストリングの一部を形成していない場
合、生成されるトークンは、このデータを明示的に含
む。一般的に、そのようなトークンはデータ自体より僅
かに多い情報ビット数を使用して表現されるにすぎない
ので、拡張は効率的である。総体的には、圧縮データ・
ストリングから得られる利益は、非圧縮データ・ストリ
ングによる損失を凌駕するので、通常圧縮は行われる。
しかしながら、データ・ストリームに反復するデータ・
ストリングがない場合、該データ・ストリームを上記技
法によって圧縮することができない。
の典型的な実施例を示す図である。図1において、長さ
N+1バイトのシフト・レジスタ10が、前に処理され
たデータを一時的に記憶するために使われる。処理され
るべき新しいデータが前に処理されたデータ・バイトの
ストリング(図では「ABC」)を含む場合、シフト・
レジスタ中の以前に処理されたデータ・ストリングの長
さと相対アドレスを含むトークンが生成される。このト
ークンは、一般的には、データ・ストリングそれ自身よ
り少ない情報ビットを使用して表すことができ、従っ
て、データ・ストリングは、効率的に圧縮される。処理
されるべきデータがシフト・レジスタの中に存在してい
る前のデータ・ストリングの一部を形成していない場
合、生成されるトークンは、このデータを明示的に含
む。一般的に、そのようなトークンはデータ自体より僅
かに多い情報ビット数を使用して表現されるにすぎない
ので、拡張は効率的である。総体的には、圧縮データ・
ストリングから得られる利益は、非圧縮データ・ストリ
ングによる損失を凌駕するので、通常圧縮は行われる。
しかしながら、データ・ストリームに反復するデータ・
ストリングがない場合、該データ・ストリームを上記技
法によって圧縮することができない。
【0004】図2は、前に処理されたデータを参照する
トークンの生成を図示する。ここで与えられた例では、
値A、B、CおよびDは以前に処理され、現在アドレス
37、36、35と34においてシフト・レジスタに記
憶されている。処理されるべき新しい値は、A、B、C
およびEである。新しいデータは、3の長さを持つスト
リングABCを含み、相対アドレス37において以前に
記憶されたストリングABCと合致する。なぜならば、
一旦ストリングを記述する1つのトークンが生成される
と、値A、BおよびCは、シフト・レジスタにロードさ
れ、値A、B、CおよびDは、シフト・レジスタにおい
て、新しいアドレスにシフトダウンされるので、アドレ
スは相対的である。シフト・レジスタにおけるデータの
アドレスは、引き続き処理されるデータ値の数に関係す
る。
トークンの生成を図示する。ここで与えられた例では、
値A、B、CおよびDは以前に処理され、現在アドレス
37、36、35と34においてシフト・レジスタに記
憶されている。処理されるべき新しい値は、A、B、C
およびEである。新しいデータは、3の長さを持つスト
リングABCを含み、相対アドレス37において以前に
記憶されたストリングABCと合致する。なぜならば、
一旦ストリングを記述する1つのトークンが生成される
と、値A、BおよびCは、シフト・レジスタにロードさ
れ、値A、B、CおよびDは、シフト・レジスタにおい
て、新しいアドレスにシフトダウンされるので、アドレ
スは相対的である。シフト・レジスタにおけるデータの
アドレスは、引き続き処理されるデータ値の数に関係す
る。
【0005】図3は、以前に記憶されたデータを参照す
る2番目のトークンの生成を図示する。この与えられた
例で、値A、B、CおよびZが、処理されるべきもので
ある。新しいデータは、3の長さを持つストリングAB
Cを含み、相対アドレス3と41において以前に記憶さ
れたストリングABCと合致する。この例で生成される
トークンは、通常、3という低い方の相対アドレスであ
る。トークンは、以前に処理されたストリングのカウン
ト(長さ)と相対アドレスを含み、(カウント、相対ア
ドレス)という形式で表現される。図2と図3で示され
るように、値A、B、C、E、A、B、C、Zの圧縮の
結果として、生成された処理出力は、(3、37)、
E、(3、3)、Zを含む。
る2番目のトークンの生成を図示する。この与えられた
例で、値A、B、CおよびZが、処理されるべきもので
ある。新しいデータは、3の長さを持つストリングAB
Cを含み、相対アドレス3と41において以前に記憶さ
れたストリングABCと合致する。この例で生成される
トークンは、通常、3という低い方の相対アドレスであ
る。トークンは、以前に処理されたストリングのカウン
ト(長さ)と相対アドレスを含み、(カウント、相対ア
ドレス)という形式で表現される。図2と図3で示され
るように、値A、B、C、E、A、B、C、Zの圧縮の
結果として、生成された処理出力は、(3、37)、
E、(3、3)、Zを含む。
【0006】
【発明が解決しようとする課題】Lempel-Ziv圧縮技術の
実施上の主要な問題の一つは、合致する以前のストリン
グに対するサーチ操作を効果的な処理速度で遂行するこ
との困難性にある。以下に記載する多くの技術は、より
効果的なトークン符号化技術を用いてサーチ速度または
圧縮量を改善することによって当該技術の処理速度を向
上することを試みたLempel-Ziv技法の修正である。
実施上の主要な問題の一つは、合致する以前のストリン
グに対するサーチ操作を効果的な処理速度で遂行するこ
との困難性にある。以下に記載する多くの技術は、より
効果的なトークン符号化技術を用いてサーチ速度または
圧縮量を改善することによって当該技術の処理速度を向
上することを試みたLempel-Ziv技法の修正である。
【0007】米国特許第4,558,302号は、いわゆるLempe
l-Ziv-Welchデータ圧縮技術と呼ばれるものを教示す
る。この特許は、共通して使われるデータ・ストリング
を記憶する辞書を活用し、ハッシング技法を使用してこ
の辞書をサーチすることを開示している。
l-Ziv-Welchデータ圧縮技術と呼ばれるものを教示す
る。この特許は、共通して使われるデータ・ストリング
を記憶する辞書を活用し、ハッシング技法を使用してこ
の辞書をサーチすることを開示している。
【0008】米国特許第4,876,541号は、合致アルゴリ
ズムを用いて上記Lempel-Ziv-Welchデータ圧縮技法に対
する改善を目指したものである。
ズムを用いて上記Lempel-Ziv-Welchデータ圧縮技法に対
する改善を目指したものである。
【0009】1991年12月13日出願の米国特許出
願番号第07/807,007号"METHOD ANDAPPARATUS FOR COMPR
ESSING DATAT"は、履歴バッファ・データをシフト・レ
ジスタの代わりに固定位置に記憶するというLempel-Ziv
圧縮技法に対する修正を教示している。この発明におい
て、以前の圧縮データを参照するために使われるトーク
ンは、シフト・レジスタとともに移動するデータではな
く固定位置のデータを参照する。
願番号第07/807,007号"METHOD ANDAPPARATUS FOR COMPR
ESSING DATAT"は、履歴バッファ・データをシフト・レ
ジスタの代わりに固定位置に記憶するというLempel-Ziv
圧縮技法に対する修正を教示している。この発明におい
て、以前の圧縮データを参照するために使われるトーク
ンは、シフト・レジスタとともに移動するデータではな
く固定位置のデータを参照する。
【0010】
【課題を解決するための手段】本発明は、受信データ・
エレメントをメモリ内のロケーションへのアドレスとし
て使用する装置と、アドレス指定されたメモリ・ロケー
ションが第1の合致データ・エレメントの第1のレコー
ドを含むか否かを判断するための装置と、上記第1の合
致データ・エレメントへのポインタを生成するための装
置とからなるデータ圧縮のための装置から構成される。
更に、本発明は、受信データ・エレメントをメモリ内の
ロケーションへのアドレスとして使用するステップと、
アドレス指定されたメモリ・ロケーションが第1の合致
データ・エレメントの第1のレコードを含むか否かを判
断するステップと、上記第1の合致データ・エレメント
へのポインタを生成するステップとからなるデータ圧縮
の方法を含む。
エレメントをメモリ内のロケーションへのアドレスとし
て使用する装置と、アドレス指定されたメモリ・ロケー
ションが第1の合致データ・エレメントの第1のレコー
ドを含むか否かを判断するための装置と、上記第1の合
致データ・エレメントへのポインタを生成するための装
置とからなるデータ圧縮のための装置から構成される。
更に、本発明は、受信データ・エレメントをメモリ内の
ロケーションへのアドレスとして使用するステップと、
アドレス指定されたメモリ・ロケーションが第1の合致
データ・エレメントの第1のレコードを含むか否かを判
断するステップと、上記第1の合致データ・エレメント
へのポインタを生成するステップとからなるデータ圧縮
の方法を含む。
【0011】
【実施例】Lempel-Zivデータ圧縮技法の実施上の主な困
難さは、相対アドレス指定方式を使用する点にある。そ
のような方式は、1ワードを各データ・エレメントとし
て、以前に処理されたデータ・ワードを保持するシフト
・レジスタの使用を必要とする。すべての以前に処理さ
れたデータ・ワードが隣接ポジションにシフトされる一
方、到来するデータ・ワードの各々は、シフト・レジス
タの最初のポジションにシフトされる。それに加えて、
シフト・レジスタの各エレメントに対するランダム・ア
クセス機能が必要である。これを実施するためには、単
純なRAMに比較してより多くの回路、チップ領域およ
び処理能力を必要とする。
難さは、相対アドレス指定方式を使用する点にある。そ
のような方式は、1ワードを各データ・エレメントとし
て、以前に処理されたデータ・ワードを保持するシフト
・レジスタの使用を必要とする。すべての以前に処理さ
れたデータ・ワードが隣接ポジションにシフトされる一
方、到来するデータ・ワードの各々は、シフト・レジス
タの最初のポジションにシフトされる。それに加えて、
シフト・レジスタの各エレメントに対するランダム・ア
クセス機能が必要である。これを実施するためには、単
純なRAMに比較してより多くの回路、チップ領域およ
び処理能力を必要とする。
【0012】Lempel-Zivデータ圧縮技法実施上の別の主
な困難さは、履歴データを参照するトークンを作成する
ために必要な後刻サーチされる履歴データの記憶や移動
の問題である。本発明は、履歴バッファを用いるが、サ
ーチされるべき実際の履歴データを記憶せず、むしろ、
その履歴バッファたるシフト・レジスタへのアドレスと
して入力データ(履歴データ)を使用する。各シフト・
レジスタは、そのビット位置が、シフト・レジスタのア
ドレスと合致する履歴データと以前に遭遇した時間を示
すビットを記憶する。これにより、浪費的なストリング
突き合わせプロセスを遂行している間の各ワード操作に
必要なサーチに関わる無駄を大幅に減少させる。これ
は、圧縮比を向上し、また、非常に速いスループットを
可能にする。
な困難さは、履歴データを参照するトークンを作成する
ために必要な後刻サーチされる履歴データの記憶や移動
の問題である。本発明は、履歴バッファを用いるが、サ
ーチされるべき実際の履歴データを記憶せず、むしろ、
その履歴バッファたるシフト・レジスタへのアドレスと
して入力データ(履歴データ)を使用する。各シフト・
レジスタは、そのビット位置が、シフト・レジスタのア
ドレスと合致する履歴データと以前に遭遇した時間を示
すビットを記憶する。これにより、浪費的なストリング
突き合わせプロセスを遂行している間の各ワード操作に
必要なサーチに関わる無駄を大幅に減少させる。これ
は、圧縮比を向上し、また、非常に速いスループットを
可能にする。
【0013】図4と図5は、本発明の好ましい実施例を
利用した種々のシステム構成を示す図である。図4に示
されるように、コンピュータ100は、システム・メモ
リ110と情報交換を行う中央処理装置(CPU)10
5を含む。CPUは、並列あるいはパイプライン方式ま
たはその組み合わせで相互に接続された複数プロセッサ
である場合もある。CPUは、また、バス112を通し
て、入出力チャネルまたはアダプタ115と120と通
信する。入出力チャネルを通して、CPUは、他のコン
ピュータ・システム125、テープ装置130、ディス
ク装置135、または、光ディスクや取り外し可能なフ
ロッピー・ディスクのような入出力装置138と通信す
ることもある。システム・メモリ110、テープ装置1
30、ディスク装置135、取り外し可能記憶媒体等々
はすべて処理データを記憶するメモリと見なされる。
利用した種々のシステム構成を示す図である。図4に示
されるように、コンピュータ100は、システム・メモ
リ110と情報交換を行う中央処理装置(CPU)10
5を含む。CPUは、並列あるいはパイプライン方式ま
たはその組み合わせで相互に接続された複数プロセッサ
である場合もある。CPUは、また、バス112を通し
て、入出力チャネルまたはアダプタ115と120と通
信する。入出力チャネルを通して、CPUは、他のコン
ピュータ・システム125、テープ装置130、ディス
ク装置135、または、光ディスクや取り外し可能なフ
ロッピー・ディスクのような入出力装置138と通信す
ることもある。システム・メモリ110、テープ装置1
30、ディスク装置135、取り外し可能記憶媒体等々
はすべて処理データを記憶するメモリと見なされる。
【0014】本発明の好ましい実施例において、データ
圧縮装置または圧縮エンジンは、ディスク装置135上
に永久的に記憶され、必要に応じてシステム・メモリ1
10にロードされ、CPU105によって実行されるソ
フトウェアである。本発明の代替実施例では、コンピュ
ータ100は、圧縮エンジン141と伸張エンジン14
2を具備するバス112上のハードウェアまたはソフト
ウェア圧縮装置140を含む。この圧縮エンジンは、入
出力チャネルを経由して転送されるデータの圧縮を行う
ため、CPU上で稼動しているオペレーティング・シス
テムのファイル・ハンドラによって起動され得る。圧縮
エンジンは、要求されたデータ圧縮を実行している間シ
ステム・メモリ110または任意追加メモリ145を利
用する。任意追加メモリ145が使われる場合、圧縮デ
ータは任意追加バス147上の入出力チャネルとの間で
直接転送が行われる。
圧縮装置または圧縮エンジンは、ディスク装置135上
に永久的に記憶され、必要に応じてシステム・メモリ1
10にロードされ、CPU105によって実行されるソ
フトウェアである。本発明の代替実施例では、コンピュ
ータ100は、圧縮エンジン141と伸張エンジン14
2を具備するバス112上のハードウェアまたはソフト
ウェア圧縮装置140を含む。この圧縮エンジンは、入
出力チャネルを経由して転送されるデータの圧縮を行う
ため、CPU上で稼動しているオペレーティング・シス
テムのファイル・ハンドラによって起動され得る。圧縮
エンジンは、要求されたデータ圧縮を実行している間シ
ステム・メモリ110または任意追加メモリ145を利
用する。任意追加メモリ145が使われる場合、圧縮デ
ータは任意追加バス147上の入出力チャネルとの間で
直接転送が行われる。
【0015】図5は、CPU155とシステム・メモリ
160を含むコンピュータ150を図示する。CPU
は、バス162を通して、入出力チャネルまたはアダプ
タ165と170と通信する。入出力チャネルを通し
て、CPUは、他のコンピュータ・システム175、テ
ープ装置180、ディスク装置185、または、その他
の入出力装置188と通信することもある。入出力チャ
ネルを通過するデータのすべてまたは一部の圧縮・伸張
を行う圧縮エンジン191および195と伸張エンジン
192および196からなる圧縮装置190と194
が、入出力チャネルへ接続している。該エンジンは、デ
ータの圧縮時に、バッファとして利用し、また、空き領
域管理タスクを扱うために、任意追加メモリ198を場
合によっては使用する。
160を含むコンピュータ150を図示する。CPU
は、バス162を通して、入出力チャネルまたはアダプ
タ165と170と通信する。入出力チャネルを通し
て、CPUは、他のコンピュータ・システム175、テ
ープ装置180、ディスク装置185、または、その他
の入出力装置188と通信することもある。入出力チャ
ネルを通過するデータのすべてまたは一部の圧縮・伸張
を行う圧縮エンジン191および195と伸張エンジン
192および196からなる圧縮装置190と194
が、入出力チャネルへ接続している。該エンジンは、デ
ータの圧縮時に、バッファとして利用し、また、空き領
域管理タスクを扱うために、任意追加メモリ198を場
合によっては使用する。
【0016】本発明の好ましい実施例を利用する多くの
その他の代替システム構成が存在する。それらは、通常
の知識を持つ当業者にとって明らかなものである。例え
ば、サーバのようなコンピュータ・システムが、それに
送出されるすべてのデータを圧縮するデータ圧縮エンジ
ンを備え持ち、一方、残りのコンピュータ・システムそ
れぞれが、サーバーから受信するデータをすべて伸張す
る伸張エンジンを備え持つこともできる。
その他の代替システム構成が存在する。それらは、通常
の知識を持つ当業者にとって明らかなものである。例え
ば、サーバのようなコンピュータ・システムが、それに
送出されるすべてのデータを圧縮するデータ圧縮エンジ
ンを備え持ち、一方、残りのコンピュータ・システムそ
れぞれが、サーバーから受信するデータをすべて伸張す
る伸張エンジンを備え持つこともできる。
【0017】図6は、本発明の好ましい実施例の1つで
あるデータ圧縮エンジン300を図示するブロック図表
である。本実施例において、データ圧縮エンジンは、以
下に記述される種々のエレメントをエミュレートするソ
フトウェアとして実施されている。代替方法として、こ
のデータ圧縮エンジンは、ハードウェアで容易に実現す
ることもできる。データ圧縮エンジンの種々のエレメン
トの動作は、エレメントの各々に接続した制御回路30
5によって制御される。制御回路は、以下に詳細に説明
するが、状態機械として動作する論理回路である。デー
タは、入力データ・バス310から圧縮エンジンの入力
データ・レジスタ320に入力され、後に、前データ・
バッファ321に記憶される。
あるデータ圧縮エンジン300を図示するブロック図表
である。本実施例において、データ圧縮エンジンは、以
下に記述される種々のエレメントをエミュレートするソ
フトウェアとして実施されている。代替方法として、こ
のデータ圧縮エンジンは、ハードウェアで容易に実現す
ることもできる。データ圧縮エンジンの種々のエレメン
トの動作は、エレメントの各々に接続した制御回路30
5によって制御される。制御回路は、以下に詳細に説明
するが、状態機械として動作する論理回路である。デー
タは、入力データ・バス310から圧縮エンジンの入力
データ・レジスタ320に入力され、後に、前データ・
バッファ321に記憶される。
【0018】本発明の好ましい実施例では、入力データ
は、8ビット文字である。入力カウンタ322が、受領
する文字の全数を累算するために使われる。次に、入力
データ・バッファに記憶された8ビット・データは、ア
ドレス履歴バッファ330のアドレスとして制御回路3
05によって使われる。履歴バッファは、256個のシ
フト・レジスタを持ち、各シフト・レジスタは、入力デ
ータ・レジスタの入力データを使用することによってア
ドレス可能である。本例においては、各シフト・レジス
タは、いつ当該シフト・レジスタに関するアドレス指定
データが以前受領され、入力データ・レジスタに記憶さ
れたかを示す512個の(またはその他の数、典型的に
は、2からN乗までの数の)エントリまたはセルを含
む。すなわち、所定のシフト・レジスタに関するアドレ
ス指定データが以前に受領され入力データ・レジスタに
記憶された時間に対応する当該シフト・レジスタのロケ
ーションに「1」が記憶され、当該シフト・レジスタに
関するアドレス指定データ以外のデータが以前に受領さ
れ入力データ・レジスタに記憶された時間に対応する当
該シフト・レジスタのロケーションに「0」が記憶され
る。
は、8ビット文字である。入力カウンタ322が、受領
する文字の全数を累算するために使われる。次に、入力
データ・バッファに記憶された8ビット・データは、ア
ドレス履歴バッファ330のアドレスとして制御回路3
05によって使われる。履歴バッファは、256個のシ
フト・レジスタを持ち、各シフト・レジスタは、入力デ
ータ・レジスタの入力データを使用することによってア
ドレス可能である。本例においては、各シフト・レジス
タは、いつ当該シフト・レジスタに関するアドレス指定
データが以前受領され、入力データ・レジスタに記憶さ
れたかを示す512個の(またはその他の数、典型的に
は、2からN乗までの数の)エントリまたはセルを含
む。すなわち、所定のシフト・レジスタに関するアドレ
ス指定データが以前に受領され入力データ・レジスタに
記憶された時間に対応する当該シフト・レジスタのロケ
ーションに「1」が記憶され、当該シフト・レジスタに
関するアドレス指定データ以外のデータが以前に受領さ
れ入力データ・レジスタに記憶された時間に対応する当
該シフト・レジスタのロケーションに「0」が記憶され
る。
【0019】本発明の好ましい実施例では、最終更新テ
ーブル335は、256個のセルを持ち、各セルは、1
個のシフト・レジスタに対応し、各セルは、各シフト・
レジスタが最後に更新された時間を格納する。上記構成
により、当該シフト・レジスタをアドレスする入力デー
タが受け取られる時のみ履歴バッファ・シフト・レジス
タを更新することが許される。最終更新テーブルを使わ
ない代替実施例も可能である。しかし、その場合、履歴
バッファ中のすべてのシフト・レジスタは、各入力文字
の入力のあと、1ビット、シフトされる必要がある。
ーブル335は、256個のセルを持ち、各セルは、1
個のシフト・レジスタに対応し、各セルは、各シフト・
レジスタが最後に更新された時間を格納する。上記構成
により、当該シフト・レジスタをアドレスする入力デー
タが受け取られる時のみ履歴バッファ・シフト・レジス
タを更新することが許される。最終更新テーブルを使わ
ない代替実施例も可能である。しかし、その場合、履歴
バッファ中のすべてのシフト・レジスタは、各入力文字
の入力のあと、1ビット、シフトされる必要がある。
【0020】本例では、旧レジスタ340と新レジスタ
345とが各々512個のセルを含み、そのセルの各々
は、各履歴バッファ・シフト・レジスタの各セルに対応
する。旧、新レジスタは、下記において図5を参照して
説明される通り、合致するデータ・ストリングを特定す
るために使われる。合致カウンタ350は、前の履歴デ
ータ・ストリングに合致する入力データ文字の数を累算
するために使用される。
345とが各々512個のセルを含み、そのセルの各々
は、各履歴バッファ・シフト・レジスタの各セルに対応
する。旧、新レジスタは、下記において図5を参照して
説明される通り、合致するデータ・ストリングを特定す
るために使われる。合致カウンタ350は、前の履歴デ
ータ・ストリングに合致する入力データ文字の数を累算
するために使用される。
【0021】図7から図8は、上記図6で記述された構
成を利用した本発明の好ましい実施例の動作を示す流れ
図である。最初のステップ400で、データ圧縮エンジ
ンは初期設定される。好ましい実施例では、最終更新テ
ーブル335は、シフト・レジスタの長さより大きいマ
イナス値をロードされ、入力カウンタ322は、マイナ
ス1(−1)に設定され、旧、新レジスタ340および
350と合致カウンタ350とはゼロ(0)に設定され
る。この初期設定によって、ストリングを突き合わせる
ための履歴バッファに現在記憶されているランダム・デ
ータを使用することを防ぐことができる。
成を利用した本発明の好ましい実施例の動作を示す流れ
図である。最初のステップ400で、データ圧縮エンジ
ンは初期設定される。好ましい実施例では、最終更新テ
ーブル335は、シフト・レジスタの長さより大きいマ
イナス値をロードされ、入力カウンタ322は、マイナ
ス1(−1)に設定され、旧、新レジスタ340および
350と合致カウンタ350とはゼロ(0)に設定され
る。この初期設定によって、ストリングを突き合わせる
ための履歴バッファに現在記憶されているランダム・デ
ータを使用することを防ぐことができる。
【0022】代替実施例の初期設定では、最終更新テー
ブル335には、マイナス1(−1)がロードされ、履
歴バッファには、ゼロがロードされる。また、別の代替
実施例では、最終更新テーブル、履歴バッファ、入力カ
ウンタ、旧と新レジスタ、および合致カウンタは、特定
のデータまたはデータの組み合わせとして最適化された
履歴データのような望ましいまたは以前に使用された履
歴データを用いて事前ロードされることもある。圧縮エ
ンジンが他の圧縮タスクで割り込まれる場合には、最終
更新テーブル、履歴バッファ、入力カウンタ、旧と新レ
ジスタ、および合致カウンタの内容は、データ圧縮が継
続される時の後の使用(例えば文脈切り換え)に備え
て、メモリに記憶されるようにしてもよい。
ブル335には、マイナス1(−1)がロードされ、履
歴バッファには、ゼロがロードされる。また、別の代替
実施例では、最終更新テーブル、履歴バッファ、入力カ
ウンタ、旧と新レジスタ、および合致カウンタは、特定
のデータまたはデータの組み合わせとして最適化された
履歴データのような望ましいまたは以前に使用された履
歴データを用いて事前ロードされることもある。圧縮エ
ンジンが他の圧縮タスクで割り込まれる場合には、最終
更新テーブル、履歴バッファ、入力カウンタ、旧と新レ
ジスタ、および合致カウンタの内容は、データ圧縮が継
続される時の後の使用(例えば文脈切り換え)に備え
て、メモリに記憶されるようにしてもよい。
【0023】ステップ410で、受け取られるべき入力
データがこれ以上あるか否かが判断される。なければ、
処理はステップ415へ進み、最後のデータ・トークン
を生成する処理を行う。この処理は、ステップ458と
同じで、下記のステップ458で詳細に説明される。入
力データがさらにあれば、ステップ420で、現在入力
データ・レジスタ320にある文字が前データ・レジス
タ321にロードされ、入力データの次の文字が読み取
られ、入力データ・レジスタ320にロードされる。ス
テップ425で、さらに1つの入力文字が受け取られた
ことを示すために入力カウンタ322は「1」増分され
る。
データがこれ以上あるか否かが判断される。なければ、
処理はステップ415へ進み、最後のデータ・トークン
を生成する処理を行う。この処理は、ステップ458と
同じで、下記のステップ458で詳細に説明される。入
力データがさらにあれば、ステップ420で、現在入力
データ・レジスタ320にある文字が前データ・レジス
タ321にロードされ、入力データの次の文字が読み取
られ、入力データ・レジスタ320にロードされる。ス
テップ425で、さらに1つの入力文字が受け取られた
ことを示すために入力カウンタ322は「1」増分され
る。
【0024】ステップ430で、入力データ・レジスタ
の入力値をアドレスとして使用して、履歴バッファのシ
フト・レジスタと最終更新テーブルの対応するセルが選
択される。入力カウンタの値と最終更新テーブルの値と
の差が、選択されたシフト・レジスタのシフト・カウン
トとして使用され、そのカウント分左シフトされ、ゼロ
が埋められる。これは、選択されたシフト・レジスタを
現在時に更新するものである。例えば、本例で、選択さ
れたシフト・レジスタが512サイクル間更新されなか
ったとすれば、選択されたシフト・レジスタは、すべて
ゼロで埋められ、過去512サイクル間、合致がなかっ
たことを示す。
の入力値をアドレスとして使用して、履歴バッファのシ
フト・レジスタと最終更新テーブルの対応するセルが選
択される。入力カウンタの値と最終更新テーブルの値と
の差が、選択されたシフト・レジスタのシフト・カウン
トとして使用され、そのカウント分左シフトされ、ゼロ
が埋められる。これは、選択されたシフト・レジスタを
現在時に更新するものである。例えば、本例で、選択さ
れたシフト・レジスタが512サイクル間更新されなか
ったとすれば、選択されたシフト・レジスタは、すべて
ゼロで埋められ、過去512サイクル間、合致がなかっ
たことを示す。
【0025】ステップ435で、旧レジスタが全てゼロ
で埋められているかが判定される。これは、ストリング
の合致なしが現在進行中であることを示し、すべてゼロ
で埋められていれば、後述のステップ460へ進む。
で埋められているかが判定される。これは、ストリング
の合致なしが現在進行中であることを示し、すべてゼロ
で埋められていれば、後述のステップ460へ進む。
【0026】すべてゼロでなければ、ステップ440へ
進み、最大長データ・ストリング合致が発生したかどう
かが判定される。すなわち、本発明の好ましい実施例に
おいては、データ・ストリング合致は、出力データ・ト
ークンで符号化されることができる最大長を越えてはな
らない。もしも最大長の場合、ステップ445で、旧レ
ジスタの値を使用して変位として知られる合致ストリン
グの起点(すなわち旧レジスタ内のいずれか1のロケー
ション)を計算し、前合致ストリング文字を参照するト
ークンを生成し、書き込む。本発明の好ましい実施例に
おいては、前合致ストリング文字を参照するトークン
は、最初のビットが1で始まり(一方未処理ないしは生
トークンまたは非合致トークンの最初のビットは0で始
まる)、そのあとに、合致ストリングの変位と長さが続
く。次に、処理はステップ460へ続く。上記ステップ
440の判定で、ストリング長が最大でない場合は、処
理はステップ450に進む。
進み、最大長データ・ストリング合致が発生したかどう
かが判定される。すなわち、本発明の好ましい実施例に
おいては、データ・ストリング合致は、出力データ・ト
ークンで符号化されることができる最大長を越えてはな
らない。もしも最大長の場合、ステップ445で、旧レ
ジスタの値を使用して変位として知られる合致ストリン
グの起点(すなわち旧レジスタ内のいずれか1のロケー
ション)を計算し、前合致ストリング文字を参照するト
ークンを生成し、書き込む。本発明の好ましい実施例に
おいては、前合致ストリング文字を参照するトークン
は、最初のビットが1で始まり(一方未処理ないしは生
トークンまたは非合致トークンの最初のビットは0で始
まる)、そのあとに、合致ストリングの変位と長さが続
く。次に、処理はステップ460へ続く。上記ステップ
440の判定で、ストリング長が最大でない場合は、処
理はステップ450に進む。
【0027】ステップ450で、旧レジスタの内容は、
選択されたシフト・レジスタと論理積(AND)演算が
行われ、結果が新レジスタに記憶される。本発明の好ま
しい実施例では、旧レジスタとシフト・レジスタは、1
6個の32ビット・ワード(合計512ビット)を持
つ。上記ステップ430の間に、シフト・レジスタのど
のワードが少くとも1つの1を含むかを示すインデック
スが生成される。加えて、以下のステップ460と48
0の間に、同様のインデックスが、新レジスタと次いで
旧レジスタに関して生成あるいはシフト・レジスタから
コピーされる。これらのインデックスは、シフト・レジ
スタと旧レジスタの対応するワードに1がある箇所にA
ND演算を限定するために使うことができる。
選択されたシフト・レジスタと論理積(AND)演算が
行われ、結果が新レジスタに記憶される。本発明の好ま
しい実施例では、旧レジスタとシフト・レジスタは、1
6個の32ビット・ワード(合計512ビット)を持
つ。上記ステップ430の間に、シフト・レジスタのど
のワードが少くとも1つの1を含むかを示すインデック
スが生成される。加えて、以下のステップ460と48
0の間に、同様のインデックスが、新レジスタと次いで
旧レジスタに関して生成あるいはシフト・レジスタから
コピーされる。これらのインデックスは、シフト・レジ
スタと旧レジスタの対応するワードに1がある箇所にA
ND演算を限定するために使うことができる。
【0028】ステップ455で、新レジスタが、現在の
入力文字が前の合致データ・ストリングと連続していな
いことを示すすべてゼロであるか否か判定される。すべ
てゼロでない場合、ステップ456で、合致カウンタ3
50は1増分され、処理は下記ステップ480へ進む。
入力文字が前の合致データ・ストリングと連続していな
いことを示すすべてゼロであるか否か判定される。すべ
てゼロでない場合、ステップ456で、合致カウンタ3
50は1増分され、処理は下記ステップ480へ進む。
【0029】ステップ455ですべてゼロと判定された
場合、前に突き合わせられたストリングは、現在の入力
文字と連続していないと識別され、処理はステップ45
8に続く。ステップ458で、トークンが計算され生成
され、そして出力手段に書き込まれる。
場合、前に突き合わせられたストリングは、現在の入力
文字と連続していないと識別され、処理はステップ45
8に続く。ステップ458で、トークンが計算され生成
され、そして出力手段に書き込まれる。
【0030】もしも合致カウンタ450の値が1であれ
ば、これは、前データ・レジスタ321記憶された入力
データが、入力データ・レジスタに記憶されたデータ文
字と連続していない新たな合致ストリングを開始したこ
とを示す。そのような場合、最初のビットがゼロで始ま
り、次に前データ・レジスタに置かれた(本例では8ビ
ットの)入力文字が続く未処理トークンが生成される。
さもなければ、ステップ445で記述された、合致スト
リングの変位と長さを含む圧縮データのトークンが生成
される。次に処理はステップ460に続く。
ば、これは、前データ・レジスタ321記憶された入力
データが、入力データ・レジスタに記憶されたデータ文
字と連続していない新たな合致ストリングを開始したこ
とを示す。そのような場合、最初のビットがゼロで始ま
り、次に前データ・レジスタに置かれた(本例では8ビ
ットの)入力文字が続く未処理トークンが生成される。
さもなければ、ステップ445で記述された、合致スト
リングの変位と長さを含む圧縮データのトークンが生成
される。次に処理はステップ460に続く。
【0031】ステップ460で、選択されたシフト・レ
ジスタの内容が新レジスタにコピーされる。ステップ4
65で、入力データ・レジスタのデータ文字が過去51
2サイクルの間に受け取られたかどうかを調べるため、
新レジスタの内容がすべてゼロであるか否かが判定され
る。すべてゼロでない場合、ステップ470で、合致ス
トリングが新たに始まったことを示すため合致カウンタ
が1に設定され、処理は下記ステップ480に続く。
ジスタの内容が新レジスタにコピーされる。ステップ4
65で、入力データ・レジスタのデータ文字が過去51
2サイクルの間に受け取られたかどうかを調べるため、
新レジスタの内容がすべてゼロであるか否かが判定され
る。すべてゼロでない場合、ステップ470で、合致ス
トリングが新たに始まったことを示すため合致カウンタ
が1に設定され、処理は下記ステップ480に続く。
【0032】すべてゼロの場合、処理はステップ475
に続く。ステップ475で、入力データ・レジスタのデ
ータは、未処理データ・トークンとして符号化される。
ステップ480で、選択されたシフト・レジスタの一番
右のビットが、1にセットされ、入力データ・レジスタ
における入力データの受領を示す。更に、新レジスタの
内容が旧レジスタへ移される。本発明の好ましい実施例
では、これは、各入力文字のため新レジスタが旧レジス
タとなりまたその逆となるように、旧と新のレジスタと
して使われる2つのレジスタを交互にポイントする旧レ
ジスタ・ポインタを使用することによって簡単に実施で
きる。従って、新レジスタの実際のデータは、旧レジス
タへ移動される必要はない。その代わりに、旧レジスタ
へのポインタが、前の新レジスタにポイントされる。次
に処理はステップ410へ戻る。
に続く。ステップ475で、入力データ・レジスタのデ
ータは、未処理データ・トークンとして符号化される。
ステップ480で、選択されたシフト・レジスタの一番
右のビットが、1にセットされ、入力データ・レジスタ
における入力データの受領を示す。更に、新レジスタの
内容が旧レジスタへ移される。本発明の好ましい実施例
では、これは、各入力文字のため新レジスタが旧レジス
タとなりまたその逆となるように、旧と新のレジスタと
して使われる2つのレジスタを交互にポイントする旧レ
ジスタ・ポインタを使用することによって簡単に実施で
きる。従って、新レジスタの実際のデータは、旧レジス
タへ移動される必要はない。その代わりに、旧レジスタ
へのポインタが、前の新レジスタにポイントされる。次
に処理はステップ410へ戻る。
【0033】図9から図14は、上記図6で示された構
成を使用して圧縮される入力データ・ストリームの例を
示すブロック図表である。本例において、履歴バッファ
は、8ビット幅の3つのエントリA、BおよびCを有す
る。入力データ・ストリームは、[A B A B
C]である。図9は、エンジンが初期設定されたあとの
圧縮エンジンの種々のエレメントを図示する。履歴バッ
ファ530は、初期設定されないが、最終更新テーブル
は、すべて−8に(履歴バッファの各シフト・レジスタ
におけるエントリの数のマイナスに)設定される。新旧
レジスタ540と545、および合致カウンタ550
は、0に設定される。入力カウンタ522は−1に設定
される。入力データ・レジスタ520と前データ・レジ
スタ521とは、データがまだ受け取られていないまま
初期設定されない。
成を使用して圧縮される入力データ・ストリームの例を
示すブロック図表である。本例において、履歴バッファ
は、8ビット幅の3つのエントリA、BおよびCを有す
る。入力データ・ストリームは、[A B A B
C]である。図9は、エンジンが初期設定されたあとの
圧縮エンジンの種々のエレメントを図示する。履歴バッ
ファ530は、初期設定されないが、最終更新テーブル
は、すべて−8に(履歴バッファの各シフト・レジスタ
におけるエントリの数のマイナスに)設定される。新旧
レジスタ540と545、および合致カウンタ550
は、0に設定される。入力カウンタ522は−1に設定
される。入力データ・レジスタ520と前データ・レジ
スタ521とは、データがまだ受け取られていないまま
初期設定されない。
【0034】図10は、最初の文字Aが受け取られたあ
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Aのためのシフト・レジスタが更
新された。旧レジスタは、合致がまだ起きていないこと
を示す。内容が(0,A)という未処理トークン(生ト
ークン)が生成された。
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Aのためのシフト・レジスタが更
新された。旧レジスタは、合致がまだ起きていないこと
を示す。内容が(0,A)という未処理トークン(生ト
ークン)が生成された。
【0035】図11は、第2の文字Bが受け取られたあ
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Bのためのシフト・レジスタが更
新された。旧レジスタは、合致がまだ起きていないこと
を示す。内容が(0,B)という未処理トークンが生成
された。
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Bのためのシフト・レジスタが更
新された。旧レジスタは、合致がまだ起きていないこと
を示す。内容が(0,B)という未処理トークンが生成
された。
【0036】図12は、第3の文字Aが受け取られたあ
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Aのためのシフト・レジスタが更
新された。旧レジスタと合致カウンタとは、合致が起き
たことを示している。トークンは生成されなかった。
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Aのためのシフト・レジスタが更
新された。旧レジスタと合致カウンタとは、合致が起き
たことを示している。トークンは生成されなかった。
【0037】図13は、第4の文字Bが受け取られたあ
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Bのためのシフト・レジスタが更
新された。旧レジスタと合致カウンタとは、合致が連続
していることを示している。トークンは生成されなかっ
た。
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Bのためのシフト・レジスタが更
新された。旧レジスタと合致カウンタとは、合致が連続
していることを示している。トークンは生成されなかっ
た。
【0038】図14は、第5の文字Cが受け取られたあ
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Cのためのシフト・レジスタが更
新された。旧レジスタは、合致が起きていないことを示
す。時間0で始まり長さ2を持つ前合致ストリング[A
B]を参照する(1、0、2)という内容の圧縮ワー
ド・トークンが生成された。Cが最後の入力文字である
ので、(0,C)という未処理トークンがまた生成され
た。
との圧縮エンジンの種々のエレメントを図示する。入力
カウンタが増分され、Cのためのシフト・レジスタが更
新された。旧レジスタは、合致が起きていないことを示
す。時間0で始まり長さ2を持つ前合致ストリング[A
B]を参照する(1、0、2)という内容の圧縮ワー
ド・トークンが生成された。Cが最後の入力文字である
ので、(0,C)という未処理トークンがまた生成され
た。
【0039】この例の結果として、[A B A B
C]は、[(0,A)(0,B)(1,0,2)(0,
C)]として符号化されている。
C]は、[(0,A)(0,B)(1,0,2)(0,
C)]として符号化されている。
【0040】圧縮エンジンが図1から図3で記述される
相対アドレスを利用する典型的なLempel-Ziv 形式にデ
ータを圧縮することを可能にする任意追加装置を、本発
明の代替実施例に含むこともできる。その場合、合致カ
ウンタの値を加算することによって固定アドレスを相対
アドレスへ変換するための加算回線が使われるであろ
う。加算回線は含めてもよいが、固定アドレス形式でデ
ータを圧縮する時は動作禁止にされる。
相対アドレスを利用する典型的なLempel-Ziv 形式にデ
ータを圧縮することを可能にする任意追加装置を、本発
明の代替実施例に含むこともできる。その場合、合致カ
ウンタの値を加算することによって固定アドレスを相対
アドレスへ変換するための加算回線が使われるであろ
う。加算回線は含めてもよいが、固定アドレス形式でデ
ータを圧縮する時は動作禁止にされる。
【0041】本発明の好ましい実施例においては、未処
理ワード・トークン(圧縮されないワード・トークン)
は、0で始まり未処理のワードが続くように生成され
る。圧縮ワード・トークンは、1で始まり、次にCAM
アレイにおける合致ストリングの開始位置と合致ストリ
ングの長さ(変位と呼ばれる)が続くように生成され
る。また、8個の1で始まり、そのあと制御命令を指定
する4ビットが続く制御トークンが生成されることもあ
る。最後に終了トークンが、圧縮データ・ストリームの
終了を示すため渡される。終了トークンは、13個の連
続する1である。
理ワード・トークン(圧縮されないワード・トークン)
は、0で始まり未処理のワードが続くように生成され
る。圧縮ワード・トークンは、1で始まり、次にCAM
アレイにおける合致ストリングの開始位置と合致ストリ
ングの長さ(変位と呼ばれる)が続くように生成され
る。また、8個の1で始まり、そのあと制御命令を指定
する4ビットが続く制御トークンが生成されることもあ
る。最後に終了トークンが、圧縮データ・ストリームの
終了を示すため渡される。終了トークンは、13個の連
続する1である。
【0042】表1は、圧縮データ・ワード・ストリング
の長さを指定するために、本発明の好ましい実施例で使
われる符号を示す。このタイプの符号化は、より短いス
トリングはより短いコードを、より長いストリングはよ
り長いコードを利用する修正された対数符号化方法であ
る。これは、より短いストリングの頻度がより長いスト
リングの頻度より本質的に多い場合に有益な符号化技術
である。変位は、好ましい実施例で11ビット値で指定
される。より短い変位を、より小さいCAMアレイで使
うこともできる。
の長さを指定するために、本発明の好ましい実施例で使
われる符号を示す。このタイプの符号化は、より短いス
トリングはより短いコードを、より長いストリングはよ
り長いコードを利用する修正された対数符号化方法であ
る。これは、より短いストリングの頻度がより長いスト
リングの頻度より本質的に多い場合に有益な符号化技術
である。変位は、好ましい実施例で11ビット値で指定
される。より短い変位を、より小さいCAMアレイで使
うこともできる。
【0043】
【表1】圧縮ワードの長さを示すための符号化方法 コード・フィールド 圧縮ワード長 00 2 ワード 01 3 ワード 10 00 4 ワード 10 01 5 ワード 10 10 6 ワード 10 11 7 ワード 110 000 8 ワード ... ... ... ... ... ... ... ... 110 111 15 ワード 1110 0000 16 ワード .... .... ... ... .... .... ... ... 1110 1111 31 ワード 1111 0000 0000 32 ワード .... .... .... ... ... .... .... .... ... ... 1111 1110 1111 271 ワード 本発明の将来の拡張に備えて、制御命令が圧縮データス
・トリームの中で渡されることもある。これらの制御命
令には、履歴バッファのリセット命令や、所望のデータ
の組み合わせを履歴バッファに事前ロードする命令等が
含まれる。
・トリームの中で渡されることもある。これらの制御命
令には、履歴バッファのリセット命令や、所望のデータ
の組み合わせを履歴バッファに事前ロードする命令等が
含まれる。
【0044】本発明の好ましい実施例においては、長短
2つのタイプの制御命令がある。表2は、長タイプの制
御命令であって、12ビットの制御命令フィールドとそ
れに続く11ビットの制御サブフィールドからなる。こ
の構成で、4つの制御フィールドの各々に2048のサ
ブフィールドがあり、合計8208の長タイプ命令を持
つことが可能である。
2つのタイプの制御命令がある。表2は、長タイプの制
御命令であって、12ビットの制御命令フィールドとそ
れに続く11ビットの制御サブフィールドからなる。こ
の構成で、4つの制御フィールドの各々に2048のサ
ブフィールドがあり、合計8208の長タイプ命令を持
つことが可能である。
【0045】
【表2】 長命令制御フィールドとサブフィールド 長制御フィールド 制御サブフィールド 1111 1111 0000 0000 0000 000 - 1111 1111 111 1111 1111 0001 0000 0000 000 - 1111 1111 111 1111 1111 0010 0000 0000 000 - 1111 1111 111 1111 1111 0011 0000 0000 000 - 1111 1111 111 表3は、短制御命令を示す。短制御命令は、12ビット
長であり、従って、長制御命令の全数より数の点で少
い。しかし、短制御命令は、必要な転送時間が少ない。
上述のように、1つの短制御フィールドが終了マーカと
してすでに定義されている。終了マーカは、1(後続の
ビットが圧縮データ・トークンかまたは制御命令のいず
れかであることを示す)で始まり、12ビット終了マー
カ制御命令(12個のl)が続く。
長であり、従って、長制御命令の全数より数の点で少
い。しかし、短制御命令は、必要な転送時間が少ない。
上述のように、1つの短制御フィールドが終了マーカと
してすでに定義されている。終了マーカは、1(後続の
ビットが圧縮データ・トークンかまたは制御命令のいず
れかであることを示す)で始まり、12ビット終了マー
カ制御命令(12個のl)が続く。
【0046】
【表3】短命令制御フィールド 制御フィールド 定義された機能 1111 1111 0100 未定義 1111 1111 0101 未定義 1111 1111 0110 未定義 .... .... .... ... ....... .... .... .... ... ....... 1111 1111 1110 未定義 1111 1111 1111 終了マーカ まとめとして、本発明の構成に関して以下の事項を開示
する。 (1)受信したデータ・エレメントをメモリ上のロケー
ションへのアドレスとして使用するデータの履歴管理手
段と、上記アドレスによりアドレス指定されたメモリ・
ロケーションが第1の合致データ・エレメントの第1の
レコードを含むか否かを判断する手段と、上記第1の合
致データ・エレメントへのポインタを生成する手段と、
を含むデータ圧縮装置。 (2)上記履歴管理手段が、受信した第2のデータ・エ
レメントをメモリ上の第2のロケーションへの第2のア
ドレスとして使用する、上記(1)記載のデータ圧縮装
置。 (3)上記判断手段が、上記アドレスによりアドレス指
定されたメモリ上の第2のロケーションが、第1の合致
データ・エレメントと連続した第2の合致データ・エレ
メントであるか否かを判断する手段を含む、上記(2)
記載のデータ圧縮装置。 (4)上記ポインタ生成手段が、第1と第2の合致デー
タ・エレメントへのポインタを生成する手段を含む、上
記(3)記載のデータ圧縮装置。 (5)上記履歴管理手段が、受信したデータ・エレメン
トを複数のシフト・レジスタの1つへのアドレスとして
使用する、上記(4)記載のデータ圧縮装置。 (6)データを記憶するメモリと、上記データを処理す
るプロセッサと、受信したデータ・エレメントを上記メ
モリ上のロケーションへのアドレスとして使用するデー
タ履歴管理手段と、上記アドレスによりアドレス指定さ
れたメモリ・ロケーションが第1の合致データ・エレメ
ントの第1のレコードを含むか否かを判断する手段と、
第1の合致データ・エレメントへのポインタを生成する
手段と、を含むデータ処理システム。 (7)上記履歴管理手段が、受信した第2のデータ・エ
レメントをメモリ上の第2のロケーションへの第2のア
ドレスとして使用する手段を含む、上記(6)記載のデ
ータ処理システム。 (8)上記判断手段が、上記アドレスによりアドレス指
定されたメモリ上の第2のロケーションが、第1の合致
データ・エレメントと連続した第2の合致データ・エレ
メントであるか否かを判断する手段を含む、上記(7)
記載のデータ処理システム。 (9)上記ポインタ生成手段が、第1と第2の合致デー
タ・エレメントへのポイタを生成する手段を含む、上記
(8)記載のデータ処理システム。 (10)上記履歴管理手段が、受信したデータ・エレメ
ントを複数のシフト・レジスタの1つへのアドレスとし
て使用する、上記(9)記載のデータ処理システム。 (11)受信したデータ・エレメントをメモリ上のロケ
ーションへのアドレスとして使用して、メモリ・ロケー
ションをアドレス指定するステップと、上記アドレスに
よりアドレス指定されたメモリ・ロケーションが第1の
合致データ・エレメントの第1のレコードを含むか否か
を判断するステップと、上記第1の合致データ・エレメ
ントへのポインタを生成するステップと、を含むデータ
圧縮方法。 (12)上記アドレス指定ステップが、受信した第2の
データ・エレメントをメモリ上の第2のロケーションへ
の第2のアドレスとして使用する、上記(11)記載の
データ圧縮方法。 (13)上記判断ステップが、上記アドレスによりアド
レス指定されたメモリ上の第2のロケーションが、第1
の合致データ・エレメントと連続した第2の合致データ
・エレメントであるか否かを判断するステップを含む、
上記(12)記載のデータ圧縮方法。 (14)上記ポインタ生成ステップが、第1と第2の合
致データ・エレメントへのポインタを生成するステップ
を含む、上記(13)記載のデータ圧縮方法。 (15)上記アドレス指定ステップが、受信したデータ
・エレメントを複数のシフト・レジスタの1つへのアド
レスとして使用する、上記(14)記載のデータ圧縮方
法。
する。 (1)受信したデータ・エレメントをメモリ上のロケー
ションへのアドレスとして使用するデータの履歴管理手
段と、上記アドレスによりアドレス指定されたメモリ・
ロケーションが第1の合致データ・エレメントの第1の
レコードを含むか否かを判断する手段と、上記第1の合
致データ・エレメントへのポインタを生成する手段と、
を含むデータ圧縮装置。 (2)上記履歴管理手段が、受信した第2のデータ・エ
レメントをメモリ上の第2のロケーションへの第2のア
ドレスとして使用する、上記(1)記載のデータ圧縮装
置。 (3)上記判断手段が、上記アドレスによりアドレス指
定されたメモリ上の第2のロケーションが、第1の合致
データ・エレメントと連続した第2の合致データ・エレ
メントであるか否かを判断する手段を含む、上記(2)
記載のデータ圧縮装置。 (4)上記ポインタ生成手段が、第1と第2の合致デー
タ・エレメントへのポインタを生成する手段を含む、上
記(3)記載のデータ圧縮装置。 (5)上記履歴管理手段が、受信したデータ・エレメン
トを複数のシフト・レジスタの1つへのアドレスとして
使用する、上記(4)記載のデータ圧縮装置。 (6)データを記憶するメモリと、上記データを処理す
るプロセッサと、受信したデータ・エレメントを上記メ
モリ上のロケーションへのアドレスとして使用するデー
タ履歴管理手段と、上記アドレスによりアドレス指定さ
れたメモリ・ロケーションが第1の合致データ・エレメ
ントの第1のレコードを含むか否かを判断する手段と、
第1の合致データ・エレメントへのポインタを生成する
手段と、を含むデータ処理システム。 (7)上記履歴管理手段が、受信した第2のデータ・エ
レメントをメモリ上の第2のロケーションへの第2のア
ドレスとして使用する手段を含む、上記(6)記載のデ
ータ処理システム。 (8)上記判断手段が、上記アドレスによりアドレス指
定されたメモリ上の第2のロケーションが、第1の合致
データ・エレメントと連続した第2の合致データ・エレ
メントであるか否かを判断する手段を含む、上記(7)
記載のデータ処理システム。 (9)上記ポインタ生成手段が、第1と第2の合致デー
タ・エレメントへのポイタを生成する手段を含む、上記
(8)記載のデータ処理システム。 (10)上記履歴管理手段が、受信したデータ・エレメ
ントを複数のシフト・レジスタの1つへのアドレスとし
て使用する、上記(9)記載のデータ処理システム。 (11)受信したデータ・エレメントをメモリ上のロケ
ーションへのアドレスとして使用して、メモリ・ロケー
ションをアドレス指定するステップと、上記アドレスに
よりアドレス指定されたメモリ・ロケーションが第1の
合致データ・エレメントの第1のレコードを含むか否か
を判断するステップと、上記第1の合致データ・エレメ
ントへのポインタを生成するステップと、を含むデータ
圧縮方法。 (12)上記アドレス指定ステップが、受信した第2の
データ・エレメントをメモリ上の第2のロケーションへ
の第2のアドレスとして使用する、上記(11)記載の
データ圧縮方法。 (13)上記判断ステップが、上記アドレスによりアド
レス指定されたメモリ上の第2のロケーションが、第1
の合致データ・エレメントと連続した第2の合致データ
・エレメントであるか否かを判断するステップを含む、
上記(12)記載のデータ圧縮方法。 (14)上記ポインタ生成ステップが、第1と第2の合
致データ・エレメントへのポインタを生成するステップ
を含む、上記(13)記載のデータ圧縮方法。 (15)上記アドレス指定ステップが、受信したデータ
・エレメントを複数のシフト・レジスタの1つへのアド
レスとして使用する、上記(14)記載のデータ圧縮方
法。
【0047】
【発明の効果】本発明は、履歴バッファを使うが、サー
チされるべき実際の履歴データを記憶せず、むしろ、そ
の履歴バッファたるシフト・レジスタへのアドレスとし
て履歴データを使用する。各シフト・レジスタは、その
履歴データが以前に遭遇したビット位置を保存する。こ
れにより、浪費的ストリング突き合わせプロセスを遂行
している間の各ワード操作に必要なサーチに関わる無駄
を大幅に減少させる。この結果、本発明は、従来技術に
比べて圧縮を迅速かつ効率的に実行する。
チされるべき実際の履歴データを記憶せず、むしろ、そ
の履歴バッファたるシフト・レジスタへのアドレスとし
て履歴データを使用する。各シフト・レジスタは、その
履歴データが以前に遭遇したビット位置を保存する。こ
れにより、浪費的ストリング突き合わせプロセスを遂行
している間の各ワード操作に必要なサーチに関わる無駄
を大幅に減少させる。この結果、本発明は、従来技術に
比べて圧縮を迅速かつ効率的に実行する。
【0048】本発明は、また、データ・ストリングの突
き合わせが時間を浪費する現行の多くのLempel-Ziv方式
より効率的圧縮技術を提供する。すなわち、履歴バッフ
ァが、すべての可能な合致ストリングを探す浪費的サー
チを許容する。多くの現行技術は、サーチ時間を短縮す
るがメモリ上の最長の合致ストリングを探すことはでき
ないハッシング方式のような圧縮技術を使用する。
き合わせが時間を浪費する現行の多くのLempel-Ziv方式
より効率的圧縮技術を提供する。すなわち、履歴バッフ
ァが、すべての可能な合致ストリングを探す浪費的サー
チを許容する。多くの現行技術は、サーチ時間を短縮す
るがメモリ上の最長の合致ストリングを探すことはでき
ないハッシング方式のような圧縮技術を使用する。
【0049】本発明が特定の実施例を参照して記述され
たとはいえ、その他の代替的実施が可能であることは通
常の知識を持つ当業者には明らかであろう。例えば、複
数のデータ・バイトまたは部分的データ・バイトを含む
データ・ワードを、上記装置と方法を利用して逐次圧縮
することも可能である。
たとはいえ、その他の代替的実施が可能であることは通
常の知識を持つ当業者には明らかであろう。例えば、複
数のデータ・バイトまたは部分的データ・バイトを含む
データ・ワードを、上記装置と方法を利用して逐次圧縮
することも可能である。
【図1】データ圧縮の従来技術を示す図表である。
【図2】データ圧縮の従来技術を示す図表である。
【図3】データ圧縮の従来技術を示す図表である。
【図4】本発明の好ましい実施例を活用する種々のシス
テム構成の説明図である。
テム構成の説明図である。
【図5】本発明の好ましい実施例を活用する種々のシス
テム構成の説明図である。
テム構成の説明図である。
【図6】本発明の好ましいデータ圧縮装置を示すブロッ
ク図表である。
ク図表である。
【図7】図6で記述された構成を利用する本発明の好ま
しい実施例の動作を示す流れ図である。
しい実施例の動作を示す流れ図である。
【図8】図6で記述された構成を利用する本発明の好ま
しい実施例の動作を示す流れ図である。
しい実施例の動作を示す流れ図である。
【図9】図6で記述された構成を利用して圧縮される入
力データ・ストリームの例を示すブロック図表である。
力データ・ストリームの例を示すブロック図表である。
【図10】図6で記述された構成を利用して圧縮される
入力データ・ストリームの例を示すブロック図表であ
る。
入力データ・ストリームの例を示すブロック図表であ
る。
【図11】図6で記述された構成を利用して圧縮される
入力データ・ストリームの例を示すブロック図表であ
る。
入力データ・ストリームの例を示すブロック図表であ
る。
【図12】図6で記述された構成を利用して圧縮される
入力データ・ストリームの例を示すブロック図表であ
る。
入力データ・ストリームの例を示すブロック図表であ
る。
【図13】図6で記述された構成を利用して圧縮される
入力データ・ストリームの例を示すブロック図表であ
る。
入力データ・ストリームの例を示すブロック図表であ
る。
【図14】図6で記述された構成を利用して圧縮される
入力データ・ストリームの例を示すブロック図表であ
る。
入力データ・ストリームの例を示すブロック図表であ
る。
10 シフト・レジスタ 100、150 コンピュータ 105、155 CPU 110、160 システム・メモリ 112、162 バス 115、120、165、170 入出力チャネル 125、175 他のコンピュータ・
システム 130、180 テープ装置 135、185 ディスク装置 138、188 入出力装置 140、190、194 圧縮装置 141、191、195、300 圧縮エンジン 142、192、196 伸張エンジン 145、198、199 任意追加メモリ 147 任意追加バス 305 制御回路 310、510 入力データ・バス 320、520 入力データ・レジス
タ 321、521 前データ・レジスタ
(またはバッファ) 322、522 入力カウンタ 330、530 アドレス履歴バッフ
ァ 335、535 最終更新テーブル 340、540 旧レジスタ 345、545 新レジスタ 350、550 合致カウンタ
システム 130、180 テープ装置 135、185 ディスク装置 138、188 入出力装置 140、190、194 圧縮装置 141、191、195、300 圧縮エンジン 142、192、196 伸張エンジン 145、198、199 任意追加メモリ 147 任意追加バス 305 制御回路 310、510 入力データ・バス 320、520 入力データ・レジス
タ 321、521 前データ・レジスタ
(またはバッファ) 322、522 入力カウンタ 330、530 アドレス履歴バッフ
ァ 335、535 最終更新テーブル 340、540 旧レジスタ 345、545 新レジスタ 350、550 合致カウンタ
Claims (15)
- 【請求項1】受信したデータ・エレメントをメモリ上の
ロケーションへのアドレスとして使用するデータの履歴
管理手段と、 上記アドレスによりアドレス指定されたメモリ・ロケー
ションが第1の合致データ・エレメントの第1のレコー
ドを含むか否かを判断する手段と、 上記第1の合致データ・エレメントへのポインタを生成
する手段と、 を含むデータ圧縮装置。 - 【請求項2】上記履歴管理手段が、受信した第2のデー
タ・エレメントをメモリ上の第2のロケーションへの第
2のアドレスとして使用する、 請求項1記載のデータ圧縮装置。 - 【請求項3】上記判断手段が、上記アドレスによりアド
レス指定されたメモリ上の第2のロケーションが、第1
の合致データ・エレメントと連続した第2の合致データ
・エレメントであるか否かを判断する手段を含む、 請求項2記載のデータ圧縮装置。 - 【請求項4】上記ポインタ生成手段が、第1と第2の合
致データ・エレメントへのポインタを生成する手段を含
む、 請求項3記載のデータ圧縮装置。 - 【請求項5】上記履歴管理手段が、受信したデータ・エ
レメントを複数のシフト・レジスタの1つへのアドレス
として使用する、 請求項4記載のデータ圧縮装置。 - 【請求項6】データを記憶するメモリと、 上記データを処理するプロセッサと、 受信したデータ・エレメントを上記メモリ上のロケーシ
ョンへのアドレスとして使用するデータ履歴管理手段
と、 上記アドレスによりアドレス指定されたメモリ・ロケー
ションが第1の合致データ・エレメントの第1のレコー
ドを含むか否かを判断する手段と、 第1の合致データ・エレメントへのポインタを生成する
手段と、 を含むデータ処理システム。 - 【請求項7】上記履歴管理手段が、受信した第2のデー
タ・エレメントをメモリ上の第2のロケーションへの第
2のアドレスとして使用する手段を含む、 請求項6記載のデータ処理システム。 - 【請求項8】上記判断手段が、上記アドレスによりアド
レス指定されたメモリ上の第2のロケーションが、第1
の合致データ・エレメントと連続した第2の合致データ
・エレメントであるか否かを判断する手段を含む、 請求項7記載のデータ処理システム。 - 【請求項9】上記ポインタ生成手段が、第1と第2の合
致データ・エレメントへのポインタを生成する手段を含
む、 請求項8記載のデータ処理システム。 - 【請求項10】上記履歴管理手段が、受信したデータ・
エレメントを複数のシフト・レジスタの1つへのアドレ
スとして使用する、 請求項9記載のデータ処理システム。 - 【請求項11】受信したデータ・エレメントをメモリ上
のロケーションへのアドレスとして使用して、メモリ・
ロケーションをアドレス指定するステップと、 上記アドレスによりアドレス指定されたメモリ・ロケー
ションが第1の合致データ・エレメントの第1のレコー
ドを含むか否かを判断するステップと、 上記第1の合致データ・エレメントへのポインタを生成
するステップと、 を含むデータ圧縮方法。 - 【請求項12】上記アドレス指定ステップが、受信した
第2のデータ・エレメントをメモリ上の第2のロケーシ
ョンへの第2のアドレスとして使用する、 請求項11記載のデータ圧縮方法。 - 【請求項13】上記判断ステップが、上記アドレスによ
りアドレス指定されたメモリ上の第2のロケーション
が、第1の合致データ・エレメントと連続した第2の合
致データ・エレメントであるか否かを判断するステップ
を含む、 請求項12記載のデータ圧縮方法。 - 【請求項14】上記ポインタ生成ステップが、第1と第
2の合致データ・エレメントへのポインタを生成するス
テップを含む、 請求項13記載のデータ圧縮方法。 - 【請求項15】上記アドレス指定ステップが、受信した
データ・エレメントを複数のシフト・レジスタの1つへ
のアドレスとして使用する、 請求項14記載のデータ圧縮方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/173,738 US5563595A (en) | 1993-12-23 | 1993-12-23 | Method and apparatus for compressing data |
US173738 | 1993-12-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07200247A JPH07200247A (ja) | 1995-08-04 |
JP2534465B2 true JP2534465B2 (ja) | 1996-09-18 |
Family
ID=22633277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6246548A Expired - Fee Related JP2534465B2 (ja) | 1993-12-23 | 1994-10-12 | デ―タ圧縮装置および方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5563595A (ja) |
EP (1) | EP0660531A3 (ja) |
JP (1) | JP2534465B2 (ja) |
CA (1) | CA2132762C (ja) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6002411A (en) * | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US6170047B1 (en) | 1994-11-16 | 2001-01-02 | Interactive Silicon, Inc. | System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities |
US7190284B1 (en) | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
US5745734A (en) * | 1995-09-29 | 1998-04-28 | International Business Machines Corporation | Method and system for programming a gate array using a compressed configuration bit stream |
US6256652B1 (en) * | 1996-04-18 | 2001-07-03 | Jury P. Milto | Binary code compression and decompression and parallel compression and decompression processor |
US5771011A (en) * | 1996-07-15 | 1998-06-23 | International Business Machines Corporation | Match detect logic for multi-byte per cycle hardware data compression |
US5974471A (en) * | 1996-07-19 | 1999-10-26 | Advanced Micro Devices, Inc. | Computer system having distributed compression and decompression logic for compressed data movement |
US5798718A (en) * | 1997-05-12 | 1998-08-25 | Lexmark International, Inc. | Sliding window data compression method and apparatus |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
US6279016B1 (en) | 1997-09-21 | 2001-08-21 | Microsoft Corporation | Standardized filtering control techniques |
US6216175B1 (en) * | 1998-06-08 | 2001-04-10 | Microsoft Corporation | Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations |
US6141743A (en) * | 1998-09-17 | 2000-10-31 | Advanced Micro Devices, Inc. | Token-based storage for general purpose processing |
US6819271B2 (en) | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US6885319B2 (en) * | 1999-01-29 | 2005-04-26 | Quickshift, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
US7538694B2 (en) * | 1999-01-29 | 2009-05-26 | Mossman Holdings Llc | Network device with improved storage density and access speed using compression techniques |
US7129860B2 (en) * | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6208273B1 (en) | 1999-01-29 | 2001-03-27 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data compression |
US6822589B1 (en) | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6145069A (en) * | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
US6466999B1 (en) | 1999-03-31 | 2002-10-15 | Microsoft Corporation | Preprocessing a reference data stream for patch generation and compression |
US20050015608A1 (en) | 2003-07-16 | 2005-01-20 | Pkware, Inc. | Method for strongly encrypting .ZIP files |
US6879988B2 (en) | 2000-03-09 | 2005-04-12 | Pkware | System and method for manipulating and managing computer archive files |
US8959582B2 (en) | 2000-03-09 | 2015-02-17 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
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 |
US7962622B2 (en) * | 2001-08-07 | 2011-06-14 | Motorola Mobility, Inc. | System and method for providing provisioning and upgrade services for a wireless device |
US7596565B2 (en) * | 2001-08-07 | 2009-09-29 | Good Technology | System and method for maintaining wireless file folders at a wireless device |
US7155483B1 (en) | 2001-08-07 | 2006-12-26 | Good Technology, Inc. | Apparatus and method for conserving bandwidth by batch processing data transactions |
US7743119B2 (en) | 2001-08-07 | 2010-06-22 | Motorola, Inc. | System and method for mapping identification codes |
US7243163B1 (en) | 2001-08-07 | 2007-07-10 | Good Technology, Inc. | System and method for full wireless synchronization of a data processing apparatus with a messaging system |
US7085996B2 (en) * | 2001-10-18 | 2006-08-01 | International Business Corporation | Apparatus and method for source compression and comparison |
US7447799B2 (en) * | 2002-04-24 | 2008-11-04 | Good Technology, Inc. | System and method for automatically updating a wireless device |
US9813514B2 (en) | 2002-06-12 | 2017-11-07 | Good Technology Holdings Limited | Information repository system including a wireless device and related method |
US8516034B1 (en) | 2002-07-08 | 2013-08-20 | Good Technology Software, Inc | System and method for modifying application behavior based on network bandwidth |
US7853578B1 (en) * | 2005-12-09 | 2010-12-14 | Marvell International Ltd. | High-performance pattern matching |
US7620392B1 (en) | 2006-02-27 | 2009-11-17 | Good Technology, Inc. | Method and system for distributing and updating software in wireless devices |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3914586A (en) * | 1973-10-25 | 1975-10-21 | Gen Motors Corp | Data compression method and apparatus |
US4021782A (en) * | 1974-01-07 | 1977-05-03 | Hoerning John S | Data compaction system and apparatus |
US4054951A (en) * | 1976-06-30 | 1977-10-18 | International Business Machines Corporation | Data expansion apparatus |
US4087788A (en) * | 1977-01-14 | 1978-05-02 | Ncr Canada Ltd - Ncr Canada Ltee | Data compression system |
US4321668A (en) * | 1979-01-02 | 1982-03-23 | Honeywell Information Systems Inc. | Prediction of number of data words transferred and the cycle at which data is available |
US4463342A (en) * | 1979-06-14 | 1984-07-31 | International Business Machines Corporation | Method and means for carry-over control in the high order to low order pairwise combining of digits of a decodable set of relatively shifted finite number strings |
US4286256A (en) * | 1979-11-28 | 1981-08-25 | International Business Machines Corporation | Method and means for arithmetic coding utilizing a reduced number of operations |
US4295125A (en) * | 1980-04-28 | 1981-10-13 | International Business Machines Corporation | Method and means for pipeline decoding of the high to low order pairwise combined digits of a decodable set of relatively shifted finite number of strings |
US4467317A (en) * | 1981-03-30 | 1984-08-21 | International Business Machines Corporation | High-speed arithmetic compression coding using concurrent value updating |
US4464650A (en) * | 1981-08-10 | 1984-08-07 | Sperry Corporation | Apparatus and method for compressing data signals and restoring the compressed data signals |
US4560976A (en) * | 1981-10-15 | 1985-12-24 | Codex Corporation | Data compression |
US4622545A (en) * | 1982-09-30 | 1986-11-11 | Apple Computer, Inc. | Method and apparatus for image compression and manipulation |
NL8301264A (nl) * | 1983-04-11 | 1984-11-01 | Philips Nv | Inrichting voor het regelsgewijs comprimeren van binaire data van een beeldveld- en aftastinrichting voor een document voorzien voor zulk comprimeren. |
US4677649A (en) * | 1983-04-26 | 1987-06-30 | Canon Kabushiki Kaisha | Data receiving apparatus |
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 |
JPH0828053B2 (ja) * | 1983-08-08 | 1996-03-21 | 株式会社日立製作所 | データ記録方法 |
US4633490A (en) * | 1984-03-15 | 1986-12-30 | International Business Machines Corporation | Symmetrical optimized adaptive data compression/transfer/decompression system |
US4612532A (en) * | 1984-06-19 | 1986-09-16 | Telebyte Corportion | Data compression apparatus and method |
GB2172127B (en) * | 1985-03-06 | 1988-10-12 | Ferranti Plc | Data compression system |
US4667649A (en) * | 1985-05-20 | 1987-05-26 | Humphrey Stanley A | Archery bow |
US4682150A (en) * | 1985-12-09 | 1987-07-21 | Ncr Corporation | Data compression method and apparatus |
US4652856A (en) * | 1986-02-04 | 1987-03-24 | International Business Machines Corporation | Multiplication-free multi-alphabet arithmetic code |
US4905297A (en) * | 1986-09-15 | 1990-02-27 | International Business Machines Corporation | Arithmetic coding encoder and decoder system |
US4935882A (en) * | 1986-09-15 | 1990-06-19 | International Business Machines Corporation | Probability adaptation for arithmetic coders |
US4891643A (en) * | 1986-09-15 | 1990-01-02 | International Business Machines Corporation | Arithmetic coding data compression/de-compression by selectively employed, diverse arithmetic coding encoders and decoders |
US4730348A (en) * | 1986-09-19 | 1988-03-08 | Adaptive Computer Technologies | Adaptive data compression system |
JPH0815263B2 (ja) * | 1986-12-12 | 1996-02-14 | 株式会社日立製作所 | データ圧縮復元方法 |
US4853696A (en) * | 1987-04-13 | 1989-08-01 | University Of Central Florida | Code converter for data compression/decompression |
US4943869A (en) * | 1987-05-06 | 1990-07-24 | Fuji Photo Film Co., Ltd. | Compression method for dot image data |
US4876541A (en) * | 1987-10-15 | 1989-10-24 | Data Compression Corporation | Stem for dynamically compressing and decompressing electronic data |
US4891784A (en) * | 1988-01-08 | 1990-01-02 | Hewlett-Packard Company | High capacity tape drive transparently writes and reads large packets of blocked data between interblock gaps |
US4906991A (en) * | 1988-04-29 | 1990-03-06 | Xerox Corporation | Textual substitution data compression with finite length search windows |
US4899147A (en) * | 1988-06-03 | 1990-02-06 | Unisys Corporation | Data compression/decompression apparatus with throttle, start-up and backward read controls |
US5003307A (en) * | 1989-01-13 | 1991-03-26 | Stac, Inc. | Data compression apparatus with shift register search means |
US5016009A (en) * | 1989-01-13 | 1991-05-14 | Stac, Inc. | Data compression apparatus and method |
AU624205B2 (en) * | 1989-01-23 | 1992-06-04 | General Electric Capital Corporation | Variable length string matcher |
US5025258A (en) * | 1989-06-01 | 1991-06-18 | At&T Bell Laboratories | Adaptive probability estimator for entropy encoding/decoding |
US5023611A (en) * | 1989-07-28 | 1991-06-11 | At&T Bell Laboratories | Entropy encoder/decoder including a context extractor |
US4988998A (en) * | 1989-09-05 | 1991-01-29 | Storage Technology Corporation | Data compression system for successively applying at least two data compression methods to an input data stream |
US4955066A (en) * | 1989-10-13 | 1990-09-04 | Microsoft Corporation | Compressing and decompressing text files |
US5109433A (en) * | 1989-10-13 | 1992-04-28 | Microsoft Corporation | Compressing and decompressing text files |
US5001478A (en) * | 1989-12-28 | 1991-03-19 | International Business Machines Corporation | Method of encoding compressed data |
US5130993A (en) * | 1989-12-29 | 1992-07-14 | Codex Corporation | Transmitting encoded data on unreliable networks |
US4973961A (en) * | 1990-02-12 | 1990-11-27 | At&T Bell Laboratories | Method and apparatus for carry-over control in arithmetic entropy coding |
JPH0834434B2 (ja) * | 1990-02-26 | 1996-03-29 | 三菱電機株式会社 | 符号化装置及び符号化方法 |
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 |
US5051745A (en) * | 1990-08-21 | 1991-09-24 | Pkware, Inc. | String searcher, and compressor using same |
US5150430A (en) * | 1991-03-15 | 1992-09-22 | The Board Of Trustees Of The Leland Stanford Junior University | Lossless data compression circuit and method |
CA2065578C (en) * | 1991-04-22 | 1999-02-23 | David W. Carr | Packet-based data compression method |
US5245614A (en) * | 1991-04-29 | 1993-09-14 | Codex Corporation | Vocabulary memory allocation for adaptive data compression of frame-multiplexed traffic |
US5140321A (en) * | 1991-09-04 | 1992-08-18 | Prime Computer, Inc. | Data compression/decompression method and apparatus |
JPH0569275A (ja) * | 1991-09-12 | 1993-03-23 | Fanuc Ltd | 数値制御装置 |
US5155484A (en) * | 1991-09-13 | 1992-10-13 | Salient Software, Inc. | Fast data compressor with direct lookup table indexing into history buffer |
US5406279A (en) * | 1992-09-02 | 1995-04-11 | Cirrus Logic, Inc. | General purpose, hash-based technique for single-pass lossless data compression |
-
1993
- 1993-12-23 US US08/173,738 patent/US5563595A/en not_active Expired - Fee Related
-
1994
- 1994-09-23 CA CA002132762A patent/CA2132762C/en not_active Expired - Fee Related
- 1994-10-12 JP JP6246548A patent/JP2534465B2/ja not_active Expired - Fee Related
- 1994-11-17 EP EP94308515A patent/EP0660531A3/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
CA2132762C (en) | 1999-11-09 |
EP0660531A2 (en) | 1995-06-28 |
CA2132762A1 (en) | 1995-06-24 |
US5563595A (en) | 1996-10-08 |
JPH07200247A (ja) | 1995-08-04 |
EP0660531A3 (en) | 1996-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2534465B2 (ja) | デ―タ圧縮装置および方法 | |
JP3225638B2 (ja) | データを圧縮するための装置及び方法並びにデータ処理システム | |
US5659737A (en) | Methods and apparatus for data compression that preserves order by using failure greater than and failure less than tokens | |
EP0129439B1 (en) | High speed data compression and decompression apparatus and method | |
US6597812B1 (en) | System and method for lossless data compression and decompression | |
US5612693A (en) | Sliding window data compression using a toroidal bit shift register | |
US6819271B2 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
US6885319B2 (en) | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms | |
US5229768A (en) | Adaptive data compression system | |
JP2986076B2 (ja) | データを圧縮及び圧縮解除するための方法及び装置 | |
US8521788B2 (en) | Techniques for maintaining column vectors of relational data within volatile memory | |
US5463390A (en) | Data compression apparatus and method | |
US5936560A (en) | Data compression method and apparatus performing high-speed comparison between data stored in a dictionary window and data to be compressed | |
US5175543A (en) | Dictionary reset performance enhancement for data compression applications | |
JPH0795093A (ja) | 順次データ圧縮アルゴリズムを実行する装置及び方法 | |
US6654867B2 (en) | Method and system to pre-fetch compressed memory blocks using pointers | |
US11748307B2 (en) | Selective data compression based on data similarity | |
US20030179823A1 (en) | Processing digital data prior to compression | |
US7254689B1 (en) | Decompression of block-sorted data | |
US5745603A (en) | Two dimensional context model obtained without a line buffer for arithmetic coding | |
RU2108665C1 (ru) | Способы фрагментирования, анализа структуры и сжатия потока импульсно-сигнальной информации и устройство для их реализации | |
US20240106459A1 (en) | Compression device and compression method | |
Gu | A new Chinese text compression scheme combining dictionary coding and adaptive alphabet-character grouping | |
JPH06204884A (ja) | データ復元回路 | |
JPH08265167A (ja) | データ圧縮装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |