JP2007037115A - デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法 - Google Patents

デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法 Download PDF

Info

Publication number
JP2007037115A
JP2007037115A JP2006189358A JP2006189358A JP2007037115A JP 2007037115 A JP2007037115 A JP 2007037115A JP 2006189358 A JP2006189358 A JP 2006189358A JP 2006189358 A JP2006189358 A JP 2006189358A JP 2007037115 A JP2007037115 A JP 2007037115A
Authority
JP
Japan
Prior art keywords
match
data
encoding
offset
segment
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
JP2006189358A
Other languages
English (en)
Other versions
JP2007037115A5 (ja
Inventor
Galen G Kerber
ガレン・ジー・カーバー
Jeffrey A Riley
ジェフリー・アラン・ライリー
Bijan Eskandari-Gharnin
ビジャン・エスカンダリ−ガルニン
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.)
Quantum Corp
Original Assignee
Quantum Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Quantum Corp filed Critical Quantum Corp
Publication of JP2007037115A publication Critical patent/JP2007037115A/ja
Publication of JP2007037115A5 publication Critical patent/JP2007037115A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method

Landscapes

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

Abstract

【課題】入力データのシーケンスをコード化データのシーケンスに符号化するための方法および装置を提供する。
【解決手段】コード化データは、リテラルデータとして、最近の入力データへの単一文字参照として、および1つ以上の過去の入力データへの参照として表わされる。参照は長さが固定される場合もあれば、長さが可変である場合もある。参照は、一致オフセットの表示および/または一致長の表示を含み得る。
【選択図】図12

Description

関連出願の相互参照
この出願は、2005年6月3日に出願された特許出願連続番号第11/144,253号の一部継続出願であり、その開示は引用によって全文が本明細書に援用される。
発明の背景
1.発明の分野
この発明は概して、高速データ圧縮ならびに高速データ圧縮装置およびシステムに関する。
2.関連技術の説明
データ格納の前に、未加工データは、記憶媒体をより効率的に使用するためにより少ない数のビットに符号化され得る。検索の際、符号化データは元の未加工データをもたらすために復号され得る。同様に、データ伝送の前に、未加工データは、伝送チャネルをより効率的に使用するために圧縮され得る。受取の際、圧縮されたデータは復号プロセスを用いて伸張され得る。
いくつかの圧縮技術が開発されてきた。圧縮技術の中には損失のない圧縮アルゴリズムを使用するものもあれば、損失の大きい圧縮アルゴリズムを使用するものもある。格納または伝送中にエラーが発生しなかった場合、損失のない圧縮−伸張スキームは元のデータをもたらすが、損失の大きいスキームは元のデータに似ているが必ずしも同一ではないデータをもたらす可能性がある。圧縮技術の中にはデータを固定長セグメントに符号化するものもあれば、データを可変長セグメントに符号化するものもある。圧縮技術の中にはハッシュ法の使用を伴うものもあり、これはマッチングストリングを見付けるために読取られ、比較される必要のある位置の数を最小限にする。圧縮技術の中には同報通信機能を有するシフトレジスタの使用を伴うものもあり、入力文字は単一サイクルの中でシフトレジスタにおけるあらゆる位置と比較される。圧縮技術の中にはコンテントアドレッサブルメモリ(Content-Addressable memory)(CAM)の使用を伴うものもあり、これは単一サイクルの中でメモリにおけるあらゆる位置と入力文字を比較する。
発明の簡単な概要
入力データのシーケンスをコード化データのシーケンスに符号化するための方法および装置であって、コード化データは、リテラルデータとして、最近の入力データへの単一文字参照として、および1つ以上の過去の入力データへの参照として表わされる。参照は長さが固定される場合もあれば、長さが可変である場合もある。参照は、一致オフセットの表示および/または一致長の表示を含み得る。
この発明のいくつかの実施例は、デジタルデータを符号化する方法を提供し、上記方法は、データの現在の1つ以上のセグメントと、データの対応する1つ以上の過去のセグメントとの間の一致を検索することと、一致が存在しない場合にデータの現在のセグメント
をリテラルとしてコード化することと、一致が存在し、一致長が1よりも大きい場合に一致を参照としてコード化することと、一致が存在し、一致長が1である場合に、一致オフセットが閾値未満であるかどうかを判断することと、一致オフセットが閾値未満である場合に一致を単一文字参照としてコード化することと、一致オフセットが閾値よりも大きい場合に一致をリテラルとしてコード化することとを含む。
この発明のいくつかの実施例は、データセグメントのストリームを符号化する方法を提供し、上記方法は、データのセグメントをデータセグメントのストリームからロードすることと、データのセグメントがデータの過去のセグメントと一致するかどうかを判断することと、データのセグメントが過去のデータと一致しない場合に、待ち状態の一致が存在するかどうかを判断することと、待ち状態の一致が存在し、一致オフセットが閾値未満である場合に待ち状態の一致を単一文字一致として符号化することと、待ち状態の一致が存在し、一致オフセットが閾値よりも大きい場合に待ち状態の一致をリテラルとして符号化することと、データのセグメントをリテラルデータとして符号化することと、データのセグメントが過去のデータと一致する場合に、継続一致が存在する場合に一致長をインクリメントすることと、待ち状態の一致が存在し、継続一致が存在せず、一致オフセットが閾値未満である場合に待ち状態の一致を単一文字一致として符号化することと、待ち状態の一致が存在し、継続一致が存在せず、一致オフセットが閾値よりも大きい場合に待ち状態の一致をリテラルとして符号化することとを含む。
この発明のいくつかの実施例はエンコーダを提供し、エンコーダは符号化論理を含み、符号化論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、上記エンコーダは、さらに、符号化論理に結合されるストリングマッチング論理を含み、ストリングマッチング論理は、過去のデータセグメントの繰返される出現の位置を識別するように動作可能な位置付メモリと、位置付メモリに結合されるマッチレジスタとを含む。
この発明のいくつかの実施例はデータのソースを符号化するためのパラレルエンコーダを提供し、パラレルエンコーダは複数のシリアルエンコーダを含み、各々のシリアルエンコーダは入力および出力を有する符号化論理を含み、符号化論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、上記シリアルエンコーダは、さらに、符号化論理に結合されるストリングマッチング論理を含み、ストリングマッチング論理は、過去のデータセグメントを保持するように動作可能な履歴バッファと、過去のデータセグメントの繰返される出現の位置を識別するように動作可能な位置付メモリと、位置付メモリに結合されるマッチレジスタとを含み、上記パラレルエンコーダは、さらに、ヘッド制御を含み、ヘッド制御はデータのソースに結合される入力と複数の出力とを含み、各々の出力は複数のシリアルエンコーダのうちの対応する1つの入力に結合され、上記パラレルエンコーダは、さらに、末尾制御を含み、末尾制御は複数の入力を含み、各々の入力は複数のシリアルエンコーダのうちの対応する1つの出力に結合され、上記末尾制御は、さらに、コード化データストリームを与える出力を含む。
この発明のいくつかの実施例は符号化データのソースを復号するためのパラレルデコーダを提供し、パラレルデコーダは複数のシリアルデコーダを含み、各々のシリアルデコーダは復号論理を含み、復号論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、上記シリアルデコーダは、さらに、復号されたデータセグメントを保持するように動作可能な履歴バッファを含み、上記パラレルデコーダは、さらに、ヘッド制御を含み、ヘッド制御は符号化データのソースに結合される入力と複数の出力とを含み、各々の出力は複数のシリアルデコーダのうちの対応する1つの入力に結合され、上記パラレルデコーダは、さらに、末尾制御を含み、末尾制御は複数の入力を含み、各々の入力は複数のシリアルデコーダのうちの対応する1つの出力に結合され、
上記末尾制御は、さらに、復号されたデータストリームを与える出力を含む。
この発明のいくつかの実施例はコード化データを復号する方法を提供し、上記方法は、コード化データの始めを判断することと、コード化データがリテラルデータを含むかまたは符号化表現を含むかを示すフラグを読取ることと、フラグがリテラルデータを示す場合にデータのリテラル長を抽出し、それによって復号されたデータのセグメントを形成することと、フラグが符号化表現を示す場合に、符号化表現が単一文字一致オフセットを含むかまたは長い長さの一致オフセットを含むかを示す符号化タイプフラグを読取ることと、符号化タイプフラグが単一文字一致オフセットを示す場合に、単一文字一致オフセットを判断することと、単一文字一致オフセットに対応する、履歴バッファからの値を判断し、それによって復号されたデータのセグメントを形成することと、符号化タイプフラグが長い長さの一致オフセットを示す場合に、長い長さの一致オフセットを判断することと、一致長を判断することと、長い長さの一致オフセットおよび一致長に対応する、履歴バッファからの1つ以上の値を読取り、それによって復号されたデータの対応する1つ以上のセグメントを形成することとを含む。
この発明のいくつかの実施例は磁気テープドライブを提供し、磁気テープドライブはエンコーダを含み、エンコーダは符号化論理を含み、符号化論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、上記エンコーダは、さらに、符号化論理に結合されるストリングマッチング論理を含み、ストリングマッチング論理は過去のデータセグメントの繰返される出現の位置を識別するように動作可能な位置付メモリと、位置付メモリに結合されるマッチレジスタとを含み、上記磁気テープドライブは、さらに、デコーダを含み、デコーダは復号論理を含み、復号論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、上記デコーダは、さらに、復号されたデータセグメントを保持するように動作可能な履歴バッファを含む。
この発明のいくつかの実施例はデータのストリームを符号化する方法を提供し、上記方法は、データのストリームのセグメントを符号化するために3つのフォーマットからフォーマットを選択することを含み、第1のフォーマットはセグメントを含むリテラルとしてセグメントを表わし、第2のフォーマットは以前のセグメントとの単一文字一致までのオフセットを含む参照としてセグメントを表わし、以前のセグメントは閾値オフセット内であるように判断され、第3のフォーマットは一致オフセットの表示および一致長の表示を含む参照としてセグメントを表わす。
この発明のいくつかの実施例はデータのストリームを符号化する方法を提供し、上記方法は、データのストリームのセグメントを符号化するために4つのフォーマットからフォーマットを選択することを含み、第1のフォーマットはセグメントを含むリテラルとしてセグメントを表わし、第2のフォーマットは以前のセグメントとの単一文字一致までのオフセットを含む参照としてセグメントを表わし、以前のセグメントは閾値オフセット内であるように判断され、第3のフォーマットは以前のセグメントとの倍長文字一致までのオフセットを含む参照としてセグメントを表わし、第4のフォーマットは一致オフセットの表示および一致長の表示を含む参照としてセグメントを表わす。
この発明の他の特徴および局面は、この発明の実施例に従う特徴を例証として示す添付の図面に関連して取入れられる際に、以下の詳細な説明から明らかになる。概要はこの発明の範囲を制限するように意図されるものではなく、この発明の範囲は特許請求の範囲によってのみ規定される。
発明の詳細な説明
以下の説明では、この発明のいくつかの実施例を示す添付の図面を参照する。この開示の精神および範囲から逸脱することなく他の実施例が利用されることができ、機械的、組成的、構造的、電気的および動作の変更がなされ得ることが理解される。以下の詳細な説明は限定的な意味で取られるべきではなく、この発明の実施例の範囲は発行された特許の特許請求の範囲によってのみ規定される。
詳細な説明のいくつかの部分は、手順、ステップ、論理ブロック、処理およびコンピュータメモリで実行され得る、データビットでの動作の他の象徴的な表現に関して提示される。手順、コンピュータが実行するステップ、論理ブロック、プロセスなどは本明細書では、所望の結果に繋がるステップまたは命令の自己矛盾のないシーケンスであるように考えられる。ステップは物理的な量の物理的な操作を利用するものである。これらの量は、コンピュータシステムにおいて格納され、転送され、組合せられ、比較され、その他の場合には操作されることができる電気信号、磁気信号、または無線信号の形を取り得る。これらの信号は、時には、ビット、値、素子、記号、文字、語、数などと称されてもよい。各々のステップは、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組合せによって実行されてもよい。
図1は、この発明の実施例に従うエンコーダ/デコーダシステムを示す。エンコーダ/デコーダシステムは、ソースデータのストリーム10をコード化データのストリーム20に変換するためにエンコーダ101を使用する。コード化データストリーム20は記憶装置102に書込まれ得る。記憶装置102はハードディスクドライブまたは磁気テープなどの磁気記憶媒体を含んでもよい。代替的には、コード化データのストリーム20はデータチャネルを介して受信機に伝送されてもよい。コード化データのストリーム20Aは、ソースデータの再構築されたストリーム10Aを生成するために、記憶装置102から読取られ、デコーダ103によって復号され得る。エンコーダ/デコーダシステムは、高速圧縮を必要とするデータ、たとえば、テープドライブで使用する磁気テープ、ハードディスクドライブの磁気媒体、または光学ディスクドライブを使用する光学ディスクなどの記憶装置へ格納されるデータで、高速データ圧縮のために使用されてもよい。
図2は、この発明の実施例に従うシリアルエンコーダ200を示す。エンコーダ101の符号化プロセスは、符号化論理201およびストリングマッチング論理202を含むシリアルエンコーダ200によって実行されてもよい。ストリングマッチング論理202は、ソースデータのストリーム10を受入れ、ソースデータの1つ以上の最近のセグメントがソースデータの対応する数の過去のセグメントと一致するかどうかを判断する。
ストリングマッチング論理202は、一致オフセット203のシーケンスを生成し得る。一致オフセットは、ソースデータの以前のマッチングシーケンスが発見され得る、ソースデータの現在のシーケンスから隔たったセグメントの数を表す。
ストリングマッチング論理202は、さらに、一致長204の対応するシーケンスを生成し得る。一致長は一致の際のセグメントの数を示す。いくつかの実施例に従って、1という一致長は単一文字一致が検出されることを意味する。他の実施例に従って、0という一致長は単一文字一致が検出されることを意味する。
ストリングマッチング論理202は、さらに、ソースデータストリーム10の現在の部分とソースデータストリーム10の以前の部分との間に一致が存在するか、または一致が存在しないかを示す制御信号205を生成してもよい。一致が存在する場合、符号化論理201は一致オフセットおよび一致長に関して一致を符号化し得る。一致が存在しない場合、符号化論理201はソースデータストリーム10の現在のセグメントをリテラルデー
タとして符号化することになる。
図3は、この発明の実施例に従うパラレルエンコーダ300を示す。パラレルエンコーダ300は、複数の圧縮エンジンまたはシリアルエンコーダ200を含み、個々のシリアルエンコーダ200−1から200−n全体で符号化の作業を自動的に分散させ、それによって全体的な性能を高める。
エンコーダ101の符号化プロセスは、ヘッド制御301、複数のシリアルエンコーダ200−1から200−n、および末尾制御302を含むパラレルエンコーダ300によって実行されてもよい。ヘッド制御301はソースデータのストリーム10を受入れる入力を有する。ヘッド制御301はソースデータのストリーム10を複数のサブストリームに分割する。サブストリームの各々はソースデータのストリーム10のオーバーラップしない部分を表わし、それぞれのシリアルエンコーダ200−1から200−nに与えられる。シリアルエンコーダ200−1から200−nの各々はコード化データサブストリームを生成し、コード化データサブストリームは末尾制御302に与えられる。末尾制御302は、コード化データのストリーム20を生成するために、コード化データサブストリームを多重化する。
パラレルエンコーダ300のヘッド制御301は入力データをデータのブロックに分割またはフォーマットしてもよく、データの各々のブロックは他のすべてのブロックから独立して圧縮される。ヘッド制御301は、さらに、各々のブロックが符号化のためにどのシリアルエンコーダに送られるかを選択してもよい。各々のブロックは異なるシリアルエンコーダにルーティングされてもよい。ヘッド制御301は、データの所与のブロックのためにどのシリアルエンコーダが使用されるべきであるかを判断するためのいくつかの異なるアルゴリズム、たとえばラウンドロビンおよび最も空いているノードスキームを使用してもよい。各々のシリアルエンコーダ300−1から300−nは、入力データをステージするためにその独自のヘッドFIFOを有してもよい。各々のシリアルエンコーダ300−1から300−nは、さらに、圧縮されたデータストリームが装置に出力されるときに、圧縮されたセグメントの組立順序が確実に維持されるのを助けるようにその独自の末尾FIFOを有してもよい。ヘッド制御301は、任意のヘッドFIFOまたは末尾FIFOを含むシリアルエンコーダ300−1から300−nを通されるデータの各々のブロック上にあるセグメント制御フィールドを変更されないまま維持してもよい。セグメント制御フィールドは、シリアルエンコーダからのいずれの圧縮されたデータストリームの前にも、末尾FIFOに書込まれてもよい。セグメント制御フィールドは、シーケンシャル番号付または主なCRCの使用を含むいくつかの異なるフォーマットを有してもよい。ヘッド制御301は、渡されるデータレコードサイズを使用してもよく、符号化データのブロック内のどこに第1のデータレコードが位置するかを判断するために復号中に使用され得る第1のレコードポインタを生成してもよい。
パラレルエンコーダの末尾制御302は、各々のシリアルエンコーダ300−1から300−nの末尾FIFOを監視してもよい。末尾制御302は、各々のシリアルエンコーダの末尾FIFOに存在するセグメント制御フィールドを調べることによって、どのシリアルエンコーダが次のシーケンシャルセグメントを含むかを判断し得る。末尾制御302は、データの対応するブロックがシリアルエンコーダ300−1から300−nに入ったのと同じ順序で、符号化データのブロックが送出されることを確実にすることができる。末尾制御302は、コード化データのストリームとしてデータを出力する前に、符号化データのブロックからセグメント制御フィールドを取除いてもよい。
図4は、この発明の実施例に従うストリングマッチ論理202を示す。ストリングマッチング論理202は、履歴バッファ400、位置付メモリ500、およびマッチレジスタ
600を含む。履歴バッファ400は、ソースデータのストリーム10の少なくとも一部を保持する。ストリングマッチング論理202は、データの新しいセグメントがソースデータのストリーム10から受取られるときにデータの新しいセグメントを書込む。履歴バッファ400は、RAMなどのメモリまたはハードディスクドライブなどの記憶装置に形成されてもよい。ストリングマッチング論理202は、データの新しいセグメントを履歴バッファ400に書込む。
履歴バッファ400は、一旦いっぱいになると、新しいデータが古いデータに上書きされる循環バッファとして機能し得る。代替的には、ストリングマッチング論理202は、履歴バッファ400がいっぱいになった後に履歴バッファ400をリセットしてもよい。履歴バッファ400をリセットすることによって、ストリングマッチング論理202は効果的に初期状態にリセットし、それによって、符号化と復号化との間に導入されるエラーの永続化を制限する。
位置付メモリ500はビットマップメモリと考えられてもよい。メモリの深さは、データの入力セグメントの可能な値の数に少なくとも等しい。位置付メモリ500のビット幅は、履歴バッファ400に保持される値の最大数に等しくてもよい。ストリングマッチング論理202は、ビット単位で、位置付メモリ500で機能し得る。
マッチレジスタ600は一致オフセットを判断するために使用され得る。マッチレジスタ600のビット幅も、履歴バッファ400に保持され得る値の数に少なくとも等しい。ストリングマッチング論理202は、ビット単位で、マッチレジスタ600でも機能し得る。
図5は、この発明の実施例に従う、履歴バッファ400と位置付メモリ500との間の関係を示す。示される履歴バッファ400は、2048個のデータのセグメントのための位置を含む。各々のセグメントは1つが8ビットのバイトであるように示される。データの新しいバイトが受取られるとき、ストリングマッチング論理202は新しいバイトを次の利用可能な位置700に置く。
位置付メモリ500は256個のアドレス指定可能な記憶場所を含み、受取られる新しいバイトの各々の可能な値ごとに1つのアドレスが存在する。各々の記憶場所は、履歴バッファ400におけるユニークな値および位置に対応するユニークなビットを含む。示される例では、位置付メモリ500は2048ビット幅である。これは位置付メモリ500が疎らに存在することになることを意味し、各々のビット位置は、ビットが1にセットされる唯一のアドレスを有することになる。有利に、0x55(10進数で85)という値を有する履歴バッファ400での位置を見付けるために、ストリングマッチング論理202は位置付メモリ500においてアドレス85とだけ読取ることが必要であり、0x55を有する履歴バッファ400での位置に対応する、アドレス指定された記憶場所の中のすべての位置は、1にセットされるビットを有することになる。
履歴バッファ400は、アドレス0から5において6バイトのデータで満たされるように示される。直近に受取られたバイトは、16進数で0x55すなわち10進数で85と表わされ、現在の位置700と表示される位置に置かれる。この例では、現在の位置700はアドレス5である。アドレス6からアドレス2047におけるメモリの終わりまでの空白の位置は0で満たされるように示される。
履歴バッファ400におけるバイトの値および位置の各々の組合せは、位置付メモリ500におけるビット位置に対応する。たとえば、履歴バッファ400は、アドレス0において、16進数の値0x51すなわち10進数の値81を含む。ビット位置0の中のアド
レス81における位置付メモリ500は、アドレス0において値81を有する履歴バッファ400に対応するのだが、このような位置付メモリ500で、ビットは1にセットされる。位置付メモリ500のその列(ビット位置0)にある他のすべてのビットは、ビットを0にリセットさせる。
同様に、履歴バッファ400は、アドレス5において、16進数の値0x55すなわち10進数の値85を含む。ビット位置5の中のアドレス85における位置付メモリ500は、アドレス5において値85を有する履歴バッファ400に対応するのだが、このような位置付メモリ500で、ビットは1にセットされる。位置付メモリ500のその列にある他のすべてのビットは、ビットを0にリセットさせる。
履歴バッファ400に置かれる各々の新しいバイトごとに、対応するビットが位置付メモリ500においてセットされる。結果として生じる位置付メモリ500は、いずれか1つの値が履歴バッファ400の中のどこに位置するかをすばやく判断するために使用されてもよい。たとえば、0x55という16進数の値すなわち85という10進数の値が履歴バッファ400の中のどこに位置するかを判断するために、ストリングマッチング論理200は位置付メモリ500のアドレス85にアクセスしてもよい。アドレス85を有するメモリにおいて1にセットされる各々のビットは、10進数の値85を含む履歴バッファ400での位置を表わす。
図6Aおよび図6Bは、履歴バッファ400および位置付メモリ500をデータの新しいセグメントで更新するプロセスを示す。受取られる新しいバイトのために、ストリングマッチング論理202は最初に、以前にセットされたビットをリセットすることによって、新しいバイトのために位置付メモリ500を準備する。
図6Aでは、次の新しいバイトが位置700に書込まれることになり、位置700は履歴バッファ400においてアドレス7を示す。履歴バッファ400における現在の値が読取られ、読取られた値および位置700に対応する位置付メモリ500の中のビットがリセットされる。今回の場合、値0x00がアドレス7において履歴バッファ400から読取られる。ストリングマッチング論理202は位置付メモリ500における位置0にアクセスし、位置0は読取られた値0x00に対応する。履歴バッファ400におけるアドレス7に対応するビット位置7で、以前に1にセットされたビットは0にリセットされる。
図6Bでは、位置付メモリ500におけるアドレス0のビット位置7は0にリセットされている。0x51(10進数で81)という値を有する新しいバイト10が、履歴バッファ400の位置700に書込まれる。履歴バッファ400においてアドレス7における値81に対応するアドレス81のビット位置7は、1にセットされる。位置付メモリ500のアドレス81における値は、履歴バッファ400において2つの位置、つまりビット位置0のセットビットに対応するアドレス0、および位置7のセットビットに対応するアドレス7に、値0x51が位置することを示す。
特定の値を有する新しいバイト10が到着するとき、ストリングマッチング論理202は、位置付メモリ500における対応するアドレスを調べることによって、その特定の値がいつ最後に受取られたかを判断してもよい。示される例では、0x51という値は7バイト前に受取られた。したがって、エンコーダは、7位置前に受取られたバイトへの参照として新しいバイト10をコード化してもよい。つまり、エンコーダは、0x51というリテラル値ではなく7という一致オフセットを符号化してもよい。
図7は、この発明の実施例に従うマッチレジスタ600の使用を示す。マッチレジスタ600は、一致が存在するかどうかおよびその一致までのオフセットを判断するために使
用され得る。マッチレジスタ600は0に初期化されてもよい。以下に記載されるように、処理後、マッチレジスタ600は0ではない値を有してもよい。マッチレジスタ600における0ではない値は、以前の1つ以上の文字との一致が検出されたことを示す。示される例では、現在の位置700はビット7にあり、これはアドレス7において履歴バッファ400の中に置かれる新しいバイトに対応する。現在の位置700から、最も近いセットビット701までのビットの数は一致オフセットを示す。ここでは、現在の位置700からビット位置0にある第1のセットビット700までに7ビット存在する。したがって、一致が存在し、一致オフセットは7である。
図8および図9A〜図9Bは、この発明の実施例に従う、マッチレジスタおよび位置付メモリのハードウェアの実現例を示す。図8は、マッチレジスタ600において値を更新するために使用され得るハードウェアを示す。図9Aおよび図9Bは、受信データのシーケンスならびに一致オフセットおよび一致長の結果として生じる対の例を示す。
マッチレジスタ600は、新しいバイトが受取られるたびにハードウェアによって繰返し更新される。結果として生じるマッチレジスタ(次のマッチレジスタ607)は、最初のマッチレジスタ(以前のマッチレジスタ601)として次の繰返しの間使用される。最初に、マッチレジスタ(以前のマッチレジスタ601)は0に初期化される。
概して、ハードウェアは、マッチレジスタ601のシフトされたバージョンと、受取られたバイトによって索引付けされる位置付メモリ500における値501との間で論理ビットのようなANDを実行する。マルチプレクサ604は、後続の計算で使用されるようにマッチレジスタ(次のマッチレジスタ607)を更新するために2つの値のうちのどちらが使用されることになるかを選択するために使用される。
具体的には、以前のマッチレジスタの値601(たとえば、2048ビットを有する)は1ビットだけシフトされ602、論理ANDゲート603の組への入力の第1の組に与えられる。シフト動作602は、マッチレジスタ601のビット0、1、2...を、論理ANDゲート603のビット1、2、3...におけるそれぞれの入力に接続することによって実行され得る。シフト動作602はバレルシフトであってもよく、それによってマッチレジスタ601の最後のビットが論理ANDゲート603のビット0に接続されることになる。論理ANDゲート603への入力の第2の組は、受取られた新しいバイトの値によって索引付けされる、位置付メモリ500からの値501によって与えられる。
マルチプレクサ604(すなわちスイッチの組)は2つの値のための入力を有する。第1の値は、新しいバイトによって索引付けされる、位置付メモリ500からの値501によって与えられる。第2の値は、論理AND演算603の出力によって与えられる。論理AND演算603の出力は、さらに、論理OR演算605に与えられる。論理OR演算605は、論理AND603からのすべてのビットが0である場合に0に等しく、論理AND603からの1つ以上のビットのいずれかが1である場合に1に等しい出力(一致継続606)を有する。一致継続ビット606はマルチプレクサ604への選択ビットとして使用される。一致継続ビット606が0である場合、次のマッチレジスタ607は値501でクロック制御される。一致継続ビット606が1である場合、次のマッチレジスタ607は論理AND演算603からの値でクロック制御される。
図9Aは、「ABACBACAD」というバイトの入力シーケンスのための、図8のハードウェアから結果として生じる値を示す。
第1の繰返しのために、新しいバイト「A」が受取られる。任意のデータが到着する前に、マッチレジスタ601は0に初期化される(前回のマッチレジスタMR=「0000
0000」)。MR601はシフトされ(「0000 0000」)、論理ANDゲート603への入力の第1の組に与えられる。位置付メモリ500は、新しいバイト「A」によって索引付けされ、値501(「0000 0000」)をもたらし、値501は論理ANDゲート603への入力の第2の組に与えられる。論理AND演算603は「0000 0000」という結果になり、これは論理ORゲート605およびマルチプレクサ604への入力の第1の組に与えられる。論理OR演算605は、0という一致継続ビット606をもたらす。したがって、次のマッチレジスタ607は値501をロードされる。値501が0であり、一致カウントが0であるので、新しいバイト「A」はリテラルとしてコード化される。
第2の繰返しでは、上記からの次のマッチレジスタ607が前回のマッチレジスタ601になり、マッチレジスタ600を更新するプロセスは「B」という新しいバイトとともに繰返す。この繰返しの終わりにおいて、一致継続ビット606は0であり、値501は0であり、一致カウントも0であり、したがって新しいバイト「B」はリテラルとしてコード化され、次のマッチレジスタ607は値501にセットされる。
第3の繰返しでは、「A」という新しいバイトは0に等しい論理OR605の出力(一致継続606)をもたらす。したがって、値501(「1000 0000」)が次のマッチレジスタ607を満たすために使用される。位置付メモリからの値501は0ではなく、これはこの新しいバイトが新しい一致の始めであることを示す。したがって、一致カウントは1にセットされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりにコードは書込まれない。
第4の繰返しでは、「C」という新しいバイトが受取られる。この繰返しの終わりにおいて、値501は0であるが、一致カウントは0ではなく、したがって前回の一致は終了し、オフセットが2に等しく、長さが1に等しい参照としてコード化される。さらに、新しいバイト「C」はリテラルとしてコード化される。
第5の繰返しでは、「B」という新しいバイトは0に等しい論理OR605の出力(一致継続606)をもたらす。したがって、値501(「0100 0000」)が次のマッチレジスタ607を満たすために使用される。位置付メモリからの値501は0ではなく、これはこの新しいバイトが新しい一致の始めであることを示す。したがって、一致カウントは1にセットされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりにコードは書込まれない。
第6の繰返しでは、「A」という新しいバイトは1に等しい論理OR605の出力(一致継続606)をもたらす。したがって、論理AND演算603の出力(「0010 0000」)が次のマッチレジスタ607を満たすために使用される。論理ANDの出力は0ではなく、これはこの新しいバイトが前回の一致を継続させることを示す。したがって、一致カウントがインクリメントされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりにコードは書込まれない。
第7の繰返しでは、「C」という新しいバイトは1に等しい論理OR605の出力(一致継続606)をもたらす。したがって、したがって、論理AND演算603の出力(「0001 0000」)が次のマッチレジスタ607を満たすために使用される。論理ANDの出力は0ではなく、これはこの新しいバイトが前回の一致を継続させることを示す。したがって、一致カウントがインクリメントされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりにコードは書込まれない。
第8の繰返しでは、「A」という新しいバイトは0に等しい論理OR605の出力(一
致継続606)をもたらす。したがって、値501(「1010 0000」)が次のマッチレジスタ607を満たすために使用される。値606は0であるが、前回の一致カウントが0ではなく、したがって前回の一致が終了し、オフセットが3に等しく、長さが3に等しい参照としてコード化される。さらに、位置付メモリからの値501は0ではなく、これはこの新しいバイトが新しい一致の始めであることを示す。したがって、一致カウントは1にセットされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりに前回の終了一致のみが書込まれる。
第9の繰返しでは、「D」という新しいバイトが受取られる。この繰返しの終わりにおいて、値501は0であるが、一致カウントは0ではなく、したがって前回の一致が終了し、オフセットが2に等しく、長さが1に等しい参照としてコード化される。さらに、新しいバイト「D」はリテラルとしてコード化される。
図9Bは、「AAAAAB」というバイトの入力シーケンスのための、図8のハードウェアから結果として生じる値を示す。
第1の繰返しのために、新しいバイト「A」が受取られる。任意のデータが到着する前に、マッチレジスタ601は0に初期化される(前回のマッチレジスタMR=「0000
0000」)。MR601はシフトされ(「0000 0000」)、論理ANDゲート603への入力の第1の組に与えられる。位置付メモリ500は、新しいバイト「A」によって索引付けされ、値501(「0000 0000」)をもたらし、値501は論理ANDゲート603への入力の第2の組に与えられる。論理AND演算603は「0000 0000」という結果になり、これは論理ORゲート605およびマルチプレクサ604への入力の第1の組に与えられる。論理OR演算605は、0という一致継続ビット606をもたらす。したがって、次のマッチレジスタ607は値501をロードされる。値501が0であり、一致カウントが0であるので、新しいバイト「A」はリテラルとしてコード化される。
第2の繰返しでは、「A」という新しいバイトは0に等しい論理OR605の出力(一致継続606)をもたらす。したがって、値501(「1000 0000」)が次のマッチレジスタ607を満たすために使用される。位置付メモリからの値501は0ではなく、これはこの新しいバイトが新しい一致の始めであることを示す。したがって、一致カウントは1にセットされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりにコードは書込まれない。
第3の繰返しでは、「A」という新しいバイトは1に等しい論理OR605の出力(一致継続606)をもたらす。したがって、論理AND演算603の出力(「0100 0000」)が次のマッチレジスタ607を満たすために使用される。論理ANDの出力は0ではなく、これはこの新しいバイトが前回の一致を継続させることを示す。したがって、一致カウントがインクリメントされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりにコードは書込まれない。
第4の繰返しでは、「A」という新しいバイトは1に等しい論理OR605の出力(一致継続606)をもたらす。したがって、論理AND演算603の出力(「0010 0000」)が次のマッチレジスタ607を満たすために使用される。論理ANDの出力は0ではなく、これはこの新しいバイトが前回の一致を継続させることを示す。したがって、一致カウントがインクリメントされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりにコードは書込まれない。
第5の繰返しでは、「A」という新しいバイトは1に等しい論理OR605の出力(一
致継続606)をもたらす。したがって、論理AND演算603の出力(「0001 0000」)が次のマッチレジスタ607を満たすために使用される。論理ANDの出力は0ではなく、これはこの新しいバイトが前回の一致を継続させることを示す。したがって、一致カウントがインクリメントされる。次の新しいバイトが現在の一致を拡張し得るので、この繰返しの終わりにコードは書込まれない。
第6の繰返しでは、「B」という新しいバイトが受取られる。この繰返しの終わりに、値501は0であるが、一致カウントは0ではなく、したがって前回の一致が終了し、オフセットが1に等しく、長さが4に等しい参照としてコード化される。さらに、新しいバイト「B」はリテラルとしてコード化される。
図10Aおよび図10Bは、この発明の実施例に従う、リテラルデータを含むソースデータのストリーム10およびコード化データのストリーム20をそれぞれに示す。リテラルデータは、エンコーダによって受取られるときのデータである。入力ソースデータのストリーム10は、決定可能な数のビットを占める。たとえば、8ビットのソースデータの3つのセグメントは24ビットを占める。対照的に、出力コード化データのストリーム20は、不確定な数のビットを占める。いくつかの実施例に従って、入力データの8ビットセグメントは、たとえば、9ビットコードとしてまたは6ビットコードとしてコード化されてもよい。入力データの2つの8ビットセグメントは、12から18ビットを有するビットシーケンスとしてコード化されてもよい。入力データの3つの8ビットセグメントは、12から27ビットを有するビットシーケンスとしてコード化されてもよい。
ソースデータのストリーム10が、より少ないビットを占めるコード化データのストリーム20としてコード化される場合、ソースデータのストリーム10は圧縮されている。データが、繰返される単一文字および複数文字のパターンを有するので、ストリームは圧縮され得る。データがデータのASCIIパラグラフである場合、スペースは一旦文字通りコード化されてもよく、それ以降参照としてコード化されてもよい。繰返される語も一旦文字通りコード化されてもよく、各々がさらに出現するごとに参照されてもよい。
図11は、この発明の実施例に従う、コード化データ20の構造を示す。コード化データ20は、後続のビットがリテラルデータ40を表わすか、または符号化データ50を表わすかを示すフラグ30を含み得る。リテラルデータを示すようにフラグ30がセットされる(たとえば、フラグ=0)場合、ビットの次の固定される数は入力リテラルデータビットを表わす。入力リテラルデータ10の各々の値の最初の出現は、リテラルデータ40として符号化され得る。
符号化データが続くことを示すようにフラグ30がセットされる(たとえば、フラグ=1)場合、後続の符号化表現50は可変長であり、リテラルデータ10の1つ以上のセグメントを表わしてもよい。たとえば、符号化表現50は以前に出現した文字のシーケンスを参照してもよい。
可変長の符号化表現50は、符号化タイプフラグ60および参照情報70を含む。符号化タイプフラグ60は、参照情報70を符号化するときに使用される符号化のタイプを示す。いくつかの実施例では、符号化タイプフラグ60の長さは固定される。他の実施例では、符号化タイプフラグ60の長さは可変である。符号化表現50、符号化タイプフラグ60、および参照情報70の例示的な実現例は、以下の図14から図19を参照して詳細に記載される。
図12および図13は、この発明の実施例に従う、ソースデータのストリーム10をコード化するプロセスを示す。1200において、入力リテラルデータの新しいセグメント
がシリアルエンコーダ200によってソースデータのストリーム10から受取られ、ストリングマッチング論理202に与えられる。1201において、ストリングマッチング論理202は、データの入力セグメントを履歴バッファ400に追加し、位置付メモリ500を更新する。ストリングマッチング論理202は、マッチレジスタ600を使用して位置付メモリ500を処理し、それによって一致が存在するかどうかを判断し、一致が存在する場合、ストリングマッチング論理202はマッチレジスタ600から一致オフセットを判断する。
1202において、符号化論理201は、一致が存在しなかった場合にはリテラルデータ40として、または一致が存在する場合には符号化表現50として、入力データ10を符号化するかを判断する。1203において、一致が存在しない場合、コード化データはリテラルデータ符号化を示すフラグ30を含むように、さらに、リテラルデータ40としてリテラルデータ10のコピーを含むようにセットされる。1204において、コード化データ20が書込まれる。
一致が存在する場合、1205において、符号化論理201は複数の可変長表現の中でどの符号化表現50が使用されるべきであるかを判断する。この判断の一例は、以下の図13を参照して記載される。表現の方法が一旦選択されると、1206において、符号化論理201は、符号化された(非リテラル)データの符号化を表わすフラグ30を含むように、さらに、符号化表現50を含むように、コード化データ20をセットする。符号化表現50のために、符号化論理201は符号化タイプフラグ60および参照情報70をセットする。
1207において、符号化表現50は一時的なバッファに書込まれてもよく、一時的なバッファは繰返しパターンの終わりが見付けられたことが判断されるまで保持されてもよい。さらなる新しいデータのセグメントが一致長を増加させる場合、一時的なバッファに格納された以前の符号化表現50は上書きされてもよい。つまり、データの新しいセグメント10が前回の一致から一致長を増加させる場合、新しい表現50は前回のより短い一致長の表現50を置き換えてもよい。この点で、繰返しパターンは単一の符号化表現50を用いて参照されてもよい。コード化データ20は、次の新しいデータセグメント10が一致長を増加させないことが判断された後に書込まれてもよい。
図13では、1205の符号化表現を判断する一例が示される。1301において、ストリングマッチング論理202は一致オフセットおよび一致長を判断する。1302において、符号化論理201は、参照が単一一致までの単一文字オフセットとして符号化され得るかどうかを判断する。一致オフセットは閾値の長さと比較される。たとえば、単一文字までのオフセットを表わすために4ビットのみを必要とするオフセットは、単一文字オフセットと考えられてもよい。この場合、一致オフセットが16未満であるか、または16に等しい(つまり、一致が16個前の入力データセグメント内にある)場合、符号化論理201は一致長が単一文字一致を表わすかどうかを判断する。
1303において、一致オフセットが短距離一致であり、一致長が単一文字一致を表わす場合、符号化論理201は、単一文字一致オフセット符号化を示すようにセットされる符号化タイプフラグ60、および単一文字一致までの短い距離を示す参照情報70を含むように、符号化表現50をセットする。
1304において、一致オフセットが閾値よりも大きいか、または単一文字一致以上にわたる場合、符号化論理201は、長いオフセットの符号化を示すようにセットされる符号化タイプフラグ60を含むように、および単一文字または複数文字の一致までの距離を示す参照情報70を含むように、符号化表現50をセットする。1305において、符号
化論理201は処理を継続させる。
図14Aから図14D、図15Aから図15Hおよび図16は、この発明の実施例に従う、コード化データのさまざまな構造を示す。
図14Aから図14Dは、単一文字一致オフセット符号化が使用されるか、または長いオフセットの符号化が使用されるかを示す符号化タイプフラグ60の実現例を示す。
図14Aの実現例では、符号化タイプフラグ60Aの後に参照情報70Aが続き、符号化タイプフラグ60Aは、参照情報70Aが単一文字一致オフセット80を含むか、または固定長の長い一致オフセット91および固定長の一致長95の対を含むかを表わす。
図14Bの実現例では、符号化タイプフラグ60Bの後に参照情報70Bが続き、符号化タイプフラグ60Bは、参照情報70Bが単一文字一致オフセット80を含むか、または固定長の長い一致オフセット91および可変長の一致長96の対を含むかを表わす。
図14Cの実現例では、符号化タイプフラグ60Cの後に参照情報70Cが続き、符号化タイプフラグ60Cは、参照情報70Cが単一文字一致オフセット80を含むか、または可変長の長い一致オフセット92および固定長の一致長95の対を含むかを表わす。
図14Dの実現例では、符号化タイプフラグ60Dの後に参照情報70Dが続き、符号化タイプフラグ60Dは、参照情報70Dが単一文字一致オフセット80を含むか、または可変長の長い一致オフセット92および可変長の一致長96の対を含むかを表わす。
図15Aから図15Hは、単一文字一致オフセット符号化が使用されるか、または2つの長い符号化スキームのうちの1つが使用されるかを示す符号化タイプフラグ60の実現例を示す。
図15Aの実現例では、符号化タイプフラグ60Eの後に参照情報70Eが続き、符号化タイプフラグ60Eは、参照情報70Eが単一文字一致オフセット80を含むか、固定長の長い一致オフセット91および固定長の一致長95の対を含むか、または固定長の長い一致オフセット91および可変長の一致長96の対を含むかを表わす。
図15Bの実現例では、符号化タイプフラグ60Fの後に参照情報70Fが続き、符号化タイプフラグ60Fは、参照情報70Fが単一文字一致オフセット80を含むか、固定長の長い一致オフセット91および固定長の一致長95の対を含むか、または可変長の長い一致オフセット92および固定長の一致長95の対を含むかを表わす。
図15Cの実現例では、符号化タイプフラグ60Gの後に参照情報70Gが続き、符号化タイプフラグ60Gは、参照情報70Gが単一文字一致オフセット80を含むか、固定長の長い一致オフセット91および固定長の一致長95の対を含むか、または可変長の長い一致オフセット92および可変長の一致長96の対を含むかを表わす。
図15Dの実現例では、符号化タイプフラグ60Hの後に参照情報70Hが続き、符号化タイプフラグ60Hは、参照情報70Hが単一文字一致オフセット80を含むか、固定長の長い一致オフセット91および可変長の一致長96の対を含むか、または可変長の長い一致オフセット92および固定長の一致長95の対を含むかを表わす。
図15Eの実現例では、符号化タイプフラグ60Iの後に参照情報70Iが続き、符号化タイプフラグ60Iは、参照情報70Iが単一文字一致オフセット80を含むか、固定
長の長い一致オフセット91および可変長の一致長96の対を含むか、または可変長の長い一致オフセット92および可変長の一致長96の対を含むかを表わす。
図15Fの実現例では、符号化タイプフラグ60Jの後に参照情報70Jが続き、符号化タイプフラグ60Jは、参照情報70Jが単一文字一致オフセット80を含むか、可変長の長い一致オフセット92および固定長の一致長95の対を含むか、または可変長の長い一致オフセット92および可変長の一致長96の対を含むかを表わす。
図15Gの実現例では、符号化タイプフラグ60Kの後に参照情報70Kが続き、符号化タイプフラグ60Kは、参照情報70Kが単一文字一致オフセット80を含むか、固定長の一致オフセット91を含む倍長文字一致を含むか、または可変長の一致長96および可変長の一致オフセット92の対を含むかを表わす。
図15Hの実現例では、符号化タイプフラグ60Lの後に参照情報70Lが続き、符号化タイプフラグ60Lは、参照情報70Lが単一文字一致オフセット80を含むか、可変長の一致オフセット92を含む倍長文字一致を含むか、または可変長の一致長96および固定長の長い一致オフセット91の対を含むかを表わす。
図16は、符号化タイプフラグ60Mの後に参照情報70Mが続く実現例を示し、符号化タイプフラグ60Mは、参照情報70Mが単一文字一致オフセット符号化を含むか、または4つの長い符号化のうちの1つを含むかを示す。符号化タイプフラグ60Mの第1の値は、単一文字一致オフセット80がコード化されるかどうかを表わす。符号化タイプフラグ60Mの第2の値は、固定長の長い一致オフセット91および固定長の一致長95の対がコード化されるかどうかを表わす。符号化タイプフラグ60Mの第3の値は、固定長の長い一致オフセット91および可変長の一致長96の対がコード化されるかどうかを表わす。符号化タイプフラグ60Mの第4の値は、可変長の長い一致オフセット92および固定長の一致長95の対がコード化されるかどうかを表わす。符号化タイプフラグ60Mの第5の値は、可変長の長い一致オフセット92および可変長の一致長96の対がコード化されるかどうかを表わす。
図17Aおよび図17Bは、この発明の実施例に従う、単一文字までの一致オフセットのテーブルを示す。単一文字一致オフセット80は、長い長さの一致オフセット91または92に満たないビットの数にセットされてもよい。たとえば、単一文字一致オフセットは4ビット(ビット.0から.3)で構成されてもよい。一致オフセットテーブルの増分値は、一致オフセットの増分値を表わし得る。たとえば、1011というビットパターンは、示されるように12という一致オフセットを表わし得る。
図18Aから図18Cは、この発明の実施例に従う、長い長さの一致オフセットのテーブルを示す。符号化論理201は、一致までの距離を表わすために固定長の長い一致オフセット91を使用してもよい。固定長の長い一致オフセット91は、8ビット、9ビット、示される10ビット、11ビット、12ビットなどのセットされた数のビットを含んでもよい。
代替的には、符号化論理201は、一致までの距離を表わすために可変長の長い一致オフセット92を使用してもよい。可変長の一致オフセット92はグループ標識93を含む。グループ標識93は、示されるように、可変長である場合もあれば、固定長である場合もある。グループ標識93は、オフセットをコード化するために使用されるビットの数およびそれらのビットがどのように符号化されるかを示す。たとえば、「0」というグループ標識93(グループA)は、次の6ビットが1から64までのオフセットを表わすことを示すために使用されてもよい。「10」というグループ標識93(グループB)は、次
の6ビットが65から192までのオフセットを表わすことを示すために使用されてもよい。「11」というグループ標識93(グループC)は、次の9ビットが193から2047までのオフセットを表わすことを示すために使用されてもよい。
図19Aから図19Cは、この発明の実施例に従う、一致長のテーブルを示す。一致長は一致オフセットと同様の方法で形成されてもよい。一致長は固定長のビットシーケンス95として符号化されてもよい。固定長の一致長95は、8ビット、9ビット、示される10ビット、11ビット、12ビットなどのセットされた数のビットを含んでもよい。
代替的には、一致長は、可変長のビットシーケンス96として符号化されてもよい。可変長の一致長はグループ標識97を含み、グループ標識97は後に続くビットの数およびビットがどの一致長を表わすかを示した。グループ標識97は、示されるように、固定長である場合もあれば、可変長である場合もある。
示されるグループ標識97は、符号化一致長が属する4つのグループのうちの1つを識別する。値「00」というグループ標識97は、2から3までの一致長をコード化するために単一のビットが続くことを示す。値「01」というグループ標識97は、4から7までの一致長をコード化するために2つのビットが続くことを示す。値「10」というグループ標識97は、8から15までの一致長をコード化するために3つのビットが続くことを示す。値「11」というグループ標識97は、16から271までの一致長をコード化するために8つのビットが続くことを示す。
上述の符号化変数およびパラメータは例として提供される。符号化タイプフラグ60の特定の値、単一文字一致オフセット80のビット長、固定長または可変長の一致オフセット91、92および一致長95、96の使用、グループ標識93、97の特定の値、ならびにグループ標識93、97に続くビットの数は、ソースデータの予想されるストリーム10の特徴に基づいて選択され得る。
符号化のプロセスはデコーダ103を用いて逆にされ得る。デコーダ103はシリアルデコーダまたはパラレルデコーダを含んでもよい。
図20および図21は、この発明の実施例に従うデコーダ103を示す。図20は、コード化データのストリーム20Aを受入れる復号論理801と履歴バッファ802とを含むシリアルデコーダ800を示す。履歴バッファ802は、直近に復号されたデータ10Aを保持する。復号論理801は、コード化されたセグメント20Aを読取り、コード化されたセグメント20Aを復号し、1つ以上の復号されたリテラルデータセグメントを履歴バッファ802に書込む。復号論理は、符号化表現(非リテラル)が受取られるときに履歴バッファ802を使用する。復号論理801は、繰返しデータのコピーを抽出するために履歴バッファに戻る。リテラルが受取られるとき、復号論理801はコード化されたセグメント20Aからリテラル値を抽出し、このリテラル値を履歴バッファ802に書込む。シリアルデコーダ800は、シリアルエンコーダ200またはパラレルエンコーダ300でコード化されたデータ20Aとともに使用されてもよい。
図21は、複数のシリアルデコーダ800−1から800−nを含むパラレルデコーダ900を示す。パラレルデコーダ900はさらにヘッド制御901を含み、ヘッド制御901はコード化データのストリーム20Aをサブストリームに分け、そのサブストリームをブロックとしてそれぞれのデコーダ800−1から800−nに与える。つまり、ヘッド制御901は、パラレルシリアルエンコーダ200−1から200−nの組のうちの1つによって元々作られたサブストリームを与える。パラレルデコーダ900のヘッド制御901は、符号化データの各々の入力ブロックのためにどのシリアルデコーダ800−1
から800−nが使用されるべきであるかを選択してもよい。
パラレルデコーダ900は、さらに、連続的に復号されたブロックを連結し、ソースデータの再構築されたストリーム10Aを与える末尾制御902を含む。パラレルデコーダ900の末尾制御902は、ソースデータの再構築されたストリームを、復号されたデータのブロックから組立て直すことができる。
図22は、この発明の実施例に従う、コード化データのセグメントを復号するプロセスを示す。2000において、復号論理はコード化データのセグメント20Aを受取る。2001において、復号論理はフラグ30を読取る。2002において、復号論理は、後続のビットがリテラルデータ40であるか、または可変長の符号化表現50であるかを判断する。
2003において、フラグ30がリテラルデータ40を示す場合、復号論理はデータのリテラル長を、復号されたデータのセグメント10Aとして抽出する。2004において、フラグ30が符号化表現50を示す場合、復号論理は符号化タイプフラグ60を読取る。2005において、復号論理は、符号化タイプフラグ60が単一文字一致オフセットを示すか、または長い長さの一致オフセットを示すかを判断する。2006において、単一文字一致オフセットが続く場合、復号論理は後続のビットから一致オフセットを判断する。2007において、復号論理は、一致オフセットによって示されるオフセットにおいて履歴バッファからの単一の値を読取る。2008において、長い長さの一致オフセットが続く場合、復号論理は再び、後続のビットから一致オフセットを判断し、さらに、一致長を判断する。2009において、復号論理は、一致オフセットによって示されるオフセットにおいて履歴バッファからの、一致長によって示される1つ以上の値を読取る。値が履歴バッファから読取られるので、値は現在の位置で履歴バッファに書き戻され得る。2010において、復号論理は1つ以上の復号されたセグメントをソースデータの再構築されたストリーム10Aとして書込む。
この発明は特定の実施例および例示的な図面に関して記載されてきたが、この発明は記載される実施例または図面に限定されないことを当業者は認識するだろう。
与えられる図面は単に代表的なものであり、一定の比例に応じて描かれているわけではないであろう。その特定の比率は誇張されている場合もあり、最小化されている場合もある。図面は、当業者によって理解され、適切に実施され得るこの発明のさまざまな実現例を示すように意図される。したがって、この発明は特許請求の範囲の精神および範囲内で修正および変更を伴って実施され得ることが理解されるべきである。記載は網羅的であるように意図されるものではなく、または開示される厳密な形態にこの発明を限定するように意図されるものではない。この発明は修正および変更を伴って実施され得ることが理解されるべきであり、この発明は特許請求の範囲およびその等価物によってのみ限定されることが理解されるべきである。
この発明の実施例に従うエンコーダ/デコーダシステムを示す図である。 この発明の実施例に従うシリアルエンコーダを示す図である。 この発明の実施例に従うパラレルエンコーダを示す図である。 この発明の実施例に従うストリングマッチ論理を示す図である。 この発明の実施例に従う、履歴バッファと位置付メモリとの間の関係を示す図である。 履歴バッファおよび位置付メモリをデータの新しいセグメントで更新するプロセスを示す図である。 履歴バッファおよび位置付メモリをデータの新しいセグメントで更新するプロセスを示す図である。 この発明の実施例に従うマッチレジスタ600の使用を示す図である。 この発明の実施例に従う、マッチレジスタおよび位置付メモリのハードウェアの実現例を示す図である。 この発明の実施例に従う、マッチレジスタおよび位置付メモリのハードウェアの実現例を示す図である。 この発明の実施例に従う、マッチレジスタおよび位置付メモリのハードウェアの実現例を示す図である。 この発明の実施例に従う、リテラルデータのシーケンスおよびコード化データのシーケンスをそれぞれに示す図である。 この発明の実施例に従う、リテラルデータのシーケンスおよびコード化データのシーケンスをそれぞれに示す図である。 この発明の実施例に従う、コード化データの構造を示す図である。 この発明の実施例に従う、データのセグメントをコード化するプロセスを示す図である。 この発明の実施例に従う、データのセグメントをコード化するプロセスを示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、コード化データのさまざまな構造を示す図である。 この発明の実施例に従う、単一文字までの一致オフセットのテーブルを示す図である。 この発明の実施例に従う、単一文字までの一致オフセットのテーブルを示す図である。 この発明の実施例に従う、長い長さの一致オフセットのテーブルを示す図である。 この発明の実施例に従う、長い長さの一致オフセットのテーブルを示す図である。 この発明の実施例に従う、長い長さの一致オフセットのテーブルを示す図である。 この発明の実施例に従う、一致長のテーブルを示す図である。 この発明の実施例に従う、一致長のテーブルを示す図である。 この発明の実施例に従う、一致長のテーブルを示す図である。 この発明の実施例に従うデコーダを示す図である。 この発明の実施例に従うデコーダを示す図である。 この発明の実施例に従う、コード化データのセグメントを復号するプロセスを示す図である。
符号の説明
203 一致オフセット
204 一致長

Claims (34)

  1. デジタルデータを符号化する方法であって、
    データの現在の1つ以上のセグメントと、データの対応する1つ以上の過去のセグメントとの間の一致を検索することと、
    一致が存在しない場合に、データの前記現在のセグメントをリテラルとしてコード化することと、
    前記一致が存在し、一致長が1よりも大きい場合に、前記一致を参照としてコード化することと、
    前記一致が存在し、一致長が1である場合に、
    一致オフセットが閾値未満であるかどうかを判断することと、
    前記一致オフセットが前記閾値未満である場合に、前記一致を単一文字参照としてコード化することと、
    前記一致オフセットが前記閾値よりも大きい場合に、前記一致をリテラルとしてコード化することとを含む、方法。
  2. 前記検索することは、
    データの新しいセグメントを読取ることと、
    データの前記新しいセグメントが以前に出現したかどうかを判断することと、
    データの前記新しいセグメントが以前に出現した場合に、
    一致が存在することを判断することと、
    一致の終わりに到達するまでデータの新しいセグメントを読取り続けることと、
    一致オフセットおよび一致長を判断することと、
    データの前記新しいセグメントが以前に出現しなかった場合に、一致が存在しないことを判断することとを含む、請求項1に記載の方法。
  3. データの前記現在のセグメントを前記リテラルとして前記コード化することは、
    リテラルデータ符号化を示すフラグを書込むことと、
    データの前記現在のセグメントを書込むこととを含む、請求項1に記載の方法。
  4. 前記一致を前記参照として前記コード化することは、
    非リテラルデータを示すフラグを書込むことと、
    非リテラルデータ符号化を示す符号化タイプフラグをセットすることと、
    前記符号化タイプフラグを書込むことと、
    前記一致オフセットの表示を書込むことと、
    前記一致長の表示を書込むこととを含む、請求項1に記載の方法。
  5. 前記一致オフセットの前記表示は、前記一致オフセットを含む、請求項4に記載の方法。
  6. 前記一致オフセットの前記表示は、前記一致オフセットの可変長符号化を含む、請求項4に記載の方法。
  7. 可変長の値はグループ標識を含む、請求項6に記載の方法。
  8. 前記一致長の前記表示は、前記一致長を含む、請求項4に記載の方法。
  9. 前記一致長の前記表示は、前記一致長の可変長符号化を含む、請求項4に記載の方法。
  10. 前記可変長符号化はグループ標識を含む、請求項9に記載の方法。
  11. 前記一致を前記単一文字参照として前記コード化することは、
    非リテラルデータを示すフラグを書込むことと、
    単一文字参照符号化を示す符号化タイプフラグをセットすることと、
    前記符号化タイプフラグを書込むことと、
    前記一致オフセットを書込むこととを含む、請求項1に記載の方法。
  12. 前記一致を前記リテラルとして前記コード化することは、
    リテラルデータ符号化を示すフラグを書込むことと、
    データの前記現在のセグメントを書込むこととを含む、請求項1に記載の方法。
  13. データセグメントのストリームを符号化する方法であって、
    データのセグメントをデータセグメントの前記ストリームからロードすることと、
    データの前記セグメントがデータの過去のセグメントと一致するかどうかを判断することと、
    データの前記セグメントが過去のデータと一致しない場合に、
    待ち状態の一致が存在するかどうかを判断することと、
    前記待ち状態の一致が存在し、一致オフセットが閾値未満である場合に、前記待ち状態の一致を単一文字一致として符号化することと、
    前記待ち状態の一致が存在し、前記一致オフセットが前記閾値よりも大きい場合に、前記待ち状態の一致をリテラルとして符号化することと、
    データの前記セグメントをリテラルデータとして符号化することと、
    データの前記セグメントが過去のデータと一致する場合に、
    継続一致が存在する場合に、一致長をインクリメントすることと、
    前記待ち状態の一致が存在し、継続一致が存在せず、前記一致オフセットが閾値未満である場合に、前記待ち状態の一致を単一文字一致として符号化することと、
    前記待ち状態の一致が存在し、継続一致が存在せず、前記一致オフセットが前記閾値よりも大きい場合に、前記待ち状態の一致をリテラルとして符号化することとを含む、方法。
  14. データの前記セグメントがデータの前記過去のセグメントと一致するかどうかを前記判断することは、
    データの前記セグメントに対応する、位置付メモリからの値をロードすることと、
    前記値がゼロでない場合に、データの前記セグメントが過去のデータと一致することを判断することと、
    前記値がゼロである場合に、データの前記セグメントが過去のデータと一致しないことを判断することとを含む、請求項13に記載の方法。
  15. 位置付メモリを更新することをさらに含む、請求項13に記載の方法。
  16. マッチレジスタを更新することをさらに含む、請求項13に記載の方法。
  17. マッチレジスタを前記更新することは、
    データの前記セグメントに対応する、位置付メモリからの値をロードすることを含み、前記位置付メモリは過去のデータセグメントの繰返される出現の位置を識別し、前記更新することは、さらに、
    前記ロードされた値からのビットと、前記マッチレジスタから1つだけシフトされたビットとの間の論理AND演算の結果を判断することと、
    前記論理ANDの結果の前記ビットのうちのいずれかがゼロでない場合に、前記マッチレジスタを前記論理ANDの結果で更新することと、
    前記結果の前記ビットのすべてがゼロである場合に、前記マッチレジスタを前記位置付メモリからの前記ロードされた値で更新することとを含む、請求項16に記載の方法。
  18. マッチレジスタから前記一致オフセットを判断することをさらに含む、請求項13に記載の方法。
  19. 前記マッチレジスタから前記一致オフセットを前記判断することは、現在の位置から、1にセットされる第1のビットまでのビット位置の数を数えることを含む、請求項18に記載の方法。
  20. エンコーダであって、
    符号化論理を含み、前記符号化論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、前記エンコーダは、さらに、
    前記符号化論理に結合されるストリングマッチング論理を含み、前記ストリングマッチング論理は、過去のデータセグメントの繰返される出現の位置を識別するように動作可能な位置付メモリと、前記位置付メモリに結合されるマッチレジスタとを含む、エンコーダ。
  21. 前記符号化論理は、一致長のテーブルをさらに含む、請求項20に記載のエンコーダ。
  22. ストリングマッチング論理は、過去のデータセグメントを保持するように動作可能な履歴バッファをさらに含む、請求項20に記載のエンコーダ。
  23. データのソースを符号化するためのパラレルエンコーダであって、
    複数のシリアルエンコーダを含み、各々のシリアルエンコーダは、
    入力および出力を有する符号化論理を含み、前記符号化論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、前記シリアルエンコーダは、さらに、
    前記符号化論理に結合されるストリングマッチング論理を含み、前記ストリングマッチング論理は、過去のデータセグメントを保持するように動作可能な履歴バッファと、前記過去のデータセグメントの繰返される出現の位置を識別するように動作可能な位置付メモリと、前記位置付メモリに結合されるマッチレジスタとを含み、前記パラレルエンコーダは、さらに、
    ヘッド制御を含み、前記ヘッド制御は、
    データの前記ソースに結合される入力と、
    複数の出力とを含み、各々の出力は前記複数のシリアルエンコーダのうちの対応する1つの前記入力に結合され、前記パラレルエンコーダは、さらに、
    末尾制御を含み、前記末尾制御は、
    複数の入力を含み、各々の入力は前記複数のシリアルエンコーダのうちの対応する1つの前記出力に結合され、前記末尾制御は、さらに、
    コード化データストリームを与える出力を含む、パラレルエンコーダ。
  24. 符号化データのソースを復号するためのパラレルデコーダであって、
    複数のシリアルデコーダを含み、各々のシリアルデコーダは、
    復号論理を含み、前記復号論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、前記シリアルデコーダは、さらに、
    復号されたデータセグメントを保持するように動作可能な履歴バッファを含み、前記パラレルデコーダは、さらに、
    ヘッド制御を含み、前記ヘッド制御は、
    符号化データの前記ソースに結合される入力と、
    複数の出力とを含み、各々の出力は前記複数のシリアルデコーダのうちの対応する1つの入力に結合され、前記パラレルデコーダは、さらに、
    末尾制御を含み、前記末尾制御は、
    複数の入力を含み、各々の入力は前記複数のシリアルデコーダのうちの対応する1つの出力に結合され、前記末尾制御は、さらに、
    復号されたデータストリームを与える出力を含む、パラレルデコーダ。
  25. コード化データを復号する方法であって、
    コード化データの始めを判断することと、
    前記コード化データがリテラルデータを含むか、または符号化表現を含むかを示すフラグを読取ることと、
    前記フラグがリテラルデータを示す場合に、データのリテラル長を抽出し、それによって復号されたデータのセグメントを形成することと、
    前記フラグが前記符号化表現を示す場合に、
    前記符号化表現が単一文字一致オフセットを含むか、または長い長さの一致オフセットを含むかを示す符号化タイプフラグを読取ることと、
    前記符号化タイプフラグが前記単一文字一致オフセットを示す場合に、
    前記単一文字一致オフセットを判断することと、
    前記単一文字一致オフセットに対応する、履歴バッファからの値を判断し、それによって復号されたデータの前記セグメントを形成することと、
    前記符号化タイプフラグが前記長い長さの一致オフセットを示す場合に、
    前記長い長さの一致オフセットを判断することと、
    一致長を判断することと、
    前記長い長さの一致オフセットおよび前記一致長に対応する、前記履歴バッファからの1つ以上の値を読取り、それによって復号されたデータの対応する1つ以上のセグメントを形成することとを含む、方法。
  26. 前記長い長さの一致オフセットを判断することは、
    前記長い長さの一致オフセットの長さを判断することと、
    前記判断された長さに対応するビットの数を読取ることと、
    前記読取られたビットに基づいて、前記長い長さの一致オフセットをセットすることとを含む、請求項25に記載の方法。
  27. 前記長い長さの一致オフセットを判断することは、
    グループ標識を読取ることと、
    前記グループ標識に対応するビットの数を読取ることと、
    前記読取られたビットに基づいて、前記長い長さの一致オフセットをセットすることとを含む、請求項25に記載の方法。
  28. 前記一致長を判断することは、
    前記一致長の長さを判断することと、
    前記判断された長さに対応するビットの数を読取ることと、
    前記読取られたビットに基づいて、前記一致長をセットすることとを含む、請求項25に記載の方法。
  29. 前記一致長を判断することは、
    グループ標識を読取ることと、
    前記グループ標識に対応するビットの数を読取ることと、
    前記読取られたビットに基づいて、前記一致長をセットすることとを含む、請求項25に記載の方法。
  30. 磁気テープドライブであって、
    エンコーダを含み、前記エンコーダは、
    符号化論理を含み、前記符号化論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、前記エンコーダは、さらに、
    前記符号化論理に結合されるストリングマッチング論理を含み、前記ストリングマッチング論理は、過去のデータセグメントの繰返される出現の位置を識別するように動作可能な位置付メモリと、前記位置付メモリに結合されるマッチレジスタとを含み、前記磁気テープドライブは、さらに、
    デコーダを含み、前記デコーダは、
    復号論理を含み、前記復号論理は単一文字までの一致オフセットのテーブルおよび長い長さの一致オフセットのテーブルを含み、前記デコーダは、さらに、
    復号されたデータセグメントを保持するように動作可能な履歴バッファを含む、磁気テープドライブ。
  31. データのストリームを符号化する方法であって、
    データの前記ストリームのセグメントを符号化するために3つのフォーマットからフォーマットを選択することを含み、
    第1のフォーマットは、前記セグメントを含むリテラルとして前記セグメントを表わし、
    第2のフォーマットは、以前のセグメントとの単一文字一致までのオフセットを含む参照として前記セグメントを表わし、前記以前のセグメントは閾値オフセット内であるように判断され、
    第3のフォーマットは、一致オフセットの表示および一致長の表示を含む参照として前記セグメントを表わす、方法。
  32. 前記第1のフォーマットは、前記セグメントのすぐ直前のクリアされたビットをさらに含み、
    前記第2のフォーマットは、前記単一文字一致までの前記オフセットのすぐ直前の、セットビットおよびクリアされたビットの対をさらに含み、
    前記第3のフォーマットは、前記一致オフセットの前記表示および前記一致長の前記表示のすぐ直前のセットビットの対をさらに含む、請求項31に記載の方法。
  33. 選択されたフォーマットでビットパターンを形成することと、
    前記ビットパターンを書込むこととをさらに含む、請求項31に記載の方法。
  34. データのストリームを符号化する方法であって、
    データの前記ストリームのセグメントを符号化するために4つのフォーマットからフォーマットを選択することを含み、
    第1のフォーマットは、前記セグメントを含むリテラルとして前記セグメントを表わし、
    第2のフォーマットは、以前のセグメントとの単一文字一致までのオフセットを含む参照として前記セグメントを表わし、前記以前のセグメントは閾値オフセット内であるように判断され、
    第3のフォーマットは、以前のセグメントとの倍長文字一致までのオフセットを含む参照として前記セグメントを表わし、
    第4のフォーマットは、一致オフセットの表示および一致長の表示を含む参照として前記セグメントを表わす、方法。
JP2006189358A 2005-07-11 2006-07-10 デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法 Pending JP2007037115A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/179,080 US7215259B2 (en) 2005-06-03 2005-07-11 Data compression with selective encoding of short matches

Publications (2)

Publication Number Publication Date
JP2007037115A true JP2007037115A (ja) 2007-02-08
JP2007037115A5 JP2007037115A5 (ja) 2009-08-20

Family

ID=37434615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006189358A Pending JP2007037115A (ja) 2005-07-11 2006-07-10 デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法

Country Status (3)

Country Link
US (1) US7215259B2 (ja)
EP (1) EP1744461A3 (ja)
JP (1) JP2007037115A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011066557A (ja) * 2009-09-15 2011-03-31 Ricoh Co Ltd データ処理装置およびデータ処理方法
US8164490B2 (en) 2008-01-31 2012-04-24 Fujitsu Limited Data compression/decompression method and computer readable storage medium storing compression/decompression program
KR20140088319A (ko) * 2013-01-02 2014-07-10 삼성전자주식회사 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7397400B2 (en) * 2005-12-02 2008-07-08 Viasat, Inc. Variable length data encapsulation and encoding
US7623047B2 (en) * 2007-10-30 2009-11-24 Hewlett-Packard Development Company, L.P. Data sequence compression
US8121205B1 (en) * 2008-03-20 2012-02-21 Force10 Networks, Inc. Extended non-return-to-zero serial channel signaling
WO2011013125A1 (en) 2009-07-27 2011-02-03 Storwize Ltd. Method and system for transformation of logical data objects for storage
US8013762B2 (en) * 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
US8669889B2 (en) 2011-07-21 2014-03-11 International Business Machines Corporation Using variable length code tables to compress an input data stream to a compressed output data stream
US8400335B2 (en) 2011-07-21 2013-03-19 International Business Machines Corporation Using variable length code tables to compress an input data stream to a compressed output data stream
US8692696B2 (en) 2012-01-03 2014-04-08 International Business Machines Corporation Generating a code alphabet of symbols to generate codewords for words used with a program
AU2013399353B2 (en) * 2013-08-30 2017-03-02 Fujitsu Limited Data compression apparatus, method, and program
JP6609404B2 (ja) * 2014-07-22 2019-11-20 富士通株式会社 圧縮プログラム、圧縮方法および圧縮装置
US9602130B2 (en) * 2014-08-06 2017-03-21 Ngd Systems, Inc. System and method for matching a regular expression or combination of characters
US9473168B1 (en) * 2015-09-25 2016-10-18 Intel Corporation Systems, methods, and apparatuses for compression using hardware and software
CN106788447B (zh) * 2016-11-29 2020-07-28 苏州浪潮智能科技有限公司 一种lz77压缩算法的匹配长度输出方法及装置
US10657053B2 (en) * 2017-03-31 2020-05-19 Kyocera Document Solutions Inc. Memory allocation techniques for filtering software
US20190377804A1 (en) * 2018-06-06 2019-12-12 Yingquan Wu Data compression algorithm
CN114442954B (zh) * 2022-01-26 2024-05-03 山东云海国创云计算装备产业创新中心有限公司 一种lz4编码压缩装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05134847A (ja) * 1991-11-14 1993-06-01 Fujitsu Ltd データ圧縮方法
JPH05151349A (ja) * 1991-11-29 1993-06-18 Fujitsu Ltd 画像データ圧縮方法および符号化回路
JPH07261977A (ja) * 1994-03-16 1995-10-13 Fujitsu Ltd データ圧縮方法および装置ならびにデータ復元方法および装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2172127B (en) * 1985-03-06 1988-10-12 Ferranti Plc Data compression system
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5003307A (en) * 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
US5155484A (en) * 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
US5485526A (en) * 1992-06-02 1996-01-16 Hewlett-Packard Corporation Memory circuit for lossless data compression/decompression dictionary storage
US5369605A (en) * 1993-07-07 1994-11-29 Dell Usa, L.P. Incremental search content addressable memory for increased data compression efficiency
US5602764A (en) * 1993-12-22 1997-02-11 Storage Technology Corporation Comparing prioritizing memory for string searching in a data compression system
US5771010A (en) * 1995-03-22 1998-06-23 Ibm Corporation Apparatus for compressing data using a Lempel-Ziv-type algorithm
US5805086A (en) * 1995-10-10 1998-09-08 International Business Machines Corporation Method and system for compressing data that facilitates high-speed data decompression
US5838963A (en) * 1995-10-25 1998-11-17 Microsoft Corporation Apparatus and method for compressing a data file based on a dictionary file which matches segment lengths
JP3541930B2 (ja) * 1998-08-13 2004-07-14 富士通株式会社 符号化装置及び復号化装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05134847A (ja) * 1991-11-14 1993-06-01 Fujitsu Ltd データ圧縮方法
JPH05151349A (ja) * 1991-11-29 1993-06-18 Fujitsu Ltd 画像データ圧縮方法および符号化回路
JPH07261977A (ja) * 1994-03-16 1995-10-13 Fujitsu Ltd データ圧縮方法および装置ならびにデータ復元方法および装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6010071489, Peter M. Fenwick, "Ziv−Lempel encoding with multi−bit flags", Data Compression Conference,1993.DCC’93, 1993, pp.138−147 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8164490B2 (en) 2008-01-31 2012-04-24 Fujitsu Limited Data compression/decompression method and computer readable storage medium storing compression/decompression program
JP2011066557A (ja) * 2009-09-15 2011-03-31 Ricoh Co Ltd データ処理装置およびデータ処理方法
KR20140088319A (ko) * 2013-01-02 2014-07-10 삼성전자주식회사 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들
JP2014132750A (ja) * 2013-01-02 2014-07-17 Samsung Electronics Co Ltd データ圧縮方法と、該方法を行う装置
KR101992274B1 (ko) 2013-01-02 2019-09-30 삼성전자주식회사 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들

