JPH1188192A - データ圧縮方法及び装置 - Google Patents

データ圧縮方法及び装置

Info

Publication number
JPH1188192A
JPH1188192A JP10169100A JP16910098A JPH1188192A JP H1188192 A JPH1188192 A JP H1188192A JP 10169100 A JP10169100 A JP 10169100A JP 16910098 A JP16910098 A JP 16910098A JP H1188192 A JPH1188192 A JP H1188192A
Authority
JP
Japan
Prior art keywords
data stream
address
item
array
buffer
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.)
Granted
Application number
JP10169100A
Other languages
English (en)
Other versions
JP3362177B2 (ja
Inventor
Craig Eric Hadady
クレイグ・エリック・ハダディー
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.)
Lexmark International Inc
Original Assignee
Lexmark International Inc
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 Lexmark International Inc filed Critical Lexmark International Inc
Publication of JPH1188192A publication Critical patent/JPH1188192A/ja
Application granted granted Critical
Publication of JP3362177B2 publication Critical patent/JP3362177B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • 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

Abstract

(57)【要約】 (修正有) 【課題】 圧縮度が大であり、圧縮の所要時間を短縮す
る。 【解決手段】 データストリームの第1の部分がウイン
ドウ内に読み込まれ、それは履歴バッファと先読みバッ
ファを有する。先読みバッファ内のデータストリームの
第4の部分のインデックスが選択され、これでポインタ
アレイ内の項目が選択される。この項目でレコードアレ
イ内の初期項目が選択される。初期項目の履歴バッファ
アドレスで参照される履歴バッファ内のアドレスから始
まるデータストリームの第3の部分が選択され、この第
3の部分は、先読みバッファ内のデータストリームの第
2の部分と比較される。これが一致しない場合、初期項
目のレコードアレイ・アドレスに基づいて、レコードア
レイ内の後続項目が選択され、その後続項目が初期項目
として指定される。一致又は項目に残が無くなる迄この
ステップは反復される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報通信及び記憶
の分野に関する。より具体的には、本発明は、ディジタ
ル化情報を格納するために必要なメモリのサイズを低減
するためにその情報を圧縮することに関する。
【0002】
【従来の技術】データ圧縮は、ディジタル化データ・ス
トリームなど、所与の情報を表すために必要な文字数を
低減するために使用する。使用する文字数を低減するこ
とにより、データ・ストリームは、より少ないメモリ容
量で格納するか、またはより短時間かより小さい帯域幅
を使用してより効率よく伝送することができる。データ
を圧縮するために、数通りの方法の1つまたは複数を使
用することができる。
【0003】データ圧縮方法を選択する際に重要な2つ
の考慮事項は、データを圧縮する程度と、圧縮が行われ
る速度である。圧縮度により、データを表すために使用
する文字数の低減量を意味する。文字数がわずかしか低
減されない場合、文字数が大幅に低減されたときほど、
データ圧縮が有益ではない。同様に、データを圧縮する
ために比較的長い時間を必要とする圧縮方法は、比較的
短い時間を必要とする方法ほど有益ではない可能性があ
る。したがって、データを表すために必要な文字数を大
幅に低減し、短時間で動作するデータ圧縮方法が一般に
好ましい。
【0004】
【発明が解決しようとする課題】必要なものは、圧縮度
が高く、データを圧縮するために必要な時間を短縮する
データ圧縮の方法及び装置である。
【0005】
【課題を解決するための手段】上記その他の必要性は、
データ・ストリームを圧縮するための方法によって満た
される。データ・ストリームの第1の部分はウィンドウ
内に読み込まれ、それは履歴バッファと先読みバッファ
とを有する。先読みバッファ内のデータ・ストリームの
第4の部分から取られたインデックスが選択され、この
インデックスに基づいて、ポインタ・アレイ内の項目が
選択される。このポインタ・アレイ項目に基づいて、レ
コード・アレイ内の初期項目が選択される。このレコー
ド・アレイ初期項目は、履歴バッファ・アドレスと、レ
コード・アレイ・アドレスとを有する。初期項目の履歴
バッファ・アドレスによって参照される履歴バッファ内
のアドレスから始まるデータ・ストリームの第3の部分
が選択される。データ・ストリームの第3の部分は先読
みバッファ内のデータ・ストリームの第2の部分と比較
される。データ・ストリームの第3の部分がデータ・ス
トリームの第2の部分と一致しない場合、初期項目のレ
コード・アレイ・アドレスに基づいて、レコード・アレ
イ内の後続項目が選択され、その後続項目が初期項目と
して指定される。
【0006】データ・ストリームの第3の部分がデータ
・ストリームの第2の部分に一致するかまたはレコード
・アレイ内にそれ以上項目が一切残らなくなるまで、第
3の部分の選択から後続項目の選択に至る諸ステップが
繰り返される。レコード・アレイ内にそれ以上項目が一
切残っていない場合、データ・ストリームの第2の部分
が出力ファイルに書き込まれ、ウィンドウ内に読み込ま
れたデータ・ストリームの第1の部分が所定の量だけ増
分される。データ・ストリームの第3の部分がデータ・
ストリームの第2の部分と一致する場合、データ・スト
リームの第3の部分の履歴バッファ・アドレスと、デー
タ・ストリームの第3の部分とデータ・ストリームの第
2の部分のうちの何バイトが一致するかを表す長さ値が
出力ファイルに出力され、ウィンドウ内に読み込まれた
データ・ストリームの第1の部分が一致したバイト数だ
け増分される。データ・ストリームのすべてがウィンド
ウに読み込まれるまで、インデックスを選択するステッ
プ以降のこの方法の諸ステップが繰り返される。
【0007】本発明の他の利点は、添付図面と関連して
考慮したときに好ましい実施例の詳細な説明を参照する
ことによって明らかになるだろう。添付図面は詳細をよ
りよく示すために一定の縮尺にはなっておらず、複数の
図面にわたって同様の参照番号は同様の要素を示す。
【0008】
【発明の実施の形態】その基本的な形式のディジタル・
データは、通常、0と1のストリームによって表され
る。それぞれの0とそれぞれの1はビットと呼ばれる。
0と1をグループ化したものは、バイトと呼ばれ、英字
や数字などの各種の文字を表すことができる。その方法
が実施されるハードウェアに応じて、1バイトは異なる
数のビットで構成することができる。好ましい圧縮装置
の機能ブロック図は図1に示す。
【0009】好ましいことに、この圧縮は、ビットごと
のランレングス符号化によって開始データ・ストリーム
を変換することから始まる。これは、ストリーム内の一
続きに含まれる連続0または1の数をカウントし、この
ようなランレングス数を出力ファイルに書き込むことに
よって行われる。たとえば、表1は32ビットの入力デ
ータ・ストリームを示す。
【0010】表1.入力データ・ストリーム 00001100111110000011101010000111
【0011】好ましい実施例では、出力ファイルに書き
込まれる第1のランレングス数は、必ず、初期の0の数
になる。表1に示す例では、初期の0の数は4である。
したがって、数値4がまず出力ファイルに書き込まれ
る。出力ファイルもディジタル・ファイルであることが
好ましいので、数値4を表す1と0のビット・パターン
が出力ファイルに書き込まれるものになることが分かる
だろう。この説明で書き込まれるものとして記載したす
べての数値について、これが該当することが好ましい。
入力データ・ストリーム内の第1の文字が0ではなく1
であれば、0という値が出力ファイルに書き込まれ、入
力データ・ストリームの先頭に0がまったく存在しない
ことを示すものと思われる。
【0012】初期の0の数が出力ファイルに書き込まれ
た後、初期の一続きの0に続く1の数が出力ファイルに
書き込まれる。表1に示す例では、初期の一続きの0に
続く1の数は2である。したがって、2が出力ファイル
に書き込まれる。上記の方法に従って、0と1のランレ
ングス数が交互に出力ファイルに書き込まれる。一続き
の0または1の長さが254を上回る場合、255とい
う値が出力ファイルに書き込まれ、その一続きの残余が
カウントされ、この残余値も出力ファイルに書き込まれ
る。一続きが非常に長い場合、残余値が書き込まれる前
に255という値がいくつか出力ファイルに書き込まれ
る可能性がある。したがって、出力ファイルを圧縮解除
する場合、好ましいことに圧縮解除ルーチンは、次に続
く値を255という値に加えて実際のランレングス値を
達成しなければならないことが255という値によって
示されるものと認識する。
【0013】32ビット以外の長さの入力データ・スト
リームにもこの方法が同様に適用可能であり、その長さ
はこの方法を説明する際に便宜上選択されたものである
ことが分かるだろう。表1に示す入力ストリームのすべ
ての0と1がビットごとのランレングス符号化によって
処理されると、表2に示す出力ファイルが作成されてい
ることになる。
【0014】表2.出力ファイル 4,2,2,5,5,3,1,1,1,1,4,3
【0015】ランレングス符号化は、通常、入力データ
・ストリームの長さをある程度まで低減するが、すべて
のデータ・ストリーム・タイプにとって効率のよい圧縮
方法ではない。たとえば、その入力データ・ストリーム
が複数の0または1が連続する一続きをあまり含んでい
ない場合、出力ファイルは入力データ・ストリームより
大幅に小さくなるわけではなく、入力データ・ストリー
ムを処理するために必要な時間は達成した圧縮度に値し
ない可能性がある。したがって、好ましい実施例では、
ランレングス符号化がデータ圧縮方法及び装置における
選択可能な任意選択の第1のステップになっている。ラ
ンレングス符号化を使用する場合には、ランレングス符
号化からの出力ファイルは、以下に説明する圧縮動作の
残りの部分の入力データ・ストリームと見なされること
になる。
【0016】次にその入力データ・ストリームは、修正
済みスライディング・ウィンドウ方法によって圧縮され
る。本質的にこの方法は、入力データ・ストリーム内の
同一の一続きの文字の繰返しを探すことにより、その入
力データ・ストリームを圧縮する。ビットごとのランレ
ングス符号化の例では、0と1によって表される入力デ
ータ・ストリームの例が示されている。データ圧縮のス
ライディング・ウィンドウ・ステージの入力データ・ス
トリームも1と0であることが好ましいが、このような
1と0は他の文字で表すことができ、そのため、この方
法をより容易に理解することができる。
【0017】好ましいことに、入力データ・ストリーム
は、履歴バッファと先読みバッファという2つの部分を
有するスライディング・ウィンドウに読み込まれる。好
ましい実施例では、履歴バッファのサイズは512バイ
トであり、先読みバッファのサイズは277バイトであ
る。しかし、代替実施例では、履歴バッファと先読みバ
ッファのサイズとして他の値を選択することができる。
【0018】入力データ・ストリームは一度にウィンド
ウ内に保持できる文字数以上の文字を含むことが多いの
で、このウィンドウはスライディング・ウィンドウとし
て指定される。したがって、入力データ・ストリームの
第1の部分だけが一度に処理され、先行する第1の部分
が処理され、出力ファイルに書き込まれると、入力デー
タ・ストリームの後続部分がそのウィンドウに読み込ま
れる。入力データ・ストリームのこの後続部分は次にデ
ータ・ストリームの第1の部分として指定され、好まし
いことに入力データ・ストリームのすべてがそのように
処理されるまで、処理はこのように続行される。ここで
使用する用語では入力データ・ストリームをスライディ
ング・ウィンドウに読み込まれるものとして記述してい
るが、これは記述言語であり、この方法はいくつかの異
なるやり方のうちの1つまたは複数で実際に実施できる
ことが分かるだろう。たとえば、好ましい実施例では、
入力データ・ストリームは全体または一部がメモリ内に
保持され、データ・ストリームのどの部分が履歴バッフ
ァまたは先読みバッファ内に現在位置するかを定義する
ためにポインタを使用する。
【0019】データ・ストリームの第1の部分を処理す
るため、先読みバッファ内に現在存在するデータ・スト
リームの一部分が、履歴バッファ内に現在存在するデー
タ・ストリームの一部分と比較される。先読みバッファ
から比較されているデータ・ストリームの一部分は第2
の部分として指定され、履歴バッファから比較されてい
るデータ・ストリームの一部分は第3の部分として指定
される。第2の部分と第3の部分との一致が見つかった
場合、2つの値が1対として出力データ・ファイルに書
き込まれる。第1の値は履歴バッファ内のデータ・スト
リームの第3の部分の先頭のアドレスを表し、第2の値
は第3の部分と一致した第2の部分の長さを表す。次に
入力データ・ストリームはスライディング・ウィンドウ
により第2の値の文字数だけ増分され、それは一致が見
つかった文字の数である。たとえば、表3に示すデータ
・ストリームについて検討すると、これはスライディン
グ・ウィンドウ内のデータ・ストリームの第1の部分を
表している。例のため、わずか20文字のウィンドウ・
サイズを使用する。
【0020】表3.20文字のスライディング・ウィン
ドウ内の入力データ・ストリーム 000000000111111 11112 123456789012345 67890 ABCDEFGHIJKLMNO FGHOL 履歴バッファ^先読みバッファ
【0021】データ・ストリーム内の中断の下に位置す
るカラットは、履歴バッファと先読みバッファとの間の
分割を表している。入力データ・ストリームは必ずしも
履歴バッファと先読みバッファとの間で物理的に分割す
る必要はないが、データ・ストリームのどの部分が履歴
バッファ内にあり、データ・ストリームのどの部分が先
読みバッファ内にあるかを追跡するために、ポインタま
たはその他のこのような仕組みを使用できることが分か
るだろう。以下に詳述するように、データ・ストリーム
の英字データの上にリストした値はアドレスを表す。好
ましいことに、データ・ストリームが処理されるにつれ
てウィンドウはデータ・ストリームに沿ってスライド
し、まだ処理されていないデータ・ストリームの新しい
部分が先読みバッファにまず入り、ウィンドウの履歴バ
ッファ側からスライディング・ウィンドウを出て行くま
で、履歴バッファによって増分されるようになってい
る。
【0022】先読みバッファ内のデータ・ストリームの
第2の部分が文字Fから始まるものと見なす。履歴バッ
ファ内のデータ・ストリームのうち、先読みバッファ内
の第2の部分と一致する第3の部分を見つけることが望
ましい。履歴バッファ内のデータ・ストリームのいくつ
かの異なる部分は、一致が見つかる前に第2の部分と比
較することができる。たとえば、第2の部分の先頭であ
る文字Fは、履歴バッファ内の第1の文字Aと比較する
ことができ、これは第3の部分として指定されることに
なる。当然のことながら、これらの文字は一致しないの
で、第2の部分と比較すべきデータ・ストリームの第3
の部分として、履歴バッファ内のデータ・ストリームの
後続部分が選択されるだろう。たとえば、次の第3の部
分は、履歴バッファ内の次の文字、すなわち、文字Bか
ら始まる可能性がある。これもデータ・ストリームの第
2の部分と一致しないので、後続の第3の部分が選択さ
れるだろう。
【0023】履歴バッファ内のデータ・ストリームの初
期及び後続の第3の部分を選択する方法は、一致を見つ
けるために必要な時間を大幅に短縮することができる。
たとえば、初期の第3の部分は、履歴バッファ内の第1
の文字から始めることによって必ず選択することがで
き、後続の第3の部分は、一致が見つかるかまたは履歴
バッファの終わりに達するまで履歴バッファ内を一度に
1文字ずつ連続して進むことによって選択することがで
きる。しかし、何らかの分類のインデックスを作成する
ことによって初期及び後続の第3の部分を選択する方が
より効率的である可能性がある。この点については、以
下に詳述する。
【0024】初期及び後続の第3の部分を見つける方法
にかかわらず、第3の部分と第2の部分との一致が見つ
かると、一致した第3の部分の先頭のアドレスが記録さ
れる。このアドレスは、履歴バッファの先頭からのオフ
セット値の形式を取ることが好ましい。表3に示す例で
は、履歴バッファ内の一致するFのアドレスは6であ
る。このアドレス6は、出力ファイルに書き込まれる出
力対の第1の値になる。次に書き込まれる値は、第2の
部分と一致する第3の部分の長さである。ここに示す例
では、FGHという第2の部分はFGHという第3の部
分と一致するので、第3の部分と第2の部分で一致する
3文字を表す3という値が出力ファイル内の出力対の第
2の値として書き込まれる。
【0025】先読みバッファ内の第2の部分と一致する
第3の部分は履歴バッファ内に複数存在する可能性があ
ることが分かるだろう。このような場合、一致する第3
の部分のうち、どれが最良一致であるかを決定する方法
を使用しなければならない。好ましいことに、このよう
な決定によるこのステップでは、入力データ・ストリー
ムのより大きい部分が処理されるので、第2の部分のう
ちの最大数の文字と一致する第3の部分が最良一致であ
ると見なされるだろう。2つまたはそれ以上の第3の部
分がいずれも第2の部分の同じ数の文字と一致する場
合、好ましい実施例では、アドレス示すために必要な文
字に関して最も小さいアドレスを有する第3の部分が最
良一致になる。このようにして、出力ファイルをできる
だけ小さく保つことができる。表に示す例では、第3の
部分のアドレスは履歴バッファの先頭からのオフセット
として計算されている。しかし、代替実施例では、先読
みバッファに最も近い履歴バッファの反対側からのオフ
セットを計算するなど、他のアドレス方式も使用可能で
あることが分かるだろう。
【0026】このようにして一致が見つかると、入力デ
ータ・ストリームは、第3及び第2の部分間の一致の長
さである、出力ファイルに書き込まれる第2の値と同じ
数の文字だけスライディング・ウィンドウにより増分さ
れる。したがって、これと同じ文字数の入力データ・ス
トリームがスライディング・ウィンドウの一方の側で履
歴バッファから外へ増分され、これと同じ文字数の入力
データ・ストリームがスライディング・ウィンドウの反
対側で先読みバッファ内へ増分される。上記の例の場
合、第2の値は3であるので、ウィンドウによりデータ
・ストリームを増分した後、そのウィンドウは表4に示
すようにデータ・ストリームを保持するだろう。
【0027】表4.20文字のスライディング・ウィン
ドウ内の入力データ・ストリーム 000000000111111 11112 123456789012345 67890 DEFGHIJKLMNOFGH OLABD 履歴バッファ^先読みバッファ
【0028】ウィンドウ内に存在する入力データ・スト
リームのこの増分部分は、処理されるデータ・ストリー
ムの新しい第1の部分になる。先読みバッファ内のデー
タ・ストリームの新しい第2の部分は英字Oから始ま
る。オフセット・アドレス番号はその位置を保持し、第
2の部分と初期または後続の第3の部分との一致を見つ
ける処理が新たに始まる。この例では、第2の部分はア
ドレス12から始まるこの履歴バッファ内の第3の部分
と一致し、1文字の長さの間続く。したがって、表3及
び表4に示すように見つかった一致について出力ファイ
ルに書き込まれる最初の2対は表5に示す通りになるだ
ろう。
【0029】表5.出力ファイル 6,3,12,1
【0030】書き込まれる第1の値が長さになり、書き
込まれる第2の値がアドレスになるように、出力ファイ
ルに値を書き込む順序を逆にすることができことが分か
るだろう。アドレス値と長さ値など、出力ファイルに書
き込まれる値は、表5に示すように出力ファイルに書き
込むことができるが、各種の方式を使用して書き込むこ
とが好ましく、その方式は出力ファイルのサイズを低減
するように選択される。たとえば、アドレスまたは長さ
値は、実際の値として書き込むのではなく、トークン化
することができる。好ましいことに、ユーザは、静的符
号化方法または動的符号化方法という2通りの出力ファ
イル符号化方法の一方を選択することができる。
【0031】静的符号化方法では、長さ値とアドレス値
の一方または両方が特定の固定ビット・シーケンスにマ
ッピングされる。この方法の好ましい実施例では、長さ
だけがそのようにトークン化され、アドレスは固定長の
9ビット・フィールドに書き込まれる。長さ値とトーク
ン文字とを相関させる事前定義テーブル内の長さの値を
調べることによって、長さ値が符号化される。トークン
文字は長さの値より短いことが好ましく、最も頻繁に発
生する長さ値には最短トークンが割り当てられることが
好ましく、その結果、出力ファイルはできるだけ小さい
ものにすることができる。一致が一切見つからないかま
たは一致長が1である場合、エンコーダは、2進0と、
それに続く非一致バイトとを放出する。8ビット・バイ
トの場合、これは合計9ビットになるはずである。出力
ファイルをデコードすると、デコーダは、もう一度、事
前定義テーブルで長さトークンを調べ、長さ値を取り戻
す。
【0032】1より大きい一致長が見つかった場合、好
ましい実施例では、表6に示すトークン・テーブルを使
用する。
【0033】表6.静的トークン化テーブル 一致長 長さコード 変位コード 2〜3 10x 9ビット・コード 4〜7 1110xx 9ビット・コード 8〜15 1110xxx 9ビット・コード 16〜31 11110xxxx 9ビット・コード 32〜277 11111xxxxxxxx 9ビット・コード
【0034】9ビット変位コードは、以下のように計算
することが好ましい。 temp=(先読みバッファ内の第1のバイトのアドレス) -(一致位置アドレス)-1 if(temp<0) then(変位コード)=temp+796 else(変位コード)=temp 式中、アドレスは履歴バッファのアドレスである。
【0035】長さコードのXは、コード範囲内の所与の
長さのオフセットでコード化される。たとえば、8〜1
5の範囲の場合、12というストリング長は1110100と
してコード化され、その範囲へのオフセットが4になる
だろう。最終トークンは、長さコードとそれに続く変位
コードである。圧縮器が圧縮サイクルを終了すると、好
ましいことに1111111111111である特殊なファイルの終
わりトークンが出力ファイルに書き込まれる。これは、
出力ファイルの終わりにマークを付けるものである。
【0036】動的符号化方法は、静的符号化方法と同じ
基本原理に従って機能するが、長さ値を符号化するため
のテーブルは、データ・ストリームが処理されるにつれ
て変化しないような静的事前定義テーブルではなく、む
しろ、処理中のデータ・ストリームの特定の特性に基づ
いて変化する動的テーブルである。この方法では、異な
る長さ値が発生する頻度が監視され、所与の長さ値の頻
度が増加すると、発生頻度がそれより低い長さ値より短
いテーブル内のトークンがそれに割り当てられる。好ま
しいことに、事前定義規則セットを使用して、このよう
なテーブル割当て決定を行い、この規則セットは圧縮装
置と圧縮解除装置の両方に提供されるので、圧縮解除器
は出力ファイルを作成する際に圧縮器が行ったのと同じ
時点で出力ファイルの処理中にテーブル変更を行い、出
力ファイルは圧縮解除器によって開始データ・ストリー
ムに応じて完全に再構築されることになる。動的テーブ
ルを使用することにより、データ・ストリームの圧縮に
よって発生頻度が変化しても、最も頻繁に発生する長さ
値には最小トークン値が割り当てられる。
【0037】たとえば、好ましい実施例では、第2の符
号化方法がまず上記の符号化方法を使用して、出力トー
クンを生成する。トークンが生成されると、各トークン
・タイプのものがいくつ生成されるかを論理回路が追跡
する。所与のトークン・タイプの頻度がより少ない長さ
コード・ビットでコード化されたトークン・タイプを上
回る場合、このようにより高い頻度のトークン・タイプ
は、より少ない長さコード・ビットを有するタイプの長
さコードを採用する。表7に示すトークン化テーブルに
ついて検討する。
【0038】 表7.初期構成における動的符号化テーブル タイプ 一致長 長さコード 変位コード A 2 100 9ビット・コード B 3 101 9ビット・コード C 4〜7 1110xx 9ビット・コード D 8〜15 1110xxx 9ビット・コード E 16〜31 11110xxxx 9ビット・コード F 32〜277 11111xxxxxxxx 9ビット・コード
【0039】たとえば、圧縮ジョブ中にタイプEのトー
クンの数がタイプDのトークンの数を上回る場合、今後
のタイプE及びDのトークンは表8に示すようにコード
化されることになる。
【0040】 表8.再構成後の動的符号化テーブル タイプ 一致長 長さコード 変位コード D 8〜15 11110xxx 9ビット・コード E 16〜31 1110xxxx 9ビット・コード
【0041】使用可能なトークンの具体的な実施例は上
記に示されている。しかし、これらのトークンは好まし
い実施例で使用可能なトークンの例であることが分かる
だろう。当然のことながら、長さデータ及び変位を符号
化するために使用するトークンのより広い概念の範囲内
で他のトークンと、そのようにすることにとって利益が
あるときに符号化が変化可能な動的方式を使用すること
は可能である。
【0042】好ましい実施例では、この圧縮方法は、そ
の方法の数通りのステップが同時に行われるように、同
時方式で実行される。たとえば、第3の部分と第2の部
分を比較する複数の圧縮器を提供することにより、複数
の第3の部分を一度に比較することができ、したがっ
て、より迅速に一致を見つけることができる。好ましい
実施例では、4つの比較器を使用する。
【0043】先読みバッファ内の第2の部分と一致する
第3の部分がまったく存在しない場合、データ・ストリ
ームはウィンドウにより所与の文字数だけ増分される。
先読みバッファから履歴バッファに増分される文字は出
力ファイルに書き込まれ、新しい第2の部分と初期また
は後続の第3の部分とを付き合わせようとするプロセス
が繰り返される。好ましい実施例では、データ・ストリ
ームは単一文字だけ増分されるので、上記のようにその
単一文字が出力ファイルに書き込まれ、先読みバッファ
から履歴バッファに増分される。
【0044】前述のように、圧縮装置は、データ・スト
リームの第3の部分候補を見つけるために履歴バッファ
を連続的に進むこととは異なる方法を使用することによ
り、より迅速にデータ・ストリームについて操作するこ
とができる。好ましいことに、先読みバッファ内の第2
の部分と一致するための候補になりそうな履歴バッファ
内の第3の部分をより迅速に識別するために、2つのア
レイを有する装置を使用する。この2つのアレイは、ポ
インタ・アレイとレコード・アレイとして指定されてい
る。
【0045】概要としては、データ・ストリームの第1
の部分がウィンドウに読み込まれると、データ・ストリ
ームの第4の部分を使用してインデックスを作成し、こ
れを使用してポインタ・アレイ内の項目を選択する。次
に、ポインタ・アレイ内の項目を使用してレコード・ア
レイ内の初期項目を選択する。レコード・アレイ内の初
期項目は、データ・ストリームの第2の部分と一致しそ
うなデータ・ストリームの初期の第3の部分用の履歴バ
ッファ内のアドレスを含む。また、レコード・アレイ内
の初期項目はレコード・アレイ・アドレスも有し、この
アドレスはレコード・アレイ内の後続項目を指し示し、
その後続項目はデータ・ストリームの第2の部分と一致
するための候補になりそうなデータ・ストリームの後続
の第3の部分用の履歴バッファ・アドレスを含む。初期
項目によって参照される第3の部分が第2の部分に妥当
な一致をもたらさない場合あるいはもっと多くの第3の
部分を比較することが望ましい場合、後続項目を使用す
ることになる。このようにして、一致しそうなものを突
き止めるためのより効率的で目標になる方法が提供され
る。
【0046】アクセスされる後続レコード・アレイ項目
の数は、いくつかの基準のバランスによって決まること
が好ましい。たとえば、レコード・アレイの終わりに達
した場合、後続レコード・アレイ項目を選択するプロセ
スが停止する可能性がある。また、レコード・アレイ項
目内の履歴バッファ・アドレスが第2の部分と一致する
第3の部分を指し示し、一致部分の長さが所定の値と等
しいかまたはそれより大きい場合、後続レコード・アレ
イ項目は調査しない可能性がある。さらに、所定の数の
レコード・アレイ項目だけが調査可能なので、その時点
ですでに一致することが分かっていて最大一致長を有す
る第3の部分を、一致する第3の部分として使用する。
このようにして、好ましい装置により、一致する第3の
部分を検索するときに費やす時間が長すぎないように保
証される。
【0047】ポインタ・アレイとレコード・アレイが有
用になるためには、それらにデータをロードし、圧縮装
置の動作中にそれらを維持しなければならない。このプ
ロセスの概要は図3に示す。アレイにロードするには、
最初に充填される先読みバッファが一杯になり、履歴バ
ッファ内に1バイトのデータ・ストリームが存在するよ
うになるまで、一度に1バイトずつデータ・ストリーム
が増分式にウィンドウに読み込まれる。この時点で、好
ましい実施例では、履歴バッファ内に移動したばかりの
バイトの下位4ビットと、先読みバッファ内の第1のバ
イト(履歴バッファ内に次に増分すべきバイト)の下位
4ビットであるデータ・ストリームの第5の部分が連結
される。この新たに形成された8ビット・バイトは、ポ
インタ・アレイ内の項目を調べるために使用するポイン
タである。したがって、ポインタ・アレイのサイズと、
ポインタを形成するために使用するビット数との間に所
定の関係がある。8ビットのディジタル情報は256個
の固有の値を有し、これはポインタ・アレイのサイズで
ある。したがって、代替実施例では、他のポインタ・ア
レイ・サイズを選択し、同一基準で異なる数のビットを
使用してそのポインタを作成することができる。
【0048】好ましい実施例のレコード・アレイは51
2項目の長さを有する。したがって、レコード・アレイ
内の1つの項目を指し示すために9ビットが必要であ
る。前述のように、履歴バッファも512バイトという
好ましいサイズを有するので、履歴バッファ内のすべて
のバイトをアドレス指定するためにも9ビットが必要で
ある。レコード・アレイ及び履歴バッファのサイズにつ
いては他の値も選択することができ、それらを完全にア
ドレス指定するには同一基準で異なる数のアドレス・ビ
ットが必要になるだろう。
【0049】ポインタによって参照されるポインタ・ア
レイ内の項目は読み取られ、一時的に保管され、ポイン
タ・アレイ内のその位置はレコード・アレイ内で次に使
用可能な項目のアドレスで上書きされる。第1のサイク
ルの間、これはレコード・アレイ内の第1の項目であ
り、第2のサイクルの間は、第2の項目であり、以下同
様になる。次に使用可能なレコード・アドレスは、9ビ
ット・カウンタで増分されることが好ましく、圧縮装置
が始動されると0に初期設定される。初期始動またはリ
セット後にすべての項目が無効になるので、レコード・
アレイ内のデフォルト始動値は無効レコード項目を示
す。一時的に保管されたポインタ・アレイからの項目は
履歴バッファ内の第1のバイトの現行アドレスと連結さ
れ、そのバイトは履歴バッファの第1のアドレスに含ま
れ、上記のポインタ・アレイに書き込まれるようにレコ
ード・アレイ内で次に使用可能項目のアドレスによって
参照されるレコード・アレイ項目に書き込まれる。連結
したレコード・アレイ項目の好ましい実施例の図は図2
に示す。
【0050】この時点で、レコード・アレイ内で次に使
用可能な項目の値は1だけ増分され、データ・ストリー
ムの次のバイトは先読みバッファから履歴バッファに増
分され、ポインタ・アレイへの8ビット・インデックス
を形成し、ポインタ・アレイとレコード・アレイをロー
ドするプロセスは循環して繰り返される。このプロセス
は、データ・ストリームがウィンドウで増分されたとき
にポインタ・アレイとレコード・アレイを更新するため
に使用することが好ましく、データ・ストリームの各バ
イトが先読みバッファから履歴バッファに増分されるた
びに行われる。
【0051】好ましい実施例では、このようにしてポイ
ンタ・アレイとレコード・アレイをロードして更新する
目的は、先読みバッファ内のデータ・ストリームの第2
の部分と履歴バッファ内のデータ・ストリームの第3の
部分との間で一致しそうな候補を提供するために使用で
きるようにすることである。したがって、前の一致が一
切見つからなかった場合に1バイトだけ、または前の一
致の長さのバイト数だけ、データ・ストリームがウィン
ドウで増分され、データ・ストリームの新しいバイトが
履歴バッファに入った場合には、第3の部分になりそう
な候補を見つける方法を使用することが好ましい。ポイ
ンタ・アレイとレコード・アレイを使用する好ましい方
法の流れ図は図4に示す。
【0052】第1に、好ましくは先読みバッファ内の最
初の2バイト(履歴バッファ内へ増分すべき次の2バイ
ト)であるデータ・ストリームの第4の部分の各バイト
からの下位4ビットを連結して8ビット・インデックス
にし、これを使用してポインタ・アレイ内の項目を参照
する。2バイトのそれぞれから異なる数のビットを使用
することができ、異なる数のバイトを使用することがで
きるが、好ましい実施例ではこの方法を使用することに
よって利益が得られる。多くのデータ・ストリームは、
ランレングス・エンコーダによって処理したときに16
以下の値を生成することになる。これは、通常、データ
・ストリームが、長さが16文字以上の0または1の一
続きを有することがないことを意味する。したがって、
ランレングス・エンコーダからの微分情報のほとんど
は、そのバイトの下位4ビットに含まれることになる。
したがって、これらは、ポインタ・アレイをロードし、
ポインタ・アレイを読み取るためのインデックスを作成
するために使用するビットになる。代替実施例では、各
バイトからの5ビットを使用できるだろう。この実施例
では、ポインタ・アレイのサイズは1024項目になる
ことが好ましく、これは10ビットでアドレス指定可能
な項目の数である。
【0053】インデックスによって参照されるポインタ
・アレイ内の項目を読み取り、妥当性を検査する。無効
ポインタ・アレイ項目は、圧縮方法を開始またはリセッ
トしたときにポインタ・アレイに書き込まれるデフォル
ト値を含む項目である。ポインタ・アレイ項目が無効値
を含む場合、第3の部分と一致する候補がまったく存在
せず、圧縮ルーチンは先読みバッファ内の第1のバイト
を出力ファイルに書き込み、ウィンドウでデータ・スト
リームを1バイトだけ増分し、新しいインデックスを作
成する。
【0054】インデックスによって参照されるポインタ
・アレイ内の項目が有効である場合、それはレコード・
アレイ内のアドレスであり、ポインタ・アレイ内の項目
に基づいて選択される。これは初期レコード・アレイ項
目である。レコード・アレイ内の選択された項目は、い
ずれも前述したように、履歴バッファ・アドレスと、他
のレコード・アレイ・アドレスと、履歴バッファから前
に読み取られたバイトとの連結を含む。履歴バッファか
らのバイトは妥当性検査として機能する。このバイトが
先読みバッファの第1のバイトと一致しない場合、レコ
ード・アレイ項目は無効であり、一致を検査すべき第3
の部分の候補がそれ以上存在しないことを示す。
【0055】初期レコード・アレイ項目が有効である場
合、この項目内の履歴バッファ・アドレスは履歴バッフ
ァ内の第3の部分の候補を参照する。このアドレスは比
較器ユニットに渡され、そのユニットは履歴バッファ内
の第3の部分を調べ、それを先読みバッファ内の第2の
部分と比較して一致部分を見つける。一致が見つかった
場合、その一致部分の長さも比較器ユニットによって決
定される。
【0056】初期レコード・アレイ項目は、レコード・
アレイ内の後続項目へのアドレスも含む。この後続項目
についても妥当性が検査され、有効であれば、この後続
項目の履歴バッファ・アドレスによって参照される履歴
バッファ内の後続の第3の部分についても、比較器によ
って第2の部分と一致するかどうかが検査される。この
後続項目は初期項目として指定することができ、レコー
ド・アレイでそれ以上の後続項目を見つけるプロセスが
続行される。追加項目を見つけ、履歴バッファ内の追加
の第3の部分と先読みバッファ内の第2の部分とを比較
するこのプロセスは、いくつかの好ましい基準のうちの
少なくとも1つを満足するまで続行される。このような
基準は上記のようなものであることが好ましく、レコー
ド・アレイ内に有効項目がそれ以上ないか、妥当な一致
が見つかったか、レコード・アレイ内の所定の数の項目
が識別され、それに関連する履歴バッファ・アドレスが
比較器ユニットに渡されたことである。この時点では、
一致が見つかっていないか、またはこの時点で見つかっ
た最良一致を使用するので、圧縮方法は上記のように続
行される。
【0057】入力データ・ストリームのすべてがウィン
ドウで増分されると、データ・ストリームの圧縮が完了
する。装置が機能するためには先読みバッファも履歴バ
ッファも一杯になっている必要はなく、装置は有効情報
を含むバッファの一部分を識別することが分かるだろ
う。たとえば、圧縮中のファイルのサイズが先読みバッ
ファまたは履歴バッファのサイズより小さいときは、こ
れは重要なことである。上記のようにトークン化可能な
出力ファイルは、上記の選択した圧縮ルーチンの逆の順
序を使用して出力ファイルを操作する圧縮解除器によっ
て圧縮解除することができる。
【0058】上記のように詳細に本発明の具体的な実施
例を説明してきたが、当業者にとって周知の各種適合態
様にも同様に本発明が適用可能であることが分かるだろ
う。
【図面の簡単な説明】
【図1】図1は、圧縮装置の一実施例の機能ブロック図
である。
【図2】図2は、レコード・アレイ項目を形成するため
の連結の一方法を示す図である。
【図3】図3は、ポインタ・アレイとレコード・アレイ
を更新するための方法の一実施例の流れ図である。
【図4】図4は、ポインタ・アレイとレコード・アレイ
を使用してデータ・ストリームの第3の部分を選択する
ための一実施例の流れ図である。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 データ・ストリームを圧縮するための方
    法において a.前記データ・ストリームの第1の部分をウィンドウ
    内に読み込むステップであって、前記ウィンドウが履歴
    バッファと先読みバッファとを有するステップと、 b.前記先読みバッファ内の前記データ・ストリームの
    第4の部分から取ったインデックスを選択するステップ
    と、 c.前記インデックスに基づいてポインタ・アレイ内の
    項目を選択するステップと、 d.前記ポインタ・アレイ項目に基づいてレコード・ア
    レイ内の初期項目を選択するステップであって、前記レ
    コード・アレイ初期項目が履歴バッファ・アドレスとレ
    コード・アレイ・アドレスとを有するステップと、 e.前記初期項目の前記履歴バッファ・アドレスによっ
    て参照される前記履歴バッファ内のアドレスから始まる
    前記データ・ストリームの第3の部分を選択するステッ
    プと、 f.前記データ・ストリームの前記第3の部分と前記先
    読みバッファ内の前記データ・ストリームの第2の部分
    とを比較するステップと、 g.前記データ・ストリームの前記第3の部分が前記デ
    ータ・ストリームの前記第2の部分と一致しない場合
    に、前記初期項目の前記レコード・アレイ・アドレスに
    基づいて前記レコード・アレイ内の後続項目を選択する
    ステップであって、前記後続項目が初期項目として指定
    されるステップと、 h.前記データ・ストリームの前記第3の部分が前記デ
    ータ・ストリームの前記第2の部分と一致するかまたは
    前記レコード・アレイ内にそれ以上項目が一切残らなく
    なるまで、ステップe.〜g.を繰り返すステップであ
    って、 i.前記レコード・アレイ内にそれ以上項目が一切残っ
    ていない場合に、前記データ・ストリームの前記第2の
    部分を出力ファイルに書き込み、前記データ・ストリー
    ムの前記第1の部分を所定の量だけ前記ウィンドウ内に
    増分し、 ii.前記データ・ストリームの前記第3の部分が前記デ
    ータ・ストリームの前記第2の部分と一致する場合に、
    前記データ・ストリームの前記第3の部分の履歴バッフ
    ァ・アドレスと、前記データ・ストリームの前記第3の
    部分と前記データ・ストリームの前記第2の部分のうち
    の何バイトが一致するかを表す長さ値とを前記出力ファ
    イルに出力し、前記ウィンドウ内に読み込まれた前記デ
    ータ・ストリームの前記第1の部分を一致したバイト数
    だけ増分するステップと、 i.前記データ・ストリームのすべてが前記ウィンドウ
    内に読み込まれるまで、ステップb.から前記方法を繰
    り返すステップとを含む方法。
  2. 【請求項2】 初期データ・ストリームを圧縮するため
    の装置において a.ランレングス符号化によって前記初期データ・スト
    リーム内の連続する一続きの0と1を選択的に圧縮し、
    前処理済みデータ・ストリームを生成するためのビット
    ごとのランレングス・プリプロセッサと、 b.前記初期データ・ストリームと前記前処理済みデー
    タ・ストリームの一方の第1の部分を選択的に読み取る
    ためのスライディング・ウィンドウ圧縮器であって、複
    数のアドレスと512バイトのサイズを有する履歴バッ
    ファと、複数のアドレスと277バイトのサイズを有す
    る先読みバッファとを有するスライディング・ウィンド
    ウ圧縮器と、 c.アドレスを有する複数の項目と、前記先読みバッフ
    ァ内の前記データ・ストリームからの第1のバイトとを
    有するレコード・アレイであって、前記項目の少なくと
    も一部分が他のレコード・アレイ項目のアドレスと前記
    履歴バッファ・アドレスの1つとを含むレコード・アレ
    イと、 d.アドレスを有する複数の項目を有するポインタ・ア
    レイであって、前記項目の少なくとも一部分が前記レコ
    ード・アレイ内の前記項目の1つのアドレスを含むポイ
    ンタ・アレイと、 e.前記先読みバッファ内の前記第1のバイトの一部分
    と前記データ・ストリームの第2のバイトの一部分から
    インデックスを作成するための手段と、 f.前記インデックスに対応するアドレスを有する前記
    ポインタ・アレイ内の項目を選択し、読み取るための手
    段と、 g.前記選択したポインタ・アレイ項目を妥当性検査す
    るための手段であって、前記レコード・アレイ内の前記
    項目の1つのアドレスを含まない項目が無効ポインタ・
    アレイ項目である手段と、 h.前記ポインタ・アレイ内の妥当性検査済み項目から
    読み取ったアドレスに対応するアドレスを有する前記レ
    コード・アレイ内の初期項目を選択し、読み取るための
    手段と、 i.前記選択したレコード・アレイ初期項目を妥当性検
    査するための手段であって、前記先読みバッファ内の前
    記データ・ストリームからの前記第1のバイトを含まな
    い項目が無効レコード・アレイ初期項目である手段と、 j.前記妥当性検査済みレコード・アレイ初期項目に含
    まれる前記履歴バッファのアドレスから始まる前記デー
    タ・ストリームの第3の部分を選択するための手段と、 k.前記データ・ストリームの前記第3の部分と前記先
    読みバッファ内の前記第1のバイトから始まる前記デー
    タ・ストリームの第2の部分とを比較し、前記第3の部
    分と前記第2の部分が一致するかどうかを判定し、前記
    第3の部分と前記第2の部分が一致する長さをバイト数
    で表して決定するための比較器ユニットと、 l.前記初期項目に含まれる前記レコード・アレイ・ア
    ドレスに基づいて前記レコード・アレイ内の後続項目を
    選択するための手段であって、前記後続項目が初期項目
    として指定される手段と、 m.前記第3の部分が前記第2の部分と一致するバイト
    数が少なくとも所定の値と等しいことと、前記レコード
    ・アレイ内にそれ以上項目が一切残っていないことと、
    少なくとも所定数のレコード・アレイ項目が調査された
    こととを含む、複数の条件のうちの少なくとも1つを満
    足するまで、要素j.〜l.を繰り返し操作するための
    手段と、 n.前記第3の部分の長さとアドレスを含む基準によっ
    て判定したように、前記第2の部分と最もよく一致する
    第3の部分を選択するための手段と、 o.前記履歴バッファ・アドレスと前記選択済み第3の
    部分の長さとを出力ファイルに出力するための手段と、 p.静的テーブルと動的テーブルの一方を使用して、前
    記出力ファイルに出力された長さを選択的にトークン化
    するための手段と、 q.前記データ・ストリーム内の差に応じて変化しない
    前記静的テーブルの所定の順序に応じて、前記長さをト
    ークン化するための静的テーブルと、 r.前記データ・ストリーム内の差に応じて前記動的テ
    ーブルの所定の順序を変更する規則に応じて、前記長さ
    をトークン化するための動的テーブルと、 s.前記データ・ストリームのすべてが圧縮されるま
    で、前記ウィンドウ内に読み込まれた前記データ・スト
    リームの前記第1の部分をバイト数だけ増分するための
    手段であって、一致が見つかった場合は前記バイト数が
    前記長さによって決定され、一致が見つからなかった場
    合は前記バイト数が1になる手段と、 t.1111111111111という値を前記出力ファイルに書き
    込むための手段とを含む装置。
JP16910098A 1997-05-12 1998-05-12 データ圧縮方法及び装置 Expired - Fee Related JP3362177B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/854,716 US5798718A (en) 1997-05-12 1997-05-12 Sliding window data compression method and apparatus
US08/854,716 1997-05-12

Publications (2)

Publication Number Publication Date
JPH1188192A true JPH1188192A (ja) 1999-03-30
JP3362177B2 JP3362177B2 (ja) 2003-01-07

Family

ID=25319383

Family Applications (1)

Application Number Title Priority Date Filing Date
JP16910098A Expired - Fee Related JP3362177B2 (ja) 1997-05-12 1998-05-12 データ圧縮方法及び装置

Country Status (6)

Country Link
US (1) US5798718A (ja)
EP (1) EP0878914A3 (ja)
JP (1) JP3362177B2 (ja)
KR (1) KR19980086979A (ja)
CN (1) CN1104094C (ja)
TW (1) TW421926B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010517467A (ja) * 2007-01-31 2010-05-20 テレフオンアクチーボラゲット エル エム エリクソン(パブル) バイナリデータブロックのデジタル圧縮

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US6339614B1 (en) * 1996-12-20 2002-01-15 Intel Corporation Method and apparatus for quantizing and run length encoding transform coefficients in a video coder
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6885319B2 (en) * 1999-01-29 2005-04-26 Quickshift, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6208273B1 (en) 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US7538694B2 (en) 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US6320523B1 (en) * 1999-07-30 2001-11-20 Unisys Corporation Method and apparatus for reducing the time required for compressing data
US6188333B1 (en) * 1999-08-12 2001-02-13 Unisys Corporation LZW data compression apparatus and method using look-ahead mathematical run processing
US6515598B2 (en) * 2000-12-22 2003-02-04 Cilys 53, Inc. System and method for compressing and decompressing data in real time
US6744388B1 (en) * 2002-06-19 2004-06-01 Xilinx, Inc. Hardware-friendly general purpose data compression/decompression algorithm
US6667701B1 (en) * 2002-07-16 2003-12-23 Motorola, Inc. Variable length decoder
US7143238B2 (en) * 2003-09-30 2006-11-28 Intel Corporation Mechanism to compress data in a cache
US20070263668A1 (en) * 2006-05-11 2007-11-15 Lau David K W System, method and computer program for evaluating the audio quality of a received audio record
CN1997011B (zh) * 2006-07-26 2011-01-12 白杰 数据分割方法和数据分割装置
NZ549548A (en) * 2006-08-31 2009-04-30 Arc Innovations Ltd Managing supply of a utility to a customer premises
US7486211B2 (en) * 2007-04-13 2009-02-03 Apple Inc. Method and system for entropy coding
US20080259891A1 (en) * 2007-04-17 2008-10-23 Telefonaktiebolaget Lm Ericsson (Publ) Multiple packet source acknowledgement
US7804428B2 (en) * 2008-11-10 2010-09-28 Apple Inc. System and method for compressing a stream of integer-valued data
EP2451083A1 (en) * 2010-11-09 2012-05-09 Océ-Technologies B.V. Method for compressing and decompressing digital data
WO2012090584A1 (ja) 2010-12-28 2012-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索開始点を決定する装置及び方法
US8848250B2 (en) * 2012-10-23 2014-09-30 Kyocera Document Solutions Inc. Compression of halftoned digital images
US9384204B2 (en) * 2013-05-22 2016-07-05 Amazon Technologies, Inc. Efficient data compression and analysis as a service
CN104156990B (zh) * 2014-07-03 2018-02-27 华南理工大学 一种支持特大型数据窗口的无损压缩编码方法及系统
US9385748B2 (en) * 2014-10-21 2016-07-05 Huawei Technologies Co., Ltd. Parallel dictionary-based compression encoder
US9946522B1 (en) * 2016-12-16 2018-04-17 International Business Machines Corporation Generating code for real-time stream processing
CN108845746A (zh) * 2018-07-13 2018-11-20 成都东方闻道科技发展有限公司 一种答题组件

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61295765A (ja) * 1985-06-25 1986-12-26 Hitachi Ltd ランレングス符号化復号化方式
JPH0378322A (ja) * 1989-08-22 1991-04-03 Fujitsu Ltd データ圧縮方式
JPH03204232A (ja) * 1989-12-28 1991-09-05 Internatl Business Mach Corp <Ibm> 圧縮データの符号化方法
JPH0795093A (ja) * 1993-07-08 1995-04-07 Internatl Business Mach Corp <Ibm> 順次データ圧縮アルゴリズムを実行する装置及び方法
JPH07297728A (ja) * 1994-04-15 1995-11-10 Internatl Business Mach Corp <Ibm> パターン一致を探索するための方法およびシステム

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1249924B (ja) * 1962-07-17
US3739085A (en) * 1971-07-09 1973-06-12 Addressograph Multigraph Coding technique
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4494108A (en) * 1981-11-09 1985-01-15 International Business Machines Corporation Adaptive source modeling for data file compression within bounded memory
JPH0828053B2 (ja) * 1983-08-08 1996-03-21 株式会社日立製作所 データ記録方法
GB2172127B (en) * 1985-03-06 1988-10-12 Ferranti Plc Data compression system
US4626829A (en) * 1985-08-19 1986-12-02 Intelligent Storage Inc. Data compression using run length encoding and statistical encoding
JPH0815263B2 (ja) * 1986-12-12 1996-02-14 株式会社日立製作所 データ圧縮復元方法
US4876541A (en) * 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data
US4906991A (en) * 1988-04-29 1990-03-06 Xerox Corporation Textual substitution data compression with finite length search windows
US5003307A (en) * 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5126739A (en) * 1989-01-13 1992-06-30 Stac Electronics Data compression apparatus and method
GB2232797B (en) * 1989-06-16 1993-12-08 Samsung Semiconductor Inc RAM based serial memory with pipelined look-ahead reading
US4971407A (en) * 1989-08-09 1990-11-20 Unisys Corp. Two stage run and string data compressor providing doubly compressed output
US4988998A (en) * 1989-09-05 1991-01-29 Storage Technology Corporation Data compression system for successively applying at least two data compression methods to an input data stream
US4955066A (en) * 1989-10-13 1990-09-04 Microsoft Corporation Compressing and decompressing text files
US5049880A (en) * 1990-04-02 1991-09-17 Tektronix, Inc. Bit-wise run-length encoding for data compression
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5051745A (en) * 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
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
US5140321A (en) * 1991-09-04 1992-08-18 Prime Computer, Inc. Data compression/decompression method and apparatus
US5155484A (en) * 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
US5455943A (en) * 1992-10-08 1995-10-03 Salient Software, Inc. Method and apparatus for finding longest and closest matching string in history buffer prior to current string
US5426779A (en) * 1991-09-13 1995-06-20 Salient Software, Inc. Method and apparatus for locating longest prior target string matching current string in buffer
US5260693A (en) * 1991-10-11 1993-11-09 Spacelabs Medical, Inc. Method and system for lossless and adaptive data compression and decompression
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5227788A (en) * 1992-03-02 1993-07-13 At&T Bell Laboratories Method and apparatus for two-component signal compression
US5379036A (en) * 1992-04-01 1995-01-03 Storer; James A. Method and apparatus for data compression
US5659713A (en) * 1992-04-24 1997-08-19 Digital Equipment Corporation Memory stream buffer with variable-size prefetch depending on memory interleaving configuration
US5586294A (en) * 1993-03-26 1996-12-17 Digital Equipment Corporation Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer
US5521597A (en) * 1993-08-02 1996-05-28 Mircosoft Corporation Data compression for network transport
US5563595A (en) * 1993-12-23 1996-10-08 International Business Machines Corporation Method and apparatus for compressing data
US5502439A (en) * 1994-05-16 1996-03-26 The United States Of America As Represented By The United States Department Of Energy Method for compression of binary data
US5572206A (en) * 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61295765A (ja) * 1985-06-25 1986-12-26 Hitachi Ltd ランレングス符号化復号化方式
JPH0378322A (ja) * 1989-08-22 1991-04-03 Fujitsu Ltd データ圧縮方式
JPH03204232A (ja) * 1989-12-28 1991-09-05 Internatl Business Mach Corp <Ibm> 圧縮データの符号化方法
JPH0795093A (ja) * 1993-07-08 1995-04-07 Internatl Business Mach Corp <Ibm> 順次データ圧縮アルゴリズムを実行する装置及び方法
JPH07297728A (ja) * 1994-04-15 1995-11-10 Internatl Business Mach Corp <Ibm> パターン一致を探索するための方法およびシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010517467A (ja) * 2007-01-31 2010-05-20 テレフオンアクチーボラゲット エル エム エリクソン(パブル) バイナリデータブロックのデジタル圧縮

