JP3303225B2 - Lempel−Zivタイプ・アルゴリズムを用いたデータ圧縮装置 - Google Patents
Lempel−Zivタイプ・アルゴリズムを用いたデータ圧縮装置Info
- Publication number
- JP3303225B2 JP3303225B2 JP03370996A JP3370996A JP3303225B2 JP 3303225 B2 JP3303225 B2 JP 3303225B2 JP 03370996 A JP03370996 A JP 03370996A JP 3370996 A JP3370996 A JP 3370996A JP 3303225 B2 JP3303225 B2 JP 3303225B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- output
- cam
- data compression
- compression device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、Lempel−Z
ivタイプ・アルゴリズムに基づくデータ圧縮装置に関
連し、更に詳細に述べれば、前記アルゴリズム用圧縮エ
ンジンのハードウェアの実現に関連する。
ivタイプ・アルゴリズムに基づくデータ圧縮装置に関
連し、更に詳細に述べれば、前記アルゴリズム用圧縮エ
ンジンのハードウェアの実現に関連する。
【0002】
【従来の技術】基本的Lempel−Ziv(L−Z)
アルゴリズムについては、IEEETransacti
ons on Information Theor
y、1977年9月号、530〜536ページにある、
Lempel及びZivによる主題「Compress
ion of Individual Sequenc
es via Variable Rate Codi
ng」、等で説明されている。このアルゴリズムは、そ
の後有効なデータ圧縮の基礎となり、最近では高速デー
タ伝送の基礎として普及している。L−Zアルゴリズム
を利用するアーキテクチャは種々の構成をもつことが可
能であるが、一般的には1つのコンピュータ・システム
と他のコンピュータ・システム叉は入出力装置との間
の、入出力チャネルを介した通信を行う点が共通してい
る。各入出力チャネルは圧縮及び圧縮解除マクロを有
し、このマクロがオプションのメモリを使用してL−Z
アルゴリズムを実行する。
アルゴリズムについては、IEEETransacti
ons on Information Theor
y、1977年9月号、530〜536ページにある、
Lempel及びZivによる主題「Compress
ion of Individual Sequenc
es via Variable Rate Codi
ng」、等で説明されている。このアルゴリズムは、そ
の後有効なデータ圧縮の基礎となり、最近では高速デー
タ伝送の基礎として普及している。L−Zアルゴリズム
を利用するアーキテクチャは種々の構成をもつことが可
能であるが、一般的には1つのコンピュータ・システム
と他のコンピュータ・システム叉は入出力装置との間
の、入出力チャネルを介した通信を行う点が共通してい
る。各入出力チャネルは圧縮及び圧縮解除マクロを有
し、このマクロがオプションのメモリを使用してL−Z
アルゴリズムを実行する。
【0003】簡単に述べれば、圧縮エンジンはデータ・
バイトのストリームを受信し、受信したものを「履歴メ
モリ」へ保管し、バイトの繰返しパターンを検出するた
めに新しいバイトの各々を保管されているバイトと比較
する。その結果、伝送する必要のあるデータ量の削減の
ための基礎として、繰返しパターンが使用できる。この
ように処理される新しいデータに、既に処理されている
2つ以上のデータ・バイトの「ストリング」、又は文字
列が含まれる場合、処理済みデータ文字列の長さ値及び
相対アドレスから成るトークンが生成される。このよう
な処理済みのデータ・バイトの文字列を含む新しいデー
タは、データ文字列自身に含まれるビット数より少ない
ビット数の情報で表すことができるので、データ・スト
リームは効果的に圧縮される。処理される新しいデータ
が、メモリに既に入っている以前のデータ文字列の一部
を含まない場合、圧縮は実行されず、生データを「ロー
・トークン」として伝送する必要がある。
バイトのストリームを受信し、受信したものを「履歴メ
モリ」へ保管し、バイトの繰返しパターンを検出するた
めに新しいバイトの各々を保管されているバイトと比較
する。その結果、伝送する必要のあるデータ量の削減の
ための基礎として、繰返しパターンが使用できる。この
ように処理される新しいデータに、既に処理されている
2つ以上のデータ・バイトの「ストリング」、又は文字
列が含まれる場合、処理済みデータ文字列の長さ値及び
相対アドレスから成るトークンが生成される。このよう
な処理済みのデータ・バイトの文字列を含む新しいデー
タは、データ文字列自身に含まれるビット数より少ない
ビット数の情報で表すことができるので、データ・スト
リームは効果的に圧縮される。処理される新しいデータ
が、メモリに既に入っている以前のデータ文字列の一部
を含まない場合、圧縮は実行されず、生データを「ロー
・トークン」として伝送する必要がある。
【0004】伝送された圧縮ワード・トークンとロー・
トークンを復号化し、元のデータ・バイト・ストリーム
を効果的に回復するために、圧縮解除エンジンは同様の
「履歴メモリ」、及び対応する復号化論理で構成され
る。
トークンを復号化し、元のデータ・バイト・ストリーム
を効果的に回復するために、圧縮解除エンジンは同様の
「履歴メモリ」、及び対応する復号化論理で構成され
る。
【0005】Lempel−Zivアルゴリズムの既に
実施されているものの1つは、一般的に「LZ1」タイ
プ・アルゴリズムと呼ばれる。LZ1アルゴリズムを使
用する場合、一致文字列の開始アドレス及び長さが計算
され、これらが符号化されトークンとして生成される。
例えば、ロー・トークンは「0」の後に生のバイトが続
くものとして生成される。圧縮ワード・トークンは、
「1」の後に一致文字列の長さのバイナリ識別、及びメ
モリ配列の中の一致文字列の開始位置を識別するビット
列(変位と呼ぶ)が続くものとして渡される。「制御ト
ークン」も生成される場合がある。このトークンは、こ
れも複数の1で始まり、その後に制御命令を示す4ビッ
トが続く。最後に、1だけが連続する「終了トークン」
が生成され、圧縮データ・ストリームの終わりを示す。
実施されているものの1つは、一般的に「LZ1」タイ
プ・アルゴリズムと呼ばれる。LZ1アルゴリズムを使
用する場合、一致文字列の開始アドレス及び長さが計算
され、これらが符号化されトークンとして生成される。
例えば、ロー・トークンは「0」の後に生のバイトが続
くものとして生成される。圧縮ワード・トークンは、
「1」の後に一致文字列の長さのバイナリ識別、及びメ
モリ配列の中の一致文字列の開始位置を識別するビット
列(変位と呼ぶ)が続くものとして渡される。「制御ト
ークン」も生成される場合がある。このトークンは、こ
れも複数の1で始まり、その後に制御命令を示す4ビッ
トが続く。最後に、1だけが連続する「終了トークン」
が生成され、圧縮データ・ストリームの終わりを示す。
【0006】表1は、圧縮データ・ワード文字列の長さ
を示すために使用されるコードである。この種類のコー
ディングは修正対数表現コーディングであり、短い文字
列には短いコードを使用し、文字列が長くなればより長
いコードを使用する。短い文字列の使用頻度が長い文字
列の使用頻度より十分多い場合、このコーディング技術
は有効である。メモリ配列のサイズが2Kの実施例で
は、変位は11ビット値で指定される。セクション数が
少なく、サイズも小さい、例えば1K叉は512サイズ
のメモリ配列では、小さい変位が使用される。次の表で
は、可能なコード長のグループが5つあり、各グループ
はそれぞれ2、4、6、8、叉は12ビットで構成され
る点に留意されたい。
を示すために使用されるコードである。この種類のコー
ディングは修正対数表現コーディングであり、短い文字
列には短いコードを使用し、文字列が長くなればより長
いコードを使用する。短い文字列の使用頻度が長い文字
列の使用頻度より十分多い場合、このコーディング技術
は有効である。メモリ配列のサイズが2Kの実施例で
は、変位は11ビット値で指定される。セクション数が
少なく、サイズも小さい、例えば1K叉は512サイズ
のメモリ配列では、小さい変位が使用される。次の表で
は、可能なコード長のグループが5つあり、各グループ
はそれぞれ2、4、6、8、叉は12ビットで構成され
る点に留意されたい。
【表1】 圧縮ワード長を示すコードコード・フィールド 圧縮ワード長 00 2ワード 01 3ワード 10 00 4ワード 10 01 5ワード 10 6ワード 10 11 7ワード 110 000 8ワード ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ 110 111 15ワード 1110 0000 16ワード ・・・・ ・・・・ ・・・ ・・・ ・・・・ ・・・・ ・・・ ・・・ 1110 1111 31ワード 1111 0000 32ワード ・・・・ ・・・・ ・・・・ ・・・ ・・・ ・・・・ ・・・・ ・・・・ ・・・ ・・・ 1111 1110 1111 271ワード
【0007】上記の圧縮アルゴリズムの動作方法の概要
を、「the boy the dog」という語句を
圧縮する簡単な例で説明する。既に説明したように、上
記のLZ1アルゴリズムは、データ・ストリームの中の
繰返される文字列を探すことによってデータを圧縮す
る。例えば、「the boy the dog」のフ
レーズの中では、ワード「the」が文中で繰返される
ので圧縮できる。圧縮は、次の一連のステップに従って
実行される。
を、「the boy the dog」という語句を
圧縮する簡単な例で説明する。既に説明したように、上
記のLZ1アルゴリズムは、データ・ストリームの中の
繰返される文字列を探すことによってデータを圧縮す
る。例えば、「the boy the dog」のフ
レーズの中では、ワード「the」が文中で繰返される
ので圧縮できる。圧縮は、次の一連のステップに従って
実行される。
【0008】最初にこの語句が連想メモリ(CAM)に
保管される。このメモリはアドレス毎に8ビットのAS
CII文字を1つ保管でき、一般的に「履歴バッファ」
と呼ばれる。任意のサイズにすることが可能だが、一般
的な実施例では容量は2K、1K、叉は512バイトで
ある。アドレス データ 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
保管される。このメモリはアドレス毎に8ビットのAS
CII文字を1つ保管でき、一般的に「履歴バッファ」
と呼ばれる。任意のサイズにすることが可能だが、一般
的な実施例では容量は2K、1K、叉は512バイトで
ある。アドレス データ 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
【0009】第2に、繰返し文字列が上記のように識別
される。第3に、繰返し文字列の最初のインスタンスの
開始アドレスが記録される。これは「変位」と呼ばれる
(ここでは、変位=00)。第4に、繰返しデータ文字
列の「長さ」も記録される(ここでは、データ長=0
4)。第5に、繰り返されない文字(即ち「生」デー
タ)がそのまま出力される。ただし、繰返し文字列全体
については、変位及びデータ長だけが出力される。この
例では、圧縮語句の出力は次のようになる。
される。第3に、繰返し文字列の最初のインスタンスの
開始アドレスが記録される。これは「変位」と呼ばれる
(ここでは、変位=00)。第4に、繰返しデータ文字
列の「長さ」も記録される(ここでは、データ長=0
4)。第5に、繰り返されない文字(即ち「生」デー
タ)がそのまま出力される。ただし、繰返し文字列全体
については、変位及びデータ長だけが出力される。この
例では、圧縮語句の出力は次のようになる。
【0010】前記の例では、「d」(変位)及び「L」
(データ長)値を1シングル・バイトで出力できると想
定しているが、これはあまり実際的ではない。また、デ
ータのバイトが「生」(圧縮していない)のものか、叉
は圧縮したものかを圧縮解除アルゴリズムに知らせるた
めに「マーカ」が必要であることも問題となる。マーカ
を使用しないと、「L」および「d」値は他のASCI
Iコードと同じように見えるので、圧縮解除アルゴリズ
ムが機能できない。
(データ長)値を1シングル・バイトで出力できると想
定しているが、これはあまり実際的ではない。また、デ
ータのバイトが「生」(圧縮していない)のものか、叉
は圧縮したものかを圧縮解除アルゴリズムに知らせるた
めに「マーカ」が必要であることも問題となる。マーカ
を使用しないと、「L」および「d」値は他のASCI
Iコードと同じように見えるので、圧縮解除アルゴリズ
ムが機能できない。
【0011】これらの問題を避けるために、LZ1圧縮
データは上記に概説した構成に従って符号化されると共
に、Quarter−inch Cartridge
Drive Standards,Inc.がQIC開
発標準、「AdaptiveLossless Dat
a Compression(ADLC)」、WIC−
154 Rev.A(1994年3月10日付け)中に
発表した業界標準にも従う。次に、図1から図3を参照
してコードを簡単に説明する。
データは上記に概説した構成に従って符号化されると共
に、Quarter−inch Cartridge
Drive Standards,Inc.がQIC開
発標準、「AdaptiveLossless Dat
a Compression(ADLC)」、WIC−
154 Rev.A(1994年3月10日付け)中に
発表した業界標準にも従う。次に、図1から図3を参照
してコードを簡単に説明する。
【0012】図1は、上記の符号化体系で発生する可能
性のある、6つのデータの事例を示す。事例1は、
「生」(圧縮されていない)データであり、事例2から
事例6は長さの違う圧縮されたデータである。圧縮され
るデータについて異なるサイズの圧縮ワード・トークン
を使用することにより、圧縮データの長さが減少し、そ
の結果圧縮効果が高まる。この点に関して、「コード
長」とは、トークンの中のビット数であり(例えば、ロ
ー・トークンでは9ビット)、一方「データ長」とは圧
縮コード・トークンが圧縮解除された結果生成されるバ
イトの数(例えば、「the boy and do
g」の「the」の圧縮コード・トークンの長さは4)
である。
性のある、6つのデータの事例を示す。事例1は、
「生」(圧縮されていない)データであり、事例2から
事例6は長さの違う圧縮されたデータである。圧縮され
るデータについて異なるサイズの圧縮ワード・トークン
を使用することにより、圧縮データの長さが減少し、そ
の結果圧縮効果が高まる。この点に関して、「コード
長」とは、トークンの中のビット数であり(例えば、ロ
ー・トークンでは9ビット)、一方「データ長」とは圧
縮コード・トークンが圧縮解除された結果生成されるバ
イトの数(例えば、「the boy and do
g」の「the」の圧縮コード・トークンの長さは4)
である。
【0013】LZ1アルゴリズムのデータ配列では、第
1ビットは「符号化ビット」である。例えば、図1に示
すように、コード・トークンの第1ビットは、コード・
ワードがロー・バイトの場合だけ「0」になる。このビ
ットは、ロー・ワードの既存の8ビット(図1のbで示
す)に追加され、9ビットのロー・トークンを形成す
る。この第1ビットは、続く8ビットが生データである
ことを示す。圧縮ワード・トークンの場合は、「符号化
ビット」は「1」であり、後に続くデータが圧縮されて
いることを意味する。
1ビットは「符号化ビット」である。例えば、図1に示
すように、コード・トークンの第1ビットは、コード・
ワードがロー・バイトの場合だけ「0」になる。このビ
ットは、ロー・ワードの既存の8ビット(図1のbで示
す)に追加され、9ビットのロー・トークンを形成す
る。この第1ビットは、続く8ビットが生データである
ことを示す。圧縮ワード・トークンの場合は、「符号化
ビット」は「1」であり、後に続くデータが圧縮されて
いることを意味する。
【0014】図1の残りの符号化データは、長さの異な
る圧縮ワード・トークンである。ここでは、符号化ビッ
トとして「1」があり、次の「0」が出てくるまでのビ
ットは、長さビット([L」)がいくつ続くかを示す
(「0」だけの場合は[L」ビットが1個であることを
示し、「0」の前に「1」が2個ある場合は「L」ビッ
トが3個であることを示す)。「L」の値は、長さに従
って0叉は1である。「d」の値には、変位アドレスが
入る。図1に示すデータには、11個の「d]が示され
ている。これらの11の「d」は、履歴バッファとして
働く2K RAM中の変位アドレスである。1K叉は5
12バイトの履歴RAMの場合は、それぞれ10個また
は9個の「d」ビットが使用される。
る圧縮ワード・トークンである。ここでは、符号化ビッ
トとして「1」があり、次の「0」が出てくるまでのビ
ットは、長さビット([L」)がいくつ続くかを示す
(「0」だけの場合は[L」ビットが1個であることを
示し、「0」の前に「1」が2個ある場合は「L」ビッ
トが3個であることを示す)。「L」の値は、長さに従
って0叉は1である。「d」の値には、変位アドレスが
入る。図1に示すデータには、11個の「d]が示され
ている。これらの11の「d」は、履歴バッファとして
働く2K RAM中の変位アドレスである。1K叉は5
12バイトの履歴RAMの場合は、それぞれ10個また
は9個の「d」ビットが使用される。
【0015】図1から明らかなように、トークンの先頭
の5ビットを見れば、コード・ワードが事例1から事例
6のどれに当てはまるかを判定できる。これに履歴RA
Mのサイズ(2K、1Kまたは512)が分かっていれ
ば、コード長が復号化できる。次の表2は、推奨される
履歴RAMサイズに基づくコード長の復号化方法をまと
めたものである。ここでは2K、1K、及び512履歴
RAMサイズのコード長を示す。
の5ビットを見れば、コード・ワードが事例1から事例
6のどれに当てはまるかを判定できる。これに履歴RA
Mのサイズ(2K、1Kまたは512)が分かっていれ
ば、コード長が復号化できる。次の表2は、推奨される
履歴RAMサイズに基づくコード長の復号化方法をまと
めたものである。ここでは2K、1K、及び512履歴
RAMサイズのコード長を示す。
【表2】
【0016】図1に示されていない、追加のLZ1コー
ド・タイプが2つある。前述のように、これらの2つの
コードは「エンド・トークン」及び「制御トークン」と
呼ばれ、どちらも事例6のコードの特殊なものである。
ド・タイプが2つある。前述のように、これらの2つの
コードは「エンド・トークン」及び「制御トークン」と
呼ばれ、どちらも事例6のコードの特殊なものである。
【0017】図1に基づき、語句「the boy t
he dog」について上記のLZ1アルゴリズムから
予想される実際の圧縮データを図2に示す。分かりやす
くするために、各文字の実際のASCIIコードは示し
ていない点に留意されたい。代わりに、複数の「b」で
実際のASCII値を表す。図2の例では、圧縮データ
のビットの総数は115である。8で除算すると、1
4.375バイトになる。即ち、圧縮しない形で「th
e boy the dog」を保管するために必要な
15バイトと比較した場合、圧縮は非常にわずかであ
る。ただし、実際の操作条件の下では、圧縮率はもっと
高く、ほぼ2分の1から3分の1になる。
he dog」について上記のLZ1アルゴリズムから
予想される実際の圧縮データを図2に示す。分かりやす
くするために、各文字の実際のASCIIコードは示し
ていない点に留意されたい。代わりに、複数の「b」で
実際のASCII値を表す。図2の例では、圧縮データ
のビットの総数は115である。8で除算すると、1
4.375バイトになる。即ち、圧縮しない形で「th
e boy the dog」を保管するために必要な
15バイトと比較した場合、圧縮は非常にわずかであ
る。ただし、実際の操作条件の下では、圧縮率はもっと
高く、ほぼ2分の1から3分の1になる。
【0018】以前の圧縮エンジンの例を、図4から図6
に示す。このエンジンは、生データ、及び長さとメモリ
・アドレスで構成されるトークンの組合わせとしてデー
タ文字列を符号化する。図4は、開示されたCAMマク
ロ200の3つの主要セクションを示すブロック図であ
る。第1のセクション210は、512バイトの記憶素
子の配列であり、これらの記憶素子は履歴バッファを形
成し、データ入力バイト(DI)の文字列を保管する。
このセクションの中で、既に受信されて保管されている
バイトが各新しいバイト(時間「t」における動作サイ
クル中に受信される)と比較され、同じ動作サイクル
(t)内に一致が検出、ラッチされ、512個の「一致
ラッチ」ライン上で一致信号ML(t)として識別され
る。さらに同じ動作サイクル(t)の間に、これらのラ
インは第2のセクション、PS論理220に入力され
る。これは文字列一致論理であり、対応する出力ライン
に一致信号M(t)を生成することにより、2バイト以
上の文字列の存在を識別する。第3のセクション230
はエンコーダであり、これは同じサイクル時間tに各位
置nについて一致信号を受信し(1=「セット」及び0
=「非セット」)、アドレスAOUT(t)及びビット
(ORM)の両方を出力する。このビットは、履歴バッ
ファに「文字列」があるかどうかを識別する。アドレス
AOUTは、長さが9ビット(log2 512)であ
り、文字列の最後のバイトを示す。
に示す。このエンジンは、生データ、及び長さとメモリ
・アドレスで構成されるトークンの組合わせとしてデー
タ文字列を符号化する。図4は、開示されたCAMマク
ロ200の3つの主要セクションを示すブロック図であ
る。第1のセクション210は、512バイトの記憶素
子の配列であり、これらの記憶素子は履歴バッファを形
成し、データ入力バイト(DI)の文字列を保管する。
このセクションの中で、既に受信されて保管されている
バイトが各新しいバイト(時間「t」における動作サイ
クル中に受信される)と比較され、同じ動作サイクル
(t)内に一致が検出、ラッチされ、512個の「一致
ラッチ」ライン上で一致信号ML(t)として識別され
る。さらに同じ動作サイクル(t)の間に、これらのラ
インは第2のセクション、PS論理220に入力され
る。これは文字列一致論理であり、対応する出力ライン
に一致信号M(t)を生成することにより、2バイト以
上の文字列の存在を識別する。第3のセクション230
はエンコーダであり、これは同じサイクル時間tに各位
置nについて一致信号を受信し(1=「セット」及び0
=「非セット」)、アドレスAOUT(t)及びビット
(ORM)の両方を出力する。このビットは、履歴バッ
ファに「文字列」があるかどうかを識別する。アドレス
AOUTは、長さが9ビット(log2 512)であ
り、文字列の最後のバイトを示す。
【0019】動作の中で、配列210はサイクル(t)
毎にデータ(DI)の1バイトを受信し、サイクル毎に
512個のML(一致ラッチ)信号を出力する。各サイ
クルで、DIは512個の配列の位置の1つに書き込ま
れ、それと同時に残りの511個の位置の内容と比較さ
れる。DIバイトが順次書込まれるので、その結果連続
するバイトは履歴バッファの中で論理的に隣接する。サ
イクルtにおいてDIがn番目の記憶位置と一致する場
合、ML[n,t]が「セット」される。即ち「1」状
態に置かれる。
毎にデータ(DI)の1バイトを受信し、サイクル毎に
512個のML(一致ラッチ)信号を出力する。各サイ
クルで、DIは512個の配列の位置の1つに書き込ま
れ、それと同時に残りの511個の位置の内容と比較さ
れる。DIバイトが順次書込まれるので、その結果連続
するバイトは履歴バッファの中で論理的に隣接する。サ
イクルtにおいてDIがn番目の記憶位置と一致する場
合、ML[n,t]が「セット」される。即ち「1」状
態に置かれる。
【0020】PS論理220は、512個のML信号を
入力として受信し、512個のM(一致)信号を出力す
る。履歴バッファに現在一致文字列が見つからず、また
2つの連続DIバイトが2つの連続する記憶位置と一致
する場合(即ち、ML[n−1,t−1]及ML[n,
t]がセットされる)、M[n,t]がセットされ、記
憶位置nで終了する少なくとも2つの連続するバイトの
文字列が一致することを示す。信号ORMは、すべての
Mラインの論理ORであり、したがって少なくとも1つ
のMラインをセットすると、結果としてORMがセット
され、アクティブな文字列が存在することを示す。アク
ティブな一致文字列があると、既にアクティブな文字列
を伝播するML一致を除くすべてのML一致が無視され
る。これによって最長の一致文字列が検出され、入力ス
トリームの圧縮が最大になることが保証される。
入力として受信し、512個のM(一致)信号を出力す
る。履歴バッファに現在一致文字列が見つからず、また
2つの連続DIバイトが2つの連続する記憶位置と一致
する場合(即ち、ML[n−1,t−1]及ML[n,
t]がセットされる)、M[n,t]がセットされ、記
憶位置nで終了する少なくとも2つの連続するバイトの
文字列が一致することを示す。信号ORMは、すべての
Mラインの論理ORであり、したがって少なくとも1つ
のMラインをセットすると、結果としてORMがセット
され、アクティブな文字列が存在することを示す。アク
ティブな一致文字列があると、既にアクティブな文字列
を伝播するML一致を除くすべてのML一致が無視され
る。これによって最長の一致文字列が検出され、入力ス
トリームの圧縮が最大になることが保証される。
【0021】文字列は、1つのサイクルから次のサイク
ルへ、PSビットにより伝播される。アクティブな一致
文字列がない場合(ORM=0)、PS[n,t]がM
L[n,t−1]の論理状態に対応してセットされる。
値t−1はPSレジスタで時間単位1だけ遅延される結
果である。アクティブな一致文字列がある(ORM=
1)場合、文字列を継続させるものを除くすべてのML
信号が無視される。したがって、ORM(t)が1の場
合、PS[n,t]はM[n,t−1]である。
ルへ、PSビットにより伝播される。アクティブな一致
文字列がない場合(ORM=0)、PS[n,t]がM
L[n,t−1]の論理状態に対応してセットされる。
値t−1はPSレジスタで時間単位1だけ遅延される結
果である。アクティブな一致文字列がある(ORM=
1)場合、文字列を継続させるものを除くすべてのML
信号が無視される。したがって、ORM(t)が1の場
合、PS[n,t]はM[n,t−1]である。
【0022】既に述べたように、PS論理220の出力
はエンコーダ230が受信し、AOUT(t)及びOR
M信号が生成される。ORM信号は、次の入力バイトD
Iの処理のためにPS論理220にフィードバックされ
る。
はエンコーダ230が受信し、AOUT(t)及びOR
M信号が生成される。ORM信号は、次の入力バイトD
Iの処理のためにPS論理220にフィードバックされ
る。
【0023】図5は、LZ1アルゴリズム用の従来のデ
ータ圧縮エンジン300の下位レベルのブロック図であ
り、圧縮マクロ動作に関する詳細を更に示すものであ
る。データ圧縮エンジンの各種の要素の動作は、制御回
路305が管理する。この回路は、次に説明する各要素
と接続されている。制御回路は、状態マシンとして動作
する論理回路である。データは、入力データ・バス31
0を介して圧縮エンジンに入力され、最初に入力データ
・バッファ・レジスタ320にラッチされる。入力デー
タ・バッファ320に保管されたデータは、次に循環履
歴バッファとして機能する連想メモリ(CAM)配列3
30のすべての現在のエントリと比較される。CAM配
列の中にはバイト記憶要素が順番に配列され、最後の要
素が先頭の要素にフィードバックされてバッファの中を
循環するフローになる。複数の配列セクションの各々
(図では、セクション330−0から330−nで示
す)には、レジスタ331及び比較回路332が含まれ
る。各CAM配列レジスタ331はデータのワードを保
管し、また空セル(EC)と呼ばれる単一の記憶要素3
35を含む。この空セルは、有効な、つまり現在のデー
タ・ワードが、対応するCAM配列セクション・レジス
タに保管されているかどうかを示す。各CAM配列セク
ションの各比較回路332は、対応するCAM配列セク
ション・レジスタ331に保管されているデータ・ワー
ドが、入力データ・バッファ320に事前に保管されて
いるデータ・ワードと一致した場合(即ち、信号ML
[n−1,t−1]及びML[n,t]が共に一致を示
す場合)、一致つまりアクティブな信号を生成する。
ータ圧縮エンジン300の下位レベルのブロック図であ
り、圧縮マクロ動作に関する詳細を更に示すものであ
る。データ圧縮エンジンの各種の要素の動作は、制御回
路305が管理する。この回路は、次に説明する各要素
と接続されている。制御回路は、状態マシンとして動作
する論理回路である。データは、入力データ・バス31
0を介して圧縮エンジンに入力され、最初に入力データ
・バッファ・レジスタ320にラッチされる。入力デー
タ・バッファ320に保管されたデータは、次に循環履
歴バッファとして機能する連想メモリ(CAM)配列3
30のすべての現在のエントリと比較される。CAM配
列の中にはバイト記憶要素が順番に配列され、最後の要
素が先頭の要素にフィードバックされてバッファの中を
循環するフローになる。複数の配列セクションの各々
(図では、セクション330−0から330−nで示
す)には、レジスタ331及び比較回路332が含まれ
る。各CAM配列レジスタ331はデータのワードを保
管し、また空セル(EC)と呼ばれる単一の記憶要素3
35を含む。この空セルは、有効な、つまり現在のデー
タ・ワードが、対応するCAM配列セクション・レジス
タに保管されているかどうかを示す。各CAM配列セク
ションの各比較回路332は、対応するCAM配列セク
ション・レジスタ331に保管されているデータ・ワー
ドが、入力データ・バッファ320に事前に保管されて
いるデータ・ワードと一致した場合(即ち、信号ML
[n−1,t−1]及びML[n,t]が共に一致を示
す場合)、一致つまりアクティブな信号を生成する。
【0024】CAMセクション・アドレス指定回路34
0がCAM配列330と結合され、CAM配列の複数の
書込みセクション(0−n)の1つにランダム・アクセ
ス選択信号を与える。回路340の出力は、入力データ
・バッファ320に現在保持されているデータ・ワード
を保管するために使用する、CAM配列330のセクシ
ョンの1つを識別する。アドレス回路340は順次動作
するので、次にどのCAM配列セクションに入力データ
・バッファの次のデータ・ワードを保管するか決定す
る。
0がCAM配列330と結合され、CAM配列の複数の
書込みセクション(0−n)の1つにランダム・アクセ
ス選択信号を与える。回路340の出力は、入力データ
・バッファ320に現在保持されているデータ・ワード
を保管するために使用する、CAM配列330のセクシ
ョンの1つを識別する。アドレス回路340は順次動作
するので、次にどのCAM配列セクションに入力データ
・バッファの次のデータ・ワードを保管するか決定す
る。
【0025】CAM配列330の現在のエントリは、1
にセットされた空セル(EC)を有し、セクション・ア
ドレス指定回路340によってアドレス指定されないC
AM配列セクションとして示される。現在のCAMエン
トリの1つのデータが、入力データ・バッファ320の
データ・ワードと一致すると、当該CAM配列セクショ
ンの比較回路332が、一致ラッチ・ライン342の相
当する1つにアクティブ一致ラッチ信号を生成する。各
一致ラッチ線342の一致ラッチ信号は、PS論理セク
ション220の中の対応する回路に入力される。
にセットされた空セル(EC)を有し、セクション・ア
ドレス指定回路340によってアドレス指定されないC
AM配列セクションとして示される。現在のCAMエン
トリの1つのデータが、入力データ・バッファ320の
データ・ワードと一致すると、当該CAM配列セクショ
ンの比較回路332が、一致ラッチ・ライン342の相
当する1つにアクティブ一致ラッチ信号を生成する。各
一致ラッチ線342の一致ラッチ信号は、PS論理セク
ション220の中の対応する回路に入力される。
【0026】一次セレクタ(PS)レジスタ・ブロック
350は、図4におけるPS論理220の一部を形成
し、同じ数のセル(n)を有す。これらのセルは、それ
までに一致動作が成功した、CAM配列330の中の対
応するセクションを示すのに使用される。即ち、「1」
(アクティブ)を受信して保管したPSセルは、どのC
AM配列セクション(330−0から330−N)にデ
ータ・ワードの一致文字列の最後のワードが含まれるか
を示す。入力されるデータ・ワードの文字列中の同じ文
字が前に存在した位置が、CAM配列の中に複数ある可
能性があるので、PSレジスタ・ブロック350の複数
のセル(350−0から350−N)がアクティブであ
る場合がある。入力されるデータ・ワードのストリーム
が前に存在してない場合、各ワードは生データ・ワード
と見なされる。事前に処理されているデータの中の連続
する2つのワードの文字列と一致する、連続する2つの
データ・ワードの文字列が検出されるまで、これらの生
データ・ワードの文字列は続けて保管される。次の生デ
ータ・ワードを受信すると、文字列が継続するものか、
及び別の新しい文字列が存在するかが判定される。
350は、図4におけるPS論理220の一部を形成
し、同じ数のセル(n)を有す。これらのセルは、それ
までに一致動作が成功した、CAM配列330の中の対
応するセクションを示すのに使用される。即ち、「1」
(アクティブ)を受信して保管したPSセルは、どのC
AM配列セクション(330−0から330−N)にデ
ータ・ワードの一致文字列の最後のワードが含まれるか
を示す。入力されるデータ・ワードの文字列中の同じ文
字が前に存在した位置が、CAM配列の中に複数ある可
能性があるので、PSレジスタ・ブロック350の複数
のセル(350−0から350−N)がアクティブであ
る場合がある。入力されるデータ・ワードのストリーム
が前に存在してない場合、各ワードは生データ・ワード
と見なされる。事前に処理されているデータの中の連続
する2つのワードの文字列と一致する、連続する2つの
データ・ワードの文字列が検出されるまで、これらの生
データ・ワードの文字列は続けて保管される。次の生デ
ータ・ワードを受信すると、文字列が継続するものか、
及び別の新しい文字列が存在するかが判定される。
【0027】詳細に述べれば、いったん一致が検出され
て別の新しいデータ・ワードを入力データ・バッファ3
20にロードするまでに、PSセルのブロックの内容が
図4の符号化ブロック230に入力され、アドレスが生
成される。また、一致文字が存在する場合は、長さカウ
ンタ390が1だけ増分され、一致文字列の現在の長さ
を識別する。次に、ランダム・アクセス・セクション・
アドレス指定回路340もアクティブになる。これをア
クティブにすることによって、2つのことが完成され
る。第1に、セクション・アドレス指定回路340の出
力が変化するので、その結果次の入力データ・ワードが
CAM配列の別のセクションに書込まれる。第2に、文
字列一致論理がPS論理220のセルの内容を伝播し、
各セルは前の一致CAM配列セクションにすぐ続くCA
M配列セクションと通信する。
て別の新しいデータ・ワードを入力データ・バッファ3
20にロードするまでに、PSセルのブロックの内容が
図4の符号化ブロック230に入力され、アドレスが生
成される。また、一致文字が存在する場合は、長さカウ
ンタ390が1だけ増分され、一致文字列の現在の長さ
を識別する。次に、ランダム・アクセス・セクション・
アドレス指定回路340もアクティブになる。これをア
クティブにすることによって、2つのことが完成され
る。第1に、セクション・アドレス指定回路340の出
力が変化するので、その結果次の入力データ・ワードが
CAM配列の別のセクションに書込まれる。第2に、文
字列一致論理がPS論理220のセルの内容を伝播し、
各セルは前の一致CAM配列セクションにすぐ続くCA
M配列セクションと通信する。
【0028】PS論理220の動作では、PSレジスタ
・ブロック350の中の、対応する一致ラッチ・ライン
342がアクティブである、すべてのアクティブなPS
セル350−0から350−Nが、アクティブな状態を
維持する。対応する一致ラッチ・ラインがアクティブで
はないPSセルはすべてクリアされる。PSセル・エン
トリのいずれかがアクティブな状態で残り、入力データ
・バッファの現在のデータ・ワードと前のデータ・ワー
ドとの一致文字列が続くことを示す場合、各PSセルと
結びついたPS ORゲート360がアクティブにな
り、文字列が継続することを示す。
・ブロック350の中の、対応する一致ラッチ・ライン
342がアクティブである、すべてのアクティブなPS
セル350−0から350−Nが、アクティブな状態を
維持する。対応する一致ラッチ・ラインがアクティブで
はないPSセルはすべてクリアされる。PSセル・エン
トリのいずれかがアクティブな状態で残り、入力データ
・バッファの現在のデータ・ワードと前のデータ・ワー
ドとの一致文字列が続くことを示す場合、各PSセルと
結びついたPS ORゲート360がアクティブにな
り、文字列が継続することを示す。
【0029】この方法で、次のデータ・ワードが処理さ
れ、このデータ・ワードがCAM配列に保管されたデー
タ・ワードの文字列と更に継続して一致するかどうか判
定される。PS ORゲート360の出力に「0」があ
り、新しいワードと保管されたワードとの一致が現在は
ないことを示すまで、この一致処理が続く。PS OR
ゲート360の出力に「0」があると、エンコーダ23
0の一部を形成するアドレス生成回路370は、一致文
字列の1つの位置を判定し、そのアドレスをバス380
に生成する。アドレス生成回路370は、PSレジスタ
・ブロック350の1個以上のセルから信号を与えられ
てアドレスを生成するために使用される論理回路であ
る。このような論理回路は、当分野の技術をもつ当業者
なら簡単に設計できる。一致文字列の長さは、長さカウ
ンタ390の計数で示される。
れ、このデータ・ワードがCAM配列に保管されたデー
タ・ワードの文字列と更に継続して一致するかどうか判
定される。PS ORゲート360の出力に「0」があ
り、新しいワードと保管されたワードとの一致が現在は
ないことを示すまで、この一致処理が続く。PS OR
ゲート360の出力に「0」があると、エンコーダ23
0の一部を形成するアドレス生成回路370は、一致文
字列の1つの位置を判定し、そのアドレスをバス380
に生成する。アドレス生成回路370は、PSレジスタ
・ブロック350の1個以上のセルから信号を与えられ
てアドレスを生成するために使用される論理回路であ
る。このような論理回路は、当分野の技術をもつ当業者
なら簡単に設計できる。一致文字列の長さは、長さカウ
ンタ390の計数で示される。
【0030】アドレス生成回路370は、一致文字列の
最後が入るCAM配列セクションの固定(絶対とも呼ば
れる)アドレスを生成し、長さカウンタ390は一致文
字列の長さを示す。したがって、一致文字列の開始アド
レス及び長さが計算され、符号化されてトークンとして
生成される。
最後が入るCAM配列セクションの固定(絶対とも呼ば
れる)アドレスを生成し、長さカウンタ390は一致文
字列の長さを示す。したがって、一致文字列の開始アド
レス及び長さが計算され、符号化されてトークンとして
生成される。
【0031】図6は、圧縮エンジン中のCAM配列の単
一セクション400を示すブロック図である。セクショ
ン400は、セル・アドレス回路410及び制御回路4
05から入力を受信し、CAM配列レジスタ431及び
比較回路432を含む。レジスタ431には空セル43
3が含まれる。これらの素子の各々は図5で前に説明し
た制御回路305に接続し、この制御回路は配列セクシ
ョン400に対するリセット、シフト、書込み及び入力
のロードを制御する。データは書込み動作中に、入力デ
ータ・バッファ420から指定されたCAM配列レジス
タ431に転送されるか、叉は比較を実行する場合は比
較回路432に転送される。入力データ・バッファ42
0からの値は、比較回路432でCAM配列レジスタ4
31の値と比較される。入力データ・バッファの値がC
AM配列レジスタの値と等しい場合、比較回路432は
値が「1」の一致ラッチ(ML)信号を生成する。その
他の場合は、比較回路432は値「0」の一致ラッチ信
号(ML)を生成する。ML信号は、比較回路の出力の
一部を構成するラッチ・レジスタ(Lタイプ、表示され
ていない)に保管され、更に引き続く処理のためにPS
論理ブロック220に与えられる。
一セクション400を示すブロック図である。セクショ
ン400は、セル・アドレス回路410及び制御回路4
05から入力を受信し、CAM配列レジスタ431及び
比較回路432を含む。レジスタ431には空セル43
3が含まれる。これらの素子の各々は図5で前に説明し
た制御回路305に接続し、この制御回路は配列セクシ
ョン400に対するリセット、シフト、書込み及び入力
のロードを制御する。データは書込み動作中に、入力デ
ータ・バッファ420から指定されたCAM配列レジス
タ431に転送されるか、叉は比較を実行する場合は比
較回路432に転送される。入力データ・バッファ42
0からの値は、比較回路432でCAM配列レジスタ4
31の値と比較される。入力データ・バッファの値がC
AM配列レジスタの値と等しい場合、比較回路432は
値が「1」の一致ラッチ(ML)信号を生成する。その
他の場合は、比較回路432は値「0」の一致ラッチ信
号(ML)を生成する。ML信号は、比較回路の出力の
一部を構成するラッチ・レジスタ(Lタイプ、表示され
ていない)に保管され、更に引き続く処理のためにPS
論理ブロック220に与えられる。
【0032】一般的な実施例では、CAM配列に2,0
48個のセクション400があり、したがってCAM配
列内の文字列のアドレスを指定するために少なくとも1
1ビットを使用する必要がある。このような場合、CA
M配列は2,048セクションを並列に接続するか、叉
は512セクションの4つのセットを並列に組合わせ
る。代替の実施例では、CAM配列は少なくとも10ビ
ットのアドレス記述を要する1,012セクションの大
きさ、又は少なくとも9ビットのアドレス記述を要する
512セクション、もしくは最後に9ビット・アドレス
を要する512セクションである。代替実施例では、こ
れらとは異なるサイズのCAM配列を使用することも可
能である。
48個のセクション400があり、したがってCAM配
列内の文字列のアドレスを指定するために少なくとも1
1ビットを使用する必要がある。このような場合、CA
M配列は2,048セクションを並列に接続するか、叉
は512セクションの4つのセットを並列に組合わせ
る。代替の実施例では、CAM配列は少なくとも10ビ
ットのアドレス記述を要する1,012セクションの大
きさ、又は少なくとも9ビットのアドレス記述を要する
512セクション、もしくは最後に9ビット・アドレス
を要する512セクションである。代替実施例では、こ
れらとは異なるサイズのCAM配列を使用することも可
能である。
【0033】PS論理の従来の実施例を図7に示す。こ
こでは、所定の処理サイクル時間(t)において、各一
致ラッチ(ML)出力が、ANDゲート510を有する
PS論理セクション500の対応する位置(n)に与え
られる。また、ANDゲートへの入力は、同じ処理サイ
クル(t)中において、位置(n−1)にある隣接する
PS論理セクションからの一次選択(PS)出力もあ
る。ANDゲート510出力は、511個の他の同様の
出力と共にファン・イン(FI)としてOR560へ与
えられる。これは、時間tにおいて一致文字列が存在す
るかしないかを示す信号ORM(t)を出力する。ハー
ドウェア上に実装される場合、OR回路560は大きな
チップ領域を必要とし、本発明が解決を目指す問題の1
つを引起こす。
こでは、所定の処理サイクル時間(t)において、各一
致ラッチ(ML)出力が、ANDゲート510を有する
PS論理セクション500の対応する位置(n)に与え
られる。また、ANDゲートへの入力は、同じ処理サイ
クル(t)中において、位置(n−1)にある隣接する
PS論理セクションからの一次選択(PS)出力もあ
る。ANDゲート510出力は、511個の他の同様の
出力と共にファン・イン(FI)としてOR560へ与
えられる。これは、時間tにおいて一致文字列が存在す
るかしないかを示す信号ORM(t)を出力する。ハー
ドウェア上に実装される場合、OR回路560は大きな
チップ領域を必要とし、本発明が解決を目指す問題の1
つを引起こす。
【0034】ORM(t)信号がAND/OR/反転回
路(AOI)540に与えられ、これは一次選択信号P
S(n−1,t)を入力とする第1のドライバ520の
反転出力、及び一致ラッチ信号ML(n,t)を入力と
する第2のドライバ530の反転出力と一緒になる。A
OI540の出力は、PSレジスタ550に与えられ
る。レジスタ550は、位置n及び時間tにおける出力
を生成し、エンコーダ600に送る。この出力は、この
後のPS論理段階にも使用される。このような段階50
0を複数使用するPS論理220の実装には、実質的要
素及びチップ領域が必要であり、特に各段階のAOI5
40ならびにドライバ520及び530に要求される。
路(AOI)540に与えられ、これは一次選択信号P
S(n−1,t)を入力とする第1のドライバ520の
反転出力、及び一致ラッチ信号ML(n,t)を入力と
する第2のドライバ530の反転出力と一緒になる。A
OI540の出力は、PSレジスタ550に与えられ
る。レジスタ550は、位置n及び時間tにおける出力
を生成し、エンコーダ600に送る。この出力は、この
後のPS論理段階にも使用される。このような段階50
0を複数使用するPS論理220の実装には、実質的要
素及びチップ領域が必要であり、特に各段階のAOI5
40ならびにドライバ520及び530に要求される。
【0035】結果として、圧縮が迅速且つ能率的に実行
される。上記のLZ1を使用する方法では、一致データ
文字列の探索が徹底的に実行されるので、効果的な圧縮
が行われる。即ち、CAM配列により、一致文字列のす
べての可能性を徹底的に探索できる。
される。上記のLZ1を使用する方法では、一致データ
文字列の探索が徹底的に実行されるので、効果的な圧縮
が行われる。即ち、CAM配列により、一致文字列のす
べての可能性を徹底的に探索できる。
【0036】図4から図7の構造に従ってCAMマクロ
が実装される場合、入力データ・ストリームを効率的に
圧縮するために、パイプライン圧縮データ・フローが必
要である。これは、高いレベルの正確なスループットを
達成するために、連繋されたデータの並列フローを提供
する。
が実装される場合、入力データ・ストリームを効率的に
圧縮するために、パイプライン圧縮データ・フローが必
要である。これは、高いレベルの正確なスループットを
達成するために、連繋されたデータの並列フローを提供
する。
【0037】図8は、図4から図7のCAM構造を利用
する、LZ1圧縮マクロ1000の高レベルのブロック
図である。また、図9及び図10は、論理を流れるデー
タ・フロー及び制御フローのタイミングを示すタイミン
グ図である。図8に示す配列の中で、パイプライン・デ
ータ・フローは完全な二重ラッチ設計に基づく。これに
より、レジスタの現在の状態は、レジスタにロードされ
る次のデータとして使用するか、叉はレジスタに次にロ
ードされるものに対する制御の一部として使用すること
ができる。例えば、CAM一致ラッチ1332は、履歴
バッファ自体を除くCAMマクロ内部の他のラッチと同
様にL1/L2ラッチ・ペアであり、これらは入力デー
タ・バイトとCAMの既存の有効な内容との比較結果を
保管する。例えば、CAMの外部で使用されるラッチで
あるラッチ1210−1260も、同様にL1/L2タ
イプである。
する、LZ1圧縮マクロ1000の高レベルのブロック
図である。また、図9及び図10は、論理を流れるデー
タ・フロー及び制御フローのタイミングを示すタイミン
グ図である。図8に示す配列の中で、パイプライン・デ
ータ・フローは完全な二重ラッチ設計に基づく。これに
より、レジスタの現在の状態は、レジスタにロードされ
る次のデータとして使用するか、叉はレジスタに次にロ
ードされるものに対する制御の一部として使用すること
ができる。例えば、CAM一致ラッチ1332は、履歴
バッファ自体を除くCAMマクロ内部の他のラッチと同
様にL1/L2ラッチ・ペアであり、これらは入力デー
タ・バイトとCAMの既存の有効な内容との比較結果を
保管する。例えば、CAMの外部で使用されるラッチで
あるラッチ1210−1260も、同様にL1/L2タ
イプである。
【0038】図8を参照すると、2つの並列するフロー
・パスが存在することが明らかである。どちらのパスも
共通のソースから始まり、CAMマクロ1300を構成
する左側のパスと、一連のラッチ1210−1260を
構成する右側のパスに分かれる。その後両方のパスはバ
レル・シフタ論理1600及び出力バッファ1700に
収束し、この出力バッファから符号化データが出力され
る。システムでの連続性と同期化処理を実現するため
に、2つのパスは同じ数の処理サイクル(各サイクル
は、サイクル番号「t」を有す)を使用し、並列に各デ
ータ・ワードを渡す必要がある。この結果データ・ワー
ドは同期してバレル・シフタ論理に到着する。特に、D
ATA0及びDATA1の横の(t)、ならびにその他
の段階に参照される(t+n)は、パイプラインの中の
ラッチの各段階の時間の関係を分かりやすくする。例え
ば、一致ラッチ1332における(t+2)は、バイト
0がDATA0及びDATA1バッファに到着した2ク
ロック・サイクル後に、一致ラッチ1332にロードさ
れることを示す。圧縮マクロの中で、1処理サイクルを
必要とし、遅延を発生させる構造はすべて実線で示す。
パイプラインの中で遅延を引き起こさない構造は点線で
示す。
・パスが存在することが明らかである。どちらのパスも
共通のソースから始まり、CAMマクロ1300を構成
する左側のパスと、一連のラッチ1210−1260を
構成する右側のパスに分かれる。その後両方のパスはバ
レル・シフタ論理1600及び出力バッファ1700に
収束し、この出力バッファから符号化データが出力され
る。システムでの連続性と同期化処理を実現するため
に、2つのパスは同じ数の処理サイクル(各サイクル
は、サイクル番号「t」を有す)を使用し、並列に各デ
ータ・ワードを渡す必要がある。この結果データ・ワー
ドは同期してバレル・シフタ論理に到着する。特に、D
ATA0及びDATA1の横の(t)、ならびにその他
の段階に参照される(t+n)は、パイプラインの中の
ラッチの各段階の時間の関係を分かりやすくする。例え
ば、一致ラッチ1332における(t+2)は、バイト
0がDATA0及びDATA1バッファに到着した2ク
ロック・サイクル後に、一致ラッチ1332にロードさ
れることを示す。圧縮マクロの中で、1処理サイクルを
必要とし、遅延を発生させる構造はすべて実線で示す。
パイプラインの中で遅延を引き起こさない構造は点線で
示す。
【0039】図8に示すように、データはバッファDA
TA0 1110及びDATA11120へのマクロ・
インターフェースを介して、まず圧縮マクロ1000に
入力される。データ・バイトは第1クロック(t)にお
いて圧縮マクロに入り、選択論理ブロック1130によ
り1度に1つづつ選択される。選択論理ブロック113
0は、DATA0叉はDATA1に保管されたデータ・
バイトを交互に選択し、第1クロック・サイクル(t+
1)に2つのレジスタの一方からCAM内部の履歴バッ
ファ1330にシフトする。CAMのタイミングでは、
ほとんどの場合ゲート・アレー(表示されていない)
が、履歴バッファの各セクションのL2ラッチの出力か
ら信号及びデータを直接供給することが要求される。
TA0 1110及びDATA11120へのマクロ・
インターフェースを介して、まず圧縮マクロ1000に
入力される。データ・バイトは第1クロック(t)にお
いて圧縮マクロに入り、選択論理ブロック1130によ
り1度に1つづつ選択される。選択論理ブロック113
0は、DATA0叉はDATA1に保管されたデータ・
バイトを交互に選択し、第1クロック・サイクル(t+
1)に2つのレジスタの一方からCAM内部の履歴バッ
ファ1330にシフトする。CAMのタイミングでは、
ほとんどの場合ゲート・アレー(表示されていない)
が、履歴バッファの各セクションのL2ラッチの出力か
ら信号及びデータを直接供給することが要求される。
【0040】一次シフト・レジスタ1350は、1叉は
0のバイナリ状態を想定する。一般的に1は、開始した
新しい文字列を表す一致、叉は圧縮されている現在の文
字列の中の次のバイトを示す。優先順位符号化論理13
60は、あらゆるクロック・サイクル(ここではサイク
ルt+4)で実行し、結果としてCAM内部の符号化し
たアドレスを生成する。CAMが512バイトの大きさ
の場合、9ビット・アドレスが生成される。これは、サ
イクル・タイムt+4の中で、1つのアドレスを決定す
るために必要な大きさである。
0のバイナリ状態を想定する。一般的に1は、開始した
新しい文字列を表す一致、叉は圧縮されている現在の文
字列の中の次のバイトを示す。優先順位符号化論理13
60は、あらゆるクロック・サイクル(ここではサイク
ルt+4)で実行し、結果としてCAM内部の符号化し
たアドレスを生成する。CAMが512バイトの大きさ
の場合、9ビット・アドレスが生成される。これは、サ
イクル・タイムt+4の中で、1つのアドレスを決定す
るために必要な大きさである。
【0041】アドレス・ブロック1380には、最終的
優先順位符号化段階が含まれる。これは、ゲート・アレ
ー論理内で実施され、追加サイクル(t+5)を必要と
する。この関数の出力はラッチされ、次の11ビット加
算器1400の段階のための最大伝播遅延時間を確保す
る。バイトの文字列が引続き一致する場合、叉は前の比
較の結果が一致バイトが1つだけだった場合、作成され
た符号化アドレスは使用されない。
優先順位符号化段階が含まれる。これは、ゲート・アレ
ー論理内で実施され、追加サイクル(t+5)を必要と
する。この関数の出力はラッチされ、次の11ビット加
算器1400の段階のための最大伝播遅延時間を確保す
る。バイトの文字列が引続き一致する場合、叉は前の比
較の結果が一致バイトが1つだけだった場合、作成され
た符号化アドレスは使用されない。
【0042】PSレジスタ1350が現在の圧縮されて
いる文字列の継続でロードされるたびに、長さカウンタ
1370により長さカウントの2つのバージョンが作成
される。1つのバージョンのLC−1は、11ビット加
算器1400で使用されるバイナリ・カウンタである。
また、もう1つのバージョンLC−2は、圧縮マクロ1
000の出力として使用される符号化形式である。長さ
カウントLC−2をバレル・シフタ論理1600で早く
使用できることは、簡単で小型の高速バレル・シフタを
実現する。
いる文字列の継続でロードされるたびに、長さカウンタ
1370により長さカウントの2つのバージョンが作成
される。1つのバージョンのLC−1は、11ビット加
算器1400で使用されるバイナリ・カウンタである。
また、もう1つのバージョンLC−2は、圧縮マクロ1
000の出力として使用される符号化形式である。長さ
カウントLC−2をバレル・シフタ論理1600で早く
使用できることは、簡単で小型の高速バレル・シフタを
実現する。
【0043】11ビット加算器1400は、バイナリ形
式のカウントLC−1を長さカウンタ1370から受信
し、アドレス生成回路1380の最終段階からのアドレ
ス出力の値にこの値を加算する。11ビット加算器出力
は、この後のサイクルt+6でオフセットを生成するた
めに使用される。
式のカウントLC−1を長さカウンタ1370から受信
し、アドレス生成回路1380の最終段階からのアドレ
ス出力の値にこの値を加算する。11ビット加算器出力
は、この後のサイクルt+6でオフセットを生成するた
めに使用される。
【0044】バレル・シフタ1600の機能は、圧縮器
からの最小瞬時データ間隔を満足するように出力データ
速度を平均化することである。バレル・シフタ1600
は、長さカウンタ1370からLC−2としてのデー
タ、及びオフセット1500からのデータを取るか、叉
はラッチ1260からロー・バイトとしてデータを取
る。少なくとも生データの2バイトが各圧縮文字列で圧
縮されるので、バレル・シフタが新しい有効な符号化さ
れた長さカウンタをフェッチする必要がある時間中に、
生データ叉は以前のオフセット値をシフトしなければな
らない状況には絶対にならないことは明かである。
からの最小瞬時データ間隔を満足するように出力データ
速度を平均化することである。バレル・シフタ1600
は、長さカウンタ1370からLC−2としてのデー
タ、及びオフセット1500からのデータを取るか、叉
はラッチ1260からロー・バイトとしてデータを取
る。少なくとも生データの2バイトが各圧縮文字列で圧
縮されるので、バレル・シフタが新しい有効な符号化さ
れた長さカウンタをフェッチする必要がある時間中に、
生データ叉は以前のオフセット値をシフトしなければな
らない状況には絶対にならないことは明かである。
【0045】推奨される実施例では、バレル・シフタ論
理1600の出力が28ビット出力バッファ1700に
与えられる。出力バッファ1700は、クロック・サイ
クルt+7中に左から右へ埋められる。16以上のビッ
トが出力バッファ1700に存在する場合、最終クロッ
ク・サイクルt+8に圧縮マクロ・インターフェース1
800から16ビットがCODE0及びCODE1バイ
トとして送信される。これと同時に出力バッファは残り
の内容をすべて16ビットだけシフトし、次の圧縮デー
タ叉は生データが使用可能な場合はこれをロードする。
理1600の出力が28ビット出力バッファ1700に
与えられる。出力バッファ1700は、クロック・サイ
クルt+7中に左から右へ埋められる。16以上のビッ
トが出力バッファ1700に存在する場合、最終クロッ
ク・サイクルt+8に圧縮マクロ・インターフェース1
800から16ビットがCODE0及びCODE1バイ
トとして送信される。これと同時に出力バッファは残り
の内容をすべて16ビットだけシフトし、次の圧縮デー
タ叉は生データが使用可能な場合はこれをロードする。
【0046】前述のとおり、パイプライン・データ・フ
ローを使用して正確な処理を実行するための要点は、各
段階で情報をすべて確実に使用可能にし、その結果、現
在処理中のデータに対する次の迅速な処理に必要な基本
的判定ができるようにすることである。一次シフト・レ
ジスタ段階におけるPS論理で必要な3つの基本的判定
は、次のとおりである。 (1) 一致はないか? (2) 現在の一致文字列の継続があるか? (3) 新しい文字列を表す一致はあるか?
ローを使用して正確な処理を実行するための要点は、各
段階で情報をすべて確実に使用可能にし、その結果、現
在処理中のデータに対する次の迅速な処理に必要な基本
的判定ができるようにすることである。一次シフト・レ
ジスタ段階におけるPS論理で必要な3つの基本的判定
は、次のとおりである。 (1) 一致はないか? (2) 現在の一致文字列の継続があるか? (3) 新しい文字列を表す一致はあるか?
【0047】これらの判定の結果として実行しなければ
ならない処理は2つだけである。第1の処理は、一致ラ
ッチ1332の現在の内容を一次シフト・レジスタ13
50にロードすることである。第2の処理は、一致ラッ
チ1332の新しい位置にもビットがセットされる場合
だけ、一次シフト・レジスタ1350の現在の内容を1
ビットだけシフトして一次シフト・レジスタ1350に
ロードして戻すことである。一次シフト・レジスタ13
50をどのようにロードするかを判定するために必要な
情報は、一次シフト・レジスタ1350の現在の内容及
び一致ラッチ1332の出力から生成できる。
ならない処理は2つだけである。第1の処理は、一致ラ
ッチ1332の現在の内容を一次シフト・レジスタ13
50にロードすることである。第2の処理は、一致ラッ
チ1332の新しい位置にもビットがセットされる場合
だけ、一次シフト・レジスタ1350の現在の内容を1
ビットだけシフトして一次シフト・レジスタ1350に
ロードして戻すことである。一次シフト・レジスタ13
50をどのようにロードするかを判定するために必要な
情報は、一次シフト・レジスタ1350の現在の内容及
び一致ラッチ1332の出力から生成できる。
【0048】圧縮マクロのパイプライン配列を流れるデ
ータのタイミングを、図9及び図10に示す。ここで
は、時間(t)から(t+9)の間のバイト0からバイ
ト9の位置が、図8の配列に関する前記の説明に従って
示される。
ータのタイミングを、図9及び図10に示す。ここで
は、時間(t)から(t+9)の間のバイト0からバイ
ト9の位置が、図8の配列に関する前記の説明に従って
示される。
【0049】上記に参照したものはLZ1アルゴリズム
を実施する設計の1つであるが、Lempel−Ziv
コーディング技術を実施するシステム構成にはいろいろ
なものがある。
を実施する設計の1つであるが、Lempel−Ziv
コーディング技術を実施するシステム構成にはいろいろ
なものがある。
【0050】このような実施例の1つが、米国特許第
5,329,405号に記載されている。ただし、この
実施例では、新しい文字列を提供する方法に不備があ
る。詳細に述べれば、開示された方法では動的転送ゲー
トをセットするためのINIT信号が必要である。これ
には、マクロのスループットを保留するサイクルが要求
される。したがって、1サイクルあたり1バイトのスル
ープットが維持できなくなる。
5,329,405号に記載されている。ただし、この
実施例では、新しい文字列を提供する方法に不備があ
る。詳細に述べれば、開示された方法では動的転送ゲー
トをセットするためのINIT信号が必要である。これ
には、マクロのスループットを保留するサイクルが要求
される。したがって、1サイクルあたり1バイトのスル
ープットが維持できなくなる。
【0051】Lempel−Zivアルゴリズムの圧縮
機能のその他の実施例は、次の特許に開示されている。 (a) 米国特許第5,150,430号。これは、デー
タ圧縮のためのLempel−Zivアルゴリズムの使
用に関連し、ここでは並列シフト・レジスタに基づく圧
縮装置、及び符合する値を保管された長さ値と比較する
デコーダを使用する。 (b) 米国特許第5,153,591号。これは、簡素
化したLempel−Zivアルゴリズムを利用するデ
ータ圧縮及び圧縮解除に関連し、圧縮辞書のツリー構造
を有する。 (c) 米国特許第5,179,378号。これは、Le
mpel−Ziv技術を利用し、また並列プロセッサの
シストリック(systolic)配列を使用するデー
タ圧縮及び圧縮解除に関連し、ここではコード・ワード
は固定長であり、コードの長さ及び開始点を示す。 (d) 米国特許第5,226,119号。これは、グラ
フィック・ディスプレイ制御回路と接続するバレル・シ
フト回路の使用に関連する。 (e) 米国特許第5,243,341号。これは、Le
mpel−Ziv圧縮体系の機能強化した適用に関連
し、2つの辞書を有し、第2の辞書は第1の辞書がリセ
ットされているときの予備として用いられる。 (f) 米国特許第5,247,638号。これは、動的
にマップされる仮想データ記憶システムでの圧縮データ
用装置に関連する。 (g) 米国特許第5,262,776号。これは、デー
タ文字列の部分文字列のデータ圧縮のためのLempe
l−Zivアルゴリズムに関連し、更に詳細に述べれ
ば、再生イメージの画素のイメージ値の離散余弦変換の
係数から一次文字列を生成する技術に関連する。
機能のその他の実施例は、次の特許に開示されている。 (a) 米国特許第5,150,430号。これは、デー
タ圧縮のためのLempel−Zivアルゴリズムの使
用に関連し、ここでは並列シフト・レジスタに基づく圧
縮装置、及び符合する値を保管された長さ値と比較する
デコーダを使用する。 (b) 米国特許第5,153,591号。これは、簡素
化したLempel−Zivアルゴリズムを利用するデ
ータ圧縮及び圧縮解除に関連し、圧縮辞書のツリー構造
を有する。 (c) 米国特許第5,179,378号。これは、Le
mpel−Ziv技術を利用し、また並列プロセッサの
シストリック(systolic)配列を使用するデー
タ圧縮及び圧縮解除に関連し、ここではコード・ワード
は固定長であり、コードの長さ及び開始点を示す。 (d) 米国特許第5,226,119号。これは、グラ
フィック・ディスプレイ制御回路と接続するバレル・シ
フト回路の使用に関連する。 (e) 米国特許第5,243,341号。これは、Le
mpel−Ziv圧縮体系の機能強化した適用に関連
し、2つの辞書を有し、第2の辞書は第1の辞書がリセ
ットされているときの予備として用いられる。 (f) 米国特許第5,247,638号。これは、動的
にマップされる仮想データ記憶システムでの圧縮データ
用装置に関連する。 (g) 米国特許第5,262,776号。これは、デー
タ文字列の部分文字列のデータ圧縮のためのLempe
l−Zivアルゴリズムに関連し、更に詳細に述べれ
ば、再生イメージの画素のイメージ値の離散余弦変換の
係数から一次文字列を生成する技術に関連する。
【0052】
【発明が解決しようとする課題】本発明の目的は、Le
mpel−Zivタイプの圧縮アルゴリズムに基づい
た、情報の高速データ圧縮を提供することにある。
mpel−Zivタイプの圧縮アルゴリズムに基づい
た、情報の高速データ圧縮を提供することにある。
【0053】本発明の別の目的は、Lempel−Zi
vタイプ・アルゴリズムを使用する高速データ圧縮シス
テムのハードウェア実装を提供することにある。この実
装は、コード長及びアドレス情報を使用してデータを符
号化し、更に実装に要するチップ領域を削減する。
vタイプ・アルゴリズムを使用する高速データ圧縮シス
テムのハードウェア実装を提供することにある。この実
装は、コード長及びアドレス情報を使用してデータを符
号化し、更に実装に要するチップ領域を削減する。
【0054】本発明のまた別の目的は、Lempel−
Zivタイプ・アルゴリズムにより符号化される情報の
高速圧縮を実現する方法と装置を提供することにあり、
そこでは論理は少なくとも冗長nウェイOR関数を除去
し、その結果必要な領域を削減し製造コストを節約す
る。
Zivタイプ・アルゴリズムにより符号化される情報の
高速圧縮を実現する方法と装置を提供することにあり、
そこでは論理は少なくとも冗長nウェイOR関数を除去
し、その結果必要な領域を削減し製造コストを節約す
る。
【0055】本発明の更に別の目的は、伝送されるデー
タのパイプライン処理における待ち時間を削減するため
の方法と装置を提供することにある。そこでは、Lem
pel−Zivタイプ・アルゴリズムにより符号化され
た情報の高速圧縮が実装される。
タのパイプライン処理における待ち時間を削減するため
の方法と装置を提供することにある。そこでは、Lem
pel−Zivタイプ・アルゴリズムにより符号化され
た情報の高速圧縮が実装される。
【0056】
【発明の実施の形態】図4について先に説明したよう
に、圧縮動作では入力データ(DI)の1バイトが各サ
イクル(t)で処理され、512個のML信号が各サイ
クルで配列セクション210から出力される。DIがサ
イクルtにおいてn番目の記憶位置と一致した場合、M
L[n,t]は「セット」され、即ち「1」状態におか
れ、その他の場合は「0」状態におかれる。2つの連続
するDIバイトが2つの連続する記憶位置と一致する場
合(即ちML[n−1,t−1]及びML[n,t]が
セットされる場合)、M[n,t]がセットされて、記
憶位置nで終わる少なくとも2つの連続するバイトの文
字列が一致することを示す。
に、圧縮動作では入力データ(DI)の1バイトが各サ
イクル(t)で処理され、512個のML信号が各サイ
クルで配列セクション210から出力される。DIがサ
イクルtにおいてn番目の記憶位置と一致した場合、M
L[n,t]は「セット」され、即ち「1」状態におか
れ、その他の場合は「0」状態におかれる。2つの連続
するDIバイトが2つの連続する記憶位置と一致する場
合(即ちML[n−1,t−1]及びML[n,t]が
セットされる場合)、M[n,t]がセットされて、記
憶位置nで終わる少なくとも2つの連続するバイトの文
字列が一致することを示す。
【0057】すべてのMラインの論理ORとして信号O
RMを生成することが引続き必要である。その結果、少
なくとも1つのMラインがセットされると、ORMがセ
ットされ、アクティブな文字列の存在を示す。また、1
サイクルから次のサイクルへPSビットにより文字列を
伝播することも引続き必要である。したがって、アクテ
ィブな一致文字列が存在しない場合(ORM=0)、P
S[n,t]がML[n,t−1]の論理状態にセット
される。ここで値t−1は、PSレジスタで1サイクル
遅延する結果である。アクティブ一致文字列が存在する
場合(ORM=1)、文字列が継続するものを除くすべ
てのML信号は無視される。したがって、ORM(t)
が1の場合、PS[n,t]はM[n,t−1]であ
る。
RMを生成することが引続き必要である。その結果、少
なくとも1つのMラインがセットされると、ORMがセ
ットされ、アクティブな文字列の存在を示す。また、1
サイクルから次のサイクルへPSビットにより文字列を
伝播することも引続き必要である。したがって、アクテ
ィブな一致文字列が存在しない場合(ORM=0)、P
S[n,t]がML[n,t−1]の論理状態にセット
される。ここで値t−1は、PSレジスタで1サイクル
遅延する結果である。アクティブ一致文字列が存在する
場合(ORM=1)、文字列が継続するものを除くすべ
てのML信号は無視される。したがって、ORM(t)
が1の場合、PS[n,t]はM[n,t−1]であ
る。
【0058】上記の関係は、次の等式で表すことができ
る。
る。
【数1】 ここで、
【数2】 及び
【数3】M(n,t)=ML[n,t] ・ PS[n
−1,t] 等式1、2及び3は、対になった帰納的等式のセットで
ある。右辺の変数が既知であり、左辺を解くために使用
される。等式3は、次のように書直すことができる。
−1,t] 等式1、2及び3は、対になった帰納的等式のセットで
ある。右辺の変数が既知であり、左辺を解くために使用
される。等式3は、次のように書直すことができる。
【数4】
【0059】この等式のセットは、図11に示すような
圧縮マクロで実現できる。ここで配列210及びエンコ
ーダ230は図4に示すものと同じである。ただしPS
論理ブロック220’は図4の論理ブロックとは異な
り、図12に示すハードウェアで実現される。
圧縮マクロで実現できる。ここで配列210及びエンコ
ーダ230は図4に示すものと同じである。ただしPS
論理ブロック220’は図4の論理ブロックとは異な
り、図12に示すハードウェアで実現される。
【0060】図12は、1つのPS論理ブロック300
0の論理構造を示す。これは、本発明を実施する図11
に示す圧縮マクロ配列の中のPS論理セクション22
0’の一部である。従来のCAM配列セクション210
に関する前述の説明のとおり、CAM配列セクション2
10の各バイト記憶位置(n)は、時間(t)において
値ML(t,n)を有する一致ラッチ信号を生成して保
管する。更に、隣接するセクション(n−1)は、同じ
時間(t)に値PS(nー1,t)を有するPS信号を
生成する。これらの2つの信号はADNゲート3100
に入力される。このゲートの出力は、2つの論理的に隣
接する位置に一致が存在することにより生成された文字
列があることを示す信号である。ANDゲート3100
は一致信号M(n,t)を出力し、この信号は511個
の他の入力と共に共通ファン・イン配列のエンコーダ3
400に送られる。512個の信号の論理ORがエンコ
ーダ3400の出力として生成され、PS論理セクショ
ン220’の各ブロック3000に信号ORM(t)と
してフィードバックされる。一致信号M(n,t)もマ
ルチプレクサ3200の「1」端子に入力される。第2
の端子は「0」端子であり、これは入力ML(n,t)
信号を受信する。ORM(t)信号はマルチプレクサ3
200をML(n,t)とM(n−1,t)信号間で切
替えるスイッチとして働く。マルチプレクサの出力はP
Sレジスタ3300に与えられ、この出力は、PS論理
の次のセクションでPS信号PS(n,t)として使用
される。図4から図7に示す従来の方法で使用されたも
のとまったく同じ共通エンコーダ回路3400が1つ使
用される一方で、PS論理内には512ウェイOR関数
は存在しない。即ち、図7のORゲート360はPS論
理セクション220’から削除されている。
0の論理構造を示す。これは、本発明を実施する図11
に示す圧縮マクロ配列の中のPS論理セクション22
0’の一部である。従来のCAM配列セクション210
に関する前述の説明のとおり、CAM配列セクション2
10の各バイト記憶位置(n)は、時間(t)において
値ML(t,n)を有する一致ラッチ信号を生成して保
管する。更に、隣接するセクション(n−1)は、同じ
時間(t)に値PS(nー1,t)を有するPS信号を
生成する。これらの2つの信号はADNゲート3100
に入力される。このゲートの出力は、2つの論理的に隣
接する位置に一致が存在することにより生成された文字
列があることを示す信号である。ANDゲート3100
は一致信号M(n,t)を出力し、この信号は511個
の他の入力と共に共通ファン・イン配列のエンコーダ3
400に送られる。512個の信号の論理ORがエンコ
ーダ3400の出力として生成され、PS論理セクショ
ン220’の各ブロック3000に信号ORM(t)と
してフィードバックされる。一致信号M(n,t)もマ
ルチプレクサ3200の「1」端子に入力される。第2
の端子は「0」端子であり、これは入力ML(n,t)
信号を受信する。ORM(t)信号はマルチプレクサ3
200をML(n,t)とM(n−1,t)信号間で切
替えるスイッチとして働く。マルチプレクサの出力はP
Sレジスタ3300に与えられ、この出力は、PS論理
の次のセクションでPS信号PS(n,t)として使用
される。図4から図7に示す従来の方法で使用されたも
のとまったく同じ共通エンコーダ回路3400が1つ使
用される一方で、PS論理内には512ウェイOR関数
は存在しない。即ち、図7のORゲート360はPS論
理セクション220’から削除されている。
【0061】動作について特に図7の従来の回路と比較
した場合、エンコーダ3400への512のファン・イ
ン入力信号があること、及びエンコーダが文字列の終わ
りのアドレスを示すアドレス信号AOUT(t)を出力
することが明らかである。エンコーダへの512個の各
入力FIは、ANDゲート3100から出力されたもの
であり、このゲートは時間(t)及び位置(n)におけ
る一致論理信号MLを、同じ時間サイクル(t)で前の
位置(n−1)のPS信号と共に受信する。ANDゲー
ト出力M[n,t]は、エンコーダ3400に入力され
るばかりでなく、マルチプレクサ3200の「1」端子
にも入力される。マルチプレクサの「0」端子への第2
の入力は、個々のCAM配列セクション(n)からの一
致論理信号ML[n,t]である。エンコーダ3400
からのORM(t)信号は512個の入力ML[n,
t]から文字列が検出されたことを示すが、この信号に
基づき、マルチプレクサ3200は等式(1)に従っ
て、PSレジスタ3300への入力として、MLまたは
M信号を選択する。PSレジスタ3300は信号PS
[n,t]を出力し、この信号は同じ時間にこの後の位
置に向けてのPS信号が発生したことを示す。
した場合、エンコーダ3400への512のファン・イ
ン入力信号があること、及びエンコーダが文字列の終わ
りのアドレスを示すアドレス信号AOUT(t)を出力
することが明らかである。エンコーダへの512個の各
入力FIは、ANDゲート3100から出力されたもの
であり、このゲートは時間(t)及び位置(n)におけ
る一致論理信号MLを、同じ時間サイクル(t)で前の
位置(n−1)のPS信号と共に受信する。ANDゲー
ト出力M[n,t]は、エンコーダ3400に入力され
るばかりでなく、マルチプレクサ3200の「1」端子
にも入力される。マルチプレクサの「0」端子への第2
の入力は、個々のCAM配列セクション(n)からの一
致論理信号ML[n,t]である。エンコーダ3400
からのORM(t)信号は512個の入力ML[n,
t]から文字列が検出されたことを示すが、この信号に
基づき、マルチプレクサ3200は等式(1)に従っ
て、PSレジスタ3300への入力として、MLまたは
M信号を選択する。PSレジスタ3300は信号PS
[n,t]を出力し、この信号は同じ時間にこの後の位
置に向けてのPS信号が発生したことを示す。
【0062】PSレジスタはPS論理内に接続され、そ
の結果エンコーダ3400へは直接出力せず、またAO
UT(t)信号の生成のためのパスに直接入らない点に
留意されたい。これは、レジスタがエンコーダの前にあ
り、圧縮パイプラインの中で1サイクル時間を必要とす
る従来の設計と異なる点である。図13に示すように、
パイプラインの外にPSレジスタを配置すると通過時間
が削減される。図には圧縮マクロ4000が示されてい
るが、実質的には図8に示す従来の設計のパイプライン
配列と同じである。唯一異なる点は、CAMマクロ43
00である。ここではPSレジスタはパイプライン・パ
スに対するサイクル遅延には寄与せず(点線でブロック
を規定して示す)、カスケード配置されたレジスタのグ
ループに入っている。CAMマクロのパイプライン処理
からPSレジスタ遅延を除去することにより、パイプラ
イン・プロセスでの待ち時間が削減される。したがっ
て、セレクタ4130とロー・バイト・レジスタ425
0との間の並列パスの1ラッチが削除できる。図14及
び図15に、新しいパイプライン配列のデータ・フロー
を示す。対応する図9及び図10と比較すると、システ
ム・アプリケーションにおける本発明の長所が更に明確
になる。
の結果エンコーダ3400へは直接出力せず、またAO
UT(t)信号の生成のためのパスに直接入らない点に
留意されたい。これは、レジスタがエンコーダの前にあ
り、圧縮パイプラインの中で1サイクル時間を必要とす
る従来の設計と異なる点である。図13に示すように、
パイプラインの外にPSレジスタを配置すると通過時間
が削減される。図には圧縮マクロ4000が示されてい
るが、実質的には図8に示す従来の設計のパイプライン
配列と同じである。唯一異なる点は、CAMマクロ43
00である。ここではPSレジスタはパイプライン・パ
スに対するサイクル遅延には寄与せず(点線でブロック
を規定して示す)、カスケード配置されたレジスタのグ
ループに入っている。CAMマクロのパイプライン処理
からPSレジスタ遅延を除去することにより、パイプラ
イン・プロセスでの待ち時間が削減される。したがっ
て、セレクタ4130とロー・バイト・レジスタ425
0との間の並列パスの1ラッチが削除できる。図14及
び図15に、新しいパイプライン配列のデータ・フロー
を示す。対応する図9及び図10と比較すると、システ
ム・アプリケーションにおける本発明の長所が更に明確
になる。
【0063】図11及び図12に示すPS論理ハードウ
ェア実施例、ならびに図13に示すパイプライン・フロ
ーに基づき、図16の状態図に示すような状態動作が達
成できる。実施形態は単純で効率的であり、INT及び
COMPAREの初期化、ならびに終了前に複数回のC
OMPAREの実行という、2つの状態の間だけで転移
が求められる。
ェア実施例、ならびに図13に示すパイプライン・フロ
ーに基づき、図16の状態図に示すような状態動作が達
成できる。実施形態は単純で効率的であり、INT及び
COMPAREの初期化、ならびに終了前に複数回のC
OMPAREの実行という、2つの状態の間だけで転移
が求められる。
【0064】結果として生じたML、PS及びM信号を
位置n及び時間間隔mを基にして配列に配置した場合、
要求される一致検出は単なるパターン認識問題として考
察できることは、当業者には明かであろう。
位置n及び時間間隔mを基にして配列に配置した場合、
要求される一致検出は単なるパターン認識問題として考
察できることは、当業者には明かであろう。
【0065】本発明について、少なくとも1つの好まし
い実施例を示してある程度詳細に説明してきたが、好ま
しい実施例の本開示は例として挙げたにすぎず、前述の
特許請求の範囲の技術的思想と範囲を超えずに、構成部
分の詳細及び配列に数多くの修正を加えることができる
のは明かである。
い実施例を示してある程度詳細に説明してきたが、好ま
しい実施例の本開示は例として挙げたにすぎず、前述の
特許請求の範囲の技術的思想と範囲を超えずに、構成部
分の詳細及び配列に数多くの修正を加えることができる
のは明かである。
【0066】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0067】(1) 複数のデータ要素を有するデータ
・ストリームの中の繰返されるデータ要素文字列を識別
するデータ圧縮装置であって、(a) 個別のアドレス可
能位置に複数の前記データ要素を同時に保管し、更に各
データ要素が個別のアドレス可能位置に保管される履歴
バッファと、(b) 現在のデータ要素を入力するための
入力手段と、(c) 複数の比較手段であって、各比較手
段が前記現在のデータ要素を保管されているデータ要素
の内容と比較し、前記履歴バッファの対応するアドレス
位置に保管し、更に前記複数の比較手段が、前記現在の
データ要素とすべての保管されているデータ要素との間
に存在する一致をすべて識別する出力を生成する比較手
段と、(d) 複数の論理手段であって、それぞれが前記
比較手段の1つからの対応する出力を受信する目的を有
し、更に少なくとも2つのデータ要素の文字列の存在を
識別する信号を生成する目的を有する論理手段と、(e)
前記複数の論理手段からの前記信号に応答し、繰返さ
れるデータ要素文字列を識別するアドレスを含む第1の
出力、及び前記履歴バッファ内の繰返されるデータ要素
文字列の存在を識別する第2の出力を生成するためのエ
ンコーダと、を有するデータ圧縮装置。 (2) 各前記論理手段が、前記比較手段出力及び他の
論理手段からの出力に応答して一致信号を生成するため
の手段を含み、前記複数の論理手段からの一致信号が前
記エンコーダに送られる、(1)に記載のデータ圧縮装
置。 (3) 各前記論理手段が、前記一致信号及び前記比較
手段出力に応答し、文字列インディケータ信号を生成す
るバイナリ信号生成回路を更に有する、(1)に記載の
データ圧縮装置。 (4) 前記論理手段が、前記バイナリ信号生成回路に
応答し、前記文字列インディケータ信号を別の論理手段
によるアクセスに備えて保管するレジスタを更に有す
る、(3)に記載のデータ圧縮装置。 (5) 前記応答手段が、前記エンコーダの前記第2の
出力に更に応答する、(2)に記載のデータ圧縮装置。 (6) 前記エンコーダが、前記複数の一致信号に応答
し、現在のデータ要素と前記保管されているデータ要素
との間における少なくとも1つの一致する文字列の存在
を示す、OR演算された信号出力を生成する手段を有す
る、(3)に記載のデータ圧縮装置。 (7) 前記バイナリ信号生成回路が、前記OR演算さ
れた信号に応答し、文字列の継続を表示する、(6)に
記載のデータ圧縮装置。 (8) 別の論理手段によるアクセスに備え、前記バイ
ナリ信号生成回路の前記出力を保管するためのレジスタ
を更に有する、(7)に記載のデータ圧縮装置。 (9) 前記データ圧縮装置が、Lempel−Ziv
タイプ・アルゴリズムに従って機能する、(1)に記載
のデータ圧縮装置。 (10) 前記データ圧縮装置が、LZ1標準アルゴリ
ズムに従って機能する、(1)に記載のデータ圧縮装
置。 (11) 前記データ圧縮装置が既定のサイクルに従っ
て機能し、1サイクルの中で現在のデータ要素が入力さ
れ、前記複数の比較手段すべてによる比較が実施され、
更に前記エンコーダがアドレス及び前記OR演算された
信号を生成する、(6)に記載のデータ圧縮装置。 (12) 前記履歴バッファが、連続するバイトが前記
履歴バッファ中で物理的に隣接するように現在のバイト
を順次保管する、(1)に記載のデータ圧縮装置。 (13) 前記レジスタが前記信号を1サイクルだけ遅
延させる、(11)に記載のデータ圧縮装置。 (14) 前記装置が2つの状態の間だけで動作し、第
1の状態が初期化であり、第2の状態が終了前に複数回
の比較の実行を含む、(1)に記載のデータ圧縮装置。 (15) 複数のデータ要素を有するデータ・ストリー
ムの中の繰返されるデータ要素文字列を識別するデータ
圧縮装置であって、前記装置は少なくとも第1のパス及
び第2のパスを含むパイプライン構成を有し、前記第1
及び第2のパスの各々においてデータ要素の処理は同じ
数の処理サイクルを要し、更に処理サイクルの終了時に
共通の第3のパスに合流し、前記第1のパスはCAMマ
クロ手段、及び前記CAMマクロ手段に応答し、長さ及
びアドレス情報を生成する手段を含み、前記第2のパス
はデータ要素を先へ送り、関連するサイクル遅延を提供
するために接続された複数のレジスタを有し、更に前記
第3のパスは前記第1及び第2のパスからの出力に応答
し、伝送のために符号化された出力を生成し、前記CA
Mマクロ手段は少なくとも第1の処理サイクルを要求す
るCAMデータ・レジスタ手段、前記CAMデータ・レ
ジスタ手段出力に応答し、第2の処理サイクルを要求す
るCAM一致ラッチ手段、及び第3の処理サイクルを要
求するCAM優先順位符号化手段を有し、前記CAMマ
クロ手段は前記CAM一致ラッチ手段の出力を受信し、
前記CAM優先順位符号化手段に出力を供給するための
CAMレジスタ手段を更に含み、前記CAMレジスタ手
段は処理サイクル遅延を必要としない、データ圧縮装
置。 (16) 前記CAMマクロ手段が、(a) 個別のアド
レス可能位置に複数のデータ要素を同時に保管し、更に
各データ要素が個別のアドレス可能位置に保管される履
歴バッファと、(b) 前記履歴バッファの位置のアドレ
ス指定のためのCAMセル・アドレス指定手段と、を更
に有する、(14)に記載のデータ圧縮装置。 (17) 前記第3のパスが、前記第1のパスから前記
長さ及びアドレス情報、ならびに前記第2のパスからデ
ータ要素を受信するためのバレル・シフタ論理手段を有
する、(14)に記載のデータ圧縮装置。
・ストリームの中の繰返されるデータ要素文字列を識別
するデータ圧縮装置であって、(a) 個別のアドレス可
能位置に複数の前記データ要素を同時に保管し、更に各
データ要素が個別のアドレス可能位置に保管される履歴
バッファと、(b) 現在のデータ要素を入力するための
入力手段と、(c) 複数の比較手段であって、各比較手
段が前記現在のデータ要素を保管されているデータ要素
の内容と比較し、前記履歴バッファの対応するアドレス
位置に保管し、更に前記複数の比較手段が、前記現在の
データ要素とすべての保管されているデータ要素との間
に存在する一致をすべて識別する出力を生成する比較手
段と、(d) 複数の論理手段であって、それぞれが前記
比較手段の1つからの対応する出力を受信する目的を有
し、更に少なくとも2つのデータ要素の文字列の存在を
識別する信号を生成する目的を有する論理手段と、(e)
前記複数の論理手段からの前記信号に応答し、繰返さ
れるデータ要素文字列を識別するアドレスを含む第1の
出力、及び前記履歴バッファ内の繰返されるデータ要素
文字列の存在を識別する第2の出力を生成するためのエ
ンコーダと、を有するデータ圧縮装置。 (2) 各前記論理手段が、前記比較手段出力及び他の
論理手段からの出力に応答して一致信号を生成するため
の手段を含み、前記複数の論理手段からの一致信号が前
記エンコーダに送られる、(1)に記載のデータ圧縮装
置。 (3) 各前記論理手段が、前記一致信号及び前記比較
手段出力に応答し、文字列インディケータ信号を生成す
るバイナリ信号生成回路を更に有する、(1)に記載の
データ圧縮装置。 (4) 前記論理手段が、前記バイナリ信号生成回路に
応答し、前記文字列インディケータ信号を別の論理手段
によるアクセスに備えて保管するレジスタを更に有す
る、(3)に記載のデータ圧縮装置。 (5) 前記応答手段が、前記エンコーダの前記第2の
出力に更に応答する、(2)に記載のデータ圧縮装置。 (6) 前記エンコーダが、前記複数の一致信号に応答
し、現在のデータ要素と前記保管されているデータ要素
との間における少なくとも1つの一致する文字列の存在
を示す、OR演算された信号出力を生成する手段を有す
る、(3)に記載のデータ圧縮装置。 (7) 前記バイナリ信号生成回路が、前記OR演算さ
れた信号に応答し、文字列の継続を表示する、(6)に
記載のデータ圧縮装置。 (8) 別の論理手段によるアクセスに備え、前記バイ
ナリ信号生成回路の前記出力を保管するためのレジスタ
を更に有する、(7)に記載のデータ圧縮装置。 (9) 前記データ圧縮装置が、Lempel−Ziv
タイプ・アルゴリズムに従って機能する、(1)に記載
のデータ圧縮装置。 (10) 前記データ圧縮装置が、LZ1標準アルゴリ
ズムに従って機能する、(1)に記載のデータ圧縮装
置。 (11) 前記データ圧縮装置が既定のサイクルに従っ
て機能し、1サイクルの中で現在のデータ要素が入力さ
れ、前記複数の比較手段すべてによる比較が実施され、
更に前記エンコーダがアドレス及び前記OR演算された
信号を生成する、(6)に記載のデータ圧縮装置。 (12) 前記履歴バッファが、連続するバイトが前記
履歴バッファ中で物理的に隣接するように現在のバイト
を順次保管する、(1)に記載のデータ圧縮装置。 (13) 前記レジスタが前記信号を1サイクルだけ遅
延させる、(11)に記載のデータ圧縮装置。 (14) 前記装置が2つの状態の間だけで動作し、第
1の状態が初期化であり、第2の状態が終了前に複数回
の比較の実行を含む、(1)に記載のデータ圧縮装置。 (15) 複数のデータ要素を有するデータ・ストリー
ムの中の繰返されるデータ要素文字列を識別するデータ
圧縮装置であって、前記装置は少なくとも第1のパス及
び第2のパスを含むパイプライン構成を有し、前記第1
及び第2のパスの各々においてデータ要素の処理は同じ
数の処理サイクルを要し、更に処理サイクルの終了時に
共通の第3のパスに合流し、前記第1のパスはCAMマ
クロ手段、及び前記CAMマクロ手段に応答し、長さ及
びアドレス情報を生成する手段を含み、前記第2のパス
はデータ要素を先へ送り、関連するサイクル遅延を提供
するために接続された複数のレジスタを有し、更に前記
第3のパスは前記第1及び第2のパスからの出力に応答
し、伝送のために符号化された出力を生成し、前記CA
Mマクロ手段は少なくとも第1の処理サイクルを要求す
るCAMデータ・レジスタ手段、前記CAMデータ・レ
ジスタ手段出力に応答し、第2の処理サイクルを要求す
るCAM一致ラッチ手段、及び第3の処理サイクルを要
求するCAM優先順位符号化手段を有し、前記CAMマ
クロ手段は前記CAM一致ラッチ手段の出力を受信し、
前記CAM優先順位符号化手段に出力を供給するための
CAMレジスタ手段を更に含み、前記CAMレジスタ手
段は処理サイクル遅延を必要としない、データ圧縮装
置。 (16) 前記CAMマクロ手段が、(a) 個別のアド
レス可能位置に複数のデータ要素を同時に保管し、更に
各データ要素が個別のアドレス可能位置に保管される履
歴バッファと、(b) 前記履歴バッファの位置のアドレ
ス指定のためのCAMセル・アドレス指定手段と、を更
に有する、(14)に記載のデータ圧縮装置。 (17) 前記第3のパスが、前記第1のパスから前記
長さ及びアドレス情報、ならびに前記第2のパスからデ
ータ要素を受信するためのバレル・シフタ論理手段を有
する、(14)に記載のデータ圧縮装置。
【図1】2K RAMのLempel−Zivコード・
データの例を示す図である。
データの例を示す図である。
【図2】テキスト文字列の各文字のコーディングの例を
示す図である。
示す図である。
【図3】保管された符号化文字列の例を示す図である。
【図4】従来の圧縮マクロの高レベルなブロック図であ
る。
る。
【図5】従来の圧縮マクロのCAM配列の詳細を示す図
である。
である。
【図6】従来の圧縮マクロのCAM配列の詳細を示す図
である。
である。
【図7】圧縮マクロに使用される従来のPS論理セクシ
ョンの詳細を示す図である。
ョンの詳細を示す図である。
【図8】従来の設計におけるパイプライン圧縮データ・
フローの流れ図である。
フローの流れ図である。
【図9】圧縮マクロ・パイプライン配列を通るデータ・
フローのタイミングを示す図である。
フローのタイミングを示す図である。
【図10】圧縮マクロ・パイプライン配列を通るデータ
・フローのタイミングを示す図である。
・フローのタイミングを示す図である。
【図11】改良された圧縮マクロの高レベルなブロック
図である。
図である。
【図12】本発明に従うPS論理ハードウェア設計のブ
ロック図である。
ロック図である。
【図13】本発明に従うパイプライン圧縮データ・フロ
ーの流れ図である。
ーの流れ図である。
【図14】本発明に従う圧縮マクロ・パイプライン配列
を流れるデータのタイミングを示す図である。
を流れるデータのタイミングを示す図である。
【図15】本発明に従う圧縮マクロ・パイプライン配列
を流れるデータのタイミングを示す図である。
を流れるデータのタイミングを示す図である。
【図16】本発明の状態図である。
400 CAM配列(単一セクション、従来技術) 500 PS論理(単一セクション、従来技術) 600 エンコーダ(従来技術) 1000 LZ1圧縮マクロ(従来技術) 1300 CAMマクロ(従来技術) 3000 PS論理(単一セクション、本発明) 4000 圧縮マクロ(本発明) 4300 CAMマクロ(本発明)
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭60−116228(JP,A) 特開 平3−78322(JP,A) 特開 平3−204232(JP,A) 特開 平7−95093(JP,A) 特開 平7−297728(JP,A) (58)調査した分野(Int.Cl.7,DB名) H03M 7/40
Claims (14)
- 【請求項1】複数のデータ要素を有するデータ・ストリ
ームの中の繰返されるデータ要素の文字列を識別するデ
ータ圧縮装置であって、 (a) 個別のアドレス可能位置に複数の前記データ要素
を同時に保管する履歴バッファであって、各データ要素
は個別のアドレス可能位置に保管される、履歴バッファ
と、 (b) 現在のデータ要素を入力するための入力手段と、 (c) 複数の比較手段であって、各比較手段は前記現在
のデータ要素を、保管されているデータ要素の内容と比
較し、次いで前記履歴バッファの対応するアドレス位置
に保管し、前記複数の比較手段は、前記現在のデータ要
素とすべての保管されているデータ要素との間に存在す
る一致をすべて識別する出力を生成する、比較手段と、 (d) 複数の論理手段であって、それぞれが前記比較手
段の1つからの対応する出力を受信し、そして、少なく
とも2つのデータ要素の、文字列の存在を識別する信号
を生成する、論理手段と、 (e) 前記複数の論理手段からの前記信号に応答し、繰
返されるデータ要素の文字列を識別するアドレスを含む
第1の出力、及び前記履歴バッファ内の繰返されるデー
タ要素の文字列の存在を識別する第2の出力を生成する
ためのエンコーダと、 を有するデータ圧縮装置。 - 【請求項2】前記論理手段の各々が、前記比較手段の出
力及び他の論理手段からの出力に応答して一致信号を生
成するための手段を含み、前記複数の論理手段の各々か
らの一致信号が前記エンコーダに送られる、請求項1に
記載のデータ圧縮装置。 - 【請求項3】前記論理手段の各々が、前記一致信号及び
前記比較手段の出力に応答し、前記文字列の存在を識別
する信号を生成するバイナリ信号生成回路を更に有す
る、請求項2に記載のデータ圧縮装置。 - 【請求項4】前記論理手段が、前記バイナリ信号生成回
路に応答し且つ前記文字列の存在を識別する信号を他の
論理手段によるアクセスに備えて保管するレジスタを更
に有する、請求項3に記載のデータ圧縮装置。 - 【請求項5】前記バイナリ信号生成回路が、前記エンコ
ーダの前記第2の出力に更に応答する、請求項3又は4
に記載のデータ圧縮装置。 - 【請求項6】前記エンコーダの前記第2の出力が、複数
の前記一致信号のOR演算された信号出力である、請求
項2〜5のいずれか1項に記載のデータ圧縮装置。 - 【請求項7】前記データ圧縮装置が、Lempel−Z
ivタイプ・アルゴリズムに従って機能する、請求項1
〜6のいずれか1項に記載のデータ圧縮装置。 - 【請求項8】前記データ圧縮装置が、LZ1標準アルゴ
リズムに従って機能する、請求項7に記載のデータ圧縮
装置。 - 【請求項9】前記データ圧縮装置が既定のサイクルに従
って機能し、1サイクルの中で現在のデータ要素が入力
され及び前記複数の比較手段すべてによる比較が実施さ
れ、更に前記エンコーダがアドレス及び前記OR演算さ
れた信号を生成する、請求項6〜8のいずれか1項に記
載のデータ圧縮装置。 - 【請求項10】前記履歴バッファが、連続するバイトが
前記履歴バッファ中で物理的に隣接するように現在のバ
イトを順次保管する、請求項1〜9のいずれか1項に記
載のデータ圧縮装置。 - 【請求項11】前記装置が2つの状態の間だけで動作
し、第1の状態が初期化であり、第2の状態が終了前に
複数回の比較の実行を含む、請求項1〜10のいずれか
1項に記載のデータ圧縮装置。 - 【請求項12】複数のデータ要素を有するデータ・スト
リームの中の繰返されるデータ要素文字列を識別するデ
ータ圧縮装置であって、前記装置は少なくとも第1のパ
ス及び第2のパスを含むパイプライン構成を有し、前記
第1及び第2のパスの各々においてデータ要素の処理は
同じ数の処理サイクルを要し、更に処理サイクルの終了
時に共通の第3のパスに合流し、前記第1のパスはCA
Mマクロ手段、及び前記CAMマクロ手段に応答し、長
さ及びアドレス情報を生成する手段を含み、前記第2の
パスはデータ要素を先へ送り、関連するサイクル遅延を
提供するために接続された複数のレジスタを有し、更に
前記第3のパスは前記第1及び第2のパスからの出力に
応答し、伝送のために符号化された出力を生成し、前記
CAMマクロ手段は少なくとも第1の処理サイクルを要
求するCAMデータ・レジスタ手段、前記CAMデータ
・レジスタ手段出力に応答し、第2の処理サイクルを要
求するCAM一致ラッチ手段、及び第3の処理サイクル
を要求するCAM優先順位符号化手段を有し、前記CA
Mマクロ手段は前記CAM一致ラッチ手段の出力を受信
し、前記CAM優先順位符号化手段に出力を供給するた
めのCAMレジスタ手段を更に含み、前記CAMレジス
タ手段は処理サイクル遅延を必要としない、データ圧縮
装置。 - 【請求項13】前記CAMマクロ手段が、 (a) 個別のアドレス可能位置に複数のデータ要素を同
時に保管し、更に各データ要素が個別のアドレス可能位
置に保管される履歴バッファと、 (b) 前記履歴バッファの位置のアドレス指定のための
CAMセル・アドレス指定手段と、 を更に有する、請求項12に記載のデータ圧縮装置。 - 【請求項14】前記第3のパスが、前記第1のパスから
前記長さ及びアドレス情報、ならびに前記第2のパスか
らデータ要素を受信するためのバレル・シフタ論理手段
を有する、請求項12又は13に記載のデータ圧縮装
置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/408,577 US5771010A (en) | 1995-03-22 | 1995-03-22 | Apparatus for compressing data using a Lempel-Ziv-type algorithm |
US408577 | 1995-03-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08274649A JPH08274649A (ja) | 1996-10-18 |
JP3303225B2 true JP3303225B2 (ja) | 2002-07-15 |
Family
ID=23616838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP03370996A Expired - Fee Related JP3303225B2 (ja) | 1995-03-22 | 1996-02-21 | Lempel−Zivタイプ・アルゴリズムを用いたデータ圧縮装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US5771010A (ja) |
JP (1) | JP3303225B2 (ja) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2305746B (en) * | 1995-09-27 | 2000-03-29 | Canon Res Ct Europe Ltd | Data compression apparatus |
US6122679A (en) * | 1998-03-13 | 2000-09-19 | Compaq Computer Corporation | Master DMA controller with re-map engine for only spawning programming cycles to slave DMA controllers which do not match current programming cycle |
EP0977152A3 (en) * | 1998-07-28 | 2000-12-27 | Xerox Corporation | Data compression apparatus using matching string |
US6415354B1 (en) * | 1999-07-15 | 2002-07-02 | Applied Micro Circuits Corporation | Pipelined methods and apparatus for weight selection and content addressable memory searches |
US6615310B1 (en) | 2000-05-18 | 2003-09-02 | International Business Machines Corporation | Lossless data compressor with all CAM words available |
US6856651B2 (en) * | 2000-07-25 | 2005-02-15 | Peribit Networks, Inc. | System and method for incremental and continuous data compression |
IL153955A0 (en) * | 2000-07-25 | 2003-07-31 | Peribit Networks Inc | Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data |
US6348881B1 (en) | 2000-08-29 | 2002-02-19 | Philips Electronics No. America Corp. | Efficient hardware implementation of a compression algorithm |
US6606040B2 (en) * | 2001-02-13 | 2003-08-12 | Mosaid Technologies, Inc. | Method and apparatus for adaptive data compression |
US20030009595A1 (en) * | 2001-07-09 | 2003-01-09 | Roger Collins | System and method for compressing data using field-based code word generation |
US7064688B2 (en) * | 2001-07-09 | 2006-06-20 | Good Technology, Inc. | System and method for compressing data on a bandwidth-limited network |
US7243163B1 (en) * | 2001-08-07 | 2007-07-10 | Good Technology, Inc. | System and method for full wireless synchronization of a data processing apparatus with a messaging system |
US7155483B1 (en) | 2001-08-07 | 2006-12-26 | Good Technology, Inc. | Apparatus and method for conserving bandwidth by batch processing data transactions |
US7596565B2 (en) * | 2001-08-07 | 2009-09-29 | Good Technology | System and method for maintaining wireless file folders at a wireless device |
US7743119B2 (en) * | 2001-08-07 | 2010-06-22 | Motorola, Inc. | System and method for mapping identification codes |
US7962622B2 (en) * | 2001-08-07 | 2011-06-14 | Motorola Mobility, Inc. | System and method for providing provisioning and upgrade services for a wireless device |
US7185041B1 (en) | 2001-10-05 | 2007-02-27 | Unisys Corporation | Circuit and method for high-speed execution of modulo division |
US7085996B2 (en) * | 2001-10-18 | 2006-08-01 | International Business Corporation | Apparatus and method for source compression and comparison |
US6624762B1 (en) | 2002-04-11 | 2003-09-23 | Unisys Corporation | Hardware-based, LZW data compression co-processor |
US7447799B2 (en) * | 2002-04-24 | 2008-11-04 | Good Technology, Inc. | System and method for automatically updating a wireless device |
GB0210604D0 (en) * | 2002-05-09 | 2002-06-19 | Ibm | Method and arrangement for data compression |
US9813514B2 (en) | 2002-06-12 | 2017-11-07 | Good Technology Holdings Limited | Information repository system including a wireless device and related method |
US8516034B1 (en) | 2002-07-08 | 2013-08-20 | Good Technology Software, Inc | System and method for modifying application behavior based on network bandwidth |
US7215259B2 (en) * | 2005-06-03 | 2007-05-08 | Quantum Corporation | Data compression with selective encoding of short matches |
US8095774B1 (en) | 2007-07-05 | 2012-01-10 | Silver Peak Systems, Inc. | Pre-fetching data into a memory |
US8171238B1 (en) | 2007-07-05 | 2012-05-01 | Silver Peak Systems, Inc. | Identification of data stored in memory |
US8392684B2 (en) | 2005-08-12 | 2013-03-05 | Silver Peak Systems, Inc. | Data encryption in a network memory architecture for providing data based on local accessibility |
US7180433B1 (en) | 2005-09-22 | 2007-02-20 | Tandberg Storage Asa | Fast data compression and decompression system and method |
US8489562B1 (en) | 2007-11-30 | 2013-07-16 | Silver Peak Systems, Inc. | Deferred data storage |
US8929402B1 (en) | 2005-09-29 | 2015-01-06 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data by predicting subsequent data |
US8811431B2 (en) * | 2008-11-20 | 2014-08-19 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data |
US7620392B1 (en) | 2006-02-27 | 2009-11-17 | Good Technology, Inc. | Method and system for distributing and updating software in wireless devices |
US20080017227A1 (en) * | 2006-07-19 | 2008-01-24 | Ward Barry D | Walking aid apparatus |
US7417570B2 (en) * | 2006-07-31 | 2008-08-26 | Sap Ag | Lossless comparative compression and transmission method and system |
US8755381B2 (en) | 2006-08-02 | 2014-06-17 | Silver Peak Systems, Inc. | Data matching using flow based packet data storage |
US8885632B2 (en) | 2006-08-02 | 2014-11-11 | Silver Peak Systems, Inc. | Communications scheduler |
US8307115B1 (en) | 2007-11-30 | 2012-11-06 | Silver Peak Systems, Inc. | Network memory mirroring |
US7817708B2 (en) * | 2007-12-14 | 2010-10-19 | Sivaswamy Associates, Llc. | Orthogonal code division multiplex CCK (OCDM-CCK) method and apparatus for high data rate wireless LAN |
US8238677B2 (en) * | 2008-03-07 | 2012-08-07 | International Business Machines Corporation | Adaptive lossless data compression method for compression of color image data |
US7868788B2 (en) * | 2008-06-17 | 2011-01-11 | The Hong Kong University Of Science And Technology | System and method for encoding data based on a compression technique with security features |
US8743683B1 (en) | 2008-07-03 | 2014-06-03 | Silver Peak Systems, Inc. | Quality of service using multiple flows |
US10805840B2 (en) | 2008-07-03 | 2020-10-13 | Silver Peak Systems, Inc. | Data transmission via a virtual wide area network overlay |
US9717021B2 (en) | 2008-07-03 | 2017-07-25 | Silver Peak Systems, Inc. | Virtual network overlay |
US10164861B2 (en) | 2015-12-28 | 2018-12-25 | Silver Peak Systems, Inc. | Dynamic monitoring and visualization for network health characteristics |
US8013762B2 (en) * | 2009-11-03 | 2011-09-06 | Seagate Technology Llc | Evaluating alternative encoding solutions during data compression |
US8149145B2 (en) | 2010-08-05 | 2012-04-03 | Hewlett-Packard Development Company, L.P. | Method and apparatus for adaptive lossless data compression |
US8930808B2 (en) * | 2011-07-21 | 2015-01-06 | International Business Machines Corporation | Processing rich text data for storing as legacy data records in a data storage system |
US9130991B2 (en) | 2011-10-14 | 2015-09-08 | Silver Peak Systems, Inc. | Processing data packets in performance enhancing proxy (PEP) environment |
US9626224B2 (en) | 2011-11-03 | 2017-04-18 | Silver Peak Systems, Inc. | Optimizing available computing resources within a virtual environment |
US8704686B1 (en) * | 2013-01-03 | 2014-04-22 | International Business Machines Corporation | High bandwidth compression to encoded data streams |
KR102072412B1 (ko) * | 2013-01-07 | 2020-02-04 | 삼성전자주식회사 | 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들 |
US10474652B2 (en) * | 2013-03-14 | 2019-11-12 | Inpixon | Optimizing wide data-type storage and analysis of data in a column store database |
US8786471B1 (en) * | 2013-03-15 | 2014-07-22 | Oracle International Corporation | Lossless data compression with variable width codes |
US9948496B1 (en) | 2014-07-30 | 2018-04-17 | Silver Peak Systems, Inc. | Determining a transit appliance for data traffic to a software service |
US9875344B1 (en) * | 2014-09-05 | 2018-01-23 | Silver Peak Systems, Inc. | Dynamic monitoring and authorization of an optimization device |
US10223020B2 (en) * | 2015-01-08 | 2019-03-05 | Avago Technologies International Sales Pte. Limited | System and method for achieving atomicity in ternary content-addressable memories |
US9450606B1 (en) | 2015-10-01 | 2016-09-20 | Seagate Technology Llc | Data matching for hardware data compression |
US9864549B2 (en) | 2016-02-29 | 2018-01-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for high throughput multi-input compression |
US10432484B2 (en) | 2016-06-13 | 2019-10-01 | Silver Peak Systems, Inc. | Aggregating select network traffic statistics |
US9967056B1 (en) | 2016-08-19 | 2018-05-08 | Silver Peak Systems, Inc. | Forward packet recovery with constrained overhead |
US10257082B2 (en) | 2017-02-06 | 2019-04-09 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows |
US10771394B2 (en) | 2017-02-06 | 2020-09-08 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows on a first packet from DNS data |
US10892978B2 (en) | 2017-02-06 | 2021-01-12 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows from first packet data |
US11044202B2 (en) | 2017-02-06 | 2021-06-22 | Silver Peak Systems, Inc. | Multi-level learning for predicting and classifying traffic flows from first packet data |
US10331447B2 (en) | 2017-08-30 | 2019-06-25 | Qualcomm Incorporated | Providing efficient recursion handling using compressed return address stacks (CRASs) in processor-based systems |
US11212210B2 (en) | 2017-09-21 | 2021-12-28 | Silver Peak Systems, Inc. | Selective route exporting using source type |
US10637721B2 (en) | 2018-03-12 | 2020-04-28 | Silver Peak Systems, Inc. | Detecting path break conditions while minimizing network overhead |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
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 |
US5003307A (en) * | 1989-01-13 | 1991-03-26 | Stac, Inc. | Data compression apparatus with shift register search means |
DE3921646A1 (de) * | 1989-06-30 | 1991-01-03 | Siemens Ag | Verfahren zu einer codierung einer elementfolge und einrichtung zur durchfuehrung des verfahrens |
JP2940948B2 (ja) * | 1989-08-22 | 1999-08-25 | 富士通株式会社 | データ圧縮方式 |
US5001478A (en) * | 1989-12-28 | 1991-03-19 | International Business Machines Corporation | Method of encoding compressed data |
US5247638A (en) * | 1990-06-18 | 1993-09-21 | Storage Technology Corporation | Apparatus for compressing data in a dynamically mapped virtual data storage subsystem |
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 |
US5140321A (en) * | 1991-09-04 | 1992-08-18 | Prime Computer, Inc. | Data compression/decompression method and apparatus |
US5243341A (en) * | 1992-06-01 | 1993-09-07 | Hewlett Packard Company | Lempel-Ziv compression scheme with enhanced adapation |
CA2077271C (en) * | 1991-12-13 | 1998-07-28 | David J. Craft | Method and apparatus for compressing data |
US5384567A (en) * | 1993-07-08 | 1995-01-24 | International Business Machines Corporation | Combination parallel/serial execution of sequential algorithm for data compression/decompression |
US5525982A (en) * | 1994-04-15 | 1996-06-11 | International Business Machines Corporation | Method and means for character string pattern matching for compression and the like using minimal cycles per character |
US5572209A (en) * | 1994-08-16 | 1996-11-05 | International Business Machines Corporation | Method and apparatus for compressing and decompressing data |
US5612693A (en) * | 1994-12-14 | 1997-03-18 | International Business Machines Corporation | Sliding window data compression using a toroidal bit shift register |
US5710562A (en) * | 1995-08-31 | 1998-01-20 | Ricoh Company Ltd. | Method and apparatus for compressing arbitrary data |
-
1995
- 1995-03-22 US US08/408,577 patent/US5771010A/en not_active Expired - Fee Related
-
1996
- 1996-02-21 JP JP03370996A patent/JP3303225B2/ja not_active Expired - Fee Related
-
1997
- 1997-07-23 US US08/899,205 patent/US5903230A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5903230A (en) | 1999-05-11 |
US5771010A (en) | 1998-06-23 |
JPH08274649A (ja) | 1996-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3303225B2 (ja) | Lempel−Zivタイプ・アルゴリズムを用いたデータ圧縮装置 | |
US6885319B2 (en) | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms | |
US5572209A (en) | Method and apparatus for compressing and decompressing data | |
US5729228A (en) | Parallel compression and decompression using a cooperative dictionary | |
US5612693A (en) | Sliding window data compression using a toroidal bit shift register | |
US20020091905A1 (en) | Parallel compression and decompression system and method having multiple parallel compression and decompression engines | |
US5179378A (en) | Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques | |
JP3262602B2 (ja) | 辞書ベースのデータ圧縮/圧縮解除システム | |
US5485526A (en) | Memory circuit for lossless data compression/decompression dictionary storage | |
EP0573208B1 (en) | Apparatus and method for managing multiple dictionaries in content addressable based data compression | |
JP3309028B2 (ja) | 連想記憶メモリ内の複数辞書管理を改良したlempel−zivデータ圧縮のための装置、及び方法 | |
US7538696B2 (en) | System and method for Huffman decoding within a compression engine | |
US6906645B2 (en) | Data compression having more effective compression | |
US5113516A (en) | Data repacker having controlled feedback shifters and registers for changing data format | |
EP0568305A2 (en) | Data compression | |
EP0546863A2 (en) | Data compression apparatus | |
US9479194B2 (en) | Data compression apparatus and data decompression apparatus | |
US20110102207A1 (en) | Evaluating Alternative Encoding Solutions During Data Compression | |
US5058137A (en) | Lempel-Ziv decoder | |
US6765509B2 (en) | Data compression having improved compression speed | |
US7256715B1 (en) | Data compression using dummy codes | |
US6615310B1 (en) | Lossless data compressor with all CAM words available | |
JPH03179562A (ja) | データ記録装置及びデータ編集方法 | |
JPH09246990A (ja) | 可変長符号復号化器 | |
Henriques et al. | A parallel architecture for data compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |