JPH0879092A - データを圧縮及び圧縮解除するための方法及び装置 - Google Patents

データを圧縮及び圧縮解除するための方法及び装置

Info

Publication number
JPH0879092A
JPH0879092A JP7206924A JP20692495A JPH0879092A JP H0879092 A JPH0879092 A JP H0879092A JP 7206924 A JP7206924 A JP 7206924A JP 20692495 A JP20692495 A JP 20692495A JP H0879092 A JPH0879092 A JP H0879092A
Authority
JP
Japan
Prior art keywords
code
token
data
length
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7206924A
Other languages
English (en)
Other versions
JP2986076B2 (ja
Inventor
Henry R Farmer
ヘンリー・ルドルフ・ファーマー
Anne A Wilson
アン・アバ・ウィルソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0879092A publication Critical patent/JPH0879092A/ja
Application granted granted Critical
Publication of JP2986076B2 publication Critical patent/JP2986076B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 (修正有) 【課題】レンペル・ジフ型の圧縮アルゴリズムに従って
圧縮された情報に対する高速のデータ圧縮解除を提供す
る。 【解決の手段】圧縮解除装置1500は、制御回路15
10で受け取ったデータ・エレメントをレジスタ18記
憶するためのヒストリRAM1530、及び圧縮トーク
ンを受け取りそして書込みカウンタ1540や読取りカ
ウンタ1560でそのトークンに含まれた長さ及びアド
レス情報から次のデータ・エレメントの記憶アドレスを
決定するためのトークン長カウンタ1570を含む。こ
の装置は、所定長のカテゴリを使用して、次アドレスを
並列処理によって高速度で識別することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データを圧縮する
ための、及びその圧縮されたデータを対応的に圧縮解除
するための装置及び方法に関するものであり、更に詳し
く云えば、レンペル・ジフ(Lempel−Ziv)タ
イプのアルゴリズムに従って圧縮されたデータの圧縮解
除に関するものである。
【0002】
【従来の技術】基本的なレンペル・ジフのアルゴリズム
は、1977年9月発行の「IEEE Transaction on Info
rmation Theory」の530乃至536ページにおける L
empel及び Ziv による記事「可変比率コーディングによ
る個別シーケンスの圧縮(Compression of Individual
Sequence via Variable Rate Coding)」に開示されて
おり、それは効果的なデータ圧縮のための基礎として有
用であったし、特に、最近では、高速データ通信ための
基礎として関心を得ている。
【0003】そのレンペル・ジフのアルゴリズムの基本
的な実施方法が図1乃至図3に示される。(N+1)バ
イト長のシフトレジスタ10は、事前に処理されたデー
タを一時的に記憶するために使用される。処理されるべ
き新しいデータが事前に処理されていた場合、そのシフ
ト・レジスタにおけるそれら事前に処理されたデータの
ストリングの長さ及び相対アドレスを含むトークンが生
成されるであろう。一般に、事前に処理されたデータ・
バイトのそのようなストリングを含む新しいデータは、
そのデータ・ストリング自身に含まれる情報ビットより
も少ない情報ビットを使用して表現可能である。従っ
て、そのデータ・ストリングは効果的に圧縮される。し
かし、処理されるべき新しいデータがそのシフト・レジ
スタに存在する或る前のデータ・ストリングの部分を形
成しない場合には圧縮はあり得ず、トークンは、この状
態を特別に意味するように生成されなければならない。
一般に、そのようなトークンは、データそのものよりも
わずかに多い情報ビットを使用して表現されなければな
らず、従って、事実上の拡大である。全体的には、圧縮
されたデータ・ストリングからのゲインは、通常、非圧
縮データ・ストリングからの損失を超えるので、結果と
して、データ全体の圧縮が生じる。データ・ストリーム
内に反復するデータ・ストリングがない場合、そのデー
タ・ストリームをこの技法によって圧縮することはでき
ない。
【0004】図2は、事前に処理されたデータを参照す
るトークンの生成を示す。その所与の例では、値A、
B、C、及びDは事前に処理され、現在、アドレス3
7、36、35、及び34においてシフト・レジスタに
記憶されている。処理されるべき値は、A、B、C、及
びEである。その新しいデータは3の長さを持ったスト
リングABCを含み、そのストリングは相対アドレス3
7における事前に記憶されたストリングABCと一致す
る。一旦そのストリングを記述したトークンが生成され
ると、値A、B、及びCがシフト・レジスタにロードさ
れ、そして値A、B、C、及びDが新しいアドレスまで
シフト・レジスタをシフト・ダウンされるので、そのア
ドレスは相対的なものである。シフト・レジスタにおけ
るデータのアドレスは、その後に処理されたデータ値の
数に関連する。
【0005】図3は、事前記憶されたデータを参照する
第2トークンの生成を示す。その所与の例では、値A、
B、C、及びZが処理されるべきものである。新しいデ
ータは3の長さを持ったストリングABCを含み、その
ストリングは、相対アドレス3及び41における事前に
記憶されたストリングABCに一致する。この例におい
て生成されたトークンは、通常、3という小さい方の相
対アドレスである。トークンは事前に処理されたストリ
ングのカウント及び相対アドレスを含み、「カウント、
相対アドレス」として表される。図2及び図3に示され
た値A、B、C、E、A、B、C、及びZの圧縮の結果
として、その生成され処理された出力は、(3、3
7)、E、(3、3)、Zを含むであろう。
【0006】レンペル・ジフの圧縮技法の実施に伴う1
つの問題は、前の一致したストリングに対するサーチ動
作を効果的な処理速度で遂行することの難しさである。
この問題は、圧縮過程において相対アドレス又は関連ア
ドレスを、それらアドレスが変更されるような使用を行
うことから生じる。特に、図1乃至図3に関連して説明
したように、相対アドレシング法は、事前に処理された
データ・ワードを各ワード素子に1ワードずつ保持する
ために、シフト・レジスタの使用を必要とする。送られ
てきた各データ・ワードはシフト・レジスタの第1位置
へシフトされ、一方、事前に処理されたデータ・ワード
はすべて隣接位置へシフトされる。更に、シフト・レジ
スタの各素子に対してランダム・アクセス機能が必要と
なる。これは、単一のランダム・アクセス・メモリより
もずっと多くの回路、チップ領域、及び実施のための電
力を必要とする。
【0007】レンペル・ジフの圧縮アルゴリズムを実施
するための種々の技法が提案されており、それらの多く
は、次のような発行された特許に見られるように、より
効果的なトークン・エンコーディングを使用することに
よって得られるサーチ動作の速度又は圧縮の量を改善す
ることに焦点を合わせている。
【0008】米国特許第5,150,430号は、並列シ
フト・レジスタ・ベースの圧縮装置を使用してデータを
圧縮するためのレンペル・ジフのアルゴリズム及び記憶
された長さ値とタリー値とを比較するデコーダの使用に
関するものである。
【0009】米国特許第5,153,591号は、圧縮デ
ィクショナリのためのツリー構造を持った簡易化された
レンペル・ジフのアルゴリズムを利用するデータ圧縮及
び圧縮解除に関するものである。
【0010】米国特許第5,179,378号は、レンペ
ル・ジフの技法を使用し且つ並列プロセッサのシストリ
ック・アレーを使用するデータ圧縮及び圧縮解除に関す
るものである。この場合、コード・ワードは固定長のも
のであり、コードの長さ及び開始点を表す。
【0011】米国特許第5,226,119号は、グラフ
ィック・ディスプレイ・コントローラと関連したバレル
・シフト回路の使用に関するものである。
【0012】米国特許第5,243,341号は、拡張的
に修正適合されたレンペル・ジフの圧縮技法に関するも
のであり、2つディクショナリを使用し、第1ディクシ
ョナリがリセットされる時に第2ディクショナリが待機
用として使用されるものである。
【0013】米国特許第5,247,638号は、動的に
マップされた仮想データ記憶システムにおいてデータを
圧縮するための装置に関するものである。
【0014】米国特許第5,262,776号は、データ
・シーケンスのうちの部分的シーケンスのデータ圧縮の
ためのレンペル・ジフのアルゴリズムに関するものであ
り、更に詳しく云えば、複写されたイメージの画素のイ
メージ値の個別のコサイン変換係数から基本シーケンス
を生成ための技法に関するものである。
【0015】一般的には、レンペル・ジフのアルゴリズ
ムに基づくシステムに関して、送信された情報を正確に
且つ完全に取り出すためには、圧縮されたデータの圧縮
解除は、必要な回路、チップ領域、及びパワーの複雑さ
に関して同様の困難さに遭遇する。
【0016】レンペル・ジフのアルゴリズムによってエ
ンコードされるデータのデコーディングに関する特許は
次のようなものである。即ち、米国特許第5,058,1
37号は、レンペル・ジフ・デコーダに関するものであ
り、米国特許第5,245,338号は、バレル・シフタ
回路を使用するレンペル・ジフのエンコードされたデー
タのための高速可変長デコーダに関するものである。
【0017】
【発明が解決しようとする課題】本発明の目的は、レン
ペル・ジフ型の圧縮アルゴリズムに従って圧縮された情
報に対する高速のデータ圧縮解除を提供することにあ
る。
【0018】本発明のもう1つの目的は、コード長及び
アドレス情報を使用してデータをエンコードするレンペ
ル・ジフ・タイプのアルゴリズムを使うシステム、特
に、データをエンコードするために使用される所定数の
コード長値が存在するシステムにおいて高速のデータ圧
縮解除を提供することにある。
【0019】本発明の更にもう1つの目的は、レンペル
・ジフ型のアルゴリズムによってエンコードされた情報
の高速圧縮解除のための方法及び装置を提供することに
あり、その方法では、すべての可能なコード長値が同時
に識別され且つその圧縮解除されたデータの並列的決定
において使用される。
【0020】本発明の更にもう1つの目的は、データ圧
縮システムにおける可変長データ項目を処理するための
方法及び装置を提供することにあり、その場合、コード
項目は対応する可変長コード情報と共に可変長で伝送さ
れ、複数個のアドレスを持ったメモリにおいて受領さ
れ、そして記憶される。更に、その方法及び装置は、実
際の長さを識別するために各コード項目の長さに対応し
たコード・ビットをデコードすることに関連しそして後
続のコード項目の開始アドレスを平行決定するために第
1コード項目の可変長の可能性すべてをその第1コード
項目の開始アドレスに加えるためのものである。
【0021】
【課題を解決するための手段】上記の目的は、次のよう
な本発明の処理装置によって達成される。即ち、圧縮さ
れた可変長のデータ項目をデータ圧縮システムにおいて
処理するための装置において、可変長コード項目を記憶
するためのコード記憶手段であって、該コード項目の各
々は対応する可変長データ項目を表し、所定数の可能な
可変長コード・ケースのうちの1つにおける対応する数
のコード・ビットを含むコード記憶手段と、記憶された
前記コード・ビットをデコードし、前記可能な可変長コ
ード・ケースのうちの1つにおける長さケースを識別す
る信号を出力するためのデコード手段と、第2のコード
項目に対する複数個の可能な開始アドレスを生成するた
めに、前記可変長コード・ケースの各々におけるコード
・ビットの数と第1のコード項目の開始アドレスとの和
を同時に発生するための発生手段と、前記デコード手段
によって出力された信号に基づいて前記第2のコード項
目に対する前記複数個の可能な開始アドレスのうちの1
つを選択するための手段と、を含む処理装置。
【0022】
【発明の実施の形態】データ圧縮及び圧縮解除のために
レンペル・ジフ型のアルゴリズムを使用することができ
るいくつかのシステム設計がある。図4及び図5は、固
定及び相対アドレシング法を使用してデータ圧縮を達成
する種々のシステム構成を示す。図4に示されるよう
に、コンピュータ100は、システム・メモリ110と
コミュニケートする中央処理装置(CPU)105を含
む。そのCPUは、バス112を介して入出力チャネル
又はアダプタ115及び120ともコミュニケートす
る。CPUは、それら入出力チャネルを介して他のコン
ピュータ・システム125、テープ・ドライブ130、
ディスク・ドライブ135、又は光ディスクのような他
の入出力装置138とコミュニケートする。又、コンピ
ュータ100はバス112を介して圧縮・圧縮解除エン
ジン140も有する。その圧縮・圧縮解除エンジンは圧
縮エンジン141及び圧縮解除エンジン142を含む。
これらエンジンは、入出力チャネルを介して送信及び受
信されるデータの圧縮又は圧縮解除を行うためにCPU
において走るオペレーティング・システムのファイル・
ハンドラによって呼び出し可能である。それらエンジン
は、所望のデータの圧縮又は圧縮解除を遂行する間、シ
ステム・メモリ110又はオプショナル・メモリ145
を利用することができる。オプショナル・メモリ145
が使用される場合、圧縮された又は圧縮解除されたデー
タはオプショナル・バス147を介してI/Oチャネル
に及びI/Oチャネルから直接に送信可能である。
【0023】図5は、CPU155及びシステム・メモ
リ160を含むコンピュータ150を示す。そのCPU
は、バス162を介して入出力チャネル又はアダプタ1
65及び170とコミュニケートする。CPU155
は、それら入出力チャネルを介して他のコンピュータ・
システム175、テープ・ドライブ180、ディスク・
ドライブ185、又は他の入出力装置188とコミュニ
ケートすることが可能である。それら入出力チャネルに
は、それら入出力チャネルを通過する或るデータ又はす
べてのデータを圧縮及び圧縮解除するための圧縮・圧縮
解除エンジン190及び194が接続される。それら圧
縮・圧縮解除エンジンは圧縮エンジン191、195及
び圧縮解除エンジン192、196を含む。それらエン
ジンは、バッファとして働き且つデータが圧縮又は圧縮
解除された時にスペース管理タスクを処理するためのオ
プショナル・メモリ198及び199を有することも可
能である。
【0024】相対的アドレシング技法を使用し得る他の
多くの代替システムがある。例えば、サーバのような1
つのコンピュータ・システムは、それに送られたすべて
のデータを圧縮するためのデータ圧縮エンジンを含み、
一方、残りのコンピュータ・システムは、それぞれ、そ
れらがサーバから受け取るすべてのデータを圧縮解除す
るための圧縮解除エンジンを含むことが可能である。
【0025】A.圧縮技法 前述のように、図1乃至図3に関して検討したレンペル
・ジフの技法のハードウエア実施は相対的アドレシング
法を使用する。
【0026】もう1つのレンペル・ジフ型の圧縮法は固
定アドレスを使用する。固定アドレシング法は、記憶さ
れた事前処理のデータがメモリにおける一定のロケーシ
ョンに残ることを可能にする。これは、全処理式ストリ
ング照合プロセスを遂行しながら、各ワード・オペレー
ションに対する少ないサーチ・オーバヘッドの要件でも
って非常に簡単な高速のハードウエア・エンコーダ及び
デコーダの実施を可能にする。データ・ワードを記憶す
るために固定アドレスを使用する1つの明らかな利点
は、データ・ワードが追加の回路を必要とするレジスタ
からレジスタへのシフトを必要としないことである。
【0027】従来の技術のところで述べたレンペル・ジ
フ・ベースの方法(「LZ1」タイプのアルゴリズムと
呼ばれる)を使用する時、整合(matching)ス
トリングのスタート・アドレス及び長さが計算され、エ
ンコードされ、そしてトークンとして発生される。例え
ば、生のワード・トークンは、その生のワードが0に後
続するものとして発生される。圧縮されたワード・トー
クンは、整合ストリングの長さのバイナリ表示及びメモ
リ・アレーにおけるその整合ストリングの開始ロケーシ
ョンを識別する一連のビットが1に後続するものとして
送られる。複数個の1でもって始まり、制御命令を指定
する4ビットが後続する制御トークンも発生可能であ
る。最後に、圧縮されたデータの終わりを指定するため
に、終了トークンが送られる。その終了トークンは一列
になった13個の1である。
【0028】下記の表1は、圧縮されたデータ・ワード
・ストリングの長さを指定するために使用されるコード
を示す。このタイプのコーディングは修正対数コーディ
ングであり、短いストリングが短いコードを利用し、長
いストリングが長いコードを利用する。これは、短いス
トリングの周波数が長いストリングの周波数よりも実質
的に大きい時に有用なコーディング技法である。メモリ
・アレーが2Kサイズを有する場合の実施例では、変位
(displacement)は11ビット値でもって
指定される。メモリ・アレーが少ないセクション及び小
さいサイズ、例えば、1K又は512バイト・サイズを
有する時、短い変位が使用可能である。その表では、5
つのグループの可能なコード長があり、各グループは
2、4、6、8、又は12ビットより成ることに留意す
べきである。
【0029】
【表1】圧縮されたワード長を指定するために使用され
るコード
【0030】上記の圧縮アルゴリズムを働かせる方法の
概要を、フレーズ "the boythe dog" の
圧縮に関する簡単な例でもって示すことができる。既に
説明したように、上記LZ1アルゴリズムは、データ・
ストリームにおける文字の反復シーケンスを見つけるこ
とによってデータを圧縮する。例えば、そのフレーズ "
the boy the dog" において、ワード "
the" はそのセンテンスにおいて反復し、従って、圧
縮可能である。その圧縮は、次のようなステップを使用
することによって達成される。即ち、先ず、そのフレー
ズが、一般には「ヒストリRAM」と呼ばれるRAM
(1アドレス当たり1つの8ビットASCII文字)に
記憶される。ヒストリRAMは任意のサイズのものでよ
いが、好適な実施例では、2K、1K、又は512バイ
トの容量を持つことが可能である。
【0031】
【表2】 アドレス データ 00 t 01 h 02 e 03 04 b 05 o 06 y 07 08 t← 09 h←反復した文字ストリング 10 e← 11 ← 12 d 13 o 14 g
【0032】第2に、反復した文字ストリングが上の表
2で示したように表される。
【0033】第3に、「変位」(ここでは、変位=0
0)と呼ばれる反復ストリングの第1インスタンスの開
始アドレスが記録される。
【0034】第4に、反復したデータストリングの「長
さ」(ここでは、データ長=04)も記録される。
【0035】第5に、非反復の文字(即ち、「生」のデ
ータ)がそのまま出力されるが、変位及びデータ長だけ
は反復した文字ストリング全体に対して出力される。本
実施例では、この圧縮されたセンテンスに対する出力
は、次の表3に示されるようになる。
【0036】
【表3】 バイト データ 1 t 2 h 3 e 4 5 b 6 o 7 y 8 9 長さ=04、変位=00 10 d 11 o 12 g
【0037】前の例では、「d」(変位)値及び「L」
(データ長)値を1つのバイトで出力することが可能で
あるという非常に実用的でないことを仮定している。ま
た、「マーカ」は、データ・バイトが「生」(未圧縮)
であるか、或いは圧縮されているかを圧縮解除アルゴリ
ズムに知らせる必要があるため、1つの問題が存在す
る。マーカがなければ、「L」値及び「d」値は他の何
れかのASCIIコードのように見えるであろうし、圧
縮解除アルゴリズムは機能することができないであろ
う。
【0038】これらの問題を回避するためには、LZ1
で圧縮されたデータは、前述の概説した方法及び米国の
クォータインチ・カートリッジ・ドライブ・スタンダー
ド社により発行された「Adaptive Lossless Data Compr
ession (ADLC)」という主題の「QIC Development Stand
ard」WIC-154 Rev. A,(1994年3月10日発行)に
おける工業規格に従ってコード化される。図6乃至図8
を参照して、そのコードの簡単な説明を以下で行う。
【0039】図6は、前述のエンコーディング法におい
て生じ得るデータの6つのケースを示す。ケース1は、
「生」(未圧縮)データに対するものであり、ケース2
乃至ケース6は種々な長さの圧縮されたデータに対する
ものである。圧縮されたデータに対して、異なるサイズ
の圧縮ワード・トークンを使用することによって、その
圧縮されたデータの長さは減少し、従って、圧縮効果を
増大させる。この点に関して、「コード長」はコード・
トークンにおけるビットの数(例えば、生のトークンに
対して9ビット)であり、一方、「データ長」は圧縮さ
れたコード・トークンがそれの圧縮解除後に生じるバイ
トの数である(例えば、「the boy and d
og」における「the」に対する圧縮されたコード・
トークンの長さは4である)。
【0040】LZ1アルゴリズムのデータ配列では、第
1ビットは「コード化されたビット」である。例えば、
図6に示されるように、コード・トークンの第1ビット
は、そのコード・ワードが生のバイトを有する場合だけ
「0」である。このビットは、既存のその生のワード
(図6では、bとして示される)の8ビットに加えられ
て1つの9ビットの生のトークンを作る。この第1ビッ
トは、後続の8ビットが生のデータであることを表す。
圧縮されたワード・トークンが存在する場合、その「コ
ード化されたビット」は「1」であり、それは、後続の
データが圧縮されていることを意味する。
【0041】図6におけるコード化されたデータの残り
は、異なる長さの圧縮されたワード・トークンである。
コード化ビットとして「1」が存在する場合、「0」が
現れる前のその次のビットは、如何に多くの長さビット
「L」が後続するかを表す(「0」だけは1つの「L」
ビットを表し、2つの「1」が先行する「0」は3つの
「L」ビットを表す等)。「L」の値は、長さに従って
0又は1である。「d」の値は変位アドレスを含む。図
6に示されたデータには、11個の「d」ビットが示さ
れる。これら11個の「d」は2KバイトのヒストリR
AMにおける変位アドレスである。1K又は512バイ
トのヒストリRAMに対しては、それぞれ、10個又は
9個の「d」ビットが使用される。
【0042】図6から、1つのトークンの最初の5ビッ
トを見ることによって、そのコード・ワードがケース1
乃至6のうちのどれであるかが決定可能である。これ
は、ヒストリRAMのサイズ(2K、1K、又は512
バイト)を知ることと組み合わせて、コード長がデコー
ドされることを可能にする。下記の表4は、それが2
K、1K、及び512のヒストリRAMサイズに対する
コード長をリストするので、好適なヒストリRAMのサ
イズに基づいてコード長をデコードする方法を要約する
ものである。
【0043】
【表4】コードワードの最初の5ビットのデコーディン
グに 基づくコード長 ケース 最初の サイズ サイズ サイズ 5ビット 2K 1K 512 1 0**** 9ビット 9ビット 9ビット 2 10*** 14 13 12 3 110** 16 15 14 4 1110* 18 17 16 5 11110 20 19 18 6 11111 24 23 22
【0044】図6には示されてない2つの更なるLZ1
コード・タイプがある。前述のように、これら2つのコ
ードは「終了マーカ」及び「制御コード」と呼ばれ、両
方とも特別ケース6のコードである。「終了マーカ」
は、圧縮されたデータの伝送の終了を表す(例えば、そ
れは圧縮解除装置に送られた最後のコード・ワードであ
る)。「制御コード」は、本発明に関係ない他の用途の
ために取っておいた特別予約のケース6コードより成
る。
【0045】ガイドとして図6を使用すると、フレーズ
「the boy the dog」に対する上記LZ
1アルゴリズムから期待される実際の圧縮されたデータ
が図7に示される。便宜上、各文字に対する実際のAS
CIIコードは示されていないことに留意して欲しい。
代わりに、実際のASCII値を表すために、「b」が
リストされる。
【0046】図7の例では、圧縮されたデータにおける
ビットの合計数は115である。8で除すると、これは
14.375バイトを生じるので、圧縮は、非圧縮形式
で「the boy the dog」を記憶するため
に必要な15バイトに比べて非常にわずかである。しか
し、実際の動作条件の下では、圧縮比はずっと高く、2
乃至3倍程度になり得る。
【0047】前に述べた従来の技術は、LZ1アルゴリ
ズムを実施するための1つの設計を教示しているけれど
も、上記の説明に基づいてLZ1コーディング技法を実
施し得る種々のシステム・アーキテクチャが存在する。
後述のような本発明の圧縮解除の特徴を理解するため
に、及びその圧縮解除装置を実施するためには、そのエ
ンコーディング技法の基本原理及び伝送されたデータの
構造が十分なものとなろう。
【0048】B.圧縮解除技法 その圧縮解除法は、前述のように、圧縮法の特性に直接
関連する。1つの基本的な必要条件は、各コード・トー
クンの第1ビットを見ることである。このビットが
「0」である場合、そのコード・トークンは生のトーク
ンであり、後続する8ビットは実際の未コード化データ
である。これら8個の未コード化ビットはヒストリRA
Mにスタックされ、圧縮解除されたデータとして直接に
出力される。それらビットは将来の圧縮されたコード・
ワードによって必要とされることがあるため、それらは
ヒストリRAMに記憶される。(上記の「the bo
y the dog」において、最初の「the」は生
のデータとして記憶される。第2の「the」は圧縮さ
れたデータとして記憶され、ヒストリRAMにおけるア
ドレス0で始まる最初の「the」を参照する)。
【0049】コード・トークンの第1ビットが「1」で
ある場合、そのトークンは圧縮されたワード・トークン
であり、圧縮解除装置はヒストリRAMのアドレス「d
dddddddddd」において始まるデータを読み出
す。圧縮解除装置は、アドレス「dddddddddd
d」からインクレメントするアドレスにおいてヒストリ
RAMからバイトを読み続ける。それは、圧縮されたワ
ード・トークンのデータ長値によって指定されたバイト
の数に対してこれを行う。圧縮解除装置は、それがヒス
トリRAMから読み取ったデータを出力する。それは、
これが既に圧縮解除されたデータであるためである。
又、それは、このデータが将来の圧縮されたコード・ワ
ードにとって必要とされる場合にはこのデータをスタッ
クし続ける。例えば、センテンス「the boy t
he dog the boy the dog」が圧
縮され、第1の「the」が生で記憶され、第2の「t
he」が圧縮されたワード・トークン(L=4,d=
0)として記憶される場合、「the boy the
dog」の第2の発生全体は1つの大きな圧縮された
ワード・トークン(L=15、d=0)として記憶され
るであろう。これはその圧縮技法の回帰的能力を示し、
生のままのバイトではなく圧縮解除されたデータすべて
をヒストリRAMにスタックする必要性を表す。
【0050】更なる基本的な必要条件は、何処でコード
・トークンが開始しそして何処でそれらが終了するかを
決定することである。これは、圧縮されたワード・トー
クンの6つの異なるケースに対してはそれが可変長(9
乃至24ビット)であるために困難である。図8は「t
he boy the dog」の例からの圧縮された
出力を示し、この時、16ビット・ワードでデータを出
力する。図8に示されるように、コード・トークンは1
6ビット・ストリームにおける何処ででも開始しそして
終了することができる。図8において、コード・トーク
ンは実の1及び0ではなくb、L、及びdを使用するの
で、何処でそれらコード・トークンが開始しそして終了
するかを視覚的に決定することが可能である。b、L、
及びdが、実際の場合のように、1及び0に転換される
場合、何処で1つのコード・トークンが終了しそして他
のコード・トークンが開始するかを決定するためにデー
タを視覚的に調べることは不可能であろう。
【0051】図8の表示から、コード・トークンがバイ
ト境界で編成されてないことは明らかである。コード・
データは、次のコード・トークンを見つけるためには、
現在のコード・トークンの実際の長さをデコードするこ
とによって個々のコード・トークンに分離されなければ
ならない。
【0052】圧縮解除装置は、コード・トークンの長さ
(コード長)をデコードすること及びこのコード長を現
在のコード・トークンの位置に加えることによって何処
でコード・トークンが開始しそして終了するかを追跡す
る。例えば、第1のコード・トークンは16ビット・デ
ータ・ストリームにおける位置0で開始する。その第1
のコード・トークンは生のバイトであるので、コード長
=9である。従って、次の(第2の)コード・ワードは
16ビット・ストリームにおける位置9で開始する。
【0053】第2のコード・トークンは位置9で始ま
り、コード長=9を持った生のバイトでもある。従っ
て、次の(第3の)コード・トークンは16ビット・ス
トリームにおける位置18で開始する。18番目の位置
はないので、デコーダは位置2を捜して次の16ビット
・ワードまでスキップ・ダウンする。それは、これがコ
ード・トークンの開始から9番目のビットであるためで
ある。
【0054】圧縮解除装置は、そのコード長を現在のコ
ード・トークン開始アドレスに加えることによって次の
コード・トークンが何処で開始するかをこのようにいつ
も見つけ続ける。数学的には、これは次の式で表され
る。即ち、 [次のコード・ワード開始アドレス(次のアドレス)]
=[現在のコード・ワード開始アドレス(現在のアドレ
ス)]+[現在のコード・ワードのコード長(コード
長)]
【0055】重要なことに、これは直列オペレーション
であり、現在のコード・ワードに対する上記式が完了す
るまで、何処に次のコード・トークンが記憶されるかに
関する決定を行うことはできない。
【0056】図9は圧縮解除エンジン1500の高レベ
ル・ブロック図であり、図2及び図3において見られる
圧縮エンジンによって生成されたデータがどのように圧
縮解除されるかを簡単な形で示すものである。制御回路
1510は、生のトークン(0が先行したデータ・ワー
ド)、圧縮されたワード・トークン(1に続くストリン
グの長さ及び開始アドレス)、制御トークン、及び終了
マーカ・トークン(例えば、一列になった13個の1)
を含む圧縮されたデータ・ストリームを受ける。
【0057】生のデータを受けた場合、閉鎖型データ・
ワードがレジスタ1520に記憶される。そこで、その
レジスタの内容がアドレス・マルチプレクサ(MUX)
1550を通る書込みカウンタ1540におけるアドレ
ス(当初、0にセットされる)でヒストリRAM153
0(そのデータを圧縮するために使用されたヒストリR
AMと同じ数のセクションを持つ)に書き込まれる。更
に、そのレジスタの内容は出力データ・ワードとしても
発生される。そこで、書込みカウンタ1540は1だけ
インクレメントされる。その書込みカウンタが既にNで
ある場合、それは0にセットされる。このオペレーショ
ンの結果、各データ・ワードは、ヒストリRAMにおけ
る次に続くセクションに書き込まれ、それによって、デ
ータ圧縮中に使用されるヒストリRAMを反映させ、そ
してそのデータ・ワードが出力としても発生される。
【0058】圧縮されたワード・トークンをが受け取っ
た場合、そのアドレスが読取りカウンタ1560にロー
ドされ、長さがトークン長カウンタ1570にロードさ
れる。ヒストリRAM1530におけるデータはマルチ
プレクサ1550を介して読取りカウンタによりアドレ
スされ、そしてレジスタ1520に書き込まれる。しか
る後、そのデータ・ワードは、書込みカウンタ1540
におけるアドレスでヒストリRAMに書き込まれ、デー
タを圧縮するために使用されるヒストリRAMを反映し
続ける。そのレジスタにおけるデータ・ワードは出力デ
ータ・ワードとしても発生される。そこで、書込みカウ
ンタは、前述のように、1だけインクレメントされる。
トークン長カウンタ1570が1よりも大きい場合、そ
れは1だけデクレメントされ、読取りカウンタは1だけ
インクレメントされる。そしてそのプロセスは次のデー
タ・ワードに対して反復する。このプロセスは、その圧
縮されたデータ・ストリングによって参照される全デー
タ・ストリングが順次ヒストリRAMから読み取られ、
ヒストリRAMに書き戻され、そして出力として発生さ
れてしまうまで繰り返す。
【0059】オプショナル減算回路1580は、この圧
縮解除エンジンが図1乃至図3において説明したリレー
ショナル・アドレスを利用するレンペル・ジフの圧縮デ
ータを圧縮解除することを可能にするために含まれる。
この減算回路は、リレーショナル・アドレスから書込み
カウンタにおける値を減算することによってリレーショ
ナル・アドレスを固定アドレスに変換するために使用さ
れる。その減算回路は含まれるが、前述の固定アドレス
技法によって圧縮されたデータを圧縮解除する時にディ
スエーブルされ、リレーショナル・アドレスを使用して
レンペル・ジフ圧縮されたデータを圧縮解除する時にイ
ネーブルされる。
【0060】前述のように、その圧縮解除技法は各コー
ド・ワードの直列的デコーディングに基づいて実行可能
である。上記LZ1データ圧縮コードは半対数的可変長
コードであり、コード・ワードは9乃至24ビットの長
さの分布であり、コード・データは固定バイト境界に基
づいて編成されてない場合、更なる処理のために個別の
各コード・ワードを確保するために、高速バレル・シフ
トが遂行されなければならない。1つの重要な要件は、
次のコード・ワードを見つけるために、現在のアドレス
が見つけられなければならず、そして次のアドレス値に
更新されなければならないことである。第2の重要な要
件は、LZ1デコーダがコード・ワードを分離して一連
の「位置調整」コード・ワードを生じさせなければなら
ないことである。
【0061】
【表5】 コード・ワード 左位置調整された 番号 コード・ワード 1 ←---1--- 2 ←---2---------------- 3 ←---3------- 4 ←---4------- ・ ・ ・ ・ ・ ・
【0062】この分離を行うために及びそれらコード・
ワードを左位置調整するためにバレル・シフタが使用さ
れる。
【0063】このオペレーションを行うための方法が図
10に示される。圧縮されたコードは、都合よくサイズ
決めされたセグメントの形で大きな収集レジスタ(AR
EG)2100にもたらされる。大きい収集レジスタ
(AREG)は、バレル・シフト・オペレーションを簡
単にするために好ましいものである。それは、シフトが
生じる前にコード・ワード全体が使用可能であるためで
ある。図10は、2つのコード・バス(コード・バス0
及びコード・バス1)を介して受信される16ビット・
コード・データを示す。そのコード・データはハンドシ
ェーク・プロトコルを介して一時に16ビット着信し、
16ビット・レジスタ(CDICREG)2000にロ
ードされる。そこで、このデータは、各々が16ビット
より生る4つのセグメントA、B、C、及びDに分割さ
れている64ビット・レジスタ(AREG)2100に
ロードされる。その16ビット・コードは4つのセグメ
ントA、B、C、又はDのうちの選択された1つにロー
ドされる。レジスタ(AREG)2100は第1リセッ
ト入力R及び第2入力HBを有する。それら入力の生成
については後述する。他のアーキテクチャ(例えば、8
ビット・セグメントを使用する)も可能であるが、AR
EGは、個々の各コード・ワードが一時にそのAREG
内に完全に含まれるように十分に大きくなければならな
い。AREGは、圧縮されたデータをセグメント・シー
ケンスA、B、C、D、A、B、C、D、A・・・・で
ロードされる。レジスタ2000からの16ビット・コ
ードに対するAREGにおける記憶ロケーションは、ロ
ードA、B、C、D線における信号の内容によって決定
される。なお、それらの線は、それぞれのレジスタ・セ
グメントに接続されるものである。
【0064】先ず、図11は、AREGにコード・デー
タをロードする方法を制御するステート・マシーン(s
tate machine)であることに留意すべきで
ある。そのステート・マシーンは、ロジック「第1サイ
クル」1600によって初期設定される。それは、4グ
ループのラッチ、LDA−LDD,1601−160
4;AVLA−AVLD,1611−1614;AVL
1A−AVL1D,1621−1624;及びAVL2
A−AVL2D,1631−1634のマトリクスより
成る。そのステート・マシーンの主要な出力は、信号ロ
ードA、ロードB、ロードC、及びロードDより成る。
第1サイクルのロードAがアクティブとなり、次に、そ
の次のサイクルのロードBがアクティブとなり、・・・
そして最後に、ロードDがアクティブとなる。残りの出
力は、単に、ロードA、B、C、及びD信号の単なる遅
延である。これらの遅延した値は、アキュムレーション
・レジスタのセグメントが現在のサイクル(AVAI
L)で、1つ後のサイクル(AVAIL1)で、又は2
つ後のサイクル(AVAIL2)でデータをロードされ
たかを知らせる。例えば、ロードAがサイクル1におい
てアクティブである場合、AVAIL−Aはサイクル2
においてアクティブとなり、AVAIL1−Aはサイク
ル3においてアクティブになり、そしてAVAIL2−
Aはサイクル4においてアクティブになるであろう。
【0065】以下の説明では、「現アドレス」及び「次
アドレス」はAREGにおけるビット・ロケーションで
ある。例えば、図10に示された64ビットAREG
は、ビット・ロケーション0−63を有する。ビット−
0は最上位ビット(MSB)として定義され、ビット−
63は最下位ビット(LSB)として定義される。「現
アドレス」はコード・ワードの開始を定義し、「コード
長」は「現アドレス」から「次アドレス」までのワード
全体の長さを指定する。例えば、「現アドレス−0」は
現在のコード・ワードがAREGビット−0で開始し、
「次アドレス−1」に続くことを意味する。
【0066】AREGにおけるコードは、ニブルMUX
2210及びシフタ2220より成るバレル・シフタ2
200及び次アドレス回路2300の両方に読み出され
る。バレル・シフタ2200では、4ビットがニブルで
あるので、7個の連続した4ビット・グループがARE
Gから選択される。この技法は、AREG2100から
シフトされるコード・ワードを「左位置調整」するため
に使用される。そこで、シフト・ロジック2200は、
コード・ワード0乃至3の値を左にシフトし(即ち、2
8個のNBLOUTビットが0−3の値だけシフトさ
れ)、SHIFT24値を形成する。
【0067】次アドレス回路2300はセレクタ回路2
310を含み、それは、AREG2100に記憶された
コードから1つの列における最初の5ビットを選択す
る。前述のように、最初の5ビットはその情報の性質に
関する情報(第1ビット部分における「0」はコード化
されてないことを意味し、「1」はコード化されている
ことを意味する)及びそのコードの長さを含む。好適な
実施例に対しては、6つの可能なコード長ケースがあ
り、それら6つにうちの特定な1つはデコード・ロジッ
ク回路2320によって決定される。その識別されたケ
ースは、RAMのサイズに関する情報(512、1K、
又は2K)と共に「CASEREG」レジスタ2500
に記憶され、回路2330においてコード長をデコード
するために使用される。その識別されたコード長は、加
算器2340に送られる。その加算器は、「現アドレ
ス」も受け取り、そして「次アドレス」値を、その値が
正しいかどうかの決定に使用するために出力する。加算
器2340は、キャリー・イン又はキャリー・アウトを
含む必要のない6ビットのキャリー・アシューム2進加
算器である。
【0068】AREGを制御するために、2つの制御ル
ープが使用される。「STOPCDID」と呼ばれる第
1ループはAREGへのデータのローディングを制御す
る。STOPCDICは「現アドレス」をモニタする。
そのSTOPCDICループは、ちょうどロードされた
AREGセグメントが「現アドレス」に先行する2つの
レジスタ・セグメントである時に制御出力を発生するで
あろう(それは、ちょうどロードされたAREGセグメ
ントが「現アドレス」に先行する3つのレジスタ・セグ
メントである時に生じるようにもセット可能であるけれ
ども)。2つのセグメント・リードの決定は、レジスタ
2500からの「現アドレス」値と比較器2800への
AVAIL2 A、B、C、及びDとの比較によって行
われる。比較一致の場合の比較器2800の出力の結
果、AREG2100への入力である信号HBが生じ
る。STOPCDICループの目的は、AREGがオー
バロードにされないようにしながら、AREGに新しい
データをロードし続けることである。STOPCDIC
ループは、ロードされた時のAREGに、バレル・シフ
ト・オペレーションによってアンロードされるべきデー
タを待たせる。
【0069】第2制御ループは略号「WHOLEW」に
よって表され、「コード・ワード全体」が識別されたこ
とを表すロジックを示す。そのWHOLEWの表示は、
現在のコード・トークン全体がAREGに存在する時に
いつも生じる。WHOLEWは、「次アドレス」と使用
可能なAREGセグメントとの比較によって決定され
る。この比較は、使用可能なコード(A,B、C、D)
の3つのケースに対する4ビットの情報及び加算器23
40からの出力「次アドレス」を受ける比較器2350
において行われる。「次アドレス」が使用可能なARE
Gセグメント内にある場合、WHOLEW=「1」であ
る。WHOLEWが真である時にいつも比較器2350
によってレジスタ2600に出力が与えられ、加算器2
340から「次アドレス」を「現アドレス」として記憶
させる。そこで、その新しい「現アドレス」はバレル・
シフタ2200及びセレクタ2310への入力として使
用される。
【0070】コード・ワード全体がAREGにおいて得
られる時、WHOLEW検出回路はトリガされ、出力コ
ード・ワードは「左位置調整」されるようにシフトさ
れ、しかる後、24ビット幅のシフト24レジスタ24
00に記憶される。又、ケース・レジスタ2700に
は、6つのケース1ビットが記憶され、ラッチ2600
には、WHOLEW1を表す信号が記憶される。そのW
HOLEW1信号は、シフト24レジスタに対する「デ
ータ有効」信号として働く。それら6個のケース1ビッ
トは、LZ1コード・ワードの6つのタイプのうちのど
れがシフト24レジスタ2400において得られるかを
知らせる。
【0071】WHOLEWはAREGにおいて得られる
どれかのセグメント(A、B、C、D)を、「次アドレ
ス」が属するどのようなAREGセグメントともロジッ
ク2350において比較することによって検出される。
使用可能なデータを有するAREGに「次アドレス」が
ある時、WHOLE=1である。「次アドレス」はAV
AIL、AVAIL1、及びAVAIL2に比較され
る。これらは、今ロードされたAREGセグメント、1
サイクル前にロードされたAREGセグメント、及び2
サイクル前にロードされたAREGセグメントを表す。
「次アドレス」がAVAIL、AVAIL1、又はAV
AIL2レジスタのうちの1つにある場合、WHOLE
W=1である。
【0072】AREGは、それが「現アドレス」よりも
2セグメント先行するまでロードされる。「現アドレ
ス」が属するAREGセグメントがAVAIL2セグメ
ントに等しい時、STOPCDICが生じる。図10に
示されるように、STOPCDICは非コードEN(イ
ネーブル)とORしてHBを形成する。そのHBはAR
EGローディング及びコード・データ・インターフェー
スを保持する。
【0073】図12に示されるように、それら2つのル
ープの出力は結合される。そこでは、WHOLEW1
(反転済み)及びSTOPCDICがブレーク保持ゲー
トに与えられる。そのゲート出力は反転され、H(保
持)信号も受ける第2ゲートを介して供給され、結果と
して信号HSを発生させる。HSはレジスタ2500、
2600、及び2700を含むいくつかのレジスタへの
入力として働く。
【0074】第1ケースに対して、シフト24−1、ケ
ース−1、及びWHOLEW−1値は、信号が圧縮解除
されている間入力HSによって保持される(接尾辞「−
1」はパイプライン・ステージを表すことに留意して欲
しい)。この保持は、大きいコード・ワードが圧縮解除
されている間、新しいシフトされたコード・ワードを必
要としないために必要である。信号HSは、STOPC
DIC=1であるがWHOLEW−1=0の時、HS=
0以外は信号Hと同じである。この特別ケースは、「デ
ッド・サイクル」、例えば、大きいコード・ワード(例
えば、24ビット)がAREGからシフト24−1レジ
スタに引き出された後のWHOLEW=1を回避する必
要がある。特に、一旦STOPCDIC=1になると、
WHOLEWが使用可能であるので保持がこの特別ケー
スに対してブレークされることを保証するに十分なデー
タがAREGになければならない。
【0075】動作において、バレル・シフタ2200
は、「現アドレス」で開始するAREGレジスタ・ビッ
トを取り、コード・ワード全体をシフト24レジスタ2
400にロードする。表6は、バレル・シフタが「現ア
ドレス」に基づいてどのビットをシフト24レジスタに
ロードするかを識別する。このコードは、シフト24レ
ジスタ2400に記憶される時、図11の装置において
左位置調整される。前述のように、WHOLEWはシフ
ト24データに対する「データ有効」信号として働く。
【0076】
【表6】「現アドレス」に基づいて64AREGビット
のうちの24ビットのシフト
【0077】図13は、64ビットAREGアーキテク
チャを使用する時、WHOLEW=1であるかどうかを
決定するために必要な5つのステップを示す。第1ステ
ップS−81において、コード・ワードの最初の5ビッ
トが選択される。そこで、それら5ビットにおけるエン
コードされた情報に基づいて、ステップS−82におい
て、ケース1乃至6のうちのどれが表されるかに関する
決定が行われる。上記の例では、271バイトまでの圧
縮解除された長さを表す6つの可能なコード長があるこ
とに留意すべきである。次に、識別されたケースに基づ
いて、ステップS−83において、コード長が決定され
る。このコード長は、ステップS−84において、現ア
ドレスに加えられて「次アドレス」を決定する。最後
に、ステップS−85において、その「次アドレス」と
使用可能なAREGセグメントの比較が行われ、WHO
LEWがそれらの値の一致を意味する1に等しいかどう
かを決定する。
【0078】上記の方法で2つの制御ループを使用する
ことに利点がある。第1に、AREGのローディングの
制御はAREGアンロード制御に無関係である。これ
は、AREGアンローディング機構が新しいシフトされ
たコード・ワードの準備のないパイプライン論理ステー
ジにより「保持」される間でも、AREGローディング
が継続することを可能にする。これは、AREGを記憶
装置として作用させ、必要な時にバレル・シフタによっ
てアンロードされる準備のできた新しいコード・ワード
がいつも存在することを保証する。
【0079】第2に、STOPCDIC制御ループによ
って「現アドレス」に基づいてAREGのローディング
を制御することに関して、「現アドレス」が直ちに使用
可能であるのでタイミングが改善される。「次アドレ
ス」と共に存在する時の加算を待つ必要はない。又、
「現アドレス」は「次アドレス」のようにコード・ワー
ドの長さによって影響されない。現アドレスはコード・
ワードの6つのケースすべてに対して同じに作用する。
最後に、「現アドレス」は、依然として必要なデータ
(バレル・シフタによって未だ除去されていない)をA
REGにおいて含む最下位アドレスである。
【0080】第3に、WHOLEW制御ループを使用し
て「次アドレス」に基づきAREGのアンローディング
を制御することは、シフト24レジスタ2400の中に
バレル・シフトされる前にそのコード・ワード全体がA
REGにおいて得られなければならないので、高い精度
を与える。この状態は、「次アドレス」から離れてバレ
ル・シフタ制御ループを使用することによって保証され
る。
【0081】最後に、それら2つのループの組合せは、
ディジタル・ハードウエアの圧縮解除機能の簡単で効果
的な高速度の実施を与える。
【0082】図10に示されたバレル・シフト制御回路
の実施例はWHOLEWの決定を与える。しかし、WH
OLEWの上記の直列的な決定は、それがデコーダの最
短時間のパスを形成するので、タイミングの障害を形成
することがある。特に、コードのケースは、コード長が
識別される前に先ず決定されなければならず、しかる
後、「アドレス」が加算器によって計算されなければな
らない。加算器のプロセスは比較的大量の処理時間を必
要とし、その結果、遅延を生じさせる。加算器のプロセ
スが完了した後しかWHOLEWを決定することができ
ない。コード・ビット・ストリームは本システムでは連
続的であり、第2コード・トークンは上記の処理が第1
コード・トークン・アドレスに基づいて行われるまで識
別され得ないので、障害が形成される。
【0083】図14の実施例及び図15に示された方法
は、並列性を使用してこの論理パスの速度を上げるであ
ろう。
【0084】図14は図10におけるデコーディング回
路2300の好適な実施例であり、並列方法を詳細に示
す。図15において、ステップS−91及びS−92
は、図13における対応するステップS−81及びS−
82と同じ方法で行われる。特に、64ビットAREG
3100におけるセグメントA、B、C、及びDからの
コード・データはレジスタ3500からの「現アドレ
ス」と共に5ビット・セレクタ3310に供給される
(接続は図示されていない)。選択されたビットは、デ
コーダ3320においてデコードされ、その結果は、6
つのケースのうちの識別された1つとしてレジスタ37
00に記憶される。
【0085】しかし、ステップS−93において、記憶
装置(3331−3336)から取り出され且つ適用可
能なヒストリRAMサイズに依存する可能な各LZ1コ
ード長(前述のように、好適な実施例では、271とい
う最大の可能なバイト長に基づいて6つの可能な長さが
ある)は加算器3341−3346によってレジスタ3
500からの「現アドレス」に並列に加算される。これ
は、6つの可能な「次アドレス」値を作り、ステップS
−94において、比較器3351−3356を使用して
6つの可能なWHOLEWを決定することを可能にする
であろう。図15のフローチャートから明らかなよう
に、これらの加算が行われている間、他のロジックは現
在のコード・ワードの最初の5ビットを選択し(ステッ
プS−91)、6つの次アドレス/WHOLEW値のう
ちのどれが必要な真の値であるかを決定する(ステップ
S−92)。ステップS−95において、正しいWHO
LEW及び「次アドレス」値を選択するために、2つの
「6−to−1」マルチプレクサ3900及び3950
が使用される。
【0086】この並列アーキテクチャは、好適なアルゴ
リズムには6つの可能なコード長しかないという事実を
利用している。6つの長さ値しかないため、「正しい」
並列の解を選択するために使用されるマルチプレクサは
非常に速く、その並列性をサポートするためのオーバヘ
ッドは大きくない。並列性は、5のシーケンスから3の
シーケンスに論理判断の量を減少させることによってデ
コーダのバレル・シフト制御機構の速度を上げる。
【0087】明らかに、この並列性は、6以外の他の長
さ値を使用するLZ1アルゴリズムに基づいた圧縮シス
テムに対して実施可能である。
【0088】そのシステムの実用的な実施例では、6つ
の長さ値を持った好適な構造を具体化する0.8ミクロ
ンCMOSゲート・アレーのシリコン・ハードウエアの
タイミング分析は、その並列アーキテクチャを使用する
と次式で示すように60%の速度改善を示す。 [40Mバイト(並列性による速度)−25Mバイト
(並列性なしの速度)]/25Mバイト=60%
【0089】図16はデコード・ロジックとそのロジッ
クへのいくつかの入力を示すものであり、そのロジック
は図17におけるヒストリRAMへの入力として働く。
特に、図16は、長さ、変位、及び生のコードをデコー
ドするためのロジック及びいくつかのタイミング信号を
発生するためのロジックを示す。その図において明らか
なように、左位置調整されたシフト24−1コード・ト
ークンが6つのケース1ビット共に論理回路4000に
与えられる。そこで、そのデコード・ロジックは「コー
ド化」値、「長さ」値、「変位」値、及び「生」の値を
適当なレジスタ4200、4400、4500、及び4
300にゲートする。「コード化」レジスタ4200に
おける値は、コード・トークンが「生」である場合に
「0」であり、それが圧縮されたワード・トークンであ
る場合に「1」である。そのデコード・ロジックは、対
応するサイズ512値、サイズ1K値、サイズ2K値に
おけるヒストリRAMによって生じた種々のコード長に
調節する。図10における主要な出力信号はパイプライ
ンの「−1」レベルにあったけれども、図示のレジスタ
出力は、それらレジスタが第2パイプライン・ステージ
にあることを表す「−2」のサフィックスを持つことに
留意して欲しい。
【0090】図16において、保持(H)信号は圧縮さ
れたワード・トークンに対して発生される。そのH信号
は、現在のコード・ワードが圧縮解除されるまで図10
及び図14におけるロジックを保持させる。所与の例に
基づいて、これは大きいコード・ワードに対して271
サイクルまで取ることができる。動作では、長さ−2レ
ジスタ4400は00000000(2進数)又は00
0000001(2進数)でない時にいつもHはアクテ
ィブである。圧縮されたワード・トークンが−2ラッチ
・ステージになる時にいつも長さ−2がその圧縮された
長さ値をロードされる。長さ_2が000000001
(2進数)に等しくなるまで、Hはアクティブにセット
され、長さ−2は各クロック・サイクルでもってデクレ
メントし始める。それらが等しくなった時点で、Hはイ
ンアクティブになり、新しいコード値がその−2パイプ
ラインステージにロード可能である。
【0091】長さ−2値が上記の例においてデクレメン
トしている同じ時間に、変位−2値はインクレメントし
ている。これは、図17における2ポート・ヒストリR
AMに対するアドレスを与える。
【0092】図17は、コード化されたデータを圧縮解
除するよう動作する2ポート・ヒストリRAMを示す。
図16からのWHOLEW_2がアクティブである時、
生のトークン全部又は長さ/変位情報が「−2パイプラ
イン・ステージ」からそのRAMに与えられる。図16
におけるデコード・ロジック4000からのCODED
_2出力が「0」である場合、データは生のトークンと
して識別される。その場合、マルチプレクサ5400は
RAW_3レジスタ5200を選択し、その圧縮解除さ
れたデータ出力は、単に、生のトークンに含まれた生の
データである。そこで、この圧縮解除されたデータは、
「書込みデータ」ポートを介して2ポートRAM500
0に書き戻され、コミュニケーション「ヒストリ」の一
部分になる。
【0093】デコード・ロジック4000からの出力に
よって発生されたCODED_2信号が「1」である場
合、そのデータは圧縮されることが分かる。この場合、
ヒストリRAM5000の出力は圧縮解除されたデータ
としてマルチプレクサ5400によって選択される。ち
ょうど生のトークンのケースにおけるように、この圧縮
解除されたデータも「書込みデータ」ポートを介してヒ
ストリRAM5000に書き戻され、「ヒストリ」の一
部分になる。
【0094】ヒストリRAM5000の読出しは変位_
2アドレスに基づく。そのRAMはL1ラッチ出力だけ
を有し、RAM出力が外部L1(5310)を介してフ
ラッシュされることを必要とする。そこで、そのRAM
出力は正規のB−クロックL2(5320)をフィード
する。C−2クロックが正規の使用時に「1」に結合さ
れてL1を「フラッシュ」させることは明らかであろ
う。L2ラッチ5320はパイプライン・ステージ「_
3」におけるRAM値、従って、名前「RAMOUT_
3」を終了する。
【0095】RAMOUT_3は、信号CODED_3
(図16におけるCODED_2から得られた)に基づ
いて、マルチプレクサ5400においてレジスタ520
0からのRAW_3とマルチプレックスされる。このマ
ルチプレクサの出力は圧縮解除されたデータであり、将
来の圧縮されたコードのための「ヒストリ」として働か
せるためにRAMに書き戻される。
【0096】RAMOUT_3レジスタにとって必要な
保持信号は信号HAのL1出力であることに留意すべき
である。これは、L1レジスタがフラッシュされること
によって生じる競合状態を回避するために必要である。
もう1つの新しい点は、HA(L1)ラッチがC1−ク
ロックによってクロックされることである。C1−クロ
ックは、この設計では1つおきのレジスタに供給される
C0−クロックと同じであるが、テスト目的には有用で
ある。
【0097】最後に、「書込みアドレス」は、WHOL
E_3が真である時にいつも単純にインクレメントする
「−3」パイプライン・ステージ信号であることに留意
すべきである。そのアドレスが最大(RAMサイズに依
って512、1K、2K)になる時、それはゼロにラッ
プ・アラウンドし、再びインクレメントし始める(例え
ば、512のRAMに対しては、509、510、51
1、000、001、・・・)。その結果、ヒストリR
AMは「_2」の時に読み出すが、そのRAMへの書込
みは「_3」の時に行われる。
【0098】最後に、圧縮解除されたデータは、1サイ
クル当たり8ビットの圧縮データを取りそして1サイク
ルおきにそれを16ビット・バス上に出力するインター
フェースに出力する。その圧縮解除されたデータが終了
コード・トークンによって表されるような最後のもので
ある場合、その活動は終了する。
【0099】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0100】(1)圧縮された可変長のデータ項目をデ
ータ圧縮システムにおいて処理するための装置にして、
可変長コード項目を記憶するためのコード記憶手段であ
って、該コード項目の各々は対応する可変長データ項目
を表し、所定数の可能な可変長コード・ケースのうちの
1つにおける対応する数のコード・ビットを含むコード
記憶手段と、記憶された前記コード・ビットをデコード
し、前記可能な可変長コード・ケースのうちの1つにお
ける長さケースを識別する信号を出力するためのデコー
ド手段と、第2のコード項目に対する複数個の可能な開
始アドレスを生成するために、前記可変長コード・ケー
スの各々におけるコード・ビットの数と第1のコード項
目の開始アドレスとの和を同時に発生するための発生手
段と、前記デコード手段によって出力された信号に基づ
いて前記第2のコード項目に対する前記複数個の可能な
開始アドレスのうちの1つを選択するための手段と、を
含む処理装置。 (2)複数個のアドレスを有し、可変長のデータ項目を
記憶するための所定サイズのデータ項目記憶手段を含
み、前記データ項目の各々は実際の長さ値を有するこ
と、前記実際の長さ値は所定数の可能な長さケースのう
ちの1つにあり、前記所定数の可能な可変長コード・ケ
ースのうちの1つにあるコード・ビットによって表され
ること、及び前記発生手段によって各コード・ケースに
与えられたコード・ビットの数は前記データ項目記憶手
段のサイズに関連すること、を特徴とする上記(1)に
記載の処理装置。 (3)前記可能な可変長コード・ケースの各々を記憶
し、複数個の前記可能な可変長コード・ケースを並列に
出力するためのコード長記憶手段と、前記出力された可
能な可変長コード・ケースの各々及び第1コード項目に
対する前記開始アドレスを受け、前記第2コード項目に
対する前記複数個の可能な開始アドレスを並列に供給す
るための加算手段と、を含むことを特徴とする上記
(1)に記載の処理装置。 (4)オリジナル・データを表す複数個の直列的に配列
された圧縮されたコード・トークンを処理するための処
理装置にして、各コード・トークンは複数個の可能な可
変長のうちの1つを有し、圧縮情報及びコード長情報を
含むものにおいて、(a)コード・トークンを記憶する
ための手段であって、第1コード・トークン及び第2コ
ード・トークンの各々を記憶するに十分なサイズのもの
であり、前記記憶されたトークンは前記可能な可変長の
うちの1つを有するトークン記憶手段と、(b)コード
・トークン長に関係なく前記第1コード・トークン及び
第2コード・トークンに対して位置合わせされた記憶ロ
ケーションを与えるために前記記憶されたコード・トー
クンを位置合わせするための位置合わせ手段と、(c)
第1の記憶されたコード・トークンに対する前記コード
長情報をデコードし、前記複数個の可能な可変長のうち
の1つを識別するためのデコード手段と、(d)前記ト
ークン記憶手段における前記第1コード・トークンのロ
ケーションを決定するために使用される現アドレスを与
えるための手段と、(e)前記複数個の可能な可変長の
値をすべて同時に与えるための長さ供給手段と、(f)
前記複数個の可能な可変長の値及び前記現アドレスに応
答して、前記第2コード・トークンに対する複数個の可
能な次アドレスを生成するための手段と、(g)前記デ
コード手段に応答して、前記第2コード・トークンに対
する次アドレスを前記トークン記憶手段において選択す
るための手段と、を含む処理装置。 (5)前記長さ供給手段は、所定の複数個の可変的な固
定長値を発生するための固定長手段と、複数個の可能な
次アドレスを生成するために現アドレス値及び対応する
可変アドレス・サイズを受けるための複数個の加算手段
とを含むことを特徴とする上記(4)に記載の処理装
置。 (6)前記位置合わせ手段は、前記コード・トークンの
各々を別々に受けるように動作するバレル・シフタ・メ
モリを含むことを特徴とする上記(4)に記載の処理装
置。 (7)前記バレル・シフタ・メモリは、受け取ったトー
クンに対する左位置調整を行うことを特徴とする上記
(6)に記載の処理装置。 (8)各可変長コード・トークンの少なくとも一部分を
受け取り、前記記憶手段において前記一部分を完全なト
ークンとしてアセンブルするための手段を含むことを特
徴とする上記(4)に記載の処理装置。 (9)前記可能な次アドレスの各々と使用可能なセグメ
ント・データとを比較することによって現在のコード・
トークン全体が前記記憶手段に記憶されているかどうか
を決定するための決定手段を含むことを特徴とする上記
(4)に記載の処理装置。 (10)前記決定手段に応答して前記左位置調整された
トークンを記憶するための出力手段を含むことを特徴と
する上記(9)に記載の処理装置。 (11)前記現アドレス及び使用可能なセグメント・デ
ータに応答して現在のコード・トークンが圧縮解除され
るまで新しいコード・トークンの導入を遅らせるための
手段を含むことを特徴とする上記(10)に記載の処理
装置。 (12)(a)可変長のデータ・エレメントを受け取
り、生のデータ及び長さコードを含む生のデータ・トー
クンと前に受け取ったデータ・エレメントに一致するデ
ータ・エレメントに対する圧縮されたワード・トークン
とを含む可変長コードを生成するためのデータ圧縮装置
にして、前記圧縮されたワード・トークンは圧縮コード
と、アドレスと、所定数の可変長の可能性のうちの1つ
を表す可変長コードとを含むデータ圧縮装置と、 (b)データ圧縮解除装置にして、(i) 複数個のアド
レスを有し、可変長トークンを記憶するための記憶手段
と、(ii) 第1の可変長コードの長さコードをデコード
し、長さの可能性の1つを識別する信号を出力するため
の手段と、(iii) 複数個の可能な次アドレスを生成する
ために、前記第1の可変長コードにおけるすべての可変
長の可能性を開始アドレスに加えるための加算手段と、
(iv) 前記デコード手段の出力に基づいて前記可能な次
アドレスの1つを後続の可変長コードに対する開始アド
レスとして選択するための選択手段と、を含むデータ圧
縮解除装置と、を含むデータ圧縮及び圧縮解除システ
ム。 (13)前記加算手段は、所定の複数個の可変の固定長
値を記憶するための手段と、各々が共通の開始アドレス
及びそれぞれの可変アドレス・サイズを受け取って前記
複数個の可能な次アドレスを生成させるための複数個の
加算装置と、を含むことを特徴とする上記(12)に記
載のデータ圧縮及び圧縮解除システム。 (14)前記データ圧縮解除装置は、前記可能な次アド
レスの各々と使用可能なセグメント・データとを比較す
ることによって現在のコード・トークン全体が前記記憶
手段に記憶されるかどうかを決定するための手段を含む
ことを特徴とする上記(12)に記載のデータ圧縮及び
圧縮解除システム。 (15)前記データ圧縮解除装置は、圧縮解除された生
のデータを記憶するためのヒストリ・バッファ手段と、
すべての他のコード・ワードに関して共通に位置調整さ
れたコード・ワード全体を記憶し、前記選択手段に応答
して前記コード・ワードを出力するための出力手段と、
前記出力されたコード・ワードをデコードし、前記ヒス
トリ・バッファ手段における可変長のデータ・エレメン
トの記憶を制御するためのデコード手段と、を含むこと
を特徴とする上記(12)に記載のデータ圧縮及び圧縮
解除システム。 (16)圧縮されたデータを圧縮解除するための方法に
して、前記圧縮されたデータは、圧縮されたデータとし
て状態を表す状態コードと、所定の複数個の長さ値ケー
スにおける長さを表す長さコードと、ヒストリ・メモリ
におけるアドレスとを含むコード・トークンによって表
される方法において、 (a)前記長さコードをデコードし、前記複数個の長さ
値ケースの1つを識別するステップと、 (b)複数個の可能な次コード・トークン・アドレスと
使用可能なコード・トークン記憶領域との間の同一性
を、(i) 複数個の可能な次コード・トークン・アドレ
スを生成するためにすべての可能なコード長を現コード
・トークン・アドレスに加えること、及び(ii) 使用可
能な記憶セグメントに基づき、前記複数個の可能な次コ
ード・トークン・アドレスに対して値の同一性を決定す
ること、によって決定するステップと、 (c)前記識別された長さ値ケース及び前記決定された
値の同一性に基づいて次コード・トークン・アドレスを
選択するステップと、を含む方法。 (17)前記ヒストリ・メモリのサイズに基づいて前記
長さコードの値を選択するステップを含むことを特徴と
する上記(16)に記載の方法。 (18)コード・トークン長に関係なく第1コード・ト
ークン及び第2コード・トークンに対する位置合わせさ
れた記憶ロケーションを与えるためにコード・トークン
を位置合わせするステップを含むことを特徴とする上記
(16)に記載の方法。 (19)前記位置合わせするステップは前記コード・ト
ークンの各々を別々にバレル・シフトするステップを含
むことを特徴とする上記(18)に記載の方法。 (20)各可変長コード・トークンのうちの少なくとも
一部分を受け取り、前記一部分を完全なトークンとして
記憶手段においてアセンブルするステップと、前記可能
な次コード・トークン・アドレスの各々を使用可能なセ
グメント・データと比較することによって現在のコード
・トークン全体が前記記憶手段に記憶されるかどうかを
決定するステップと、を含むことを特徴とする上記(1
6)に記載の方法。
【0101】
【発明の効果】本発明によれば、レンペル・ジフ型の圧
縮アルゴリズムに従って圧縮された情報を高速度で圧縮
解除することができる。
【図面の簡単な説明】
【図1】相対アドレス指定法を使用してデータを圧縮す
るための通常のレンペル・ジフ技法を示す図である。
【図2】相対アドレス指定法を使用してデータを圧縮す
るための通常のレンペル・ジフ技法を示す図である。
【図3】相対アドレス指定法を使用してデータを圧縮す
るための通常のレンペル・ジフ技法を示す図である。
【図4】固定アドレス指定法を利用した種々なシステム
構成の1つを示す図である。
【図5】固定アドレス指定法を利用した種々なシステム
構成の1つを示す図である。
【図6】2KバイトRAMに対するレンペル・ジフ・コ
ード・データの例を示す図である。
【図7】テスト・シーケンスの各文字をコード化する例
を示す図である。
【図8】記憶されたコード化シーケンスの例を示す図で
ある。
【図9】圧縮解除エンジンを示すブロック図である。
【図10】圧縮解除エンジンにおいて使用されるバレル
・シフト・オペレーションのレベル図である。
【図11】レジスタ・ローディング情報を発生するため
のステート・マシンのブロック図である。
【図12】タイミング回路を示す論理図である。
【図13】直列圧縮解除プロセスのためのフローチャー
トである。
【図14】並列圧縮解除技法を使用したバレル・シフト
・オペレーションのレベル図である。
【図15】並列圧縮解除プロセスのためのフローチャー
トである。
【図16】本発明に関連したデコーダ構成を示すブロッ
ク図である。
【図17】本発明に関連したヒストリ・バッファ構成を
示すブロック図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アン・アバ・ウィルソン アメリカ合衆国バーモント州、ウォーター ベリー、アール・ディ・2、ボックス 1428

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】圧縮された可変長のデータ項目をデータ圧
    縮システムにおいて処理するための装置にして、 可変長コード項目を記憶するためのコード記憶手段であ
    って、該コード項目の各々は対応する可変長データ項目
    を表し、所定数の可能な可変長コード・ケースのうちの
    1つにおける対応する数のコード・ビットを含むコード
    記憶手段と、 記憶された前記コード・ビットをデコードし、前記可能
    な可変長コード・ケースのうちの1つにおける長さケー
    スを識別する信号を出力するためのデコード手段と、 第2のコード項目に対する複数個の可能な開始アドレス
    を生成するために、前記可変長コード・ケースの各々に
    おけるコード・ビットの数と第1のコード項目の開始ア
    ドレスとの和を同時に発生するための発生手段と、 前記デコード手段によって出力された信号に基づいて前
    記第2のコード項目に対する前記複数個の可能な開始ア
    ドレスのうちの1つを選択するための手段と、を含む処
    理装置。
  2. 【請求項2】複数個のアドレスを有し、可変長のデータ
    項目を記憶するための所定サイズのデータ項目記憶手段
    を含み、 前記データ項目の各々は実際の長さ値を有すること、 前記実際の長さ値は所定数の可能な長さケースのうちの
    1つにあり、前記所定数の可能な可変長コード・ケース
    のうちの1つにあるコード・ビットによって表されるこ
    と、及び前記発生手段によって各コード・ケースに与え
    られたコード・ビットの数は前記データ項目記憶手段の
    サイズに関連すること、 を特徴とする請求項1に記載の処理装置。
  3. 【請求項3】前記可能な可変長コード・ケースの各々を
    記憶し、複数個の前記可能な可変長コード・ケースを並
    列に出力するためのコード長記憶手段と、 前記出力された可能な可変長コード・ケースの各々及び
    第1コード項目に対する前記開始アドレスを受け、前記
    第2コード項目に対する前記複数個の可能な開始アドレ
    スを並列に供給するための加算手段と、 を含むことを特徴とする請求項1に記載の処理装置。
  4. 【請求項4】オリジナル・データを表す複数個の直列的
    に配列された圧縮されたコード・トークンを処理するた
    めの処理装置にして、各コード・トークンは複数個の可
    能な可変長のうちの1つを有し、圧縮情報及びコード長
    情報を含むものにおいて、 (a)コード・トークンを記憶するための手段であっ
    て、第1コード・トークン及び第2コード・トークンの
    各々を記憶するに十分なサイズのものであり、前記記憶
    されたトークンは前記可能な可変長のうちの1つを有す
    るトークン記憶手段と、 (b)コード・トークン長に関係なく前記第1コード・
    トークン及び第2コード・トークンに対して位置合わせ
    された記憶ロケーションを与えるために前記記憶された
    コード・トークンを位置合わせするための位置合わせ手
    段と、 (c)第1の記憶されたコード・トークンに対する前記
    コード長情報をデコードし、前記複数個の可能な可変長
    のうちの1つを識別するためのデコード手段と、 (d)前記トークン記憶手段における前記第1コード・
    トークンのロケーションを決定するために使用される現
    アドレスを与えるための手段と、 (e)前記複数個の可能な可変長の値をすべて同時に与
    えるための長さ供給手段と、 (f)前記複数個の可能な可変長の値及び前記現アドレ
    スに応答して、前記第2コード・トークンに対する複数
    個の可能な次アドレスを生成するための手段と、 (g)前記デコード手段に応答して、前記第2コード・
    トークンに対する次アドレスを前記トークン記憶手段に
    おいて選択するための手段と、 を含む処理装置。
  5. 【請求項5】前記長さ供給手段は、所定の複数個の可変
    的な固定長値を発生するための固定長手段と、複数個の
    可能な次アドレスを生成するために現アドレス値及び対
    応する可変アドレス・サイズを受けるための複数個の加
    算手段とを含むことを特徴とする請求項4に記載の処理
    装置。
  6. 【請求項6】前記位置合わせ手段は、前記コード・トー
    クンの各々を別々に受けるように動作するバレル・シフ
    タ・メモリを含むことを特徴とする請求項4に記載の処
    理装置。
  7. 【請求項7】前記バレル・シフタ・メモリは、受け取っ
    たトークンに対する左位置調整を行うことを特徴とする
    請求項6に記載の処理装置。
  8. 【請求項8】各可変長コード・トークンの少なくとも一
    部分を受け取り、前記記憶手段において前記一部分を完
    全なトークンとしてアセンブルするための手段を含むこ
    とを特徴とする請求項4に記載の処理装置。
  9. 【請求項9】前記可能な次アドレスの各々と使用可能な
    セグメント・データとを比較することによって現在のコ
    ード・トークン全体が前記記憶手段に記憶されているか
    どうかを決定するための決定手段を含むことを特徴とす
    る請求項4に記載の処理装置。
  10. 【請求項10】前記決定手段に応答して前記位置合わせ
    されたコード・トークン全体を記憶するための出力手段
    を含むことを特徴とする請求項9に記載の処理装置。
  11. 【請求項11】前記現アドレス及び使用可能なセグメン
    ト・データに応答して現在のコード・トークンが圧縮解
    除されるまで新しいコード・トークンの導入を遅らせる
    ための手段を含むことを特徴とする請求項10に記載の
    処理装置。
  12. 【請求項12】(a)可変長のデータ・エレメントを受
    け取り、生のデータ及び長さコードを含む生のデータ・
    トークンと前に受け取ったデータ・エレメントに一致す
    るデータ・エレメントに対する圧縮されたワード・トー
    クンとを含む可変長コードを生成するためのデータ圧縮
    装置にして、前記圧縮されたワード・トークンは圧縮コ
    ードと、アドレスと、所定数の可変長の可能性のうちの
    1つを表す可変長コードとを含むデータ圧縮装置と、 (b)データ圧縮解除装置にして、(i) 複数個のアド
    レスを有し、可変長トークンを記憶するための記憶手段
    と、(ii) 第1の可変長コードの長さコードをデコード
    し、長さの可能性の1つを識別する信号を出力するため
    の手段と、(iii) 複数個の可能な次アドレスを生成する
    ために、前記第1の可変長コードにおけるすべての可変
    長の可能性を開始アドレスに加えるための加算手段と、
    (iv) 前記デコード手段の出力に基づいて前記可能な次
    アドレスの1つを後続の可変長コードに対する開始アド
    レスとして選択するための選択手段と、 を含むデータ圧縮解除装置と、 を含むデータ圧縮及び圧縮解除システム。
  13. 【請求項13】前記加算手段は、 所定の複数個の可変の固定長値を記憶するための手段
    と、 各々が共通の開始アドレス及びそれぞれの可変アドレス
    ・サイズを受け取って前記複数個の可能な次アドレスを
    生成させるための複数個の加算装置と、 を含むことを特徴とする請求項12に記載のデータ圧縮
    及び圧縮解除システム。
  14. 【請求項14】前記データ圧縮解除装置は、前記可能な
    次アドレスの各々と使用可能なセグメント・データとを
    比較することによって現在のコード・トークン全体が前
    記記憶手段に記憶されるかどうかを決定するための手段
    を含むことを特徴とする請求項12に記載のデータ圧縮
    及び圧縮解除システム。
  15. 【請求項15】前記データ圧縮解除装置は、 圧縮解除された生のデータを記憶するためのヒストリ・
    バッファ手段と、 すべての他のコード・ワードに関して共通に位置調整さ
    れたコード・ワード全体を記憶し、前記選択手段に応答
    して前記コード・ワードを出力するための出力手段と、 前記出力されたコード・ワードをデコードし、前記ヒス
    トリ・バッファ手段における可変長のデータ・エレメン
    トの記憶を制御するためのデコード手段と、 を含むことを特徴とする請求項12に記載のデータ圧縮
    及び圧縮解除システム。
  16. 【請求項16】圧縮されたデータを圧縮解除するための
    方法にして、前記圧縮されたデータは、圧縮されたデー
    タとして状態を表す状態コードと、所定の複数個の長さ
    値ケースにおける長さを表す長さコードと、ヒストリ・
    メモリにおけるアドレスとを含むコード・トークンによ
    って表される方法において、 (a)前記長さコードをデコードし、前記複数個の長さ
    値ケースの1つを識別するステップと、 (b)複数個の可能な次コード・トークン・アドレスと
    使用可能なコード・トークン記憶領域との間の同一性
    を、(i) 複数個の可能な次コード・トークン・アドレ
    スを生成するためにすべての可能なコード長を現コード
    ・トークン・アドレスに加えること、及び(ii) 使用可
    能な記憶セグメントに基づき、前記複数個の可能な次コ
    ード・トークン・アドレスに対して値の同一性を決定す
    ること、によって決定するステップと、 (c)前記識別された長さ値ケース及び前記決定された
    値の同一性に基づいて次コード・トークン・アドレスを
    選択するステップと、を含む方法。
  17. 【請求項17】前記ヒストリ・メモリのサイズに基づい
    て前記長さコードの値を選択するステップを含むことを
    特徴とする請求項16に記載の方法。
  18. 【請求項18】コード・トークン長に関係なく第1コー
    ド・トークン及び第2コード・トークンに対する位置合
    わせされた記憶ロケーションを与えるためにコード・ト
    ークンを位置合わせするステップを含むことを特徴とす
    る請求項16に記載の方法。
  19. 【請求項19】前記位置合わせするステップは前記コー
    ド・トークンの各々を別々にバレル・シフトするステッ
    プを含むことを特徴とする請求項18に記載の方法。
  20. 【請求項20】各可変長コード・トークンのうちの少な
    くとも一部分を受け取り、前記一部分を完全なトークン
    として記憶手段においてアセンブルするステップと、 前記可能な次コード・トークン・アドレスの各々を使用
    可能なセグメント・データと比較することによって現在
    のコード・トークン全体が前記記憶手段に記憶されるか
    どうかを決定するステップと、 を含むことを特徴とする請求項16に記載の方法。
JP7206924A 1994-08-16 1995-08-14 データを圧縮及び圧縮解除するための方法及び装置 Expired - Fee Related JP2986076B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/291,694 US5572209A (en) 1994-08-16 1994-08-16 Method and apparatus for compressing and decompressing data
US291694 1994-08-16

Publications (2)

Publication Number Publication Date
JPH0879092A true JPH0879092A (ja) 1996-03-22
JP2986076B2 JP2986076B2 (ja) 1999-12-06

Family

ID=23121420

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7206924A Expired - Fee Related JP2986076B2 (ja) 1994-08-16 1995-08-14 データを圧縮及び圧縮解除するための方法及び装置

Country Status (3)

Country Link
US (1) US5572209A (ja)
EP (1) EP0702457A2 (ja)
JP (1) JP2986076B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000059226A (ja) * 1998-07-28 2000-02-25 Xerox Corp 最小マッチ長が3のプリマッチストリングマッチアレイ
JP2010517467A (ja) * 2007-01-31 2010-05-20 テレフオンアクチーボラゲット エル エム エリクソン(パブル) バイナリデータブロックのデジタル圧縮
KR101100650B1 (ko) * 2008-11-11 2012-01-03 한국전자통신연구원 맵데이터를 이용한 간접조명 표현과 다층 변위매핑 시스템 및 그 방법

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP2820048B2 (ja) * 1995-01-18 1998-11-05 日本電気株式会社 画像処理システムとその記憶装置およびそのアクセス方法
US5771010A (en) * 1995-03-22 1998-06-23 Ibm Corporation Apparatus for compressing data using a Lempel-Ziv-type algorithm
KR0180058B1 (ko) * 1995-09-13 1999-04-01 이민화 Cine메모리에 데이타를 압축 저장하는 초음파진단장치
US5745734A (en) * 1995-09-29 1998-04-28 International Business Machines Corporation Method and system for programming a gate array using a compressed configuration bit stream
US5805086A (en) * 1995-10-10 1998-09-08 International Business Machines Corporation Method and system for compressing data that facilitates high-speed data decompression
US6405265B1 (en) 1996-05-08 2002-06-11 Mijenix Corporation Device driver for accessing computer files
US5907703A (en) * 1996-05-08 1999-05-25 Mijenix Corporation Device driver for accessing computer files
US5765157A (en) * 1996-06-05 1998-06-09 Sun Microsystems, Inc. Computer system and method for executing threads of execution with reduced run-time memory space requirements
US6012057A (en) * 1997-07-30 2000-01-04 Quarterdeck Corporation High speed data searching for information in a computer system
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6438556B1 (en) * 1998-12-11 2002-08-20 International Business Machines Corporation Method and system for compressing data which allows access to data without full uncompression
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6208273B1 (en) * 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
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
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
US6611213B1 (en) 1999-03-22 2003-08-26 Lucent Technologies Inc. Method and apparatus for data compression using fingerprinting
US6236341B1 (en) 2000-03-16 2001-05-22 Lucent Technologies Inc. Method and apparatus for data compression of network packets employing per-packet hash tables
US6388584B1 (en) 2000-03-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for data compression of network packets
GB0007781D0 (en) * 2000-03-30 2000-05-17 Sony Uk Ltd Data compression
US6300885B1 (en) * 2000-04-14 2001-10-09 International Business Machines Corporation Dual aldc decompressors inside printer asic
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6657561B1 (en) 2000-05-15 2003-12-02 International Business Machines Corporation Data decompression system and method
US20030217025A1 (en) * 2000-09-11 2003-11-20 David Costantino Textual data storage system and method
US6657565B2 (en) 2002-03-21 2003-12-02 International Business Machines Corporation Method and system for improving lossless compression efficiency
US6903668B1 (en) * 2003-11-18 2005-06-07 M-Systems Flash Disk Pioneers Ltd. Decompression accelerator for flash memory
US20090030960A1 (en) * 2005-05-13 2009-01-29 Dermot Geraghty Data processing system and method
US8615519B2 (en) 2011-06-17 2013-12-24 Sap Ag Method and system for inverted indexing of a dataset
US9450606B1 (en) 2015-10-01 2016-09-20 Seagate Technology Llc Data matching for hardware data compression
US10013170B1 (en) * 2016-03-31 2018-07-03 EMC IP Holding Company LLC Intelligent data compression
CN110784225A (zh) * 2018-07-31 2020-02-11 华为技术有限公司 数据压缩、解压方法及相关装置、电子设备、系统
CN112597082B (zh) * 2020-12-18 2023-02-24 龙芯中科技术股份有限公司 总线的数据传输方法及电子设备
US11677416B2 (en) * 2021-05-17 2023-06-13 Radu Mircea Secareanu Hardware implementable data compression/decompression algorithm

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226119A (en) * 1985-07-03 1993-07-06 Hitachi, Ltd. Graphic display controller
GB8815978D0 (en) * 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
DE3921646A1 (de) * 1989-06-30 1991-01-03 Siemens Ag Verfahren zu einer codierung einer elementfolge und einrichtung zur durchfuehrung des verfahrens
US5058137A (en) * 1989-07-31 1991-10-15 North American Philips Corporation Lempel-Ziv decoder
JP2904298B2 (ja) * 1990-03-30 1999-06-14 マツダ株式会社 車両用多重伝送装置
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
US5243341A (en) * 1992-06-01 1993-09-07 Hewlett Packard Company Lempel-Ziv compression scheme with enhanced adapation
US5245338A (en) * 1992-06-04 1993-09-14 Bell Communications Research, Inc. High-speed variable-length decoder
US5367629A (en) * 1992-12-18 1994-11-22 Sharevision Technology, Inc. Digital video compression system utilizing vector adaptive transform

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000059226A (ja) * 1998-07-28 2000-02-25 Xerox Corp 最小マッチ長が3のプリマッチストリングマッチアレイ
JP2010517467A (ja) * 2007-01-31 2010-05-20 テレフオンアクチーボラゲット エル エム エリクソン(パブル) バイナリデータブロックのデジタル圧縮
KR101100650B1 (ko) * 2008-11-11 2012-01-03 한국전자통신연구원 맵데이터를 이용한 간접조명 표현과 다층 변위매핑 시스템 및 그 방법

Also Published As

Publication number Publication date
JP2986076B2 (ja) 1999-12-06
EP0702457A2 (en) 1996-03-20
US5572209A (en) 1996-11-05

Similar Documents

Publication Publication Date Title
JP2986076B2 (ja) データを圧縮及び圧縮解除するための方法及び装置
US6885319B2 (en) System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US6819271B2 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
JP3303225B2 (ja) Lempel−Zivタイプ・アルゴリズムを用いたデータ圧縮装置
JP3262602B2 (ja) 辞書ベースのデータ圧縮/圧縮解除システム
JP2534465B2 (ja) デ―タ圧縮装置および方法
US5612693A (en) Sliding window data compression using a toroidal bit shift register
JP2915568B2 (ja) テープドライブシステムのための適応データ圧縮装置
US5485526A (en) Memory circuit for lossless data compression/decompression dictionary storage
JP3225638B2 (ja) データを圧縮するための装置及び方法並びにデータ処理システム
JP4475820B2 (ja) 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法
US6195026B1 (en) MMX optimized data packing methodology for zero run length and variable length entropy encoding
JP3332619B2 (ja) 復号装置およびその方法
US5936560A (en) Data compression method and apparatus performing high-speed comparison between data stored in a dictionary window and data to be compressed
US5471594A (en) Data formatter for formatting variable length data words into fixed length data words
US5874908A (en) Method and apparatus for encoding Lempel-Ziv 1 variants
JPH0746409A (ja) データの圧縮、復元方法と装置
CZ289508B6 (cs) Způsob a zařízení pro vytváření kódovaného obrazového signálu a zařízení pro zobrazování obrazového signálu
US6094151A (en) Apparatus and method for finite state machine coding of information selecting most probable state subintervals
US6404362B1 (en) Method and apparatus for reducing the time required for decompressing compressed data
US5657016A (en) Variable length decoder with one of N length indicator
US5739778A (en) Digital data formatting/deformatting circuits
US20230281164A1 (en) Data decompression apparatus
JP2003273746A (ja) 可変長符号復号装置
JP3038234B2 (ja) データ圧縮装置の辞書検索方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees