JP2003521189A - より効果的な圧縮を有するデータ圧縮 - Google Patents

より効果的な圧縮を有するデータ圧縮

Info

Publication number
JP2003521189A
JP2003521189A JP2001555210A JP2001555210A JP2003521189A JP 2003521189 A JP2003521189 A JP 2003521189A JP 2001555210 A JP2001555210 A JP 2001555210A JP 2001555210 A JP2001555210 A JP 2001555210A JP 2003521189 A JP2003521189 A JP 2003521189A
Authority
JP
Japan
Prior art keywords
dictionary
match
data
tuple
output
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.)
Pending
Application number
JP2001555210A
Other languages
English (en)
Inventor
ジョーンズ,サイモン・リチャード
ヤネズ,ホセ・ルイス ヌネズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BTG International Ltd
Original Assignee
BTG International Ltd
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 BTG International Ltd filed Critical BTG International Ltd
Publication of JP2003521189A publication Critical patent/JP2003521189A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/55Compression Theory, e.g. compression of random number, repeated compression
    • 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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • 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
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects

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)

Abstract

(57)【要約】 可逆的データ圧縮システムが、内容参照可能メモリ辞書(30)、コーダ(38)と、コーダ(38)の出力を受け取るように接続されたラン・レングス符号化手段(39)とを含み、符号化手段(39)は、所定の辞書位置でマッチが連続的に生じた回数をカウントするように、すなわち、同じ検索タプルが、辞書の同じアドレス(50)にロードされた回数をカウントするように構成されている。圧縮比が向上する。

Description

【発明の詳細な説明】
【0001】 本発明は、データの可逆的圧縮のための方法および装置に関する。
【0002】 不可逆的データ圧縮ハードウェアは、数年前からイメージ処理および信号処理
に使用可能であるが、データ記憶装置およびデータ伝送における帯域幅およびビ
ット当りコストに対する商業的圧力の高まりの結果として、可逆的データ圧縮が
関心を引くようになったのは最近のことに過ぎない。また、データ・ボリューム
を低減することによって電力消費を低下させることも、現在では重要である。
【0003】 辞書アドレスを参照することによって辞書を検索し、データを符号化する原理
は、周知であり、この原理を適用する装置は、辞書およびコーダ/デコーダから
構成される。
【0004】 1996年、IEEEのEUROMICRO−22の会報「Design a
nd Performance of a Main Memory Hard
ware Data Compressor」において、Kjelso、Goo
ch、およびJonesが、X−Matchアルゴリズムと呼ばれる新しい圧縮
方法を説明しており、この方法は、データの小さいブロックを圧縮するのに効率
的であり、高速ハードウェア実装に適している。
【0005】 X−Matchアルゴリズムは、先に見られたデータの辞書を保持し、タプル
(tuple)と呼ばれる現行のデータ要素をその辞書の中のエントリとマッチ
させようとし、マッチ位置を参照するより短いコードでマッチしたタプルを置き
換える。アルゴリズムは、4バイト・データ要素における2バイトなどの部分マ
ッチングで動作する。1999年、IEEEのEUROMICRO−25の会報
「The X−MatchLITE FPGA−Based Data Com
pressor」において、Nunez、Feregrino、Bateman
、およびJonesが、フィールド・プログラマブル・ゲート・アレイ(FPG
A)試作品において実装されたX−Matchアルゴリズムを説明している。
【0006】 本発明の目的は、公開された構成で可能であるよりもさらに効率的にデータを
圧縮することができる可逆的データ圧縮アルゴリズムを提供することである。 本発明によれば、可逆的データ圧縮システムが、内容参照可能メモリ辞書およ
びコーダを含み、コーダの出力を受け取るように接続されたラン・レングス符号
化手段を特徴とし、前記符号化手段は、所定の辞書位置で連続的に生じたマッチ
の回数をカウントするように構成されている。
【0007】 また、本発明によれば、データを圧縮する可逆的方法が、 固定長の検索タプルを辞書の中に記憶された前記固定長の複数のタプルと比較
するステップと、 辞書の中で完全または部分的な1つまたは複数のマッチの位置を示すステップ
と、 任意の複数のマッチのうち最適マッチを選択するステップと、 マッチ位置およびマッチ・タイプを符号化するステップとを含み、さらに 辞書の中の同じアドレスに順に各検索タプルをロードするステップと、 前記アドレスで同一のタプルが連続でマッチされた回数をカウントするステッ
プとを特徴とする。
【0008】 好ましくは、前記同じアドレスは、辞書の中の第1の位置である。 図面において、図1が、Nunez他によって公開された圧縮器構成のアーキ
テクチャを示している。
【0009】 本発明を図2〜5を参照して例としてだけ説明する。 図1に示す従来技術では、辞書10が、内容参照可能メモリ(Content addressable Memory)(CAM)に基づき、検索レジスタ
14によって供給されるデータ12によって検索される。辞書10において、各
データ要素は、厳密に4バイト幅であり、タプルと呼ばれる。標準の幅のデータ
要素を使用することで、データの混合に関わらず、圧縮中、入力データ転送速度
が保証され、圧縮解除中、出力データ転送速度が保証される。
【0010】 辞書は、現行の圧縮に関して前に見られたデータを記憶する。検索レジスタ1
4が、新しいエントリを供給し、辞書の中でマッチが見つかったとき、マッチ位
置を参照するより短いコードでそのデータが置き換えられる。CAMは、データ
要素を取り込み、その要素のマッチ・アドレスを出力として与えるある形態の連
想メモリである。CAM技術の使用により、辞書10を迅速に検索することが可
能になる。この理由は、データが記憶されたすべてのアドレスにおいて同時に検
索が実行され、したがって、すべての記憶された語に関して同時に検索が実行さ
れるからである。
【0011】 X−Matchアルゴリズムでは、完全なマッチングは、必要不可欠ではない
。4バイトのうち2バイトまたは3バイトのマッチであることが可能な部分的マ
ッチも、マッチ位置およびマッチ・タイプ・コードを参照するコードによって置
き換えられ、マッチしなかった1つまたは複数のバイトは、すべてに単一のビッ
トがプレフィックスとして付けられてリテラルとして伝送される。部分的マッチ
ングのこの使用により、4バイト・マッチングの要件と比較した場合、圧縮比が
向上するが、それでも辞書の高いスループットが維持される。
【0012】 マッチ・タイプは、入ってくるタプルのどのバイトが辞書の中で見つかったか
、またどのバイトをリテラル形式で圧縮されたコードに連結しなければならない
かを示す。マッチされる異なる組合せの2バイト、3バイト、または4バイトに
対応する11の異なるマッチ・タイプが存在する。例えば、0000は、すべて
のバイトがマッチした(完全なマッチ)ことを示し、一方、1000は、バイト
0、1、および2がマッチしたが、バイト3はマッチせず、圧縮されないリテラ
ルとしてコードに追加されなければならない部分的マッチを示す。いくつかのマ
ッチ・タイプは、他のものより頻度が高いので、大規模なシミュレーションを介
して得られた統計に基づく静的ハフマン符号を使用してそれらのマッチ・タイプ
を符号化する。例えば、最も一般的なマッチ・タイプは、0000(完全なマッ
チ)であり、対応するハフマン符号は、01である。他方、部分的マッチ・タイ
プ0010(バイト3、2、および0のマッチ)は、より頻度が低く、したがっ
て、対応するハフマン符号は、10110である。この技法により、圧縮比が向
上する。
【0013】 例えば、検索タプルがCATであり、辞書が位置2に語SATを含む場合、こ
の例では、022S、2進コード0 000010 0010 1010011
であるフォーマット(マッチ/ミス)(位置)(マッチ・タイプ)(必要なリテ
ラル)で部分的マッチが示される。すなわち、大文字Cがマッチせず、リテラル
としてシステムの符号化部分に送られることを示す。
【0014】 疑似コードにおけるアルゴリズムは、以下のとおり与えられる。 辞書を初期状態に設定する; DO {データ・ストリームからタプルTを読み込む; タプルTを求めて辞書を検索する; IF(完全なヒットまたは部分的ヒット) {最適マッチ位置を判定する MLおよびマッチ・タイプMT; 出力「0」; MLに対する2進コードを出力する; MTに対するハフマン符号を出力する; Tの任意の必要なリテラル文字を出力する;} ELSE {「1」を出力する; タプルTを出力する;} IF(完全なヒット) {辞書エントリ0ないしML−1を1つの位置だけ移動する;} ELSE {すべての辞書エントリを1つの位置だけ下に移動する;} タプルTを辞書位置0にコピーする;} WHILE(さらなるデータが圧縮される) 辞書10は、ムーブ・トゥ・フロント(Move−To−Front)戦略で
構成される。すなわち、現行のタプルが、辞書の最上部に配置され、スペースを
つくるため、その他のタプルが1つの位置だけ下げられる。辞書がいっぱいにな
った場合、Least Recently Used(LRU)ポリシーが適用
される。すなわち、最後の位置を示すタプルが単に廃棄される。
【0015】 辞書には、一般のデータが事前ロードされる。 マッチに対する符号化機能は、次の3つの別個のフィールドを符号化すること
を必要とする。すなわち、 (a)辞書10の中のマッチ位置;コードが固定長log2(DICTION
ARY_SIZE)のものである一様な2進コードが使用される。
【0016】 (b)マッチ・タイプ;すなわち、入ってくるタプルのどのバイトが辞書位置
でマッチするか;静的ハフマン符号が使用される。 (c)リテラル形式で伝送される、辞書エントリにマッチしなかったあらゆる
余剰の文字。
【0017】 再び図1を参照すると、マッチ、または部分的マッチ、またはいくつかの部分
的マッチが、辞書10によってマッチ判定論理回路16に出力され、回路16は
、メイン・コーダ18を供給し、コーダ18は、符号化された信号を出力アセン
ブラ20に提供し、アセンブラ20は、圧縮されたデータ出力信号22を提供す
る。マッチ判定論理16と辞書10の間に接続されたシフト制御論理24が、辞
書にシフト信号を提供する。回路全体を単一の半導体チップ上で提供することが
可能である。
【0018】 次に、図2に示す本発明による圧縮器を参照すると、辞書30がCAM技術に
基づき、辞書30には、検索レジスタ34によって検索されるデータ32が供給
されている。辞書は、X−Matchアルゴリズムに従って検索を行い、ムーブ
・トゥ・フロント戦略およびリースト・リーセントリー・ユーズド・リプレイス
メント(Least Recently Used Replacement)
・ポリシーで編成されている。
【0019】 辞書出力は、マッチ判定論理回路36に接続され、回路36は、メイン・コー
ダ38に接続され、コーダ38は、「ラン・レングス・インターナル」(RLI
)コーダと呼ばれるコーダ39に信号を提供し、コーダ39は、出力アセンブラ
40に信号を提供する。アセンブラ40は、圧縮されたデータ42の出力ストリ
ームを提供する。
【0020】 データを符号化する前にラン・レングス符号化をデータに適用することは周知
であるが、データ圧縮システムにおいてメイン・コーダと出力アセンブラの間に
ラン・レングス・エンコーダを配置することは、これまで示唆されていなかった
【0021】 図3は、通常のイベント中およびRLI符号化イベント中に処理されるコーダ
出力および辞書適合を示す。8つのステップを示している。各ステップごとに、
最上部の4つの辞書アドレス0、1、2、3、リファレンス50、52、54、
56を示しており、アドレス58を左側に示し、適合ベクトル60を右側に示し
ている。各位置の内容は、厳密に4バイト長であることが分かる。
【0022】 辞書アドレス3、リファレンス56は、予約済み位置であり、RLIランを知
らせるのに使用され、図では、内部ラン・カウンタ62がアドレス3に隣接して
いる。
【0023】 8つのステップのそれぞれにおいて、前の検索タプルがアドレス0、リファレ
ンス50にロードされ、前に記憶されたデータが1つの位置だけ下に移される。
位置0の右側の現行の適合ベクトルが8つすべてのステップで1に設定されるこ
とにより、このことが示される。完全なマッチが存在しない場合、最後の位置の
データが削除されて新しいタプルのためのスペースがつくられる。
【0024】 矢印Aのように、辞書の内部で下方を指す矢印が、各ステップの終了時の、そ
のステップの適合ベクトル60の制御の下における辞書の再構成を示す。 各ステップに関連して、そのステップに関する辞書30の出力を示す出力ボッ
クス64が存在する。
【0025】 ステップ1で、検索タプルは、「at_i」である。完全なマッチがアドレス
1、リファレンス52で見つかり、ボックス64の中の出力がこれを示す。ボッ
クス「1」の中の第1のエントリが、マッチが見つかったことを示す。次のエン
トリが、マッチ・アドレスを示す。第3のエントリが、マッチ・タイプ、すなわ
ち、「0」を示す。この理由は、マッチが完全なマッチだからである。第4のエ
ントリは、ブランクである。この理由は、完全なマッチでは、伝送されるリテラ
ルが存在しないからである。
【0026】 辞書は、適合ベクトル60に従って更新される。「1」のビット設定が、「前
の位置からデータをロードする」を示し、また「0」のビット設定が、「現行の
データを保持する」を示す。したがって、アドレス0、リファレンス50のエン
トリが、検索タプル「at_i」で置き換えられ、またアドレス1、リファレン
ス52のエントリが、「the」で置き換えられる。アドレス2、リファレンス
54のエントリは、変更されない。
【0027】 ステップ2で、検索タプルは、「ry_」である。マッチが存在せず、すなわ
ち、ミスが存在し、出力ボックス64が、マッチが存在しないこと、すなわち、
第1のエントリが「0」であるのを示す。アドレス・エントリおよびマッチ・タ
イプ・エントリは、ブランクであり、送信されるリテラルは、「ry_」である
【0028】 適合ベクトル60が、矢印Aによって示されるとおり辞書を更新する。つまり
、すべてのエントリが、1つのアドレスだけ下に移動する。 ステップ3で、検索タプルは、「this」であり、部分的マッチがアドレス
2で見つかる。出力ボックス64が、マッチが存在すること、そのマッチがアド
レス2にあること、マッチ・タイプが部分的マッチである(すなわち、設定が「
3」である)こと、およびマッチしない部分、すなわち、送信されるリテラルが
「is」であることを示す。辞書が更新される。
【0029】 ステップ4で、検索タプルは、「at_i」であり、完全なマッチが、出力ボ
ックス64で示されるとおり、アドレス2で見つかる。 ステップ5で、検索タプルは、再び「at_i」であり、マッチがアドレス0
で見つかり、このことが出力ボックス64で示される。
【0030】 同じタプルが繰り返されたため、前のステップにおいてゼロ設定のままであっ
た内部ラン・カウンタ62が、この時点で1に設定される。可能なランが示され
るが、やはり通常の出力が与えられる(ボックス64)。この理由は、ランがま
だ確実ではないからである。
【0031】 ステップ6で、検索タプルは、再び「at_i」である。内部ラン・カウンタ
62が、2に増分される。今度は、有効なランが示され、出力は存在せず、した
がって、出力ボックス64は、ブランクである。また、RLI符号化レジスタか
らの、ステップ5に対応する出力も空である。この理由は、この場合、その出力
がRLIイベントの一部として符号化されるからである。
【0032】 ステップ7で、検索タプルは、再び「at_i」であり、内部ラン・カウンタ
が3に増分され、出力ボックス64が、ブランクのままになる。 ステップ8で、検索タプルは、「at_v」である。内部ランが終了する。部
分的マッチがアドレス0で見つかる。出力ボックス64が、マッチがアドレス0
で見つかったこと、マッチ・タイプが部分的であること、および送信されるリテ
ラルが「v」であることを示す。
【0033】 次に、内部ラン・カウンタ62のカウントが、RLI出力ボックス66に示さ
れるとおり、送信される。マッチがアドレス3、リファレンス56で見つかる。
すなわち、内部ランのために予約されたアドレスで見つかり、ランの長さは、3
であり、このランの長さが8ビット・コードとして送信される。
【0034】 この構成は、1つの辞書アドレスが失われるほどであるが(RLIコードを知
らせるように予約されるため)、10%であることが可能な圧縮比の向上は、辞
書サイズにおける1語分の損失を補償して余りある。
【0035】 内部ラン・レングス符号化は、完全なマッチでだけ動作し、部分的マッチでは
動作しないことを理解されたい。また、データの4バイトの完全なマッチを削除
できることも理解されよう。これは、ラン・レングス・エンコーダが、0だけを
検出する前述したKjelsoによる刊行物で開示された構成とは対照的である
。0のランは、符号化構成において一般的である。さらに、従来技術のエンコー
ダの配置は、X−Matchエンコーダの適用に先行するようになっている。す
なわち、内部でX−Matchアルゴリズムが適用される辞書にデータが供給さ
れる前に、入ってくるデータに対して動作する。本発明の構成では、ラン・レン
グス符号化は、辞書符号化に統合され、辞書符号化に先行しない。
【0036】 本発明の構成は、2つの別々の特徴を有する。第1は、その内容を単一のサイ
クルで検索することができ、また追加の論理が従来の内容参照可能メモリに追加
されて、同一である連続入力シーケンスを検出するのが可能になることである。
これは、辞書データの記憶のためにまだ利用されていない辞書アドレスを伝送す
ることによって達せられる。これは、前述した。第2の特徴は、辞書に入力され
る新しいデータ項目の数に基づき、動的に変化する複数の連続入力シーケンスを
辞書サイズおよびコードが示すことである。言い換えれば、辞書のサイズが変化
する。
【0037】 これを図4に示し、図4は、図3と同じ辞書の特徴を示しているが、8つの辞
書位置50〜56および51〜57も示している。ステップ1で、すべての辞書
位置が、同一のデータ値に設定される。この値は、追加の「辞書位置有効」論理
を必要とすることなく、実質的に、第1の位置50より下のすべての辞書位置を
無効であると宣言する。この理由は、辞書検索中の複数の完全なマッチの場合、
最適マッチ判定論理が、常に、辞書の最上部により近いマッチを選択し、これに
より、その下のすべての位置を無効にするからである。位置は、この例では、す
べてゼロに設定される。
【0038】 第1のステップで、コード・ワード・ブックは、第1の位置50、およびこの
段階では位置52にあるRLI位置に対応する2つの値だけを有する。 例えば、辞書に対する入力データが、すべて値ゼロの1020バイトのデータ
から構成される場合、この辞書の長さは増大せず、合計1020バイトの255
タプルのランを符号化するため、RLIコードが、一回、活動化される。このラ
ンが、図3に参照して説明したとおり、RLIカウンタ62によってカウントさ
れる。
【0039】 コーダの出力は以下のとおりである。 0111111111(10ビット) 0=>マッチ1=>辞書位置(2つだけの有効な位置)11111111=>
255ラン・レングス ステップ1で、検索タプルは、at_iであり、at_iがリテラルとして出
力される。
【0040】 ステップ2で、「at_i」が、辞書位置50に記憶されており、検索タプル
は、「ry_」である。この時点で、辞書は、3つの有効な位置を有し、RLI
ランを知らせるように予約された位置は、位置52から位置54に移動されてい
る。
【0041】 ステップ3で、検索タプルは、「this」であり、4つの有効な位置が存在
する。ステップ4で、検索タプルは、「at_i」であり、5つの有効な位置が
存在し、この時点で、予約された位置は、位置51にある。
【0042】 ステップ5、6、7、8は、繰り返されるタプルの効果を示し、辞書は、5つ
の有効な位置の長さにとどまり、予約された位置は、51にある。 ステップ8の後、新しい検索タプルが出された場合、辞書のサイズが増大して
そのタプルを記憶する。
【0043】 RLI & PBC(Phased Binary Coding)の組合せ
で可能になる最大圧縮比は、10/(1020*8)=0.00122(819
:1)である。もちろん、これは、データバイトがブロックの全長にわたって繰
り返される場合だけに達せられる理論上の最大限度であるが、内部ラン・レング
ス・コーダとムーブ・トゥ・フロント増大辞書モデルを組み合わせることの利点
を示す。一般に、RLIは、辞書が完全にいっぱいではなく、2より大きい長さ
のランが生じる限り、PBCを有利に使用する。すべての辞書位置が有効である
場合、PBCまたはUBC(Uniform Binary Coding)を
使用することは、同じ結果をもたらす。別のプレフィックスのない符号化技法を
PBCの代りに使用することができ、辞書の一部分が初期に有効であるライス(
Rice)符号化またはフェーズド・ハフマン符号化などの同じ原理が当てはま
る。
【0044】 アルゴリズムは、疑似コードで、以下のとおり与えられる。 辞書を初期状態に設定する; 次の空き位置カウンタ=2に設定する; ラン・レングス・カウント=0; DO { データ・ストリームからタプルTを読み込む; タプルTを求めて辞書を検索する; IF(位置ゼロにおける完全なヒット) { 1だけラン・レングス・カウントを増分する; } ELSE { IF(ラン・レングス・カウント=1) { 「0」を出力する; MLに対するフェーズド2進コードを出力する; MT0に対するハフマン符号を出力する; } IF(ラン・レングス・カウント>1) { 「0」を出力する; ML NEXT_FREE_LOCATION−1に対するフェーズド
2進コードを出力する; ラン・レングスに対する2進コードを出力する; } ラン・レングス・カウントを0に設定する; IF(完全なヒットまたは部分的ヒット) { 最適マッチ位置MLおよびマッチ・タイプMTを判定する; 「0」を出力する MLに対するフェーズド2進コードを出力する; MTに対するハフマン符号を出力する; Tのあらゆる必須のリテラルの文字を出力する; } ELSE { 「1」を出力する; タプルTを出力する; } } IF(完全なヒット) 辞書エントリ0ないしML−1を1つの位置だけ移動する ELSE { すべての辞書エントリを1つの位置だけ下に移動する; 次の空の位置カウンタを1だけ増分する; } タプルTを辞書位置0にコピーする; } WHILE(さらなるデータが圧縮される) 図5は、RLIコーダおよびRLIデコーダの動作を示す。
【0045】 圧縮中、図3を参照して説明したとおり、カウンタ62が、位置0における完
全なマッチによって起動される。カウンタは、連続の完全なマッチが0で検出さ
れている間、イネーブル状態にとどまり、カウントを続ける。ランが終了したと
き、そのカウントが、0によって形成されたRLIコードの残りの部分に連結さ
れ、マッチ、および辞書の中の最新のアクティブな部分に対応する予約された位
置を示す。
【0046】 圧縮解除中、カウンタ62に、RLIコードからのカウントがロードされ、次
に、ゼロから開始してカウントが開始され、ロードされた値に達するまで続けら
れる。RLIデコーダの出力は、カウント値が達せられていない間、位置0にお
ける完全なマッチである。
【0047】 RLIコーダ39は、RLI符号化レジスタ70およびRLI符号化制御ユニ
ット72を含み、ユニット72は、RLIカウンタ62に接続されている(図3
参照)。カウンタ62は、8ビット・レジスタであり、圧縮と圧縮解除の両方に
共通である。8ビットカウンタ62は、RLIデコーダ76の中のRLI復号化
制御ユニット74に接続され、デコーダ76は、やはりRLI復号化レジスタ7
8を含む。
【0048】 RLI符号化レジスタ70は、コードがRLI符号化制御ユニット72にアク
セスする前にそのコードをバッファに入れる。ユニット72は、RLI符号化プ
ロセスを制御し、圧縮が正常に動作しているかどうか、またラン・レングス符号
化イベントが生じているかどうかに依存して、正しいコード/コード長のペアを
出力する。
【0049】 RLIコーダ39がアクティブになるとき、先のコードからRLI符号化レジ
スタは空であり、ランが行われている間、出力は凍結される。 RLIコーダ76において、RLI復号化制御ユニット74は、RLI符号化
制御ユニット72に対する補完機能を有する。ユニット74は、回路が正常に動
作しているかどうか、すなわち、個々のバイトに対して動作しているかどうか、
またはラン・レングス復号化が行なわれているかどうかに依存して、正しいマッ
チ位置/マッチ・タイプのペアを出力する。
【0050】 RLI復号化レジスタ78は、RLI符号化レジスタ70と同じ機能性を有す
る。 8ビットRLIカウンタ62は、パターンが255回を超えて繰り返される場
合、オーバーフロー条件を検出する特定の技法を全く使用しない。カウンタは、
単に、0にループ・バックし、その条件が、RLI制御論理72によってランの
終了として検出され、ラン・レングス・コードが出力される。RLIコード・イ
ベントの後の次のコードは、パターンが繰り返され続ける場合でも、常に正常な
コードである。繰り返しが続けられると、カウンタ62は、1のカウントを再び
超え、ラン・レングス検出信号が、再びアクティブにされる。
【0051】 圧縮解除中、RLIコードが2つ連続する可能性がないという事実を利用して
、RLIカウントをRLIデコーダ76の中に一回だけロードする。この動作モ
ードにより、RLI制御ユニットが単純化される。
【0052】 詳細なコーダ/デコーダ回路を図6に示す。 圧縮されていないデータ32が、CAM辞書30に供給され、辞書出力、すな
わち、マッチが見つかった辞書アドレスの指示、または部分的マッチ、およびマ
ッチしなかった1つまたは複数のバイトのアドレスの指示が、優先順位論理回路
80に供給され、回路80が、辞書の中の異なるタイプの可能なマッチ、すなわ
ち、完全なマッチ、部分的マッチ、またはミスのそれぞれに異なる優先順位を割
り当て、その結果をマッチ判定論理回路82に供給する。回路82は、優先順位
情報を使用して優先順位タイプを使用してマッチのうちどれかを圧縮に最適なも
のとして選択し、信号をメイン・コーダ38に供給する。
【0053】 メイン・コーダ38は、前述した「従来技術」で説明したとおり、一様な2進
コードをマッチする位置に割り当て、静的ハフマン符号をマッチ・タイプに割り
当て、あらゆる必要なバイトをリテラル形式で連結する。圧縮された出力が、図
4を参照して説明したRLIコーダ39に供給される。この信号は、メイン・コ
ーダによって生成されるが、簡潔にするため、図では示していない。RLIコー
ダ出力は、ビット・アセンブリ論理40に渡され、論理40が、内部バッファ(
図示せず)の中で64ビット以上の圧縮されたデータが有効であるときはいつで
も、新しい64ビットの圧縮された出力をメモリに書き込む。出力は、圧縮され
たコード42である。
【0054】 また、優先順位論理回路80からの出力が、同日出願の同時係属出願、英国0
001711.1に説明するアウト・オブ・デート適合(ODA)論理回路84
に供給される。ODA回路84の出力は、移動生成論理回路44に接続され、回
路44は、マッチ・タイプおよびマッチ位置に依存して、移動ベクトルを(図3
において適用される適合ベクトルとして)生成する。また、移動生成論理44は
、フィードバック信号をODA論理回路84に提供する。(NBアウト・オブ・
デート適合は、簡潔にするため、図3では示していない。) 圧縮解除のため、圧縮された入力90が、ビット逆アセンブリ論理回路92に
供給され、回路92が、圧縮解除動作の後、内部バッファ(図示せず)の中に残
された有効なビットが33より少ないときはいつでも、メモリから64ビットの
圧縮されたベクトルを読み取る。圧縮されたベクトルは、メイン・デコーダ94
に供給され、デコーダ94は、あらゆる必要なリテラル文字とともにマッチ位置
およびマッチ・タイプを復号化し、あらゆる可能なRLIコードを検出する。デ
コーダ94は、RLIデコーダ76に接続され、デコーダ76は、ラン・レング
スの復号化された出力をODA論理回路84、およびタプル・アセンブリ回路9
6に供給する。
【0055】 CAM辞書30は、復号化された入力に対して動作して4バイト幅の語を再生
成し、この語が、タプル・アセンブリ回路96に供給される。この回路は、圧縮
されていないデータ98を供給し、このデータは、辞書30からの情報を使用し
てアセンブルされたタプル、およびコードの中に存在するあらゆるリテラル文字
を含む。
【0056】 本発明によるラン・レングス内部符号化の適用は、圧縮の速度にほとんど、ま
たは全く影響を与えずに、10%であることが可能な圧縮比の向上を達すること
が判明している。この向上は、32ビットパターンなどのあらゆる反復するパタ
ーンの効率的なラン・レングス符号化からもたらされる。最も一般的な反復する
パターンは、0のランであるが、テキスト・ファイルにおけるスペース文字、ま
たはピクチャにおける一定の背景カラーなどのその他のパターンも可能である。
本発明の適用により、そのようなゼロでない文字の効率的な可逆的符号化および
復号化が可能になる。
【0057】 リースト・リーセントリー・ユーズド(Least Recently Us
ed)辞書保持ポリシーにより、あらゆる反復するパターンが、辞書30の中の
位置ゼロに強制的に配置される。ラン・レングス内部符号化は、位置ゼロで2回
以上、完全にマッチするあらゆるベクトルを検出し、符号化する。
【0058】 そのような構成は、圧縮システムにおいて辞書の前にラン・レングス・エンコ
ーダを配置することに比べて、圧縮比の利点を提供し、辞書論理を使用するため
、アーキテクチャが高いレベルで統合されて、複雑さが最小限に抑えられる。
【0059】 CAM辞書30は、15の語、31の語、または63の語を有することが可能
である。1つの位置は、RLIイベントのために既に予約されている。より大き
い辞書が、圧縮比を向上させるが、複雑さを相当に増大させる。
【0060】 圧縮されていないデータ出力98は、データ入力32と同一である。損失は生
じていない。 本発明は、小さいブロックのデータを圧縮するとき、適用される可能性が高い
【図面の簡単な説明】
【図1】 Nunez他によって公開された圧縮器構成のアーキテクチャを示す図である
【図2】 圧縮器ハードウェアのアーキテクチャを示す図である。
【図3】 ラン・レングス内部エンコーダを示す図である。
【図4】 様々なサイズの辞書を示す図である。
【図5】 ラン・レングス内部コーダ/デコーダを詳細に示す図である。
【図6】 圧縮器/圧縮解除器回路を示す概略図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AG,AL,AM, AT,AU,AZ,BA,BB,BG,BR,BY,B Z,CA,CH,CN,CR,CU,CZ,DE,DK ,DM,DZ,EE,ES,FI,GB,GD,GE, GH,GM,HR,HU,ID,IL,IN,IS,J P,KE,KG,KP,KR,KZ,LC,LK,LR ,LS,LT,LU,LV,MA,MD,MG,MK, MN,MW,MX,MZ,NO,NZ,PL,PT,R O,RU,SD,SE,SG,SI,SK,SL,TJ ,TM,TR,TT,TZ,UA,UG,US,UZ, VN,YU,ZA,ZW (72)発明者 ヌネズ ヤネズ,ホセ・ルイス イギリス国レスターシャー エルイー11 4ダブリュービー,ラクボロウ,ラウンド ヒル・ウェイ 17 Fターム(参考) 5J064 AA02 BA08 BA09 BB05 BC02 BC04 BC05 BC14 BC29 BD02 BD03

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 内容参照可能メモリ辞書(30)と、コーダ(38)とを含
    む可逆的データ圧縮システムであって、 ラン・レングス符号化手段(39)が、前記コーダ(38)からの出力を受け
    取るように接続され、前記符号化手段(39)が、所定の辞書位置でマッチが連
    続的に生じる回数をカウントするように構成されていることを特徴とするシステ
    ム。
  2. 【請求項2】 前記辞書(30)が、各検索ステップにおいて、検索タプル
    が前記辞書の同一のアドレス(50)にロードされるように構成された請求項1
    に記載のシステム。
  3. 【請求項3】 前記ラン・レングス・エンコーダ・レジスタ手段(39)が
    、前記辞書(30)の前記同一のアドレス(50)の中に同一の検索タプルがロ
    ードされる回数をカウントするように構成された請求項2に記載のシステム。
  4. 【請求項4】 前記辞書(30)の中のさらなるアドレス(56)が、検索
    タプルが反復される回数を示すように予約された請求項2または3に記載のシス
    テム。
  5. 【請求項5】 前記さらなるアドレスが、前記辞書のサイズに従って変化す
    る請求項4に記載のシステム。
  6. 【請求項6】 前記辞書(30)が、すべて正確に等しい長さのデータ要素
    を保持するように構成され、各辞書エントリが、複数のデータ要素を保持する前
    記請求項のいずれかに記載のシステム。
  7. 【請求項7】 各辞書エントリが、4つのデータ要素を保持する請求項6に
    記載のシステム。
  8. 【請求項8】 連続のマッチが、辞書データの記憶のためにまだ利用されて
    いない辞書アドレスの伝送によって示される前記請求項のいずれかに記載のシス
    テム。
  9. 【請求項9】 内容参照可能メモリ辞書(30)と、デコーダ(94)とを
    含む可逆的データ圧縮解除システムであって、 ラン・レングス・デコーダ・レジスタ手段(76)が、デコーダ(94)の出
    力を受け取るように接続されていることを特徴とするシステム。
  10. 【請求項10】 固定長の検索タプルを辞書の中に記憶された前記固定長の
    複数のタプルと比較するステップと、 前記辞書の中における完全または部分的な1つまたは複数のマッチの位置を示
    すステップと、 任意の複数のマッチのうち最適マッチを選択するステップと、 前記マッチ位置および前記マッチ・タイプを符号化するステップとを含むデー
    タを圧縮する可逆的方法であって、 各検索タプルを前記辞書の中の同一のアドレスに順にロードするさらなるステ
    ップと、 前記アドレスで同じタプルが連続的にマッチする回数をカウントするさらなる
    ステップを特徴とする方法。
JP2001555210A 2000-01-25 2001-01-22 より効果的な圧縮を有するデータ圧縮 Pending JP2003521189A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0001707.9 2000-01-25
GBGB0001707.9A GB0001707D0 (en) 2000-01-25 2000-01-25 Data compression having more effective compression
PCT/GB2001/000230 WO2001056168A1 (en) 2000-01-25 2001-01-22 Data compression having more effective compression

Publications (1)

Publication Number Publication Date
JP2003521189A true JP2003521189A (ja) 2003-07-08

Family

ID=9884318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001555210A Pending JP2003521189A (ja) 2000-01-25 2001-01-22 より効果的な圧縮を有するデータ圧縮

Country Status (8)

Country Link
US (2) US6667699B2 (ja)
EP (1) EP1252715A1 (ja)
JP (1) JP2003521189A (ja)
KR (1) KR20020075889A (ja)
AU (1) AU2001226952A1 (ja)
CA (1) CA2398062A1 (ja)
GB (1) GB0001707D0 (ja)
WO (1) WO2001056168A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004530318A (ja) * 2001-02-01 2004-09-30 ビーティージー・インターナショナル・リミテッド 高速データ圧縮を提供する装置
US8125364B2 (en) 2007-08-13 2012-02-28 Nec Corporation Data compression/decompression method

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003003584A1 (en) * 2001-06-29 2003-01-09 Netcontinuum, Inc. System and method for data compression using a hybrid coding scheme
US20040022312A1 (en) * 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
US7430340B2 (en) * 2004-03-16 2008-09-30 Advanced Tracking Technologies, Inc. Geographic information data base engine
US20060184832A1 (en) * 2005-02-11 2006-08-17 International Business Machines Corporation Method and apparatus for achieving high cycle/trace compression depth by adding width
US7596729B2 (en) * 2006-06-30 2009-09-29 Micron Technology, Inc. Memory device testing system and method using compressed fail data
US7870160B2 (en) * 2008-04-14 2011-01-11 Objectif Lune Inc. Block compression algorithm
US8417730B2 (en) * 2008-04-14 2013-04-09 Objectif Lune Inc. Block compression algorithm
FR2933793B1 (fr) * 2008-07-11 2013-07-05 Canon Kk Procedes de codage et de decodage, par referencement, de valeurs dans un document structure, et systemes associes.
US9438413B2 (en) 2010-01-08 2016-09-06 Novell, Inc. Generating and merging keys for grouping and differentiating volumes of files
US9298722B2 (en) * 2009-07-16 2016-03-29 Novell, Inc. Optimal sequential (de)compression of digital data
US9292594B2 (en) 2010-03-10 2016-03-22 Novell, Inc. Harvesting relevancy data, including dynamic relevancy agent based on underlying grouped and differentiated files
US8782734B2 (en) * 2010-03-10 2014-07-15 Novell, Inc. Semantic controls on data storage and access
US8832103B2 (en) 2010-04-13 2014-09-09 Novell, Inc. Relevancy filter for new data based on underlying files
US9372887B2 (en) 2010-12-28 2016-06-21 International Business Machines Corporation Compression ratio improvement by lazy match evaluation on the string search CAM
DE112011104620T5 (de) * 2010-12-28 2013-10-02 International Business Machines Corporation Vorrichtung und Verfahren zum Verarbeiten einer Datenelementsequenz
US9798732B2 (en) 2011-01-06 2017-10-24 Micro Focus Software Inc. Semantic associations in data
US8732660B2 (en) 2011-02-02 2014-05-20 Novell, Inc. User input auto-completion
US8442986B2 (en) 2011-03-07 2013-05-14 Novell, Inc. Ranking importance of symbols in underlying grouped and differentiated files based on content
US9323769B2 (en) 2011-03-23 2016-04-26 Novell, Inc. Positional relationships between groups of files
US9864763B2 (en) * 2012-06-01 2018-01-09 Entit Software Llc Merging data from a source location into a target location
US8947270B2 (en) 2013-06-29 2015-02-03 Intel Corporation Apparatus and method to accelerate compression and decompression operations
CN104124981A (zh) * 2014-06-26 2014-10-29 陕西凯鑫源科技有限公司 用于对车联网大量信息的存储及传输的k复游程编码方法
US9691483B1 (en) * 2016-09-20 2017-06-27 Hewlett Packard Enterprise Development Lp Content addressable memory with banks
US11122095B2 (en) 2019-09-23 2021-09-14 Netapp, Inc. Methods for dictionary-based compression and devices thereof
JP2021145281A (ja) 2020-03-13 2021-09-24 キオクシア株式会社 圧縮装置、伸張装置及び方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473326A (en) * 1990-12-14 1995-12-05 Ceram Incorporated High speed lossless data compression method and apparatus using side-by-side sliding window dictionary and byte-matching adaptive dictionary
US5389922A (en) * 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets
US5521597A (en) * 1993-08-02 1996-05-28 Mircosoft Corporation Data compression for network transport
AU1514795A (en) 1993-12-30 1995-08-01 Connectix Corporation Lossless data compression system and method
US5701125A (en) * 1994-06-15 1997-12-23 The United States Of America As Represented By The United States Department Of Energy Method for compression of data using single pass LZSS and run-length encoding
US5889818A (en) 1994-06-24 1999-03-30 Norand Corporation Adaptive display refresh and data compression in a radio frequency environment
US5861827A (en) * 1996-07-24 1999-01-19 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search
US6075470A (en) * 1998-02-26 2000-06-13 Research In Motion Limited Block-wise adaptive statistical data compressor
US6169499B1 (en) * 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004530318A (ja) * 2001-02-01 2004-09-30 ビーティージー・インターナショナル・リミテッド 高速データ圧縮を提供する装置
US8125364B2 (en) 2007-08-13 2012-02-28 Nec Corporation Data compression/decompression method

Also Published As

Publication number Publication date
GB0001707D0 (en) 2000-03-15
EP1252715A1 (en) 2002-10-30
WO2001056168A1 (en) 2001-08-02
US6667699B2 (en) 2003-12-23
US20030095055A1 (en) 2003-05-22
KR20020075889A (ko) 2002-10-07
AU2001226952A1 (en) 2001-08-07
CA2398062A1 (en) 2001-08-02
US20040189494A1 (en) 2004-09-30
US6906645B2 (en) 2005-06-14

Similar Documents

Publication Publication Date Title
JP2003521189A (ja) より効果的な圧縮を有するデータ圧縮
US5729228A (en) Parallel compression and decompression using a cooperative dictionary
CA1223965A (en) High speed data compression and decompression apparatus and method
JP3342700B2 (ja) ストリングリバーサル機構を具備した単一クロックサイクルデータ圧縮装置/圧縮解除装置
EP0573208B1 (en) Apparatus and method for managing multiple dictionaries in content addressable based data compression
US5874908A (en) Method and apparatus for encoding Lempel-Ziv 1 variants
EP0666651B1 (en) Apparatus and method for lempel ziv data compression with management of multiple dictionaries in content addressable memory
US6195026B1 (en) MMX optimized data packing methodology for zero run length and variable length entropy encoding
EP0903866B1 (en) Method and apparatus for data compression
US5175543A (en) Dictionary reset performance enhancement for data compression applications
US6310563B1 (en) Method and apparatus for enhanced decompressor parsing
CN108702160B (zh) 用于压缩和解压缩数据的方法、设备和系统
WO2004012338A2 (en) Lossless data compression
JP2006092725A (ja) 圧縮システム及び方法
JPH10341165A (ja) 少量データへの適応を加速するデータ圧縮方法
JP2003521190A (ja) 向上した圧縮速度を有するデータ圧縮
US7750826B2 (en) Data structure management for lossless data compression
JP3171510B2 (ja) 辞書ベースのメモリ内のデータを圧縮および圧縮解除する方法