JPH07104971A - ネットワークパケットに適用される小型辞書を用いた圧縮方法 - Google Patents

ネットワークパケットに適用される小型辞書を用いた圧縮方法

Info

Publication number
JPH07104971A
JPH07104971A JP6074739A JP7473994A JPH07104971A JP H07104971 A JPH07104971 A JP H07104971A JP 6074739 A JP6074739 A JP 6074739A JP 7473994 A JP7473994 A JP 7473994A JP H07104971 A JPH07104971 A JP H07104971A
Authority
JP
Japan
Prior art keywords
compression
code
dictionary
character
run
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
JP6074739A
Other languages
English (en)
Inventor
Gadiel Seroussi
ガディエル・シーリアッシー
Abraham Lempel
アブラハム・レンペル
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH07104971A publication Critical patent/JPH07104971A/ja
Pending legal-status Critical Current

Links

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

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)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 テ゛ータ圧縮率を高め圧縮/圧縮解除に必要な記
憶容量を削減させる。 【構成】入力 テ゛ータを辞書 ヘ゛ースの圧縮/圧縮解除装置に
よって符号化する場合、圧縮/圧縮解除辞書中に以前に
記憶されていない入力 テ゛ータからの単一キャラクタストリンク゛を識
別し、各々の単一キャラクタストリンク゛を特殊コート゛ と部分コート゛
とに符号化し、その各々の特殊コート゛ と部分コート゛ とがそ
の関連する単一キャラクタストリンク゛の選択可能な部分を表して
おり、符号化された単一キャラクタストリンク゛に対応するコート゛ワート
゛と、符号化された多数キャラクタストリンク゛に対応するコート゛ワート゛
を有する圧縮テ゛ータストリームを前記圧縮/圧縮解除装置から
出力し、各々の特殊コート゛ およびその関連する部分コート゛
が単一キャラクタストリンク゛を一意に識別し、および入力 テ゛ータ中
に存在し得る一意の単一キャラクタストリンク゛の総数の サフ゛セットを
表すようにする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般に、ディジタルデー
タの圧縮および圧縮解除に関し、特に、辞書を使用して
圧縮データを記憶する無損失圧縮および圧縮解除方法と
装置の実施、およびネットワークパケット通信への圧縮
/圧縮解除技術の適用に関する。
【0002】
【従来の技術】多くの種類の圧縮機構は、2進シーケン
ス、即ち「コードワード」を使用して多数キャラクタの
ストリング(以下、多数キャラクタストリングと称す)
を符号化する。このコードワードは、それ以外の場合に
は、個々のキャラクタの符号化に使用されることはな
い。ストリングは、1つの「アルファベット」、即ち単
一キャラクタのストリング(以下、単一キャラクタスト
リングと称す)から構成されている。このアルファベッ
トは、圧縮装置が処理を行う最小の一意の情報片を表現
するものである。従って、キャラクタの表現に8ビット
を用いるアルゴリズムは、そのアルファベット中に256
の一意のキャラクタを有することになる。圧縮は、符号
化機構において表現された多数キャラクタストリングが
データストリームの所与のファイル中で発生する場合に
有効なものである。人の言語間の翻訳に使用される二カ
国語の辞書との類比により、未圧縮コードと既圧縮コー
ドとの間のマッピングを行う装置は、一般に「辞書」と
呼ばれている。
【0003】一般に、辞書ベースの圧縮機構の有用性
は、多数キャラクタストリングに関する辞書項目が使用
される頻度によって決まる。或る一定の辞書が1つのフ
ァイル形式について最適化された場合にその辞書が別の
形式のファイルについても最適化されるという可能性は
まずない。例えば、新聞のテキストファイルに見られる
ような多数のキャラクタ組み合わせを含む辞書は、デー
タベースファイル、スプレッドシートファイル、ビット
マップグラフィックファイル、コンピュータ支援設計フ
ァイル等を効率よく圧縮する可能性のまずないものであ
る。
【0004】所与の入力データを圧縮するために使用さ
れる辞書がその入力データの圧縮中に生成される適応型
圧縮機構は既知のものである。未圧縮の入力データ中に
含まれ得るあらゆる単一キャラクタを表すコードワード
が辞書に入力される。ファイル中で多数キャラクタスト
リングに遭遇した際に、別の項目が辞書に追加される。
その別の辞書項目は、それ以降に発生する多数キャラク
タストリングの符号化に利用される。例えば、現在の
(以下、カレントと称す)入力パターンの突き合わせ
は、辞書中に現在存在するフレーズに対してのみ試行さ
れる。突き合わせが失敗する毎に、新たなフレーズが辞
書に追加される。この新たなフレーズは、突き合わせが
行われたフレーズを1つの記号(例えば、その突き合わ
せを「中断させる」入力記号)で拡張することにより形
成される。辞書が発達するにつれて、ファイル中で最も
頻繁に発生する多数キャラクタストリングに遭遇する程
度まで、圧縮が行われる。
【0005】圧縮解除時には、辞書が同様にして構成さ
れる。従って、既圧縮ファイル中で或るキャラクタスト
リングについてのコードワードに遭遇した場合、辞書
は、対応するキャラクタストリングを再構成するために
必要な情報を含んでいる。辞書を使用して圧縮および圧
縮解除情報を記憶する、広範に利用されている圧縮アル
ゴリズムとして、LZ1と呼ばれているLempelの第1の
方法、および、LZ2と呼ばれているZivの第2の方法
が挙げられる。Lempel-Ziv(LZ)アルゴリズムは、
「On the Complexity of Finite Sequence」(IEEE Tran
sactions on Information Theory, IT-22:75-81, Jan.
1976)、および「A Universal Algorithm forSequential
Data Compression」(IEEE Transactions on Informati
on Theory,IT-23:337-343, May 1977)、および「Compre
ssion of Individual Sequences via Variable Rate Co
ding」(IEEE Transactions on Information Theory, IT
-24:530-536)において、Lempel、Ziv両氏により最初に
発表されたものである。辞書の使用については、Eastma
n等の米国特許第4,464,650号明細書にも開示されてお
り、更に、そのアルゴリズムの様々な改良策が、Welch
の米国特許第4,558,302号明細書、およびMiller等の米
国特許第4,814,746号明細書に開示されている。
【0006】実際の装置での実施時には、圧縮/圧縮解
除に利用可能な記憶装置の量は有限のものである。従っ
て、辞書中の項目の数は有限であり、項目の符号化に用
いるコードワードの長さが制限される。一般に、コード
ワードの長さは12〜16ビットの範囲にある。入力データ
シーケンスが充分に長い場合、辞書は最終的に「一杯」
の状態になる。この時点では幾つかの動作が可能であ
る。例えば、その現状のまま辞書を凍結させて残りの入
力シーケンスに利用することができる。第2のアプロー
チでは、辞書をリセットして、スクラッチにより新たな
辞書が作成される。第3のアプローチでは、圧縮率が低
下するまで辞書が一定期間だけ凍結され、次いで辞書が
リセットされる。辞書をリセットする別の戦略について
は、1992年6月1日出願の米国特許出願第07/892,546号
「Lempel-Ziv Compression Scheme with Enhanced Adap
tion」(本引用をもってその開示内容を本明細書に包含
させたものとし、その詳細な説明は省略する)、および
Bunton,S.等の「Practical Dictionary Management for
Hardware Data Compression」(Communications of the
ACM, 35:95-104, Jan. 1992)に記載されている。
【0007】LZWプロセスの場合、辞書は、圧縮辞書
の構成に使用される単一キャラクタストリングについて
初期設定されなければならない。それらのキャラクタに
は、圧縮/圧縮解除装置中の一意のコードが割当てられ
る。これは、エンコーダから送出される任意の別の出力
コード(例えば、多数キャラクタストリングを表すコー
ド)中のビット数が単一キャラクタストリングの数によ
り制御されることを示唆している。例えば、多数キャラ
クタストリングについての最短ビット長は、単一キャラ
クタストリングの数によって決定される。多数キャラク
タを表す後続コード中のビット数は、辞書中の項目の数
が2の次のべき乗に達する毎に1ビットだけ長さが増
す。より多くのビットを使用して単一キャラクタのコー
ドワードを表すと、それに比例して圧縮性能全体が低下
する。
【0008】上述のような単一入力キャラクタの初期設
定は、入力データが大きなアルファベットサイズを有す
る場合、または、入力データ中に未知のアルファベット
のサブセットしか発生しないことが予期される場合に
は、不十分なものとなる。例えば、入力データのための
「未加工の」アルファベットが16ビットの記号から構成
されている場合は、初期の辞書サイズは、65,536の項目
を有することになる。従って、「未加工の」アルファベ
ットからのキャラクタに加えて生成されるあらゆる出力
コード(例えば多数キャラクタストリングを表すコー
ド)の最小長は、少なくとも17ビットとなる。また、入
力データのブロック(即ち、圧縮されるべきデータ)
が、アルファベットサイズに比較して小さい場合には、
入力データからの単一キャラクタストリングの初期設
定、記憶および符号化のそれぞれに起因して、時間、記
憶空間および圧縮率が不必要に増大することになる。
【0009】このような問題を克服するために、LZア
ルゴリズムの幾つかの変形例では、空の初期辞書を採用
している。新たな入力キャラクタに遭遇すると、圧縮装
置が特殊コードを出力し、次いで新キャラクタのコピー
を出力する。これにより、実際に使用されている入力ア
ルファベットのサブセットを圧縮解除装置が追跡するこ
とが可能となり、符号化を通常通りに進めることが可能
になる。この戦略の主な問題は、新キャラクタを符号化
するコストが高いことである。大きいアルファベットに
わたりファイルが短い場合には、この追加コストは許容
できない程高くなり得る。例えば、8ビットの記号およ
び12ビットの出力コードを使用する場合には、新キャラ
クタが発生したことをデコーダに知らせるために20ビッ
トが必要となる。更に、LZアルゴリズムにより出力さ
れる符号化キャラクタストリングに冗長性が存在する場
合が多い。例えば、同一の入力キャラクタからなるスト
リング(即ち「ラン」)は、予測可能で冗長な構造を有
する一連の符号化ストリングを生成する。この冗長性
は、現時点では、標準的な圧縮アルゴリズムの圧縮率を
更に高める効力を発揮するものではない。
【0010】従って、データ圧縮率を高め、辞書ベース
の圧縮/圧縮解除装置に必要な記憶装置の量を削減する
ために、異なる形式の入力データおよび異なるデータ構
造に適応可能な、データ圧縮の初期設定プロセスが依然
として必要とされている。
【0011】
【発明が解決しようとする課題】従って、本発明の目的
は、辞書ベースの装置におけるディジタルデータの圧縮
および圧縮解除を改良することにある。
【0012】本発明の別の目的は、符号化キャラクタス
トリングの表現に使用されるビット数を削減することに
より、圧縮/圧縮解除機構のデータ圧縮率を高めること
にある。
【0013】本発明の別の目的は、辞書ベースの圧縮/
圧縮解除装置における辞書の初期設定での付加コストを
削減することにある。
【0014】本発明の更に別の目的は、小さいファイル
中で発生したディジタルデータ、または、大きい単一キ
ャラクタのアルファベットのサブセットにより表される
ディジタルデータを、一層効率よく圧縮することにあ
る。
【0015】本発明の更に別の目的は、入力データのキ
ャラクタのランを表す符号化キャラクタストリングを再
圧縮して、圧縮/圧縮解除装置の圧縮率を更に高めるこ
とにある。
【0016】
【課題を解決するための手段】本発明は、入力データの
形式および構造の変化に適応可能な辞書ベースの初期設
定機構である。この初期設定機構は、辞書ベースの圧縮
/圧縮解除装置で使用されるデータ項目の数を最小限に
して単一キャラクタデータストリングを表現することに
より、圧縮率を高めるものである。データ項目数を削減
することにより、圧縮データストリング中のコードワー
ドのビット長が短縮される。圧縮データストリング中の
コードワードのビット長が短縮されることにより、圧縮
率全体が高まる。
【0017】本発明は、可変数の特殊コードを使用す
る。特殊コードの総数は、一般的には入力データアレイ
中の単一キャラクタを表すのに使用されるキャラクタコ
ードの総数未満になるよう選択される。各特殊コード
は、新キャラクタに関する情報の一部を保持している。
次いで、新キャラクタを更に識別する付加的なビット
が、別個の部分キャラクタ中に伝送される。このプロセ
スにより、新たな記号を伝送する「コスト」(即ち、帯
域幅と記憶空間)が削減される。このプロセスは、非初
期設定プロセス(例えば、空の初期辞書)から、アルフ
ァベット中の各々の一意のキャラクタが辞書中の項目に
割り当てられる完全アルファベット初期設定まで、どの
ような場合にも適応可能である。
【0018】特殊コードの数は、現在実行中の用途に適
応可能なものである。従って、この特殊コードの数は、
圧縮率を最大限にするように特定形式のデータに応じて
予め定められる。この方法により、辞書がアルファベッ
トサイズよりも少ない項目を有することが可能となる。
従って、極めて小さな記憶装置しか必要としない小さい
辞書で圧縮が可能となる。これは、入力データブロック
が短く、各ブロックを個々に圧縮する必要がある用途で
特に有用である。この初期設定機構はまた、辞書サイズ
を中庸に留めつつ、大きなアルファベットサイズ(例え
ば、16ビットの記号)を有するデータソースの圧縮を行
うことを可能にするものである。
【0019】本発明の更に別の態様では、LZ方式(L
ZE)で一種のランレングス符号化が実施される。従来
のLZ2データ圧縮では、ラン(即ち、入力データ中に
同じキャラクタが繰り返し発生したものからなるストリ
ング)は、一連のコードとして符号化される。各々の連
続するコードは、先行するコード上に構成され、その後
に、そのランの残り即ち末尾についてのコードが続く。
次いで、圧縮解除装置が、それらの各コードを順次受信
して復号する。この装置は、単一コード(キャラクタの
ランの大部分を表すもの)と、先行コードおよび末尾コ
ードとを伝送することにより、短縮化シーケンスを送
る。
【0020】前述のLZE方法が、単独で使用され、ま
たは、他の方法と組み合わせて使用されて、ネットワー
クパケットの伝送に特に有用な圧縮機構が形成される。
組み合わせ装置では、LZE圧縮機構は、1つ以上の他
のデータ圧縮方法と並行して入力データストリームに適
用される。前記の「他のデータ圧縮方法」としては、ハ
フマン可変長符号化機構、または非圧縮伝送機構等が挙
げられる。次いで、最良の圧縮率をもたらす方法による
出力が使用されて、データ伝送および記憶が行われる。
広範囲に分布する長さを有するパケットを含む実際のネ
ットワークパケットデータについて高圧縮率が達成され
る。この高圧縮率は、短いパケットの割合が大きなデー
タであっても、パケット長の全範囲に亘って一貫して維
持される。
【0021】本発明の上述その他の目的、特徴および利
点は、添付図面に関連して進める本発明の好適実施例に
ついての以下の詳細な説明により一層容易に明確となろ
う。
【0022】
【実施例】Lempel-Ziv圧縮/圧縮解除装置の基本構成お
よび動作は公知のものであり、このため、図1および図
2を参照して一般的な用語で説明するに留める。図1の
装置22は、ディジタルデータ通信(または記憶)チャネ
ル28によって相互接続された圧縮副装置24と圧縮解除副
装置26とを備えている。実際には、この装置の双方の端
末機は、圧縮副装置および圧縮解除副装置を備えてお
り、そのハードウェアは一般には、データの圧縮/送
信、または、データの受信/圧縮解除を行うよう互換的
に動作することができるように設計される。
【0023】それぞれの副装置は、従来の通信(または
記憶)回路(図示せず)に加えて、基本的なLempel-Ziv
圧縮アルゴリズムを実施する圧縮エンジン30と、キャラ
クタストリングデータを符号化するデータ項目が記憶さ
れている1つ以上の辞書を実施する記憶装置32と、後述
の強化を行う支援回路とを備えている。その支援回路
は、図7および図9で更に詳細に説明する中間初期設定
エンコーダ34および相手側部品となるデコーダ36と、図
12および図15に示すエンコーダラン強化エンジン38
および相手側部品となるデコーダラン強化エンジン40と
を備えている。
【0024】図2は、ディジタルデータの無損失圧縮
(即ち、元のデータがその圧縮画像から完全に回復され
るもの)のためのLempel-Ziv(LZ)アルゴリズムを示
すものである。LZ法は、入力データストリーム中のカ
レントパターンを以前に発生したパターンと突き合わせ
る。例えば、入力ストリーム46中のカレントパターン42
(ABC)は、以前に伝送されたパターン44(ABC)
と同じである。圧縮副装置24(図1参照)は、その突き
合わせが行われた入力記号(ABC)を最大に一致する
記述(即ち、コードワード)で置き換える。次いで、圧
縮解除副装置26(図1参照)が、一致するコードワード
から、および、以前に圧縮解除されたデータセグメント
から、元の記号を再構成する。冗長データソースでは、
多数のキャラクタの一致を記述する記述、即ちコードワ
ードは、突き合わせが行われたパターンより短くなる傾
向があり、これにより、データ圧縮が達成される。
【0025】LZ2の主な特徴は、インクリメンタル構
文解析にある。入力データシーケンスは、複数フレーズ
へと構文解析され、それらのフレーズが辞書に収集され
る。カレント入力パターンの最大突き合わせは、上述の
ように辞書中のフレーズに対してのみ試行される。各々
の突き合わせの後、突き合わせを「中断させる」入力記
号を有する突き合わせが行われたフレーズを拡張するこ
とにより、新フレーズが形成される。上記アルゴリズム
およびそのアルゴリズムの変形例は、漸近的に最適な
(即ち、理論上可能な最良の圧縮率を限界内で達成す
る)ものである。このアルゴリズムはまた、高度の適応
性を有するものであり、入力データの統計的特性を「オ
ンザフライ」で学習することができる。LZ2では、そ
の「知識」が辞書中に記憶され、その辞書の各項目によ
り、入力データシーケンスの構文解析が行われる。
【0026】LZ2の圧縮装置の実施態様は概略的に以
下のように説明することができる。
【0027】1.入力アルファベット中に存在する全て
の単一文字ワード(例えば256の1バイトストリング)
で辞書が初期設定され、次いで、各々の単一キャラクタ
ワードに別個の索引コードワードが割り当てられる。
【0028】2.入力データストリームからの最初のキ
ャラクタでカレントフレーズが初期設定される。
【0029】3.入力データストリームからのキャラク
タが継続的に読み出され、一致するフレーズが辞書中に
存在する限り、カレントフレーズが拡張される。 4.カレントフレーズがWaという形式のもの(「a」
は入力データストリームから読み出された最後のキャラ
クタ、Wは辞書中のフレーズ)であり、同時に、そのW
aがフレーズ辞書中の項目と一致しない場合に、プロセ
スが停止される。
【0030】5.Wについてのコードワードが出力され
る。
【0031】6.Waが辞書に追加され、次に利用可能
なコードワードが割り当てられる。
【0032】7.カレントフレーズが「a」にセットさ
れて、プロセスがステップ3に戻る。
【0033】この実施態様はLZWとして公知のもので
ある。
【0034】図1の圧縮解除副装置26では、同様のフレ
ーズ辞書が構成される。この圧縮解除装置は、上記のス
テップ1の場合と同様に最初に初期設定され、次いでデ
ータの圧縮解除中に新フレーズが辞書に追加される。こ
の圧縮解除装置は、キャラクタ「a」で始まるフレーズ
のコードが後に続いているフレーズWのコードを受信し
た場合に、フレーズWaを辞書に追加し、そのフレーズ
に次に利用可能なコードを割り当てる。このように、こ
の圧縮解除装置は、圧縮装置により構成された辞書を再
構成することができ、従って、圧縮装置が圧縮データと
共に辞書を送る必要はない。
【0035】実際の実施例では、エンコーダ用に(およ
び同様にデコーダ用に)利用可能な記憶装置の量は限ら
れたものである。従って、辞書中のフレーズ数も限られ
たものとなり、出力コードも限られた長さのものとな
る。一般的には、コード長の上限は、12ビットおよび16
ビットの間となる。入力データシーケンスが充分に長い
場合には、辞書は最終的には「一杯」になる。その時点
で、LZW辞書は、「凍結」されるか、または「再初期
設定」される。
【0036】上記で概略を示したLZW圧縮手順のステ
ップ1は、全ての単一キャラクタストリングを用いた辞
書の初期設定を必要とする。mが入力データストリング
からの単一キャラクタのサイズをビットで表すものと仮
定する(例えば、最も一般的な場合には、m=8、即ち
1バイト)。辞書中の初期フレーズには、コードCo,C
o+1,Co+2,…,Co+(2m−1)(Coは負でない初
期数)が割り当てられる。これは、エンコーダにより送
出された最初のコード(即ち、多数キャラクタストリン
グを表す最初のコード)が少なくともm+1ビット長を
有していなければならないことを示唆している。実践的
な実施態様では、圧縮プロセスの開始時に長さm+1の
出力コードを使用し、その後に辞書中の項目数が次の2
のべき乗に達する毎に出力コードの長さを1ビットだけ
増大させるのが普通である。このため、出力コードの長
さはm+1とbとの間で変動する(ここで、2b は辞書
の最大サイズ、b≧m+1)。簡略化のため、辞書の最
大サイズが2のべき乗であるものと仮定する。これは不
可欠な要件ではないが、最も実践的な実施態様を示すも
のである。明らかに、出力コードの長さは圧縮率に直接
影響を及ぼす。即ち、出力コードが短いほど圧縮率は良
好となる。
【0037】上記ステップ1の初期設定は、多くの用途
で良好に機能するものであるが、アルファベットサイズ
が大きい場合には不十分なものとなる。また、この初期
設定プロセスは、入力アルファベットの未知のサブセッ
トが、圧縮すべきデータ中に発生するものと予期される
場合にも、不十分なものとなる。例えば、入力データの
「未加工の」アルファベットが16ビット記号から構成さ
れる用途では、初期の辞書サイズは65,536項目を有し、
出力コードの最小長さは17ビットとなる。また、圧縮す
べきデータブロックがアルファベットサイズと比較して
小さい用途では、潜在する単一キャラクタストリングの
各々を符号化する必要がない場合が多い。
【0038】これら問題点を解決するために、LZアル
ゴリズムのいくつかの変形例では、空の初期辞書を採用
している。新しい入力キャラクタに遭遇すると、圧縮装
置は、その新キャラクタのコピーが後に続く特殊コード
を出力する。この方法の場合、圧縮解除装置が、実際に
使用される入力アルファベットのサブセットを追跡し、
復号が通常どおりに進行する。このプロセスの主な問題
は、新キャラクタの符号化のコストが高いことである。
大きいアルファベットにわたる短いファイルの場合、こ
の付加的なコストは許容できないほど高くなる。例え
ば、図3では、どの新キャラクタが発生したかを圧縮解
除エンジン30(図1参照)に示すのにキャラクタコード
46と特殊コード48との双方が必要である。キャラクタの
長さが8ビットであり、カレントコードの長さが12ビッ
トであるものと仮定した場合、各々の新キャラクタを識
別するために全部で20ビットを伝送しなければならない
ことになる。
【0039】中間辞書初期設定 上述のビット長および記憶装置に関する問題を解消する
ために、2kの異なる特殊コードCo,Co+1,Co+2,
…,Co+(2k−1)が使用される(ここで、0≦k≦
m)。これは、別の制御コードのために数0,1,…,Co
−1が使用されることを仮定したものである。このよう
にして、特殊コードは、新キャラクタについてkビット
の情報を備え、新キャラクタを識別するためには正確に
m−kの付加的なビットが必要である。これを図4にk
=5で示す。特殊コード48についてのカレントコード長
は12ビットであり、部分キャラクタコード49の長さは3
ビットである(即ち、m−k=8−5=3)。従って、
新たな1つの単一キャラクタストリングを伝送するコス
トは、20ビットから15ビットに削減される。k=0の場
合、この方法は空の初期設定へと移行し、また、k=m
の場合には、装置は完全アルファベット初期設定として
動作する(即ち、アルファベット中の各キャラクタがコ
ードワードにより表される)。
【0040】ここで図5を参照する。本発明による動作
は、空の初期辞書で始まり、基本的に下記のように修正
されたLZアルゴリズムに従って進行する。この動作
は、次に使用可能なコード(NAC)を値Co+2kに設
定することにより、ブロック50で開始される。次ステッ
プのブロック52では、ヌルストリングがカレントフレー
ズWとしてセットされる。次いでブロック54で、次の入
力キャラクタが「a」として入力される。ブロック56の
ステップは、ストリングWaが既に辞書中に記憶されて
いるか否かを照会する。ストリングWaが既に辞書中に
記憶されている場合には、ブロック58がWをWaに等し
く設定してブロック54に戻る。このプロセスは、辞書中
で一致が発見される限り繰り返される。これは、Lempel
-Ziv方式では一般的なことである。
【0041】また、Waが辞書中で発見されない場合に
は、ブロック60が、Wがヌルストリングであるか否かを
照会する。Wがヌルストリングでない場合には、圧縮が
従来のLZWのようにブロック62,66,68を経て進行す
る。ブロック62は、Wについてのコードを出力し、ブロ
ック66は、符号化ストリングWaをデータ項目としてア
ドレス位置NACで辞書中に記憶させる。ブロック68
は、NACを1だけインクリメントし、「a」が次のW
の値として働く。次いで、プロセスはブロック54に戻
る。
【0042】判定ブロック60が、Wがヌルストリングで
あると判定した場合には、入力キャラクタ「a」が新キ
ャラクタであるとみなされる。次いで、圧縮装置は、プ
ロセス「新キャラクタ」というブロック64に進む。これ
はサブプロセスであり、図6を参照して後で詳述するこ
ととする。このプロセス「新キャラクタ」から戻ると、
ブロック65で入力キャラクタ「a」がアドレス位置NA
Cで辞書中に入力される。次いでブロック67でNACが
インクリメントされて、プロセスがブロック52に戻る。
【0043】ここで図6を参照する。サブプロセス64
(図5参照)において、ブロック70で示す第1ステップ
は、mビットから成るキャラクタaを2つの部分、即
ち、kビットから成るa1と、m−kビットから成るa2
とに分割するステップである。次いでブロック72がC1
を値Co+a1に設定する。次いでブロック74がbビット
を用いてC1を出力し、ブロック76がm−kビットを用
いてa2を出力する。ここで、bは、出力コードワード
に現在使用しているビット数である。次いでこのサブプ
ロセスは、図5のブロック65に戻る。
【0044】図7は、図6のサブプロセスをハードウェ
アで実施するための回路34(図1参照)を示すものであ
る。キャラクタaがmビットレジスタ80へと入力され、
このレジスタ中に前記キャラクタが2つの部分、即ち、
kビットから成るa1およびm−kビットから成るa2
記憶される。値Coは、bビットレジスタ82中に記憶さ
れ、a1と共に加算器84に出力されて、bビット合計C1
=C0+a1が形成される。この合計が、レジスタ86の最
初のbビット中に配されて、そのレジスタ86の下位m−
kビット中のa2と連結される。その結果として生じた
b+m−kビットのシーケンスが出力バッファ88へとシ
フトされて、圧縮されたストリーム中に挿入される(圧
縮解除装置へ伝送される)。
【0045】図8は、圧縮解除プロセス90を示すもので
ある。このプロセスは、ブロック91で開始して、bビッ
トの特殊コードC1を読み出し、次いでブロック92でコ
ードC1がCo未満であるか否かを照会する。コードC1
がCo未満である場合には、ブロック93がコードC1をプ
ロセス制御コードとして処理し、ブロック91に戻る。ま
た、コードC1がCo未満でない場合には、このプロセス
は先に進み、ブロック94でコードC1がCo+2k未満で
あるか否かを照会する。コードC1がCo+2k未満でな
い場合には、ルーチンはブロック96に移行して、コード
1を通常のLZコードとして処理し、次いでブッロク9
1に戻る。また、コードC1 がCo+2k未満である場合
には、コードC1は新キャラクタについてのコードであ
ると見なされて、ルーチンがブロック98に戻り、特殊コ
ードC1とその関連する部分キャラクタコードa2とが新
キャラクタとして処理される(一対のC1,a2は、図7
の回路中の圧縮装置により出力されたものである)。
【0046】図9は、図8のサブプロセス98をハードウ
ェアで実施した回路36(図1参照)を示すものである。
特殊コードC1および部分キャラクタコードa2が入力バ
ッファ(図示せず)からレジスタ102,104へとそれぞれ
受信される。レジスタ100中の固定値Coの中容が、減算
器106中で、レジスタ102の中容から減算される。そのb
ビットの結果がレジスタ108中に収容され、レジスタ108
の最上位b−kビットが廃棄される。レジスタ108中の
最下位kビットが、レジスタ110のa1フィールド中に記
憶されて、レジスタ104からの部分キャラクタコードa2
と連結される。レジスタ110の中容は、ブロック112で単
一キャラクタストリングとして辞書中に入力され、また
出力バッファ114中にロードされる。
【0047】特殊コードの数(または等価的にはパラメ
ータk)は、手近な用途に合わせて調整可能なものであ
る。実験結果によれば、広範囲の入力ファイルに対し、
m/2に近いkの値で最良の圧縮が達成されることが示
されている。特に、m=8の場合はk=5、m=16の場
合はk=7という値が最適であることが実験的に判明し
た。多数キャラクタストリングについての初期コード長
は、典型的なm+1ビットではなく、k+1ビットだけ
である点に留意されたい。従って、この方法により、ア
ルファベットサイズよりも小さい辞書が可能となり、ま
た入力キャラクタよりも短いコードワードが可能とな
る。
【0048】このため、極めて小さい辞書を用いて圧縮
を行うことが可能となり、この場合には、極めて少ない
記憶装置しか必要なくなる。この方法は、入力データブ
ロックが短く、各ブロックが別個に圧縮される必要があ
る用途では、特に魅力的なものとなる。別の側面によれ
ば、この方法により、辞書のサイズを中庸に保ちつつ、
大きなアルファベットサイズ(例えば、16ビット記号)
を有するデータソースの圧縮が可能となる。
【0049】ここで、m=8、k=5、Co=3であ
り、伝送すべき新キャラクタが2進表現01101010を有す
るものと仮定する。このキャラクタの最初のkビットは
01101であり、数13を表している。このため、伝送され
る特殊コードはCo+13=16である。このコードは、カ
レントコード長を用いて伝送される。更に、特殊コード
が部分キャラクタコードa2として伝送された後、m−
k=3の残りのビット010が「そのまま」伝送される。
カレントコード長が12ビットであると仮定すると、結果
として生じる2進出力は、特殊コードについては[00000
0010000]となり、キャラクタコードについては[010]と
なる。
【0050】図10は、種々のキャラクタコードおよび
特殊コードのビット長での圧縮結果を示すものである。
全ての圧縮実験のための入力ファイルは、ASCIIデータ
ファイル、2進法で実行できるCプログラムソース、お
よびテキストファイルを含むコンピュータファイルを収
集したものを(UNIXのコマンドtarを用いて)連結
することにより得たものである。入力ファイルの全サイ
ズは6,594,560バイトであった。番号を付した列1〜5
に示すように5つの圧縮方法を試験した。列1は、m=
8で完全アルファベット辞書初期設定法を用いた場合で
あり、従来のLZW実施例の結果である。列2は、m=
8、k=0で空辞書初期設定法を用いた場合の結果であ
る。列3は、m=8、k=5で中間辞書初期設定法を用
いた場合の結果である。列4は、m=16、k=0で空辞
書初期設定法を用いた場合の結果である。列5は、m=
16、k=7で中間辞書初期設定法を用いた場合の結果で
ある。
【0051】各機構について、最も左の列に示すように
最大出力コード長を6〜16ビットに変動させて幾つかの
辞書サイズを試行した。各機構での圧縮率(CR)は、
次の関係式を用いて算定される。
【0052】CR=(圧縮ファイルサイズ)/(元のフ
ァイルサイズ) 従って、CRの値が小さいほど圧縮率が良好であること
が示される。図10から分かるように、中間初期設定辞
書を用いた機構は、辞書が極めて小さく(例えばb<
m)、完全初期設定が不可能な場合であっても、大幅な
圧縮がなされる。これは、記憶装置が不十分となる用途
で極めて有用である。中間初期設定はまた、bがmより
も僅かに大きい場合に完全初期設定よりも性能が優れて
おり、bの値が一層大きい場合には、それら2つの機構
は互いに競合するものとなる。k>0での中間初期設定
は、ほとんど常に空初期設定よりも性能が優れたものと
なる。
【0053】16ビット入力記号を用いて、中庸サイズの
辞書で良好な圧縮率を達成することが可能である。16ビ
ット機構の主な利点は、(各圧縮ステップで8ビットで
はなく16ビットを処理することにより)記憶装置の量を
わずかに増やすだけで圧縮装置のスループットを2倍に
することができる点にある。一般に、LZW辞書中の項
目は、以前の項目へのポインタ(またはそれに対応する
コード)とキャラクタとから成っている。従って、16ビ
ット機構は、一般に、それと同数の辞書項目を有する8
ビット機構に比較して、1辞書項目につき更に別の1バ
イトを必要とすることになる。更に、16ビットが未加工
のキャラクタのサイズである場合(例えば或る種の医療
用画像形成用途等)、そのキャラクタサイズが維持され
る際に最良の圧縮が達成される。
【0054】上述の初期設定機構は、短いデータブロッ
クが個々に(即ち、或るブロックとその次のブロックと
で辞書情報を共用することなく)圧縮される用途で有利
である。このような用途の一例として、ローカルエリア
ネットワーク(LAN)におけるデータパケットの圧縮
が挙げられる。典型的なLANで現在使用されているネ
ットワークプロトコルでは、パケット長は60バイトから
2028バイト未満の範囲を有し、より短いパケットがトラ
フィック中で高い割合を示している。上記値は近似的な
数値である。パケットの正確な長さは、パケットの「エ
ンベロープ」をどの程度まで考慮に入れるかによって決
まる。それはまた、パケットが処理されるプロトコル層
によって決まる。
【0055】ラン符号化の強化 無損失データ圧縮の最も簡単な方法の1つに、ランレン
グス符号化(RLE)がある。ランは、入力中に同じキ
ャラクタが繰り返し発生するストリング(例えば、a0,
1,a3,…,an-1)である。ここで、nはストリング中
の同じキャラクタ「a」の反復発生回数である。ストリ
ングa0,a1,a3..an-1は、同じキャラクタ「a」のn
個のコピーを表すものである。RLEでは、そのような
ランは、ランレングスnが後に続くキャラクタを送るこ
とにより符号化される。nの値が大きい場合には、ラン
の圧縮率は0(log(n)/n)となる。LZ2機構もまた、
長いランを圧縮する優れた動作を行う。nの値が大きい
ものと仮定すると、上記のランは、LZ2機構では、一
連のコードA0,A1,A1+1,A1+2,A1+3,…,A1
(k−1),A2として符号化される。ここで、A0は、
辞書中のaの最長のストリングについてのコードであ
る。A1は、カレントランが読み出される前に次に利用
可能なコードである。A2は、後述するコードであり、
kは、負でない整数である。
【0056】A0で表されるaのストリングの長さがL0
である場合、A1+(i−1)は、L0+iのaからなる
ストリングを表している(1≦i≦k)。A2は、L1
aからなる残りの「尾部」を表しており(0≦L1
(L0+k))、その後に何らかの別のキャラクタが続
く可能性がある(L1=0の場合、符号化されたランの
一部としてコードA2は必要ない)。ランの長さは、n
=L0+(L0+1)+(L0+2)+……+(L0+k)
+L1=L0(k+1)+k(k+1)/2+L1となる。
従って、nの値が大きく、辞書が充分に大きい場合に
は、基本的なLZ2機構は、O(√(n)Log(n)
/n)という圧縮率を達成する。従って、双方の機構と
も漸近的にゼロ圧縮率を達成するものの、入力が制限さ
れているため、長いランの圧縮にはRLEの方が一層適
している。
【0057】長いランを符号化する場合のLZ2の効率
は、以下の観察に基づいて改善することができる。LZ
2圧縮解除装置がシーケンスA1,A1+1,A1+2,A1
+3,……,A1+(k−1)における各コードを読み出
す場合、その読み出されたコードは、その特定の時点
で、可能な最長のコードとなる(即ち、読み出されたコ
ードは作成されたばかりのコードである)。従って、エ
ンコーダは、n個の「a」のランについてシーケンスA
0,A1+(k−1),A2さえ送ればよい。デコーダがコ
ードA1+(k−1)を受信すると、そのデコーダは、
その値が現在の可能な最大コードA1を超えていること
を検知し、1つのランが符号化されていることを「学
習」し、および、値kおよび「ミッシングシーケンス」
1,A1+1,A1+2,…,A1+(k−2)を容易に再構
成することができる。この場合、伝送されたビット数は
O(log(k))=O(log(n))であり、強化LZ2の圧縮
率は、RLE機構の場合と同様に、O(log(n)/n)とな
る。
【0058】図11はランを強化させていない従来のL
Zエンコーダを示すブロック図である。入力エンジン11
6は、入力データストリーム(図示せず)からキャラク
タを読み出し、その入力キャラクタを圧縮エンジン118
(図1のブロック30を参照)に送る。圧縮エンジン118
は、入力キャラクタを得て辞書を構成して保持する。例
えば、辞書は、一意の入力キャラクタストリングを表す
データ項目を備える。圧縮エンジン118は、入力データ
ストリームを圧縮し、その圧縮入力データをコードワー
ドとして出力エンジン120に出力する。次いで出力エン
ジン120は、後に行う圧縮解除のために圧縮データスト
リングを記憶するか、または、圧縮データストリングを
帯域幅を縮小して通信チャネル28(図1参照)を介して
伝送する。圧縮データは、図15で更に説明するよう
に、通信チャネル28の反対側の端末でその圧縮解除が行
われる。圧縮エンジン118は、典型的には、次に利用可
能なコード(NAC)を識別するアドレスポインタ122
を保持する。次の一意のキャラクタストリングがデータ
項目として圧縮/圧縮解除辞書中に記憶される。例え
ば、NACは、次の一意の入力キャラクタストリングに
ついてのコードワードとして使用される次のアドレス位
置を表すものである。
【0059】図12は、図1に示す本発明によるエンコ
ーダラン強化エンジンを詳細に示すブロックである。入
力エンジン124は、入力データストリームからキャラク
タを読み出す。圧縮エンジン126は、その入力キャラク
タを読み出し、辞書を維持し、および、図11を参照し
て前述したようにキャラクタコードを生成する。符号化
された入力データは、次いでエンコーダラン強化エンジ
ン128に送られ、これにより第2レベルのデータ圧縮が
提供される。ラン強化エンジン128からの圧縮コード
は、出力エンジン130に送られ、図11の出力エンジン1
20と同様にして処理される。
【0060】ラン強化エンジン128は、別個のアドレス
ポインタ134(RUNCODE)を収容しており、その
ポインタ134が、圧縮エンジン126により使用されるNA
Cアドレスポインタ132と連携して使用される。キャラ
クタストリングが圧縮エンジン126により符号化された
後、ラン強化エンジン128は、出力コードを遮断し、そ
れがキャラクタのランの一部であるか否かを判定する。
その出力コードがランの一部であると判定された場合に
は、ラン強化エンジン128は、そのランからのキャラク
タを含む幾つかのコードを出力エンジン130が出力する
のを禁止する。次いでラン強化エンジン128は、そのラ
ンから送信されなかったコードを識別する情報を含むラ
ンコードワードを生成する。次いで、そのランコードワ
ードが、そのランの終わりの検出時に出力される。
【0061】図13は、図12に示すラン強化エンジン
128により実行されるプロセスを示す詳細なフローチャ
ートである。ブロック136でコード「C」が照会され
て、そのコード値が辞書中で作成された最後のコード
(即ち、NAC−1)と等しいか否かが判定される。コ
ードCがNAC−1と等しい場合には、ランは既に発生
しており、判定ブロック136はブロック138へジャンプし
て、コード値「C」がアドレスポインタRUNCODE
に書き込まれる。ラン強化エンジンは次いで、出力エン
ジン130(図12参照)をディセーブルにして、コード
Cが出力されるのを防止する。次いでプロセスは、圧縮
エンジンにより生成される次のコードのために判定ブロ
ック136にジャンプする。後続のコードがラン中にある
キャラクタを表す(即ち、同じキャラクタを表す)限
り、このプロセスは繰り返される。例えば、RUNCO
DEは、最後のコードCの値に絶えずリセットされ、出
力エンジンは、コードワードを出力することが抑止され
る。ブロック136に戻った際には、NACの値が圧縮エ
ンジンによりインクリメントされることに留意された
い。
【0062】新たに遮断したコードがNAC−1と等し
くない(即ち、圧縮/圧縮解除エンジンで作成された最
後のコードと等しくない)場合には、ランが発生しなか
ったか、またはランが完了しているかの何れかである。
次いで判定ブロック136は、判定ブロック142にジャンプ
して、アドレスポインタRUNCODEの値がチェック
される。RUNCODEがヌル値である場合には、以前
にランは生じておらず、判定ブロック142はブロック148
にジャンプする。次いで、ブロック148は、コードCを
出力する。このコードCは、他のランでない符号化キャ
ラクタストリングと同一のものである。次いでプロセス
は、圧縮エンジンによって作成される次のコードのため
に判定ブロック136に戻る。また、RUNCODEがヌ
ルでない場合には、以前にランが生じており、判定ブロ
ック142は、ブロック144で出力される次のコードとして
RUNCODEを出力する。プロセスがブロック146に
ジャンプして、RUNCODEがヌル値にリセットさ
れ、次いでブロック148がランを中断させたコードC
(コードワード)の値を出力する。次いで、ラン強化エ
ンジンが判定ブロック136に戻り、次のコードワードが
圧縮エンジンから遮断される。
【0063】図14は、従来の圧縮解除装置を示すブロ
ック図である。デコーダ入力エンジン150は、コードワ
ードにより表された圧縮キャラクタストリングのシーケ
ンスを受信し、そのコードワードを圧縮解除エンジン15
2に供給する。その圧縮解除エンジン152は、コードワー
ドを得て辞書を構成して保持し、符号化された出力キャ
ラクタを生成する。次に利用可能なアドレス(NAC)
ポインタ156は、図5で説明したNACポインタと同様
の態様で保持される。デコーダ出力エンジン154は、圧
縮解除エンジン152からの圧縮解除キャラクタの出力を
制御する。
【0064】図15は、本発明によるランレングス強化
デコーダを示すブロック図である。デコーダ入力エンジ
ン158は、図15のデコーダ入力エンジン150と同じもの
である。入力エンジン158からのコードワードは、圧縮
解除エンジン162で更に圧縮解除が行われる前に、デコ
ーダラン強化エンジン160で遮断される。このラン強化
エンジン160は、各コードワードをチェックして、その
コードワードがランコードワードを構成するものか否か
を判定し、それに従って、修正されたコードストリーム
を生成する。ランコードが存在しない場合には、コード
ワードが圧縮解除エンジン162に送られて、通常の圧縮
解除が行われる。デコーダ出力エンジン164は次いで、
圧縮解除エンジンからの符号化キャラクタの出力を制御
する。デコーダラン強化エンジン160は、図12に示し
たものと同様にして圧縮解除エンジン162中のアドレス
ポインタ(NAC)へのアクセスを有するアドレスポイ
ンタ(RUNCODE)168を含んでいる。
【0065】図16は、図15のデコーダランレングス
強化エンジン160の動作を示す詳細なフローチャートで
ある。ブロック170でコード「C」が照会されて、その
コード値が、次に利用可能なコードアドレスとして圧縮
解除装置が予期している正規の値と異なるか否かが判定
される。例えば、圧縮解除エンジンは、典型的には、コ
ードCが、次に利用可能なコードNACより小さいもの
と予測する。コードCが正規の値である場合(即ち、コ
ードC<NAC)には、ブロック172が「C」の値を処
理のために圧縮解除エンジンに送る。Cが正規の値と異
なる場合(即ち、C≧NAC)には、デコーダラン強化
エンジンは、予測される最大コード値とコードCの値と
の間の「ギャップを充填する」。
【0066】より詳細に説明すると、ブロック174は、
値NACをアドレスポインタRUNCODEに書き込
み、ブロック176は、圧縮解除される次のコードワード
としてRUNCODEを圧縮解除エンジンに送る。RU
NCODEの値はブロック178でインクリメントされ、
判定ブロック180が、デコーダラン強化エンジンが出力
コードと予測される次の利用可能なアドレスとの間の
「ギャップを充填している」(即ち、RUNCODE>
C)か否かを判定する。デコーダラン強化エンジンがラ
ンの復号を完了している場合には、判定ブロック180
は、ランの圧縮解除が完了していることを示す。ランコ
ードワードとNACとの「ギャップを充填する」ために
別のコードワードが必要である場合(即ち、RUNCO
DE≦C)には、判定ブロック180がブロック176に戻っ
て、アドレスポインタRUNCODEの値を圧縮解除エ
ンジンに送る。次いでRUNCODEがインクリメント
され、ランの中の全てのコードが圧縮解除エンジンに供
給されるまで、このプロセスが繰り返される。
【0067】図17および図18は、中間初期設定プロ
セスとランレングス強化プロセスとが共に作用する態様
を示すものである。生データストリーム182が、データ
圧縮エンジン30(図1参照)へ送られて、図5に示した
中間初期設定方法を用いて圧縮される。入力データスト
リーム182中の各キャラクタ「a」には、データストリ
ーム中の位置を識別し易いように添字を付してある。従
って、a0,a1,……,a11は同一のキャラクタ「a」の1
2回のコピーしたものを表している。1組の初期動作条
件190は、8ビットの単一キャラクタ長(m=8)と、3
2の特殊コード(k=5)と、12ビット固定長の出力コ
ード(b=12)と、初期開始アドレス1(C0=1)と
から構成されている。2進表記での「a」のASCII
表現は[01100001]である。次に利用可能なコード(NA
C)は、先ずNAC=C0+2k=1+32=33と計算され
る。記憶装置184は、圧縮/圧縮解除辞書中の特定のア
ドレス位置におけるデータストリーム182からのデータ
項目を示している。
【0068】中間初期設定圧縮プロセスは、最初の入力
キャラクタa0を読み出し、それと一致するキャラクタ
を記憶装置184中で探索する。そのa0がデータストリー
ム中の最初のキャラクタであると仮定した場合には、一
致は発生しない。次いでキャラクタa0がアドレス位置
NAC(ADDR33)で「新キャラクタ」として記憶され
る。a0の最初の5ビット(即ち、2進数[01100]=12)
がC0と合計されて、圧縮データストリーム186中の最初
のコードワード「13」として出力される。次いでa0
最後の3ビットについての部分コード(即ち、2進数[0
01]=1)が次のコードワード1として出力される。デ
ータストリーム186は、中間初期設定法を用いた圧縮プ
ロセスの後のコードワードを示すものであり、データス
トリーム188は、図13に示すラン強化プロセスの後の
データストリーム186を示すものである。
【0069】ラン強化プロセスは、特殊キャラクタコー
ド「13」および部分キャラクタコード「1」がNAC−
1と等しくなく、それ故、それらコードを圧縮データス
トリーム188に送ることを判定する。次いでアドレスポ
インタNACがインクリメントされる(NAC=34)。
次の入力キャラクタa1が読み出され、それと一致する
データ項目が記憶装置184中で探索される。アドレス位
置ADDR33に既にa0が記憶されているので、突き合わせ
が行われると、次の入力キャラクタa2がa1と連結され
る。ストリング「aa」(即ち、a1,a2)を求めて別
の探索が行われる。この探索は失敗する(即ち、一致は
発生しない)。Wはもはや「ヌル」ではない(即ち、W
=コード(a1))ので、コードワード「33」が圧縮エン
ジン126によって出力される(図12参照)。ラン強化
エンジン128(図12参照)がコードワード「33」を遮
断して、そのコードワードがNAC−1と等しい(即
ち、NAC−1=34−1=33)か否かを判定する。コー
ドワード「33」はNAC−1に等しく、従って、アドレ
スポインタRUNCODEが「33」に設定され、出力エ
ンジン130(図12参照)がディセーブルになって、コ
ードワード33の出力が抑止される。次いでストリング
「a1,a2」がアドレス位置NAC(ADDR34)に記憶さ
れ、アドレスポインタNACがインクリメントされる
(NAC=35)。
【0070】記憶装置184中の既に記憶されたデータ項
目と一致しない次のキャラクタストリングは、ストリン
グ[a3,a4,a5]である。次いで辞書項目「aa」(即
ち、ADDR34)が、典型的には圧縮エンジンにより出力さ
れる。ラン強化エンジンは、出力コードがNAC−1
(即ち35−1)に等しいか否かを判定する。従って、ア
ドレスポインタRUNCODEの値が現在の出力コード
値(即ちRUNCODE=34)と置き換えられる。次い
でラン強化エンジンが出力エンジンをディセーブルにし
て、コードワード「34」が圧縮エンジンから出力される
のが抑止される。次いで圧縮エンジンがアドレス位置N
AC(ADDR35)にキャラクタストリング[a3,a4,a5]
を記憶し、NACをインクリメントする(NAC=3
6)。
【0071】記憶装置184中のデータ項目と一致しない
生データストリーム182からの次のキャラクタストリン
グは、キャラクタストリング[a6,a7,a8,a9]であ
る。次いで出力コードワード「35」が圧縮エンジンによ
り出力される。出力コードワード「35」がNAC−1
(36−1)に等しいので、アドレスポインタRUNCO
DEの値が値35に設定され、この出力コードワード「3
5」が圧縮データストリーム188中に出力されることが禁
止される。次いでキャラクタストリング[a6,a7,a8,
9]がアドレス位置NAC(ADDR36)に記憶され、アド
レスポインタNACがインクリメントされる(NAC=3
7)。次いで圧縮エンジンが、シーケンス[a1 0,a11,
b]が記憶装置184中のどの項目とも一致しなくなるま
で、生データストリーム182からの更なるキャラクタを
組み合わせる。次いで、最後の一致データ項目ストリン
グ(即ち、ADDR34における[a1,a2])についてのコー
ドワード「34」が圧縮エンジンにより出力される。ラン
強化エンジンは、コードワード「34」がNAC−1(3
6)(即ちランの終わり)に等しくないことを判定す
る。RUNCODEの値が「36」である(即ち、ヌルで
はない)ので、RUNCODE値およびコードワード
「34」(即ち36,34)が、圧縮データストリーム188に出
力される。次いでRUNCODEが「ヌル」値にリセッ
トされる。NACがインクリメントされる前に、キャラ
クタストリング[a10,a11,b]が記憶位置NAC(ADDR
37)中にコピーされる。このプロセスは、生データスト
リーム182からの全てのキャラクタが圧縮されるまで続
行される。
【0072】データストリーム188は、図8に示すよう
に、符号化キャラクタ「13」を先ず復号することにより
圧縮解除される。コードワード「13」は、Co(即ち
「1」)より大きく、Co+2k(即ち「33」)より小さ
いので、このコードワードは、図9に示すように、新キ
ャラクタとして処理される。例えば、データストリーム
188からの次の3ビット(即ち、コードワード「1」)
は、特殊キャラクタコード「13」の復号化5ビット2進
表現(即ち、13−Co=12=[01100])と連結される。こ
れにより、「a」のASCII表現(即ち[01100001])
が生成される。最初に、復号化キャラクタは、圧縮解除
データストリーム190中でaoとして表される。次いで、
復号化キャラクタ「a」が、圧縮解除辞書(図示せず)
のアドレス位置ADDR33にロードされる。
【0073】圧縮データストリーム188からの次の符号
化キャラクタ「36」は、Co+2k よりも大きいものと
判定され、その符号化キャラクタは、多数キャラクタ符
号化キャラクタストリングと呼ばれている。その符号化
キャラクタは、デコーダラン強化エンジン160(図16
参照)により遮断される。コードワード「36」がNAC
(33)の現在値と比較される。コード値「36」はコード値
「33」よりも大きいので、NACの値がアドレスポイン
タRUNCODEに書き込まれ、そのRUNCODE
が、圧縮解除エンジンにより圧縮解除される次の符号化
キャラクタとして使用される。圧縮解除エンジンは、ア
ドレス位置ADDR34に圧縮解除辞書を構成し、LZ2圧縮
解除機構にとって典型的な態様で、圧縮解除データスト
リーム190上のランからキャラクタを出力する。
【0074】次いで、図16のデコーダラン強化プロセ
スがRUNCODEをインクリメント(34)して、RUN
CODEの値が符号化キャラクタ値「36」以下であるか
否かをチェックする。RUNCODEの値は「36」未満
なので、RUNCODEの新たな値が次の符号化キャラ
クタとして圧縮解除エンジンに送られる。このプロセス
は、RUNCODEがコードワード値「36」と等しくな
るまで繰り返される。次いで、次のコードワード「34」
が圧縮データストリーム188から読み出され、デコーダ
ラン強化エンジンにより同様の態様で処理される。この
ようにして、圧縮データストリーム中のコードワード
(即ちコードワード33,34,35)のギャップがラン強化エ
ンジンにより充填される。
【0075】生データストリーム182は、図5に示すL
Z2中間初期設定圧縮プロセスにより第1レベルまで圧
縮され、そのデータは更に、図13に示すラン強化プロ
セスにより第2レベルまで圧縮される。データストリー
ム188から明らかなように、ラン強化エンジンから伝送
されるコードワードの数は、データストリーム186によ
り通常伝送されるコードワードの数よりも小さい。従っ
て、中間的初期設定プロセスにより提供される符号化キ
ャラクタの短縮されたビット長によって圧縮率が最初に
増大され、更にラン強化プロセスによって増大される。
【0076】ラン符号化強化プロセスは、入力データ中
の他の種類の冗長性について圧縮上の不利を伴うもので
はないことに留意されたい。強化は、LZ2機構により
生成されるコードストリームに残るいくつかの残留冗長
性を利用する。即ち、任意の所与の時点で、ストリーム
中で発生し得る「最大有効コード」が存在し、その最大
コードよりも大きな値は「イリーガル」なものである。
ラン符号化の強化は、それらの「イリーガル」なコード
を使用してランの符号化を行う。可変長コードと共にラ
ン符号化強化を実施する場合、シーケンスA1,A1+1,
1+2,A1+3,……,A1+(k−1)は、コード長の
限界値にまで亘ることはできない。例えば、A1+(k
−1)の伝送に必要なビット数は、A1の伝送に必要な
ビット数と同じでなければならない。何故ならば、圧縮
解除装置が予期するビット長がそのビット数であるから
である。これは(必要であれば)ランをサブランに分割
することにより行われる。このラン符号化強化は、幾つ
かの変形例が可能なものである。そのような変形例に
は、「新コード」A1+1,A1+2,……,A1+(k−
1)を辞書に入力しないものがある。従って、ランの符
号化方法を維持したまま、辞書のスペースが節減され
る。どの変形例の性能が優れているかは、入力データ中
のランレングスの分布によって決まる。
【0077】ハフマン符号化 ネットワークプロトトコル(例えばTCP/IP)は、
転送中の実際のデータパケットを、ネットワークのトラ
フィック管理に必要な付加情報のエンベロープで包む。
実験結果の観察により、この付加情報は、ネットワーク
トラフィック中でヌルバイトが発生する相対的な頻度を
大幅に高める傾向を有するものであることが示された。
この現象は、パケットのエンベロープ中の種々のフィー
ルドの「ゼロ・パディング」に一部起因するものであ
る。非ゼロの値が発生する頻度はデータによって決ま
り、また長期間に亘って均一な分布から著しく離脱する
ことはない。このため、バイト値についての確率分布の
大まかな近似は以下の通りとなる。
【0078】 P(c)=p (c=0) P(c)=(1−p)/255 (c≠0) ここで、P(c)は値cを有する1バイトが発生する確率
であり、0≦p≦1である。ネットワークトラフィック
を監視することにより得られるpの値は代表的には0.2
と0.3との間で変動する。極めて短いパケットの場合、
または実際のパケットデータが圧縮不可能な場合(例え
ば、データがソースで既に圧縮されている場合)には、
ゼロ値の高い確率が、データ中に残っている冗長性であ
ることが多い。このような場合には、簡単なハフマン符
号化機構の方がLZ機構よりも性能が優れていることが
ある。
【0079】ハフマン符号化の基本原理は、可変長コー
ドで固定長キャラクタを符号化する、ということであ
り、即ち、最も頻度の高いキャラクタにはより短いコー
ドを使用し、最も頻度の低いキャラクタにはより長いコ
ードを使用する。ハフマン符号化機構は当業界で公知の
ものであるので、詳細には説明しないこととする。ハフ
マンアルゴリズムを用いることにより、所与の確率分布
について最適なコード割り当てを構成することが可能で
ある。その結果として生じるコード割り当ては、「接頭
語が必要ない」という特性をも有している(即ち、別の
コードの接頭語としてコードが生じることはない)。こ
れにより、符号化ストリームが一意の判読可能性および
即時性を有するものとなる。
【0080】p>1/256で、0〜255の値を有する8ビ
ット入力バイトを仮定した、上記の簡単な確率分布の場
合の、最適なハフマンコード割り当てを図19に示す。
同図の中央列において、「z」は1≦z≦8の範囲の整
数であり、そのpの関数としての最適値は以下のように
して決定される。この符号化機構の圧縮率は、次の方程
式1で定義される。
【0081】 R(z,p) = pz/8 + [(1−p)/2040] × (29-z+2038) (1) 1≦z≦8の範囲の一定のzについて、R(z,p)はp
の一次関数となる。その傾きは非正数であり、zと共に
単調に増加する。また、値R(z,0)は、zと共に単調
に減少する。図20は、1≦z≦4および0≦p≦0.5
の場合のR(z,p)を示すグラフである。従って、所与
のzについて値pzが存在し、z'>zおよびp>pz
全てについて、R(z,p)≦R(z',p)となる。pzが以
下の一次方程式(2)の根であることが容易に確認されよ
う。
【0082】 R(z',p) = R(z+1,pz) (2) 方程式(1)の式R(z,p)を方程式(2)に代入してpzにつ
いて解くと、下記方程式が得られる。
【0083】pz = 28-Z/ [(255×2Z)+256] 図21は、0≦z≦8についてpzの値を示す表であ
る。完全性を期すためにz=0での値pz=1も含めて
ある。所与のzの値(1≦z≦8)は、pがpz≦p≦
z-1の範囲にある場合に最適となる。これらの間隔の
幾つかを図20に示す。従って、64/319≦p≦128/38
3(約0.2006≦p≦0.3342)の場合にはz=2が最適と
なる。この範囲が典型的なLANトラフィックで経験上
認められるpの値を含んでいることに留意されたい。
【0084】ネットワークパケットのための圧縮機構 前述の種々の圧縮方法が、図22で組み合わされて、ネ
ットワークパケットのカスタマイズされた圧縮のための
効率的な機構が生成される。図22は、パケットアドレ
スフィールド(通常は2つの6バイトフィールド)を処
理するためのブロック202を示している。或る特定用途
(例えばネットワークブリッジ)では、ほとんどのパケ
ットが、小さなサブセットからのアドレス(即ちブリッ
ジによりサービスされるステーションのアドレス)を備
えている。これらの頻繁に生じるアドレスは、テーブル
中に記憶させることができ、また連続番号によりテーブ
ル中に符号化することができる。例えば、アドレステー
ブルが255バイト長である場合には、連続番号を1バイ
トで符号化することが可能であり、従って、アドレスフ
ィールドについて6:1の圧縮率を達成することができ
る(テーブル中で発見されないアドレスをマークするた
めに1つのコードは予約しておく)。また別の用途で
は、アドレスフィールドは、パケットの残りと共に圧縮
され、または未圧縮のまま送られる。
【0085】ここで図22を参照する。入力パケット20
0は、アドレス処理ブロック202に送られる。また、ブロ
ック208は、強化LZ2機構を表しており、中間初期辞
書およびラン符号化強化(LZE)を備えている。ブロ
ック204は、z=2の場合の上述の簡単なハフマン機構
(z−HUF)を示している。ハードウェアによる実施
態様では、LZEおよびz−HUFが並行して実行され
る。ブロック210は、カレントパケットについて最高性
能を有する圧縮方法の出力を選択する。次いでブロック
210は、圧縮パケット長を含む短いヘッダおよび選択さ
れた圧縮方法についての標識と共に、圧縮パケットを出
力する。また、その圧縮された出力の長さが、パケット
の拡張を防止するために、ブロック200からの元のパケ
ットの長さと比較される。LZEおよびz−HUFのい
ずれもパケットの圧縮に成功しなかった場合は、元のコ
ピーが、ヘッダ中の適当な指示と共にブロック206から
出力される。
【0086】一般に、パケットの大部分は、ブロック20
4のz−HUFまたはブロック206の「コピー」を用いた
場合より、ブロック208のLZEを用いた場合の方が良
好な圧縮率を得ることになる。しかし、パケットによっ
ては(ほとんどの場合、短いパケット)、z−HUFブ
ロックおよび「コピー」ブロックの方が優れている。代
表的な圧縮結果を、異なる2つのパケットファイルにつ
いて図23に示す。同図の1行目は、最大16ビットの出
力コードを有するLZWによる実施態様(UNIX圧
縮)を示している。全パケットが1つのファイルとして
圧縮される(即ち、パケットの境界が無視され、辞書が
各パケット間で共用される)。図23の表の2行目は、
12ビットの出力コードを有するUNIX圧縮の結果を示
し、3行目は、上述のLZE圧縮による結果を示し、4
行目は、図22に示すようにLZE圧縮機構とz−HU
F圧縮機構との双方を並行して用いた場合の圧縮結果を
示している。3行目と4行目の結果は、各パケットを別
個に圧縮することに相当するものである。
【0087】図23から分かるように、個々のパケット
についての圧縮性能は、大きなパケットファイルを圧縮
する場合に近似しており、また場合によってはそれより
も優れていることがある。これは、パケット間の冗長性
を利用することによって大きいパケットファイル中のデ
ータソースの統計的特性に適応させる一層良好な機会が
存在する場合であっても、真となる。図23の圧縮結果
は、何日間も継続してソフトウェアを実行可能とした長
期間の圧縮試験の結果と一致するものである。ネットワ
ークパケットが周期的にサンプリングされ、圧縮され、
圧縮解除されて、圧縮率の監視が行われた。
【0088】図24は、時間の関数として圧縮率を示す
グラフである。約200時間に亘って圧縮が測定された。
サンプリングされたデータセットは、1,420,998のパケ
ットから成り、総サイズが198,754,151バイト、平均パ
ケット長が140バイトであった。このデータセットにつ
いての平均圧縮率は0.572であった。図25は、パケッ
ト長についてデータ分布(総バイト数の一部)を示すグ
ラフである。このデータセット中の50%を越えるバイト
が、200バイト以下の長さのパケット中に含まれてい
る。図26は、異なる範囲のパケット長について平均圧
縮率を示すものである。各パケット長毎に一貫した良好
な圧縮率が維持されている。
【0089】上述の装置は、「未加工の」アルファベッ
トが大きい場合(例えば16ビット記号)にデータソース
中の圧縮性能を改善するものである。更に、この装置
は、各ブロックが個々に圧縮されなければならない、短
いブロックに区分されたデータソースについても、圧縮
性能を改善するものである。これらの強化により、ネッ
トワークパケット用にカスタマイズされた圧縮機構が提
供される。従って、個々のネットワークパケットについ
ての圧縮性能は、平均パケット長が極めて短い場合であ
っても、大きいパケットファイルで達成される性能に匹
敵するものとなる。
【0090】以上、本発明の原理を好適実施例に基づい
て図示し説明してきたが、本発明は、そのような原理か
ら逸脱することなく、その構成および細部を修正するこ
とが可能であることは明白である。特許請求の範囲に記
載の本発明の思想及び範囲に含まれる全ての修正例およ
び変形例を本発明として請求する。
【0091】以下に本発明の実施態様を列挙する。
【0092】1.辞書ベースの圧縮/圧縮解除装置にお
いて入力データを符号化する方法であって、この方法
が、入力データからの一意の多数キャラクタストリング
を辞書項目として前記圧縮/圧縮解除装置中に記憶さ
せ、前記入力データからの多数キャラクタストリング
を、そのキャラクタストリングと一致する辞書項目のア
ドレスに従ってコードワードへと符号化し、圧縮/圧縮
解除辞書中に以前に記憶されていない、前記入力データ
からの単一キャラクタストリングを識別し、各々の単一
キャラクタストリングを特殊コードと部分コードとに符
号化し、その各々の特殊コードと部分コードとがその関
連する単一キャラクタストリングの選択可能な部分を表
しており、符号化された単一キャラクタストリングに対
応するコードワードと、符号化された多数キャラクタス
トリングに対応するコードワードとの双方を有する圧縮
データストリームを前記圧縮/圧縮解除装置から出力
し、各々の特殊コードおよびその関連する部分コード
が、単一キャラクタストリングを一意に識別し、および
前記入力データ中に存在し得る一意の単一キャラクタス
トリングの総数のサブセットを表している、というステ
ップを含むことを特徴とする、前記符号化方法。
【0093】2.特殊コード中に何ビットの単一キャラ
クタが含まれているかを決定する選択可能なパラメータ
kに従って、圧縮データストリーム中の各々の単一キャ
ラクタストリングについての特殊コードを符号化する、
というステップを含むことを特徴とする、前項1記載の
符号化方法。
【0094】3.圧縮データストリームから単一キャラ
クタストリングを再構成するステップを含み、この再構
成ステップが、圧縮データストリーム中の特殊コードを
識別し、その特殊コードをその関連する単一キャラクタ
ストリングの元の部分へと復号し、その特殊コードをそ
の関連する部分コードと組み合わせる、というステップ
から成ることを特徴とする、前項2記載の符号化方法。
【0095】4.圧縮/圧縮解除装置により生成される
コード値の所定範囲内に存在するように特殊コードが符
号化されることを特徴とする、前項1記載の符号化方
法。
【0096】5.単一キャラクタストリングを符号化す
るステップが、単一キャラクタストリングからのビット
のサブセットを特殊コードに割り当て、単一キャラクタ
からの残りのビットを部分コードに割り当てる、という
ステップから成り、単一キャラクタストリングを表すた
めに特殊コード中のビットの数が圧縮/圧縮解除装置中
で割り当てられたコードワードの数によって決定され
る、ということを特徴とする、前項1記載の符号化方
法。
【0097】6.単一キャラクタストリングの特殊コー
ドに割り当てられたビット数が、入力データの種類およ
び構造に従って変更されることを特徴とする、前項5記
載の符号化方法。
【0098】7.圧縮データストリーム中の連続するコ
ードワードのランを検出するステップを含み、そのラン
中の各コードワードが、同じキャラクタから構成された
入力データストリングを表していることを特徴とする、
前項1記載の符号化方法。
【0099】8.圧縮データストリームからのコードワ
ードのランを圧縮するステップを含むことを特徴とす
る、前項7記載の符号化方法。
【0100】9.圧縮/圧縮解除装置が圧縮データスト
リーム中のコードワードのランの一部を出力することを
禁止するステップを含むことを特徴とする、前項7記載
の符号化方法。
【0101】10.禁止されたコードワードに続いて送
られる最初のコードワードの値により、禁止されたコー
ドワードのシーケンスの再構成を可能にすることを特徴
とする、前項9記載の符号化方法。
【0102】11.少なくとも1つの別の圧縮機構を用
いて入力データを圧縮すると同時に、最良の圧縮率を提
供する圧縮機構から圧縮データストリームを選択する、
というステップを含むことを特徴とする、前項7記載の
符号化方法。
【0103】12.入力データのサイズが各々の圧縮デ
ータストリームよりも小さい場合に、未圧縮の入力デー
タキャラクタを選択するステップを含むことを特徴とす
る、前項11記載の符号化方法。
【0104】13.一意の単一キャラクタストリングの
総数が、圧縮/圧縮解除装置中の辞書項目の総数よりも
多いことを特徴とする、前項1記載の符号化方法。
【0105】14.一意の単一キャラクタストリングの
数が216であることを特徴とする、前項1記載の符号化
方法。
【0106】15.辞書ベースの圧縮/圧縮解除装置に
おいて入力データを符号化する方法であって、この方法
が、入力データからのキャラクタストリングを符号化
し、一意の単一キャラクタストリングをデータ項目とし
て圧縮/圧縮解除辞書中に記憶させ、符号化キャラクタ
ストリングを表すコードワードから成る圧縮データスト
リームを圧縮/圧縮解除装置から出力し、入力データキ
ャラクタのランを表す圧縮データストリーム中のコード
ワードのシーケンスを検出し、前記入力データキャラク
タを表すランが、同じ値を有し、圧縮/圧縮解除装置に
より逐次に処理され、圧縮/圧縮解除装置が圧縮データ
ストリーム中のコードワードのランの一部を出力するの
を禁止することにより圧縮データストリームを圧縮し、
禁止されたコードワードに続いて送られる最初のコード
ワードの値により、禁止されたコードワードのシーケン
スの再構成を可能にする、というステップを含むことを
特徴とする、前記符号化方法。
【0107】16.圧縮/圧縮解除装置から出力された
符号化値を、圧縮/圧縮解除辞書中に記憶されている最
後のデータ項目の記憶位置と比較することによりランが
検出されることを特徴とする、前項15記載の符号化方
法。
【0108】17.圧縮/圧縮解除装置から出力された
符号化値が、辞書中に記憶されている最後のキャラクタ
ストリングのアドレス値と等しくならなくなるまで、圧
縮/圧縮解除装置が符号化キャラクタストリングを出力
することを禁止するステップを含むことを特徴とする、
前項16記載の符号化方法。
【0109】18.禁止されたコードワードに続いて送
られる最初のコードワードを、圧縮/圧縮解除装置によ
り圧縮解除データへと更に圧縮解除されたコードワード
へと、圧縮解除するステップを含むことを特徴とする、
前項15記載の符号化方法。
【0110】19.辞書ベースの圧縮/圧縮解除装置に
おいて入力データを符号化する回路であって、この回路
が、前記入力データからの単一キャラクタストリングお
よび多数キャラクタストリングをコードワードへと符号
化し、そのコードワードを圧縮データストリームとして
出力する、圧縮/圧縮解除エンジンと、前記入力データ
からの単一キャラクタストリングを第1コードフィール
ドと第2コードフィールドとに分割する手段と、前記圧
縮データストリーム中の前記単一キャラクタストリング
を識別するために前記第1コードフィールドを符号化す
る手段であって、前記第1コードフィールドが、圧縮/
圧縮解除エンジンのコード値の所定範囲内にあるように
符号化される、前記符号化手段と、前記第1コードフィ
ールドを復号してそれを前記第2コードフィールドと組
み合わせることにより圧縮データストリームから単一キ
ャラクタストリングを生成する手段であって、前記第1
および第2コードフィールドが、入力データ中で発生す
る可能性のある全ての単一キャラクタストリングのサブ
セットを表すことにより、符号化キャラクタストリング
のビット長を短縮する、前記生成手段ととを備えること
を特徴とする、前記符号化回路。
【0111】20.前記符号化手段が前記第1コードフ
ィールドからの選択可能なビット数を所定値と合計する
ことを特徴とする、前項19記載の符号化回路。
【0112】21.前記生成手段が、前記第1コードフ
ィールドから所定値を減算し、その減算結果からの選択
可能な数のビットを前記第2コードフィールドと組み合
わせることを特徴とする、前項19記載の符号化回路。
【0113】22.前記圧縮/圧縮解除エンジンに接続
され、その圧縮/圧縮解除エンジンが前記圧縮データス
トリーム中のコードワードの幾つかを出力することを禁
止する、エンコーダラン強化エンジンを備えていること
を特徴とする、前項19記載の符号化回路。
【0114】23.前記圧縮/圧縮解除エンジンに接続
され、禁止されたコードワードに続いて送られる最初の
コードワードの値から、禁止されたコードワードのシー
ケンスを再構成する、デコーダラン強化エンジンを備え
ていることを特徴とする、前項22記載の符号化回路。
【0115】
【発明の効果】本発明は上述のように構成したので、デ
ータ圧縮率を高め、辞書ベースの圧縮/圧縮解除装置に
必要な記憶装置の量を削減するために、異なる形式の入
力データおよび異なるデータ構造に適応可能な、データ
圧縮の初期設定プロセスを提供することができる。
【図面の簡単な説明】
【図1】本発明による強化が実施された圧縮/圧縮解除
装置の概要を示すブロック図である。
【図2】LZ圧縮の基本原理を示す説明図である。
【図3】空の初期辞書を有する従来のLZ圧縮方式での
新キャラクタの伝送を示す説明図である。
【図4】本発明による中間辞書初期設定を用いた強化L
Z圧縮による新キャラクタの伝送を示すフローチャート
である。
【図5】基本的なLZEの中間初期設定プロセスを示す
フローチャートである。
【図6】図5のサブプロセスである「新キャラクタ」の
符号化を示すフローチャートである。
【図7】図1の圧縮副装置で図6の符号化サブプロセス
を実行するための回路を示す機能ブロック図である。
【図8】図6のサブプロセスにより生成された符号化コ
ードについての「新キャラクタ」符号化サブプロセスを
示すフローチャートである。
【図9】図1の圧縮解除副装置で図8の符号化サブプロ
セスを実施するための回路を示す機能ブロック図であ
る。
【図10】本発明による異なる初期設定方式についての
圧縮結果を示す表である。
【図11】従来のデータ圧縮装置を示すブロック図であ
る。
【図12】強化Lempel-Zivランレングス符号化機構を図
1に示す圧縮副装置で実施するための回路を示すブロッ
ク図である。
【図13】本発明による強化Lempel-Zivランレングス符
号化方法を実施するためのプロセスを示すフローチャー
トである。
【図14】従来のデータ圧縮解除装置を示すブロック図
である。
【図15】本発明による図1の圧縮解除副装置で強化Le
mpel-Zivランレングス符号化を実施するための回路を示
すブロック図である。
【図16】本発明による強化Lempel-Zivランレングス符
号化方法を示すフローチャートである。
【図17】中間初期設定およびランレングス符号化を行
うための方法の図形化して示す説明図である(1/
2)。
【図18】中間初期設定およびランレングス符号化を行
うための方法の図形化して示す説明図である(2/
2)。
【図19】最適なハフマン符号化割り当てを示す表であ
る。
【図20】ハフマン符号化データの圧縮率を示すグラフ
である。
【図21】異なるビット長についての確率分布を示す表
である。
【図22】本発明による並列「最良利益」圧縮装置を示
すブロック図である。
【図23】種々のネットワークパケットファイルについ
ての圧縮結果を示す表である。
【図24】実際のネットワークパケットデータに対して
図22の装置を用いた場合の圧縮率を時間の関数で示す
グラフである。
【図25】図24のデータ分布をパケット長の関数とし
て示すグラフである。
【図26】図24のデータ圧縮率をパケット長の関数と
して示すグラフである。
【符号の説明】
24 圧縮副装置 26 圧縮解除副装置 30 圧縮エンジン 32 記憶装置 34 中間初期設定エンコーダ 36 デコーダ 38 エンコーダラン強化エンジン 40 デコーダラン強化エンジン

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】辞書ベースの圧縮/圧縮解除装置において
    入力データを符号化する方法であって、この方法が、 入力データからの一意の多数キャラクタストリングを辞
    書項目として前記圧縮/圧縮解除装置中に記憶させ、 前記入力データからの多数キャラクタストリングを、そ
    のキャラクタストリングと一致する辞書項目のアドレス
    に従ってコードワードへと符号化し、 圧縮/圧縮解除辞書中に以前に記憶されていない、前記
    入力データからの単一キャラクタストリングを識別し、 各々の単一キャラクタストリングを特殊コードと部分コ
    ードとに符号化し、その各々の特殊コードと部分コード
    とがその関連する単一キャラクタストリングの選択可能
    な部分を表しており、 符号化された単一キャラクタストリングに対応するコー
    ドワードと、符号化された多数キャラクタストリングに
    対応するコードワードとの双方を有する圧縮データスト
    リームを前記圧縮/圧縮解除装置から出力し、各々の特
    殊コードおよびその関連する部分コードが、単一キャラ
    クタストリングを一意に識別し、および前記入力データ
    中に存在し得る一意の単一キャラクタストリングの総数
    のサブセットを表している、というステップを含むこと
    を特徴とする、前記符号化方法。
JP6074739A 1993-04-13 1994-04-13 ネットワークパケットに適用される小型辞書を用いた圧縮方法 Pending JPH07104971A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US046548 1993-04-13
US08/046,548 US5389922A (en) 1993-04-13 1993-04-13 Compression using small dictionaries with applications to network packets

Publications (1)

Publication Number Publication Date
JPH07104971A true JPH07104971A (ja) 1995-04-21

Family

ID=21944035

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6074739A Pending JPH07104971A (ja) 1993-04-13 1994-04-13 ネットワークパケットに適用される小型辞書を用いた圧縮方法

Country Status (4)

Country Link
US (1) US5389922A (ja)
JP (1) JPH07104971A (ja)
DE (1) DE4340591C2 (ja)
GB (1) GB2277179B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100332709B1 (ko) * 1996-07-24 2002-04-15 보베테 죤스 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터
JP2004530318A (ja) * 2001-02-01 2004-09-30 ビーティージー・インターナショナル・リミテッド 高速データ圧縮を提供する装置

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530645A (en) * 1993-06-30 1996-06-25 Apple Computer, Inc. Composite dictionary compression system
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
US5870036A (en) * 1995-02-24 1999-02-09 International Business Machines Corporation Adaptive multiple dictionary data compression
US5627534A (en) * 1995-03-23 1997-05-06 International Business Machines Corporation Dual stage compression of bit mapped image data using refined run length and LZ compression
DE19538852A1 (de) * 1995-06-30 1997-01-02 Deutsche Telekom Ag Verfahren und Anordnung zur Klassifizierung von Sprachsignalen
US5781881A (en) * 1995-10-19 1998-07-14 Deutsche Telekom Ag Variable-subframe-length speech-coding classes derived from wavelet-transform parameters
GB2310055A (en) * 1996-02-08 1997-08-13 Ibm Compression of structured data
JP3256121B2 (ja) * 1996-02-13 2002-02-12 富士通株式会社 データ符号化装置およびデータ復号装置およびその方法
DE19706268A1 (de) * 1997-02-18 1998-08-20 Christian Wenz Dateiformatspezifisches Packverfahren
US5930399A (en) * 1997-04-03 1999-07-27 Microsoft Corporation Data encoding for a communication channel supporting a subset of the characters to be transmitted
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
JPH11143877A (ja) * 1997-10-22 1999-05-28 Internatl Business Mach Corp <Ibm> 圧縮方法、辞書の見出し語インデックス・データを圧縮するための方法、及び機械翻訳システム
US6145109A (en) * 1997-12-12 2000-11-07 3Com Corporation Forward error correction system for packet based real time media
ATE218778T1 (de) 1997-12-12 2002-06-15 3Com Corp Ein vorwärtsfehlerkorrektionssystem für packetbasierte echtzeitmedien
US5870412A (en) * 1997-12-12 1999-02-09 3Com Corporation Forward error correction system for packet based real time media
JP3421700B2 (ja) * 1998-01-22 2003-06-30 富士通株式会社 データ圧縮装置及び復元装置並びにその方法
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
JP4242970B2 (ja) * 1998-07-09 2009-03-25 富士通株式会社 データ圧縮方法及びデータ圧縮装置
US6624761B2 (en) * 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US7538694B2 (en) 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
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
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6166665A (en) 1999-03-08 2000-12-26 Unisys Corporation Data compression method and apparatus with embedded run-length encoding
US6604158B1 (en) * 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6601104B1 (en) * 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
GB2348065A (en) * 1999-03-19 2000-09-20 Nds Ltd Signal compression
IT1308456B1 (it) * 1999-04-26 2001-12-17 Olivetti Lexikon Spa Dispositivo per comprimere/decomprimere stringhe di bit
JP2000305822A (ja) * 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法
US6137428A (en) * 1999-04-27 2000-10-24 Unisys Corporation Data compression method and apparatus with embedded run-length encoding using mathematical run processing
US6169499B1 (en) * 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding
US6453389B1 (en) 1999-06-25 2002-09-17 Hewlett-Packard Company Optimizing computer performance by using data compression principles to minimize a loss function
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
US6404362B1 (en) * 1999-09-21 2002-06-11 Unisys Corporation Method and apparatus for reducing the time required for decompressing compressed data
GB0001707D0 (en) * 2000-01-25 2000-03-15 Btg Int Ltd Data compression having more effective compression
US20030191876A1 (en) * 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US7181608B2 (en) * 2000-02-03 2007-02-20 Realtime Data Llc Systems and methods for accelerated loading of operating systems and application programs
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7417568B2 (en) * 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US6359548B1 (en) * 2000-10-16 2002-03-19 Unisys Corporation Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings
US20020085764A1 (en) * 2000-12-29 2002-07-04 Brady Thomas S. Enhanced data compression technique
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6606040B2 (en) 2001-02-13 2003-08-12 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
US6392568B1 (en) * 2001-03-07 2002-05-21 Unisys Corporation Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings
US6400286B1 (en) * 2001-06-20 2002-06-04 Unisys Corporation Data compression method and apparatus implemented with limited length character tables
US7272663B2 (en) * 2001-08-28 2007-09-18 International Business Machines Corporation Method and system for delineating data segments subjected to data compression
US7252322B2 (en) * 2003-02-07 2007-08-07 William Rusu Hard tonneau cover
US7162583B2 (en) * 2003-12-29 2007-01-09 Intel Corporation Mechanism to store reordered data with compression
US20050219076A1 (en) * 2004-03-22 2005-10-06 Michael Harris Information management system
US7053803B1 (en) * 2005-01-31 2006-05-30 Hewlett Packard Development Company, L.P. Data compression
US7420992B1 (en) 2005-03-17 2008-09-02 Packeteer, Inc. Adaptive network traffic compression mechanism including dynamic selection of compression algorithms
US7102552B1 (en) * 2005-06-07 2006-09-05 Windspring, Inc. Data compression with edit-in-place capability for compressed data
US7167115B1 (en) 2005-08-26 2007-01-23 American Megatrends, Inc. Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
ATE434311T1 (de) * 2005-10-27 2009-07-15 Alcatel Lucent Datensammeln von netzknoten in einem telekommunikationsnetz
EP2030115A4 (en) 2006-05-31 2012-08-22 Ibm METHOD AND SYSTEM FOR TRANSFORMING LOGICAL DATA OBJECTS FOR STORAGE
US8769311B2 (en) 2006-05-31 2014-07-01 International Business Machines Corporation Systems and methods for transformation of logical data objects for storage
US7738717B1 (en) * 2006-06-27 2010-06-15 Verizon Services Corp. Systems and methods for optimizing bit utilization in data encoding
US7649909B1 (en) 2006-06-30 2010-01-19 Packeteer, Inc. Adaptive tunnel transport protocol
US20080017227A1 (en) * 2006-07-19 2008-01-24 Ward Barry D Walking aid apparatus
WO2008143156A1 (ja) * 2007-05-17 2008-11-27 Sony Corporation 符号化装置および符号化方法、並びに復号装置および復号方法
US8391148B1 (en) * 2007-07-30 2013-03-05 Rockstar Consortion USLP Method and apparatus for Ethernet data compression
US7827165B2 (en) * 2007-09-17 2010-11-02 International Business Machines Corporation Providing a social network aware input dictionary
JP5446328B2 (ja) * 2009-03-06 2014-03-19 セイコーエプソン株式会社 表示装置,電子機器および駆動コード生成回路
US8217813B2 (en) * 2010-04-29 2012-07-10 Advanced Micro Devices, Inc. System and method for low-latency data compression/decompression
US8897298B2 (en) * 2011-11-02 2014-11-25 Qualcomm Incorporated Systems and methods for compressing headers and payloads
US10387377B2 (en) 2017-05-19 2019-08-20 Takashi Suzuki Computerized methods of data compression and analysis
US11741121B2 (en) 2019-11-22 2023-08-29 Takashi Suzuki Computerized data compression and analysis using potentially non-adjacent pairs
CN114128240A (zh) * 2019-02-28 2022-03-01 华为技术有限公司 实现内部网关协议的网络中的压缩数据传输
CN115276666B (zh) * 2022-09-28 2022-12-20 汉达科技发展集团有限公司 一种装备训练模拟器数据高效传输方法
DE102022003682A1 (de) 2022-10-05 2024-04-11 Mercedes-Benz Group AG Verfahren zur Kompression und Dekompression von Log-Dateien und informationstechnisches System
CN115988569B (zh) * 2023-03-21 2023-06-30 浙江省疾病预防控制中心 一种蓝牙设备数据快速传输方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2101155B1 (ja) * 1970-08-31 1974-09-20 Ortf
DE3048273C2 (de) * 1980-12-20 1985-04-25 Messerschmitt-Bölkow-Blohm GmbH, 8012 Ottobrunn Verfahren und Schaltungsanordnung zur Aufbereitung multispektraler digitalisierter Bilddaten zu Übertragungszwecken
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4814746A (en) * 1983-06-01 1989-03-21 International Business Machines Corporation Data compression method
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US5003307A (en) * 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
US5150430A (en) * 1991-03-15 1992-09-22 The Board Of Trustees Of The Leland Stanford Junior University Lossless data compression circuit and method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100332709B1 (ko) * 1996-07-24 2002-04-15 보베테 죤스 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터
JP2004530318A (ja) * 2001-02-01 2004-09-30 ビーティージー・インターナショナル・リミテッド 高速データ圧縮を提供する装置

Also Published As

Publication number Publication date
GB9406407D0 (en) 1994-05-25
DE4340591A1 (de) 1994-11-17
US5389922A (en) 1995-02-14
GB2277179A (en) 1994-10-19
DE4340591C2 (de) 1995-04-27
GB2277179B (en) 1997-10-22

Similar Documents

Publication Publication Date Title
JPH07104971A (ja) ネットワークパケットに適用される小型辞書を用いた圧縮方法
JP3541930B2 (ja) 符号化装置及び復号化装置
US5229768A (en) Adaptive data compression system
AU721734B2 (en) A lempel-ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5001478A (en) Method of encoding compressed data
US5532694A (en) Data compression apparatus and method using matching string searching and Huffman encoding
US5010345A (en) Data compression method
US5877711A (en) Method and apparatus for performing adaptive data compression
WO1998006028A9 (en) A lempel-ziv data compression technique utilizing a dicionary pre-filled with fequent letter combinations, words and/or phrases
US7764202B2 (en) Lossless data compression with separated index values and literal values in output stream
JP2863065B2 (ja) マッチングストリング探索およびハフマン符号化を用いたデータ圧縮装置および方法ならびにデータ伸長装置および方法
Carus et al. Fast text compression using multiple static dictionaries
Horspool The effect of non-greedy parsing in Ziv-Lempel compression methods
Horspool Improving LZW.
EP0435802B1 (en) Method of decompressing compressed data
US5010344A (en) Method of decoding compressed data
Kwong et al. A statistical Lempel-Ziv compression algorithm for personal digital assistant (PDA)
Hoang et al. Dictionary selection using partial matching
US7750826B2 (en) Data structure management for lossless data compression
Zia et al. Two-level dictionary-based text compression scheme
EP0494038A2 (en) Run-length encoding in extensible character sets
Istle et al. Online compression of ASCII files
Salomon et al. Dictionary methods
Buchanan et al. Huffman/Lempel-Ziv Compression Methods
Pandey A Brief Study of Data Compression Algorithms