JPH0368219A - データ圧縮装置及び方法 - Google Patents
データ圧縮装置及び方法Info
- Publication number
- JPH0368219A JPH0368219A JP2006057A JP605790A JPH0368219A JP H0368219 A JPH0368219 A JP H0368219A JP 2006057 A JP2006057 A JP 2006057A JP 605790 A JP605790 A JP 605790A JP H0368219 A JPH0368219 A JP H0368219A
- Authority
- JP
- Japan
- Prior art keywords
- string
- data stream
- input data
- data
- indicator
- 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
Links
- 238000000034 method Methods 0.000 title claims description 88
- 230000006837 decompression Effects 0.000 claims description 28
- 239000000872 buffer Substances 0.000 claims description 23
- 238000013144 data compression Methods 0.000 claims description 13
- 239000003550 marker Substances 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 5
- 238000006467 substitution reaction Methods 0.000 claims 5
- 238000009825 accumulation Methods 0.000 claims 3
- 238000007906 compression Methods 0.000 abstract description 128
- 230000006835 compression Effects 0.000 abstract description 127
- 238000012545 processing Methods 0.000 description 52
- 230000006870 function Effects 0.000 description 25
- 238000013459 approach Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 7
- 238000003491 array Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000032258 transport Effects 0.000 description 3
- ZNOLNAPJKOYTHY-UHFFFAOYSA-N 4-(4-(P-Chlorophenyl)-2,5,6-Trihydropyridino)-4'-Fluorobutyrophenone Chemical compound C1=CC(F)=CC=C1C(=O)CCCN1CC=C(C=2C=CC(Cl)=CC=2)CC1 ZNOLNAPJKOYTHY-UHFFFAOYSA-N 0.000 description 2
- 101000606537 Homo sapiens Receptor-type tyrosine-protein phosphatase delta Proteins 0.000 description 2
- 102100039666 Receptor-type tyrosine-protein phosphatase delta Human genes 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005056 compaction Methods 0.000 description 2
- 229920006258 high performance thermoplastic Polymers 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 1
- 102100021766 E3 ubiquitin-protein ligase RNF138 Human genes 0.000 description 1
- 101001106980 Homo sapiens E3 ubiquitin-protein ligase RNF138 Proteins 0.000 description 1
- 101000845005 Macrovipera lebetina Disintegrin lebein-2-alpha Proteins 0.000 description 1
- 108700012364 REG1 Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- XOZUGNYVDXMRKW-AATRIKPKSA-N azodicarbonamide Chemical compound NC(=O)\N=N\C(N)=O XOZUGNYVDXMRKW-AATRIKPKSA-N 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 150000002500 ions Chemical class 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000006187 pill Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- 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
-
- 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
-
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- 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/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
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)
- Dc Digital Transmission (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(産業上の利用分野)
本発明は、一般的にはデータ格納及び伝送システムに関
し、より詳細には、データ格納及び伝送の能力を改善す
る、データ圧縮システム及び方法に関する。
し、より詳細には、データ格納及び伝送の能力を改善す
る、データ圧縮システム及び方法に関する。
(従来の技術及び発明が解決しようとする課題)データ
格納システムとデータ伝送システムとの間のデータ圧縮
の重要でない違いによって、データ格納システムのみが
、特に、このようなシステムに格納されたデータファイ
ルに言及される。しかし、全てのデータ格納システムは
、データ伝送システム及び他のアプリケーションをカバ
ーするように、容易に拡張され得る。ファイルはバイト
又はキャラクタの連続するストリームであると考えられ
、そこではバイトは幾つかの固定された数のビットから
戊り、圧縮システムはこの入力バイトのストリームを、
「圧縮されたjバイトの出力ストリームに変換し、これ
から伸張ユニットによって、オリジナルファイルの内容
が再構築され得コンビコータデータファイルが典型的に
膨大な量の冗長性を含むということは、定着している。
格納システムとデータ伝送システムとの間のデータ圧縮
の重要でない違いによって、データ格納システムのみが
、特に、このようなシステムに格納されたデータファイ
ルに言及される。しかし、全てのデータ格納システムは
、データ伝送システム及び他のアプリケーションをカバ
ーするように、容易に拡張され得る。ファイルはバイト
又はキャラクタの連続するストリームであると考えられ
、そこではバイトは幾つかの固定された数のビットから
戊り、圧縮システムはこの入力バイトのストリームを、
「圧縮されたjバイトの出力ストリームに変換し、これ
から伸張ユニットによって、オリジナルファイルの内容
が再構築され得コンビコータデータファイルが典型的に
膨大な量の冗長性を含むということは、定着している。
これらのファイルがディスク又はテープ記憶媒体上でよ
り小さいスペースを占めるように、又は1200ボーの
モデムラインのような伝送チャネルに於いてより短い時
間で移送され得るように、これらのファイルを「圧縮」
するために多くの技術が長年用いられてきた。例えば、
パーソナルコンピュータに使用される幾つかの広く用い
られている市販のプログラムがある(例えば、Syst
em Enhancement As5ociates
、 Inc、、Wayne、 NJ、 19g5のAR
Cソフトウェア)。このプログラムはファイル上で圧縮
及び伸張の機能を果たす。減少量はファイルの内容に大
きく依存して変化するが、このようなプログラムにとっ
て、与えられたファイルの大きさを2:lの比(又はそ
れ以上)に減少させることは一般的ではない。
り小さいスペースを占めるように、又は1200ボーの
モデムラインのような伝送チャネルに於いてより短い時
間で移送され得るように、これらのファイルを「圧縮」
するために多くの技術が長年用いられてきた。例えば、
パーソナルコンピュータに使用される幾つかの広く用い
られている市販のプログラムがある(例えば、Syst
em Enhancement As5ociates
、 Inc、、Wayne、 NJ、 19g5のAR
Cソフトウェア)。このプログラムはファイル上で圧縮
及び伸張の機能を果たす。減少量はファイルの内容に大
きく依存して変化するが、このようなプログラムにとっ
て、与えられたファイルの大きさを2:lの比(又はそ
れ以上)に減少させることは一般的ではない。
データ圧縮のための従来技術に於ける多くのアプローチ
がなされている。これらのアプローチの幾つかは、ファ
イル又はファイル内のデータの一定のタイプについて、
暗黙の前提を作り出している。例えば、スキャナを用い
て生成されたページのビットイメージは、殆どが空白の
画素であり、この傾向は、このようなファイルの大きさ
を大きく減少させる圧縮アルゴリズムによって利用され
る。同様に、ワードプロセッシングファイルは、関係す
る言!!(即ち、英語)に最もよく現れるキャラクタ(
又はワード)の知識を用いて容易に圧縮される、多くの
アスキーキャラクタを含んでいる。他の圧縮方法はファ
イルのタイプから独立しており、そのデータに「適応J
するようにされている。一般に、特定のタイプ用の圧縮
技術は、その技術が最適化されるファイル上では、一般
用のアルゴリズムよりも高い圧縮性能を供給する。しか
し、もしファイルモデルが正しくないと、それらは非常
に低い圧縮性能を有する傾向にある。例えば、英語のテ
キストに最適化された圧縮方法は、フランス語のテキス
トを含むファイル上では、不完全にしか機能しないかも
知れない。
がなされている。これらのアプローチの幾つかは、ファ
イル又はファイル内のデータの一定のタイプについて、
暗黙の前提を作り出している。例えば、スキャナを用い
て生成されたページのビットイメージは、殆どが空白の
画素であり、この傾向は、このようなファイルの大きさ
を大きく減少させる圧縮アルゴリズムによって利用され
る。同様に、ワードプロセッシングファイルは、関係す
る言!!(即ち、英語)に最もよく現れるキャラクタ(
又はワード)の知識を用いて容易に圧縮される、多くの
アスキーキャラクタを含んでいる。他の圧縮方法はファ
イルのタイプから独立しており、そのデータに「適応J
するようにされている。一般に、特定のタイプ用の圧縮
技術は、その技術が最適化されるファイル上では、一般
用のアルゴリズムよりも高い圧縮性能を供給する。しか
し、もしファイルモデルが正しくないと、それらは非常
に低い圧縮性能を有する傾向にある。例えば、英語のテ
キストに最適化された圧縮方法は、フランス語のテキス
トを含むファイル上では、不完全にしか機能しないかも
知れない。
典型的には、格納システムはどんなタイプのデータがそ
の中に格納されているかを知らない。従って、特定のデ
ータ用の圧縮技術は避けられ、又はそれらは可能な技術
の集合の一つとして用いられるのみである。例えば、A
RCは多くの方法を用い、そして各ファイルに最適のそ
れを選択する。
の中に格納されているかを知らない。従って、特定のデ
ータ用の圧縮技術は避けられ、又はそれらは可能な技術
の集合の一つとして用いられるのみである。例えば、A
RCは多くの方法を用い、そして各ファイルに最適のそ
れを選択する。
しかし、このアプローチは単一の圧縮方法を用いるのに
比べて、非常なコンピュータのオーバーヘノドを必要と
することに注意しなければならない。
比べて、非常なコンピュータのオーバーヘノドを必要と
することに注意しなければならない。
圧縮方法の他の重要な見地は、ファイルが処理される速
度である。もし圧縮(又は伸張)の速度が非常に遅く、
システムの性能を著しく低下させる場合には、たとえそ
れが競合する方法よりも高い圧縮比を達成し得ても、そ
の圧縮方法は受は入れられない。例えば、ストリームテ
ープシステムでは、もしテープ駆動に必要な速度でデー
タを供給するのに十分速くファイルが圧縮されなければ
、テープは流れの速度を落し、圧縮による性能及び/又
は容量利得は無駄になる。
度である。もし圧縮(又は伸張)の速度が非常に遅く、
システムの性能を著しく低下させる場合には、たとえそ
れが競合する方法よりも高い圧縮比を達成し得ても、そ
の圧縮方法は受は入れられない。例えば、ストリームテ
ープシステムでは、もしテープ駆動に必要な速度でデー
タを供給するのに十分速くファイルが圧縮されなければ
、テープは流れの速度を落し、圧縮による性能及び/又
は容量利得は無駄になる。
最も一般的な圧縮技術の一つは、ランレングスコード化
として知られている。このアプローチは、ゼロ又はスペ
ースキャラクタのような同じバイト(キャラクタ)が繰
り返されたストリングを、ファイルがしばしば有してい
るという事実を利用している。このようなストリングは
「エスケープ」キャラクタを用いてコード化され、繰り
返し数、繰り返されるキャラクタが続く。ランの形式で
現れなかった他の全てのキャラクタは、それらを「普通
テキスト」として出力ストリームに置くことによってコ
ード化される。エスケープキャラクタは滅多に使用しな
いバイトとなるように選ばれ、入力ストリームに於ける
その出現は、キャラクタとしてのエスケープキャラクタ
それ自身を有する長さ10ランとしてコード化される。
として知られている。このアプローチは、ゼロ又はスペ
ースキャラクタのような同じバイト(キャラクタ)が繰
り返されたストリングを、ファイルがしばしば有してい
るという事実を利用している。このようなストリングは
「エスケープ」キャラクタを用いてコード化され、繰り
返し数、繰り返されるキャラクタが続く。ランの形式で
現れなかった他の全てのキャラクタは、それらを「普通
テキスト」として出力ストリームに置くことによってコ
ード化される。エスケープキャラクタは滅多に使用しな
いバイトとなるように選ばれ、入力ストリームに於ける
その出現は、キャラクタとしてのエスケープキャラクタ
それ自身を有する長さ10ランとしてコード化される。
ランレングスコード化はあるタイプのファイル上ではよ
く機能するが、もしファイルが繰り返しのキャラクタを
有していなければ(又はファイルにエスケープキャラク
タがしばしば出現すれば)、低い圧縮比率しか有し得な
い。従って、一般に、エスケープキャラクタの選択は、
データ上で最も使用の少ないバイトを捜すという余分な
経路を必要とし、このようなシステムの効率を低下させ
る。
く機能するが、もしファイルが繰り返しのキャラクタを
有していなければ(又はファイルにエスケープキャラク
タがしばしば出現すれば)、低い圧縮比率しか有し得な
い。従って、一般に、エスケープキャラクタの選択は、
データ上で最も使用の少ないバイトを捜すという余分な
経路を必要とし、このようなシステムの効率を低下させ
る。
最も洗練されたアプローチは、ハフマンコードとして知
られている(Huffman、David A、、”A
MeLhod for the Con5truct
ion of Minimum Redundancy
Codes−1Proceedings or th
e IRE、pp、1098−1110、Septem
ber 1952を参照せよ〉。この方法では、あるバ
イトはファイル内で他のバイトよりしばしば多く現れる
と仮定される。例えば英語のテキストでは、文字rtJ
又はrTJは文字rQJより多く存在する。各バイトは
ビットストリングに割り当てられ、その長さは、逆にフ
ァイル内に於けるそのバイトの相対的な頻度に関係する
。これらのビットストリングは、もし1ビツトがある時
に処理されると、唯一の結果しか生じないようにデコー
ドされるように選択される。ハフマンはファイルに対す
る相対的頻度の統計に基づく、ビ・2トストリングの最
a21当てのためのアルゴリズムを導いている。
られている(Huffman、David A、、”A
MeLhod for the Con5truct
ion of Minimum Redundancy
Codes−1Proceedings or th
e IRE、pp、1098−1110、Septem
ber 1952を参照せよ〉。この方法では、あるバ
イトはファイル内で他のバイトよりしばしば多く現れる
と仮定される。例えば英語のテキストでは、文字rtJ
又はrTJは文字rQJより多く存在する。各バイトは
ビットストリングに割り当てられ、その長さは、逆にフ
ァイル内に於けるそのバイトの相対的な頻度に関係する
。これらのビットストリングは、もし1ビツトがある時
に処理されると、唯一の結果しか生じないようにデコー
ドされるように選択される。ハフマンはファイルに対す
る相対的頻度の統計に基づく、ビ・2トストリングの最
a21当てのためのアルゴリズムを導いている。
ハフマンアルゴリズムは、達成される圧縮が漸近的にフ
ァイルの「エントロピー」に近づくことを保証し、それ
は以下のように正確に定義される。
ァイルの「エントロピー」に近づくことを保証し、それ
は以下のように正確に定義される。
H=SUM−[9(i) l 0g2 (p
(1) ) コここで、 p (j) =ファイル内のキャラクタiの確率(lの
出現数) (ファイル内のキャラクタの総数) Hの単位はビットであり、それはファイル内のキャラク
タを表現するのに(平均して)どれだけのビットが必要
かを測定する。例えば、もしエントロピーが8−ビット
バイトを用いて4. Oビットであれば、ハフマン圧
縮システムはファイル上で2: lの圧縮をなし得る。
(1) ) コここで、 p (j) =ファイル内のキャラクタiの確率(lの
出現数) (ファイル内のキャラクタの総数) Hの単位はビットであり、それはファイル内のキャラク
タを表現するのに(平均して)どれだけのビットが必要
かを測定する。例えば、もしエントロピーが8−ビット
バイトを用いて4. Oビットであれば、ハフマン圧
縮システムはファイル上で2: lの圧縮をなし得る。
エントロピーが高いほど、データはより「乱雑」 (従
って、あまり圧縮できない)である。
って、あまり圧縮できない)である。
ハフマンのコード化は多くのタイプのファイル上で非常
によく機能する。しかし、ビットストリングのバイトへ
の割当ては、多くの実際的な困難を伴う。例えば、予め
設定されたコード化スキームが用いられる場合(例えば
、英語に於ける文字の出現の頻度に基づいて)、もしそ
の予め設定されたスキームが、ファイル内の実際に存在
するものとかなり異なる頻度統計であると仮定すると、
ハフマンのコード化はファイルを大きく拡張するかもし
れない。これに加えて、ファイルの内容に基づぐコード
化スキームの演算は、ハフマンアルゴリズムを頻度統計
に適応するのと同様に、データ上での2つのパスを必要
とするのみならず(従って、システムの効率を低下させ
る)、コード化テーブルがデータに沿って格納されると
いうことが必要とされ、これは圧縮率の上での否定的な
衝撃を有する。更に、バイトの相対的頻度は、ファイル
内で動的に容易に変えられ得る。そのため、どの点でも
特定のコード化割当てはうまく機能しない。
によく機能する。しかし、ビットストリングのバイトへ
の割当ては、多くの実際的な困難を伴う。例えば、予め
設定されたコード化スキームが用いられる場合(例えば
、英語に於ける文字の出現の頻度に基づいて)、もしそ
の予め設定されたスキームが、ファイル内の実際に存在
するものとかなり異なる頻度統計であると仮定すると、
ハフマンのコード化はファイルを大きく拡張するかもし
れない。これに加えて、ファイルの内容に基づぐコード
化スキームの演算は、ハフマンアルゴリズムを頻度統計
に適応するのと同様に、データ上での2つのパスを必要
とするのみならず(従って、システムの効率を低下させ
る)、コード化テーブルがデータに沿って格納されると
いうことが必要とされ、これは圧縮率の上での否定的な
衝撃を有する。更に、バイトの相対的頻度は、ファイル
内で動的に容易に変えられ得る。そのため、どの点でも
特定のコード化割当てはうまく機能しない。
ハフマンアプローチの多くの変形があり(例えば、5i
bly、Edger n、、”App目cation
of 5play Trees to Data Co
mpression−、Cog+munication
s or the ACM、pp、996−1007.
Vol、31.No、8.August 1988)、
通常、それらは処理された入力バイトの最新の履歴に基
づいた、動的コード割当てを含んでいる。
bly、Edger n、、”App目cation
of 5play Trees to Data Co
mpression−、Cog+munication
s or the ACM、pp、996−1007.
Vol、31.No、8.August 1988)、
通常、それらは処理された入力バイトの最新の履歴に基
づいた、動的コード割当てを含んでいる。
このようなスキームは上で議論した問題点を回避する。
他のアプローチは同時に2バイトワード〈バイグラム(
bi−gram))を見ることを含み、ハフマンのコー
ド化をそのワード上で行う。
bi−gram))を見ることを含み、ハフマンのコー
ド化をそのワード上で行う。
近年のハフマンのコード化の変形は、MacCrisk
enの米国特許第4.730.348号(及びその中で
参照されている他の特許)に現れている。MacCri
skenの米国特許では、ハフマンコードは先のバイト
のコンテキストに於けるバイトに割り当てられる。言い
換えれば、複数のコード化テーブルが用いられ、各テー
ブルは先のバイトに従って選択される。このアプローチ
は、例えば、英語では文字ruJは頻繁には現れないが
、「q」の後には殆ど常に現れるという観察に基づいて
いる。従って、ruJに割り当てられるコードは、先の
文字が「q」 (又は「Q」)であるかどうかに依存し
て異なるであろう。多数のテーブルと動的コード割当て
とを用いる同様のスキームについては、5ibly、E
dgerH,、”Application of 5p
lay Trees to Data Compres
sion−を参照されたい。
enの米国特許第4.730.348号(及びその中で
参照されている他の特許)に現れている。MacCri
skenの米国特許では、ハフマンコードは先のバイト
のコンテキストに於けるバイトに割り当てられる。言い
換えれば、複数のコード化テーブルが用いられ、各テー
ブルは先のバイトに従って選択される。このアプローチ
は、例えば、英語では文字ruJは頻繁には現れないが
、「q」の後には殆ど常に現れるという観察に基づいて
いる。従って、ruJに割り当てられるコードは、先の
文字が「q」 (又は「Q」)であるかどうかに依存し
て異なるであろう。多数のテーブルと動的コード割当て
とを用いる同様のスキームについては、5ibly、E
dgerH,、”Application of 5p
lay Trees to Data Compres
sion−を参照されたい。
上述のハフマンタイプのアプローチは、コンビネータに
よって強化される傾向にあり、例外的に高い圧縮比率を
連成するものではない。この観察に対する一つの説明は
、8ビツトバイトに基づく純粋なハフマンコードは最も
良い場合には8:1の圧縮比率を達成し得ること、そし
てそれはファイルが同じバイトの繰り返しく即ち、エン
トロピー=0)から成る最善の状況でのみ達成され得る
ことである。同じ状況では、単純なランレングスコード
化スキームは50:1以上の圧縮率を連成し得る。平均
の性能は最善及び最悪の場合の数の同じ組合せであろう
。そして、最善の場合の限度は、その平均をも制限する
。理想的なハフマンコードはコード割当てを最適化する
ために「断片的な」ビットを用いることを可能にするが
、しかし、各コード内のビットの総数の実際的な制限は
、ハフマンのコード化の性能を、その理論的な限度より
もかなり低く制限する。
よって強化される傾向にあり、例外的に高い圧縮比率を
連成するものではない。この観察に対する一つの説明は
、8ビツトバイトに基づく純粋なハフマンコードは最も
良い場合には8:1の圧縮比率を達成し得ること、そし
てそれはファイルが同じバイトの繰り返しく即ち、エン
トロピー=0)から成る最善の状況でのみ達成され得る
ことである。同じ状況では、単純なランレングスコード
化スキームは50:1以上の圧縮率を連成し得る。平均
の性能は最善及び最悪の場合の数の同じ組合せであろう
。そして、最善の場合の限度は、その平均をも制限する
。理想的なハフマンコードはコード割当てを最適化する
ために「断片的な」ビットを用いることを可能にするが
、しかし、各コード内のビットの総数の実際的な制限は
、ハフマンのコード化の性能を、その理論的な限度より
もかなり低く制限する。
圧縮のための全体的に異なるアプローチが、ziV及び
Lempelによって開発され(Zlv、 J、及びA
、 Lespel、−Compression of
1ndividual 5equence viava
riable rate encoding’、 IE
EE Transactlons onInforsa
tion Theory、Vol、IT−29,pp
、284−287.March 1983 を参照せ
よ)、Wal chによって改良されている(Welc
h、Tsrry A、、−^Technique fo
r l(Igh−Performance Data
Compression”、 IEEE Coaipu
ter、pp、$−19,June 1984) o
可変長のコードを固定された大きさのバイトに割り当て
る代わりに、Ziv−Lempelアルゴリズム(rZ
LJ )は、固定長のコードを可変の大きさのストリ
ングに割り当てる。
Lempelによって開発され(Zlv、 J、及びA
、 Lespel、−Compression of
1ndividual 5equence viava
riable rate encoding’、 IE
EE Transactlons onInforsa
tion Theory、Vol、IT−29,pp
、284−287.March 1983 を参照せ
よ)、Wal chによって改良されている(Welc
h、Tsrry A、、−^Technique fo
r l(Igh−Performance Data
Compression”、 IEEE Coaipu
ter、pp、$−19,June 1984) o
可変長のコードを固定された大きさのバイトに割り当て
る代わりに、Ziv−Lempelアルゴリズム(rZ
LJ )は、固定長のコードを可変の大きさのストリ
ングに割り当てる。
ファイルからの入力バイトが処理されるにつれて、スト
リングのテーブルが作成され、各バイト又はバイトのス
トリングは、テーブル内のストリングのインデックスの
みを出力することにより、圧縮される。典型的にはこの
インデックスは11−14ビツトの範囲であり、12ビ
ツトが一般的である。なぜならこれは単純な手法に向い
ているからである。テーブルは先にコード化されたバイ
トのみを用いて作成されるので、圧縮及び伸張のシステ
ムの両方は、テーブル情報を移送するのに必要な余分な
オーバーヘッド無しに、同じテーブルを維持することが
できる。ハツシングアルゴリズムがマツチングストリン
グを効率的に捜すのに用いられる。ファイルの初めでは
、テーブルはアルファベットの各キャラクタに対して一
つのストリングが初期化される。従って、たとえそのス
トリングが長さ1のみを有していても、全てのバイトは
少なくとも一つのストリングに見いだされるということ
を確実にする。
リングのテーブルが作成され、各バイト又はバイトのス
トリングは、テーブル内のストリングのインデックスの
みを出力することにより、圧縮される。典型的にはこの
インデックスは11−14ビツトの範囲であり、12ビ
ツトが一般的である。なぜならこれは単純な手法に向い
ているからである。テーブルは先にコード化されたバイ
トのみを用いて作成されるので、圧縮及び伸張のシステ
ムの両方は、テーブル情報を移送するのに必要な余分な
オーバーヘッド無しに、同じテーブルを維持することが
できる。ハツシングアルゴリズムがマツチングストリン
グを効率的に捜すのに用いられる。ファイルの初めでは
、テーブルはアルファベットの各キャラクタに対して一
つのストリングが初期化される。従って、たとえそのス
トリングが長さ1のみを有していても、全てのバイトは
少なくとも一つのストリングに見いだされるということ
を確実にする。
Ziv−LempeLアルゴリズムは、それ自身をデー
タに適合させ、ファイルの内容に根拠を置く予め設定さ
れたテーブルを必要としないので、魅力がある。更に、
ストリングを極端に長くし得るので、最適の場合の圧縮
比率は非常に高く、実際のZL出力は、はとんどのタイ
プのファイルでハフマンスキームに匹敵する。また、そ
れは装置にとっても非常に単純であり、この単純さが高
い効率に現れている。
タに適合させ、ファイルの内容に根拠を置く予め設定さ
れたテーブルを必要としないので、魅力がある。更に、
ストリングを極端に長くし得るので、最適の場合の圧縮
比率は非常に高く、実際のZL出力は、はとんどのタイ
プのファイルでハフマンスキームに匹敵する。また、そ
れは装置にとっても非常に単純であり、この単純さが高
い効率に現れている。
しかし、幾つかの障害もまた、ZL圧縮法に存在する。
ZLストリング探索は「どん欲な」アルゴリズムである
。例えば、次のストリングを考える。
。例えば、次のストリングを考える。
ABCDEFBCDEF
ここで、A、 B、 C1D、 E、 Fは異
なったバイトである。ZLストリング探索は、 AB
、 BC。
なったバイトである。ZLストリング探索は、 AB
、 BC。
CD% DE% EF、BCD% DEFのストリング
をストリングテーブルに付は加え、このアルゴリズムを
用いて出力され得る長さ2又はそれ以上のストリングは
、上で示した時点ではBC及びDEのみであることに注
意しなければならない。。実際にはストリングBCDE
Fは既に入力に現れている。従って、第2のBCDEF
ストリングは最初のBCDEFに戻って参照されるのが
理想であるが、実際にはこれは行われない。
をストリングテーブルに付は加え、このアルゴリズムを
用いて出力され得る長さ2又はそれ以上のストリングは
、上で示した時点ではBC及びDEのみであることに注
意しなければならない。。実際にはストリングBCDE
Fは既に入力に現れている。従って、第2のBCDEF
ストリングは最初のBCDEFに戻って参照されるのが
理想であるが、実際にはこれは行われない。
ZLアプローチにとって重大な欠点は、圧縮されたデー
タを保持するためのストリングテーブルが、長いファイ
ルを満たしてしまう傾向にあることである。しかし、テ
ーブルの大きさは増大されることができ、このアプロー
チはストリングを表わすのにより多くのビットを必要と
し、従って、効率が低下するであろう。この欠点を扱う
ための一つのアプローチは、テーブルがいっばいになっ
たときにそのテーブルの全部又は一部を捨てることであ
ろう。アルゴリズムの構造のために、最新に見いだされ
たストリングが最初に捨てられる。
タを保持するためのストリングテーブルが、長いファイ
ルを満たしてしまう傾向にあることである。しかし、テ
ーブルの大きさは増大されることができ、このアプロー
チはストリングを表わすのにより多くのビットを必要と
し、従って、効率が低下するであろう。この欠点を扱う
ための一つのアプローチは、テーブルがいっばいになっ
たときにそのテーブルの全部又は一部を捨てることであ
ろう。アルゴリズムの構造のために、最新に見いだされ
たストリングが最初に捨てられる。
なぜなら、それらは先のストリングに戻って参照するか
らである。しかし、ローカルデータに動的に適合してい
るのは、最新のストリングであり、それらを捨てるのも
また効率的ではない。基本的にはZLストリングは無限
の長さのメモリを有しているので、ファイル内のデータ
のタイプの変更は、もしストリングテーブルがいっばい
であれば、非常なコード化の効率の悪さを引き起こし得
る。
らである。しかし、ローカルデータに動的に適合してい
るのは、最新のストリングであり、それらを捨てるのも
また効率的ではない。基本的にはZLストリングは無限
の長さのメモリを有しているので、ファイル内のデータ
のタイプの変更は、もしストリングテーブルがいっばい
であれば、非常なコード化の効率の悪さを引き起こし得
る。
同時に1より多くの方法を用いる圧縮システムを設計す
ることも可能である。このシステムは、ファイル内でそ
の方法が最も効率的になるように動的に後ろ及び前にス
イッチングする。装置の観点からは、このようなスキー
ムは非常に高価であるかも知れないが(即ち、遅く及び
/又は高価である)、結果として得られる圧縮比率を非
常に高くすることができる。
ることも可能である。このシステムは、ファイル内でそ
の方法が最も効率的になるように動的に後ろ及び前にス
イッチングする。装置の観点からは、このようなスキー
ムは非常に高価であるかも知れないが(即ち、遅く及び
/又は高価である)、結果として得られる圧縮比率を非
常に高くすることができる。
動的に前後にスイッチするこのような一つの方法は、M
acCriskenの特許に開示されている。上述のよ
うに、パイグラムハフマン法は主要な圧縮技術として使
用されている。典型的には、圧縮及び伸張システムは予
め定義された(即ち、統計的に)コードテーブルのセッ
トを用いてスタートする。
acCriskenの特許に開示されている。上述のよ
うに、パイグラムハフマン法は主要な圧縮技術として使
用されている。典型的には、圧縮及び伸張システムは予
め定義された(即ち、統計的に)コードテーブルのセッ
トを用いてスタートする。
おそらく、英語、フランス語及びパスカルンースコード
のためのこのようなテーブルのセットがある。圧縮ユニ
ット(送信機)は、使用されるテーブルの短い記述を最
初に移送又は格納する。伸張ユニット(受信機)はこの
コードを分析し、適切なテーブルを選択する。圧縮の間
に、もし現在のテーブルが十分に機能しないことが決定
されると、送信機は特別の(「エスケープ」)ハフマン
コードを移送する。このコードは、他の特定の予め定義
されたテーブルを選択するか、又は伸張された先のデー
タに基づいて新たなテーブルを計算するかどうかを受信
機に伝える。送信機及び受信機の両方は、同じアルゴリ
ズムを用いてテーブルを計算するので、テーブル全体を
送る必要はないけれども計算を行うのに幾らかの時間が
かかる。ひとたび新たなテーブルが計算されると、以前
と同様に圧縮が行われる。かなりのコンピュータのオー
バーヘッドが存在するけれども、この技術が更に動的ハ
フマンスキームに用いられ得ないという理由は無いこと
に注意しなければならない。
のためのこのようなテーブルのセットがある。圧縮ユニ
ット(送信機)は、使用されるテーブルの短い記述を最
初に移送又は格納する。伸張ユニット(受信機)はこの
コードを分析し、適切なテーブルを選択する。圧縮の間
に、もし現在のテーブルが十分に機能しないことが決定
されると、送信機は特別の(「エスケープ」)ハフマン
コードを移送する。このコードは、他の特定の予め定義
されたテーブルを選択するか、又は伸張された先のデー
タに基づいて新たなテーブルを計算するかどうかを受信
機に伝える。送信機及び受信機の両方は、同じアルゴリ
ズムを用いてテーブルを計算するので、テーブル全体を
送る必要はないけれども計算を行うのに幾らかの時間が
かかる。ひとたび新たなテーブルが計算されると、以前
と同様に圧縮が行われる。かなりのコンピュータのオー
バーヘッドが存在するけれども、この技術が更に動的ハ
フマンスキームに用いられ得ないという理由は無いこと
に注意しなければならない。
ハフマンのコード化に加えて、MacCrtskenは
第2のストリングに基づく圧縮方法を用いている。
第2のストリングに基づく圧縮方法を用いている。
送信機及び受信機の両方が、最新の移送された入力バイ
トのa歴バッフ1を保持する。それぞれの新たな入力バ
イト(A)に対してパイグラムハフマンコートカ生成さ
れるが、ハツシングスキームを用いて履歴内の次の3つ
の入力バイト(ABC)によって表現されるストリング
を見つける試みもまた行われる。ハツシュが3バイトス
トリング上で行われ、ハツシュリスト内の古い入力の廃
棄を可能とするために、2重にリンクされたハツシュリ
ストが維持される。もしストリングが見つかると、スト
リングが続くことを示すために特別のハフマンエスケー
プコードが生成され、履歴バッファ内のストリングの長
さとオフセットが送られる。
トのa歴バッフ1を保持する。それぞれの新たな入力バ
イト(A)に対してパイグラムハフマンコートカ生成さ
れるが、ハツシングスキームを用いて履歴内の次の3つ
の入力バイト(ABC)によって表現されるストリング
を見つける試みもまた行われる。ハツシュが3バイトス
トリング上で行われ、ハツシュリスト内の古い入力の廃
棄を可能とするために、2重にリンクされたハツシュリ
ストが維持される。もしストリングが見つかると、スト
リングが続くことを示すために特別のハフマンエスケー
プコードが生成され、履歴バッファ内のストリングの長
さとオフセットが送られる。
オフセ・ットは10ビツトにコードされ、長さは3−1
8バイトの長さを表現する4ビツトにコードされる。し
かし、このようなストリングが送られる前に、圧縮ユニ
ットはストリング内の全てのバイトに対するハフマンコ
ードを発生し、そのハフマンコードの大きさをストリン
グビットの大きさと比較する。典型的にはハフマンスト
リングエスケープコードは4ビ・ノドであり、ストリン
グを表わすのに19ビツトを要する。2つの量の小さい
方が送られる。
8バイトの長さを表現する4ビツトにコードされる。し
かし、このようなストリングが送られる前に、圧縮ユニ
ットはストリング内の全てのバイトに対するハフマンコ
ードを発生し、そのハフマンコードの大きさをストリン
グビットの大きさと比較する。典型的にはハフマンスト
リングエスケープコードは4ビ・ノドであり、ストリン
グを表わすのに19ビツトを要する。2つの量の小さい
方が送られる。
MacCriskenストリング法は、Zlv−Lem
pel法のストリングテーブルは決していっばいになら
ないという問題点を避けているということに注意しなけ
ればならない。なぜなら、古い入力はハツシュリストか
ら除くことによって廃棄されるからである。
pel法のストリングテーブルは決していっばいになら
ないという問題点を避けているということに注意しなけ
ればならない。なぜなら、古い入力はハツシュリストか
ら除くことによって廃棄されるからである。
従って、最新の(lキロバイト以内)のストリングのみ
がテーブルを占める。また、原理的には全てのマツチン
グストリングが見いだされるので、それは「どん欲」で
はない。実際には、ストリング探索の長さの制限が課さ
れている。これに加えて、MacCrisken法は2
つの圧縮アルゴリズムを同時に効率的に行い、従って、
コンピュータのオバーヘッドが非常に高くなるので、コ
ンピュータで行うには非効率的である。
がテーブルを占める。また、原理的には全てのマツチン
グストリングが見いだされるので、それは「どん欲」で
はない。実際には、ストリング探索の長さの制限が課さ
れている。これに加えて、MacCrisken法は2
つの圧縮アルゴリズムを同時に効率的に行い、従って、
コンピュータのオバーヘッドが非常に高くなるので、コ
ンピュータで行うには非効率的である。
(課題を解決するための手段)
本発明は、磁気ディスク又はテープ記憶装置のようなデ
ジタル記憶装置の容量を増大させる、圧縮/伸張システ
ムである。圧縮方法は完全に適合性があり、予め初期化
されたコード化テーブルを必要とせず、コンピュータフ
ァイルのようなバイトに適応したキャラクタストリーム
を最適化する。
ジタル記憶装置の容量を増大させる、圧縮/伸張システ
ムである。圧縮方法は完全に適合性があり、予め初期化
されたコード化テーブルを必要とせず、コンピュータフ
ァイルのようなバイトに適応したキャラクタストリーム
を最適化する。
それは従来技術に見られる多くの困難を克服し、上述で
議論した先行する技術の何れよりも、より速い速度でよ
り高い圧縮率を達成する。
議論した先行する技術の何れよりも、より速い速度でよ
り高い圧縮率を達成する。
圧縮の間に、先に処理されたバイトの履歴バッファ又は
シフトレジスタアレイが、圧縮装置内に保持される。圧
縮はバイトの繰り返しのストリングをシフトレジスタに
置くことにより連成される。
シフトレジスタアレイが、圧縮装置内に保持される。圧
縮はバイトの繰り返しのストリングをシフトレジスタに
置くことにより連成される。
もし現在検査されているバイトを含むマツチングストリ
ングが見つからなければ、そのバイトは、そのバイトが
「生の」 (即ち、ストリングではない)ことを示す特
別の標識ビットの後で出カデータストリームに付加され
る。もしこのようなストリングが見つかると、その長さ
とシフトレジスタ内の相対的位置がコード化され、(圧
縮)データストリームの出力に付加される。ストリング
の長さ及び位置は、たとえ2バイトの繰り返しのストリ
ングでも、1: lより良い圧縮比率を生じるようにコ
ード化される。言い換えれば、単一の「生の」バイトに
於てのみ、データの「拡張」を生じる。
ングが見つからなければ、そのバイトは、そのバイトが
「生の」 (即ち、ストリングではない)ことを示す特
別の標識ビットの後で出カデータストリームに付加され
る。もしこのようなストリングが見つかると、その長さ
とシフトレジスタ内の相対的位置がコード化され、(圧
縮)データストリームの出力に付加される。ストリング
の長さ及び位置は、たとえ2バイトの繰り返しのストリ
ングでも、1: lより良い圧縮比率を生じるようにコ
ード化される。言い換えれば、単一の「生の」バイトに
於てのみ、データの「拡張」を生じる。
ストリングの長さのコード化は、可変長であり、ストリ
ングの位置もまた可変長のフィールドとしてコード化さ
れる。従って、本発明は可変長のストリングを可変長の
出力コードにマツプする。
ングの位置もまた可変長のフィールドとしてコード化さ
れる。従って、本発明は可変長のストリングを可変長の
出力コードにマツプする。
本発明の履歴アレイの具体例に於ては、効率的なストリ
ング探索を行うために、ハツシュテーブルが履歴バッフ
ァと組み合わせて使用され、ノ\ヅシュ「リフレッシュ
」法が、ハツシュデータ構造の維持に必要とされるコン
ピュータのオーバーヘッドを最小にするために使用され
る。これらの技術は、現在利用できる集積回路技術を用
いた数メガバイ1フ秒にものぼる入力速度でも、入力デ
ータの高速圧縮を可能にしている。
ング探索を行うために、ハツシュテーブルが履歴バッフ
ァと組み合わせて使用され、ノ\ヅシュ「リフレッシュ
」法が、ハツシュデータ構造の維持に必要とされるコン
ピュータのオーバーヘッドを最小にするために使用され
る。これらの技術は、現在利用できる集積回路技術を用
いた数メガバイ1フ秒にものぼる入力速度でも、入力デ
ータの高速圧縮を可能にしている。
以下は本発明の二つの例のより詳細な記述であり、入力
データキャラクタストリングを、可変長にコード化され
たデータストリングに変換するための方法及び装置を含
んでいる。データ圧縮システムはシフトレジスタ手段又
は履歴アレイ手段を有している。シフトレジスタ手段又
は履歴アレイ手段を組み込んだ方法は、以下のステップ
を有している。
データキャラクタストリングを、可変長にコード化され
たデータストリングに変換するための方法及び装置を含
んでいる。データ圧縮システムはシフトレジスタ手段又
は履歴アレイ手段を有している。シフトレジスタ手段又
は履歴アレイ手段を組み込んだ方法は、以下のステップ
を有している。
第1のステップは、履歴アレイ手段又はシフトレジスタ
内で、入カデータストリームにマツチした最長のデータ
ストリングを探索することを含んでいる。もしこのよう
なマツチングデータストリングが履歴アレイ手段又はシ
フトレジスタ手段内に見つかれば、第2のステップは、
履歴アレイ手段又はシフトレジスタ手段内で見つかった
マツチングデータストリングをコード化することを含む
。
内で、入カデータストリームにマツチした最長のデータ
ストリングを探索することを含んでいる。もしこのよう
なマツチングデータストリングが履歴アレイ手段又はシ
フトレジスタ手段内に見つかれば、第2のステップは、
履歴アレイ手段又はシフトレジスタ手段内で見つかった
マツチングデータストリングをコード化することを含む
。
これはマツチングデータストリングが見つかったことを
示す標識とストリング置換コードとを、可変長にコード
化されたデータストリームに付加することにより行われ
る。ストリング置換コードは、マツチングデータストリ
ングの長さの可変長指示子と、マツチングデータストリ
ングのff歴アレイ手段内の位置を指すポインタとを含
んでいる。
示す標識とストリング置換コードとを、可変長にコード
化されたデータストリームに付加することにより行われ
る。ストリング置換コードは、マツチングデータストリ
ングの長さの可変長指示子と、マツチングデータストリ
ングのff歴アレイ手段内の位置を指すポインタとを含
んでいる。
もしマツチング入力データストリングが履歴アレイ手段
又はシフトレジスタ手段内に見つからなければ、第2の
ステップは入カデータストリームの最初のキャラクタを
コード化するステップを含み、これはマツチングデータ
ストリングが見つからなかったこと、及び入カデータス
トリームの最初のキャラクタが可変長にコード化された
データストリームに付加されていることを示す「生の」
データ標識を、可変長にコード化されたデータストリー
ムに付加することにより行われる。このように、入カデ
ータストリームは可変長にコード化されたデータストリ
ームに変換される。
又はシフトレジスタ手段内に見つからなければ、第2の
ステップは入カデータストリームの最初のキャラクタを
コード化するステップを含み、これはマツチングデータ
ストリングが見つからなかったこと、及び入カデータス
トリームの最初のキャラクタが可変長にコード化された
データストリームに付加されていることを示す「生の」
データ標識を、可変長にコード化されたデータストリー
ムに付加することにより行われる。このように、入カデ
ータストリームは可変長にコード化されたデータストリ
ームに変換される。
履歴アレイ手段又はシフトレジスタ手段内で最長のマツ
チングデータストリングを探索するステップは、更に、
履歴アレイ手段への最長のマツチングデータストリング
に対する予め決められた数の照会に探索を制限するステ
ップを含み、又はシフトレジスタ手段の場合には、荊記
入カデータストリームの入力データキャラクタの予め決
められた量に、探索を制限するステップを含む。
チングデータストリングを探索するステップは、更に、
履歴アレイ手段への最長のマツチングデータストリング
に対する予め決められた数の照会に探索を制限するステ
ップを含み、又はシフトレジスタ手段の場合には、荊記
入カデータストリームの入力データキャラクタの予め決
められた量に、探索を制限するステップを含む。
シフトレジスタを使用する具体例は非常に反復的なので
、VLSNの装置に非常に向いている。
、VLSNの装置に非常に向いている。
シフトレジスタアレイの比較の殆ど毎回の操作が、最大
のクロック速度にパイプライン化され得、従って、効率
が最大となる。例えば、優先順位コード化は、望まれる
性能を達成するのに必要な高次元までパイプライン化さ
れ得る。パイプライン化のこの能力は重要である。なぜ
なら、装置アレイに要求される大きなトランジスタ数は
、そのアレイが数個の集積回路にわたらざるを得ないか
らである。
のクロック速度にパイプライン化され得、従って、効率
が最大となる。例えば、優先順位コード化は、望まれる
性能を達成するのに必要な高次元までパイプライン化さ
れ得る。パイプライン化のこの能力は重要である。なぜ
なら、装置アレイに要求される大きなトランジスタ数は
、そのアレイが数個の集積回路にわたらざるを得ないか
らである。
ハツシング関数を実行するために、履歴アレイ手段を用
いるデータ圧縮システムは、履歴アレイポインタ、ハツ
シュテーブル手段、及びオフセットアレイ手段を含む、
あるハツシュデータ構造を含んでいる。H歴アレイポイ
ンタは履歴アレイ手段の最後のエントリを示している。
いるデータ圧縮システムは、履歴アレイポインタ、ハツ
シュテーブル手段、及びオフセットアレイ手段を含む、
あるハツシュデータ構造を含んでいる。H歴アレイポイ
ンタは履歴アレイ手段の最後のエントリを示している。
ハッシュテーブル手段は複数のエントリを有し、バッジ
)テーブルの名エントリは、履歴アレイ手段を指すポイ
ンタを格納する。オフセットアレイ手段は複数のエント
リを有し、各エントリは履歴アレイ手段のエントリの一
つへのリンクを供給する。ハッ/コ関数を果たすための
ステップは、次のステップを含んでいる。
)テーブルの名エントリは、履歴アレイ手段を指すポイ
ンタを格納する。オフセットアレイ手段は複数のエント
リを有し、各エントリは履歴アレイ手段のエントリの一
つへのリンクを供給する。ハッ/コ関数を果たすための
ステップは、次のステップを含んでいる。
最初に、ハツシュテーブル手段のエントリの一つを指す
ポインタを供給するハ・7シング関数の結果を得ること
。次に、ハツシング関数の結果によってfW示されてい
るバッジ5テーブルのエントリに格納されたポインタを
得ること。次に、履歴アレイポインタとハツシュテーブ
ル手段から読み取られたポインタとの間の差を計算し、
その差を履歴アレイポインタによって指示されているオ
フセットアレイのエントリに格納すること。最後に、履
歴アレイポインタをハッシコ関数によって指示されてい
るハッシュテーブルのエントリに格納すること。
ポインタを供給するハ・7シング関数の結果を得ること
。次に、ハツシング関数の結果によってfW示されてい
るバッジ5テーブルのエントリに格納されたポインタを
得ること。次に、履歴アレイポインタとハツシュテーブ
ル手段から読み取られたポインタとの間の差を計算し、
その差を履歴アレイポインタによって指示されているオ
フセットアレイのエントリに格納すること。最後に、履
歴アレイポインタをハッシコ関数によって指示されてい
るハッシュテーブルのエントリに格納すること。
アレイ を いた アレイの
また、履歴アレイ手段を用いた本発明のH1歴アレイの
具体例は、リフレッシュ機能を含んでいる。
具体例は、リフレッシュ機能を含んでいる。
リフレッシー機能は、各エントリのポインタが予め決め
られた量だけJiIFfAポインタと異なるかどうか決
定するために、ハッシュテーブルのエントリに格納され
たポインタを周期的に調べる。もしそのポインタと履歴
アレイポインタとの差が予め決められた量より大きけれ
ば、ハツシュテーブルのエントリはそのエントリを再び
初期化する無効な値に置き換えられる。
られた量だけJiIFfAポインタと異なるかどうか決
定するために、ハッシュテーブルのエントリに格納され
たポインタを周期的に調べる。もしそのポインタと履歴
アレイポインタとの差が予め決められた量より大きけれ
ば、ハツシュテーブルのエントリはそのエントリを再び
初期化する無効な値に置き換えられる。
これに加えて、この履歴アレイの具体例は、ノ\プシコ
デー・プルの全てのエントリを、そのテーブルを効率的
に初期化する無効値で効率的に置き換える初期化ルーチ
ンを供給する。
デー・プルの全てのエントリを、そのテーブルを効率的
に初期化する無効値で効率的に置き換える初期化ルーチ
ンを供給する。
また、履歴アレイ手段を用いた本発明の履歴アレイの具
体例は、圧縮ユニットの出力である可変長にコード化さ
れたデータストリームをデコードするための方法を含ん
でいる。分解のための方法は、以下のステップノブを含
んでいる。
体例は、圧縮ユニットの出力である可変長にコード化さ
れたデータストリームをデコードするための方法を含ん
でいる。分解のための方法は、以下のステップノブを含
んでいる。
最初に、可変長にコード化されたデータストリームが独
立した部分に分けて分析され、各独立部分は4jA識の
一つで始まる。次に、各独立部分の標識が評価され、4
M識が生データ標識であるかコード化されたマツチング
データストリングを示す標識であるかが決定される。標
識がコード化されたマツチングデータストリングがある
ことを示す場合には、次のステップは、長さ指示子と、
マツチングデータストリングを生成するための置換コー
ドのポインタとを分析することを含む。このように、最
初の入カデータストリームの部分が再構築される。他方
、標識が生データである場合には、コード化された入カ
データストリームの最初のキャラクタが得られ、このよ
うにして最初のデータストリームが再構築される。
立した部分に分けて分析され、各独立部分は4jA識の
一つで始まる。次に、各独立部分の標識が評価され、4
M識が生データ標識であるかコード化されたマツチング
データストリングを示す標識であるかが決定される。標
識がコード化されたマツチングデータストリングがある
ことを示す場合には、次のステップは、長さ指示子と、
マツチングデータストリングを生成するための置換コー
ドのポインタとを分析することを含む。このように、最
初の入カデータストリームの部分が再構築される。他方
、標識が生データである場合には、コード化された入カ
データストリームの最初のキャラクタが得られ、このよ
うにして最初のデータストリームが再構築される。
シフトレジスタを いる第2の具
シフトレジスタ手段を用いる第2の具体例は、ハツシン
グ関数の具体例より高い効率を有し、回路のコストを最
小にするために集積回路技術を用いている。これに加え
て、この具体例は最長のマツチングストリングは常にシ
フトレジスタアレイに見いだされるということを保証す
る。この履歴アレイの具体例は、探索が高速のパイプラ
イン方式で行われることを可能にする。より詳細には、
入力データストリームの入力データキャラクタは、シフ
トレジスタの各エントリに同時伝送される。
グ関数の具体例より高い効率を有し、回路のコストを最
小にするために集積回路技術を用いている。これに加え
て、この具体例は最長のマツチングストリングは常にシ
フトレジスタアレイに見いだされるということを保証す
る。この履歴アレイの具体例は、探索が高速のパイプラ
イン方式で行われることを可能にする。より詳細には、
入力データストリームの入力データキャラクタは、シフ
トレジスタの各エントリに同時伝送される。
入力データキャラクタは、シフトレジスタの各エントリ
の格納されたキャラクタと比較される。もし入力データ
キャラクタがシフトレジスタ内の格納されたデータキャ
ラクタの何れかにマツチすれば、マツチした結果が現れ
る。このプロセスは各入力データキャラクタに対して、
最長のマ・ノチングデータストリングが見いだされるま
で行われる。
の格納されたキャラクタと比較される。もし入力データ
キャラクタがシフトレジスタ内の格納されたデータキャ
ラクタの何れかにマツチすれば、マツチした結果が現れ
る。このプロセスは各入力データキャラクタに対して、
最長のマ・ノチングデータストリングが見いだされるま
で行われる。
シフトレジスタ手段の各エントリに対するマツチした結
果は蓄積され維持される。これに加えて、最長のマツチ
ングストリングの長さに沿った最長のマツチングストリ
ングのエントリの位置が格納される。次に、エントリの
位置及び長さが、それによって圧縮比率を得るためにコ
ード化される。
果は蓄積され維持される。これに加えて、最長のマツチ
ングストリングの長さに沿った最長のマツチングストリ
ングのエントリの位置が格納される。次に、エントリの
位置及び長さが、それによって圧縮比率を得るためにコ
ード化される。
また、シフトレジスタ手段を用いる第2の具体例は、圧
縮ユニットの出力である可変長にコード化されたデータ
ストリームをデコードするための方法を含んでいる。分
解の方法は以下のステップを含んでいる。最初に、可変
長にコード化されたデータストリームが独立した部分に
分けて分析され、各独立部分は標識の一つで始まる。次
に、各独立部分の標識が評価され、標識が生データ標識
であるかコード化されたマツチングデータストリングを
示す標識であるかが決定される。標識がコード化された
マツチングデータストリングがあることを示す場合には
、次のステップは、長さ指示子と、マツチングデータス
トリングを生成するための置換コードのポインタとを分
析することを含む。このように、最初の入カデータスト
リームの部分が再構築される。他方、標識が生データで
ある場合には、コード化された入カデータストリームの
最初のキャラクタが得られ、このようにして最初のデー
タストリームが再構築される。
縮ユニットの出力である可変長にコード化されたデータ
ストリームをデコードするための方法を含んでいる。分
解の方法は以下のステップを含んでいる。最初に、可変
長にコード化されたデータストリームが独立した部分に
分けて分析され、各独立部分は標識の一つで始まる。次
に、各独立部分の標識が評価され、標識が生データ標識
であるかコード化されたマツチングデータストリングを
示す標識であるかが決定される。標識がコード化された
マツチングデータストリングがあることを示す場合には
、次のステップは、長さ指示子と、マツチングデータス
トリングを生成するための置換コードのポインタとを分
析することを含む。このように、最初の入カデータスト
リームの部分が再構築される。他方、標識が生データで
ある場合には、コード化された入カデータストリームの
最初のキャラクタが得られ、このようにして最初のデー
タストリームが再構築される。
(以下余白)
(実施例)
本発明を実施例について以下に説明する。
■、 ユニットの
第18図、第1b図、第1c図及び第1d図に本発明に
よる圧縮ユニット4及び伸張ユニット6を示す。ユニッ
ト4及び6は、ハードウェアモジュールであっても、ソ
フトウェアサブルーチンであってもよい。しかし、履歴
アレイを用いた第1の実施例及びシフトレジスタ手段を
包含する第2の実施例に於いては、圧縮ユニット4及び
伸張ユニット6は1個の集積回路に組み入れられる。こ
の集積回路は、マイクロプロセッサによって制御される
データ記憶システム又はデータ伝送システムの一部とし
て用いられる。第1a図及び第1c図に於いて、入カデ
ータストリーム8は、ホストlOと称されるデータ送信
装置から圧縮ユニット4に入力される。コード化され、
圧縮されたデータストリーム12は装置(device
)14と称されるデータ受信装置へ伝送される。
よる圧縮ユニット4及び伸張ユニット6を示す。ユニッ
ト4及び6は、ハードウェアモジュールであっても、ソ
フトウェアサブルーチンであってもよい。しかし、履歴
アレイを用いた第1の実施例及びシフトレジスタ手段を
包含する第2の実施例に於いては、圧縮ユニット4及び
伸張ユニット6は1個の集積回路に組み入れられる。こ
の集積回路は、マイクロプロセッサによって制御される
データ記憶システム又はデータ伝送システムの一部とし
て用いられる。第1a図及び第1c図に於いて、入カデ
ータストリーム8は、ホストlOと称されるデータ送信
装置から圧縮ユニット4に入力される。コード化され、
圧縮されたデータストリーム12は装置(device
)14と称されるデータ受信装置へ伝送される。
同様に、Wllデアレイ用いた第1の実施例を示す第1
b図及びシフトレジスタ手段を用いた第2の実施例を示
す第1d図に於いて、伸張ユニット6は、装置14(こ
こではデータ送信装置)から圧縮されたデータストリー
ムを受は取り、元の圧縮されていないデータストリーム
20を再構成し、そのデータストリームをホスト10(
ここではデータ受信装置)へ出力する。履歴アレイを用
いた第1の実施例及びシフトレジスタ手段を用いた第2
の実施例に於いて、伸張及び圧縮は同時には行われない
。しかし、他の実施態様に於いては伸張及び圧縮は同時
に行われ得る。
b図及びシフトレジスタ手段を用いた第2の実施例を示
す第1d図に於いて、伸張ユニット6は、装置14(こ
こではデータ送信装置)から圧縮されたデータストリー
ムを受は取り、元の圧縮されていないデータストリーム
20を再構成し、そのデータストリームをホスト10(
ここではデータ受信装置)へ出力する。履歴アレイを用
いた第1の実施例及びシフトレジスタ手段を用いた第2
の実施例に於いて、伸張及び圧縮は同時には行われない
。しかし、他の実施態様に於いては伸張及び圧縮は同時
に行われ得る。
履歴アレイを用いた実施例に於ける全てのデータ構造(
例えば、履歴アレイ102、ハツシュテーブル100、
及びオフセットアレイ104(第4図))は、別の外部
のRAMチップ16内に保持されている。RAM16を
圧縮及び伸張用チップに含めることも可能であるが、現
在の技術では、RAM16及び圧縮/伸張ユニット4.
6を共に包含するチップは非常に高くつくであろう。履
歴アレイを用いた実施例に於いては、RAM16は少な
くとも16にバイトのデータ容置を有する必要がある。
例えば、履歴アレイ102、ハツシュテーブル100、
及びオフセットアレイ104(第4図))は、別の外部
のRAMチップ16内に保持されている。RAM16を
圧縮及び伸張用チップに含めることも可能であるが、現
在の技術では、RAM16及び圧縮/伸張ユニット4.
6を共に包含するチップは非常に高くつくであろう。履
歴アレイを用いた実施例に於いては、RAM16は少な
くとも16にバイトのデータ容置を有する必要がある。
RAM 16の構成は、16KX8ビノトであっても8
KX16ビツトであってもよい。
KX16ビツトであってもよい。
履歴アレイを用いた実施例では又、より大きいハソシュ
テーブル(第4図〉を用いて能力を向上させることを考
纜すると、32にバイト塩のRAM16を用いることが
できる。履歴アレイを用いた実施例に於いて具体化され
る好ましいデータ構造のより詳細な説明は、そのような
データ構造を構[、保守する圧縮ユニットについての以
下での議論の中で与えられる。シフトレジスタ手段を用
いた実施例の構成では、外部RAMは使用されない。
テーブル(第4図〉を用いて能力を向上させることを考
纜すると、32にバイト塩のRAM16を用いることが
できる。履歴アレイを用いた実施例に於いて具体化され
る好ましいデータ構造のより詳細な説明は、そのような
データ構造を構[、保守する圧縮ユニットについての以
下での議論の中で与えられる。シフトレジスタ手段を用
いた実施例の構成では、外部RAMは使用されない。
以下で議論される全ての数値パラメータ(例えば、ME
MSIZE、16ビツトHPTPサイズ等)の値が本発
明の圧縮、伸張技術に於ける基本的な概念に影響を及ぼ
すことなく変更可能であることは、当業者には理解され
るであろう。
MSIZE、16ビツトHPTPサイズ等)の値が本発
明の圧縮、伸張技術に於ける基本的な概念に影響を及ぼ
すことなく変更可能であることは、当業者には理解され
るであろう。
2、 アレイを いた に けるコード量感
第2図に本発明の履歴アレイを用いた実施例のコード構
成を示す。本実施例に於けるコード化方法は、出カデー
タストリームが「生(raw)J又は非圧縮であるか、
あるいは圧縮されたものであるかを示すためのタグビッ
トを用いる。非圧縮であることは1個の「0」ビットで
示され、第2図に参照符号19で示されるように、0B
BBBBBBBはコード化された「生」の8ビツトのバ
イトである。圧縮が行われたことは1個の「1」ビット
で示され、第2図に参照符号21で示されるように、「
1 (オフセット)(長さ)」は履歴バソファ内で「オ
フセット」だけ戻った位置にあるストリングである。本
実施例では、履歴バッファ内でのオフセットのコード化
又は戻りのバイト数は、第2図に参照符号23で示すよ
うに、22i!Iりの形式の一方をとる。7ビツトを有
する短い形式では、1〜127バイトのオフセットが発
生される。他方、11ビツトを有する長い形式では、1
〜2047バイトのオフセットが発生される。
成を示す。本実施例に於けるコード化方法は、出カデー
タストリームが「生(raw)J又は非圧縮であるか、
あるいは圧縮されたものであるかを示すためのタグビッ
トを用いる。非圧縮であることは1個の「0」ビットで
示され、第2図に参照符号19で示されるように、0B
BBBBBBBはコード化された「生」の8ビツトのバ
イトである。圧縮が行われたことは1個の「1」ビット
で示され、第2図に参照符号21で示されるように、「
1 (オフセット)(長さ)」は履歴バソファ内で「オ
フセット」だけ戻った位置にあるストリングである。本
実施例では、履歴バッファ内でのオフセットのコード化
又は戻りのバイト数は、第2図に参照符号23で示すよ
うに、22i!Iりの形式の一方をとる。7ビツトを有
する短い形式では、1〜127バイトのオフセットが発
生される。他方、11ビツトを有する長い形式では、1
〜2047バイトのオフセットが発生される。
短いオフセット形式と長いオフセット形式とは、1gの
ビットで区別される。即ち、rlJは短い形式を示し、
「0」は長い形式を示す。本発明で特別に用いされてい
る長さのコード構成を、第2図のテーブル25に示す。
ビットで区別される。即ち、rlJは短い形式を示し、
「0」は長い形式を示す。本発明で特別に用いされてい
る長さのコード構成を、第2図のテーブル25に示す。
テーブル25の先頭から見ていくと、2バイトの長さは
、第2図に参照符号22で示すように、値roOJを有
する2ビツトにコード化される。同様の手法で、3バイ
ト及び4バイトの長さのコード化の結果は、値「Ol」
を有する2ビノト(第2図の参照符号24)及び値「1
0」を有する2ビツト(第2図の参照符号26)でそれ
ぞれ表される。5バイトから7バイトまでの長さは[、
xooJから[1110」までの値を有する4ビツトで
表される(第2図の参照符号28〜32)。8バイトか
ら22バイトまでの長さは、rll 11 0000
Jからrll、 11 1110Jまでの値を有する
8ビツトで表される。22バイト超の長さについては、
次の23バイトから37バイトまでの長さは12ビノト
で表され、以後、同様にしてビノト数が増大してゆく。
、第2図に参照符号22で示すように、値roOJを有
する2ビツトにコード化される。同様の手法で、3バイ
ト及び4バイトの長さのコード化の結果は、値「Ol」
を有する2ビノト(第2図の参照符号24)及び値「1
0」を有する2ビツト(第2図の参照符号26)でそれ
ぞれ表される。5バイトから7バイトまでの長さは[、
xooJから[1110」までの値を有する4ビツトで
表される(第2図の参照符号28〜32)。8バイトか
ら22バイトまでの長さは、rll 11 0000
Jからrll、 11 1110Jまでの値を有する
8ビツトで表される。22バイト超の長さについては、
次の23バイトから37バイトまでの長さは12ビノト
で表され、以後、同様にしてビノト数が増大してゆく。
テーブル25に示される長さのコード構成の利点は、以
下で議論する圧縮方法の中でピットストリングの長さの
コード化を行うための効率的な手続きを可能にすること
にある。
下で議論する圧縮方法の中でピットストリングの長さの
コード化を行うための効率的な手続きを可能にすること
にある。
長さ及びオフセットのコード化のために、様々なコード
化方式が用いられてきたが、このようなアプローチによ
って得られる圧縮比は、本実施例によるものに非常に近
い。
化方式が用いられてきたが、このようなアプローチによ
って得られる圧縮比は、本実施例によるものに非常に近
い。
第3図に、第2図の圧縮機構を用いた場合の単純な結果
のテーブルを示す。このテーブルは3個の列に分割され
ている。第1列75は入力バイトストリームを示してい
る。第2列77はコード化された出力ストリームである
。最後の第3列79はコメントを与えている。コード化
された出力ビットストリームの各行には、参照符号76
〜86が付加されている。入力バイトストリーム75(
ABAAAAAACABA)を圧縮するための基本的な
操作は次の通りである。圧縮は、入力バイトストリーム
75の中でマツチするバイトストリングを見つけ出すこ
とによって達成される。この機構は、シフトレジスタを
用いた実施例に於いても用いられる。本実施例に於いて
は、効率的なハツシュ探索を行うために、第4図に示す
ハツシュ探索が用いられている。第4図に示す構造及び
ハツシュ探索のより詳細な議論は、後に行う。本実施例
に於いては、2バイト以上の長さを有するバイトストリ
ームに対して圧縮が生じる。第1の入力バイトが圧縮ユ
ニット4によって受は取られると、該第1の入力バイト
にマツチする他の2バイトストリングが過去の履歴中に
存在したか否かを判定するための探索が行われる。第1
の入力バイトは以前の履歴を有していないキャラクタr
AJ(第3図の参照符号76)であり、従って、この第
1のバイトについては、第3図に参照符号76及び77
で示すように、8ビツトのバイトが、「生」 く又は非
圧縮)であることを示すタグピット「0」の後でコード
化された出力ストリームに追加される。
のテーブルを示す。このテーブルは3個の列に分割され
ている。第1列75は入力バイトストリームを示してい
る。第2列77はコード化された出力ストリームである
。最後の第3列79はコメントを与えている。コード化
された出力ビットストリームの各行には、参照符号76
〜86が付加されている。入力バイトストリーム75(
ABAAAAAACABA)を圧縮するための基本的な
操作は次の通りである。圧縮は、入力バイトストリーム
75の中でマツチするバイトストリングを見つけ出すこ
とによって達成される。この機構は、シフトレジスタを
用いた実施例に於いても用いられる。本実施例に於いて
は、効率的なハツシュ探索を行うために、第4図に示す
ハツシュ探索が用いられている。第4図に示す構造及び
ハツシュ探索のより詳細な議論は、後に行う。本実施例
に於いては、2バイト以上の長さを有するバイトストリ
ームに対して圧縮が生じる。第1の入力バイトが圧縮ユ
ニット4によって受は取られると、該第1の入力バイト
にマツチする他の2バイトストリングが過去の履歴中に
存在したか否かを判定するための探索が行われる。第1
の入力バイトは以前の履歴を有していないキャラクタr
AJ(第3図の参照符号76)であり、従って、この第
1のバイトについては、第3図に参照符号76及び77
で示すように、8ビツトのバイトが、「生」 く又は非
圧縮)であることを示すタグピット「0」の後でコード
化された出力ストリームに追加される。
入力バイトストリーム中の次の入力バイトはキャラクタ
rBJである。この時点では、バイトストリーム中の他
の唯一のバイトはマツチしない(履歴はキャラクタrA
Jを有している)ため、第3図に参照符号78及び77
で示すように、キャラクタrBJのためのバイト及び「
生jバイト標識(タグビノト)が出力される。入力スト
リーム75中の次の入力バイトはキャラクタrAJであ
る。本実施例に於いては2バイト以上のバイトストリン
グのみが圧縮されるため、第3図に参照符号80で示す
ように、キャラクタrAJのためのバイトは非圧縮のま
ま、生のデータバイトとして出力される。しかし、次の
入力バイト(キャラクタ「A」)が出現すると、2バイ
トのストリングが見いだされる。圧縮ユニノド4は長さ
2のマツチを与え、入力バイトストリームの引き続くバ
イトを比較する。次の入力バイトは以前のバイト(例え
ば、キャラクタ「A」)にマツチするので、マツチの長
さがインクリメントされ、ストリングマツチが「拡張コ
される。この手順はキャラクタrAJを有する次の4個
の入力バイトについて継続される。第3図の行82に示
すように、キャラクタ列rAAAAAAJのコード化さ
れたビットストリングは、 rll 000000
1 1100」である。コード化されたストリングの
第1ビツトは圧縮コード化モードを示す「1」である。
rBJである。この時点では、バイトストリーム中の他
の唯一のバイトはマツチしない(履歴はキャラクタrA
Jを有している)ため、第3図に参照符号78及び77
で示すように、キャラクタrBJのためのバイト及び「
生jバイト標識(タグビノト)が出力される。入力スト
リーム75中の次の入力バイトはキャラクタrAJであ
る。本実施例に於いては2バイト以上のバイトストリン
グのみが圧縮されるため、第3図に参照符号80で示す
ように、キャラクタrAJのためのバイトは非圧縮のま
ま、生のデータバイトとして出力される。しかし、次の
入力バイト(キャラクタ「A」)が出現すると、2バイ
トのストリングが見いだされる。圧縮ユニノド4は長さ
2のマツチを与え、入力バイトストリームの引き続くバ
イトを比較する。次の入力バイトは以前のバイト(例え
ば、キャラクタ「A」)にマツチするので、マツチの長
さがインクリメントされ、ストリングマツチが「拡張コ
される。この手順はキャラクタrAJを有する次の4個
の入力バイトについて継続される。第3図の行82に示
すように、キャラクタ列rAAAAAAJのコード化さ
れたビットストリングは、 rll 000000
1 1100」である。コード化されたストリングの
第1ビツトは圧縮コード化モードを示す「1」である。
コード化されたビットストリング中の次のピットはオフ
セットの短い形式(第2図の参照符号23)が用いられ
ていることを示す。オフセットは1バイトのオフセット
を示すroooooolJであり、長さ「1100Jは
、第2図のテーブル25に示すように、5バイトを示す
。入力バイトストリーム75中の残りのバイトは、上述
したものと同様の戦略を用いてコード化される。
セットの短い形式(第2図の参照符号23)が用いられ
ていることを示す。オフセットは1バイトのオフセット
を示すroooooolJであり、長さ「1100Jは
、第2図のテーブル25に示すように、5バイトを示す
。入力バイトストリーム75中の残りのバイトは、上述
したものと同様の戦略を用いてコード化される。
上述の例では、あるバイトについてマツチがとれなかっ
た場合には、圧縮ユニット4は、入力バイトストリーム
の履歴を遡って、現在の入力バイトまでマツチし、その
入力バイトを含むストリングを探索する。そのような新
たなストリングが見いだされた場合には、マツチの長さ
がインクリメントされ、新たなマ・ソチするストリング
の位置が定められ、記憶される。このストリングマツチ
は従って、「拡張」されている。そのような新たなスト
リングが見いだされない場合、又は余りに多くの先行す
る入力バイトエントリを探索する必要がある場合には、
現在のマツチするストリングが最大のストリングである
と仮定され、そのマツチするストリングが、コード化さ
れた形式又は生のバイト形式で出力される。コード化さ
れた形式では、そのストリングの長さ及び入力バイトス
トリームを保持している履歴中のそのストリングの相対
位置が、出力される(圧縮された)データストリームに
+fi加される。オフセットは、そのストリングの開始
位置からバッファ内のマツチしたバイトまでのバイト数
として計算される。このバイト数は、履歴アレイを用い
た実施例では、lからメモリサイズ(IMEMS I
ZEJ )−1迄の範囲にある。上述したように、長さ
及びオフセットは第2図に示したようにコード化される
。「従来の技術」の章で論じたアプローチとは対照的に
、本実施例に於ける圧縮の手法では、異なるサイズのス
トリングに対して異なる長さのコードが生成されること
に注意されたい。
た場合には、圧縮ユニット4は、入力バイトストリーム
の履歴を遡って、現在の入力バイトまでマツチし、その
入力バイトを含むストリングを探索する。そのような新
たなストリングが見いだされた場合には、マツチの長さ
がインクリメントされ、新たなマ・ソチするストリング
の位置が定められ、記憶される。このストリングマツチ
は従って、「拡張」されている。そのような新たなスト
リングが見いだされない場合、又は余りに多くの先行す
る入力バイトエントリを探索する必要がある場合には、
現在のマツチするストリングが最大のストリングである
と仮定され、そのマツチするストリングが、コード化さ
れた形式又は生のバイト形式で出力される。コード化さ
れた形式では、そのストリングの長さ及び入力バイトス
トリームを保持している履歴中のそのストリングの相対
位置が、出力される(圧縮された)データストリームに
+fi加される。オフセットは、そのストリングの開始
位置からバッファ内のマツチしたバイトまでのバイト数
として計算される。このバイト数は、履歴アレイを用い
た実施例では、lからメモリサイズ(IMEMS I
ZEJ )−1迄の範囲にある。上述したように、長さ
及びオフセットは第2図に示したようにコード化される
。「従来の技術」の章で論じたアプローチとは対照的に
、本実施例に於ける圧縮の手法では、異なるサイズのス
トリングに対して異なる長さのコードが生成されること
に注意されたい。
入力バイトストリームに対するストリング探索操作に多
くの実現方法が存在することが当業者には理解されるで
あろう。特に、マツチするストリングを見いだすために
用いることができるハツシング技法及び探索手法には多
くのものが存在する。
くの実現方法が存在することが当業者には理解されるで
あろう。特に、マツチするストリングを見いだすために
用いることができるハツシング技法及び探索手法には多
くのものが存在する。
様々なハツシング技法についての完全な背景に関しては
、Knuthのrsortjng andSeare
htng、The Art ofComputer
Programmlng (Vol、3)、pp、
506−549 (1973)Jを参照されたい。以下
に、本実施例によって用いられる特別なハツシュ構造の
詳細を述べる。ここで論じられるデータ構造及びアプロ
ーチが選択されたのは、それらによって、圧縮機能のた
めに要求されるRAMサイクルの数が最小化され、従っ
てシステムのスルーブツトが最大化されるからである。
、Knuthのrsortjng andSeare
htng、The Art ofComputer
Programmlng (Vol、3)、pp、
506−549 (1973)Jを参照されたい。以下
に、本実施例によって用いられる特別なハツシュ構造の
詳細を述べる。ここで論じられるデータ構造及びアプロ
ーチが選択されたのは、それらによって、圧縮機能のた
めに要求されるRAMサイクルの数が最小化され、従っ
てシステムのスルーブツトが最大化されるからである。
3、 7レイ を いた のデータとL
第4図を参照して、本実施例のハブシュ構造について述
べる。既に処理された(圧縮された、又は生のデータと
して圧縮されなかった)入力データの最後の2048キ
ヤラクタを包含する履歴アレイ102がRAM16に格
納されている。新たな入力データが圧縮ユニット4(第
1a図)によって受は取られると、本発明のシステムは
、新たな入力データ中の少なくとも2バイトの「ストリ
ング」が履歴アレイ102中のストリングにマツチする
か否かをチエツクする。マツチすれば、この入力データ
のストリングはコード化され、マツチしなければ、該入
力データのストリングは上述したように生のデータとし
て表される。
べる。既に処理された(圧縮された、又は生のデータと
して圧縮されなかった)入力データの最後の2048キ
ヤラクタを包含する履歴アレイ102がRAM16に格
納されている。新たな入力データが圧縮ユニット4(第
1a図)によって受は取られると、本発明のシステムは
、新たな入力データ中の少なくとも2バイトの「ストリ
ング」が履歴アレイ102中のストリングにマツチする
か否かをチエツクする。マツチすれば、この入力データ
のストリングはコード化され、マツチしなければ、該入
力データのストリングは上述したように生のデータとし
て表される。
ハツシュテーブル100は履歴アレイ102中の特定の
ストリングを素早く見いだすために用いられる。ハツシ
ュテーブル100は、履歴アレイへの履歴アレイポイン
タを含む一連のビン(bfn)エントリ106で構成さ
れている。オフセットアレイ104と称されるいま一つ
のデータ構造はハツシュリンクテーブルである。オフセ
ットアレイ104中の各リンクリストの第1の要素は、
特定のハツシュ値に対応するH歴アレイ中の前のエント
リを指し示している。該リンクリスト中の最後の要素(
この要素は無効なポインタであってもよい)はこのハブ
シュ値に関連付けられた最も古いエントリを指し示して
いる。圧縮ユニット4は、各入力バイトが処理された後
にインクリメントされる16ビツトの履歴ポインタHP
TRIO8を維持している。HPTRはOに初期化され
、圧縮ユニブトによって64にバイトが処理された後に
Oに戻る。オフセットアレイ104は実際には単純リン
クリスト(singly 1lnked 1ist
)から構成された2次バッジ−である。ある特定のオフ
セットがMEMS I ZE−MAXSTR,(ここで
MAXSTRは探索されティる最大のストリングである
)よりも大きいか、又はリストの最近のエントリからの
全てのリンクの合計がMEMS I ZE−MAXST
Rよりも大きい場合には、特定のハフシコビン(値〉中
に有効なエントリはもはや存在しない。このようにして
、MEMS I ZE−MAXSTRよりも古いエント
リはバッジコアレイ102の終わりから効果的に「離れ
落ちる(fall off)Jo 本発明のこの点に
より、オフセットアレイ104中の単純リンクリストの
使用を可能にする。単純リンクリストの維持は、二重リ
ンクリストに比べて半分以下のメモリアクセスによって
行うことができる。
ストリングを素早く見いだすために用いられる。ハツシ
ュテーブル100は、履歴アレイへの履歴アレイポイン
タを含む一連のビン(bfn)エントリ106で構成さ
れている。オフセットアレイ104と称されるいま一つ
のデータ構造はハツシュリンクテーブルである。オフセ
ットアレイ104中の各リンクリストの第1の要素は、
特定のハツシュ値に対応するH歴アレイ中の前のエント
リを指し示している。該リンクリスト中の最後の要素(
この要素は無効なポインタであってもよい)はこのハブ
シュ値に関連付けられた最も古いエントリを指し示して
いる。圧縮ユニット4は、各入力バイトが処理された後
にインクリメントされる16ビツトの履歴ポインタHP
TRIO8を維持している。HPTRはOに初期化され
、圧縮ユニブトによって64にバイトが処理された後に
Oに戻る。オフセットアレイ104は実際には単純リン
クリスト(singly 1lnked 1ist
)から構成された2次バッジ−である。ある特定のオフ
セットがMEMS I ZE−MAXSTR,(ここで
MAXSTRは探索されティる最大のストリングである
)よりも大きいか、又はリストの最近のエントリからの
全てのリンクの合計がMEMS I ZE−MAXST
Rよりも大きい場合には、特定のハフシコビン(値〉中
に有効なエントリはもはや存在しない。このようにして
、MEMS I ZE−MAXSTRよりも古いエント
リはバッジコアレイ102の終わりから効果的に「離れ
落ちる(fall off)Jo 本発明のこの点に
より、オフセットアレイ104中の単純リンクリストの
使用を可能にする。単純リンクリストの維持は、二重リ
ンクリストに比べて半分以下のメモリアクセスによって
行うことができる。
しかし、単純リンクリストの使用は、以下で述べるリフ
レッシュハツシュ操作を必要とする。
レッシュハツシュ操作を必要とする。
4、 7レイを いた の
第5a図、第5b図及び第5C図に、本発明の圧縮操作
の詳細なフローチャートを示す。フローチャート(第5
a図、第5b図及び第5C図)の特別なデータバスを示
すハードワイヤード版を第7図に示す。
の詳細なフローチャートを示す。フローチャート(第5
a図、第5b図及び第5C図)の特別なデータバスを示
すハードワイヤード版を第7図に示す。
より詳細には、第5a図に於いて圧縮操作ルーチンはブ
ロック108から出発する。次に、ブロック110に於
いて、初期化ルーチン(第5b図)が呼び出され、第4
図に示すハツシュ構造が初期化される。この操作は典型
的にはシステムの初期化に於いて行われ、1回の「圧縮
」が完了し、新たな圧縮が開始される場合にも繰り返し
行われる必要はない。
ロック108から出発する。次に、ブロック110に於
いて、初期化ルーチン(第5b図)が呼び出され、第4
図に示すハツシュ構造が初期化される。この操作は典型
的にはシステムの初期化に於いて行われ、1回の「圧縮
」が完了し、新たな圧縮が開始される場合にも繰り返し
行われる必要はない。
第5b図のブロック112に於いて、ハツシュポインタ
(HPTR)108が0に設定される。
(HPTR)108が0に設定される。
ブロック114(第5b図)に於いて、コード化されて
いるビットストリングの現在の長さを追跡するための7
7チ長変数(rMATcHLEMJ )が0に設定され
る。次に、ブロック116に於いて、後述するリフレッ
シュカウント変数(rRFSHCNTJ)が12に設定
される。ブロック118に於いて、後述するリフレッシ
ュポインタ変数(rRFsHPTRJ ’)がOに設定
される。次に、ブロック120に於いて、ハッシュテー
ブル100が値HPTR−MEMS I ZEで埋めら
れる。このステップにより、ハツシュテーブル100の
以前の有効な値は効果的に空にされる。バッジコテ−プ
ルは非常に大きいので、新たなデータストリームが与え
られる度にこのような初期化プロセス(第5b図)が必
要とされるならば、たいていのシステムに於いて受は入
れ難い待ち時間カ生じる。このため、リフレッシュハツ
シュルーチン(第5c図)が用いられ、これにより初期
化のコストが圧縮の全期間に分配され、従って、圧縮操
作間の待ち時間が最小化される。
いるビットストリングの現在の長さを追跡するための7
7チ長変数(rMATcHLEMJ )が0に設定され
る。次に、ブロック116に於いて、後述するリフレッ
シュカウント変数(rRFSHCNTJ)が12に設定
される。ブロック118に於いて、後述するリフレッシ
ュポインタ変数(rRFsHPTRJ ’)がOに設定
される。次に、ブロック120に於いて、ハッシュテー
ブル100が値HPTR−MEMS I ZEで埋めら
れる。このステップにより、ハツシュテーブル100の
以前の有効な値は効果的に空にされる。バッジコテ−プ
ルは非常に大きいので、新たなデータストリームが与え
られる度にこのような初期化プロセス(第5b図)が必
要とされるならば、たいていのシステムに於いて受は入
れ難い待ち時間カ生じる。このため、リフレッシュハツ
シュルーチン(第5c図)が用いられ、これにより初期
化のコストが圧縮の全期間に分配され、従って、圧縮操
作間の待ち時間が最小化される。
第5a図を再び参照すると、初期化ルーチン(第5b図
)の終了後、圧縮ユニット4(第1a図)は入力される
データストリームからのバイトの受は入れを開始するこ
とができる。ブロック124に於いて、変数RFSHC
NTが0であるか否かが調べられる。RFSHCNTが
0にデクリメントされている場合には、処理はブロック
126へ進む。ブロック126に於いてはリフレッシュ
ハツシュルーチン(第5c図)が実行される。
)の終了後、圧縮ユニット4(第1a図)は入力される
データストリームからのバイトの受は入れを開始するこ
とができる。ブロック124に於いて、変数RFSHC
NTが0であるか否かが調べられる。RFSHCNTが
0にデクリメントされている場合には、処理はブロック
126へ進む。ブロック126に於いてはリフレッシュ
ハツシュルーチン(第5c図)が実行される。
リフレッシュハツシュルーチン(第5c図)の目的は、
ハツシュテーブル100の特定の場所に於いてHPTR
が古い値に折り返される(wrap back)とい
う万一の状況に対処することにある。このような状況が
生じた場合には、ハツシュテーブル100内の実際には
非常に古いハツシュビン106が突然に非常に新しく見
えるようになる。リフレッシュハツシュルーチン(第5
c図)は、ハツシュテーブル100の各エントリ(HA
SHTABLE (j))を定期的に調べ、そのエント
リが余りに古くないか、例えばHP T R−HASH
TABLE (J)>0LDHASHが成り立つか否か
を定めることに責任を負っている。
ハツシュテーブル100の特定の場所に於いてHPTR
が古い値に折り返される(wrap back)とい
う万一の状況に対処することにある。このような状況が
生じた場合には、ハツシュテーブル100内の実際には
非常に古いハツシュビン106が突然に非常に新しく見
えるようになる。リフレッシュハツシュルーチン(第5
c図)は、ハツシュテーブル100の各エントリ(HA
SHTABLE (j))を定期的に調べ、そのエント
リが余りに古くないか、例えばHP T R−HASH
TABLE (J)>0LDHASHが成り立つか否か
を定めることに責任を負っている。
ここで、0LDHASHは適切に選ばれた値(例えば1
6K)である。そのエントリが余りに古い場合には、H
ASHTABLE (J)はHPTR−MEMS I
ZEで置き換えられる。この値は充分に古いので、無効
又は「N I LJポインタとして扱われるが、このこ
とにより、更に64に−MEMSIZE迄のバイトを、
HPTPの折り返しの問題無しに処理することができる
。ハフシュテーブル100がリフレッシュされる頻度は
次のようにして計算される。目標は、全てのハツシュテ
ーブルのビンが64に一0LDHASHバイト毎に少な
くとも1皮調べられることを保証することである。この
目標は、 (64に一0LDHASH)/HASHSI
ZEの入力バイト毎に1回のりフレソシュハッシュを行
うことによって達成される。
6K)である。そのエントリが余りに古い場合には、H
ASHTABLE (J)はHPTR−MEMS I
ZEで置き換えられる。この値は充分に古いので、無効
又は「N I LJポインタとして扱われるが、このこ
とにより、更に64に−MEMSIZE迄のバイトを、
HPTPの折り返しの問題無しに処理することができる
。ハフシュテーブル100がリフレッシュされる頻度は
次のようにして計算される。目標は、全てのハツシュテ
ーブルのビンが64に一0LDHASHバイト毎に少な
くとも1皮調べられることを保証することである。この
目標は、 (64に一0LDHASH)/HASHSI
ZEの入力バイト毎に1回のりフレソシュハッシュを行
うことによって達成される。
ここで、HASH3IZEはハツシュテーブル100内
のビンの数である。本実施例に於いては、この値は48
に/4に=12であり、従って、各12回目のバイトの
入力毎にハツシュテーブル100の1個のハブシュエン
トリがリフレッシュされる。
のビンの数である。本実施例に於いては、この値は48
に/4に=12であり、従って、各12回目のバイトの
入力毎にハツシュテーブル100の1個のハブシュエン
トリがリフレッシュされる。
1回のリフレッシュ操作は常に1個のメモリサイクルを
含むが、ハッシュテーブル100のビンエントリが更新
される必要がある場合には第2のく書き込み)サイクル
が必要とされることに注意されたい。0LDHASHを
増大させると、リフレッシュの頻度も又増大する。しか
し、ピンエントリがストリングハツシングによって既に
更新されている可能性がより高くなるので、第2のサイ
クルの生じる可能性は低下する。0LDHASH=16
にという値は経験的に得られたものであり、この値によ
れば、本実施例に於けるリフレッシュのオーバーヘッド
は適当なものになる。入力データのバイト当りのリフレ
ッシュオーバーヘッドは概ね1/12から2/12メモ
リサイクルまでの間にある。これは、二重リンクリスト
を維持するためのオーバーヘッドよりも1桁以上小さい
。
含むが、ハッシュテーブル100のビンエントリが更新
される必要がある場合には第2のく書き込み)サイクル
が必要とされることに注意されたい。0LDHASHを
増大させると、リフレッシュの頻度も又増大する。しか
し、ピンエントリがストリングハツシングによって既に
更新されている可能性がより高くなるので、第2のサイ
クルの生じる可能性は低下する。0LDHASH=16
にという値は経験的に得られたものであり、この値によ
れば、本実施例に於けるリフレッシュのオーバーヘッド
は適当なものになる。入力データのバイト当りのリフレ
ッシュオーバーヘッドは概ね1/12から2/12メモ
リサイクルまでの間にある。これは、二重リンクリスト
を維持するためのオーバーヘッドよりも1桁以上小さい
。
圧縮操作の終了又は新たな入力バイトストリームに対す
る新たな圧縮操作の開始のためには、圧縮ユニットは単
にHPTRをMEMS I ZEだけインクリメントし
、これによりハツシュテーブルのビンは自動的に無効化
される。これに加えて、リフレノシコユニットは、ME
MS I Z E/l 2のリフレッシュサイクルを実
行し、実際には処理されなかったMEMSIZEバイト
の間に省略されたリフレッシュサイクルを埋め合わせな
ければならない。しかし、この操作は4096回ではな
く僅かに171回のりフレフシ5操作を含むだけであり
、従って、非常に短時間に遂行される。他の圧縮方法に
於いては、新たな圧縮操作の開始に先立って通常全ての
テーブル及びバッファをクリアする必要があり、多大な
待ち時間が必要となる。
る新たな圧縮操作の開始のためには、圧縮ユニットは単
にHPTRをMEMS I ZEだけインクリメントし
、これによりハツシュテーブルのビンは自動的に無効化
される。これに加えて、リフレノシコユニットは、ME
MS I Z E/l 2のリフレッシュサイクルを実
行し、実際には処理されなかったMEMSIZEバイト
の間に省略されたリフレッシュサイクルを埋め合わせな
ければならない。しかし、この操作は4096回ではな
く僅かに171回のりフレフシ5操作を含むだけであり
、従って、非常に短時間に遂行される。他の圧縮方法に
於いては、新たな圧縮操作の開始に先立って通常全ての
テーブル及びバッファをクリアする必要があり、多大な
待ち時間が必要となる。
第5C図に於いて処理はブロック130へ進み、)IP
TR−HASHTABLE (RFSHPTR)>16
にであるか否かが調べられる。以前に述べたように、こ
の操作により現在のエントリが余りに古いか否かが定め
られる。該エントリが余りに古い場合には、処理はブロ
ック132へ進み、ここでHASH(RFSHPTR)
がHPTR−MEMSIZEに設定される。これにより
、このエントリ位置に無効値が効果的に生成される。ブ
ロック130に於いてエントリが余りに古くはないと判
定された場合には、処理はブロック134へ進む。エン
トリが余りに古いか否かに拘らず、処理はブロック13
4に進み、RFSHPTRが1だけインクリメントされ
る。次に、ブロック136に於いて、RFSHCNTが
12に設定され、処理は圧縮操作ルーチンのブロック1
28(第5a図)へ戻る。
TR−HASHTABLE (RFSHPTR)>16
にであるか否かが調べられる。以前に述べたように、こ
の操作により現在のエントリが余りに古いか否かが定め
られる。該エントリが余りに古い場合には、処理はブロ
ック132へ進み、ここでHASH(RFSHPTR)
がHPTR−MEMSIZEに設定される。これにより
、このエントリ位置に無効値が効果的に生成される。ブ
ロック130に於いてエントリが余りに古くはないと判
定された場合には、処理はブロック134へ進む。エン
トリが余りに古いか否かに拘らず、処理はブロック13
4に進み、RFSHPTRが1だけインクリメントされ
る。次に、ブロック136に於いて、RFSHCNTが
12に設定され、処理は圧縮操作ルーチンのブロック1
28(第5a図)へ戻る。
ブロック124に於いてRFSHCNTがOに等しい(
この場合にはりフレフシ1ハブシユルーチン(第5C図
)の呼出が必要である)と判定されたかそうでないかに
拘らず、処理はブロック128に進む。ブロック128
に於いては、圧縮ユニノド4(第1a図)は操作の初期
化を行うために、履歴アレイ102の最初の2バイトを
入力データで埋める。この2バイトはレジスタINRE
Go及びINREGIに保持される。新たな1バイトが
処理される度に、第1バイト及び次の入力バイトのバッ
ジ:h(rHJ)が計算される。本実施例では、INR
EGOを左へ4ビツトシフトしたものとINREGIと
の排他的論理和をとることによってハツシュが計算され
る。上述したように、(以前に参照した)Knuthに
よって議論されているいずれのハツシュ関数も適用可能
である。新たな1個の入力バイトが処理される度に、I
NREGIの内容はINREGOへ移され、INREG
lには新たなバイト値がロードされる。
この場合にはりフレフシ1ハブシユルーチン(第5C図
)の呼出が必要である)と判定されたかそうでないかに
拘らず、処理はブロック128に進む。ブロック128
に於いては、圧縮ユニノド4(第1a図)は操作の初期
化を行うために、履歴アレイ102の最初の2バイトを
入力データで埋める。この2バイトはレジスタINRE
Go及びINREGIに保持される。新たな1バイトが
処理される度に、第1バイト及び次の入力バイトのバッ
ジ:h(rHJ)が計算される。本実施例では、INR
EGOを左へ4ビツトシフトしたものとINREGIと
の排他的論理和をとることによってハツシュが計算され
る。上述したように、(以前に参照した)Knuthに
よって議論されているいずれのハツシュ関数も適用可能
である。新たな1個の入力バイトが処理される度に、I
NREGIの内容はINREGOへ移され、INREG
lには新たなバイト値がロードされる。
ブロック128で処理される各バイトについて、バッジ
1値H(rHJ )が計算され、新たなハ・ノシa[に
対応するハ・ノシス値のビン中の古いエントリが読み出
され、NEXTと称される変数に格納される。更に、ブ
ロック128に於いて、現在のハ・7シユ値に対応する
ハッシュテーブルの場所の古いエントリはHPTHの現
在の値で置換される。ブ0 ッ’) 140 ニ於イテ
、HPTR−NEXT≧MEMS I ZE−MAXS
TRであるか否かが判定される。変数MAXSTRは、
履歴アレイ102中で見いだされるマツチするバイトス
トリングが現在処理されているバイトによって上書きさ
れないことを保証する、探索されるストリングサイズの
最大値である。HPTR−NEXTがMEMS IZE
−MAXSTR以上であると判定された場合には、処理
はブロック142へ進み、変数NEXTはHPTR−M
EMS I ZEに設定される。換言すれば、H歴の最
後のMEMS I ZEバイト中にはマツチするストリ
ングが存在しなかったため、ハブシュビンは空にされる
。
1値H(rHJ )が計算され、新たなハ・ノシa[に
対応するハ・ノシス値のビン中の古いエントリが読み出
され、NEXTと称される変数に格納される。更に、ブ
ロック128に於いて、現在のハ・7シユ値に対応する
ハッシュテーブルの場所の古いエントリはHPTHの現
在の値で置換される。ブ0 ッ’) 140 ニ於イテ
、HPTR−NEXT≧MEMS I ZE−MAXS
TRであるか否かが判定される。変数MAXSTRは、
履歴アレイ102中で見いだされるマツチするバイトス
トリングが現在処理されているバイトによって上書きさ
れないことを保証する、探索されるストリングサイズの
最大値である。HPTR−NEXTがMEMS IZE
−MAXSTR以上であると判定された場合には、処理
はブロック142へ進み、変数NEXTはHPTR−M
EMS I ZEに設定される。換言すれば、H歴の最
後のMEMS I ZEバイト中にはマツチするストリ
ングが存在しなかったため、ハブシュビンは空にされる
。
HP T R−N E X TがMEMS IZE−M
AXSTR以上であると判定されたか否かに拘らず、処
理はブロック144へ進む。ブロック144では、値H
PTR−NEXTが、対応するオフセットアレイ104
のエントリ0FFSET (HPTR)に書き込まれる
。又、ブロック144では、INREGIの値が履歴ア
レイ102のエントリHISTORY ()(PTR)
に置かれる。上述したブロック124.126.128
.140.142及び144で実行されるステップによ
り、現在処理されているバイトについて必要とされるデ
ータ構造の保守は完了し、この時点で、履歴アレイ10
2の内容のストリング探索を開始することができる。上
述した保守機能は、圧縮ユニットが現在ストリングマツ
チの処理を行っているか否かに拘らず、処理される全て
の入力バイトについて実行されることに注意されたい。
AXSTR以上であると判定されたか否かに拘らず、処
理はブロック144へ進む。ブロック144では、値H
PTR−NEXTが、対応するオフセットアレイ104
のエントリ0FFSET (HPTR)に書き込まれる
。又、ブロック144では、INREGIの値が履歴ア
レイ102のエントリHISTORY ()(PTR)
に置かれる。上述したブロック124.126.128
.140.142及び144で実行されるステップによ
り、現在処理されているバイトについて必要とされるデ
ータ構造の保守は完了し、この時点で、履歴アレイ10
2の内容のストリング探索を開始することができる。上
述した保守機能は、圧縮ユニットが現在ストリングマツ
チの処理を行っているか否かに拘らず、処理される全て
の入力バイトについて実行されることに注意されたい。
ブロック146に於いて、マツチ長変数M A TCH
LENがOに等しいか否かが判定される。初期化ルーチ
ンのブロック114(第5b図)に於いてMATCHL
ENはOに設定されたことを想起されたい。MATCH
LENは現在のストリングマツチ長を包含しており、そ
の値は処理の開始時に於いてはOである。ここで圧縮操
作の開始時点での処理を行っており、MATCHLEN
がOである場合には、内部ハブシュカウンタHASHC
NTがOに設定される。)f A、 S HCN Tは
個々のストリング探索の繰り返しを制限するために用い
られる。次に、ブロック150に於いて、HPTR−N
EXT≧MEMS I ZE−MAXSTRであるか否
かが判定される。HPTR−NEXTがMEMS rZ
E−MAXSTRよりも小さいと判定された場合には、
処理はブロック152へ進む。ブロック152では、I
NREGIの値が履歴7L/イ(7)HISTORY
(NEXT)(7)値に等しいか否かが判定される。こ
のステップの目的は、履歴アレイ内の先行するエントリ
に対してINREGO及びINREGI内の2バイトに
マツチする2バイトストリングを探索することにある。
LENがOに等しいか否かが判定される。初期化ルーチ
ンのブロック114(第5b図)に於いてMATCHL
ENはOに設定されたことを想起されたい。MATCH
LENは現在のストリングマツチ長を包含しており、そ
の値は処理の開始時に於いてはOである。ここで圧縮操
作の開始時点での処理を行っており、MATCHLEN
がOである場合には、内部ハブシュカウンタHASHC
NTがOに設定される。)f A、 S HCN Tは
個々のストリング探索の繰り返しを制限するために用い
られる。次に、ブロック150に於いて、HPTR−N
EXT≧MEMS I ZE−MAXSTRであるか否
かが判定される。HPTR−NEXTがMEMS rZ
E−MAXSTRよりも小さいと判定された場合には、
処理はブロック152へ進む。ブロック152では、I
NREGIの値が履歴7L/イ(7)HISTORY
(NEXT)(7)値に等しいか否かが判定される。こ
のステップの目的は、履歴アレイ内の先行するエントリ
に対してINREGO及びINREGI内の2バイトに
マツチする2バイトストリングを探索することにある。
!NREG l内の値のみがHISTORY (NEX
T)の値と比較される。なぜならば、ハブシュ関数はI
NREGOに関してl対lの写影が行われるように選ば
れており、そのためハブシュリスト中の各ストリングか
らの1バイトのみがINREGlと比較される必要があ
るからである。このステップにより、2バイトの比較に
代えて1バイトの比較を行うだけでよいことから、本実
施例の性能は向上する。ブロック150に於いてHPT
R−NEXTがMEMS I ZE−MAXSTR以上
であると判定された場合には、処理はブロック158へ
進む。ブロック15gでは、生データタグ及びI NR
EGO内の生のデータが出力され、処理はブロック12
5へ進む。ブロック125では、次の入力バイトが得ら
れ、処理全体が再び開始される。
T)の値と比較される。なぜならば、ハブシュ関数はI
NREGOに関してl対lの写影が行われるように選ば
れており、そのためハブシュリスト中の各ストリングか
らの1バイトのみがINREGlと比較される必要があ
るからである。このステップにより、2バイトの比較に
代えて1バイトの比較を行うだけでよいことから、本実
施例の性能は向上する。ブロック150に於いてHPT
R−NEXTがMEMS I ZE−MAXSTR以上
であると判定された場合には、処理はブロック158へ
進む。ブロック15gでは、生データタグ及びI NR
EGO内の生のデータが出力され、処理はブロック12
5へ進む。ブロック125では、次の入力バイトが得ら
れ、処理全体が再び開始される。
ブロック152に於いてマツチが成功したと判定された
場合には、処理はブロック160へ進み、値NEXTが
変数MATCHPTHの値に等しく設定される。更に、
2バイトのマツチを示すために変数MATCHLENが
2に設定され、処理はブロック125へ進み、次の入力
バイトが得られる。しかし、HI 5TORY (NE
XT)(7)値がマツチしない場合には、処理はブロッ
ク154へ進み、HASHCNTの値がインクリメント
され、変数NEXTはNEXT−OFFSET (NE
XT)に等しく設定される。このステップにより、オフ
セットアレイ104によってリンクされている次のエン
トリが効果的に指し示される。処理はブロック156へ
進み、HASHCNTが既定の最大カウント値MAXH
CNT(典型的には8)に達したか否かが判定される。
場合には、処理はブロック160へ進み、値NEXTが
変数MATCHPTHの値に等しく設定される。更に、
2バイトのマツチを示すために変数MATCHLENが
2に設定され、処理はブロック125へ進み、次の入力
バイトが得られる。しかし、HI 5TORY (NE
XT)(7)値がマツチしない場合には、処理はブロッ
ク154へ進み、HASHCNTの値がインクリメント
され、変数NEXTはNEXT−OFFSET (NE
XT)に等しく設定される。このステップにより、オフ
セットアレイ104によってリンクされている次のエン
トリが効果的に指し示される。処理はブロック156へ
進み、HASHCNTが既定の最大カウント値MAXH
CNT(典型的には8)に達したか否かが判定される。
)IAsHcNTがMAXHCNT以上である場合には
、処理はプロ・ノク158へ進み、生のバイ) I N
REGOが出力され、処理はブロック125へ進む。し
かし、HASHCNTがMAXHCNT以上でなければ
、HASHCNTがMAXHCNT (又は「8」)に
達するか、ハブシュリストにそれ以上の有効なエントリ
が存在しなくなる(ブロック150に於いて判定される
)か、又は(プロ・ノク152に於いて〉マツチするス
トリングが見いだされるかの条件が発生するまで、ブロ
ック150,152.154及び156の処理が継続さ
れる。
、処理はプロ・ノク158へ進み、生のバイ) I N
REGOが出力され、処理はブロック125へ進む。し
かし、HASHCNTがMAXHCNT以上でなければ
、HASHCNTがMAXHCNT (又は「8」)に
達するか、ハブシュリストにそれ以上の有効なエントリ
が存在しなくなる(ブロック150に於いて判定される
)か、又は(プロ・ノク152に於いて〉マツチするス
トリングが見いだされるかの条件が発生するまで、ブロ
ック150,152.154及び156の処理が継続さ
れる。
処理がブロック125へ進んだ場合には、その時点で圧
縮ユニット4(第1a図)は新たな入力バイトを処理で
きる状態にある。ブロック125に於いて、HPTRが
インクリメントされ、変数RFSHCNTがデクリメン
トされる。ブロック124.126.128.140.
142.144.146.14g、150.152.1
54.156.158.160及び125の処理が、ブ
ロック146に於いてMATCHLENがOよりも大き
いと判定されるまで実行される。ブロック146を参照
し、MATCI−1LENが0に等しくない場合には処
理はブロック162へ進むことに注意されたい。ブロッ
ク162に於いて、変数MATCHPTRが1だけイン
クリメントされる。
縮ユニット4(第1a図)は新たな入力バイトを処理で
きる状態にある。ブロック125に於いて、HPTRが
インクリメントされ、変数RFSHCNTがデクリメン
トされる。ブロック124.126.128.140.
142.144.146.14g、150.152.1
54.156.158.160及び125の処理が、ブ
ロック146に於いてMATCHLENがOよりも大き
いと判定されるまで実行される。ブロック146を参照
し、MATCI−1LENが0に等しくない場合には処
理はブロック162へ進むことに注意されたい。ブロッ
ク162に於いて、変数MATCHPTRが1だけイン
クリメントされる。
このようにして、新たな値INREGIはH歴アレイ1
02中のMATCHPTRに於いて見いたされるMAT
CHLEN+1の長さのストリーム内の新たなバイトと
比較される。ブロック164では、バイトのマツチが成
功したか否かが判定される。マツチした場合には、ブロ
ック180に於いてMATCHLENがインクリメント
されてストリングが拡張され、処理は次にブロック12
5へ進む。しかし、マツチがとれなかった場合には、処
理はブロック166へ進み、変数NEXTはMA T
CHP T R−M A T CHL E N + 1
に等しく設定される。処理はブロック168へ進み、変
数NEXTはNEXT−OFFSET (NEXT)に
設定される。更に、ブロック168で、変数HASHC
NTがインクリメントされる。ステップ166及び16
8により、圧縮ユニット4(第1a図)は、バッジ−ピ
ン中′に残されている連続するストリングエントリに於
いて、マツチがとれるオリジナルのストリングを探索す
る。ブロック170では、HPTR−NEXT≧MEM
S I ZE−MAXSTRであるか否かが判定される
。HPTR−NEXTがMEMS IZE−MAXST
Rよりも大きいと判定された場合には、有効なエントリ
はそれ以上存在せず、処理はブロック182へ進む。ブ
o ツク184では、MATCHLENが0に設定され
、ブロック125で新たなバイトについて処理が開始さ
れる。しかし、ブロック170に於いてHPTR−NE
XTがMEMSIZE−MAXSTRよりも小さいと判
定された場合には、処理はブロック172へ進み、MA
TCHLEN≧MAXSTRであるか否かが判定される
。
02中のMATCHPTRに於いて見いたされるMAT
CHLEN+1の長さのストリーム内の新たなバイトと
比較される。ブロック164では、バイトのマツチが成
功したか否かが判定される。マツチした場合には、ブロ
ック180に於いてMATCHLENがインクリメント
されてストリングが拡張され、処理は次にブロック12
5へ進む。しかし、マツチがとれなかった場合には、処
理はブロック166へ進み、変数NEXTはMA T
CHP T R−M A T CHL E N + 1
に等しく設定される。処理はブロック168へ進み、変
数NEXTはNEXT−OFFSET (NEXT)に
設定される。更に、ブロック168で、変数HASHC
NTがインクリメントされる。ステップ166及び16
8により、圧縮ユニット4(第1a図)は、バッジ−ピ
ン中′に残されている連続するストリングエントリに於
いて、マツチがとれるオリジナルのストリングを探索す
る。ブロック170では、HPTR−NEXT≧MEM
S I ZE−MAXSTRであるか否かが判定される
。HPTR−NEXTがMEMS IZE−MAXST
Rよりも大きいと判定された場合には、有効なエントリ
はそれ以上存在せず、処理はブロック182へ進む。ブ
o ツク184では、MATCHLENが0に設定され
、ブロック125で新たなバイトについて処理が開始さ
れる。しかし、ブロック170に於いてHPTR−NE
XTがMEMSIZE−MAXSTRよりも小さいと判
定された場合には、処理はブロック172へ進み、MA
TCHLEN≧MAXSTRであるか否かが判定される
。
MATCHLEN≧MAXSTRである場合には、無効
な探索が生じており、処理はブロック182へ進む。し
かし、MATCHLEN≧MAXSTRでなければ、処
理はブロック174へ進む。ブロック182に於いて圧
縮ユニット4(第1a図)は、マツチするストリングが
見いだされたことを示すタグピット(rlJ)、それに
引き続く、履歴アレイ102中のマツチしたストリング
の適切にコード化されたオフセット(OFFSET=H
PTR−MATC)(PTR)、及びコード化された長
さを出力する。
な探索が生じており、処理はブロック182へ進む。し
かし、MATCHLEN≧MAXSTRでなければ、処
理はブロック174へ進む。ブロック182に於いて圧
縮ユニット4(第1a図)は、マツチするストリングが
見いだされたことを示すタグピット(rlJ)、それに
引き続く、履歴アレイ102中のマツチしたストリング
の適切にコード化されたオフセット(OFFSET=H
PTR−MATC)(PTR)、及びコード化された長
さを出力する。
ブロック174では、位置HI 5TORY (NEX
T)に於ける長さMATCHLEN+1の現在のストリ
ングが内部マツチバッファの内容に等しいか否かが判定
される。内部マツチバッファは、現在マツチしているス
トリングのMATCHLEN9のバイトの全てを包含し
ている。このバッファにより、ストリングの最初のマツ
チの試みが失敗した場合の新たなストリングの探索が高
速化される。マツチが実行される度にマツチをとろうと
するバイトを得るためにRAMにアクセスする必要はな
く、該バイトは圧縮ユニブトが含まれるチップ内で即座
に利用できるため、効率がよい。換言すると、マツチバ
ッファは処理を効果的に向上させるためのルックアサイ
ド(look aslde)バッファとして機能する
。マツチバッファの長さは有限である(本実施例ではM
AXSTR=8バイトである)。
T)に於ける長さMATCHLEN+1の現在のストリ
ングが内部マツチバッファの内容に等しいか否かが判定
される。内部マツチバッファは、現在マツチしているス
トリングのMATCHLEN9のバイトの全てを包含し
ている。このバッファにより、ストリングの最初のマツ
チの試みが失敗した場合の新たなストリングの探索が高
速化される。マツチが実行される度にマツチをとろうと
するバイトを得るためにRAMにアクセスする必要はな
く、該バイトは圧縮ユニブトが含まれるチップ内で即座
に利用できるため、効率がよい。換言すると、マツチバ
ッファは処理を効果的に向上させるためのルックアサイ
ド(look aslde)バッファとして機能する
。マツチバッファの長さは有限である(本実施例ではM
AXSTR=8バイトである)。
HI 5TORY (NEXT)に於ける長さMATC
HLEN+1のストリングがマツチバッファの内容に等
しい場合には、処理はブロック178へ進み、変数MA
TCHPTRはNEXT+MATCHLENに等しく設
定される。処理はブロック180へ進み、MATCHL
ENがインクリメントされる。次に処理はブロック12
5へ進み、入カデータストリーム中の次の新たなバイト
が処理される。しかし、HISTORY (NEXT)
に於けるストリングがマツチバッファに等しくない場合
には、処理はブロック176へ進み、変数HA3HCN
T≧MAXHCNTであるか否かが判定される。HAS
HCNT≧MAXHCNTである場合には、処理はブロ
ック182及び184へ進み、タグピット「1」、H歴
アレイ中のマツチしたストリングの適切にコード化され
たオフセット、及びコード化された長さを有するコード
化されたストリングが出力され、変数MATCHLEN
が0に設定される。処理はブロック125へ進み、次の
新たな入力データバイトが処理される。
HLEN+1のストリングがマツチバッファの内容に等
しい場合には、処理はブロック178へ進み、変数MA
TCHPTRはNEXT+MATCHLENに等しく設
定される。処理はブロック180へ進み、MATCHL
ENがインクリメントされる。次に処理はブロック12
5へ進み、入カデータストリーム中の次の新たなバイト
が処理される。しかし、HISTORY (NEXT)
に於けるストリングがマツチバッファに等しくない場合
には、処理はブロック176へ進み、変数HA3HCN
T≧MAXHCNTであるか否かが判定される。HAS
HCNT≧MAXHCNTである場合には、処理はブロ
ック182及び184へ進み、タグピット「1」、H歴
アレイ中のマツチしたストリングの適切にコード化され
たオフセット、及びコード化された長さを有するコード
化されたストリングが出力され、変数MATCHLEN
が0に設定される。処理はブロック125へ進み、次の
新たな入力データバイトが処理される。
ブロック176に於いて、HASHCNT≧MAXHC
NTでないと判定された場合には、MATCHLEN+
1の長さのマツチがとれるか、HASHCNTがMAX
HCNTに達するか、又は有効なハブシュエントリが存
在しなくなる(HPTR−NEXT≧MATCH3I
ZE−MAXSTR)かの条件が発生するまで、ブロッ
ク168゜170.172.174および176の処理
が実行される。
NTでないと判定された場合には、MATCHLEN+
1の長さのマツチがとれるか、HASHCNTがMAX
HCNTに達するか、又は有効なハブシュエントリが存
在しなくなる(HPTR−NEXT≧MATCH3I
ZE−MAXSTR)かの条件が発生するまで、ブロッ
ク168゜170.172.174および176の処理
が実行される。
本実施例では、RAM16(第1a図)が全てのクロッ
クサイクルに於いて使用中であることを保証するために
、上述の操作はパイプライン化される。なぜならば、R
AMサイクルカウントは性能を制限する要因だからであ
る。
クサイクルに於いて使用中であることを保証するために
、上述の操作はパイプライン化される。なぜならば、R
AMサイクルカウントは性能を制限する要因だからであ
る。
記憶システムに於いては通常、データは固定長のセクタ
又はブロックにブロフク化されなければならず、ある段
階で圧縮を打ち切り、残りの入力ストリームについて新
たな操作を再開することが望ましい場合が多い。本実施
例では、出力された圧縮バイトのカウントが実行される
。このカウントが(ユーザが選択可能な)既定値に達し
た場合、又は入カデータストリームが終了した場合には
、圧縮ユニノドは圧縮をフラッシュ(flush)する
ように指示される。これは、入力FIFOから新たなバ
イトを取り出すことなく、INREGO及びINREG
I内のバイトの圧縮を完了し、終了し、(存在すれば)
現在拡張されているストリングを出力し、又は残りの未
処理のバイトを生のバイトとして出力することを意味す
る。
又はブロックにブロフク化されなければならず、ある段
階で圧縮を打ち切り、残りの入力ストリームについて新
たな操作を再開することが望ましい場合が多い。本実施
例では、出力された圧縮バイトのカウントが実行される
。このカウントが(ユーザが選択可能な)既定値に達し
た場合、又は入カデータストリームが終了した場合には
、圧縮ユニノドは圧縮をフラッシュ(flush)する
ように指示される。これは、入力FIFOから新たなバ
イトを取り出すことなく、INREGO及びINREG
I内のバイトの圧縮を完了し、終了し、(存在すれば)
現在拡張されているストリングを出力し、又は残りの未
処理のバイトを生のバイトとして出力することを意味す
る。
圧縮ユニットは次に、特別の「圧縮データの終わり」マ
ーカを出力する。このマーカは0のオフセットを有して
いる。このオフセットは、MEMSIZEのオフセット
として解釈され得るが、そうではなく、このオフセット
は今回の圧縮操作の終わりを示すものとして予約されて
いる。実際には、本実施例テハ、MEMS I ZE−
MAXSTR(MAXSTRは典型的には8である)か
らMEMSIZE−1までの範囲のオフセ・ノドは予約
されている。従って、ffl歴に於いてこのオフセット
を越えたストリングは見いだされない。この特徴により
、将来に於けるフォーマットの拡張が可能となり、履歴
バブファに於ける折り返しを含む困難な問題を回避する
ことができる。フラッシュの後では、圧縮ユニットはH
PTRにMEMS IZEを加え、適切な数(MEMS
I ZE/12)のリフレッシュハツシュサイクルを
実行し、新たな圧縮操作を開始する。
ーカを出力する。このマーカは0のオフセットを有して
いる。このオフセットは、MEMSIZEのオフセット
として解釈され得るが、そうではなく、このオフセット
は今回の圧縮操作の終わりを示すものとして予約されて
いる。実際には、本実施例テハ、MEMS I ZE−
MAXSTR(MAXSTRは典型的には8である)か
らMEMSIZE−1までの範囲のオフセ・ノドは予約
されている。従って、ffl歴に於いてこのオフセット
を越えたストリングは見いだされない。この特徴により
、将来に於けるフォーマットの拡張が可能となり、履歴
バブファに於ける折り返しを含む困難な問題を回避する
ことができる。フラッシュの後では、圧縮ユニットはH
PTRにMEMS IZEを加え、適切な数(MEMS
I ZE/12)のリフレッシュハツシュサイクルを
実行し、新たな圧縮操作を開始する。
本発明がなされる過程に於いて圧縮方法の広範なソフト
ウェアシミーレーシッンが行われた。MAXHCNT、
HASH3I ZE、v、yチバ−,71のサイズ、M
EMSIZEを含む全てのパラメータの値が変化させら
れて、スルーブツト及び圧縮比に対するそれらのパラメ
ータの影響が調べられた。本実施例の特別のフォーマッ
ト及びパラメータの組は、これらの性能上の論点に対し
て受は入れ可能なトレードオフが得られるように選択さ
れた。しかし、多くの類似のパラメータの組及びコード
化は実質的に同様の性能に帰着する。
ウェアシミーレーシッンが行われた。MAXHCNT、
HASH3I ZE、v、yチバ−,71のサイズ、M
EMSIZEを含む全てのパラメータの値が変化させら
れて、スルーブツト及び圧縮比に対するそれらのパラメ
ータの影響が調べられた。本実施例の特別のフォーマッ
ト及びパラメータの組は、これらの性能上の論点に対し
て受は入れ可能なトレードオフが得られるように選択さ
れた。しかし、多くの類似のパラメータの組及びコード
化は実質的に同様の性能に帰着する。
伸張ユニット6(第1b図)は、圧縮ユニット4(第1
a図)に比べれば非常に簡素である。伸張ユニット6は
コード化されたバイトストリームを受は取り、このスト
リームを、第2a図に示したコード化構成に従って構成
されるピットストリームに変換する。容土のバイト又は
コード化されたバイトストリーム出力については、その
バイトは伸張出力FIFOに転送され、同時に、RAM
16(第1b図)内に保持される伸張履歴アレイに追加
される。伸張履歴アレイは第4図の履歴アレイ102と
同様である。伸張ユニット6(第1b図)はまた、カレ
ント履歴ポインタ(rDPTRJ)を有している。DP
TRは、バイトの出力の度にインクリメントされ、ME
MSIZEに達した場合にOに戻される。コード化され
たストリングが解析された場合に、そのストリングから
のオフセットはDPTRから差し引かれ、伸張履歴アレ
イ中のオフセ・ノド位置から始まり、入力ビットストリ
ーム中のコード化された長さを有するバイトストリング
が出力される。従って、伸張ユニット6(第1b図)は
第4図に示しようなハツシュ構造(即ち、ハツンユテー
ブル1. OO及びオフセットアレイ104)を維持す
る必要はなく、実際、MEMSIZEバイトのRAM1
6(第1b図)を必要とするだけである。
a図)に比べれば非常に簡素である。伸張ユニット6は
コード化されたバイトストリームを受は取り、このスト
リームを、第2a図に示したコード化構成に従って構成
されるピットストリームに変換する。容土のバイト又は
コード化されたバイトストリーム出力については、その
バイトは伸張出力FIFOに転送され、同時に、RAM
16(第1b図)内に保持される伸張履歴アレイに追加
される。伸張履歴アレイは第4図の履歴アレイ102と
同様である。伸張ユニット6(第1b図)はまた、カレ
ント履歴ポインタ(rDPTRJ)を有している。DP
TRは、バイトの出力の度にインクリメントされ、ME
MSIZEに達した場合にOに戻される。コード化され
たストリングが解析された場合に、そのストリングから
のオフセットはDPTRから差し引かれ、伸張履歴アレ
イ中のオフセ・ノド位置から始まり、入力ビットストリ
ーム中のコード化された長さを有するバイトストリング
が出力される。従って、伸張ユニット6(第1b図)は
第4図に示しようなハツシュ構造(即ち、ハツンユテー
ブル1. OO及びオフセットアレイ104)を維持す
る必要はなく、実際、MEMSIZEバイトのRAM1
6(第1b図)を必要とするだけである。
通常は、RAM16(第1b図)には別個の圧縮データ
構造及び伸張データ構造を保持するスペースがあり、圧
縮及び伸張操作を同時に実行することができる。しかし
、本実施例ではこの能力は具体化されていない。
構造及び伸張データ構造を保持するスペースがあり、圧
縮及び伸張操作を同時に実行することができる。しかし
、本実施例ではこの能力は具体化されていない。
(以下余白)
5、 アレイを いた の
第6図に伸張を行うための伸張操作ルーチンの詳細なブ
ロツク図を示す。伸張操作ルーチン(第6図)への入力
は圧縮操作(即ち、第5a図、第5b図及び第5C図の
圧縮操作)によって出力されたコード化されたバイトス
トリームである。ブロック190に於いて操作が開始さ
れ、ブロック192に於いてポインタDI’TRがOに
設定される。処理はブロック194へ進み、入力された
コード化データストリームからタグビットが取り出され
る。次に、ブロック196に於いて、タグピットが1に
等しいか0に等しいかが判定される。
ロツク図を示す。伸張操作ルーチン(第6図)への入力
は圧縮操作(即ち、第5a図、第5b図及び第5C図の
圧縮操作)によって出力されたコード化されたバイトス
トリームである。ブロック190に於いて操作が開始さ
れ、ブロック192に於いてポインタDI’TRがOに
設定される。処理はブロック194へ進み、入力された
コード化データストリームからタグビットが取り出され
る。次に、ブロック196に於いて、タグピットが1に
等しいか0に等しいかが判定される。
タグピット「1」はコード化された圧縮ビットストリン
グが続くことを示し、タグピット「0」は出力バイトが
圧縮されていない生のデータであることを示しているこ
とを想起されたい。タグピットがOに等しい場合には、
処理はブロック198へ進む。ブロック198では、「
生」のバイトが入力されたコード化データストリームか
ら取り出される。次に、ブロック200で該生のデータ
バイトが出力され、ブロック202で該生のデータバイ
トは伸張履歴アレイのHr 5TORY (DPTR)
に格納される。処理はブロック204へ進み、DPTR
は次の出力バイトへインクリメントされる。生のデータ
バイトの処理のためには、処理はブロック194.19
6.198.200゜202及び204へ戻る。
グが続くことを示し、タグピット「0」は出力バイトが
圧縮されていない生のデータであることを示しているこ
とを想起されたい。タグピットがOに等しい場合には、
処理はブロック198へ進む。ブロック198では、「
生」のバイトが入力されたコード化データストリームか
ら取り出される。次に、ブロック200で該生のデータ
バイトが出力され、ブロック202で該生のデータバイ
トは伸張履歴アレイのHr 5TORY (DPTR)
に格納される。処理はブロック204へ進み、DPTR
は次の出力バイトへインクリメントされる。生のデータ
バイトの処理のためには、処理はブロック194.19
6.198.200゜202及び204へ戻る。
ブロック196に於いて、出力バイトが1のタグピット
を有する場合には、処理はブロック206へ進む。ブロ
ック206に於いて、コード化すれたビットストリング
の解析が開始される。より詳細には、ブロック206で
はコード化されたストリング中のオフセット(rPJ
’)の値が、入力されたコード化データストリームから
取り出される。ブロック208では、オフセットの値P
がOに等しいか否かが判定される。値Oを有するオフセ
ットは、上述したように、コード化された出カデータス
トリームの終わりを意味するエンドマーカを示している
。オフセットがOに等しい場合には処理はブロック21
2へ進み、処理は呼出元のプログラムへ戻る。しかし、
オフセットが0より大きい場合には、処理はブロック2
10へ進む。
を有する場合には、処理はブロック206へ進む。ブロ
ック206に於いて、コード化すれたビットストリング
の解析が開始される。より詳細には、ブロック206で
はコード化されたストリング中のオフセット(rPJ
’)の値が、入力されたコード化データストリームから
取り出される。ブロック208では、オフセットの値P
がOに等しいか否かが判定される。値Oを有するオフセ
ットは、上述したように、コード化された出カデータス
トリームの終わりを意味するエンドマーカを示している
。オフセットがOに等しい場合には処理はブロック21
2へ進み、処理は呼出元のプログラムへ戻る。しかし、
オフセットが0より大きい場合には、処理はブロック2
10へ進む。
ブロック210に於いて、入力されたコード化データス
トリームから長さのビットストリングが取り出される。
トリームから長さのビットストリングが取り出される。
ブロック214では、伸張履歴アレイのHi 5TOR
Y (DPTR−P)の内容が定められる。次にブロッ
ク216に於いて、その位置に格納されているデータが
出力される。ブロック218では、そのデータが1II
sToRY(DPTR)に格納される。次に、ブロック
220に於いてDPTRがインクリメントされ、ブロッ
ク222でビットストリングの長さがデクリメントされ
る。ブロック224に於いて、該長さが0までデクリメ
ントされたか否かが判定される。該長さがOまでデクリ
メントされていない場合には、コード化されたバイトス
トリーム中の全てのバイトが出力されるまでブロック2
14.216.218.220.222及び224の処
理が行われる。
Y (DPTR−P)の内容が定められる。次にブロッ
ク216に於いて、その位置に格納されているデータが
出力される。ブロック218では、そのデータが1II
sToRY(DPTR)に格納される。次に、ブロック
220に於いてDPTRがインクリメントされ、ブロッ
ク222でビットストリングの長さがデクリメントされ
る。ブロック224に於いて、該長さが0までデクリメ
ントされたか否かが判定される。該長さがOまでデクリ
メントされていない場合には、コード化されたバイトス
トリーム中の全てのバイトが出力されるまでブロック2
14.216.218.220.222及び224の処
理が行われる。
該長さが一旦0までデクリメントされると、処理はブロ
ック194へ進み、入力されたコード化データストリー
ムから次のタグピットが取り出される。従って、値0の
オフセットを有するコード化されたバイトストリングが
出現する(ブロック208)まで処理は継続され、その
ようなバイトストリングが出現したときにはブロック2
12に於いて処理は呼出元のプログラムへ戻る。
ック194へ進み、入力されたコード化データストリー
ムから次のタグピットが取り出される。従って、値0の
オフセットを有するコード化されたバイトストリングが
出現する(ブロック208)まで処理は継続され、その
ようなバイトストリングが出現したときにはブロック2
12に於いて処理は呼出元のプログラムへ戻る。
6、 アレイを いた の
第7図に本実施例のデータ圧縮ユニット4(第10図)
を含む回路図228を示す。回路228の要素はデジタ
ル論理によって実現される。回路228は、圧縮コント
ローラ及びシーケンスユニノド230によって制御され
る。圧縮コントローラ及びシーケンスユニット230は
、回路228の要素のそれぞれに一連の制御ライン(図
示せず)によってリンクされている。本実施例では数M
H2で動作する内部クロック(図示せず)は、動作中の
各クロ・ノクサイクルに於いて1個以上の要素に働きか
けるコントローラ及びシーケンスユニット230の活性
化レベルを定める。実際の動作及びそれらの動作のシー
ケンスは、既に論じた第5a図、第5b図及び第5c図
に示されている。
を含む回路図228を示す。回路228の要素はデジタ
ル論理によって実現される。回路228は、圧縮コント
ローラ及びシーケンスユニノド230によって制御され
る。圧縮コントローラ及びシーケンスユニット230は
、回路228の要素のそれぞれに一連の制御ライン(図
示せず)によってリンクされている。本実施例では数M
H2で動作する内部クロック(図示せず)は、動作中の
各クロ・ノクサイクルに於いて1個以上の要素に働きか
けるコントローラ及びシーケンスユニット230の活性
化レベルを定める。実際の動作及びそれらの動作のシー
ケンスは、既に論じた第5a図、第5b図及び第5c図
に示されている。
本実施例は、データの移動及びバッキングを容易にする
ために、集積回路中のレジスタとして実現される2個の
FrFO232及び234を備えている。一方のFIF
O(ユーザによって選択され得る)については、RAM
240 (第8図)の予約された領域に「追い出す(s
pill over)Jこともできる。この予約され
た領域は典型的には8K又は16にバイトである。この
ように圧縮RAMの一部を用いることにより、特に、複
数のコンピュータ及び装置がコマンド及びデータについ
て単一のバスを共有するSCSI(Small Co
mputer System Interface
)を用いるシステムに於いて、明線な性能上の利点が得
られる。
ために、集積回路中のレジスタとして実現される2個の
FrFO232及び234を備えている。一方のFIF
O(ユーザによって選択され得る)については、RAM
240 (第8図)の予約された領域に「追い出す(s
pill over)Jこともできる。この予約され
た領域は典型的には8K又は16にバイトである。この
ように圧縮RAMの一部を用いることにより、特に、複
数のコンピュータ及び装置がコマンド及びデータについ
て単一のバスを共有するSCSI(Small Co
mputer System Interface
)を用いるシステムに於いて、明線な性能上の利点が得
られる。
SC3Iに於いては、他のバス通信を妨げないように、
データを非常に高速で伝送しながら、バスの獲得及び解
放をできる限り素早く行うことが望ましい。SC3Iで
は最大5Mバイト/秒の転送速度が得られる。しかし、
圧縮ユニットのスループ1トは通常この数値よりもかな
り低いため、SC3Iバスに圧縮されたデータを「圧縮
しながら(on the fly)J送出すること
は、性能の見地から受は入れ難い。
データを非常に高速で伝送しながら、バスの獲得及び解
放をできる限り素早く行うことが望ましい。SC3Iで
は最大5Mバイト/秒の転送速度が得られる。しかし、
圧縮ユニットのスループ1トは通常この数値よりもかな
り低いため、SC3Iバスに圧縮されたデータを「圧縮
しながら(on the fly)J送出すること
は、性能の見地から受は入れ難い。
7、 n アレイを いた の 部RAMのF
IFO この問題を避けるために、圧縮ユニット4(第1a図)
の出力側238(第7図)には外部RAMFIFO24
0(第8図)が選択される。外部RAMFIFO240
は、圧縮ユニット(第1a図)内に設置されたRAMF
IFOコントロール242によって制御される。RAM
F I FO240は、圧縮計算(履歴、)\ツシュ等
)のため、及びFIFOとしての機能を提供するための
両方に用いられる。−旦RAMFIFO240に5CS
Iブロノク転送が許容されるに足る量のデータが蓄積さ
れると、チップ内のカウンタにより、5C3I転送を開
始する制御マイクロプロセッサに割込みがかけられる。
IFO この問題を避けるために、圧縮ユニット4(第1a図)
の出力側238(第7図)には外部RAMFIFO24
0(第8図)が選択される。外部RAMFIFO240
は、圧縮ユニット(第1a図)内に設置されたRAMF
IFOコントロール242によって制御される。RAM
F I FO240は、圧縮計算(履歴、)\ツシュ等
)のため、及びFIFOとしての機能を提供するための
両方に用いられる。−旦RAMFIFO240に5CS
Iブロノク転送が許容されるに足る量のデータが蓄積さ
れると、チップ内のカウンタにより、5C3I転送を開
始する制御マイクロプロセッサに割込みがかけられる。
バッファ(引続きデータで埋められてよい)は低速で埋
められたにも拘らず、この転送はSC3Iの全帯域で行
われる。
められたにも拘らず、この転送はSC3Iの全帯域で行
われる。
RAMのこのような二重の使用により(圧縮データ構造
及びFIFOの両方を収容することができるサイズのR
AMは通例入手可能である)、システムの性能は飛躍的
に向上する。RAMF I F0240(第8図)をデ
ータの流れの他方の側(典型的には埋め込まれた駆動コ
ントローラ内)に配置することもできる。又は、同様の
目標を達成するためにRAMF I FOを伸張に於い
て使用することもできる。一般に、RAMFIFOは動
作の5C9I(又は最も高速の)側に置かれる。
及びFIFOの両方を収容することができるサイズのR
AMは通例入手可能である)、システムの性能は飛躍的
に向上する。RAMF I F0240(第8図)をデ
ータの流れの他方の側(典型的には埋め込まれた駆動コ
ントローラ内)に配置することもできる。又は、同様の
目標を達成するためにRAMF I FOを伸張に於い
て使用することもできる。一般に、RAMFIFOは動
作の5C9I(又は最も高速の)側に置かれる。
回路228に於けるデータの流れのより詳細な説明を行
う。入力バイトストリームの圧縮されていないバイトは
、圧縮ユニット4に入力され、ライン244を介して入
力FIFO232に与えられる。入力FIFOに格納さ
れたバイトは、2個の拡張FIFOレジスタINREG
I (参照符号233)及びINREGO(参照符号2
35)に転送される。より詳細には、FIFO232か
らのデータはライン246を介してINREGiレジス
タ233に与えられる。INREGIレジスタ233に
格納されたデータは、次に、ライン248及び250を
介してINREGOレジスタ235に転送される。IN
REGI及びINREGOレジスタの目的はハツシュ関
数237への入力を発生することにあることを想起され
たい。INREG 1レジスタ233の内容はライン2
48を介してライン252へ出力され、ハツシュ関数2
37に入力される。同様に、INREGOレジスタ23
5の内容はライン251及び253を介してハツシュ関
数237へ出力される。ハツシュ関数237の出力はラ
イン255を介してマルチプレクサ256へ伝送される
。
う。入力バイトストリームの圧縮されていないバイトは
、圧縮ユニット4に入力され、ライン244を介して入
力FIFO232に与えられる。入力FIFOに格納さ
れたバイトは、2個の拡張FIFOレジスタINREG
I (参照符号233)及びINREGO(参照符号2
35)に転送される。より詳細には、FIFO232か
らのデータはライン246を介してINREGiレジス
タ233に与えられる。INREGIレジスタ233に
格納されたデータは、次に、ライン248及び250を
介してINREGOレジスタ235に転送される。IN
REGI及びINREGOレジスタの目的はハツシュ関
数237への入力を発生することにあることを想起され
たい。INREG 1レジスタ233の内容はライン2
48を介してライン252へ出力され、ハツシュ関数2
37に入力される。同様に、INREGOレジスタ23
5の内容はライン251及び253を介してハツシュ関
数237へ出力される。ハツシュ関数237の出力はラ
イン255を介してマルチプレクサ256へ伝送される
。
INREGIレジスタ233の内容は、マツチするスト
リングが見いだされない場合には、ライン248.25
4及び258を介して出力ビツト管理部260へ送られ
る。出力ビツト管理部260の目的は、生のデータバイ
ト及びストリングを適当なタグが付加されたビットスト
リングにコード化すること等にある。出力管理部260
の出力は、ライン262を介してビット−バイト変換器
264へ伝送される。次にこのデータはライン268を
介して出力F]FO234に入力される。
リングが見いだされない場合には、ライン248.25
4及び258を介して出力ビツト管理部260へ送られ
る。出力ビツト管理部260の目的は、生のデータバイ
ト及びストリングを適当なタグが付加されたビットスト
リングにコード化すること等にある。出力管理部260
の出力は、ライン262を介してビット−バイト変換器
264へ伝送される。次にこのデータはライン268を
介して出力F]FO234に入力される。
圧縮されたバイトは、出力F I F O234からラ
イン270を介して出力装置(第1a図の参照符号14
)へ出力される。
イン270を介して出力装置(第1a図の参照符号14
)へ出力される。
INREG!レジスタ233の内容は又、ライン248
.254及び272を介して内部マツチバッファ274
へ送られる。内部マツチバッファ274の目的は、マツ
チングプロセスの能力を効果的に向上させるための「ル
ノタアサイド(t。
.254及び272を介して内部マツチバッファ274
へ送られる。内部マツチバッファ274の目的は、マツ
チングプロセスの能力を効果的に向上させるための「ル
ノタアサイド(t。
okaslcie)Jバッファとして機能することにあ
る。マッチバ・yファ274の内容はバイト比較レジス
タ276の内容と比較される。マツチバッフ1の内容は
、ライン278上に多重化されてバイト比較レジスタ2
76へ送られる。バイト比較レジスタ276の内容は外
部のRAM23 g内に格納されている履歴アレイ10
2(第4図)から得られる。履歴アレイのエントリの内
容は、ライン280を介してラッチ282に入力され、
次に、ライン284及び286を介してバイト比較レジ
スタ276へ送られる。ブロック276によって実行さ
れるバイト比較の結果は、ライン288を介して圧縮コ
ントローラ及びシーケンスユニット230に伝達される
。圧縮コントローラ及びシーケンスユニット230は比
較結果を評価し、制御ライン(図示せず)を介して回路
228の様々な要素に適切な制御信号を送出する。
る。マッチバ・yファ274の内容はバイト比較レジス
タ276の内容と比較される。マツチバッフ1の内容は
、ライン278上に多重化されてバイト比較レジスタ2
76へ送られる。バイト比較レジスタ276の内容は外
部のRAM23 g内に格納されている履歴アレイ10
2(第4図)から得られる。履歴アレイのエントリの内
容は、ライン280を介してラッチ282に入力され、
次に、ライン284及び286を介してバイト比較レジ
スタ276へ送られる。ブロック276によって実行さ
れるバイト比較の結果は、ライン288を介して圧縮コ
ントローラ及びシーケンスユニット230に伝達される
。圧縮コントローラ及びシーケンスユニット230は比
較結果を評価し、制御ライン(図示せず)を介して回路
228の様々な要素に適切な制御信号を送出する。
I NREGOレジスタ235の内容は又、ライン25
1及び290を介してマルチプレクサ292へ送られ得
る。マルチプレクサ292は調停を行いINREGOの
内容をライン294を介してラッチ296へ送る。ラッ
チ296の内容は、ライン298を介してRAM238
内のデータ構造の履歴アレイ102(第4図)へ出力さ
れる。
1及び290を介してマルチプレクサ292へ送られ得
る。マルチプレクサ292は調停を行いINREGOの
内容をライン294を介してラッチ296へ送る。ラッ
チ296の内容は、ライン298を介してRAM238
内のデータ構造の履歴アレイ102(第4図)へ出力さ
れる。
ライン280を介してRAM238から入力されるデー
タは又、ラッチ282並びにライン284.300及び
302を介してレジスタ304へ送られる。このパス上
のデータは、NEXTと称される変数に格納された古い
ハツシュポインタを含んでいる。レジスタ304の内容
は、ライン305.306及び307を介してマルチプ
レクサ256へ出力される。レジスタ304の内容は又
、ライン305及び308を介してオフセットレジスタ
310に与えられる。オフセットレジスタ310の機能
については後述する。レジスタ304の内容は又、ライ
ン305.306及び312を介して、MATCHPT
Rのための変数内容を含むレジスタ314へ送られる。
タは又、ラッチ282並びにライン284.300及び
302を介してレジスタ304へ送られる。このパス上
のデータは、NEXTと称される変数に格納された古い
ハツシュポインタを含んでいる。レジスタ304の内容
は、ライン305.306及び307を介してマルチプ
レクサ256へ出力される。レジスタ304の内容は又
、ライン305及び308を介してオフセットレジスタ
310に与えられる。オフセットレジスタ310の機能
については後述する。レジスタ304の内容は又、ライ
ン305.306及び312を介して、MATCHPT
Rのための変数内容を含むレジスタ314へ送られる。
レジスタ314の出力(MATCHPTR)は、ライン
316を介してマルチプレクサ256へ送られる。レジ
スタ318の目的は、ポインタHPTRをインクリメン
トすることにある。レジスタ318の内容は、ライン3
20及び322を介してマルチプレクサ256へ送られ
る。他に、レジスタ31.8の出力は又、ライン320
及び324を介してオフセットレジスタ310へ送られ
る。オフセット関数(オフセットレジスタ310)の目
的は、履歴アレイ中の適切なオフセットを計算すること
、又はうイン324及び308を介してレジスタ318
及び304から入力されるデータからHPTR−NEX
Tを計算することにある。
316を介してマルチプレクサ256へ送られる。レジ
スタ318の目的は、ポインタHPTRをインクリメン
トすることにある。レジスタ318の内容は、ライン3
20及び322を介してマルチプレクサ256へ送られ
る。他に、レジスタ31.8の出力は又、ライン320
及び324を介してオフセットレジスタ310へ送られ
る。オフセット関数(オフセットレジスタ310)の目
的は、履歴アレイ中の適切なオフセットを計算すること
、又はうイン324及び308を介してレジスタ318
及び304から入力されるデータからHPTR−NEX
Tを計算することにある。
修正スイッチ328はライン330を介してオフセット
レジスタ310に与えられ、これによってオフセット関
数はライン324を介して入力される現在のHPTRの
みを出力するようになる。
レジスタ310に与えられ、これによってオフセット関
数はライン324を介して入力される現在のHPTRの
みを出力するようになる。
修正スイッチ328が、オフセット関数が定められるよ
うに設定された場合には、オフセット関数310の出力
は、マルチプレクサ292及び出力ビット管理部260
の何れかに送られる。該出力が出力ビツト管理部260
へ送られる場合には、それはライン332及び336を
介して送られる。
うに設定された場合には、オフセット関数310の出力
は、マルチプレクサ292及び出力ビット管理部260
の何れかに送られる。該出力が出力ビツト管理部260
へ送られる場合には、それはライン332及び336を
介して送られる。
オフセットは出力ビツト管理部260に於いて、コード
化ストリングにコード化される。他方、該出力はライン
332及び334を介してマルチプレクサ292へ送ら
れ、次にライン294を介してラッチ296へ、そして
ライン298を介してRAM238へ出力される。しか
し、修正スイッチ328が、オフセットレジスタ310
の出力が現在のHP T Rであるように設定された場
合には、該出力は、ライン294上の出力を調停するマ
ルチプレクサ292ヘライン332及び334を介して
送られる。
化ストリングにコード化される。他方、該出力はライン
332及び334を介してマルチプレクサ292へ送ら
れ、次にライン294を介してラッチ296へ、そして
ライン298を介してRAM238へ出力される。しか
し、修正スイッチ328が、オフセットレジスタ310
の出力が現在のHP T Rであるように設定された場
合には、該出力は、ライン294上の出力を調停するマ
ルチプレクサ292ヘライン332及び334を介して
送られる。
出力ビツト管理部260へのコード化のための長さ入力
は、回路図228の最下部に示されているレジスタ33
8によって維持されている。レジスタ338の出力はラ
イン340を介して出力ビツト管理部260に与えられ
る。回路図228の最上部には、リフレッシュ操作が行
われる前の現在のサイクルカウントを維持するリフレッ
シュカウンタ342が示されている。リフレッシュカウ
ンタ342の出力はライン344を介してマルチプレク
サ256へ送られる。マルチプレクサ256の目的は、
RAM238内の適切なデータ構造を選択するためにラ
イン344.316.322.307及び255上のア
ドレスの内の何れを出力するかを調停することにある。
は、回路図228の最下部に示されているレジスタ33
8によって維持されている。レジスタ338の出力はラ
イン340を介して出力ビツト管理部260に与えられ
る。回路図228の最上部には、リフレッシュ操作が行
われる前の現在のサイクルカウントを維持するリフレッ
シュカウンタ342が示されている。リフレッシュカウ
ンタ342の出力はライン344を介してマルチプレク
サ256へ送られる。マルチプレクサ256の目的は、
RAM238内の適切なデータ構造を選択するためにラ
イン344.316.322.307及び255上のア
ドレスの内の何れを出力するかを調停することにある。
8、シフトレジスタを いた 2の
第9図を参照し、シフトレジスタ構造を用いた実施例の
説明を行う。シフトレジスタアレイ103は、最大20
48キヤラクタの既に処理された入力データ(圧縮され
、又は生のデータとして圧縮されていない)を包含する
ことができる。データキャラクタはシフトレジスタ15
の各エントリに格納される。圧縮ユニット4(第1C図
)によって新たな入力データ受は取られると、本発明の
装置は該新たな入力データ中の少なくとも2バイトの「
ストリング」がシフトレジスタ103内のストリングに
マツチするか否かを判定する。マツチした場合には、入
力データのそのストリングはコード化され、マツチしな
い場合には、上述したようにそのストリングは生のデー
タとして提供される。
説明を行う。シフトレジスタアレイ103は、最大20
48キヤラクタの既に処理された入力データ(圧縮され
、又は生のデータとして圧縮されていない)を包含する
ことができる。データキャラクタはシフトレジスタ15
の各エントリに格納される。圧縮ユニット4(第1C図
)によって新たな入力データ受は取られると、本発明の
装置は該新たな入力データ中の少なくとも2バイトの「
ストリング」がシフトレジスタ103内のストリングに
マツチするか否かを判定する。マツチした場合には、入
力データのそのストリングはコード化され、マツチしな
い場合には、上述したようにそのストリングは生のデー
タとして提供される。
第9図についてより詳細に説明する。第9図にはシフト
レジスタアレイ103のごく一部のみが示されている。
レジスタアレイ103のごく一部のみが示されている。
即ち、2個のエントリHISTORY (J)及びHI
STORY (J+1)が示されている。任意の時間T
に於いて、シフトレジスタアレイ103の4番目のエン
トリの内容をHlSTORY (j、 T) (
j=1. ・・・、MEMSIZE)で表す。履歴ア
レイを用いた実施例では、シフトレジスタアレイは、実
際のシフトレジスタ回路を用いて、又は修正された連想
メモリアレイ等を用いて実現される。シフトレジスタエ
ントリ105及び107の出力側には、比較回路MAT
CH(j)109及びMATCH(J+1)111が設
けられている。これらの比較回路(MATCH(j)
(J=1. ・・・、MEMSIZE) は、シ
フトレジスタアレイの各エントリの出力及び同時伝送(
broadcas t)バイトライン115に接続され
ている。シフトレジスタアレイ中のマツチングストリン
グの有無をチエツクされている入カデータストリームは
、ライン115を介して同時伝送される。MATCHH
)回路109は、シフトレジスタエントリ105の出力
と、ライン115を介して同時伝送される入力データキ
ャラクタとを比較する。同時伝送されたデータキャラク
タがシフトレジスタエントリ105に格納されているキ
ャラクタに等しい場合には、MATCH(J)回路10
9に於いてビットが1に設定される。他方、同時伝送さ
れたバイトとエントリ105に格納されているキャラク
タとがマツチしない場合には、MATCH(J)回路1
091m於いてビットがOに設定される。入力データキ
ャラクタは、全ての比較回路(MATCH(j)(J=
1.・・・、MEMS I ZE))に同時に伝送され
る。換言すれば、シフトレジスタアレイ103の全ての
エントリについて、パイプラインの様式で動作が同時に
行われる。
STORY (J+1)が示されている。任意の時間T
に於いて、シフトレジスタアレイ103の4番目のエン
トリの内容をHlSTORY (j、 T) (
j=1. ・・・、MEMSIZE)で表す。履歴ア
レイを用いた実施例では、シフトレジスタアレイは、実
際のシフトレジスタ回路を用いて、又は修正された連想
メモリアレイ等を用いて実現される。シフトレジスタエ
ントリ105及び107の出力側には、比較回路MAT
CH(j)109及びMATCH(J+1)111が設
けられている。これらの比較回路(MATCH(j)
(J=1. ・・・、MEMSIZE) は、シ
フトレジスタアレイの各エントリの出力及び同時伝送(
broadcas t)バイトライン115に接続され
ている。シフトレジスタアレイ中のマツチングストリン
グの有無をチエツクされている入カデータストリームは
、ライン115を介して同時伝送される。MATCHH
)回路109は、シフトレジスタエントリ105の出力
と、ライン115を介して同時伝送される入力データキ
ャラクタとを比較する。同時伝送されたデータキャラク
タがシフトレジスタエントリ105に格納されているキ
ャラクタに等しい場合には、MATCH(J)回路10
9に於いてビットが1に設定される。他方、同時伝送さ
れたバイトとエントリ105に格納されているキャラク
タとがマツチしない場合には、MATCH(J)回路1
091m於いてビットがOに設定される。入力データキ
ャラクタは、全ての比較回路(MATCH(j)(J=
1.・・・、MEMS I ZE))に同時に伝送され
る。換言すれば、シフトレジスタアレイ103の全ての
エントリについて、パイプラインの様式で動作が同時に
行われる。
1個のバイトが同時伝送され、各比較回路(MATCH
(J=1.−、MEMS IZE)) に於いて比較さ
れた後、そのバイトはシフトレジスタ103の第1のエ
ントリにシフトインされ、アレイの各エレメントは下記
のように1だけ移動する。
(J=1.−、MEMS IZE)) に於いて比較さ
れた後、そのバイトはシフトレジスタ103の第1のエ
ントリにシフトインされ、アレイの各エレメントは下記
のように1だけ移動する。
HISTORY()+1.T+1)セ
HISTORY (J、T)
(J=1. ・・・、MEMSIZE−1)1−11
5TORY (1,T+1)=上記バイト処理は、各M
ATCH回路に於ける比較のためにライン115を介し
て同時伝送される入力データストリームの次のバイトに
ついて継続して行われる。
5TORY (1,T+1)=上記バイト処理は、各M
ATCH回路に於ける比較のためにライン115を介し
て同時伝送される入力データストリームの次のバイトに
ついて継続して行われる。
各比較回路MATCH(J)(J−1,・・・ MEM
S I ZE))は、ANDゲート及びフリップフロッ
プに関連付けられている。MATCH回路109、AN
Dゲート119及びフリップフロップ123は、アレイ
全体を代表する回路である。
S I ZE))は、ANDゲート及びフリップフロッ
プに関連付けられている。MATCH回路109、AN
Dゲート119及びフリップフロップ123は、アレイ
全体を代表する回路である。
同時に、ANDゲート119には、ANDゲート119
の先の出力を表すフリップフロップ123の出力が入力
される。ANDゲートl19の出力が1である場合には
、入力データについての現在及び過去の比較に於いてマ
ツチが得られている。
の先の出力を表すフリップフロップ123の出力が入力
される。ANDゲートl19の出力が1である場合には
、入力データについての現在及び過去の比較に於いてマ
ツチが得られている。
しかし、ANDゲートl19の出力が0である場合には
、入力データはシフトレジスタエントリ105の内容と
もはやマツチしていない。ANDゲ−1119及びフリ
ップフロップ123の目的は、入カデータストリームが
シフトレジスタエントリ105に格納されているデータ
キャラクタにもはや連続してマツチしていないことを検
出することにある。
、入力データはシフトレジスタエントリ105の内容と
もはやマツチしていない。ANDゲ−1119及びフリ
ップフロップ123の目的は、入カデータストリームが
シフトレジスタエントリ105に格納されているデータ
キャラクタにもはや連続してマツチしていないことを検
出することにある。
プレイの各フリップフロップは、5TRING(J、
T)と称されるビットを保持している。新たなストリ
ングが始まった場合には、5TRINGビツトはアレイ
全体の各フリップフロップに於いて入力117によって
iに設定される。即ち、5TRING (J、T)=1
(J=1. ・・・、 MEMS I ZE)。
T)と称されるビットを保持している。新たなストリ
ングが始まった場合には、5TRINGビツトはアレイ
全体の各フリップフロップに於いて入力117によって
iに設定される。即ち、5TRING (J、T)=1
(J=1. ・・・、 MEMS I ZE)。
比較回路に於いて新たな入力データバイトのそれぞれが
比較される度に、STRINGの値は次のように更新さ
れる。即ち、5TRING (J、T+1)=STRI
NG (J、T)XMATCH(J)。この操作はAN
Dゲート119に於いて行われる。従って、フリップフ
ロップ123の5TRINGビツトは、それが1に設定
され、シフトレジスタアレイ(HISTORY(J、T
))のエントリが入力バイトに等しく、MATCH(j
)が1になる場合、及びそのような場合のみに於いて、
セットされた状態で保たれる。
比較される度に、STRINGの値は次のように更新さ
れる。即ち、5TRING (J、T+1)=STRI
NG (J、T)XMATCH(J)。この操作はAN
Dゲート119に於いて行われる。従って、フリップフ
ロップ123の5TRINGビツトは、それが1に設定
され、シフトレジスタアレイ(HISTORY(J、T
))のエントリが入力バイトに等しく、MATCH(j
)が1になる場合、及びそのような場合のみに於いて、
セットされた状態で保たれる。
シフトレジスタアレイに2個の入力バイトが与えられた
後、全ての5TRINGビツトがクリア(又はOに設定
)された場合には、アレイ中にはマツチするストリング
が存在しない。他方、あるSTRINGビットがセット
(又はlに設定)されたままである場合には、アレイ中
の少なくとも1個のストリングがマツチしている。入力
されるバイトは、全てのSTRI NGビソトがOにク
リアされるまで同時伝送され、アレイにシフトインされ
る。他の実施態様では、無限のマツチングストリングが
発生することを避けるために、予め定められた最大数の
入力バイトが同時伝送され、アレイにシフトインされる
。
後、全ての5TRINGビツトがクリア(又はOに設定
)された場合には、アレイ中にはマツチするストリング
が存在しない。他方、あるSTRINGビットがセット
(又はlに設定)されたままである場合には、アレイ中
の少なくとも1個のストリングがマツチしている。入力
されるバイトは、全てのSTRI NGビソトがOにク
リアされるまで同時伝送され、アレイにシフトインされ
る。他の実施態様では、無限のマツチングストリングが
発生することを避けるために、予め定められた最大数の
入力バイトが同時伝送され、アレイにシフトインされる
。
各フリップフロップ119.121の出力(STRIN
G(J)、(J = 1. −、 MEMS I Z
E))は、一連のORゲート129に入力される。
G(J)、(J = 1. −、 MEMS I Z
E))は、一連のORゲート129に入力される。
全てのORゲート(1−13)がOになった場合には、
シフトレジスタ103にはもはやマツチするストリング
は存在しない。ステートマシン(Sta t e m
achine)の形をとるフントローラ131は、アレ
イ中の各エントリについてマッチの数を蓄積する。コン
トローラは、シフトレジスタアレイの各エントリのスト
リング長を追跡し、適切にコード化された各ストリング
の長さ及びエントリ及び/又は生のデータバイトを出力
する。
シフトレジスタ103にはもはやマツチするストリング
は存在しない。ステートマシン(Sta t e m
achine)の形をとるフントローラ131は、アレ
イ中の各エントリについてマッチの数を蓄積する。コン
トローラは、シフトレジスタアレイの各エントリのスト
リング長を追跡し、適切にコード化された各ストリング
の長さ及びエントリ及び/又は生のデータバイトを出力
する。
シフトレジスタアレイにN個のバイトが入力されると、
ストリングマツチの長さは、5TRINGビツトがセン
トされたバイトの数(N−1)えあり、ストリングマツ
チのオフセットは、シフトレジスタアレイ中でのエント
リの位置である。1個よりも多いマツチングストリング
が存在する場合には、優先コード化ネットワークが何れ
のマツチングストソングを採るかを決定する。履歴アレ
イを用いた実施例では、優先ネブトワー・りは、STR
I N’G (J’、 T十N−1)が0でないよう
な最小のインデクスjを返す〇 伸張を行うために、シフトレジスタアレイ103が用い
られる。このシナリオの下では、シフトし・ジスタアレ
イの内容は、コード化されたストリングのオフセットフ
ィールドを用いて、ランダムアクセスの手法でアクセス
される。入力された圧縮データストリームから生のバイ
トが取り出された場合には、そのバイトは、出カデータ
ストリームへ出力され、また、シフトレジスタアレイ1
03にシフト入力される。コード化されたストリングが
取り出された場合には、オフセットはシフトレジスタへ
の「アドレス」として使用され、そのバイトがシフトレ
ジスタから読み出され、シフトレジスタアレイ103に
シフト入力される。入力されるコード化データストリー
ムを前もって解析し、バイブラインアドレス先読み回路
を構築することにより、スルーブツトを最大化するため
にパイプライン技法を用いることができる。
ストリングマツチの長さは、5TRINGビツトがセン
トされたバイトの数(N−1)えあり、ストリングマツ
チのオフセットは、シフトレジスタアレイ中でのエント
リの位置である。1個よりも多いマツチングストリング
が存在する場合には、優先コード化ネットワークが何れ
のマツチングストソングを採るかを決定する。履歴アレ
イを用いた実施例では、優先ネブトワー・りは、STR
I N’G (J’、 T十N−1)が0でないよう
な最小のインデクスjを返す〇 伸張を行うために、シフトレジスタアレイ103が用い
られる。このシナリオの下では、シフトし・ジスタアレ
イの内容は、コード化されたストリングのオフセットフ
ィールドを用いて、ランダムアクセスの手法でアクセス
される。入力された圧縮データストリームから生のバイ
トが取り出された場合には、そのバイトは、出カデータ
ストリームへ出力され、また、シフトレジスタアレイ1
03にシフト入力される。コード化されたストリングが
取り出された場合には、オフセットはシフトレジスタへ
の「アドレス」として使用され、そのバイトがシフトレ
ジスタから読み出され、シフトレジスタアレイ103に
シフト入力される。入力されるコード化データストリー
ムを前もって解析し、バイブラインアドレス先読み回路
を構築することにより、スルーブツトを最大化するため
にパイプライン技法を用いることができる。
第10図に、第9図のシフトレジスタを用いたコード化
操作による結果のテーブルの一例を示す。
操作による結果のテーブルの一例を示す。
入力データストリームABCDが、−度に1キヤラクタ
ずつシフトレジスタアレイ103に同時伝送すれる。シ
フトレジスタエントリには、既に6キヤラクタABFA
BCが存在している。シフトレジスタアレイ103の第
1のエントリは、Cに等しい(HISTORY (1)
=C)。シフトレジスタアレイ103の第2のエントリ
はBである( HI S T ORY (2) 冨B
) o シフトレジスタアレイ103の第3のエント
リはAである(HISTORY (3)=A)。シフト
レジスタアレイ103の第4のエントリはFである(H
I 5TORY’(4)=F)。シフトレジスタアレイ
103の第5のエントリはBである(HI S TOR
Y (5)=8)。そして、シフトレジスタアレイ10
3の第6のエントリはAである(HISTORY(6)
−A)。同時伝送される第1の入力バイトはAである。
ずつシフトレジスタアレイ103に同時伝送すれる。シ
フトレジスタエントリには、既に6キヤラクタABFA
BCが存在している。シフトレジスタアレイ103の第
1のエントリは、Cに等しい(HISTORY (1)
=C)。シフトレジスタアレイ103の第2のエントリ
はBである( HI S T ORY (2) 冨B
) o シフトレジスタアレイ103の第3のエント
リはAである(HISTORY (3)=A)。シフト
レジスタアレイ103の第4のエントリはFである(H
I 5TORY’(4)=F)。シフトレジスタアレイ
103の第5のエントリはBである(HI S TOR
Y (5)=8)。そして、シフトレジスタアレイ10
3の第6のエントリはAである(HISTORY(6)
−A)。同時伝送される第1の入力バイトはAである。
MATCH回路によって実行される比較t1作の結果、
シフトレジスタエントリHISTORY (6)及びH
ISTORY (3)に於いて、2個のマツチが得られ
る。HISTORY(3〉及びHI S TORY (
6)での比較の結果、1に等しいMATCHビットが出
力される。残りのエントリではマツチが得られないため
、HISTORY (1)、)(I 5TORY (2
)、HlsTORY(4,)及びHISTORY(5)
から出力されるMATCHビットはOに等しい。入力バ
イトAはシフトレジスタアレイにシフト入力され、残り
のキャラクタはアレイの次のエントリヘシフトされる。
シフトレジスタエントリHISTORY (6)及びH
ISTORY (3)に於いて、2個のマツチが得られ
る。HISTORY(3〉及びHI S TORY (
6)での比較の結果、1に等しいMATCHビットが出
力される。残りのエントリではマツチが得られないため
、HISTORY (1)、)(I 5TORY (2
)、HlsTORY(4,)及びHISTORY(5)
から出力されるMATCHビットはOに等しい。入力バ
イトAはシフトレジスタアレイにシフト入力され、残り
のキャラクタはアレイの次のエントリヘシフトされる。
キャラクタAはここで、シフトレジスタアレイの第1の
ロケーション(HI 5TORY(1))を占有してい
る。同時伝送される次の入力バイトはBである。再び、
シフトレジスタエントリHl5TORY (3)及びH
ISTORY(6)に於いて2個のマツチが見いだされ
る。他の比較ではマツチが成立しないため、それらのエ
ントリの出力するMATCHビットは0に等しい。
ロケーション(HI 5TORY(1))を占有してい
る。同時伝送される次の入力バイトはBである。再び、
シフトレジスタエントリHl5TORY (3)及びH
ISTORY(6)に於いて2個のマツチが見いだされ
る。他の比較ではマツチが成立しないため、それらのエ
ントリの出力するMATCHビットは0に等しい。
もっともながいマツチングストリングは、シフトレジス
タエントリHI 5TORY (3) 及びシフトレジ
スタエントリHI 5TORY (6)に於いて生じる
ことに注意されたい。この時点で、双方は等しい2バイ
トの長さの等しいマツチングストリングを有している。
タエントリHI 5TORY (3) 及びシフトレジ
スタエントリHI 5TORY (6)に於いて生じる
ことに注意されたい。この時点で、双方は等しい2バイ
トの長さの等しいマツチングストリングを有している。
当然に、シフトレジスタエントリHISTORY(3)
及びHISTORY(6)についての5TRINGビツ
トはlのままである。従って、コントロー・う13mの
出力によってマツチが生じていることが示され、この例
では探索に対して制限が課されていないため、比較は継
続される。
及びHISTORY(6)についての5TRINGビツ
トはlのままである。従って、コントロー・う13mの
出力によってマツチが生じていることが示され、この例
では探索に対して制限が課されていないため、比較は継
続される。
入力バイトBは次にシフトレジスタアレイの第1のロケ
ーション(H[5TORY (1))にシフト入力され
、残りのキャラクタは、アレイの次のエントリヘシフト
される。同時伝送される次の入力バイトはCである。C
はシフトレジスタアレイのただ1個のエントリ(HI
5TORY (3)”)に於いてマツチする。シフトレ
ジスタエントリH1sTOR,Y(6)はFを包含して
おり、これは同時伝送されたバイトCに7・フチしない
。従って、最も長いマツチングストリングはシフトレジ
スタエントリHISTORY(3)に存在する。コント
ローラ131は、ソフトレジスタエントリHISTOR
Y (3)に於けるマツチの結果lのストリング長を蓄
積している。同時伝送されたバイトCは次にシフトレジ
スタアレイの第1のロケーションに入力され、他の全て
のバイトはアレイ中で次のエントリへシフトされる。
ーション(H[5TORY (1))にシフト入力され
、残りのキャラクタは、アレイの次のエントリヘシフト
される。同時伝送される次の入力バイトはCである。C
はシフトレジスタアレイのただ1個のエントリ(HI
5TORY (3)”)に於いてマツチする。シフトレ
ジスタエントリH1sTOR,Y(6)はFを包含して
おり、これは同時伝送されたバイトCに7・フチしない
。従って、最も長いマツチングストリングはシフトレジ
スタエントリHISTORY(3)に存在する。コント
ローラ131は、ソフトレジスタエントリHISTOR
Y (3)に於けるマツチの結果lのストリング長を蓄
積している。同時伝送されたバイトCは次にシフトレジ
スタアレイの第1のロケーションに入力され、他の全て
のバイトはアレイ中で次のエントリへシフトされる。
同時伝送される次の入力バイトはDである。入力バイト
Dに対してはマツチが得られない。従って、最も長いマ
ツチングストリングはシフトレジスタエントリHI 5
TORY (3)に於いて長さ3のキャラクタ列ABC
として見いだされている。
Dに対してはマツチが得られない。従って、最も長いマ
ツチングストリングはシフトレジスタエントリHI 5
TORY (3)に於いて長さ3のキャラクタ列ABC
として見いだされている。
エントリの位置及び長さのコード化は、第2図に示した
履歴アレイを用いた実施例によって定められる(110
000011.01)。
履歴アレイを用いた実施例によって定められる(110
000011.01)。
このように本発明は例を挙げて、特に履歴アレイを用い
た実施例について説明されたが、本発明はそれらに限定
されるものではない。本発明の本質的な精神及び範囲か
ら逸脱することなく本発明に対して更に様々な修正及び
改良を加えることができることが、当業者には理解され
るであろう。
た実施例について説明されたが、本発明はそれらに限定
されるものではない。本発明の本質的な精神及び範囲か
ら逸脱することなく本発明に対して更に様々な修正及び
改良を加えることができることが、当業者には理解され
るであろう。
4 ′ の な2口
第1a図は、本発明による履歴アレイを用いた実施例の
、圧縮されていないデータを受は取り、圧縮されたデー
タを出力する圧縮ユニットのブロック図である。
、圧縮されていないデータを受は取り、圧縮されたデー
タを出力する圧縮ユニットのブロック図である。
第1b図は、本発明による履歴アレイを用いた実施例の
、圧縮されたデータを受は取り、伸張されたデータを出
力する伸張ユニ・ブトのプロ1.り図である。
、圧縮されたデータを受は取り、伸張されたデータを出
力する伸張ユニ・ブトのプロ1.り図である。
第1C図は、本発明によるシフトレジスタを用いる実施
例の、圧縮されていないデータを受は取り、圧縮された
データを出力する圧縮ユニットのブロック図である。
例の、圧縮されていないデータを受は取り、圧縮された
データを出力する圧縮ユニットのブロック図である。
第1d図は、本発明によるシフトレジスタを用いる実施
例の、圧縮されたデータを受は取り、伸張されたデータ
を出力する伸張ユニブトのブロック図である。
例の、圧縮されたデータを受は取り、伸張されたデータ
を出力する伸張ユニブトのブロック図である。
第2図は、本発明の両方の実施例によって用いられる、
圧縮フォーマットを示す図である。
圧縮フォーマットを示す図である。
第3図は、両方の実施例の第2図に示された圧縮フォー
マットによる、圧縮コード化の単純化された例を示す図
である。
マットによる、圧縮コード化の単純化された例を示す図
である。
第4図は、入カデータストリームを探索するために、本
発明の両方の実施例によって提供されるデータ構造を示
す図である。
発明の両方の実施例によって提供されるデータ構造を示
す図である。
第5a図は、両方の実施例の入カデータストリームをコ
ード化するために、圧縮ユニット(第1a図)によって
行われる圧縮操作ルーチンのブロック流れ図である。
ード化するために、圧縮ユニット(第1a図)によって
行われる圧縮操作ルーチンのブロック流れ図である。
第5b図は、第4図に示されたデータ構造のハツシュテ
ーブルを初期化するために、圧縮操作ルーチン(第5a
図)で参照される初期化ルーチンのブロック流れ図であ
る。
ーブルを初期化するために、圧縮操作ルーチン(第5a
図)で参照される初期化ルーチンのブロック流れ図であ
る。
第5C図は、第4図に示されたデータ構造のハツシュテ
ーブルを部分的に再び初期化するために、圧縮操作ルー
チン(第5a図)で参照されるリフレッシュハツシュル
ーチンのブロック流れ図である。
ーブルを部分的に再び初期化するために、圧縮操作ルー
チン(第5a図)で参照されるリフレッシュハツシュル
ーチンのブロック流れ図である。
第6図は伸張操作ルーチンのブロック流れ図である。
第7図は、圧縮操作ルーチン(第5a図)のハードワイ
ヤード表現の概略ブロック図である。
ヤード表現の概略ブロック図である。
第8図は、外部RAMのFIFOのブロック図である。
第9図は、シフトレジスタアレイ内の2つのエントリを
表わす第2の実施例と、探索機能を実行するための関連
する回路のブロック図である。
表わす第2の実施例と、探索機能を実行するための関連
する回路のブロック図である。
第10図は、第2の実施例のシフトレジスタ内の、特定
の入力データストリングの探索を示す結果の表である。
の入力データストリングの探索を示す結果の表である。
4・・・圧縮ユニット、6・・・伸張ユニノド、16・
・・RAM、100・・・ハソシュテーブル、lO2・
・・履歴アレイ、103・・・シフトレジスタアレイ、
104・・・オフセノトアレイ、1.09,111・・
・比較回路。
・・RAM、100・・・ハソシュテーブル、lO2・
・・履歴アレイ、103・・・シフトレジスタアレイ、
104・・・オフセノトアレイ、1.09,111・・
・比較回路。
以上
Claims (1)
- 【特許請求の範囲】 1、各々が入力されたデータストリングを格納するため
の複数のエントリを有する履歴アレイ手段を備えたデー
タ圧縮システムに於いて、入力されたデータキャラクタ
ストリームを可変長符号化データストリームに変換する
方法であって、該入力されたデータストリームに適合す
る最長のデータストリングのサーチを該履歴アレイ手段
内で実行するステップ、 該履歴アレイ手段内で適合データストリングが見つかっ
た場合に、該適合データストリングが見つかつたことを
示す標識と、該適合データストリングの長さの可変長指
示子を含むストリング代替コードと、該適合データスト
リングの該履歴アレイ手段内での位置に対するポインタ
とを該可変長符号化データストリームに付加することに
よって該適合データストリングを符号化するステップ、
該履歴アレイ手段内で適合データストリングが見つから
なかった場合に、該履歴アレイ内で適合でストリングが
見つからなかったことを示す「生」データ標識と、該入
力データストリームの最初のキャラクタとを該可変長符
号化データストリームに付加することによって該入力デ
ータストリームの該最初のキャラクタを符号化するステ
ップを包含し、 それにより、該入力データストリームを可変長符号化デ
ータストリームに変換する方法。 2、前記最長適合データストリングのサーチを前記履歴
アレイ手段内で実行するステップが、該最長適合データ
ストリングに対する該履歴アレイ手段内の所定の数の照
会に該サーチを限定するステップを更に包含している請
求項1に記載の方法。 3、符号化されている前記入力データストリングの前記
入力データキャラクタを放棄するステップ、及び該入力
データストリームの残りの部分を符号化するために前記
方法の1個以上のステップを実行するステップを更に包
含している請求項2に記載の方法。 4、前記ポインタと¥長さ指示子¥を付加するステップ
が、前記入力データストリームの2個のキャラクタの適
合ストリングが2個以下の符号化出力キャラクタに圧縮
されることを確実にする所定の戦略に従う符号化体系に
よって、該ポインタと可変長指示子を表すステップを更
に包含している請求項1又は3に記載の方法。 5、前記最長適合データストリングのサーチを前記履歴
アレイ手段内で実行するステップが、ハッシング関数を
実行するステップを更に包含している請求項1に記載の
方法。 6、前記データ圧縮システムが、前記履歴アレイ手段内
の最新のエントリを示す履歴アレイポインタと、各々が
該履歴アレイポインタ内へのポインタを格納するための
複数のエントリを有するハッシュテーブル手段と、各々
が該履歴アレイ手段のエントリの1個とのリンクを与え
る複数のエントリを有するオフセットアレイ手段とを更
に備え、前記ハッシング関数を実行するステップが、該
ハッシュテーブル手段のエントリの1個に対するポイン
タを与える、該ハッシュ関数の結果を得るステップ、 該ハッシュ関数の結果により示されている該ハッシュテ
ーブルエントリに格納されている該ポインタを得るステ
ップ、 該履歴アレイポインタと、該ハッシュテーブル手段から
読み出された該ポインタとの間の差を計算するステップ
、 該履歴アレイポインタにより示されているオフセットア
レイ手段エントリ内に該差を格納するステップ、及び 該ハッシュ関数により示されている該ハッシュテーブル
エントリ内に該履歴アレイポインタを格納するステップ を更に包含している請求項5に記載の方法。 7、前記履歴アレイポインタを前記履歴アレイ手段内の
次のエントリに増加し、前記履歴アレイ手段の該次のエ
ントリをハッシュするために前記方法の1個以上の要素
を実行するステップを更に包含している請求項6に記載
の方法。 8、前記ステップが、前記ハッシュテーブルエントリの
各々に於いて格納されているポインタを周期的に調べて
、該エントリのポインタが前記履歴アレイポインタより
も所定量だけ異なっているかどうかを決定するためのス
テップを更に包含している請求項5に記載の方法。 9、前記ステップが、前記差が前記所定量よりも大きい
場合、前記ハッシュテーブル内の該エントリを無効値と
置き換えて、該エントリを再初期化するステップを更に
包含している請求項8に記載の方法。 10、前記可変長符号化データストリームの伸長の間に
検出された圧縮化データマーカの終りを、符号化データ
に付加する前記方法を完了するステップを更に包含して
いる請求項1に記載の方法。 11、前記ハッシュテーブルの全てのエントリを無効値
と置き換えることによって該ハッシュテーブルを初期化
するステップを更に包含している請求項1に記載の方法
。 12、前記可変長符号化データストリームを復号するス
テップを更に包含し、該ステップは、該可変長符号化デ
ータストリームを、各々が前記標識の1個で始まってい
る別々の部分にパーズするステップ、 該別々の部分の各々の該標識を、該標識が前記生データ
標識であるのか、前記符号化適合データストリングを示
す前記標識であるのかどうかを決定するために、評価す
るステップ を包含している請求項1に記載の方法。 13、前記標識が前記符号化適合データストリングを示
す場合、該適合データストリングを発生させるために、
前記長さ指示子と代替コードの前記ポインタとを解釈し
、それによって元の入力データストリームの部分を再構
築するステップを更に包含している請求項12に記載の
方法。 14、前記標識が前記生データ標識を示す場合、前記符
号化入力データストリームの前記最初のキャラクタを得
て、それによって元の入力データストリームの部分を再
構築するステップを更に包含している請求項12に記載
の方法。 15、各々が入力されたデータストリングを格納するた
めの複数のエントリを有する履歴アレイ手段を備えたデ
ータ圧縮システムに於いて、入力されたデータキャラク
タストリングを可変長符号化データストリームに変換す
るための装置であって、 該入力されたデータストリームに適合する最長のデータ
ストリングのサーチを該履歴アレイ手段内で実行する手
段、 該履歴アレイ手段内で適合データストリングが見つかっ
た場合に、該適合データストリングが見つかったことを
示す標識と、該適合データストリングの長さの可変長指
示子を含むストリング代替コードと、該適合データスト
リングの該履歴アレイ手段内での位置に対するポインタ
とを該可変長符号化データストリームに付加することに
よって該適合データストリングを符号化する手段、該履
歴アレイ手段内で適合データストリングが見つからなか
った場合に、該履歴アレイ内で適合でストリングが見つ
からなかったことを示す「生」データ標識と、該入力デ
ータストリームの最初のキャラクタとを該可変長符号化
データストリームに付加することによって該入力データ
ストリームの該最初のキャラクタを符号化する手段 を備えており、 それにより、該入力データストリームを可変長符号化デ
ータストリームに変換する装置。 16、前記最長適合データストリングのサーチを前記履
歴アレイ手段内で実行する手段が、該最長適合データス
トリングに対する該履歴アレイ手段内の所定の数の照会
に該サーチを限定する手段を更に包含している請求項1
5に記載の装置。 17、符号化されている前記入力データストリングの前
記入力データキャラクタを放棄する手段、及び該入力デ
ータストリームの残りの部分を符号化するために前記装
置の1個以上の要素を実施する手段を更に備えている請
求項16に記載の装置。 18、前記ポインタと¥長さ指示子¥を付加する手段が
、前記入力データストリームの2個のキャラクタの適合
ストリングが2個以下の符号化出力キャラクタに圧縮さ
れることを確実にする所定の戦略に従う符号化体系によ
って、該ポインタと可変長指示子を表す手段を更に備え
ている請求項15又は18に記載の装置。 19、前記最長適合データストリングのサーチを前記履
歴アレイ手段内で実行する手段が、ハッシング関数を実
行する手段を更に備えている請求項15に記載の装置。 20、前記データ圧縮システムが、前記履歴アレイ手段
内の最新のエントリを示す履歴アレイポインタと、各々
が該履歴アレイポインタ内へのポインタを格納するため
の複数のエントリを有するハッシュテーブル手段と、各
々が該履歴アレイ手段のエントリの1個とのリンクを与
える複数のエントリを有するオフセットアレイ手段とを
更に備え、前記ハッシング関数を実行する手段が、該ハ
ッシュテーブル手段のエントリの1個に対するポインタ
を与える、該ハッシュ関数の結果を得る手段、 該ハッシュ関数の結果により示されている該ハッシュテ
ーブルエントリに格納されている該ポインタを得る手段
、 該履歴アレイポインタと、該ハッシュテーブル手段から
読み出された該ポインタとの間の差を計算する手段、 該履歴アレイポインタにより示されているオフセットア
レイ手段エントリ内に該差を格納する手段、及び 該ハッシュ関数により示されている該ハッシュテーブル
エントリ内に該履歴アレイポインタを格納する手段 を更に備えている請求項19に記載の装置。 21、前記履歴アレイポインタを前記履歴アレイ手段内
の次のエントリに増加する手段、及び前記履歴アレイ手
段の該次のエントリをハッシュするために前記方法の1
個以上の要素を実行する手段を更に備えている請求項2
0に記載の装置。 22、前記手段が、前記ハッシュテーブルエントリの各
々に於いて格納されているポインタを周期的に調べて、
該エントリのポインタが前記履歴アレイポインタよりも
所定量だけ異なっているかどうかを決定する手段を更に
備えている請求項19に記載の装置。 23、前記手段が、前記差が前記所定量よりも大きい場
合、前記ハッシュテーブル内の該エントリを無効値と置
き換えて、該エントリを再初期化する手段を更に備えて
いる請求項22に記載の装置。 24、前記可変長符号化データストリームの伸長の間に
検出された圧縮化データマーカの終りを、符号化データ
に付加する前記装置を完了する手段を更に備えている請
求項15に記載の装置。 25、前記ハッシュテーブルの全てのエントリを無効値
と置き換えることによって該ハッシュテーブルを初期化
する手段を更に備えている請求項15に記載の装置。 26、前記可変長符号化データストリームを復号する手
段を更に備え、該手段は、 該可変長符号化データストリームを、各々が前記標識の
1個で始まっている別々の部分にパーズする手段、 該別々の部分の各々の該標識を、該標識が前記生データ
標識であるのか、前記符号化適合データストリングを示
す前記標識であるのかどうかを決定するために、評価す
る手段 を備えている請求項15に記載の装置。 27、前記標識が前記符号化適合データストリングを示
す場合、該適合データストリングを発生させるために、
前記長さ指示子と代替コードの前記ポインタとを解釈し
、それによって元の入力データストリームの部分を再構
築する手段を更に備えている請求項26に記載の装置。 28、前記標識が前記生データ標識を示す場合、前記符
号化入力データストリームの前記最初のキャラクタを得
て、それによって元の入力データストリームの部分を再
構築する手段を更に備えている請求項27に記載の装置
。 29、前記履歴アレイ手段、前記履歴アレイ手段、前記
履歴テーブル手段又はハッシュテーブル手段及び前記オ
フセットアレイ手段、並びに1個以上のFIFOバッフ
ァの一部を含むRAMを更に備え、前記符号化された又
は復号化されたデータストリームが該FIFOバッファ
に一時的に格納され、それによってデータ転送能力が向
上した請求項28に記載の装置。 30、各々が入力データストリームの複数のデータキャ
ラクタの1個を格納するためのエントリを有する、適合
入力データストリングのためのシフトレジスタ手段内で
サーチを行うための装置であって、 該入力データストリームの入力データキャラクタを、該
シフトレジスタの各エントリへ同時伝送する手段、 該シフトレジスタの各エントリの該格納されているデー
タキャラクタの各々を、該シフトレジスタの他のエント
リにシフトする手段、 該シフトレジスタの各エントリのために、該エントリの
該格納されているデータキャラクタを該同時伝送された
入力データキャラクタと比較して、該格納されているデ
ータキャラクタが該同時伝送された入力データキャラク
タと適合するかどうかを決定する手段、及び 該シフトレジスタの各エントリのための該比較の結果を
別々に蓄積する手段 を備えている装置。 31、前記シフトレジスタの各エントリのために、結果
の前記蓄積を格納する手段を更に備えている請求項30
に記載の装置。 32、前記比較の格納されている結果を、後の同時伝送
されたキャラクタのための結果と比較する手段を更に備
えている請求項31に記載の装置。 33、前記入力データキャラクタストリームを可変長符
号化データストリームに変換する手段を更に備え、該変
換手段が、 前記シフトレジスタ手段内で適合データストリングが見
つかった場合に、該適合データストリングが見つかった
ことを示す標識と、該適合データストリングの長さの可
変長指示子を含むストリング代替コードと、該適合デー
タストリングの少なくとも1個のキャラクタを有する該
シフトレジスタの該エントリのポインタとを該符号化デ
ータストリームに付加することによって該適合データス
トリングを符号化する手段、 該シフトレジスタ手段内で適合データストリングが見つ
からなかった場合に、「生」データ標識と、該入力デー
タストリングの最初のキャラクタとを該可変長符号化デ
ータストリームに付加することによって該入力データス
トリングの該最初のキャラクタを符号化する手段 を備えており、 それにより、該入力データストリングを可変長符号化デ
ータストリームに変換する請求項30に記載の装置。 34、適合結果の前記蓄積を評価して、該蓄積のどれが
最長適合データストリングに対しているのかを判断する
手段を更に備えている請求項30に記載の装置。 35、前記シフトレジスタ手段の前記サーチを、前記入
力データストリームの入力データキャラクタの所定量に
限定する手段を更に備えている請求項30に記載の装置
。 36、適合データストリングの2個以上が同じ長さであ
ると判断された場合、適合データストリングに優先順位
をつける手段を更に備えている請求項35に記載の装置
。 37、前記優先順位をつける手段が、最先の適合データ
ストリングを選択する手段を更に備えている請求項36
に記載の装置。 38、前記可変長符号化データストリームを復号する手
段を更に備え、該手段は、 該符号化データストリームを、各々が前記標識の1個で
始まっている別々の部分にパーズする手段、 該別々の部分の各々の該標識を、該標識が前記生データ
標識であるのか、前記符号化適合データストリングを示
す前記標識であるのかどうかを決定するために、評価す
る手段 を備えている請求項33に記載の装置。 39、前記標識が前記符号化適合データストリングを示
す場合、前記長さ指示子と該適合データストリングを発
生させるための代替コードの前記ポインタとを解釈する
手段を更に備え、 それによって元の入力データストリームの部分を再構築
する請求項38に記載の装置。 40、前記標識が前記生データ標識を示す場合、前記符
号化入力データストリームの前記最初のキャラクタを得
て、それによって元の入力データストリームの部分を再
構築する手段を更に備えている請求項39に記載の装置
。 41、各々が入力されたデータストリームのデータキャ
ラクタを格納するための複数のエントリを有するシフト
レジスタ手段を備えたデータ圧縮システムに於いて、入
力されたデータキャラクタリームを可変長符号化データ
ストリームに変換する方法に於いて、 該入力されたデータストリームに適合する最長のデータ
ストリングのサーチを該シフトレジスタ手段内で実行す
るステップであって、該入力データストリームの各入力
データキャラクタを該シフトレジスタ手段の各エントリ
に同時伝送するステップ、各入力データキャラクタを該
シフトレジスタの各エントリと同時に比較するステップ
、及び各入力データキャラクタを該シフトレジスタ手段
に入力するステップを含むステップ、 該履歴アレイ手段又はシフトレジスタ手段内で最長適合
データストリングが見つかった場合に、該適合データス
トリングが見つかったことを示す標識と、該適合データ
ストリングの長さの可変長指示子を含むストリング代替
コードと、該適合データストリングの該シフトレジスタ
手段の該エントリのポインタとを該符号化データストリ
ームに付加することによって該適合データストリングを
符号化するステップ、 該シフトレジスタ手段内で適合データストリングが見つ
からなかった場合に、「生」データ標識と、該入力デー
タストリームの最初のキャラクタとを該可変長符号化デ
ータストリームに付加することによって該入力データス
トリームの該最初のキャラクタを符号化するステップ を包含し、 それにより、該入力データストリームを可変長符号化デ
ータストリームに変換する方法。 42、前記最長適合データストリングのために前記シフ
トレジスタ内で前記サーチを実行するステップが、該サ
ーチを前記入力データストリームの入力データキャラク
タの所定量に限定するステップを包含している請求項4
1に記載の方法。 43、符号化されている前記入力データストリームの前
記入力データキャラクタを放棄するステップ、及び該入
力データストリームの残りの部分を符号化するステップ
を更に包含している請求項41に記載の方法。 44、前記ポインタと長さ指示子を付加するステップが
、前記入力データストリームの2個のキャラクタの適合
ストリングが2個以下の符号化出力キャラクタに圧縮さ
れることを確実にする符号化体系によって、該ポインタ
と該長さ指示子を表すステップを更に包含している請求
項41に記載の方法。 45、前記可変長符号化データストリームを復号するス
テップを更に包含し、該ステップは、該可変長符号化デ
ータストリームを、各々が前記標識の1個で始まってい
る別々の部分にパーズするステップ、 該別々の部分の標識を、該標識の何れかが前記生データ
標識であるのか、前記符号化適合データストリングを示
す前記標識であるのかどうかを決定するために、評価す
るステップ を包含している請求項41に記載の方法。 46、前記標識が前記符号化適合データストリングを示
す場合、該適合データストリングを発生させるために、
前記長さ指示子と代替コードの前記ポインタとを解釈し
、それによって元の入力データストリームの部分を再構
築するステップを更に包含している請求項45に記載の
方法。 47、前記標識が前記生データ標識を示す場合、前記符
号化入力データストリームの前記最初のキャラクタを得
て、それによって元の入力データストリームの部分を再
構築するステップを更に包含している請求項45に記載
の方法。 48、各々が入力されたデータストリームのデータキャ
ラクタを格納するための複数のエントリを有するシフト
レジスタ手段を備えたデータ圧縮システムに於いて、入
力されたデータキャラクタリームを可変長符号化データ
ストリームに変換する装置であって、 該入力されたデータストリームに適合する最長のデータ
ストリングのサーチを該シフトレジスタ手段内で実行す
る手段、該入力データストリームの各入力データキャラ
クタを該シフトレジスタ手段の各エントリに同時伝送す
る手段、及び該入力データストリームを該シフトレジス
タの各エントリと同時に比較する手段、 該履歴アレイ手段又はシフトレジスタ手段内で最長適合
データストリングが見つかった場合に、該適合データス
トリングが見つかったことを示す標識と、該適合データ
ストリングの長さの可変長指示子を含むストリング代替
コードと、該適合データストリングの該シフトレジスタ
の該エントリのポインタとを該符号化データストリーム
に付加することによつて該適合データストリングを符号
化する手段、 該シフトレジスタ手段内で適合データストリングが見つ
からなかった場合に、「生」データ標識と、該入力デー
タストリームの最初のキャラクタとを該可変長符号化デ
ータストリームに付加することによって該入力データス
トリームの該最初のキャラクタを符号化する手段 を備え、 それにより、該入力データストリームを可変長符号化デ
ータストリームに変換する装置。 49、前記最長適合データストリングのために前記シフ
トレジスタ内で前記サーチを実行する手段が、該サーチ
を前記入力データストリームの入力データキャラクタの
所定量に限定する手段を更に備えている請求項48に記
載の装置。 50、符号化されている前記入力データストリームの前
記入力データキャラクタを放棄し、該入カデータストリ
ームの残りの部分を符号化する手段を更に備えている請
求項48に記載の装置。 51、前記ポインタと長さ指示子を付加する前記手段が
、前記入力データストリームの2個のキャラクタの適合
ストリングが2個以下の符号化出力キャラクタに圧縮さ
れることを確実にする符号化体系によって、該ポインタ
と該長さ指示子を表す手段を更に備えている請求項48
に記載の装置。 52、前記可変長符号化データストリームを復号する手
段を更に備え、該手段は、 該可変長符号化データストリームを、各々が前記標識の
1個で始まっている別々の部分にパーズする手段、 該別々の部分の標識を、各々の該標識が前記生データ標
識であるのか、前記符号化適合データストリングを示す
前記標識であるのかどうかを判断するために、評価する
手段 を更に備えている請求項48に記載の装置。 53、前記標識が前記符号化適合データストリングを示
す場合、該適合データストリングを発生させるために、
前記長さ指示子と代替コードの前記ポインタとを解釈し
、それによって元の入力データストリームの部分を再構
築する手段を更に包含している請求項52に記載の装置
。 54、前記標識が前記生データ標識を示す場合、前記符
号化入力データストリームの前記最初のキャラクタを得
て、それによって元の入力データストリームの部分を再
構築する手段を更に備えている請求項53に記載の装置
。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/297,152 US5016009A (en) | 1989-01-13 | 1989-01-13 | Data compression apparatus and method |
US297,152 | 1989-10-06 | ||
US418,034 | 1989-10-06 | ||
US07/418,034 US5003307A (en) | 1989-01-13 | 1989-10-06 | Data compression apparatus with shift register search means |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6159042A Division JPH07111460A (ja) | 1989-01-13 | 1994-07-11 | データ圧縮装置及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0368219A true JPH0368219A (ja) | 1991-03-25 |
JP2713369B2 JP2713369B2 (ja) | 1998-02-16 |
Family
ID=26970006
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006057A Expired - Lifetime JP2713369B2 (ja) | 1989-01-13 | 1990-01-12 | データ圧縮装置及び方法 |
JP6159042A Pending JPH07111460A (ja) | 1989-01-13 | 1994-07-11 | データ圧縮装置及び方法 |
JP36352699A Expired - Fee Related JP3238143B2 (ja) | 1989-01-13 | 1999-12-21 | データ圧縮装置及び方法 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6159042A Pending JPH07111460A (ja) | 1989-01-13 | 1994-07-11 | データ圧縮装置及び方法 |
JP36352699A Expired - Fee Related JP3238143B2 (ja) | 1989-01-13 | 1999-12-21 | データ圧縮装置及び方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5003307A (ja) |
JP (3) | JP2713369B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06224778A (ja) * | 1992-08-10 | 1994-08-12 | Stac Electron Inc | マッチングストリング探索およびハフマン符合化を用いたデータ圧縮装置および方法 |
JPH0795093A (ja) * | 1993-07-08 | 1995-04-07 | Internatl Business Mach Corp <Ibm> | 順次データ圧縮アルゴリズムを実行する装置及び方法 |
JPH07111460A (ja) * | 1989-01-13 | 1995-04-25 | Stac Inc | データ圧縮装置及び方法 |
US5883588A (en) * | 1994-10-04 | 1999-03-16 | Nec Corporation | Data compression system and data compression device for improving data compression rate and coding speed |
US6268809B1 (en) | 1997-12-05 | 2001-07-31 | Kabushiki Kaisha Toshiba | Data compression method for efficiently compressing data based on data periodicity |
Families Citing this family (151)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR930003416B1 (ko) * | 1988-03-29 | 1993-04-29 | 주식회사 금성사 | 폰트의 함축방법 |
GB8815978D0 (en) * | 1988-07-05 | 1988-08-10 | British Telecomm | Method & apparatus for encoding decoding & transmitting data in compressed form |
US5532694A (en) * | 1989-01-13 | 1996-07-02 | Stac Electronics, Inc. | Data compression apparatus and method using matching string searching and Huffman encoding |
US5146221A (en) * | 1989-01-13 | 1992-09-08 | Stac, Inc. | Data compression apparatus and method |
US5452451A (en) * | 1989-06-15 | 1995-09-19 | Hitachi, Ltd. | System for plural-string search with a parallel collation of a first partition of each string followed by finite automata matching of second partitions |
US5001478A (en) | 1989-12-28 | 1991-03-19 | International Business Machines Corporation | Method of encoding compressed data |
US5184126A (en) | 1989-12-28 | 1993-02-02 | International Business Machines Corporation | Method of decompressing compressed data |
US5010345A (en) | 1989-12-28 | 1991-04-23 | International Business Machines Corporation | Data compression method |
DE69123660T2 (de) * | 1990-08-13 | 1997-04-17 | Fujitsu Ltd., Kawasaki, Kanagawa | Datenkompressionsmethode und Gerät |
US5237460A (en) * | 1990-12-14 | 1993-08-17 | Ceram, Inc. | Storage of compressed data on random access storage devices |
US5490260A (en) * | 1990-12-14 | 1996-02-06 | Ceram, Inc. | Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size |
US5414530A (en) * | 1991-03-12 | 1995-05-09 | Canon Kabushiki Kaisha | Image recording method and apparatus |
US5150430A (en) * | 1991-03-15 | 1992-09-22 | The Board Of Trustees Of The Leland Stanford Junior University | Lossless data compression circuit and method |
US5179378A (en) * | 1991-07-30 | 1993-01-12 | University Of South Florida | Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques |
US5159336A (en) * | 1991-08-13 | 1992-10-27 | Iomega Corporation | Tape controller with data compression and error correction sharing a common buffer |
US5175543A (en) * | 1991-09-25 | 1992-12-29 | Hewlett-Packard Company | Dictionary reset performance enhancement for data compression applications |
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 |
US5243341A (en) * | 1992-06-01 | 1993-09-07 | Hewlett Packard Company | Lempel-Ziv compression scheme with enhanced adapation |
CA2077271C (en) * | 1991-12-13 | 1998-07-28 | David J. Craft | Method and apparatus for compressing data |
US5396228A (en) * | 1992-01-16 | 1995-03-07 | Mobile Telecommunications Technologies | Methods and apparatus for compressing and decompressing paging data |
US5406278A (en) * | 1992-02-28 | 1995-04-11 | Intersecting Concepts, Inc. | Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique |
US5371499A (en) * | 1992-02-28 | 1994-12-06 | Intersecting Concepts, Inc. | Data compression using hashing |
US5339076A (en) * | 1992-04-27 | 1994-08-16 | Integrated Information Technology | Data compression using content addressable memory |
US5353024A (en) * | 1992-05-01 | 1994-10-04 | Intersecting Concepts, Inc. | Method for data compression having an improved encoding algorithm which utilizes a token stacking technique |
US5485526A (en) * | 1992-06-02 | 1996-01-16 | Hewlett-Packard Corporation | Memory circuit for lossless data compression/decompression dictionary storage |
US5649151A (en) * | 1992-06-29 | 1997-07-15 | Apple Computer, Inc. | Efficient method and apparatus for access and storage of compressed data |
US5734892A (en) * | 1992-06-29 | 1998-03-31 | Apple Computer, Inc. | Efficient method and apparatus for access and storage of compressed data |
US5469161A (en) * | 1992-08-13 | 1995-11-21 | International Business Machines Corporation | Algorithm for the implementation of Ziv-Lempel data compression using content addressable memory |
US5406279A (en) * | 1992-09-02 | 1995-04-11 | Cirrus Logic, Inc. | General purpose, hash-based technique for single-pass lossless data compression |
US5389922A (en) * | 1993-04-13 | 1995-02-14 | Hewlett-Packard Company | Compression using small dictionaries with applications to network packets |
US5521597A (en) * | 1993-08-02 | 1996-05-28 | Mircosoft Corporation | Data compression for network transport |
US5406280A (en) * | 1993-08-26 | 1995-04-11 | Commerce Clearing House | Data retrieval system using compression scheme especially for serial data stream |
US5499382A (en) * | 1993-09-20 | 1996-03-12 | Nusinov; Eugene B. | Circuit and method of bit-packing and bit-unpacking using a barrel shifter |
SG44604A1 (en) * | 1993-09-20 | 1997-12-19 | Codex Corp | Circuit and method of interconnecting content addressable memory |
US5384568A (en) * | 1993-12-02 | 1995-01-24 | Bell Communications Research, Inc. | Data compression |
US5602764A (en) * | 1993-12-22 | 1997-02-11 | Storage Technology Corporation | Comparing prioritizing memory for string searching in a data compression system |
US5563595A (en) * | 1993-12-23 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for compressing data |
JP3397431B2 (ja) * | 1994-03-16 | 2003-04-14 | 富士通株式会社 | データ圧縮方法および装置ならびにデータ復元方法および装置 |
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 |
JP3522331B2 (ja) * | 1994-04-22 | 2004-04-26 | 株式会社セタ | データ圧縮方法 |
US5502439A (en) * | 1994-05-16 | 1996-03-26 | The United States Of America As Represented By The United States Department Of Energy | Method for compression of binary data |
US5532693A (en) * | 1994-06-13 | 1996-07-02 | Advanced Hardware Architectures | Adaptive data compression system with systolic string matching logic |
EP0696107B1 (en) * | 1994-08-01 | 2002-01-16 | OpenTV, Inc. | Method for compressing and decompressing data files |
US5883975A (en) * | 1994-09-12 | 1999-03-16 | Nippon Steel Corporation | Compression and decompression methods on two-dimensional image data |
US5617517A (en) * | 1994-09-20 | 1997-04-01 | Seiko Epson Corporation | Two-dimensional method and system for compressing bi-level images |
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 |
US6460036B1 (en) | 1994-11-29 | 2002-10-01 | Pinpoint Incorporated | System and method for providing customized electronic newspapers and target advertisements |
US6571279B1 (en) * | 1997-12-05 | 2003-05-27 | Pinpoint Incorporated | Location enhanced information delivery system |
US5758257A (en) * | 1994-11-29 | 1998-05-26 | Herz; Frederick | System and method for scheduling broadcast of and access to video programs and other data using customer profiles |
US5684478A (en) * | 1994-12-06 | 1997-11-04 | Cennoid Technologies, Inc. | Method and apparatus for adaptive data compression |
US5608396A (en) * | 1995-02-28 | 1997-03-04 | International Business Machines Corporation | Efficient Ziv-Lempel LZI data compression system using variable code fields |
US5771010A (en) * | 1995-03-22 | 1998-06-23 | Ibm Corporation | Apparatus for compressing data using a Lempel-Ziv-type algorithm |
US5627534A (en) * | 1995-03-23 | 1997-05-06 | International Business Machines Corporation | Dual stage compression of bit mapped image data using refined run length and LZ compression |
US5526363A (en) * | 1995-05-16 | 1996-06-11 | Telco Systems, Inc. | Multicontext compression system with shared data structures |
US5619591A (en) * | 1995-08-23 | 1997-04-08 | Vtech Electronics, Ltd. | Encoding and decoding color image data based on mean luminance and an upper and a lower color value |
JP3273119B2 (ja) * | 1995-09-29 | 2002-04-08 | 京セラ株式会社 | データ圧縮・伸長装置 |
US5659755A (en) * | 1995-11-20 | 1997-08-19 | International Business Machines Corporation | Method and system in a data processing system for efficiently compressing data using a sorting network |
US5933104A (en) * | 1995-11-22 | 1999-08-03 | Microsoft Corporation | Method and system for compression and decompression using variable-sized offset and length fields |
JP3566441B2 (ja) * | 1996-01-30 | 2004-09-15 | シャープ株式会社 | テキスト圧縮用辞書作成装置 |
US5729223A (en) * | 1996-03-20 | 1998-03-17 | Motorola Inc. | Method and apparatus for data compression and restoration |
US6023558A (en) * | 1996-06-27 | 2000-02-08 | Apple Computer, Inc. | Graphics compression for an emulation system |
US5951623A (en) * | 1996-08-06 | 1999-09-14 | Reynar; Jeffrey C. | Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases |
US5760716A (en) * | 1996-08-21 | 1998-06-02 | Autodesk, Inc. | Vector data compression |
JP3540109B2 (ja) * | 1996-12-24 | 2004-07-07 | 富士通株式会社 | データ圧縮方法及び装置 |
US6374250B2 (en) * | 1997-02-03 | 2002-04-16 | International Business Machines Corporation | System and method for differential compression of data from a plurality of binary sources |
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 |
US5930790A (en) * | 1997-09-25 | 1999-07-27 | Xerox Corporation | String-match array for substitutional compression |
JP3327869B2 (ja) * | 1998-07-28 | 2002-09-24 | ゼロックス・コーポレーション | 最小マッチ長が3のプリマッチストリングマッチアレイ |
US6952823B2 (en) * | 1998-09-01 | 2005-10-04 | Pkware, Inc. | Software patch generator using compression techniques |
US6275588B1 (en) | 1998-11-12 | 2001-08-14 | I-Data International A/S | Apparatus and method for performing and controlling encryption/decryption for data to be transmitted on local area network |
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6377930B1 (en) | 1998-12-14 | 2002-04-23 | Microsoft Corporation | Variable to variable length entropy encoding |
US6300888B1 (en) | 1998-12-14 | 2001-10-09 | Microsoft Corporation | Entrophy code mode switching for frequency-domain audio coding |
US6404931B1 (en) | 1998-12-14 | 2002-06-11 | Microsoft Corporation | Code book construction for variable to variable length entropy encoding |
US6822589B1 (en) | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US7129860B2 (en) * | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US7538694B2 (en) * | 1999-01-29 | 2009-05-26 | Mossman Holdings Llc | Network device with improved storage density and access speed using compression techniques |
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 |
US6208273B1 (en) | 1999-01-29 | 2001-03-27 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data compression |
US6819271B2 (en) | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
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 |
US6604158B1 (en) * | 1999-03-11 | 2003-08-05 | Realtime Data, Llc | System and methods for accelerated data storage and retrieval |
US6601104B1 (en) | 1999-03-11 | 2003-07-29 | Realtime Data Llc | System and methods for accelerated data storage and retrieval |
US7630986B1 (en) | 1999-10-27 | 2009-12-08 | Pinpoint, Incorporated | Secure data interchange |
US6318156B1 (en) * | 1999-10-28 | 2001-11-20 | Micro Motion, Inc. | Multiphase flow measurement system |
US20030191876A1 (en) * | 2000-02-03 | 2003-10-09 | Fallon James J. | Data storewidth accelerator |
US6748457B2 (en) | 2000-02-03 | 2004-06-08 | Realtime Data, Llc | Data storewidth accelerator |
US6947884B2 (en) * | 2000-03-02 | 2005-09-20 | Texas Instruments Incorporated | Scan interface with TDM feature for permitting signal overlay |
US20060155788A1 (en) * | 2000-03-09 | 2006-07-13 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060143249A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20050015608A1 (en) | 2003-07-16 | 2005-01-20 | Pkware, Inc. | Method for strongly encrypting .ZIP files |
US20060143180A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US8230482B2 (en) | 2000-03-09 | 2012-07-24 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060173847A1 (en) * | 2000-03-09 | 2006-08-03 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060143237A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060173848A1 (en) * | 2000-03-09 | 2006-08-03 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US6879988B2 (en) * | 2000-03-09 | 2005-04-12 | Pkware | System and method for manipulating and managing computer archive files |
US20060143253A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US20060143199A1 (en) * | 2000-03-09 | 2006-06-29 | Pkware, Inc. | System and method for manipulating and managing computer archive files |
US7844579B2 (en) * | 2000-03-09 | 2010-11-30 | Pkware, Inc. | 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 |
EP1148649A1 (en) * | 2000-04-17 | 2001-10-24 | I-Data International A/S | Method and apparatus for data compression |
MXPA03000418A (es) | 2000-07-13 | 2003-07-14 | Belo Company | Sistema y metodo para asociar informacion historica con datos sensoriales y distribucion de los mismos. |
US6348881B1 (en) * | 2000-08-29 | 2002-02-19 | Philips Electronics No. America Corp. | Efficient hardware implementation of a compression algorithm |
US8692695B2 (en) | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US9143546B2 (en) | 2000-10-03 | 2015-09-22 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US7417568B2 (en) * | 2000-10-03 | 2008-08-26 | Realtime Data Llc | System and method for data feed acceleration and encryption |
US6515598B2 (en) | 2000-12-22 | 2003-02-04 | Cilys 53, Inc. | System and method for compressing and decompressing data in real time |
US7386046B2 (en) * | 2001-02-13 | 2008-06-10 | Realtime Data Llc | Bandwidth sensitive data compression and decompression |
US6392571B1 (en) | 2001-05-10 | 2002-05-21 | International Business Machines Corporation | String search apparatus and method for data compression |
US7382878B2 (en) * | 2001-06-22 | 2008-06-03 | Uponus Technologies, Llc | System and method for data encryption |
CA2358048A1 (en) * | 2001-09-25 | 2003-03-25 | Luis Rueda | A cryptosystem for data security |
JP3906792B2 (ja) * | 2002-01-22 | 2007-04-18 | 松下電器産業株式会社 | 高周波信号受信装置とその製造方法 |
US6624762B1 (en) | 2002-04-11 | 2003-09-23 | Unisys Corporation | Hardware-based, LZW data compression co-processor |
US8516588B1 (en) * | 2002-05-02 | 2013-08-20 | Verizon Patent And Licensing Inc. | String detection system and method of detecting a string |
US6714145B1 (en) | 2002-09-26 | 2004-03-30 | Richard Marques | Method and apparatus for integer-based encoding and decoding of bits |
US9614772B1 (en) | 2003-10-20 | 2017-04-04 | F5 Networks, Inc. | System and method for directing network traffic in tunneling applications |
US7079051B2 (en) * | 2004-03-18 | 2006-07-18 | James Andrew Storer | In-place differential compression |
US8024483B1 (en) | 2004-10-01 | 2011-09-20 | F5 Networks, Inc. | Selective compression for network connections |
US7634502B2 (en) * | 2005-01-24 | 2009-12-15 | Paul Colton | System and method for improved content delivery |
US7734686B2 (en) * | 2005-01-25 | 2010-06-08 | International Business Machines Corporation | Markup method for managing rich client code and experiences using multi-component pages |
US7109895B1 (en) * | 2005-02-01 | 2006-09-19 | Altera Corporation | High performance Lempel Ziv compression architecture |
US7937510B1 (en) | 2005-02-01 | 2011-05-03 | Altera Corporation | Lempel Ziv compression architecture |
US7215259B2 (en) * | 2005-06-03 | 2007-05-08 | Quantum Corporation | Data compression with selective encoding of short matches |
US7783781B1 (en) | 2005-08-05 | 2010-08-24 | F5 Networks, Inc. | Adaptive compression |
US8533308B1 (en) | 2005-08-12 | 2013-09-10 | F5 Networks, Inc. | Network traffic management through protocol-configurable transaction processing |
US8275909B1 (en) | 2005-12-07 | 2012-09-25 | F5 Networks, Inc. | Adaptive compression |
US7882084B1 (en) | 2005-12-30 | 2011-02-01 | F5 Networks, Inc. | Compression of data transmitted over a network |
US7873065B1 (en) | 2006-02-01 | 2011-01-18 | F5 Networks, Inc. | Selectively enabling network packet concatenation based on metrics |
US8565088B1 (en) | 2006-02-01 | 2013-10-22 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
US7417570B2 (en) * | 2006-07-31 | 2008-08-26 | Sap Ag | Lossless comparative compression and transmission method and system |
US9356824B1 (en) | 2006-09-29 | 2016-05-31 | F5 Networks, Inc. | Transparently cached network resources |
US8417833B1 (en) | 2006-11-29 | 2013-04-09 | F5 Networks, Inc. | Metacodec for optimizing network data compression based on comparison of write and read rates |
FR2910998A1 (fr) * | 2007-01-03 | 2008-07-04 | St Microelectronics Sa | Protection d'une donnee statique dans un circuit integre. |
US9106606B1 (en) | 2007-02-05 | 2015-08-11 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
JP4801778B2 (ja) | 2007-10-18 | 2011-10-26 | 富士通株式会社 | 映像圧縮符号化装置、映像復元装置、映像圧縮プログラム、及び、映像復元プログラム |
US8107754B2 (en) * | 2007-12-07 | 2012-01-31 | Mediatek Inc. | Systems and methods for randomly accessing compressed images |
WO2010113674A1 (ja) | 2009-03-30 | 2010-10-07 | 日本電気株式会社 | 情報処理システム、情報圧縮装置、情報復元装置、情報処理方法及びそのプログラム |
US8750370B2 (en) * | 2009-09-04 | 2014-06-10 | Brocade Communications Systems, Inc. | Congestion-adaptive compression |
JP5251799B2 (ja) | 2009-09-15 | 2013-07-31 | 株式会社リコー | データ処理装置およびデータ処理方法 |
JP6003059B2 (ja) | 2012-01-05 | 2016-10-05 | 株式会社リコー | 画像処理装置および画像処理方法、ならびに、画像形成装置 |
US8868584B2 (en) | 2012-01-13 | 2014-10-21 | International Business Machines Corporation | Compression pattern matching |
KR101809923B1 (ko) * | 2012-01-17 | 2017-12-20 | 엘지전자 주식회사 | 가전기기, 가전기기 진단장치 및 그 방법 |
US8775776B2 (en) | 2012-01-18 | 2014-07-08 | International Business Machines Corporation | Hash table using hash table banks |
US8779950B2 (en) | 2012-03-05 | 2014-07-15 | Dcba, Llc | Command encoded data compression |
US8766827B1 (en) * | 2013-03-15 | 2014-07-01 | Intel Corporation | Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression |
US9864536B2 (en) * | 2013-10-24 | 2018-01-09 | Qualcomm Incorporated | System and method for conserving power consumption in a memory system |
US9543980B2 (en) | 2014-10-10 | 2017-01-10 | Massachusettes Institute Of Technology | Systems and methods for model-free compression and model-based decompression |
US9450606B1 (en) | 2015-10-01 | 2016-09-20 | Seagate Technology Llc | Data matching for hardware data compression |
US10171103B1 (en) | 2018-01-12 | 2019-01-01 | Mellanox Technologies, Ltd. | Hardware data compression architecture including shift register and method thereof |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4021782A (en) * | 1974-01-07 | 1977-05-03 | Hoerning John S | Data compaction system and apparatus |
US3976844A (en) * | 1975-04-04 | 1976-08-24 | Honeywell Information Systems, Inc. | Data communication system for transmitting data in compressed form |
US4054951A (en) * | 1976-06-30 | 1977-10-18 | International Business Machines Corporation | Data expansion apparatus |
US4464650A (en) * | 1981-08-10 | 1984-08-07 | Sperry Corporation | Apparatus and method for compressing data signals and restoring the compressed data signals |
US4412230A (en) * | 1981-09-21 | 1983-10-25 | Wavetek Indiana, Inc. | Apparatus and method for producing images on a photosensitive media |
US4491934A (en) * | 1982-05-12 | 1985-01-01 | Heinz Karl E | Data compression process |
US4463422A (en) * | 1982-07-12 | 1984-07-31 | Csp, Inc. | Method of processing an iterative program loop |
US4538240A (en) * | 1982-12-30 | 1985-08-27 | International Business Machines Corporation | Method and apparatus for performing hashing operations using Galois field multiplication |
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 |
US4588985A (en) * | 1983-12-30 | 1986-05-13 | International Business Machines Corporation | Polynomial hashing |
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 |
US4876541A (en) * | 1987-10-15 | 1989-10-24 | Data Compression Corporation | Stem for dynamically compressing and decompressing electronic data |
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 |
-
1989
- 1989-10-06 US US07/418,034 patent/US5003307A/en not_active Expired - Fee Related
-
1990
- 1990-01-12 JP JP2006057A patent/JP2713369B2/ja not_active Expired - Lifetime
-
1994
- 1994-07-11 JP JP6159042A patent/JPH07111460A/ja active Pending
-
1999
- 1999-12-21 JP JP36352699A patent/JP3238143B2/ja not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07111460A (ja) * | 1989-01-13 | 1995-04-25 | Stac Inc | データ圧縮装置及び方法 |
JPH06224778A (ja) * | 1992-08-10 | 1994-08-12 | Stac Electron Inc | マッチングストリング探索およびハフマン符合化を用いたデータ圧縮装置および方法 |
JPH0795093A (ja) * | 1993-07-08 | 1995-04-07 | Internatl Business Mach Corp <Ibm> | 順次データ圧縮アルゴリズムを実行する装置及び方法 |
US5883588A (en) * | 1994-10-04 | 1999-03-16 | Nec Corporation | Data compression system and data compression device for improving data compression rate and coding speed |
US6268809B1 (en) | 1997-12-05 | 2001-07-31 | Kabushiki Kaisha Toshiba | Data compression method for efficiently compressing data based on data periodicity |
WO2004084415A1 (ja) * | 1997-12-05 | 2004-09-30 | Akira Saito | データの周期性に着目して効率的に圧縮するデータ圧縮方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3238143B2 (ja) | 2001-12-10 |
JP2713369B2 (ja) | 1998-02-16 |
JP2000201081A (ja) | 2000-07-18 |
JPH07111460A (ja) | 1995-04-25 |
US5003307A (en) | 1991-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0368219A (ja) | データ圧縮装置及び方法 | |
US5126739A (en) | Data compression apparatus and method | |
US5506580A (en) | Data compression apparatus and method | |
US5016009A (en) | Data compression apparatus and method | |
JP2610084B2 (ja) | データ伸長方法および装置ならびにデータ圧縮伸長方法および装置 | |
US5532694A (en) | Data compression apparatus and method using matching string searching and Huffman encoding | |
EP0666651B1 (en) | Apparatus and method for lempel ziv data compression with management of multiple dictionaries in content addressable memory | |
US5406279A (en) | General purpose, hash-based technique for single-pass lossless data compression | |
CA2263453C (en) | A lempel-ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases | |
US5058144A (en) | Search tree data structure encoding for textual substitution data compression systems | |
JP2863065B2 (ja) | マッチングストリング探索およびハフマン符号化を用いたデータ圧縮装置および方法ならびにデータ伸長装置および方法 | |
US4906991A (en) | Textual substitution data compression with finite length search windows | |
AU637826B2 (en) | Improved data compression apparatus | |
Bell | Better OPM/L text compression | |
JPH07104971A (ja) | ネットワークパケットに適用される小型辞書を用いた圧縮方法 | |
WO1998006028A9 (en) | A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases | |
JPH0869370A (ja) | データ圧縮方法およびシステム | |
WO1995019662A1 (en) | Data compression apparatus and method | |
US6507877B1 (en) | Asynchronous concurrent dual-stream FIFO | |
US6535150B1 (en) | Method and apparatus for implementing run-length compression | |
EP0079442B1 (en) | Data translation apparatus translating between raw and compression encoded data forms | |
EP0340039A2 (en) | Search tree data structure encoding for textual substitution data compression systems | |
JP3061278B2 (ja) | 可変ビット長コード語のビット長通信方法 | |
Bloom | New Techniques in Context Modeling and Arithmetic Encoding. | |
WO2001018742A2 (en) | Index relational processor |