JP2005535175A - ロスレスデータ圧縮 - Google Patents

ロスレスデータ圧縮 Download PDF

Info

Publication number
JP2005535175A
JP2005535175A JP2004523991A JP2004523991A JP2005535175A JP 2005535175 A JP2005535175 A JP 2005535175A JP 2004523991 A JP2004523991 A JP 2004523991A JP 2004523991 A JP2004523991 A JP 2004523991A JP 2005535175 A JP2005535175 A JP 2005535175A
Authority
JP
Japan
Prior art keywords
dictionary
tuple
data
symbols
digital data
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
JP2004523991A
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 JP2005535175A publication Critical patent/JP2005535175A/ja
Pending legal-status Critical Current

Links

Images

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
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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
    • 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
    • H03M7/48Conversion 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 alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present

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

複数のシンボルを含むデジタル信号に関するロスレスデジタルデータ圧縮の方法を説明する。この方法には、デジタル信号を、整数個数のシンボルの後でまたはデジタルデータ内の所定のシンボルの発生に応答して終るタプルに解析することが含まれる。解析されたタプルが、辞書の複数のエントリと比較され、一致が見つかる場合に、タプルが、辞書位置に置換される。辞書を用いる圧縮の前に信号を解析することによって、圧縮率に対するデータの粒度の影響を減らす。本発明は、圧縮解除の方法、コンプレッサおよびデコンプレッサ、ならびに圧縮されたデータ信号にも拡張される。

Description

本発明は、データのロスレス圧縮(可逆圧縮)に関する。本発明には、データの圧縮の方法および装置、データの圧縮解除の方法および装置、ならびに圧縮データの信号(コンピュータメモリに保管されるか、データキャリアに保管されるか、通信ネットワーク上で信号として搬送される)が含まれる。
ロッシイデータ圧縮(歪みを許す圧縮)ハードウェアが、近年、イメージ処理および信号処理のために使用可能になっているが、ロスレスデータ圧縮は、データ伝送およびデータストレージでの帯域幅およびビットあたりのコストに対する商業的圧力の増加の結果として、ごく最近に注目を集めており、データボリュームの削減による電力消費の削減も重要である。
辞書の検索および辞書アドレスへの参照によるデータのエンコードが、既知であり、この原理を適用する装置は、辞書およびコーダ/デコーダからなる。LempelおよびZivの成果に基づく一部の圧縮システムは、前のnバイトの入データストリームのコピーを含む「ランニング」辞書を使用する。圧縮される新しいデータは、前に見られたデータと比較され、一致が見つかる場合に、[位置,長さ]のインジケータを使用してエンコードされる。長さは、一致するデータの量(たとえばバイト数)を与える。一致しないデータは、変更なしで送られる。デコンプレッサが、それが受け取っている圧縮信号が圧縮されているか否かを判定できるようにするために、送られる信号内にある種の表示が必要である。
Kjelso、Gooch、およびJonesは、「Design and Performance of a Main Memory Hardware Data Compressor」、Proceedings of EUROMICRO−22、1996年、IEEEに、X−Matchと称する、メインメモリに保管された実行可能コードを圧縮するように設計され、高速ハードウェア実施に適する新規の圧縮技法を記載した。
X−Match圧縮技法では、複数のエントリを含む辞書が維持され、各エントリは、同一の長さを有する。辞書エントリの1つと圧縮されるコードの間に一致が見つかる時に、そのコードは、辞書内の一致するエントリの位置を示すインデックスに置換される。実行可能コードを圧縮することによって、実行中により少ないメモリページが必要になり、したがって、プロセッサ動作が高速になる。コンプレッサおよびデコンプレッサは、高速である必要がある。
X−Matchロスレスコンプレッサは、前に見られたコードの辞書を維持し、圧縮されるコードの要素と辞書内のエントリの突合せを試みる。コード要素を、タプルと称し、ほとんどのマイクロプロセッサが32ビットまたは64ビットの命令を使用するので、タプルは、32ビット(すなわち4バイト)長になるように選択される。一致しないタプルは、無変更でコンプレッサの出力に供給される。効率を高めるために、X−Matchコンプレッサは、部分的一致に基づいて動作する。これが意味するのは、4バイトタプルのうちの2バイトまたは3バイトが辞書エントリの対応するバイトと一致する時に、そのタプルが、「部分的一致」として識別されることである。タプル内の、一致しないバイトは、無変更で出力に供給され、正確な圧縮解除を可能にするために、どのバイトが一致したかの表示が含まれる。
辞書は、ムーブトゥフロント(Move To Front、MTF)技法およびリーストリースントリユーズド(Least Recently Used、LRU)技法を使用して更新されることが好ましい。MTF技法では、最も最近に圧縮されたタプルを、処理された後に辞書に置く。このタプルは、他のエントリを下にシフトしながら、辞書の前面または最上部に追加される。フェーズドバイナリコード(Phased Binary Code、PBC)などの辞書コードを使用して辞書位置をエンコードすることによって、圧縮率の改善がもたらされる。LRU技法では、最近に最も使用されていない辞書エントリを破棄する(辞書が満杯になったと仮定して)。これは、MTF技法とあいまって行われる。というのは、辞書の最後のエントリが破棄される(辞書が満杯になったならば)からである。
Nunez、Feregrino、Bateman、およびJonesは、「The X−MatchLITE FPGA−Based Data Compressor」、Proceedings of EUROMICRO−25、1999年、IEEEで、フィールドプログラマブルゲートアレイ(FPGA)で実施されたX−Matchアルゴリズムを説明した。
その内容が参照によって本明細書に組み込まれる国際特許出願第WO 01/56168号に、NunezおよびJonesは、X−Match圧縮技法へのランレングスエンコーディング(RLE)の追加を記載した。これによって、一致が辞書の同一の位置で連続して発生する場合に、改善された圧縮がもたらされる。RLEアルゴリズムをX−Match辞書に統合することによって、その効率が改善される。
その内容が参照によって本明細書に組み込まれる国際特許出願第WO 01/56169号に、NunezおよびJonesは、圧縮速度の改善を提供する、辞書を更新する効率的な技法を記載した。
X−MatchPROと称する圧縮システムをもたらす、これらの技法の組み込みは、他のロスレス圧縮技法に匹敵する速度での高速で効率的な圧縮を提供することが示されている。
X−Match技法は、プロセッサ実行可能コードに関する優れた圧縮を提供するが、HTML(HyperText Markup Language)コードに適用される時に、圧縮率が低下することがわかっている。
本発明の目的は、この短所に対処するロスレスデータ圧縮技法を提供することである。
本発明の第1の態様によれば、複数のシンボルを含むデジタルデータを圧縮する方法であって、前記デジタルデータを整数個数のシンボルの後でまたはデジタルデータ内の所定のシンボルの発生に応答して終るタプルに解析するステップと、各タプルを辞書内の複数のエントリと比較するステップと、前記タプルとある辞書位置にある前記エントリとの間の一致に応答して前記タプルを前記辞書位置に置換するステップとを含む方法がもたらされる。
発明人は、HTML、自然言語、または類似するデータセットを圧縮する時に観察される性能の劣化の原因の大きい部分が、入データストリーム内の可変幅の単語またはシンボルのグループの先頭と、辞書内の単語またはシンボルのグループの先頭との間の同期化の失敗であることを識別した。言い換えると、データの粒度が、一般に、4バイトではなく1バイトである。辞書エントリと比較する前に特定の形で入データを解析することによって、入データストリームと辞書の間の一致の数が、改善され、これによって、圧縮率が改善される。
これを、添付図面の図1を参照して、下で詳細に説明する。
本発明の実施形態は、X−Match論文について上で述べた部分的一致を可能にする。また、タプルを、辞書内の同一の長さのタプルだけと比較することが好ましい。辞書にCAMが含まれる時には、辞書内のすべてのエントリが比較されるので、これは不可能である。この場合に、一致しない長さのタプルに関連する、辞書からの出力信号が、さらなる処理で無視される。所定のシンボルは、多くの場合にスペース文字であるが、これに加えてまたはこれの代わりに他のシンボルを使用することができる。所定の文字が、非常に少ないビット数でコーディングされることが好ましく、好ましい実施形態では、1ビットだけを使用してコーディングされる。前に識別されたWO明細書に記載のランレングスエンコーディングおよびアウトオブデート(out of date)適応も、好ましい実施形態で使用される。
本発明の第2の態様によれば、複数のシンボルを含むデジタルデータを圧縮するデジタルデータコンプレッサであって、整数個数のシンボルまたは前記デジタルデータ内の所定のシンボルの発生に応答して、前記デジタルデータをタプルに分割するパーサと、タプルを複数のエントリと比較する辞書と、前記タプルとある辞書位置にある前記エントリの間の一致に応答して前記タプルを前記辞書位置に置換するロジックとを含むデータコンプレッサが提供される。
本発明(実際により一般的にX−Match)は、半導体チップなどの高速ハードウェアでの実施が特に可能である。しかし、コンプレッサは、フィールドプログラマブルゲートアレイ(FPGA)または他の形で同等に実施することができる。
本発明の第3の態様によれば、複数のシンボルを表すデジタルデータを圧縮解除する方法であって、オリジナルデータのタプルに対応するオリジナルデータの量を判定するステップであって、タプルが、整数個数のシンボルの後でまたはオリジナルデータでの所定のシンボルの発生に応答して終る、ステップと、辞書一致が発生したことを示すデジタルデータに応答して辞書からシンボルを取り出すステップとを含む方法が提供される。
本発明の第4の態様によれば、複数のシンボルを表すデジタルデータを圧縮解除するデコンプレッサであって、オリジナルデータのタプルに対応するデジタルデータの量を判定するロジックであって、タプルが、整数個数のシンボルの後またはオリジナルデータでの所定のシンボルの発生に応答して終る、ロジックと、辞書一致が発生したことを示すデジタルデータに応答して辞書からシンボルを検索するロジックとを含むデコンプレッサが提供される。
本発明の第5の態様によれば、本発明の第2の態様によるコンプレッサおよび本発明の第4の態様によるデコンプレッサを含む半導体集積回路(IC)が提供される。この半導体ICは、他の回路も含む特定用途向け集積回路(ASIC)とすることができる。
本発明の第5の態様の実施形態では、コンプレッサおよびデコンプレッサが共通の辞書を使用する。これによって、IC上のスペースが節約されるが、データの圧縮および圧縮解除を同時に行うこと(二重動作)ができなくなる。
本発明の第6の態様によれば、複数のシンボルを含むオリジナルデジタルデータを再構成するように適合された圧縮データ信号であって、前記オリジナルデジタルデータ内の整数個数のシンボルにそれぞれが対応する複数の離散セクションであって、前記圧縮データ信号の各離散セクションが、前記対応するシンボルが辞書エントリに一致したかどうかの表示を含む、複数の離散セクションと、前記離散セクションによって表されるシンボルの数の表示と、前記辞書に存在しないシンボルとを含む圧縮データ信号が提供される。
添付図面の図2から6を参照して、非制限的な例によって本発明を説明する。
図1に示された従来技術では、辞書10が、連想メモリ(CAM)に基づき、検索レジスタ14によって供給される4バイトタプル12によって検索される。辞書10内では、各エントリも4バイトの幅である。標準的な幅のデータ要素を用いると、データの混合に無関係に、圧縮中の保証された入力データレートおよび圧縮解除中の保証された出力データレートがある。
辞書は、前に出会ったタプルを保管し、新しいタプルが辞書の検索に使用され、辞書で一致が見つかる時に、そのタプルが、一致位置を参照するインデックスに置換される。CAMは、データ要素を受け取り、その出力として要素の一致アドレスを与える連想記憶の一形態である。CAM技術の使用によって、辞書10の素早い検索が可能になる。というのは、検索が、タプルが保管されるすべてのアドレスで同時に実施されるからである。
X−Match圧縮技法では、完全な一致は必須でない。4バイトのうちの2バイトまたは3バイトの一致とすることができる部分的一致も、辞書内の一致位置を参照するインデックスによって置換される。もちろん、部分的一致の存在をコーディングして、正しい圧縮解除を保証しなければならず、したがって、一致タイプコードMTが、一致判断ロジック16によって判定される。1つまたは複数の不一致バイトは、無変更でエンコーディングアセンブラ18によって供給される。この部分的一致の使用によって、タプルの完全な一致を必要とする場合と比較した時に圧縮率が改善されるが、辞書の高いスループットも維持される。
一致タイプは、入タプルのどのバイトが辞書内の対応するバイトと一致し、どのバイトを無変更で圧縮コードに連結しなければならないかを示す。一致する2バイト、3バイト、または4バイトの異なる組合せに対応する11個の異なる一致タイプがある。たとえば、0000は、すべてのバイトが一致した(完全一致)ことを示し、1000は、バイト0、1、および2が一致したがバイト3が一致しなかった部分的一致を示し、この例では、バイト3を無変更でコンプレッサの出力に追加しなければならない。いくつかの一致タイプMTは、他のMTより頻繁に現れるので、シミュレーションを介して得られた統計に基づく静的ハフマンコードが、これらのコーディングに使用される。たとえば、最も多い一致タイプは、0000(完全一致)であり、対応するハフマンコードは、01である。その一方で、部分的一致タイプ0010(第1、第3、および最後のバイトが一致する)は、より頻度が低く、したがって、対応するハフマンコードは、10110である。この技法によって、圧縮率が改善される。
たとえば、検索タプルがCAT_であり、辞書の位置2に単語SAT_がある場合に、部分的一致が、次のフォーマットで示される。
(一致/不一致フラグ)(辞書一致位置ML)(一致タイプMT)(1つまたは複数の不一致バイト)
この例では、これが022Cすなわち、2進コード0 000010 0010 1010011である、すなわち、大文字のCは一致せず、無変更でまたは文字どおりに、システムのコーディング部分に送られる。
このアルゴリズムは、擬似コードで次のように表される。
辞書を初期状態にセットする;
DO
{未圧縮コードからタプルTを読み取る;
タプルTを辞書から検索する;
IF(完全一致または部分的一致)
{最良一致位置MLおよび一致タイプMTを判定する;
「0」を出力する;[一致フラグ]
一致位置MLの2進コードを出力する;
一致タイプMTのハフマンコードを出力する;
タプルTの不一致のバイト(リテラル)文字のすべてを出力する;}
ELSE
{「1」を出力する;[不一致フラグ]
タプルTを出力する;}
IF(完全一致)
{辞書エントリ0から(ML−1)を1位置だけ移動する;}
ELSE
{すべての辞書エントリを1位置だけ下に移動する;}
タプルTを辞書位置0にコピーする;}
WHILE(圧縮すべきデータがある);
最良一致位置は、圧縮コードで必要なビット数が最小であることを基礎として判定される。
辞書は、ムーブトゥフロント(MTF)戦略に基づいて配置される、すなわち、現在のタプルTは、辞書の前に配置され、他のタプルが、余地を作るために1位置だけ下に移動される(タプルTが一致するか否か無関係に)。辞書が満杯になった場合に、リーストリースントリユーズド(LRU)ポリシが適用される、すなわち、最後の位置を占めるタプルが、単純に破棄される。
一致に関するコーディング機能は、3つの別々のフィールドすなわち、
(a)辞書10内の一致位置;コードが固定長log 2(辞書サイズ)である均一な2進コードが使用される
(b)一致タイプ;すなわち、入タプルのどのバイトが辞書位置で一致するか;静的ハフマンコードが使用される
(c)辞書エントリと一致しなかった、リテラルの形で送られる余分のバイト
をコーディングする必要がある。
もう一度図1を参照すると、所与のタプルTとの一致、部分的一致、または複数の部分的一致が、辞書10によって一致判断ロジック回路16に出力される。この回路は、エンコーディング機器18に供給し、エンコーディング機器18は、圧縮出力信号20を供給する。一致判断ロジック16と辞書10の間に接続されたシフト制御ロジック22が、シフト信号を供給して、辞書を更新する。この回路全体を、単一の半導体チップ上に設けることができる。
本発明人は、X−Matchコンプレッサの性能があるデータタイプで劣化する理由を判定した。次の句がX−Matchコンプレッサによって圧縮されると想像されたい。辞書が、最初は空であると仮定する。
computer hardware and computer software
このデータは、幅4バイトのタプルに分割(解析)され、したがって、
{comp}{uter}{ har}{dwar}{e an}{d co}{mput}{er s}{oftw}{are }
になる。
この4バイトタプルのそれぞれが、順番に辞書に適用される。一致は見つからず、したがって、タプルのそれぞれが、無変更でコンプレッサ出力データストリームに供給され、辞書にも保管される。圧縮はもたらされない(実際には、データの長さは、不一致フラグの挿入に起因して長くなる)。
しかし、この句には、繰り返される複数の単語および単語の一部がある。したがって、相当な冗長性がある。入力句は、4バイトのタプルに単純に分割されるので、各タプルは、この句の冗長性が出力信号を効率的に生成するためにコンプレッサによって活用されないことを意味する。
句が、次のように解析される場合に、
{comp}{uter }{hard}{ware }{and }{comp}{uter }{soft}{ware}
単語「computer」およびタプル「ware」の繰り返しを、圧縮をもたらすのに使用することができる。本発明の実施形態は、この原理に基づいて構築される。
次の例では、区切りシンボルまたは終端シンボルが、スペース(ASCIIコード32)であると仮定するが、代替の1つまたは複数のシンボルをその代わりに使用することができる。これは、たとえば、エンコードされるデータが、この例に使用される自然言語に似た構造を有するが、スペース文字によって区切られない場合に適当である。
辞書の可能な幅全体より短い辞書エントリの使用が、「純粋な」データすなわちコンプレッサのタプル幅と一致する粒度を有するデータの時に圧縮率の劣化を引き起こすと考えられる。しかし、単一の区切り文字が使用される場合に、これは、平均して256バイトに1回だけ発生する。コーディングされたタプル(したがって辞書エントリ)は、時期尚早に短縮されるが、これは全体のわずかな比率だけであり、一般に重要でなくなる。
図2に、本発明の原理を、ブロック図形式で示す。データコンプレッサ50は、圧縮されるデータストリーム52を入力バッファ54に受け入れ、入力バッファ54は、データをパーサユニット56に供給する。パーサユニットは、所定の長さのタプルにデータをスライスするか、データ内の解析シンボルまたは終端シンボルの存在に応答して、このシンボルで終るタプルにスライスする。これらのタプルが、圧縮辞書58に適用され、圧縮辞書58は、優先順位ロジック60に結合される。優先順位ロジックは、部分的一致の可能性があるので必要である。所与のタプルに関する複数の部分的一致が辞書にある可能性があり、したがって、一致をランキングする回路が必要である。
優先順位ロジックの出力が、最良一致判断ロジックに結合され、最良一致判断ロジックは、複数の可能な一致(発生する時に)の1つを選択する。最良一致判断は、主コーダまたは一致/不一致コーダ64に供給される。主コーダは、ビットアセンブリロジック66に供給し、ビットアセンブリロジック66は、出力バッファ68に供給する。入力データストリームが、上で示したように解析されたので、圧縮率が、タプル長の粒度と一致する粒度を有しないデータに関して著しく改善される。
所与のデータセットをこの解析に適用することが適当であるかどうかという問題は、複数の形で対処することができる。第1に、圧縮アルゴリズムのユーザ(たとえばアプリケーションプログラム)が、適用されるアルゴリズムを指定することができる。第2に、ASCIIコード0などの非テキスト文字が入データストリームで検出されるまで、可変タプル長アルゴリズムを適用することができる。この文字が検出されたならば、固定タプル長アルゴリズムが適用される。デコンプレッサは、コンプレッサと同一のルールを適用することによって、このアルゴリズム切替を自動的に検出することができる。非テキスト文字は、すべてのデータストリームに現れる可能性が高いので、後者の技法は、固定長アルゴリズムの使用を単純に遅らせると考えることができる。しかし、実際には、そうでないことがわかっている。人間可読データは、一般に、機械コードとして解釈されるごく少数の文字を含まないことがわかっている。
代替案では、率直な技法を使用して、2つの解析技法(固定長解析または可変長解析)のどちらが特定の入データブロックを最もよく圧縮するかを判定することができる。コンプレッサ内のパーサは、固定長解析モードで動作を開始するように配置され、ブロック内の最初の少数のシンボル(バイト)を分析する。文字のいずれかが非ASCII文字(たとえば)である場合に、データが、機械可読であると仮定され、パーサは、その後、入データを固定長タプルに分割するだけのために動作する。すべてのバイト(シンボル)がASCII文字である場合に、データは、性質においてテキストであると仮定され、パーサは、その後、可変長解析モードで動作するように配置される。デコンプレッサは、圧縮解除されるデータが固定長モードと可変長モードのどちらで圧縮されたかを知る必要がない。というのは、圧縮データストリームに、すでに、透過的に圧縮解除するのに十分な情報が含まれるからである。
上で与えた例から、解析処理によって分離される複数の自由なまたは「孤児の」スペースがあることがわかる。単語の長さがタプル長の整数倍である時に、必ずこれが発生する。次の実施形態は、これらの孤児のスペースを効率的に圧縮する効率的な技法を有する。
スペースを、前のタプルの一部にすることができない場合に、そのスペースは、それだけで不一致タイプコードジェネレータに送られ、不一致タイプコードジェネレータは、2進数11(2ビット)を追加して、スペースをコーディングする。第5の文字位置にあるスペースの明示的コーディングがあり、1バイトが2ビットだけに置換されるので、これはスペースのコーディングの効率的な形である。
この原理を、たとえば第4文字位置に現れるスペースに拡張することができる。
たとえば、次の2つの文字列を検討されたい
ABC_ および ABCD_
ここで、アンダースコア文字は、スペースを表す。この文字列の1番目は、一致が発生する場合に、任意の4文字タプルとしてコーディングされる。不一致が発生する場合には、不一致タイプコードジェネレータが、次のコードを生成する。
1(不一致の)[不一致長さのハフマンコード][ABC]
第2の文字列について、第5文字が、それだけで次のようにコーディングされる。
1(不一致の)[異なるハフマンコード][ABCD]+1(不一致の)[異なるハフマンコードcode]
第1の場合に、スペース文字は明示的にコーディングされないが、第2の場合に、孤児スペースが、不一致として明示的にコーディングされることに留意することが重要である。孤児スペースの発生は、非常に一般的なので、この事象をコーディングするのに使用されるビット数は、理想的には、短いハフマンコードの正しい選択によって、できる限り減らされる。ハフマンコードの選択は、当業者が、タプル長、データ特性などの基礎で簡単に行うことができる。下に、スペースが1ビットだけのハフマンコードを有する例を示す(アンダースコアがスペースを表す。)
Figure 2005535175
この技法と、Lempel Ziv 77およびLempel Ziv 78に基づく従来技術コンプレッサの技法の間の区別に留意することも重要である。これらの従来技術コンプレッサは、可変長の入データを単一の辞書参照に置換するが、辞書参照によって置換されるデータの量は、毎回、入データと辞書の内容の間の連続する一致するシンボルの数によって決定される。本発明では、可変長解析動作が、入データの性質によって決定される。
図3に、「オーファン」スペースをより効率的に圧縮するために上の技法を含む、本発明によるデータコンプレッサ100の実施形態を示す。説明を始める前に、いつも固定長のタプルを処理するわけではないという事実によって、この図が複雑になっていることに留意する価値がある。したがって、このコンプレッサ内の回路ブロックの間の相互接続の大部分に、圧縮のさまざまなステージで処理されるデータを運ぶバスと、データバスのうちの何ビットまたは何バイトが有効であるかを示す信号を運ぶもう1つのバスが含まれる。
回路の要素の間のパスの、ビット数に関する幅は、データパスを横切る斜線に隣接する数字によって示される。電力供給、クロック回路、クロック線、および制御回路などの項目は、図を明瞭にするために省略した。圧縮されるデータストリームは、32ビット(4バイト)タプルを提供するために既にバッファリングされて、この図の左側に入力される。やはり4バイトタプルとしての圧縮データストリームが、保管、伝送などのために、この図の右側に供給される。
入力バッファ102が、データソースから32ビットバスを介して、圧縮されるデータのストリームを受け入れる。入力バッファ内の未圧縮データに、入力バスの幅と一致するように256個の32ビットレコードとして配置された1キロバイト(kB)のランダムアクセスメモリが含まれる。入力バッファが含まれるのは、この実施形態が(Kjelso他の教示と異なって)、各処理サイクルに必ずしも32ビットのデータを処理しないからである。この場合に、4バイトタプルのうちで現在の単語の一部にされなかった部分が、次に圧縮される単語の先頭を形成しなければならない(タプルは4バイトの固定サイズであるが、単語は解析の可変結果である)。入力バッファは、さらに、制御線WAITを具備し、このWAITは、それ以上データを供給しないようにデータソースに知らせるためにアクティブになる。より小さいバッファを使用することができるが、たとえば特定用途向け集積回路(ASIC)での、RAMの具備は簡単であり、一般に設計に対する制限要因ではない。圧縮されるデータは、32ビット幅の信号線で入力バッファに来るものとして図示されているが、当然、バイトとして、直列に、または他の形で供給することができる。データソースの制御およびそれへの接続の性質は、適当な手段によって提供することができる。
入力バッファ102は、解析ユニット104に32ビット(4バイト)のデータを供給し、解析ユニット104の目的は、解析シンボル(この例ではスペース文字)を識別し、タプルの第1バイト、第2バイト、または第3バイトにこのシンボルを含むタプルの長さを減らすことである。解析ユニット104は、検索レジスタ106に、連想メモリ(CAM)への適用のための32ビットまでのデータと、5ビット幅のMask信号(下で説明する)を供給する。検索レジスタの目的は、コンプレッサ回路の動作を同期化することである。これらのシーケンスのいずれについても辞書内で一致が見つからない場合に、これらのシーケンスが、不一致タイプコーダ118に渡される。この2つのシーケンスの実際のエンコーディングは、下で不一致タイプコードジェネレータ118に関して詳細に説明する。
解析ユニット104は、5ビット幅のMask信号も生成し、このMask信号のうちの、解析ユニットに供給される最初の4バイトに関連する4ビットは、連想メモリ(CAM)マスク辞書108に送られる。5ビットマスクが必要なのは、下に示すように、不一致タイプコードジェネレータが、タプルにスペースまたは他の文字が含まれるかどうかを知る必要があるからである。
Figure 2005535175
CAMマスク辞書108は、CAMデータ辞書110と同一の長さであり、CAMデータ辞書内のバイトのそれぞれに対応する1ビットを含む。図では、CAMデータ辞書が、16エントリを含むものとして図示されている。実際には、多少長い、通常は1024エントリを有する辞書が使用されるが、図を簡単にするために、ここでは短い辞書を示した。おおまかに言って、複雑さは、辞書の長さが倍になるたびに、1.5倍だけ増える。CAMマスク辞書には、有効なデータを含むCAMデータ辞書内のバイトを示すビットのパターンが含まれる。たとえば、CAMデータ辞書に、2バイトだけの幅であるエントリが含まれる場合に、CAMマスク辞書の対応するエントリに、対応するCAMデータ辞書エントリの最初の2バイトだけが有効であることを示す1100が含まれる。
CAMまたは連想メモリは、入力信号をメモリ内の現在のエントリのすべてと比較し、辞書内のエントリごとに1ビットの一致信号を出力する連想記憶である。64ビットのMatch信号(CAM辞書内のバイトごとに1ビット)が、優先順位ロジック112および一致判断ロジック114に供給される。
明らかに、辞書エントリが3バイトタプルから形成された場合に、辞書エントリの最初の3バイトだけが、圧縮されるタプルと比較されなければならない。本発明のコンプレッサは、4バイトタプルが辞書エントリと部分的に一致する時に、部分的一致だけを許容する。言い換えると、部分的タプルは、部分的一致を生成することができないが、完全なタプルは、4バイトより少ない有効バイトを含む辞書位置での部分的一致を生成することができる。
CAMは、辞書エントリごとに、3ビット幅の出力信号Same Lengthも供給する。これは、CAMに適用されたタプルの長さが辞書エントリと同一なのでバス上の一致Matchが満杯であるかどうかに関する情報を伝える。この信号は、完全一致検出回路116に供給される。
CAMデータ辞書からの出力および検索レジスタ106からの出力は、CAMデータ辞書の出力に応じて一致信号、部分的一致信号、および不一致信号を生成するロジックの組に供給される。
入タプルと辞書エントリの1つの間に完全な4バイト一致がある場合に、信号が、信号線Matchバス上で優先順位ロジック112および一致判断ロジック114に供給される。優先順位ロジック112は、2つの出力線を有し、16*6 Priorityというラベルを付けられた出力線は、一致判断ロジック114の第2入力に接続され、16*3 Priorityというラベルを付けられた出力線は、完全一致検出回路116に接続される。完全一致検出回路116は、CAMデータ辞書からのSame Lengthバスにも接続される。下で示すように、一部の一致タイプが他の一致タイプより高い優先順位を有するので、6つの異なる優先順位がある。
2進数の1は、一致を示し、2進数の0は、不一致を示す。
Figure 2005535175
実際には、広範囲のシミュレーションの後に、1001、0101、1010などの一致が、十分に一般的ではないことが証明され、ハフマンコードを与えられない。これは、これらが、無の優先順位を有し、許容されないことを意味する。
これらの優先順位は、広範囲のシミュレーションの後に割り当てられ、その一致タイプを識別することが、圧縮に、より有益である。
優先順位1、2、および5は、検索単語の長さが辞書単語と一致する場合に、完全一致を生成することができる。a_を含む辞書位置3でa_を見つけることなどがこれである。これは、優先順位5(2MSBの部分的一致)として識別されるが、完全一致検出回路116は、優先順位1、2、および5を含む信号16*3と、4バイト、3バイト、または2バイトの長さの一致があるかどうかを示すCAM辞書からのsame length 16*3信号を使用して、この一致を完全一致にアップグレードする。
完全一致検出回路116は、その名前が示すように、完全一致を検出し、4つの出力信号すなわち、辞書エントリの数と等しいビット数を含むMove信号と、3つの信号ビットフラグSame Position、Full Match at Zero、およびFull Matchを生成する。この3つの信号ビットフラグは、すべてがランレングスコーディングに関係し、CRLIカウンタ130に供給される。Move信号は、辞書を更新するのに使用され、CODA 146に供給される。コンプレッサアウトオブデート適応(CODA)ロジックは、ムーブ生成ロジック148と共にフィードバックループに接続され、ムーブ生成ロジック148の出力は、CAM辞書に結合される[詳細についてはWO 01/56169を参照されたい]。
一致判断ロジック114は、16対4エンコーダ122への16ビット幅信号Match Loc(一致位置)MLも供給し、この信号には、辞書エントリごとに1ビットが含まれる。このエンコーダは、4ビット信号をフェーズドバイナリコードジェネレータ124に供給し、フェーズドバイナリコードジェネレータ124は、5ビットのComp Code信号をコードコンカテネータ(Code Concatenator)126に供給する。フェーズドバイナリコードは、辞書がまだ満杯でない間の動作のフェーズ中に辞書一致位置に用いられるビットの数を減らすのに使用される。追加の信号線が、フェーズドバイナリコードの幅を示す。コードコンカテネータ126は、さらに、一致タイプコードジェネレータ120から6ビットのMatch Type Code信号および3ビットのType Width信号を供給され、一致タイプコードジェネレータ120は、ハフマンコーディングされた出力を供給する。コードコンカテネータ126の出力は、Match CodeおよびMatch Typeを含む11ビット信号(最大で、不一致または一致の1ビット、位置の4ビット、タイプの6ビット=11)と、主出力信号code_aの有効ビット数を示す4ビット信号である。
不一致タイプコードジェネレータ118は、検索レジスタ106からのMask Data信号およびCAM Data信号ならびに一致判断ロジック114からの4ビット幅の信号Match Typeを受け取る。Match Type信号は、一致タイプコードジェネレータ120にも供給される。
34ビットのliteral codeに、リテラルと、不一致をコーディングするのに必要な不一致タイプが含まれる。ワーストケースは、34バイトリテラルすなわち、検索レジスタ106からのCAMデータのオリジナルの32ビットと、不一致のタイプを示す2ビットである。不一致のタイプについては、前の表Aを参照されたい。6ビットのliteral widthは、literal_code信号のどの部分が有効であるかを示す。
一致タイプコードジェネレータ120は、4ビットのMatch Type信号を一致判断ロジック114から受け取る。一致タイプコードジェネレータは、この4ビット信号を、前の表一致タイプCに見られる6ビットまでのハフマンコードに変換し、これをType Code信号としてコードコンカテネータ166に供給する。一致タイプコードジェネレータ120は、さらに、3ビット幅のType width信号を生成し、この信号は、Type Code信号の6ビットのうちの何ビットが有効なハフマンコードであるかを示す(ハフマンコードの性質のゆえに、コードコンカテネータ126は、Type CodeからType widthを導出できるが、一致タイプコードジェネレータがこの情報をすぐに供給できるので、この導出は不要である)。
フェーズドバイナリコードジェネレータ124は、バイナリコーディングされたMatch Loc信号をフェーズドバイナリコードに変換する。フェーズドバイナリコードジェネレータの目的は、辞書が満たされつつある間に、最小のビット数を使用して辞書一致位置をエンコードすることである。コードコンカテネータ126は、Match Typeハフマンコードおよび辞書位置フェーズドバイナリコードを、11ビット信号Code_aに変換し、このCode_aが、コードコンカテネータ128に供給される。コードコンカテネータ126は、4ビット幅信号もコードコンカテネータ128に供給し、この信号は、code_aの11ビットのうちのどれが有効であるかを識別する。
さらに、コードコンカテネータ128は、次の信号を供給される。
・不一致タイプコードジェネレータから34ビットのLiteral Code
・不一致タイプコードジェネレータから6ビットのLiteral Width
・不一致タイプコードジェネレータから1ビットのMissフラグ
・コードコンカテネータ126からの11ビットのcode_a
・コードコンカテネータ126からの、code_aの有効幅を示す4ビット信号
コードコンカテネータ(コード連結装置:COde Concatenator)128は、35ビット幅の信号code_bおよびcode_b信号のうちで有効であるビットを示す6ビット幅信号をRLIコーディングレジスタ132に供給し、RLIコーディングレジスタ132は、35ビット幅信号code_cおよびcode_c信号のうちで有効なビットを示す6ビット幅信号をRLIコーディング制御ユニット134に供給する。35ビットが使用されるのは、ワーストケースで、34ビットが不一致タイプコードジェネレータから生成され得、不一致を示すために1ビットを追加しなければならず、35ビット信号が生成されるからである。
コーディング制御ユニット134は、CRLIカウンタ130からRL Detected信号およびCount信号も受け取る。
CRLIカウンタ130は、入データストリーム内の連続を検出する。CAM辞書は、ムーブトゥフロントの基礎で(完全一致について)動作するので、特定のタプルの最初の発生は、そのタプルの辞書エントリを辞書の前に移動させる。これは、タプルが辞書内のエントリと一致する場合、またはタプルが受け取られた時に新しいエントリが形成される場合にあてはまる。入データストリーム内の同一タプルの連続は、辞書位置0での一連の完全一致を発生させ、CLRIカウンタは、その一致の数をカウントする。RLIコーディング制御ユニットは、それ相応に働いて、ランレングスコードとしてデータをエンコードして(適当な時に)、圧縮率のさらなる改善をもたらす。このRLIユニットは、現在の実施形態で、辞書の最上部での一致の繰り返しだけではなく、他の位置での一致の繰り返しにも敏感になるように拡張される。その目的は、複数の辞書位置にまたがる単一の出力の長い単語での効率的なコーディングである。たとえば、単語Internationalは、{Inte}{rnat}{iona}{al_}として、4つの辞書位置に分配される。MTF維持戦略では、単語Internationalがもう一度見つかる場合に、0より大きい同一位置で複数の一致が生成される。拡張RLIコーダは、繰り返される一致の位置および数を示す単一の出力を作る。前の特許出願WO 01/56168に記載されているように、位置0での一致の繰り返しをコーディングするのに、8ビットが使用され、したがって、最大255個を単一のランでコーディングすることができる。この実施形態で導入される拡張は、2ビットだけを使用して、0より大きい位置での一致の繰り返しをコーディングし、したがって、最大5つの繰り返し(2回、3回、4回、または5回の繰り返しをコーディングする4つのコード)を、単一のランでコーディングすることができる。これは、圧縮を改善するために行われる。というのは、単語が、通常は5つの辞書位置を超えては延びないからである。
ランレングスエンコーディングの原理は、周知である。さらなる情報については、前に参照によって組み込まれた、本発明人の国際特許出願第WO 01/56168号を参照されたい。
RLIコーディング制御ユニット134は、35ビット信号code_dおよびcode_d信号のうちで有効なビットを示す6ビット幅信号を、さらなるコードコンカテネータ136に供給し、コードコンカテネータ136は、7ビットのNext Width信号、98ビットのNext Code信号、および1ビットのNext Validをレジスタ138に供給する。レジスタ138は、7ビットのCurrent Width信号および98ビットのNext Code信号を供給する。
この圧縮アルゴリズムの性質が、出力データのレートが変化することを意味するので、出力バッファが設けられる。図示のバッファは、32ビットがデータ処理の共通のバス幅なので、32ビット幅のデータを生成する。もちろん、他のバス幅にすぐに対処することができる。
Current Code信号を構成する98ビットのうちで、最上位64ビットは、1つのバスで、32ビット幅の出力バッファ140および142の対に供給される。出力バッファは、保管または送出のために圧縮データを32ビット幅のデータに分解するために設けられる。出力バッファは、64ビット出力をとり、これを32ビット出力に変換して、32ビット幅出力信号を供給する。
最後に、図3には、Pipeline R0CおよびPipeline R1Cと記された2つの垂直の信号線がある。この実施形態のパイプライン化は、タイミングを改善するだけではなく、RLIコーダに必要な遅延を有するためにも使用される。出力(圧縮)データは、入データにランが含まれるかどうかをRLIコーダが判定するまで遅延させなければならない。そうである場合には、RLIコーダが出力を供給し、そうでない場合には、主コンプレッサ回路が、2圧縮サイクルだけ遅延された出力を供給する。
図5に、上で説明した実施形態の擬似コードリスティングを示すが、このリスティングは、不一致タイプコーダおよびRLIの動作のさらなる説明を与えるものである。
図4に、本発明の実施形態によるデコンプレッサ200のブロック概略図を示す。この図でのデータの流れは、圧縮解除が実行される際に右から左に進む。圧縮解除の機能は、多くの形でコンプレッサの逆であり、コンプレッサの構造および動作から暗示されるが、さらなる説明を続ける。
圧縮データは、32ビットバス202で入力バッファ204および206の対に供給される。これらのバッファは、256×32ビット幅ランダムアクセスメモリ(RAM)として配置される。バッファの長さは、重要でないが、配置は重要である。というのは、64ビットのデータが、動作開始の前に使用可能でなければならず、入圧縮データが一定のレートで到着しない場合であっても、圧縮解除回路が操作すべき十分なデータを有することを保証しなければならないからである。これらのバッファからの出力は、64ビット幅に組み合わされ、コード連結シフトユニット208に供給される。コード連結シフトユニットは、単一ビットのNext_Underflow信号、7ビットのNext_Width信号、および133ビットのNext_Code信号をレジスタ210に供給する。レジスタ210は、これらの信号を1圧縮解除サイクルだけ遅延させ、単一ビットのCurrent_Underflow信号、7ビットのNext_Width信号、および133個のCurrent_Code信号を供給する。
デコード、古いデータのシフトアウト、および新しいデータの連結という動作の最大の並列性を引き出すように設計されたディスアセンブリロジックの動作モードのゆえに、主ループは、133ビット幅である必要がある。これは、設計のクリティカルパスであり、したがって、デコード動作が完了して古いデータがシフトアウトされ、新しいデータ連結されるまで待つことは、好ましくない。
新しいデータ(64ビット)は、速度を改善するために、デコードされたビットの数がわかる前に、デコード動作と並列に連結されなければならない。連結される新しいデータは、現在のデコード動作に使用可能ではない。現在のデコード動作が、最大値の35ビットを消費する場合に、新しいデータが追加される前に次のデコード動作を開始できるように、少なくとも35ビットがループ内に残されなければならない。35+34ビットだけがループ内にある場合に、現在のデコード動作は、35を消費することができ、34だけが次のサイクルに残されるが、これは、正しい動作を保証するのに不十分である。この情況を回避するために、35+34ビットがループ内にある時に、新しいデータを追加し、したがって、35+34+64=133ビットがループ内にあるようにしなければならない。有効なビットの数を示すためには、7ビットだけが必要である。というのは、最上位35個が必ず有効であり、この信号が、最下位98ビットのうちの有効なビット数を示す必要があるからである。
レジスタ210は、メインデコーダ212に35ビットを適用する。これによって、圧縮データ信号が分解されて、現在のコードワードによって何バイトが表されるか、その圧縮前のワードが一致、不一致、またはランレングスコードのどれとして圧縮されたかが判定される。デコーダは、次の信号の少なくとも1つを適当に供給する。
・単一ビットのrun length detected信号
・ランの長さを表す8ビットのCount信号
・4ビットのLocation信号(やはり説明を簡単にするために、16エントリ辞書に関する)
・6ビットのMatch Type信号
・32ビットのLiteral Data信号
・5ビットのmask信号
・単一ビットのFull Hit信号
Run Length detected信号およびランレングスCount信号を除いて、これらのすべてが、めいめいのバスを介してRLIデコーディングレジスタに供給される。このレジスタは、信号を1圧縮解除サイクルだけ遅延させて、ランレングスデコーディング回路と同期化するために設けられる。これは、コンプレッサで使用されるパイプラインに類似する機能を実行する。1圧縮解除サイクルだけ遅延された後に、これらの信号は、無変更でRLIデコーディング制御回路216に供給される。
RLIデコーディング制御ユニットは、デコンプレッサランレングスインターナル(DRLI)カウンタ218にも接続される。RLIデコーディング制御ユニット216は、単一ビットのCount Enable信号をDRLIカウンタに供給し、単一ビットのEnd Count信号をDRLIカウンタから受け取る。DRLIカウンタは、さらに、メインデコーダ212から8ビットのRLI Count信号を与えられる。DRLIカウンタ218およびRLIデコーディング制御ユニット216の両方に、メインデコーダから単一ビットのRL Detected信号が供給される。
RLIデコーディング制御ユニット216は、4ビットのLocation信号および1ビットのFull Hit信号を4対16デコーダ222に供給する。
4対16デコーダは、辞書位置を16個の信号の1つに変換し、16本の信号線が、圧縮解除アウトオブデート適応(DODA)ロジック220およびポインタアレイ226の両方に供給される。DODAロジックは、16ビットのSelect Write信号をムーブ生成ロジック224およびポインタアレイ226に供給する。ムーブ生成ロジック224は、16ビットのMove Control信号を生成し、この信号は、ポインタアレイ226に供給され、DODAロジックにもフィードバックされる。ポインタアレイは、4ビットの信号アドレスwrite_aを生成し、この信号は、同期レジスタ228に供給され、ポインタアレイにフィードバックされる。これが行われるのは、アドレスが辞書の最上部にロードされると同時に、残りが1位置だけ下に移動されなければならないからである。圧縮解除中のポインタアレイ内のアドレスは、圧縮中のCAM内のデータと同一の形で移動する。ポインタアレイは、4ビットのRead Address信号も生成し、この信号は、アドレス同等回路230に供給される。同期レジスタ228も、4ビットの信号アドレスwrite_bをアドレス同等回路230に供給する。アドレス同等回路は、4ビットのWrite Address信号および4ビットの信号アドレスwrite_cをRAMデータ辞書232に供給する。
RAMデータ辞書は、要素220から230によってアドレッシングされ、更新され、その結果、辞書の内容が、圧縮中のCAMの内容と同一になる。この辞書は、コンプレッサで行わなければならない辞書全体の検索ではなく、1つの辞書位置の内容を出力として供給するのに使用されるので、デコンプレッサでCAMを使用する必要はない。RAMが使用され、CAMが使用されないので、辞書のエントリを簡単に移動することはできず、したがって、ポインタシステムを使用して、辞書エントリをアドレッシングする。
RAMデータ辞書は、RAMマスク辞書に関連し、RAMマスク辞書は、RAMデータ辞書と同一の長さであり、4ビット幅である。その目的は、コンプレッサのCAMマスク辞書の目的に類似する。
マルチプレクサ236が、データ辞書またはマスク辞書の出力および一時レジスタ242の出力の間で選択する。一時レジスタが必要なのは、いくつかの情況で、必要なデータがまだRAMに書き込まれていないが、RAMデータバスに存在するからである。このレジスタは、RAMに書き込まれるデータを一時的にラッチするのに使用される。マルチプレクサ236の出力は、出力タプルアセンブラ238に結合され、出力タプルアセンブラ238は、アセンブリングユニット244および出力バッファ246に供給して、非圧縮出力データストリーム248を提供する。
図6に、同一の半導体チップ上の本発明によるコンプレッサおよび本発明によるデコンプレッサのブロック概略図を示す。スペースを節約するために、これらは、辞書を共用することができ、この辞書はCAMになる。辞書が共用される場合には、二重動作は不可能になる。
本発明は、コンピュータシステムおよびネットワーク内の複数の応用例に適用することができる。応用には、下記が含まれる。
・リモートコンピュータの間で転送されるデータの圧縮
・インターネットなどの公衆ネットワークを介して転送されるデータの圧縮
・伝送およびデータウェアハウスでの保管のためのデータの圧縮
・あるタイプの永久的または半永久的記憶システムでのローカルストレージのためのデータの圧縮
本発明は、メモリが高コストなのでデータ量の削減が必要である時、電力消費、重量、もしくは体積が製品実行可能性に重要である時、または帯域幅削減が配線のコスト節約または固定帯域幅でのより高速の伝送を可能にする時に、適用することができる。
従来技術のX−Matchコンプレッサを示すブロック概略図である。 本発明の第1の実施形態によるコンプレッサを示すブロック概略図である。 本発明の第2の実施形態によるコンプレッサの一部を示すブロック概略図である。 本発明の第2の実施形態によるコンプレッサの一部を示すブロック概略図である。 本発明の第2の実施形態によるコンプレッサの一部を示すブロック概略図である。 本発明の実施形態によるデコンプレッサの一部を示すブロック概略図である。 本発明の実施形態によるデコンプレッサの一部を示すブロック概略図である。 本発明の実施形態によるデコンプレッサの一部を示すブロック概略図である。 図3に示されたコンプレッサの擬似コードリスティングを示す図である。 本発明の一実施形態によるコンプレッサおよびデコンプレッサの両方を含む半導体集積回路に関するブロック概略図である。

Claims (27)

  1. 複数のシンボルを含むデジタルデータを圧縮する方法であって、前記デジタルデータを整数個数のシンボルの後でまたはデジタルデータ内の所定のシンボルの発生に応答して終了するタプルに解析するステップと、各タプルを辞書内の複数のエントリと比較するステップと、前記タプルとある辞書位置にある前記エントリとの間の一致に応答して前記タプルを前記辞書位置に置換するステップとを含む方法。
  2. 前記タプルと辞書内にある前記エントリとの間の前記一致が、前記タプル内のシンボルの前記個数より少数の一致を含むことができる、請求項1に記載の方法。
  3. 前記タプルが、前記タプルと同一の個数のシンボルを含む辞書エントリだけと比較される、請求項1に記載の方法。
  4. 前記所定のシンボルが、スペース文字を表す、請求項1から3のいずれか一項に記載の方法。
  5. 前記所定のシンボルの単一の発生を含むタプルが、コードによって置換される、請求項1から4のいずれか一項に記載の方法。
  6. 前記コードが、2ビットのデータを含む、請求項5に記載の方法。
  7. 前記辞書が、デジタルデータの前記タプルに応答して更新される、請求項1から6のいずれか一項に記載の方法。
  8. 入データ内のシンボルの再発するシーケンスが、繰り返す辞書位置を累算することによって圧縮される、請求項1から7のいずれか一項に記載の方法。
  9. 前記デジタルデータを整数個数のシンボルの後だけで終了するタプルに解析するかどうかを判定するステップを含む、請求項1から8のいずれか一項に記載の方法。
  10. 複数のシンボルを含むデジタルデータを圧縮するデジタルデータコンプレッサであって、整数個数のシンボルまたは前記デジタルデータ内の所定のシンボルの発生に応答して、前記デジタルデータをタプルに分割するパーサと、タプルを複数のエントリと比較する辞書と、前記タプルとある辞書位置にある前記エントリの間の一致に応答して前記タプルを前記辞書位置に置換するロジックとを含むデータコンプレッサ。
  11. 前記タプルと前記辞書内にある前記エントリとの間の前記一致が、前記タプル内のシンボルの前記個数より少数の一致を含むことができる、請求項10に記載のコンプレッサ。
  12. 前記辞書が、タプルを、前記タプルと同一個数のシンボルを含む前記エントリと比較するように適合される、請求項10に記載のコンプレッサ。
  13. 前記所定のシンボルが、スペース文字を表す、請求項10、11、または12に記載のコンプレッサ。
  14. 前記所定のシンボルの単一の発生に応答して、そのシンボルをコードに置換するロジックをさらに含む、請求項9から13のいずれか一項に記載のコンプレッサ。
  15. 前記コードが、2ビットのデータを含む、請求項14に記載のコンプレッサ。
  16. デジタルデータの前記タプルに応答して前記辞書を更新するロジックをさらに含む、請求項9から15のいずれか一項に記載のコンプレッサ。
  17. めいめいの辞書位置に応答して、これらのめいめいの辞書位置を累算するために前記入データのシンボルの再現するシーケンスをさらに圧縮するロジックをさらに含む、請求項9から16のいずれか一項に記載のコンプレッサ。
  18. 前記パーサが、前記デジタルデータ内の少なくとも1つのシンボルに応答して、その後、前記デジタルデータ内の前記整数個数のシンボルだけに応答する、請求項10から17のいずれか一項に記載のコンプレッサ。
  19. 前記パーサが、前記デジタルデータが可能なシンボルの組全体の所定のサブセットだけを含むまで、前記整数個数のシンボルだけに応答する、請求項10から17のいずれか一項に記載のコンプレッサ。
  20. 前記所定のサブセットが、ASCII文字の1から127までを含む、請求項19に記載のコンプレッサ。
  21. 複数のシンボルを表すデジタルデータを圧縮解除する方法であって、オリジナルデータのタプルに対応するデジタルデータの量を判定するステップであって、タプルが、整数個数のシンボルの後でまたはオリジナルデータでの所定のシンボルの発生に応答して終了するステップと、辞書一致が発生したことを示すデジタルデータに応答して辞書からシンボルを取り出すステップとを含む方法。
  22. 前記所定のシンボルの単一の発生を表すコードが、前記所定のシンボルによって置換される、請求項21に記載の方法。
  23. 繰り返される辞書位置の累算が、適当な数の辞書エントリによって置換される、請求項21に記載の方法。
  24. 所定のシンボルが存在するが明示的にコーディングされない圧縮されたタプルにさらに応答する、請求項21から23のいずれか一項に記載の方法。
  25. 複数のシンボルを表すデジタルデータを圧縮解除するデコンプレッサであって、オリジナルデータのタプルに対応するデジタルデータの量を判定するロジックであって、タプルが、整数個数のシンボルの後またはオリジナルデータでの所定のシンボルの発生に応答して終了する、ロジックと、及び、辞書一致が発生したことを示すデジタルデータに応答して辞書からシンボルを検索するロジックとを含むデコンプレッサ。
  26. 複数のシンボルを含むデジタルデータを圧縮し、圧縮解除するデジタルデータコンプレッサおよびデジタルデータデコンプレッサを含む半導体集積回路であって、前記コンプレッサが、整数個数のシンボルまたは前記デジタルデータ内の所定のシンボルの発生に応答して前記デジタルデータをタプルに分割するパーサと、タプルを複数のエントリと比較する辞書と、前記タプルとある辞書位置の前記エントリとの間の一致に応答して前記タプルを前記辞書位置に置換するロジックとを含み、前記デコンプレッサが、オリジナルデータのタプルに応答する前記デジタルデータの量を判定するロジックであって、前記タプルが、整数個数のシンボルの後または前記オリジナルデータ内の所定のシンボルの発生に応答して終了する、ロジックと、及び、辞書一致が発生したことを示すデジタルデータに応答して辞書からシンボルを取り出すロジックとを含む、半導体集積回路。
  27. 複数のシンボルを含むオリジナルデジタルデータを再構成するように適合された圧縮データ信号であって、前記オリジナルデジタルデータ内の整数個数のシンボルにそれぞれが対応する複数の離散セクションであって、前記圧縮データ信号の各離散セクションが、前記対応するシンボルが辞書エントリに一致したかどうかの表示を含む、複数の離散セクションと、前記離散セクションによって表されるシンボルの数の表示と、前記辞書に存在しないシンボルとを含む圧縮データ信号。
JP2004523991A 2002-07-31 2003-07-31 ロスレスデータ圧縮 Pending JP2005535175A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/208,006 US20040022312A1 (en) 2002-07-31 2002-07-31 Lossless data compression
PCT/GB2003/003340 WO2004012338A2 (en) 2002-07-31 2003-07-31 Lossless data compression

Publications (1)

Publication Number Publication Date
JP2005535175A true JP2005535175A (ja) 2005-11-17

Family

ID=31186753

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004523991A Pending JP2005535175A (ja) 2002-07-31 2003-07-31 ロスレスデータ圧縮

Country Status (5)

Country Link
US (1) US20040022312A1 (ja)
JP (1) JP2005535175A (ja)
AU (1) AU2003252956A1 (ja)
TW (1) TW200412733A (ja)
WO (1) WO2004012338A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010268146A (ja) * 2009-05-13 2010-11-25 Internatl Business Mach Corp <Ibm> データが記憶された位置を選択する装置及び方法
WO2014106782A1 (en) * 2013-01-03 2014-07-10 International Business Machines Corporation High bandwidth compression to encoded data streams
JP2014236449A (ja) * 2013-06-04 2014-12-15 国立大学法人 筑波大学 データ圧縮器及びデータ解凍器
JP2019208203A (ja) * 2018-05-11 2019-12-05 インテル・コーポレーション 浮動小数点データを圧縮するためのシステム

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101503829B1 (ko) 2007-09-07 2015-03-18 삼성전자주식회사 데이터 압축 장치 및 방법
KR101454167B1 (ko) * 2007-09-07 2014-10-27 삼성전자주식회사 데이터 압축 및 복원 장치 및 방법
US8447740B1 (en) 2008-11-14 2013-05-21 Emc Corporation Stream locality delta compression
US8849772B1 (en) 2008-11-14 2014-09-30 Emc Corporation Data replication with delta compression
US8751462B2 (en) * 2008-11-14 2014-06-10 Emc Corporation Delta compression after identity deduplication
US9298722B2 (en) * 2009-07-16 2016-03-29 Novell, Inc. Optimal sequential (de)compression of digital data
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
TWI466453B (zh) * 2010-10-29 2014-12-21 Yung Chao Chih Digital data compression / decompression method and its system
DE112011104633B4 (de) 2010-12-28 2016-11-10 International Business Machines Corporation Einheit zum Ermitteln des Ausgangspunkts für eine Suche
US9043676B2 (en) 2010-12-28 2015-05-26 International Business Machines Corporation Parity error recovery method for string search CAM
US9519801B2 (en) * 2012-12-19 2016-12-13 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing data masking via compression dictionaries
US9426197B2 (en) 2013-04-22 2016-08-23 International Business Machines Corporation Compile-time tuple attribute compression
US9325758B2 (en) 2013-04-22 2016-04-26 International Business Machines Corporation Runtime tuple attribute compression
US10509580B2 (en) * 2016-04-01 2019-12-17 Intel Corporation Memory controller and methods for memory compression utilizing a hardware compression engine and a dictionary to indicate a zero value, full match, partial match, or no match
KR102185668B1 (ko) * 2019-01-30 2020-12-02 스노우 주식회사 이미지 파일의 픽셀 변환을 통한 압축율 향상 방법 및 시스템
KR102152346B1 (ko) 2019-01-30 2020-09-04 스노우 주식회사 이미지 파일의 블록 간 차이를 통한 압축율 향상 방법 및 시스템
US11875850B2 (en) * 2022-04-27 2024-01-16 Macronix International Co., Ltd. Content addressable memory device, content addressable memory cell and method for data searching with a range or single-bit data

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5467087A (en) * 1992-12-18 1995-11-14 Apple Computer, Inc. High speed lossless data compression system
US5414650A (en) * 1993-03-24 1995-05-09 Compression Research Group, Inc. Parsing information onto packets using context-insensitive parsing rules based on packet characteristics
US6442523B1 (en) * 1994-07-22 2002-08-27 Steven H. Siegel Method for the auditory navigation of text
US6470349B1 (en) * 1999-03-11 2002-10-22 Browz, Inc. Server-side scripting language and programming tool
US6964009B2 (en) * 1999-10-21 2005-11-08 Automated Media Processing Solutions, Inc. Automated media delivery system
GB0001707D0 (en) * 2000-01-25 2000-03-15 Btg Int Ltd Data compression having more effective compression
US20020087702A1 (en) * 2000-12-29 2002-07-04 Koichi Mori Remote contents displaying method with adaptive remote font
US7089567B2 (en) * 2001-04-09 2006-08-08 International Business Machines Corporation Efficient RPC mechanism using XML

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010268146A (ja) * 2009-05-13 2010-11-25 Internatl Business Mach Corp <Ibm> データが記憶された位置を選択する装置及び方法
US8677079B2 (en) 2009-05-13 2014-03-18 International Business Machines Corporation Selecting a position where data is stored
WO2014106782A1 (en) * 2013-01-03 2014-07-10 International Business Machines Corporation High bandwidth compression to encoded data streams
GB2521082A (en) * 2013-01-03 2015-06-10 Ibm High bandwidth compression to encoded data streams
JP2016506197A (ja) * 2013-01-03 2016-02-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品
JP2014236449A (ja) * 2013-06-04 2014-12-15 国立大学法人 筑波大学 データ圧縮器及びデータ解凍器
JP2019208203A (ja) * 2018-05-11 2019-12-05 インテル・コーポレーション 浮動小数点データを圧縮するためのシステム
JP7351060B2 (ja) 2018-05-11 2023-09-27 インテル・コーポレーション 浮動小数点データを圧縮するためのシステム

Also Published As

Publication number Publication date
AU2003252956A1 (en) 2004-02-16
US20040022312A1 (en) 2004-02-05
WO2004012338A3 (en) 2004-03-18
WO2004012338A2 (en) 2004-02-05
TW200412733A (en) 2004-07-16
AU2003252956A8 (en) 2004-02-16

Similar Documents

Publication Publication Date Title
JP2005535175A (ja) ロスレスデータ圧縮
US9680500B2 (en) Staged data compression, including block level long range compression, for data streams in a communications system
JP3009727B2 (ja) 改良形データ圧縮装置
US7538695B2 (en) System and method for deflate processing within a compression engine
US5729228A (en) Parallel compression and decompression using a cooperative dictionary
US8988257B2 (en) Data compression utilizing variable and limited length codes
US9203887B2 (en) Bitstream processing using coalesced buffers and delayed matching and enhanced memory writes
US20040111427A1 (en) System and method for data compression and decompression
US6667699B2 (en) Data compression having more effective compression
US6310563B1 (en) Method and apparatus for enhanced decompressor parsing
US5877711A (en) Method and apparatus for performing adaptive data compression
Kim et al. Data dependency reduction for high-performance FPGA implementation of DEFLATE compression algorithm
Lin A hardware architecture for the LZW compression and decompression algorithms based on parallel dictionaries
US7930435B2 (en) Hub and spoke compression
JPH05134847A (ja) データ圧縮方法
Bharathi et al. A plain-text incremental compression (pic) technique with fast lookup ability
Nunez‐Yanez et al. Gigabyte per second streaming lossless data compression hardware based on a configurable variable-geometry CAM dictionary
Klein et al. Parallel Lempel Ziv Coding
Pasumarthi et al. EHTC: An Enhanced Huffman Tree Coding Algorithm and its FPGA Implementation
Rani et al. An Enhanced Text Compression System Based on ASCII Values and Huffman Coding
Shravana et al. Review on lossless data compression using x-matchpro algorithm
Nadarajan et al. Analysis of string matching compression algorithms
JP3100206B2 (ja) データ圧縮方法
Suneetha et al. Design of Test Data Compressor/Decompressor Using Xmatchpro Method
Salomon et al. Dictionary methods