JP3342700B2 - ストリングリバーサル機構を具備した単一クロックサイクルデータ圧縮装置/圧縮解除装置 - Google Patents

ストリングリバーサル機構を具備した単一クロックサイクルデータ圧縮装置/圧縮解除装置

Info

Publication number
JP3342700B2
JP3342700B2 JP50542294A JP50542294A JP3342700B2 JP 3342700 B2 JP3342700 B2 JP 3342700B2 JP 50542294 A JP50542294 A JP 50542294A JP 50542294 A JP50542294 A JP 50542294A JP 3342700 B2 JP3342700 B2 JP 3342700B2
Authority
JP
Japan
Prior art keywords
string
data
stored
address
clock cycle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP50542294A
Other languages
English (en)
Other versions
JPH07509823A (ja
Inventor
ライル ウォール,ロバート
ディー. ウインターズ,ケル
Original Assignee
アドバンスト ハードウェア アーキテクチャーズ,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アドバンスト ハードウェア アーキテクチャーズ,インコーポレイテッド filed Critical アドバンスト ハードウェア アーキテクチャーズ,インコーポレイテッド
Publication of JPH07509823A publication Critical patent/JPH07509823A/ja
Application granted granted Critical
Publication of JP3342700B2 publication Critical patent/JP3342700B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78

Landscapes

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

Description

【発明の詳細な説明】 発明の分野 この発明は、データの圧縮及び圧縮解除の分野に関す
る。より具体的には、この発明は、ストリングテーブル
を有する適応体系(adaptive scheme)を用いてデータ
を圧縮するデータ圧縮装置に関し、圧縮は、圧縮される
べきデータの内容に依存する。
発明の背景 データ圧縮は、冗長さを含んだデータブロックを格納
するとき又は伝送するときに用いられる技術である。こ
のようなデータブロックを圧縮することにより、特定の
データブロックによってキャリーされる情報量を減らす
ことなく、その有効サイズを著しく小さくすることがで
きる。データ圧縮により、データブロックを格納するの
に必要なメモリ量と、そのデータブロックを伝送するの
に必要な伝送時間は減少するから、格納又は通信される
べき情報の密度は増加する。データ圧縮装置を評価する
のに3つの重要な特性があり、それらは、圧縮装置はど
のように効率的か、圧縮装置はどのように速いか、そし
てエラーなしにデータブロックを完全に再生できるかで
ある。
データ圧縮装置の効率は、圧縮比と呼ばれる量で測定
され、圧縮比は未圧縮キャラクターの数を圧縮キャラク
ターの数で除算することにより計算される。圧縮比が高
くなるほど、圧縮データの密度は大きくなる。圧縮比2
は、圧縮後のキャラクタ数が圧縮前のキャラクタ数の半
分であることを意味する。
データの圧縮装置(compressor)のもう1つの重要な
特性は、圧縮解除装置(decompressor)からの出力が、
元の入力とどのように密接に整合するかである。圧縮技
術は、無損失(lossless)と損失(lossy)に細分化さ
れることができる。無損失な方法は、圧縮データから元
のデータを正確に再構成することができる。無損失な方
法は、テキスト圧縮アプリケーション又はデータを元の
状態に完全に復元することが重要なその他のアプリケー
ションに最も適している。損失のある方法は、圧縮及び
圧縮解除中、何らかのエラー発生を許容する。この種の
方法は、例えばデジタル的にサンプリングされたアナロ
グデータのように、良好な近似で十分な場合に用いられ
る。
データ圧縮装置の速度も、非常に重要な特性として考
慮される。コンピュータと対話する装置は、システムの
中でボトルネックを生ずることなく、コンピュータを効
率良く機能させることができるように十分高速でなけれ
ばならない。システムにとって利益あるものとするため
には、圧縮装置はその動作速度を低下させることなくコ
ンピュータと対話できなければならない。
データを圧縮するのに用いられる技術は数多くある。
最も一般的な方法の1つに、ハフマン符号化方式があ
る。これは、入力データの固定サイズピースを可変長シ
ンボルに翻訳する。頻繁に使用されるシンボルは短符号
によって表わされ、使用頻度の少ないシンボルは長符号
によって表わされる。この技術を用いるために、データ
中における各シンボルの出現(occurrence)頻度は、圧
縮の前に知られていなければならない。もしブロックの
特性が予め知られていないとき、各シンボルの頻度を求
めるには、圧縮される前にデータブロックを一度検査し
なければならない。次に、各シンボルの頻度が求められ
た後、各シンボルの符号が生成され、データは圧縮さ
れ、格納された各符号はその特定のシンボルを表わして
いる。
データ圧縮のもう1つの一般的な方法は、適応圧縮
(adaptive compression)であり、これは辞書ベース圧
縮と称されることもある。適応圧縮はシンボルストリン
グ(symbol strings)の空テーブルから開始し、デー
タが圧縮されるときにテーブルを作成するから、ストリ
ングテーブルの内容が特定のデータブロックの特性を反
映することになる。この方法を用いると、シンボルスト
リングを表わすのに必要なビット数が、繰返しシンボル
ストリングの平均長よりも少ないとき、1以上の圧縮比
を達成することができる。
この種の適応圧縮体系は、IEEE Transactions on Inf
ormation Theory,Vol.24,No.5,pp.530−536(1978年9
月)の「可変速度符号化を介する単一シーケンスの圧
縮」と題する文献の中で、ジャコブ・ジブ及びアブラハ
ム・レンペルにより紹介された。この方法は、圧縮装置
に入力されるとき、データからシンボルストリングのテ
ーブル又は辞書を作成する。そして、特定ストリングが
出会う次の時、その対応辞書インデックスは、シンボル
ストリングの代わりに伝送される。この圧縮体系は、LZ
78と称されるもので、圧縮を実行するために、そのデー
タに関してワンパスだけ必要とする。
1984年、テリー・ウエルチは、IEEE Computer,Vol.1
7,No.6,pp8−19(1984年6月)の「高性能データ圧縮の
ための技術」と題する文献の中で、LZ78の手順を変える
ことを提案した。このデータ圧縮の体系は、LZWアルゴ
リズムと称され、これもまた、データに関してワンパス
だけ必要とする。それはテーブルの周辺に編成され、キ
ャラクタのストリングから構成され、ここで各ストリン
グは固有のものである。各ストリングは、先の入力の中
でこのように遠くで見られた最長マッチングストリング
と、このストリングを先行ストリングと区別させる1バ
イトを表わす固定長符号によって参照される。各ストリ
ングは、ストリングが入力される時に決定された次の使
用可能なアドレス(next available address)のテーブ
ルに格納される。
圧縮装置の中にデータが入力されるとき、圧縮装置は
シンボルをストリングにパーズする。前述したように、
各ストリングは、先の入力の中で、これまでは最長と見
えたマッチングストリングに、このストリングを先のス
トリングと区別させる1シンボルを加えたものによって
構成される。これらのストリングは次に、テーブルに加
えられ、ωKとしてコード化される。ここで、ωは先の
ストリングのインデックス、つまりプレフィックスであ
り、Kはこのストリングを先のストリングと区別させる
1シンボルである。Kはプレフィックスストリングωの
拡張キャラクタと呼ばれ、その通常の2進表示により表
わされる。テーブルの中に格納されるストリング毎に、
そのプレフィックスωもまたテーブルの中に格納され
る。プレフィックスωは、テーブル内のそのアドレスの
2進表示によって表わされる。ωを表わすのに用いられ
るビットの数は、使用されるべきテーブルのサイズに依
存する。例えば、テーブルが4096のエントリまで保持で
きるようにする場合、ωを表わすために12個のビットを
必要とする。ストリングテーブルは、その初期アドレス
の中に単一シンボルのストリングを全て収容するため
に、初期化される。この初期化はデータ圧縮をより速く
行なえる。その理由は、ストリングテーブルは少なくと
も2個のキャラクター長であるストリングを作り始める
ので、それらが入力されるとき、単一シンボルのストリ
ングを格納しなくてもよいからである。
この技術を表わすアルゴリズムについて、ウエルチは
次のように記載している。
単一キャラクタのストリングを収容するためにテーブ
ルを初期化する。
最初の入力キャラクタを読む−−>プレフィックスス
トリングω ステップ:次の入力キャラクタKを読む もし、Kがない場合(入力を使い尽くした): コード(ω)−−>出力;EXIT もし、ωKがストリングテーブルの中に存在する場
合: ωK−−>ω;ステップを繰り返す 他にωKがストリングテーブルの中にない: コード(ω)−−>出力; ωK−−>ストリングテーブル; K−−>ω;ステップを繰り返す このアルゴリズムは、入力されたデータから、一度に
1キャラクタずつ、ストリングを作成する。もし、スト
リングωKが既にストリングテーブルの中に存在すると
き、そのロケーションはωの中にプレイス(place)さ
れ、次のキャラクタKが加えられて、新しいストリング
ωKを作成する。この新しいストリングωKが、ストリ
ングテーブルの中に既に存在する場合、そのロケーショ
ンはωの中にプレイスされ、次のキャラクタKは加算さ
れて、新しいストリングωKを作成する。このプロセス
は、ストリングがストリングテーブルの中に見つからな
くなるまで続けられる。ストリングがストリングテーブ
ルの中に見つからない場合、ωが出力され、ωKはスト
リングテーブル内の次の使用可能なアドレスに格納さ
れ、Kは次にωに格納される。その結果、次のストリン
グωKは、格納された最後のストリングの拡張(extens
ion)キャラクタから開始する。
このアルゴリズムがどのように動作するかについて、
“abcbcab"のデータフローを圧縮する簡単な例を用いて
説明する。この例はテーブル1に示されており、入力コ
ード、出力コード及びストリングテーブルが示されてい
る。図1は、この例から構成されるストリングテーブル
のトリー表示(trie representation)である。この例
で使用されるキャラクタは、3種類の異なるキャラクタ
だけであり、“a"はロケーション“1"に、“b"はロケー
ション“2"に、“c"はロケーション“3"に夫々格納され
るように、ストリングテーブルは初期化されることがで
きる。入力データの第1キャラクタのロケーション“a"
が読まれ、ωの中に配置される。次のキャラクタ“b"が
読まれ、その2進表示がKにプレイスされ、“a"と“b"
は一緒になってストリングωKを表わし、これは“1b"
に等しい。ここで、テーブルはストリング“1b"に対し
て検索される。このストリングはストリングテーブルの
中にまだ存在しないため、テーブル内の次の使用アドレ
ス“4"に格納される。プレフィックスωは圧縮装置から
出力され、メモリ内の圧縮データの一部として格納され
るか、或は他のコンピュータに伝送される。
Kに格納されたキャラクタのアドレスは、このとき、
“b"となっており、“b"はωに格納される。このときの
ωは“2"に等しいことを意味する。次のキャラクタ“c"
はKに格納され、ωKは“2c"に等しい。テーブルは、
次に、まだ存在しないこのストリング“2c"に対して検
索される。このストリングはまだ存在しないため、次の
使用アドレス“5"に格納される。プレフィックス“2"
は、次に出力され、圧縮データの一部として伝送又は格
納されるようにする。このとき、Kに格納されたキャラ
クタのアドレスは“c"となっており、“c"はωに格納さ
れ、ωは“3"に等しい。次のキャラクター“b"が読み出
されて、Kに格納される。このとき、ωKは“3b"に等
しい。このストリングはまだ存在しないから、それは次
の使用アドレス“6"に格納される。プレフィックス“3"
が出力され、Kに格納されたキャラクタのアドレスはω
に格納される。次のキャラクタ“c"はKに格納され、こ
のときωKは“2c"に等しい。ストリングテーブルはこ
のストリングに対して検索され、それはロケーション
“5"で見つけられる。このロケーションは次にωに格納
され、次のキャラクタ“a"が読まれてKに格納される。
これは、ωKが“5a"に等しいことを意味する。テーブ
ルは次に、このストリングに対して検索される。それは
ストリングテーブルにまだ存在しないから、次に使用可
能なロケーション“7"に格納される。プレフィックス
“5"は、次に出力され、Kに格納されたキャラクタのロ
ケーションは、ωに格納され、次のキャラクタ“b"はK
に格納される。このとき、ωKは“1b"に等しい。テー
ブルは次に、このストリングに対して検索され、それは
ロケーション4で見つけられる。このロケーションはω
に格納される。データフローに次のキャラクタはないか
ら、ωが出力され、圧縮は終了する。
上記の例は、7個のキャラクタ“abcbcab"のデータフ
ローをとったもので、それを5個の出力キャラクタ“12
354"に圧縮した。ストリングテーブルを伴なうことによ
って、5個の出力キャラクタは、7個の入力キャラクタ
を完全に表わしている。この例に示されるように、デー
タブロックが増すにつれて、圧縮比は改善される。最初
の3個のキャラクタの圧縮比は1であり、7個のキャラ
クタ全部に対する圧縮比は7/5つまり1.4である。この比
率は、データブロックがより多くのキャラクタに拡張さ
れるにつれて更に改善される。
圧縮解除は、出力コードのグループがそれらのストリ
ングテーブルを伴う限り、出力コードグループのLZWア
ルゴリズムを用いて達成することができる。圧縮解除を
行なう間、コードが圧縮装置から出力されたとき圧縮解
除装置はコードを採用し、各コードをそのプレフィック
スと拡張キャラクタに翻訳する。拡張キャラクタが出力
され、プレフィックスによって表わされたロケーション
に格納されたストリングはそのプレフィックスと拡張キ
ャラクタに分離される。このプロセスは、プレフィック
スが単一シンボルのストリングを含むまで続けられる。
これが起こるとき、シンボルは出力され、次のコードが
メモリから読み出される。それはそのプレフィックスと
拡張キャラクタに分離される。拡張キャラクタは次に出
力され、プレフィックスによって表わされたロケーショ
ンに格納されたストリングは、そのプレフィックスと拡
張キャラクタに分離される。このプロセスは、圧縮解除
されるべきコードがなくなるまで続けられる。
圧縮解除装置は、ストリングを探索するために、圧縮
装置により作成されたストリングテーブルと同じストリ
ングテーブルを用いる。コードが翻訳されるとき、圧縮
解除装置は、圧縮装置のストリングテーブルと同一であ
って、装置固有のストリングテーブルを作成する。各々
の新しいコードが受信されると、ストリングテーブルは
更新(update)される。ウエルチは、圧縮解除アルゴリ
ズムを次のように記載している。
圧縮解除:最初の入力コードを読む−−>CODE−−OL
Dcode;CODE=code(K)で,K−−>出力; 次のコード:次の入力コードを読む−−>CODE−−>
INcode; 新しいコードがない場合;EXIT,他: 次のシンボル:CODE=code(ωK)のとき:K−−>出
力; code(ω)−−>CODE; 次のシンボルを繰り返す 他に、CODE=code(K)のとき:K−−>出力; OLDcode;K−−>ストリングテーブル; INcode−−>OLDcode; 次のコードを繰り返す 上記のアルゴリズムには2つの問題がある。第1の問
題は、各ストリング内の文字が圧縮解除されるとき、圧
縮装置に入力された順序(order)と逆の順序で出力さ
れることである。第2は、圧縮解除の際、エラーを生じ
させる異常事態である。このエラーが起こるかもしれな
いのは、第2のストリングが圧縮解除前にストリングの
1シンボルエクステンションにすぎないときで、この1
シンボルが第2ストリングの第1シンボルと同一のとき
である。この状態が起こるのは、圧縮解除装置は圧縮装
置のストリングテーブルと同じストリングテーブルを作
成するためであるが、それは圧縮装置の後の1ステップ
であるから、圧縮解除装置がこのコードを受信すると
き、コードはストリングテーブルにまだ存在しない。
この圧縮解除装置のアルゴリズムがどのように動作す
るかの一例として、前述の如く発生した出力コードは、
圧縮解除されて元の形態に復活する例を示す。この圧縮
解除の例はテーブル2に示しており、これは、圧縮解除
装置から出力されるのと同じ順序のコード入力とデータ
出力を示している。第1のコード“1"が読まれ、その拡
張(extension)キャラクタ“a"が出力される。次のコ
ード“2"が読まれるが、それも1キャラクタ“b"から構
成されるだけであるから、このキャラクタは出力され
る。第3のコード“3"が読まれ、“c"が出力される。次
のコード“5"が読まれ、そのプレフィックス“2"とその
拡張キャラクタ“c"に翻訳される。拡張キャラクタ“c"
が出力され、プレフィックスにより表わされた値に位置
するストリングは、そのプレフィックスとその拡張キャ
ラクタに翻訳される。このストリング“2"は、単一のキ
ャラクタ“b"だけからなり、それが出力される。最後の
コード“4"が読まれ、そのプレフィックス“1"とその拡
張キャラクタ“b"に翻訳される。拡張キャラクタ“b"が
出力され、プレフィックスに表わされた値に位置するス
トリングがそのプレフィックスと拡張キャラクタに翻訳
される。しかし、このコード“1"は単一のキャラクタ
“a"から構成されるから、そのキャラクタは出力され
る。
テーブル2に示されるように、コードの圧縮解除は、
“abccbba"が出力される結果となる。この出力は、圧縮
装置に入力された元のデータと同じでない。このデータ
がその入力フォーマットに正確に復元されなかった理由
は、各々の多重キャラクタストリング中で、データが圧
縮解除されるときに逆になってしまったからである。キ
ャラクタの各ストリングをその正しい順序に復元するに
は、各ストリングは圧縮解除装置から出力された順序と
逆の順序でなければならない。最初の3つのストリング
は、全て単一シンボルのストリングであるから、逆順序
にする必要はない。次のストリングは“cb"として出力
された。逆の順序にすると、このストリングは“bc"と
なり、これは入力されたストリングの順序と同じであ
る。最後のストリングは“ba"として出力された。これ
を逆の順序にすると、このストリングは“ab"となり、
これは入力されたストリングの順序と一致する。最後の
2つのストリングを逆にした後、その出力は“abcbcab"
となり、これは圧縮装置に入力されたデータフローと全
く同じである。
この方法とLZWアルゴリズムを実行する装置は、ウエ
ルチに付与された米国特許第4,558,302号に記載されて
いる。この装置は、格納と限定されたハッシング検索手
順にランダムアクセスメモリを用いており、ストリング
テーブルを通じて検索し、拡張ストリングをランダムア
クセスメモリに入力する。本発明において、データの圧
縮と圧縮解除を行なうために、上記特許に開示されたLZ
Wアルゴリズムが用いられる。この装置は、後入れ先出
し方式(LIFO)スタックを用いて、圧縮解除装置から出
力されるストリング内のキャラクタの順序を逆にするも
のである。このLIFOスタックは、ストリングを一度に1
キャラクタずつスタックにプッシュする。次にストリン
グ全体が一旦プッシュされると、キャラクタは次に、プ
ッシュされた順序とは逆の順序で一度に1つずつスタッ
クからポップオフ(pop off)される。圧縮解除装置
は、次のストリングをスタックにプッシュする前に待機
しなければならない。一方、現在のストリングはスタッ
クからポップオフされる。
必要なことは、データ圧縮装置が、ストリングテーブ
ルのストリングを検索し、同時にストリングをテーブル
に書き込むことである。ストリングテーブルに対して検
索と書込みを同時に行なうことにより、圧縮に必要な時
間を短縮することができ、1キャラクタはクロックサイ
クル毎に入力することができる。ストリングのリバーサ
ル機構もまた、余分なメモリスペースを必要とすること
なく、他のストリングがスタックからポップオフされる
とき、データ出力を圧縮解除装置から取り出し、1スト
リングをスタックにプッシュできる能力を具備している
必要がある。
発明の要旨 本発明の単一クロックサイクルデータの圧縮装置/圧
縮解除装置はストリングリバーサル機構を具えており、
データを適応に圧縮し、先に圧縮されたデータを解除
し、データを元のフォーマットに復元するために、圧縮
解除されたデータのストリング内のキャラクタをリバー
スすることができる。圧縮装置は、クロックサイクルに
つき、1キャラクタの割合でデータを圧縮することがで
きる。内容参照可能メモリ(連想記憶装置)を用いて圧
縮をより高速で行なうことができる。内容参照可能メモ
リ(content addressable memory)は、同じクロックサ
イクルの間、書込みと検索の機能を実行する能力を有し
ている。キャラクタのストリングは、符号化され、スト
リングテーブルに格納される。入力データは、次に、ス
トリングテーブル内に既に格納されたストリングに一致
させる。ストリングテーブルは、データが入力されると
きに作成され、ストリングテーブルの内容は、圧縮され
るべきデータに完全に依存している。ストリングテーブ
ル内に格納された各ストリングは、多数のキャラクタを
表わしており、先の入力に見られた最長マッチングスト
リングのストリングテーブル中の位置そして、このスト
リングをストリングテーブルに格納されたストリングの
残り全部と区別させる1つのキャラクタとして格納され
る。
圧縮解除では、ストリングのコードは圧縮解除装置に
出力され、各ストリングを区別させる1キャラクタが分
離され、出力される。これまでは最長であると見られた
マッチングストリングのアドレスに格納された拡張キャ
ラクタは、次に分離され、出力される。これは、ストリ
ング内の全てのキャラクタが出力されるまで行なわれ
る。圧縮解除では、各ストリング内のキャラクタは、入
力された順序とは逆の順序で出力される。ストリングリ
バーサル機構は、ストリング内のキャラクタの順序を逆
にし、そのキャラクタをその正しい順序で出力するため
に使用される。
ストリングリバーサル機構は、1のストリングを、圧
縮解除装置から他のストリングを入力するのとは逆の順
序で出力できる能力を有しているから、圧縮解除を高速
で行なえる。ストリングリバーサル機構には、2個のデ
ュアルポートランダムアクセスメモリが用いられ、各メ
モリは同時に入力と出力を行なえる能力を有している。
第1のデュアルポートランダムアクセスメモリは、逆に
すべきストリングを一度に1キャラクタずつ格納するた
めに使用される。第2のデュアルポートランダムアクセ
スメモリは、第1のデュアルポートランダムアクセスメ
モリに格納された各ストリングの開始アドレス(beginn
ing address)と終了アドレス(ending address)を格
納するために使用される。
ストリングリバーサル機構を具えた単一クロックサイ
クルデータの圧縮装置/圧縮解除装置は、データのブロ
ック内に格納された情報量を減少させることなく、格納
又は伝送すべきデータのブロックのサイズを小さくする
ことができる。次に、圧縮解除装置とストリングリバー
サル機構は、格納又は伝送された圧縮データを、元のフ
ォーマットに変換することができる。
図面の簡単な説明 図1は、データフロー“abcbcab"を用いたLZWストリ
ングテーブルのトリー表示である。
図2は、ストリングリバーサル機構を具えた単一クロ
ックサイクルデータの圧縮装置/圧縮解除装置のブロッ
ク図である。
図3は、ストリングリバーサル機構のブロック図であ
る。
望まし実施例の詳細な説明 ストリングリバーサル機構を具えた単一クロックサイ
クルデータの圧縮装置/圧縮解除装置の望ましい実施例
を図2に示している。この装置は、クロックサイクル毎
に、1の未圧縮シンボルの割合でデータを圧縮又は圧縮
解除することができる。本システムは、内容参照可能メ
モリ(4)を用いており、該メモリからデータの読出
し、該メモリへの書込み又は該メモリの検索を行なうこ
とができる。使用されるLZWアルゴリズムは、データの
圧縮をより速くより効率良く行なうことができるように
改善されている。ストリングリバーサル機構(6)は、
圧縮解除装置(2)から出力されたストリング内のキャ
ラクタの順序を逆にするために用いられる。このストリ
ングリバーサル機構は、システムから出力する際、デー
タを元のフォーマットに復元させることができる。本シ
ステムは、無損失データ圧縮を実行し、データ格納、デ
ータ伝送等のあらゆる種類のアプリケーションに利用す
ることができる。なお、アプリケーションは、データの
格納、データの伝送に限定されるものではない。
図2に示される如く、圧縮装置モジュール(1)は、
8ビットの入力バス(21)に接続され、圧縮されるべき
データを一度に1バイトのデータずつ入力できるように
する。圧縮装置モジュールは、データ圧縮の制御を行な
うコントローラ(3)に、制御ライン(22)を通じて結
合される。圧縮装置モジュール(1)は、双方向20ビッ
トストリングデータバス(25)と双方向12ビットアドレ
スバスにより、内容参照可能メモリ(4)に結合され、
圧縮データのストリングの格納と検索が行なわれる。圧
縮データを遠隔位置に送信するために、圧縮装置モジュ
ールの出力(33)は、伝送ライン(40)により、メモ
リ、ディスク又は他のコンピュータに結合される。
メモリ、ディスク又は伝送ライン(40)もまた、圧縮
解除を行なうために、データを圧縮解除装置モジュール
(2)に転送することができる。圧縮解除装置モジュー
ルは、制御ライン(24)により、データの圧縮解除の制
御を行なうコントローラ(3)に結合される。圧縮解除
装置モジュールは、データの圧縮ストリングの格納及び
検索を行なうために、双方向20ビットデータバス(27)
と双方向12ビットアドレスバス(28)を通じて、内容参
照可能メモリ(4)に結合される。圧縮解除装置モジュ
ール(2)はまた、8ビットデータバス(29)を介して
ストリングリバーサル機構(6)に結合されており、圧
縮解除されているが、逆順序にされるべきストリングの
部分であるデータのバイトを転送する。ストリングリバ
ーサル機構(6)は、双方向8ビットスタックデータバ
ス(30)を介して、第1のデュアルポートランダムアク
セスメモリ(7)に結合される。第1のデュアルポート
ランダムアクセスメモリは、逆順序にされるべきバイト
のストリングを格納するために、ストリングキュー(st
ring queue)(9)を含んでいる。第1のデュアルポー
トランダムアクセスメモリ(7)は、双方向8ビットポ
インタバス(31)により、第2のデュアルポートランダ
ムアクセスメモリ(8)に結合される。第2のデュアル
ポートランダムアクセスメモリ(8)はポインタキュー
(10)を含んでおり、このポインタキューはストリング
キュー(9)に含まれるストリングの開始アドレスと終
了アドレスを保持する。ストリングリバーサル機構
(6)もまた、圧縮解除されて逆順序にされたバイトを
出力するために、8ビット出力バス(32)に結合され
る。
内容参照可能メモリ(4)は、制御ライン(23)を通
じてコントローラ(3)に結合され、圧縮と圧縮解除を
行なう間、指示を送るようにする。内容参照可能メモリ
は、圧縮装置モジュール(1)及び圧縮解除装置モジュ
ール(2)の両装置によって使用され、データの圧縮及
び圧縮解除に必要なストリングテーブルを格納する。AS
CII文字セットの全部のキャラクタは、圧縮速度と圧縮
効率の向上のために、単一シンボルストリングとして内
容参照可能メモリの中にハードワイヤード(5)される
ことができる。望ましい実施例において、単一キャラク
タストリングのコード化表現はASCII文字セットに等し
い。従って、メモリのルックアップは圧縮解除に必要で
ない。圧縮の場合、ステップはアルゴリズムにセーブさ
れ、256のメモリロケーションがセーブされる。
圧縮されるべきデータのバイトがコンピュータから、
8ビットの入力バス(21)の圧縮装置モジュール(1)
に入力される。圧縮装置は圧縮されるべきデータのバイ
トをストリングにパーズする。各ストリングは、他のス
トリングのアドレスと、このストリングを他のストリン
グと区別させる拡張キャラクタのアドレスから構成され
る。ストリングは、内容参照可能メモリ(4)のストリ
ングテーブルの中に格納される。データのバイトがスト
リングに一旦圧縮されると、各ストリングの表現は次に
出力(33)されて、コンピュータの記憶装置又はディス
クに記憶されるか、又は他のコンピュータに転送され
る。
圧縮解除されるべきデータは、コンピュータの記憶装
置、ディスク又は他のコンピュータから圧縮解除装置モ
ジュール(2)に送信することができる。データは20ビ
ット表現のストリングとして送信され、8ビットは拡張
キャラクタを表わし、12ビットは残りのストリングのア
ドレスを表わす。圧縮解除装置(2)は次にストリング
からの各拡張キャラクタをパーズし、このキャラクタを
ストリングリバーサル機構(6)に送信し、残りのスト
リングのアドレスに進んで次の拡張キャラクタを検索
し、それをストリングリバーサル機構に送る。ストリン
グのキャラクタ全部がストリングリバーサル機構(6)
に送られると、この機構は次に、キャラクタを元の順序
でコンンピュータに出力する。
ストリングリバーサル機構を具えた単一クロックサイ
クルデータの圧縮装置/圧縮解除装置の構造を図2に示
している。圧縮されるべきデータは、8ビットバス(2
1)を経由して圧縮装置モジュール(1)に入力され
る。圧縮装置は、双方向制御バス(22)を経由してコン
トローラ(3)により指示され、共に、圧縮アルゴリズ
ムを実行する。圧縮装置とコントローラは、両方とも内
容参照可能メモリ(CAM)(4)と対話し、ここでスト
リングテーブルは格納される。圧縮装置は20ビットデー
タバス(25)と12ビットアドレスバス(26)によりCAM
に接続される。個々のキャラクタのASCIIコードを表現
するために、ストリングテーブルの第1の256エントリ
が用いられる。これら256ASCIIコード(5)を表わす論
理は、CAMにハードワイヤードされる。圧縮データは圧
縮装置から他のソース(source)(40)に出力(33)さ
れ、コンピュータの記憶装置又はディスクに記憶する
か、他のコンピュータに転送される。
圧縮解除されるべきデータは、ディスク又は他のコン
ピュータの如きソース(40)から、圧縮解除装置モジュ
ール(2)に入力(34)される。圧縮解除装置もまた、
コントローラ(3)により指示され、共に、圧縮解除ア
ルゴリズムを実行する。圧縮解除装置は20ビットデータ
バス(27)と12ビットアドレスバス(28)により、CAM
(4)に結合される。図2でに示されるように、コント
ローラ(3)は、制御論理のブロックとして別個に示さ
れており、制御ライン(22)により圧縮装置モジュール
(1)へ、制御ライン(23)によりCAM(4)へ、制御
ライン(24)により圧力解除装置(2)へ、夫々結合さ
れる。圧縮装置(1)及び圧縮解除装置(2)もまた、
コントローラ(3)の制御論理を含めることができる。
制御論理が圧縮装置モジュール(1)及び圧縮解除装置
(2)の中に含まれている場合、マッチラインによりCA
M(4)は圧縮装置モジュール(1)に結合される。
圧縮解除装置(2)は、圧縮解除されたキャラクタ
を、8ビットデータバス(29)により、ストリングリバ
ーサル機構(6)に出力する。ストリングリバーサル機
構は2つのデュアルポートランダムアクセスメモリ
(7)(8)を用いることにより、キャラクタが8ビッ
ト出力バス(32)から出力される前に、各ストリング内
のキャラクタの順序を逆にする。第1のデュアルポート
ランダムアクセスメモリ(7)は、8ビットスタックデ
ータバス(30)を通じてストリングリバーサル機構から
データを受信し、圧縮解除装置から受信した順序とは逆
の順序で、一度につき1バイトをストリングを格納する
ために使用される。これらのストリングは、ストリング
キュー(9)の第1デュアルポートランダムアクセスメ
モリの中に格納される。第2のデュアルポートランダム
アクセスメモリ(8)は、8ビットポインタバス(31)
により、第1のデュアルポートランダムアクセスメモリ
に接続され、第1のデュアルポートランダムアクセスメ
モリに現在格納されている各ストリングの開始アドレス
と終了アドレスを格納するために使用される。これらの
アドレスは、第2のデュアルポートランダムアクセスメ
モリ内のポインタキュー(10)に格納される。
本発明は前述したように、LZWアルゴリズムに基づい
たDCLZアルゴリズムを利用するものであるが、入力デー
タブロックの圧縮効率と圧縮装置の取扱いを改善すると
いう追加の特徴を含んでいる。圧縮アルゴリズムの改良
点として、可変のコード長さ、制限されたストリングテ
ーブル、制限されたストリングのサイズ及び圧縮比監視
機能を挙げることができる。
本発明は、ストリングテーブルに格納できるエントリ
の数を4088に制限する。ストリングテーブルが4088のエ
ントリに制限されるため、必要とされる最大コードワー
ドは12ビットである。望ましい実施例において、ストリ
ングのプレフィックスのコードワード長さは、特定のデ
ータブロックのストリングテーブルのサイズに応じて、
9ビット乃至12ビットの範囲で変動する。DCLZアルゴリ
ズムはストリングテーブルを4088に制限し、LZWアルゴ
リズムはストリングテーブルを4096に制限することに留
意すべきである。
DCLZアルゴリズムはストリングの長さを128バイト以
下に制限する。128バイトのストリングが蓄積される
と、そのプレフィックス又はω値が出力され、次の入力
バイトを用いてωを再び初期化し、新たなストリングを
開始する。ストリングサイズのこの制限は、圧縮解除装
置及びストリングリバーサル機構の性能を高めるのに寄
与する。
本発明で使用する圧縮解除アルゴリズムもまた改善さ
れている。上記したように、LZW圧縮解除アルゴリズム
は、書き込まれたときに2つの基本的な問題がある。1
つは、入力された順序とは逆の順序でシンボルが出力さ
れることである。もう1つは、圧縮装置が、圧縮解除装
置のストリングテーブルにまだ存在しないコードを出力
するという特別な入力の場合である。
LZWアルゴリズムを使用するとき、異常入力状態が起
こるのは、そのストリングテーブルの作成において、圧
縮解除装置が圧縮装置の後の1ステップであるからであ
る。問題は、KωKωKLの形態のストリングが出会うと
きに起こる。なお、KとLは単一入力シンボルであり、
ωはストリングであり、Kωはストリングテーブル内に
既に存在する。圧縮装置が第2のKに出会うとき、圧縮
装置は、Kωに対するコードを送信し、ストリングKω
Kをストリングテーブルに追加し、ストリングKで開始
する。次に、圧縮装置はLに達するまで入力をパーズ
し、その時に、テーブルに加えられた最後のストリング
であるKωKのコードを送信する。圧縮解除装置がこの
コードを受信するとき、それはストリングテーブルにま
だ存在しない。
上記問題を引き起こす唯一のストリングは、前記した
形態から構成され、ここで第2のストリングは第1のス
トリングの丁度1シンボル拡張であり、その拡張シンボ
ルはストリングの最初のシンボルと同一である。この問
題を訂正するために、書き込まれたアルゴリズムは、圧
縮解除装置がストリングテーブル内にまだ存在しないコ
ードに出会うとき、最後のシンボルは先のストリングの
最初のシンボルと同じであらねばならず、残りのストリ
ングが先のストリングと同一であることを知る。従っ
て、作られた各ストリングの最初のシンボルが格納さ
れ、先のストリングがOldcodeレジスターの中で使用可
能であるとき、入力コードはこの組合せと置き換えるこ
とができ、圧縮解除される。変更されたアルゴリズムは
次の通りである: 単一シンボルストリングを全部含ませるために、ストリ
ングテーブルを初期化する OldCode<−−first input data FirstSymbol<−−K<−−StringTable[OldCode].
LastSymbol Kを出力 Whileもっと多くの入力データが使用可能 InCode<−−Code<−−next input code If Code not in string table スタックにFirstSymbolをプッシュ Code<−−OldCode if終了 While StringTable[Code].Prefix≠NULL K<−−StringTable[Code].LastSymbol Kを出力 Code<−−StringTable[Code].Prefix While終了 FirstSymbol<−−K<−−StringTable[Code]. LastSymbol Kを出力 ストリングOldCode+Kをストリングテーブルに追加 OldCode<−−Incode While終了 データの圧縮効率をより高め、圧縮速度をより速くす
るために、本発明では、内容参照可能メモリ(CAM)
(4)を用いて、圧縮を行なう間ストリングテーブルを
格納する。内容参照可能メモリのセルは典型的なランダ
ムアクセスメモリの読出し動作と書込み動作を実行す
る。また、検索されるデータがセルの中に格納されたデ
ータと一致するかどうかを決定する追加の能力を有して
いる。メモリの中に格納された一致データがあるとき、
コントローラに知らせるために、信号はマッチライン
(match line)(23)にプレイスされる。内容参照可能
メモリは、製造プロセスが許すならば、静的なもので
も、動的なものでもよい。
本発明では、圧縮と圧縮解除の両方に、この内容参照
可能メモリ(4)が用いられる。圧縮を行なう間、CAM
を用いて、ストリングテーブルを格納し、所定のストリ
ングが既にテーブルの中に存在するかどうかを判断する
ために、そのストリングテーブルの検索を実行する。現
在のシンボルストリングは、検索がシンボルテーブル内
の同じストリングに対して行われるとき、常にシンボル
テーブルに書き込まれる。これは2つのメモリアクセス
を1つに合成して、データ圧縮をスピードアップする。
その理由は、データがメモリに書き込まれる前に、圧縮
装置は、検索が完了するまで待機する代わりに、これら
の動作を両方同時に実行できるからである。
データ圧縮を行なう間、内容参照可能メモリ(4)は
20ビットのデータバス(25)と12ビットのアドレスバス
(26)を通じて、圧縮装置(1)から情報を受信する。
20ビットのデータバスは、各ストリングに情報をキャリ
ーし、最初の12ビットはストリングのプレフィックスω
のために確保され、最後の8ビットはストリングの拡張
キャラクタKのために確保される。12ビットのアドレス
バスは、ストリングコードを書き込むことのできるスト
リングテーブル内の次の使用アドレスをキャリーする。
内容参照可能メモリ(4)は、同じストリングが12ビ
ットのアドレスバス(26)によって表示されたアドレス
に書き込まれると同時に、20ビットのデータバス(25)
にストリングが存在するかが検索される。ストリングが
CAMの中に見つけられると、Matchラインは、ストリング
との一致が見つけられたという信号を発し、ストリング
が見つけられたCAMアドレスは、コントローラ(3)に
出力される。ストリングが見つけられ、ストリングテー
ブル内に既に存在するから、ストリングテーブルの中に
再びそれを格納する必要はない。従って、コントローラ
(3)は、12ビットのアドレスバスにより表示されたア
ドレスをインクリメント(increment)しないから、丁
度書き込まれたアドレスロケーションは次のクロックサ
イクルの上に上書きされる。もし、ストリングがCAMの
中に見つからない場合、Matchラインは、ストリングと
の一致は見つからなかったという信号を発する。この場
合、このストリングをストリングテーブルの中に格納す
ることが必要である。ストリングはCAMが検索されてい
る間に既に書き込まれているので、ストリングテーブル
内のストリングをセーブするために必要なことは、12ビ
ットのアドレスバスによって表示されたアドレスをイン
クリメントすることだけである。このため、次のクロッ
クサイクルのとき、CAMは辞書に加えられたばかりのス
トリングに上書きしなくてもよい。
提案された圧縮装置の性能は、インクリメントアドレ
ス機能を取り除き、Code出力とMatch出力をクロックサ
イクルによってパイプライン処理することによってさら
に高めることができ、それら出力は先のクロックサイク
ルで行なわれた検索結果を常に表わす。この高性能バー
ジョンでは、2つのアドレスバスは、圧縮装置モジュー
ル(1)、Address及びNextAddressから出力される。こ
こで、NextAddressはAddressの値よりも常に1大きい。
この高性能バージョンでは、論理はCAM(4)に加えら
れ、有効書込みアドレスは、パイプラインされたMatch
信号によって表示された先の検索結果に基づいたAddres
s又はNextAddressのどちらかから選択されるようにす
る。
ストリングがストリングテーブルの中で見つけられた
場合、Matchラインのポテンシャルはハイとなり、先の
検索によりストリングテーブル内にストリングが見つか
ったことを表示し、ストリングは、内容参照可能メモリ
内のAddressによって表わされるロケーションに書き込
まれ、そのロケーションにおける先の内容に上書きし、
AddressとNextAddressはインクリメントされない。スト
リングがストリングテーブルの中に見つからない場合、
Matchラインのポテンシャルはローのままであり、先の
検索でストリングテーブル内にストリングが見つからな
かったことを表示し、ストリングは次にNextAddressに
書込きまれる。Addressによって表示されたCAMロケーシ
ョンは先のクロックサイクルのときに書き込まれてお
り、そのロケーションは修正されずに、AddressとNextA
ddressの両方がインクリメントされる。
本発明において、ストリングテーブルは4088の分離し
たロケーションに制限され、その中の最初の256のロケ
ーションは、各々が単一バイトのキャラクタを表わす。
なお、これらの制限を大きくすることができることは勿
論である。これら256のキャラクタはASCII文字セットの
中に含まれるキャラクタであり、それらのアドレスはAS
CIIコードの値を表わす。これらキャラクタは初期化さ
れる毎に内容参照可能メモリ(4)の夫々のアドレスの
中に書き込まれることができるし、又は常に存在するよ
うにCAMの中にハードワイヤードされることもできる。
さらにまた、最初の256アドレス位置(5)とコードはC
AMの中にハードワイヤードされることもできる。ロケー
ション0乃至ロケーション255の各ストリングは、その
アドレスと同じ値を有し、その後に空プレフィックスコ
ード“0000"が続く単一バイトからなる。“a"のASCIIコ
ードは“01100001"であり、そのコードで表わされるア
ドレスに格納されるストリングは、空プレフィックスで
あり、その後の“a"のASCIIコードは“0000 0110 000
1"となる。これらの最初の256のテーブルエントリは、
書き込まれることは決してなく、単に読まれて検索され
るだけである。このため、内容参照可能メモリさらには
リードオンリーメモリの言語を作成してそれらを保有す
るというよりはむしろ、簡単な組合せ論理が加えられ
て、これらロケーションに対してCAM動作をシミュレー
トする。
本発明にあっては、動的な内容参照可能メモリ(DCA
M)(4)を用いることができる。このため、周期的に
リフレッシュする必要がある。制御論理は正常な動作を
周期的に停止し、リフレッシュサイクルを生成する。こ
のリフレッシュサイクルでは、アドレス列(address of
arow)を一度に12ビットのアドレスバス(26)にプレ
イスし、リフレッシュ信号を表明する;このサイクル
中、Read、Write及びSearch信号は表明されるべきでな
く、InputDataバスの値は無視される。DCAMはその列(r
ow)の全てのビットの内容を同時にリフレッシュする。
リフレッシュサイクル中、セルの内容を再生成すること
に加えて、その列のワードがDCAMに書き込まれるときは
いつでも、列全体をリフレッシュできる能力が付与され
る。
圧縮の間、ストリングを表わすコードが圧縮装置モジ
ュール(1)から出力されるとき、前記コードは、格納
されるべき場合はディスクの如き装置(40)に送られ、
転送されるべき場合は他のコンピュータに送られる。圧
縮解除の間、コードは、ディスクの如き装置(40)又は
他のコンピュータから、圧縮解除装置モジュール(2)
に入力される。次に、圧縮解除装置は、各ストリングを
その拡張キャラクタとそのプレフィックスに分離するこ
とにより、一度に1バイトずつストリングを復号化す
る。拡張キャラクタは、次に、ストリングリバーサル機
構(6)に出力され、プレフィックスによって表される
アドレスに格納されたストリングは、そのプレフィック
スと拡張キャラクタに分離される。このプロセスは、単
一キャラクタストリングが、そのASCII値を表わすコー
ドが空プレフィックスに達するまで続けられる。空プレ
フィックスに達すると、ストリングの最後のキャラクタ
は、ストリングリバーサル機構に出力され、新しいコー
ドは圧縮解除装置モジュールに入力される。キャラクタ
が圧縮解除装置からストリングリバーサル機構に出力さ
れる順序は、キャラクタが圧縮装置に入力された順序と
は逆であり、各ストリングの最後のキャラクタの入力
は、ストリングリバーサル機構からの最初のキャラクタ
出力である。
ストリングリバーサル機構(6)は、各ストリング内
のキャラクタを取り出し、それらを逆順序にする能力を
有しているから、それらが出力されるとき、圧縮装置に
入力された順序で現われる。ウエルチによって行なわれ
たように、簡単なスタックを用いて出力ストリングを逆
にすることができるが、ストリングが一旦スタックにプ
ッシュされた後は、圧縮解除装置(2)は、次のストリ
ングのプッシュを開始できる前に、そのストリングがス
タックから完全にポップオフされるまで待機しなければ
ならない。第2のストリングがスタックの他端からポッ
プオフされるとき、スタックの一端にストリングをプッ
シュできるようにすることにより、デュアルエンディッ
ドスタックはこれを幾分助長する。もしそれが2つのス
タックヘッドを維持し、同時にプッシュとポップを実行
できる能力を有する場合、2つのストリングを同時に処
理するために、最長ストリングを十分に保持できるこの
種スタックを用いることができる。このデュアルエンデ
ィッドスタックは、それでも、その問題を効率的に完全
に解決できるわけでない。もし、非常に長いストリング
が、そのあとに単一バイトストリングとなるスタックに
プッシュされると、圧縮解除装置は、最初のストリング
が継続前に完全にポップオフされるのを待機しなければ
ならない。
多重スタックを用いることもでき、もし使用可能なス
タックが十分にある場合、圧縮解除装置(2)は、スト
リングをプッシュするスペースを求めて待機しなくても
よい。本発明において、逆順序にされるべき出力ストリ
ングは、128キャラクタ以下の長さに制限されている。
従って、必要なスタックの数は容易に決定されることが
できる。圧縮解除装置が作ることのできる最も需要の多
いのは、一連の単一バイトストリングがあとに続く最長
ストリングの場合である。最初のストリングは128バイ
トに制限されており、128番目の単一バイトストリング
がプッシュされる時までに、最初のストリングはスタッ
クから完全にポップオフされてしまい、そのスタックは
次のストリングに使用可能であろう。これは、圧縮解除
装置が作ることのできる最も需要の多い場合であるの
で、必要なスタックの最大数は129である。
他のスタックがプッシュオンされる前に、スタックが
ポップオフされるのを待機することなく、圧縮解除装置
(2)を効率良く動作できるようにするためには、最長
129のスタックを使用せねばならないだろう。128バイト
を保持し得る129のスタックを実行するために、各スタ
ックは16512バイトのメモリを必要とし、その大部分は
どんな時間にも使用されないであろう。この方法は、あ
まりに多くの量のメモリを必要とするので好ましくな
い。望ましい方法は、他のストリングがスタックにプッ
シュされていたときにストリングをポップオフすること
ができ、多重ストリングを保持することのできる循環ス
タック(circular stack)を実行することである。スタ
ックの数を64に減じることにより、性能を著しく損なう
ことなく集積回路の領域を節約することができる。
図3に於てリバーサルバッファが環状キュー(circul
ar queue)として考察される場合、即ち、スタックのセ
ットよりむしろリングバッファの場合、必要なメモリは
はるかに少なくてすむ。各スタックのトップでポインタ
を維持する代わりに、いわゆるヘッドポインタ及びテイ
ルポインタと呼ばれる一対のポインタを保存しておき、
キューの各ストリングの開始位置と終了位置を夫々求め
ることができる。逆順序にされるべきストリングがスト
リングリバーサル機構(6)に書き込まれるとき、次に
使用可能な対のポインタは、ストリングキュー(9)の
次の使用ロケーションにセットされる。ストリングの最
終が受信されると、ヘッドポインタ及びテイルポインタ
がセーブされ、新しい一対のポインタが、キューの中の
次のバイトに割り当てられる。ストリングを逆にするた
めに、ヘッドポインタにアドレスされたバイトが出力さ
れ、ヘッドポインタはテイルポインタに達するまでデク
リメント(decrement)され、ストリングの最後のバイ
トが出力される。このストリング全体が一旦出力された
後、対のポインタは他のストリングに対して使用可能で
ある。
この循環スタックを実行するために必要な循環キュー
のサイズは、多重スタック技術を実行するために必要な
メモリ量よりも実質的に少ない。圧縮解除装置(2)に
よって作られる最需要状態は最長のストリングであり、
その後の数多くの単一バイトストリングは最大ストリン
グの長さに等しい。ストリングの最大長さは128バイト
に制限されているから、ストリングキュー(9)は、ス
トリングがポップオフされる間、圧縮解除装置に待機を
強いることなく、この最も需要の多い事態を収容するた
めに256バイトを保持できなければならない。
各ストリングのヘッドポインタとテイルポインタもま
た、循環キュー、ポインタキュー(10)の中で格納され
ることができる。ストリングキュー(9)は256バイト
長さであるので、その中でロケーションを指定するため
に使用される各ポインタは8ビットの長さでなければな
らない。次に、ストリングキューは、ストリングキュー
に格納されたストリングを表わす128対のポインタを格
納するために、256バイトの長さが必要である。2対の
8ビットレジスタは、挿入ポインタ(13)(14)及び除
去ポインタ(11)(12)に対しても必要であり、2つの
7ビットレジスタは、ポインタキューのヘッドポインタ
(16)とテイルポインタ(15)に使用されるために必要
である。ストリングキューのヘッドポインタとテイルポ
インタは、対のポインタが格納されるポインタキューの
アドレスのトラックを保存するために用いられる。
本発明は、2つのデュアルポートランダムアクセスメ
モリ(RAM)(7)(8)を循環キューとして利用し、
図2に示すストリングとポインタを格納する。第1のデ
ュアルポートRAM(7)が用いられて、逆にされるべき
シンボルのストリングを格納し、第2のデュアルポート
RAM(8)が用いられて、第1のキュー(9)内の各ス
トリングの最初と最後のシンボルのアドレスを格納す
る。デュアルポートRAMを用いることにより、エントリ
を各キューに加えることと、各キューから取り除くこと
を同時に行なうことができる。
ストリングが圧縮解除装置(2)から出力されると
き、各キャラクタはストリングキュー(9)の中に格納
され、その開始アドレスと終了アドレスは、ポインタキ
ュー(10)の中に格納される。ストリングの全てのキャ
ラクタは、ストリングキューにプッシュされたとき、次
に逆の順序でポップオフされ、ストリングリバーサル機
構(6)から出力される。ストリングキューは一度に多
数のストリングを保持する能力を有しており、一ストリ
ングがストリングキューにプッシュされるとき、他のス
トリングはストリングキューからポップオフされること
ができる。入力と出力を同時に行なう能力は、2つのデ
ュアルポートランダムアクセスメモリ(7)(8)によ
り実行される。
第2の循環キューはポインタキュー(10)と呼ばれる
が、これはストリングキュー(9)に格納されている各
ストリングの開始アドレスと終了アドレスを格納するた
めである。キャラクタは圧縮解除装置(2)から出力さ
れるとき、それらはストリングキューの中に書き込ま
れ、生成可能な最大長さの2つのストリング、つまり合
計256のキャラクタを保持するために十分なスペースを
提供する。ストリングの第1シンボルがストリングキュ
ーに書き込まれるとき、それが書き込まれたアドレス
は、ポインタキューのそのストリングのヘッドポインタ
として格納される。ストリングの最後のシンボルは、ス
トリングキューに書き込まれるとき、書き込まれたアド
レスは、そのストリングのテイルポインタとして格納さ
れる。この対のアドレスは次に、ストリングキューの中
のストリング位置を決めるために用いられる。このアド
レス対は次にストリングキューの中でストリング位置を
求めることに用いられ、それを用いることによって、ス
トリングキュー内で1組の「仮想スタック(virtual st
acks)」が基本的に作り出される。
ストリングリバーサル機構(6)は、シンボルのスト
リングキュー(9)への挿入とストリングキューからの
除去を制御するのに必要な論理を含んでいる。これら2
つの制御要素は独立して動作し、他のストリングがスト
リングキューからポップオフされるとき、ストリングを
ストリングキューに同時にプッシュされることができ
る。挿入制御論理は、シンボルをストリングキューに書
き込み、現在のストリングに対してスタートポインタと
エンドポインタを蓄積することができるように応答可能
である。ストリングが完了すると、挿入制御論理は、ス
タートポインタとエンドポインタをポインタキュー(1
0)に書き込み、そのキューに対する挿入ポインタを更
新し、新しいストリングを開始する。
除去制御論理は、シンボルをストリングキュー(9)
から読み出し、各ストリングのスタートポインタとエン
ドポインタを用いてそれらを出力する。データを逆にす
るために、シンボルは、それらが挿入された順序とは逆
方向に、エンドポインタからスタートポインタまで取り
除かれる。ストリングが完了すると、次のストリングの
スタートポインタとエンドポインタがロードされ、除去
ポインタがそのキューに更新される。
ポインタキュー(10)のサイズは、2つのポインタの
代わりにストリングの間に1個のポインタを格納するこ
とにより、半分に削減することができる。バッファの中
の一方のストリングの最後が次のストリングの最初に対
応しているから、ポインタキューの各ストリングに対す
るスタートポインタ及びエンドポインタの両ポインタを
格納する必要はない。単一ポインタはストリングの間で
格納されることができ、一方のストリングの最後及び次
のストリングの最初として用いられることができる。1
ポインタを1ストリングの最後及び次のストリングの最
初としてのみ用いることにより、ポインタキューに必要
なデュアルポートRAM8は半分だけ少なくすることができ
る。しかし、これを実行するために、挿入及び除去論理
の複雑性が増すことになる。
ストリングリバーサル機構を具えたこの単一クロック
サイクルデータの圧縮装置/圧縮解除装置は、適応性を
以てデータを圧縮し、先に圧縮されたデータを圧縮解除
し、そのデータを元のフォーマットに復元するために、
圧縮解除されたデータのストリングの中のキャラクタを
逆順序にすることができる。圧縮装置は、クロックサイ
クル毎に1キャラクタの割合でデータを圧縮することが
できる。内容参照可能メモリは、圧縮をより速く行なう
ために用いられる。内容参照可能メモリは、同じクロッ
クサイクルの間、書込みと検索を実行するための能力を
有している。キャラクタのストリングは符号化され、ス
トリングテーブルの中に格納される。入力データは、次
に、ストリングテーブルの中に既に格納されたストリン
グにマッチされる。ストリングテーブルは、データが入
力されるときに作成され、ストリングテーブルの内容は
圧縮されるべきデータに完全に依存している。ストリン
グテーブルの中に格納された各ストリングは、多数のキ
ャラクタを表現し、先の入力中で最長と見られたマッチ
ングストリングがストリングテーブル内にある位置及び
このストリングをストリングテーブルに格納されたスト
リングの残り全部と区別させる1つのキャラクタとして
格納される。
圧縮解除の間、ストリングに対するコードは圧縮解除
装置に出力され、各ストリングを区別させる1キャラク
タは分離され、出力される。これまで最長と見られたス
トリングアドレスに格納された拡張キャラクタは、スト
リングのキャラクタ全部が出力されてしまうまで、分離
されて出力される。圧縮解除の間、各ストリング内のキ
ャラクタは、入力された順序と逆の順序で出力される。
ストリングリバーサル機構は、ストリング内のキャラク
タの順序を逆にし、それらを正しい順序で出力するため
に使用される。
ストリングリバーサル機構は、圧縮解除装置から他の
ストリングを入力するとき、1ストリングを逆の順序で
出力する能力を有しており、圧縮解除の速度を速くする
ことができる。2つのデュアルポートランダムアクセス
メモリは、ストリングリバーサル機構の中で使用され、
各々が同時に入力及び出力する能力を有している。第1
のデュアルポートランダムアクセスメモリは、逆順序に
されるべきストリングを一度に1キャラクタずつ格納す
るために使用される。第2のデュアルポートランダムア
クセスメモリは、第1のデュアルポートランダムアクセ
スメモリに格納されている各ストリングの開始アドレス
及び最終アドレスを格納するために使用される。
ストリングリバーサル機構を具えたこの単一クロック
サイクルデュアルポートの圧縮装置/圧縮解除装置は、
データのブロックの中に格納された情報量を減じること
なく、格納又は転送されるべきデータのブロックのサイ
ズを小さくすることができる。圧縮解除装置及びストリ
ングリバーサル機構は、次に、格納又は転送された圧縮
データをその元のフォーマットに変換することができ
る。
フロントページの続き (72)発明者 ウインターズ,ケル ディー. アメリカ合衆国 83843 アイダホ,モ スコウ,アパルーサ ロード 1790 (56)参考文献 特開 昭60−116228(JP,A) 特開 平4−123619(JP,A) 特開 平4−96174(JP,A) 国際公開91/13398(WO,A1)

Claims (49)

    (57)【特許請求の範囲】
  1. 【請求項1】単一クロックサイクルデータ圧縮装置であ
    って、 a.入力ソースからデータを受信する圧縮装置モジュール
    (1);及び b.圧縮装置モジュール(1)に繋がって、圧縮装置モジ
    ュール(1)からのデータストリングを格納する内容参
    照メモリ(4)を具え、 内容参照メモリ(4)は、データストリングを、その元
    の形態又は圧縮された形態のどちらかの形態で格納する
    と同時に、該データストリングを、内容参照メモリ
    (4)内に予め格納されていたデータストリングと比較
    し、両データストリングが一致するかどうかを決定する
    機能を具えている。
  2. 【請求項2】請求項1に規定された単一クロックサイク
    ルデータ圧縮装置であって、内容参照メモリ(4)は、
    書込み、検索及び読出し可能である。
  3. 【請求項3】請求項2に規定された単一クロックサイク
    ルデータ圧縮装置であって、内容参照可能メモリ(4)
    は、周期的にリフレッシュを必要とするダイナミックタ
    イプである。
  4. 【請求項4】請求項2に規定された単一クロックサイク
    ルデータ圧縮装置であって、内容参照メモリ(4)は、
    複数のストリングを格納するためのストリングテーブル
    を具えており、各ストリングは、受信したデータの1デ
    ータの圧縮された形態を表わす。
  5. 【請求項5】請求項4に規定された単一クロックサイク
    ルデータ圧縮装置であって、各ストリングは入力データ
    の圧縮された形態を表わし、各ストリングは20ビットで
    あり、その12ビットは最長マッチングストリングのアド
    レスを表わし、その8ビットはストリングの最後のシン
    ボルを表わし、最後のシンボルは、このストリングを、
    ストリングテーブルに格納された他の各ストリングと区
    別させる為にある。
  6. 【請求項6】請求項5に規定された単一クロックサイク
    ルデータ圧縮装置であって、ストリングテーブルは4088
    エントリに制限され、最大ストリングの長さは128シン
    ボルある。
  7. 【請求項7】請求項6に規定された単一クロックサイク
    ルデータ圧縮装置であって、ストリングテーブルに格納
    された最初の256のストリングは、各ストリングが各シ
    ンボルに対する圧縮形態を有する単一シンボルを表わ
    し、あとに空プレフィックスが続くそのシンボルに対す
    るASCII表現からなる。
  8. 【請求項8】請求項7に規定された単一クロックサイク
    ルデータ圧縮装置であって、ストリングテーブルに格納
    された最初の256のストリングは、内容参照可能メモリ
    に組み込まれている。
  9. 【請求項9】請求項6に規定された単一クロックサイク
    ルデータ圧縮装置であって、最初の256のストリングは
    単に検索されるだけであり、そのあとに空プレフィック
    スが続くそのシンボルに対するASCII表現からなる。
  10. 【請求項10】単一クロックサイクル適応性データ圧縮
    装置であって: a.入力ソースからデータを受信する圧縮装置モジュール
    (1); b.圧縮装置モジュール(1)に繋がって、圧縮装置モジ
    ュール(1)からのデータストリングを格納する内容参
    照メモリ(4)を具え、 内容参照メモリ(4)は、圧縮装置モジュール(1)か
    ら受信したデータストリングを、その元の形態又は圧縮
    された形態のどちらかの形態で格納すると同時に、該デ
    ータストリングを、内容参照メモリ(4)内に予め格納
    されていたデータストリングと比較し、データストリン
    グが、予め格納されていたデータストリングの中の任意
    の1つと一致するかどうかを決定するように構成され、 c.圧縮装置モジュール(1)から受信したデータストリ
    ングが、予め格納されていたデータストリングと一致す
    るとき、その旨の信号を発生する制御ユニット、 を具えている。
  11. 【請求項11】請求項10に規定された単一クロックサイ
    クル適応性データ圧縮装置であって、内容参照メモリ
    (4)は、書込み、検索及び読出しを行なうことができ
    る。
  12. 【請求項12】請求項11に規定された単一クロックサイ
    クル適応性データ圧縮装置であって、内容参照可能メモ
    リは4088の圧縮された形態を格納する容量を有してお
    り、圧縮された各々の形態は20ビットを含んでおり、8
    ビットは受信データの最後のバイトを表わし、12ビット
    はメモリ内のロケーションを表わし、受信データの12ビ
    ットは格納される。
  13. 【請求項13】請求項12に規定された単一クロックサイ
    クル適応性データ圧縮装置であって、 a.一度に1バイトずつ、入力ソースからデータを受信す
    る手段を具え、各バイトは8ビットの情報を表わしてお
    り、; b.バイトをストリングにパーズする手段を具え、各スト
    リングは、予め格納された最長マッチングストリング
    と、ストリングを予め格納された最長マッチングストリ
    ングと区別する為に設けられてストリングを形成する単
    一バイトからなり; c.入力されたストリングをテーブルに加える手段を具
    え、該入力されたストリングは、予め格納された最長マ
    ッチングストリングと、この入力ストリングを他の予め
    格納された最長マッチングストリングと区別する最後の
    単一バイトを具えて、内容参照可能メモリ(4)内のテ
    ーブルのアドレスを具える 符号化された形態に圧縮されており; d.各ストリング入力に対してコード化された形態を格納
    し、同時に、入力されたストリングを、予めテーブルに
    格納されたストリングと比較し、入力されたストリング
    が、予めテーブルに格納されたストリングのどれかと一
    致するかどうかの決定を行なう手段を具え;及び e.入力されたストリングが、予めテーブルに格納された
    ストリングと一致するとき、信号を発生する手段、 を具えている。
  14. 【請求項14】請求項13に規定された単一クロックサイ
    クル適応性データ圧縮装置であって、テーブルに格納さ
    れた最初の256のストリングは、各ストリングが単一シ
    ンボルを表わし、各シンボルに対して符号化された形態
    を有しており、あとに空プレフィックスが続くシンボル
    に対するASCII表現からなる。
  15. 【請求項15】請求項14に規定された単一クロックサイ
    クル適応性データ圧縮装置であって、テーブルに格納さ
    れた最初の256のストリングは、内容参照可能メモリに
    組み込まれている。
  16. 【請求項16】請求項13に規定された単一クロックサイ
    クル適応性データ圧縮装置であって、最初の256のスト
    リングは、単に検索されるだけであり、そのあとに空プ
    レフィックスが続くそのシンボルに対するASCII表現か
    らなる。
  17. 【請求項17】単一クロックサイクルデータ圧縮装置で
    あって: a.記憶装置は、各ストリングが複数バイトの情報を含む
    複数のストリングを形成するために、共にグループ化さ
    れた複数の記憶セルからなり、各バイトは8ビットを含
    み、前記記憶装置は4096のストリングを格納できる容量
    を有しており; b.制御論理モジュールは記憶装置を制御するために結合
    され; c.データバスは、各データラインが1ビットの情報をキ
    ャリーできる複数のデータラインからなり、データバス
    は記憶装置に結合され; d.アドレスバスは、各アドレスラインが1ビットの情報
    をキャリーできる複数のアドレスラインからなり、アド
    レスバスは記憶装置に結合され; e.プリコンディショニング手段は、データバスの各ライ
    ンとアドレスバスの各ラインを所定の論理状態電圧に予
    め条件設定し; f.格納手段は、入力されたストリングデータを、アドレ
    スによって表わされたロケーションに格納し; g.比較手段は、入力されたストリングデータが、予め格
    納されたストリングデータのどれかと一致するかどうか
    を決定するために、ストリングデータの値を予め格納さ
    れた全てのストリングデータと比較し、格納手段と比較
    手段は同じクロックサイクルの中で実行され; h.マッチラインは、入力されたストリングデータが、予
    め格納されたストリングデータのどれかと一致した場合
    に信号を発するもので、入力されたストリングデータが
    予め格納されたストリングデータに一致したときは第1
    の電圧レベルにあり、入力されたストリングデータが予
    め格納されたストリングデータのどれとも一致しなかっ
    たときは第2の電圧レベルにあり; i.アドレスをインクリメントする手段は、マッチライン
    が第2の電圧レベルのときにアドレスをインクリメント
    する。
  18. 【請求項18】請求項17に規定された単一クロックサイ
    クルデータ圧縮装置であって、記憶装置は内容参照可能
    メモリであり、該メモリは、格納手段及び比較手段を具
    え、書込み、検索及び読出しを行なう手段をさらに具え
    ている。
  19. 【請求項19】請求項18に規定された単一クロックサイ
    クルデータ圧縮装置であって、記憶装置の中に格納され
    た最初の256のストリングは、根コードワードであっ
    て、各コードワードは単一シンボルを表わし、各々が、
    そのあとに空白プレスフックスが続くシンボルのASCII
    表現からなり、最初の256のストリングは内容参照可能
    メモリの中に永久的に組み込まれる。
  20. 【請求項20】圧縮されたデータストリングを圧縮解除
    する圧縮解除装置モジュール(2)に繋がったストリン
    グリバーサル機構であって: a.入力ソースからキャラクタストリング状のデータを受
    信するデータバス(29); b.第1のキャラクタストリングを格納する第1デュアル
    ポートランダムアクセスメモリ(7);及び c.第1デュアルポートランダムアクセスメモリ(7)が
    第1のキャラクタストリングを、格納された順序とは逆
    に出力しながら、同時に次のキャラクタストリングを格
    納するように制御する第2デュアルポートランダムアク
    セスメモリ(8) を具えている。
  21. 【請求項21】請求項20に規定されたストリングリバー
    サル機構であって、第2のデュアルポートランダムアク
    セスメモリ(8)は、第1のデュアルポートランダムア
    クセスメモリ(7)に格納された各ストリングの開始ア
    ドレス及び終了アドレスを格納する。
  22. 【請求項22】請求項21に規定されたストリングリバー
    サル機構であって、各ストリングの開始アドレスと終了
    アドレスは、単一アドレスを、第1ストリングの終了ア
    ドレスと第2ストリングの開始アドレスの両アドレスを
    表わす各ストリングの間で格納することにより置き換え
    られることができる。
  23. 【請求項23】圧縮されたデータストリングを圧縮解除
    する圧縮解除装置モジュール(2)に繋がったストリン
    グリバーサル機構であって: a.入力ソースからストリング状のデータを受信するデー
    タバスであって、各ストリングは複数のバイトからな
    り、各バイトは8ビットの情報を含んでおり、 b.各バイトをストリングの一部として、入力ソースから
    受信した順序で格納する第1のデュアルポートランダム
    アクセスメモリ(7)であって、該メモリ(7)は各バ
    イトを受信した順序とは逆の順序で、格納と同時に出力
    する を具えたストリングリバーサル機構。
  24. 【請求項24】請求項23に規定されたストリングリバー
    サル機構であって、更に第1のデュアルポートランダム
    アクセスメモリ(7)に格納された各ストリングに対し
    て開始アドレス及び終了アドレスを格納する第2のデュ
    アルポートランダムアクセスメモリ(8)を有してい
    る。
  25. 【請求項25】請求項24に規定されたストリングリバー
    サル機構であって、各ストリングの開始アドレスと終了
    アドレスは、単一アドレスを、第1ストリングの終了ア
    ドレスと第2ストリングの開始アドレスの両アドレスを
    表わす各ストリングの間に格納することによって置き換
    えることができる。
  26. 【請求項26】圧縮されたデータストリングを圧縮解除
    する圧縮解除装置モジュール(2)に繋がったストリン
    グリバーサル機構にて、キャラクタのストリングをリバ
    ースする方法であって: a.入力ソースからキャラクタストリング状のデータを受
    信するデータバス(29)を配備する工程; b.一度に1キャラクタずつ第1のキャラクタストリング
    を格納する第1のデュアルポートランダムアクセスメモ
    リ(7)を配備し、格納と同時に格納された順番とは逆
    の順番で第1のキャラクタストリングを一度に1キャラ
    クタずつ出力する工程と、 c.次のキャラクタストリングを一度に1キャラクタずつ
    格納すると同時に、第1のキャラクタストリングを、入
    力ソースから受信された順番と逆の順番で一度に1キャ
    ラクタずつ出力する回路を配備する工程、 から構成される。
  27. 【請求項27】請求項26に規定されたキャラクタのスト
    リングをリバースする方法であって、第1デュアルポー
    トランダムアクセスメモリ(7)に格納された各ストリ
    ングに対する開始アドレス及び終了アドレスを格納する
    第2のデュアルポートランダムアクセスメモリ(8)を
    配備する工程を更に具えている。
  28. 【請求項28】請求項27に規定されたキャラクタのスト
    リングをリバースする方法であって、各ストリングの開
    始アドレスと終了アドレスは、単一アドレスをストリン
    グの間で格納することにより置き換えられることができ
    るもので、単一アドレスは、第1ストリングの終了アド
    レスと第2ストリングの開始アドレスの両アドレスを表
    わしている。
  29. 【請求項29】圧縮されたデータストリングを圧縮解除
    する圧縮解除装置モジュール(2)に繋がったストリン
    グリバーサル機構であって: a.データバスは、ストリングの入力ソースからデータを
    受信するために設けられ、一度に1バイトの情報をキャ
    リーすることが可能で、各バイトは8ビットを含んでお
    り; b.第1のデュアルポートランダムアクセスメモリ(7)
    はデータバスに結合され、入力ソースから受信される順
    序で、一度に1バイトずつストリングを格納するための
    ストリングキューを含んでおり、 c.第2のデュアルポートランダムアクセスメモリ(8)
    は第1のデュアルポートランダムアクセスメモリ(7)
    に結合され、第1のデュアルポートランダムアクセスメ
    モリ(7)に格納された各ストリングに対してヘッドポ
    インタとテイルポインタを格納するためのポインタキュ
    ーを含んでおり; d.出力データバスは、一度に1バイトの情報を出力する
    ことが可能であり、各バイトは8ビットを含んでおり、
    ストリングは、入力された順序と逆の順序で一度に1バ
    イト出力され、同時にストリングは第1のデュアルポー
    トランダムアクセスメモリに一度に1バイト入力され; e.テイル除去ポインタレジスターは、現在逆に並び換え
    られていてストリングリバーサル機構から出力される最
    後のストリングを格納し; f.ヘッド除去ポインタレジスターは、現在逆に並び換え
    られていてストリングリバーサル機構から出力される最
    初のストリングを格納し; g.テイル挿入ポインタレジスターは、現在、ストリング
    リバーサル機構に入力されている最後のストリングを格
    納し; h.ヘッド挿入ポインタレジスターは、現在、ストリング
    リバーサル機構に入力されている最初のストリングを格
    納し; i.ポインタキューテイルレジスターは、対のポインタが
    格納されているポインタキューの中の最後のアドレスを
    格納し;及び j.ポインタキューヘッドレジスターは、対のポインタが
    格納されているポインタキューの中の最初のアドレスを
    格納する。
  30. 【請求項30】請求項29に規定されたストリングリバー
    サル機構であって、各ストリングに対するヘッドポイン
    タとテイルポインタは、各対のストリング間に位置する
    単一ポインタを格納することにより置き換えられること
    ができ、単一ポインタは、第1ストリングの終了アドレ
    スと、第2ストリングの開始アドレスの両アドレスを表
    わしている。
  31. 【請求項31】ストリングリバーサル機構を具えた単一
    クロックサイクルデータの圧縮装置/圧縮解除装置であ
    って: a.入力ソースからデータを受信する圧縮装置モジュール
    (1); b.圧縮装置モジュール(1)から受信したデータを、元
    の形態又は圧縮された形態のどちらかの形態で格納する
    と同時に、該受信したデータを予め格納データと比較
    し、該受信したデータが予め格納されたデータと一致す
    るかどうかを決定する内容参照メモリ(4);及び c.圧縮された形態の格納データを、内容参照メモリ
    (4)から引き続いて検索し、それを元の形態に復元す
    る圧縮解除装置モジュール(2)、 を具えている。
  32. 【請求項32】請求項31に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、内容参照メモリ(4)は、
    書込み、検索及び読出し動作を実行する能力を有する。
  33. 【請求項33】請求項32に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、内容参照可能メモリ(4)
    は、周期的にリフレッシュを必要とするダイナミック形
    であり、リフレッシュは: a.アドレス列を一度にアドレスバスにプレイスするステ
    ップ;及び b.リフレッシュ信号を表明するステップ、 から構成される。
  34. 【請求項34】請求項33に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、内容参照メモリ(4)は、
    受信されたデータの圧縮形態を表わすストリングを格納
    するためのストリングテーブルを具えており、前記スト
    リングテーブルは内容参照可能メモリに格納されてい
    る。
  35. 【請求項35】請求項34に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、入力データの圧縮された形
    態を表わす各ストリングは、20ビットから構成され、12
    ビットは最長マッチングストリングのアドレスを表わ
    し、8ビットは、このストリングを、ストリングテーブ
    ルに格納された他のストリングと区別させるストリング
    の最後のキャラクタを表わしている。
  36. 【請求項36】請求項35に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、ストリングテーブルは4088
    のエントリに制限され、最大のストリング長さは128の
    シンボルに制限される。
  37. 【請求項37】請求項36に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、最初の256のストリングは
    単に検索されるだけであり、そのあとに空プレフィック
    スが続くそのシンボルに対するASCII表現からなる。
  38. 【請求項38】請求項37に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、圧縮解除装置はキャラクタ
    のストリングを、ストリングリバーサル機構(6)に出
    力する。
  39. 【請求項39】請求項38に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、ストリングリバーサル機構
    は: a.キャラクタのストリングを圧縮解除モジュールから受
    信する手段; b.キャラクタのストリングを格納する手段;及び c.先に格納されたキャラクタストリングを、格納された
    順序とは逆の順序で出力しながら、あとのキャラクタス
    トリングを同時に格納する手段、 を具えている。
  40. 【請求項40】請求項39に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、 a.データ受信手段は、各々が8ビットの情報を表わすバ
    イトを、一度に1バイトずつ入力データから受信し; b.パーズ手段はバイトをストリングにパーズし、各スト
    リングは、以前の入力の中に最長と見られるマッチング
    ストリングとそのストリングを先行ストリングと区別さ
    せる1バイトから構成され、 c.追加手段はストリングをテーブルに追加し、ストリン
    グはコード化された形態に圧縮され、最長マッチングス
    トリングとこのストリングを他の任意のストリングと区
    別させる最後のバイトのロケーションのテーブルの中で
    アドレスとして表わされ;及び d.格納手段は、各ストリングに対してコード化された形
    態を格納する。
  41. 【請求項41】請求項40に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、圧縮解除装置を有し: a.ストリングをプレフィックスと拡張キャラクタに分離
    する手段; b.拡張キャラクタをストリングリバーサル機構に出力す
    る手段; c.プレフィックスにより表わされた記憶装置内のロケー
    ションまで移動し、そのロケーションに格納されたスト
    リングをプレフィックスと拡張キャラクタに分離し、拡
    張キャラクタをストリングリバーサル機構に出力する手
    段;及び d.ストリングが空プレフィックスに達するまで、上記ス
    トリングの分離と拡張キャラクタの出力を繰り返す手
    段; を具えている。
  42. 【請求項42】ストリングリバーサル機構を具えた単一
    クロックサイクルデータ圧縮装置/圧縮解除装置であっ
    て: a.各々が1ビットの情報をキャリーできる複数のデータ
    ラインからなるデータバス; b.各々が1ビットの情報をキャリーできる複数のアドレ
    スラインからなるアドレスバス; c.入力データバスの各ラインとアドレスバスの各ライン
    を、所定の論理状態電圧に予め条件設定するプリコンデ
    ィショニング手段; d.予め条件設定されたデータバスの各ラインと、予め条
    件設定されたアドレスバスの各ラインを、アドレスの値
    によって表わされたロケーションで、格納されたメモリ
    状態電圧を形成するメモリに結合する結合手段; e.結合手段と同じクロックサイクルの中で実行されるも
    ので、予め条件設定されたストリングデータライン電圧
    を、予め格納されたメモリ状態の全てと比較し、ストリ
    ングデータライン電圧が、予め格納されたメモリ状態の
    どれかと集合的に一致するかどうかを決定する手段; f.ストリングデータラインの電圧が、予め格納されたメ
    モリ状態のどれかと集合的に一致するときに信号を発生
    する信号発生手段; g.データライン電圧が、予め格納されたメモリ状態のど
    れかと集合的に一致しないとき、アドレスバスによって
    表わされた値をインクリメントする手段; h.予め条件設定されたデータライン電圧を、引き続いて
    検索し、それらをプレフィックスと拡張キャラクタに分
    離する手段; i.拡張キャラクタをストリングリバーサル機構に出力す
    る手段; j.拡張キャラクタをストリングの一部として格納する手
    段; k.プレフィックスにより表わされたデータ値のロケーシ
    ョンを求め、それをプレフィックスと拡張キャラクタに
    分離する手段; l.拡張キャラクタをストリングリバーサル機構に出力
    し、それをストリングの一部として格納し、空プレフィ
    ックスに達するまで、各プレフィックスをそのプレフィ
    ックス及び拡張キャラクタに分離し続ける手段; m.拡張キャラクタを格納する手段と同時に実行されるも
    ので、ストリングリバーサル機構から、キャラクタを受
    信した順序とは逆の順序でストリングの各キャラクタを
    出力する手段; を具えている。
  43. 【請求項43】請求項42に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、記憶装置は、読出し、書込
    み及び検索を行なう手段を有する内容参照可能メモリで
    ある。
  44. 【請求項44】請求項43に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、テーブルに格納された最初
    の256のストリングは、各ストリングが、各シンボルに
    対してコード化された形態を有する単一シンボルを表わ
    し、あとに空白プレフィックスが続くシンボルに対する
    ASCII表現からなる。
  45. 【請求項45】請求項44に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、テーブルに格納された最初
    の256のストリングは内容参照可能メモリの中に組み込
    まれる。
  46. 【請求項46】請求項43に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータの圧縮装
    置/圧縮解除装置であって、最初の256のストリングは
    単に検索されるだけであり、そのあとに空プレフィック
    スが続くそのシンボルのASCII表現からなる。
  47. 【請求項47】ストリングリバーサル機構を具えた単一
    クロックサイクルデータ圧縮装置/圧縮解除装置であっ
    て: a.複数のストリングを形成するために一緒にグループ化
    された複数のメモリセルから構成され、各ストリングは
    複数バイトの情報を含み、各バイトは8ビットを含み、
    4096のストリングを格納できる能力を有する第1の記憶
    装置; b.制御論理モジュール; c.各々が1ビットの情報をキャリーできる複数のデータ
    ラインから構成され、第1の記憶装置に結合されたデー
    タバス; d.各々が1ビットの情報をキャリーできる複数のアドレ
    スラインから構成され、第1の記憶装置に結合されたア
    ドレスバス; e.入力データバスの各ラインと入力アドレスバスの各ラ
    インを所定の論理状態電圧に予め条件設定するプリコン
    ディショニング手段; f.アドレスラインの値によって表わされた位置で、デー
    タラインにより表わされた値を格納する格納手段; g.格納手段と同じクロックサイクルの中で実行され、デ
    ータラインの値を、予め格納された全てのストリングと
    比較する比較手段; h.データラインが、予め格納されたストリングのどれか
    と一致したとき、信号を発生する手段; i.データラインが、予め格納されたストリングのどれと
    も一致しなかったとき、アドレスバスによって表わされ
    た値をインクリメントする手段; j.格納された値を引き続いて検索し、それをプレフィッ
    クスと拡張キャラクタに分離する手段; k.ストリングリバーサル機構によりストリングの一部と
    して格納されるように、拡張キャラクタをストリングリ
    バーサル機構に出力する手段; l.プレフィックスをそのプレフィックスとその拡張キャ
    ラクタに分離し、拡張キャラクタをストリングリバーサ
    ル機構に格納する手段; m.次に続く各プレフィックスを、そのプレフィックスと
    拡張キャラクタに分離し、ストリングの最後を表わす空
    プレフィックスに達するまで各拡張キャラクタを出力す
    る手段; n.次に格納された値を検索し、それをそのプレフィック
    スと拡張キャラクタに分離し、拡張キャラクタを出力
    し、その後に続く各プレフィックスをそのプレフィック
    スと拡張キャラクタに分離し、空プレフィックスに達す
    るまで各拡張キャラクタを出力する手段; o.ストリングリバーサル機構は、数多くのストリングを
    格納する能力を有する第2の記憶装置と、ストリングの
    キャラクタが逆の順序で出力される前にそのキャラクタ
    を格納する第3の記憶装置を具えており、このストリン
    グリバーサル機構から、キャラクタを受信した順序とは
    逆の順序で、ストリングの各キャラクタを出力する手
    段; を具えている。
  48. 【請求項48】請求項47に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータ圧縮装置
    /圧縮解除装置であって、第2の記憶装置は、格納して
    キャラクタのストリングを逆の順序で出力する手段を有
    するデュアルポートランダムアクセスメモリ(7)から
    構成される。
  49. 【請求項49】請求項48に規定されたストリングリバー
    サル機構を具えた単一クロックサイクルデータ圧縮装置
    /圧縮解除装置であって、第3の記憶装置は、第2の記
    憶装置に格納された各ストリングに対する開始アドレス
    と終了アドレスを格納する手段を有するデュアルポート
    ランダムアクセスメモリ(8)から構成される。
JP50542294A 1992-08-03 1993-08-02 ストリングリバーサル機構を具備した単一クロックサイクルデータ圧縮装置/圧縮解除装置 Expired - Fee Related JP3342700B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US07/924,293 US5818873A (en) 1992-08-03 1992-08-03 Single clock cycle data compressor/decompressor with a string reversal mechanism
US924,293 1992-08-03
PCT/US1993/007114 WO1994003983A1 (en) 1992-08-03 1993-08-02 Single clock cycle data compressor/decompressor with a string reversal mechanism

Publications (2)

Publication Number Publication Date
JPH07509823A JPH07509823A (ja) 1995-10-26
JP3342700B2 true JP3342700B2 (ja) 2002-11-11

Family

ID=25450030

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50542294A Expired - Fee Related JP3342700B2 (ja) 1992-08-03 1993-08-02 ストリングリバーサル機構を具備した単一クロックサイクルデータ圧縮装置/圧縮解除装置

Country Status (3)

Country Link
US (1) US5818873A (ja)
JP (1) JP3342700B2 (ja)
WO (1) WO1994003983A1 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199140B1 (en) 1997-10-30 2001-03-06 Netlogic Microsystems, Inc. Multiport content addressable memory device and timing signals
US6219748B1 (en) 1998-05-11 2001-04-17 Netlogic Microsystems, Inc. Method and apparatus for implementing a learn instruction in a content addressable memory device
US6240485B1 (en) 1998-05-11 2001-05-29 Netlogic Microsystems, Inc. Method and apparatus for implementing a learn instruction in a depth cascaded content addressable memory system
US6381673B1 (en) 1998-07-06 2002-04-30 Netlogic Microsystems, Inc. Method and apparatus for performing a read next highest priority match instruction in a content addressable memory device
US6574702B2 (en) 1999-02-23 2003-06-03 Netlogic Microsystems, Inc. Method and apparatus for determining an exact match in a content addressable memory device
US6460112B1 (en) 1999-02-23 2002-10-01 Netlogic Microsystems, Llc Method and apparatus for determining a longest prefix match in a content addressable memory device
US6499081B1 (en) 1999-02-23 2002-12-24 Netlogic Microsystems, Inc. Method and apparatus for determining a longest prefix match in a segmented content addressable memory device
US6539455B1 (en) 1999-02-23 2003-03-25 Netlogic Microsystems, Inc. Method and apparatus for determining an exact match in a ternary content addressable memory device
US6892272B1 (en) 1999-02-23 2005-05-10 Netlogic Microsystems, Inc. Method and apparatus for determining a longest prefix match in a content addressable memory device
US6239727B1 (en) * 1999-06-10 2001-05-29 Universita' Degli Studi Di Palmero Data encoding/decoding process
US6404362B1 (en) 1999-09-21 2002-06-11 Unisys Corporation Method and apparatus for reducing the time required for decompressing compressed data
US7487200B1 (en) 1999-09-23 2009-02-03 Netlogic Microsystems, Inc. Method and apparatus for performing priority encoding in a segmented classification system
US7143231B1 (en) 1999-09-23 2006-11-28 Netlogic Microsystems, Inc. Method and apparatus for performing packet classification for policy-based packet routing
US7272027B2 (en) 1999-09-23 2007-09-18 Netlogic Microsystems, Inc. Priority circuit for content addressable memory
US6567340B1 (en) 1999-09-23 2003-05-20 Netlogic Microsystems, Inc. Memory storage cell based array of counters
US7110407B1 (en) 1999-09-23 2006-09-19 Netlogic Microsystems, Inc. Method and apparatus for performing priority encoding in a segmented classification system using enable signals
US6789134B1 (en) 2000-06-01 2004-09-07 Adaptec, Inc. Dequeuing from a host adapter two-dimensional queue
US6609161B1 (en) 2000-06-01 2003-08-19 Adaptec, Inc. Two-dimensional execution queue for host adapters
US6348881B1 (en) 2000-08-29 2002-02-19 Philips Electronics No. America Corp. Efficient hardware implementation of a compression algorithm
US6426711B1 (en) * 2001-05-14 2002-07-30 Unisys Corporation Character table implemented data compression method and apparatus
US20030088537A1 (en) * 2001-08-08 2003-05-08 Nec Eluminant Technologies, Inc. High speed data compression and decompression apparatus and method
US6760821B2 (en) * 2001-08-10 2004-07-06 Gemicer, Inc. Memory engine for the inspection and manipulation of data
US7107478B2 (en) 2002-12-05 2006-09-12 Connex Technology, Inc. Data processing system having a Cartesian Controller
US7069386B2 (en) * 2001-08-10 2006-06-27 Connex Technology, Inc. Associative memory device
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US8516588B1 (en) * 2002-05-02 2013-08-20 Verizon Patent And Licensing Inc. String detection system and method of detecting a string
US7071854B1 (en) * 2002-05-13 2006-07-04 Unisys Corporation Hardware-implemented LZW data decompression
US7610440B2 (en) * 2002-10-23 2009-10-27 Husby Donald E Content addressable memory with automated learning
US7415596B2 (en) * 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
US7577809B2 (en) * 2005-11-02 2009-08-18 Promethean Storage Llc Content control systems and methods
KR20080094005A (ko) * 2006-01-10 2008-10-22 브라이트스케일, 인크. 병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치
US7571368B1 (en) 2006-01-26 2009-08-04 Promethean Storage Llc Digital content protection systems and methods
US7996899B1 (en) 2006-02-24 2011-08-09 Hitachi Global Storage Technologies Netherlands B.V. Communication systems and methods for digital content modification and protection
US8243922B1 (en) * 2006-02-24 2012-08-14 Hitachi Global Storage Technologies Netherlands B.V. Digital content modification for content protection
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US20080055307A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski Graphics rendering pipeline
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US9563433B1 (en) 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US7439887B2 (en) 2007-02-13 2008-10-21 Seiko Epson Corporation Method and apparatus for GIF decompression using fixed-size codeword table
US7696906B2 (en) * 2008-08-13 2010-04-13 International Business Machines Corporation LZW data compression algorithm
US8793284B2 (en) 2011-05-26 2014-07-29 Laurie Dean Perrin Electronic device with reversing stack data container and related methods
US9729168B1 (en) * 2016-07-17 2017-08-08 Infinidat Ltd. Decompression of a compressed data unit
CN112083875B (zh) * 2019-06-12 2022-09-30 三星电子株式会社 用于在存储***中减少读取端口并加速解压缩的方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3714439A (en) * 1966-08-18 1973-01-30 Itt Image comparison device and method
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
JPH04113522A (ja) * 1990-09-03 1992-04-15 Matsushita Electric Ind Co Ltd 情報記録再生装置
US5485526A (en) * 1992-06-02 1996-01-16 Hewlett-Packard Corporation Memory circuit for lossless data compression/decompression dictionary storage

Also Published As

Publication number Publication date
WO1994003983A1 (en) 1994-02-17
US5818873A (en) 1998-10-06
JPH07509823A (ja) 1995-10-26

Similar Documents

Publication Publication Date Title
JP3342700B2 (ja) ストリングリバーサル機構を具備した単一クロックサイクルデータ圧縮装置/圧縮解除装置
US5229768A (en) Adaptive data compression system
US6597812B1 (en) System and method for lossless data compression and decompression
US5485526A (en) Memory circuit for lossless data compression/decompression dictionary storage
EP0490964B1 (en) Improved data compression apparatus
US5608396A (en) Efficient Ziv-Lempel LZI data compression system using variable code fields
US5151697A (en) Data structure management tagging system
JP3309028B2 (ja) 連想記憶メモリ内の複数辞書管理を改良したlempel−zivデータ圧縮のための装置、及び方法
US5870036A (en) Adaptive multiple dictionary data compression
JP3935952B2 (ja) 頻度の高いキャラクタの組み合わせ、ワード及び/又はフレーズでプレフィルした辞書を用いるLempel―Zivデータ圧縮技術
JP2713369B2 (ja) データ圧縮装置及び方法
JP3273119B2 (ja) データ圧縮・伸長装置
JP3141002B2 (ja) 符号化方法及びデータ圧縮器
JP3141001B2 (ja) 符号化方法及びデータ圧縮器、並びにコンピュータ・プログラムを記録した記録媒体
JPH0568893B2 (ja)
JPH07104971A (ja) ネットワークパケットに適用される小型辞書を用いた圧縮方法
JP2863065B2 (ja) マッチングストリング探索およびハフマン符号化を用いたデータ圧縮装置および方法ならびにデータ伸長装置および方法
JP2006092725A (ja) 圧縮システム及び方法
US5502439A (en) Method for compression of binary data
JP2003510881A (ja) データを展開するのに要する時間を短縮するための方法と装置
RU2450441C1 (ru) Способ и устройство сжатия данных
JPH05134847A (ja) データ圧縮方法
JPH08116269A (ja) データ処理装置及びデータ処理方法
Zia et al. Two-level dictionary-based text compression scheme
JP2825960B2 (ja) データ圧縮方法及び復元方法

Legal Events

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