Also Published As

Publication number Publication date
EP1744461A2 (en) 2007-01-17
US7215259B2 (en) 2007-05-08
US20060273933A1 (en) 2006-12-07
EP1744461A3 (en) 2010-12-01

Similar Documents

Publication Publication Date Title
JP2007037115A (ja) デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法
JP2915568B2 (ja) テープドライブシステムのための適応データ圧縮装置
JP3229180B2 (ja) データ圧縮システム
US7817069B2 (en) Alternative encoding for LZSS output
KR100353171B1 (ko) 적응형데이터압축을수행하는방법및장치
JP5498783B2 (ja) データ圧縮の方法
US5874908A (en) Method and apparatus for encoding Lempel-Ziv 1 variants
EP0734126A1 (en) Two-stage compression with runlength encoding and lempel-ziv encoding
EP0729237A2 (en) Adaptive multiple dictionary data compression
US7728740B2 (en) Data compression for communication between two or more components in a system
US5640158A (en) Reversible method of encoding data
JPH0869370A (ja) データ圧縮方法およびシステム
US10587285B1 (en) Hardware friendly data compression
JPH07283739A (ja) 短ブロックのデータを圧縮、伸長するための方法、及び装置
US7511639B2 (en) Data compression for communication between two or more components in a system
KR20120115244A (ko) 데이터 압축 동안의 대안적 인코딩 솔루션들 평가
US5502439A (en) Method for compression of binary data
US6094151A (en) Apparatus and method for finite state machine coding of information selecting most probable state subintervals
CN115225724B (zh) 使用分区和无关位消除的数据压缩技术
JP4191438B2 (ja) データ圧縮方法およびデータ伸長方法、該方法を実施するためのコンピュータプログラム製品と電子システム
JP3061278B2 (ja) 可変ビット長コード語のビット長通信方法
JP3266419B2 (ja) データ圧縮・伸長方式
GB2360915A (en) Run length compression encoding of selected bits of data words
KR20110089308A (ko) 데이터 레코드들의 압축 및 압축해제를 위한 방법 및 장치
JP2003318739A (ja) データシーケンスを圧縮するシステム、方法、およびコンピュータ読み取り可能媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090703

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101214

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110628