Also Published As

Publication number Publication date
TW421926B (en) 2001-02-11
US5798718A (en) 1998-08-25
EP0878914A3 (en) 1999-03-10
KR19980086979A (ko) 1998-12-05
CN1200604A (zh) 1998-12-02
CN1104094C (zh) 2003-03-26
EP0878914A2 (en) 1998-11-18
JP3362177B2 (ja) 2003-01-07

Similar Documents

Publication Publication Date Title
JP3362177B2 (ja) データ圧縮方法及び装置
US6876774B2 (en) Method and apparatus for compressing data string
EP0584992B1 (en) Text compression technique using frequency ordered array of word number mappers
US5936560A (en) Data compression method and apparatus performing high-speed comparison between data stored in a dictionary window and data to be compressed
US5572206A (en) Data compression method and system
US5229768A (en) Adaptive data compression system
US5254990A (en) Method and apparatus for compression and decompression of data
US5710562A (en) Method and apparatus for compressing arbitrary data
US5870036A (en) Adaptive multiple dictionary data compression
JP2534465B2 (ja) デ―タ圧縮装置および方法
JP3634711B2 (ja) 入力データストリームの圧縮方法とその装置
CN111294053B (zh) 硬件友好的数据压缩方法、系统及装置
US9041567B2 (en) Using variable encodings to compress an input data stream to a compressed output data stream
US5623262A (en) Multi-word variable length encoding and decoding
JPH07283739A (ja) 短ブロックのデータを圧縮、伸長するための方法、及び装置
US6225922B1 (en) System and method for compressing data using adaptive field encoding
KR19990029626A (ko) 적응형 데이터 압축을 수행하는 방법 및 장치
US5394143A (en) Run-length compression of index keys
US6388585B1 (en) Method for data compression and decompression using decompression instructions
JPH07107303A (ja) ハフマン符号の復号化方法
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
EP0871295B1 (en) Method and apparatus for compression and decompression of data
GB2311704A (en) Compression of arbitrary data using context modelling and entropy coding
US20090292699A1 (en) Nucleotide and amino acid sequence compression
JP3199291B2 (ja) ハフマン復号化テーブルの構成方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020528

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees