JPH06242924A - データ圧縮/伸長システム及び方法 - Google Patents

データ圧縮/伸長システム及び方法

Info

Publication number
JPH06242924A
JPH06242924A JP5283976A JP28397693A JPH06242924A JP H06242924 A JPH06242924 A JP H06242924A JP 5283976 A JP5283976 A JP 5283976A JP 28397693 A JP28397693 A JP 28397693A JP H06242924 A JPH06242924 A JP H06242924A
Authority
JP
Japan
Prior art keywords
cache
data segment
data
segment
value
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
JP5283976A
Other languages
English (en)
Other versions
JP3499903B2 (ja
Inventor
Charles J Rosenberg
チャールス・ジェイ・ローゼンバーグ
Thomas G Berge
トーマス・ジー・バーグ
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 JPH06242924A publication Critical patent/JPH06242924A/ja
Application granted granted Critical
Publication of JP3499903B2 publication Critical patent/JP3499903B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • H04N1/417Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

(57)【要約】 (修正有) 【目的】相異なる出現パターンの個数が辞書の容量を超
えた場合に、捨てるべきパターンを決めるに当たって、
完全なLRU管理を行うと辞書管理のための計算量の負
担が大きい点を改善する。 【構成】出現パターンの辞書を作り、与えられたパター
ンが辞書中のパターンと一致した場合には、そのパター
ンの代わりに辞書中のパターンの位置を示す識別子を出
力することによってデータ圧縮を行う。辞書を最も最近
使用されたパターンが入る第1のキャッシュ部分91と、
それ以外の第2のキャッシュ部分92-94に分ける。新た
なパターンが与えられると、それを第1の部分へ入れ、
以前第1の部分に入っていたパターンを第2の部分中で
ランダムに選択された部分に上書きする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータの圧縮及び伸長(d
ecompression)のための方法及び装置に関するものであ
り、より詳細には、同期動作するキャッシュ・メモリに
よるこのような方法及び装置に関するものである。
【0002】
【従来技術及びその問題点】データの圧縮の目標は、デ
ータまたはイメージを表すために必要なビットの数を節
減することにある。先行技術はデータ圧縮のための多く
の方法で満ちている。最高のレベルのデータ圧縮を与え
る技術は一般的には最も複雑なデータ処理機器を必要と
するものであり、またその実行速度が遅いものが多い。
比較的低いレベルのデータ圧縮を与える技術は、比較的
迅速に動作し、比較的単純なハードウエアを用いること
が多い。一般的にいえば、データ圧縮の方法を選択する
ことは、システムの複雑性や実行時間とデータ圧縮の所
望のレベルとの間での妥協に基づくものである。
【0003】刊行された先行技術には、データ圧縮方法
についての多くの技術が含まれている。"Coding of Two
-Tone Images", Hwang, IEEE Transactions on Communi
cations, Vol. COM-25, No. 11, November, 1997, pp.
1406-1424 は、英数字データ及びイメージ・データの双
方について効率的なコーディングのための多くの技術を
説明する評論論文である。1次元コーディング(ラン・
レングス)及び2次元コーディング(例えば、ブロック
当りのピクセル・データ(per block of pixeldate))の
双方について考察されている。Hunter 他は論文 "Inter
national Digital Facsimile Coding Standars", Proce
edings of the IEEE, Vol. 68, Nor. 7, July, 1980, p
p. 854-867 で、ファクシミリ通信において用いられる
種々のアルゴリズム(一般的には、1次元コーディング
技術)を説明している。彼らはまた、後続のコーディン
グ・ラインの条件が先行の基準ラインにおける条件に依
存してコーディングされる2次元のコーディング方式に
ついても説明している。
【0004】Williams による論文 "An Extremely Faxt
Ziv-Lempel Data Compression Algorithm", Proceedin
gs of the IEEE Data Compression Conference, April,
1991, pp. 362-371 には、周知の Lempel -Ziv )(LZ)
の圧縮アルゴリズムを高速で実現することが説明されて
いる。この方法では、受信ノードと送信ノードの双方で
データ・ストリングのストリングの辞書を構築し、入力
されたデータ・ストリングと辞書内に見出されるデータ
・ストリングとの間の一致に従ってコードを送出する。
【0005】Usubuchi 他は論文 "Adaptive Predictive
Coding For Newspaper Facsimile", Proceedings of t
he IEEE, Vol. 68, No. 1980, pp.807-813 で、ハーフ
・トーンのイメージ・データの圧縮に適用される適応
的、予測的なアルゴリズムを説明している。ハーフ・ト
ーンの画像イメージをコーディングする更に別の予測的
な方法については、Stoffel による論文 "Half-tone Pi
ctorial Encoding", SPIE Applications of Digital Im
age Processing, Vol. 19, 1977, pp. 56-63 で説明さ
れている。Stoffel のアルゴリズムは、イメージをブロ
ックに分割し、先行のブロックから現ブロックを予測す
ることを試みる。イメージの最終的なコーディング結果
は予測誤差とブロックの値からなる。
【0006】Langdon, Jr. 他の論文 "Compression of
Black-White Images with Arithmetic Coding", IEEE T
ransactions on Communications, Vol. COM-29, No. 6,
June, 1981, pp. 858-867 では、ピクセル毎の確率を
ピクセル・コンテキスト(すなわち周辺のピクセル))
に基づいて推定する算術的コーディング方法が説明され
ている。Langdon, Jr. 他の算術的コードでは、ある種
の古くからの算術的コードに固有の乗算操作を回避して
いる。Hampel 他による論文 "Technical Features of t
he JBIG Standard for Progressive Bi-Level Image Co
mpression", Signal Precessing: Image Communicatin
Journal, Vol. 4, Nor, 2 (1992), pp.103-111 に示さ
れているように、Langdon, Jr. 他の圧縮技術は間もな
く2レベル・イメージ・データのコーディングの国際的
な標準になるはずである。
【0007】Bentley 他は論文 "A Locally Adptive Da
ta Compression Scheme", Communications of the ACM,
April 8, 1986, Vol. 29, Nor. 4, pp. 320-330 及び
"Technical Correspondence", Communications of the
ACM, September 1987, Vol,30, No. 9, pp. 792, 793
で、自己組織型逐次サーチ技術を用いてテキスト・デー
タを圧縮する方法を説明している。具体的に言えば、頻
繁にアクセスされるワードはサーチ・シーケンスの先頭
の近傍にあり、このためにそれらのワードは圧縮動作に
当たって短時間で見つかるということである。
【0008】Bentley 他の論文で説明されているシステ
ムは、中央処理ユニットのメモリ・システム中のキャッ
シュ・メモリに類似している。具体的に言えば、LRU
(least recently used) 管理を使ったキャッシュ・メ
モリ(数のリストの形態をとるキャッシュ)が採用され
ている。このリストは、最も最近使用されたものからこ
れまで一番長い期間使用されていないものへという態様
で順序付けられる。サーチ対象の値つまりワードがこの
リスト中にあれば、その度に、このワードがキャッシュ
・リストから取り出されてこのキャッシュ・リストの先
頭に配置され、残りの値は1つずつ後ろにずらされる。
キャッシュ・リスト内に入っていないワードがサーチ対
象であったときは、もっとも長い間使用されていなかっ
た値がキャッシュから除去されて、新規の値を受け入れ
る余地を(リストの先頭に)作成する。
【0009】図1のテーブルには、このようなキャッシ
ュの動作シーケンスが例示されている。テーブル20に
例示された4位置のキャッシュにおいて、最も最近使用
された値はキャッシュの「先頭」にあり、最も長い間使
用されていなかった値はキャッシュの「底」にあり、ま
たその他の値は中間の位置にある。22、24及び26
という参照番号の付いたキャッシュには、キャッシュ2
0の連続的な状態が例示されている。キャッシュの状態
22はキャッシュ20の初期状態であり、それには4個
の10進値がストアされて示されており、10進値10
が最も最近使用された値であるとされている。キャッシ
ュの状態24は、値6をサーチした後のキャッシュ20
の状態である。この値6はキャッシュ20内に既に存在
することから、値10及び5がプッシュ・ダウンされ
る。値25をサーチした後が遭遇された後、キャッシュ
の状態26が生じる。この値25はキャッシュ20内に
存在しないことから、この値はキャッシュ20の先頭に
挿入され、最も長い間使用されていなかった値8が取り
除かれ、また、その他の値はプッシュ・ダウンされる。
【0010】データの圧縮及び伸長のために採用される
コーディング・プロセス及びデコード・プロセスでは、
キャッシュの状態がエンコーダ機構及びデコーダ機能の
双方と確実に同期するように、圧縮されたコード・ワー
ドとキャッシュの適応の操作がなされる。キャッシュの
同期をとることにより、欠落のないデータ処理が確実に
行われるようになる。図1に示されているように、キャ
ッシュ20の状態は、新たな値についてのサーチが行わ
れる毎に「適応される」。ある値がエンコーダ内のキャ
ッシュに既に存在しているときには、そのキャッシュ位
置が、この値の位置を指示するコード・ワードの形式で
送出される。この値がキャッシュ内に存在しないときに
は、ある特別なコード・ワードがこの値それ自体ととも
にエンコーダによって出力される。通常は値それ自体よ
りも少ないビット数でキャッシュ位置を送出できるため
に、圧縮が達成される。デコーダでは、受取ったコード
・ワードを解釈して、当初のデータ・ストリームを再構
成する。更に、このデコーダはエンコーダと同様のやり
方でそのキャッシュを「適応させて」、エンコーダとの
同期状態を維持する。
【0011】図2及び図3には、エンコーダ機構及びデ
コーダ機構の双方で同期を確保するために採用される手
続のフローチャートが図示されている。図2にはコーデ
ィング手続が例示されており、また、図3にはデコード
手続が例示されている。図2及び図3の各ブロック中の
処理は以下の通りである: 図2 30:圧縮されていない次のデータ値を獲得 32:キャッシュ中の値と一致するか? 34:キャッシュ中の位置を示すコード・ワードを出力 36:キャッシュを適応させる 38:「発見せず」を示すコード・ワードを出力 40:データ値を出力 42:この新たな値をキャッシュに挿入し、キャッシュ
を適応させる 図3 44:圧縮されている次のコード・ワードを獲得 46:キャッシュ中の位置を示すコード・ワードか? 48:キャッシュ値を出力 50:キャッシュを適応させる 52:データ値を獲得して出力 54:この新たなデータ値をキャッシュに挿入し、キャ
ッシュを適応させる ここで図2を参照すると、圧縮されていないデータ値
(例えば、1バイト)をアクセスし(ブロック30)、
この圧縮されていないデータ値が圧縮キャッシュ内の値
に一致しているものがあるかどうかの判定がなされる
(判定ブロック32)。判定結果がyesであるときに
は、このキャッシュ中で一致した値の位置を指示する位
置コードが出力される(ブロック34)。必要である場
合には、一致したキャッシュ中の値を当該キャッシュの
先頭まで移動しこれに応じて残りの値を再配置するよう
に移動させることによってキャッシュの適応がなされる
(ブロック36)。そして、この手続は、次の圧縮され
ていないデータ値を獲得するところまで戻って再び繰り
返される。
【0012】受信したある値に一致するものがキャッシ
ュ中で発見できなかった場合には、「発見せず」、つま
りミスヒット、を表すコード・ワードが出力され(ブロ
ック38)、また実際のデータ値が出力される(ブロッ
ク40)。そして、受信したデータ値がキャッシュの先
頭に挿入され、また、残りの値をプッシュ・ダウンし、
最も長い間使用されていなかった値を排除することによ
って、キャッシュの残りのものについての「適応」がな
される。
【0013】伸長に当たっては(図3)、圧縮されたコ
ード・ワードをアクセスし(ブロック44)、このコー
ド・ワードに位置コード・ワードが含まれているかどう
か判定する(判定ブロック46)。判定結果がyesで
あるときには、デコーダのキャッシュ中の当該位置の値
を出力し(ブロック48)、また出力されたキャッシュ
値をキャッシュの先頭まで移動させることにより、この
キャッシュの適応がなされる(ブロック50)。
【0014】上述した場合とは逆に、受信したデータが
位置コード・ワードではなかったときには、この受信し
たデータ値をアクセスして、出力する(ブロック5
2)。また、このデータ値はまたキャッシュの先頭に挿
入され、更に、このキャッシュの残りの部分についての
適応が成される。
【0015】上述したようなキャッシュ・ベースの圧縮
手続は効果的なものではあるが、LRU方式のキャッシ
ュ管理は演算が複雑であることが多い。キャッシュを
「適応」させる度に多くの値を再配置することが必要と
される。このような再配置は、一連の圧縮の間に何回も
生起するために、相当な処理時間を占める可能性があ
り、その圧縮手続の効率を著しく低下させる。
【0016】
【目的】従って、本発明の目的は、改良されたキャッシ
ュ管理技術を使用することにより、キャッシュ・ベース
の圧縮手続をより効率的にすることにある。
【0017】本発明の更に別の目的は、キャッシュ・ベ
ースの予測技術を用いた、改良された圧縮/伸長手続を
提供することにある。
【0018】本発明のなおも別の目的は、イメージの処
理に特に適応しており、圧縮されるべき値の近傍におけ
るデータの内容を用いるようにする、キャッシュ・ベー
スの圧縮/伸長手続を提供することにある。
【0019】
【発明の概要】本発明の一実施例によれば、2レベルの
データを圧縮するためのシステムには、使用が割り当て
られた複数のレベルを有する第1のキャッシュ・メモリ
が含まれている。その第1のレベルは最も使用頻度が高
いデータ・セグメントに対して割り当てられ、その第2
のレベルは複数のより使用頻度が低いデータ・セグメン
トに対して割り当てられている。プロセッサは、受信し
たデータがデータ・セグメントがキャッシュ・メモリ内
で発見されたかどうかを判定し、発見されなされなかっ
たときには、この受信したデータ・セグメントを、キャ
ッシュ・メモリの第1のレベルに既にストアされている
以前のデータセグメントに代えてそこに割り当てる。こ
の以前のデータ・セグメントは、第2のデータセグメン
トに以前にストアされているところの、より長い間使用
されていなかったデータ・セグメントに代えて、その位
置に割り当てられる。より長い間使用されていなかった
データ・セグメントであって置換されるものは、疑似ラ
ンダム法によって選択される。そして、発見されなかっ
たという通知は、受信したデータ・セグメントの識別情
報とともに、受信ステーションに送出される。この受信
ステーションは送信側と同じキャッシュ構造を含んでお
り、受信されたコード・ワード及びデータ・セグメント
に応答してそのキャッシュを更新する。本発明の更に別
の変形によれば、データ・セグメントのまわりのコンテ
キストに従って、複数のキャッシュ・メモリに対してデ
ータ・セグメントが入力される。なお、これら複数のキ
ャッシュ・メモリは、コンテキストから導出されたアド
レスに従って割り当てられる。
【0020】
【実施例】これ以降の本発明の説明は、プリンタとの通
信をするホスト・コンピュータに関連してなされるもの
であり、そのコーディングは、送出されるデータのバイ
ト(8ビット)に対して行われる。しかしながら、後述
する手続及びシステムは、データを送り出し、また送出
時のバンド幅の経済性やメモリの節約のために圧縮/伸
長の手続を採用する多様なシステムに適用されるという
ことを理解しなければならない。
【0021】図4において、ホスト・コンピュータ60
には、ホスト中央処理ユニット(CPU)62、リード
・オンリ・メモリ(ROM)64及びランダム・アクセ
ス・メモリ(RAM)66が含まれている。これらのモ
ジュールの各々はバス68で相互接続されており、その
入力/出力の通信はI/Oモジュール70によって処理
される。ROM64には、I/Oモジュール70が送出
ライン上にデータを送出する前にホストCPU62の制
御の下にデータの圧縮操作を行うコード化手続が含まれ
ている。RAM66は、LRU方式で構造化され、デー
タの圧縮操作を達成できるようにする複数のキャッシュ
・メモリを含む。
【0022】I/Oモジュール70から送出されたデー
タは、I/Oモジュール73を介してプリンタ72で受
信される。プリンタ72には、CPU74、プリント・
エンジン76、RAM78及びROM80が含まれてい
る。RAM78は、I/Oモジュール73を介して受信
された入力データのための一時記憶部として作用するも
のであり、また、ホストCPU60中のRAM66に含
まれているキャッシュ・メモリと構造的に同一のキャッ
シュ・メモリも含んでいる。ROM80は、I/Oモジ
ュール73を介して受信した圧縮済みデータを伸長し、
使用するためにRAM78中にストアするようにするデ
コード手続を含んでいる。
【0023】先に示したように、RAM66及び78に
含まれているキャッシュ・メモリはLRUキャッシュと
して構成されている。このキャッシュでは、キャッシュ
の先頭のデータは最も最近使用された(MRU)もので
あり、このキャッシュの底にあるデータは最も長い間使
用されなかったものである。キャッシュが更新される
(「適応させられる」)度に多くの値の再配置が必要と
されることから、このようなキャッシュの管理は演算上
複雑なものである。
【0024】図5に、演算上の複雑性を減少させるよう
な、修正された形式のLRUキャッシュを示す。キャッ
シュ90は階層化されたLRUキャッシュとして構成さ
れており、ここに、最上位層91は最も最近使用された
データ・バイトであり、層92〜94は3個の最も長い
間使用されなかった(LRU)データ・バイトを含む
「単一の」層を有している。ここで、単に説明を簡単に
するだけの目的で、キャッシュ90が4個のエントリと
2つの層を有するものとして示されていることを理解さ
れたい。任意の数の層を設けまた層毎に任意の個数のエ
ントリを有することができる。
【0025】キャッシュ90の特定の層からどの値を選
んで取り除くかということは、コード化機構とデコード
機構との間の同期状態を維持しながら、疑似ランダム的
に行うことができる。例えば、ラウンド・ロビン方式カ
ウント法を用いることができる。このやり方では、最も
長い間使用されなかった層から取り除かれるべきバイト
は、エントリ92〜94の逐次的なカウントに基づいて
選択される。この態様において、キャッシュが大きくな
ると、処理上のオーバヘッドをより少なくして管理で
き、またそれでもLRUキャッシュと殆ど同様に効率的
である。
【0026】キャッシュの状態表示A、B及びCでは、
3つの異なる時点(すなわちA、B及びC)におけるキ
ャッシュ90の状態が示されている。時点Aにおいて
は、キャッシュの状態は図示した通りである。時点Bに
おいて値2のバイトがサーチされ、最も最近使用された
層91に置かれる。値2のバイトは既にキャッシュの第
2のレベルにあることから、第1のレベルの値78とそ
の位置を交換し、これによって(キャッシュの状態96
によって示されるように)値78を位置94に置く。時
点Cにおいて、値89のバイトをサーチするものとす
る。この値はキャッシュ中にはないことから、最も最近
使用されたものを入れておく層91に挿入され、また最
も長い間使用されなかったものが入る層(この場合で
は、位置93)から疑似ランダムに導出された位置に
は、値89によって置換された値(すなわち値2)が上
書きされる。
【0027】最も長い間使用されなかった層での交換が
次回に必要とされた際には、置換されるのは位置94で
あり、これに次いで位置92、位置93等々となる。従
って、キャッシュ90を階層化することにより、適応操
作の間のキャッシュ値の移動を少なくすることができ
る。構成的にいえば、最も長い間使用されなかったもの
を入れておく層中で交換されるべき位置は、ラウンド・
ロビン方式のカウントが増大するにつれて更新されるポ
インタの位置に基づいて決定することができる。
【0028】新規に受信したバイトを入れるべき多くの
独立したキャッシュの中から選択するためのコンテキス
トを採用することにより、パフォーマンスを更に向上す
ることができる。プリンタには通常、各ピクセルが2値
のビット値で表されるところの、ピクセルのラスタ・イ
メージを有するビット・マップ・メモリを備えている。
各ラスタ・スキャン行は8ビット・バイトのシーケンス
に分割される。前以ってデコードされているような位置
に置かれている周辺のピクセルを、最も最近使用された
バイトをストアするためにいずれのキャッシュを用いる
べきかを判定するコンテキストとして用いる。周辺のピ
クセルのビット値を組み合わせて1つの数を形成し、ど
のキャッシュを使用すべきかを指定するコンテキスト値
(つまりインデクス)が導出できるようにする。この操
作を行うことで、各キャッシュが個々のコンテキストに
対してより良好に適応できるようにすることにより、デ
ータ圧縮の改善がなされる。
【0029】図6中の図において、ラスタ走査ラインの
番号の付いた8個のピクセル(ピクセル100)は、コ
ード化される8個のハッチングの付いたのピクセル(ピ
クセル102)のためのコンテキスト値を形成する。こ
れ以降では、ピクセル100をコンテキスト・バイトと
呼び、またピクセル102は現在バイトと呼ぶ。コンテ
キスト依存キャッシュ構成の思想は、イメージは垂直方
向に相関関係を持っている(例えば、表組みにおける垂
直の線)ことが多いという事実に基づいている。また、
キャッシュのアドレスとしてコンテキスト・バイトを採
用することにより、現在バイトでサーチした際、アドレ
スされたキャッシュ内の最も最近使用されたものが入る
エントリ中に現在バイトと同一のデータ・バイトが入っ
ている可能性が高くなり、これにより、キャッシュのデ
ータをそれ以上移動させることなく、高速にコード化す
ることができるようになる。「垂直の」コンテキスト・
バイトは後続する説明の基本を形成するものであるが、
別の物理的な関係も本発明の範囲内に入っているという
ことを理解しなければならない。
【0030】コンテキスト依存キャッシュの構成を実現
したものでは、圧縮/伸長手続の開始時点で全てのキャ
ッシュを生成し初期化してよい。例えば、8ビット・バ
イトが採用されるときには、最初に256個のキャッシ
ュを生成し、各キャッシュには複数のエントリを持てる
ようにしておくことができる。キャッシュが複雑化する
ことによる問題よりもメモリの方が重要であるときに
は、全てのキャッシュを最初に生成しておく必要ではな
く、必要とされるときにのみキャッシュを生成させるこ
とができる。
【0031】図7は、データ・セグメントに対する圧縮
コード化手続を説明するフローチャートである。このフ
ローチャートの各ブロックの動作は以下の通りである: 104:圧縮されていない次のデータ値を獲得 106:コンテキスト値に基づいてキャッシュを選択 108:キャッシュ値が一致したか? 110:その位置を表すコード・ワードを出力 112:キャッシュを適応させる 114:「発見せず」を示すコード・ワードを出力 116:データ値を出力 118:この新たなデータをキャッシュに挿入しキャッ
シュを適応させる 図7に示されているように、送出されるべき新たなデー
タ・バイトが与えられると(判定ブロック104)、そ
のピクセル・イメージの直前のスキャン行に垂直に整列
したコンテキスト・バイトのアドレスを有する特定のキ
ャッシュがアドレスされる(ブロック106)。(先に
示したように、このアドレスされたキャッシュ中の最も
最近使用されたエントリは、与えられた圧縮されていな
いバイト値と同じである可能性が高い。)次に、このバ
イト値をこのアドレスされたキャッシュ中の値と比較す
る(判定ブロック108)。ここで一致が取れた場合に
は、アドレスされたキャッシュ中で一致した値の位置を
指示するコード・ワードを出力する(ブロック11
0)。また、必要ならその一致した値をアドレスされた
キャッシュ中の最も最近使用されたものが入るエントリ
に持ち上げ(ブロック112)、この手続の先頭に戻
る。
【0032】アドレスされたキャッシュにおいて一致が
取れなかった場合には(判定ブロック108)、「発見
せず」、つまりミスヒット、を表すコード・ワードを出
力し(ブロック114)、次いで実際のバイト値を送出
する(ブロック116)。このキャッシュ中のどの値と
も一致しなかったバイト値はアドレスされたキャッシュ
に送出され、このキャッシュを適応させて(ブロック1
18)、またこれによって置き換えられたバイトをキャ
ッシュのもっと下位のレベルに移動させ、更にこのもっ
と下位のレベルに既にストアされていたバイトを置換す
る等の作業がなされる。次に、この手続はその先頭に戻
る。
【0033】図8は、図7のフローチャートに従ってコ
ード化されたデータをデコードするための伸長手続を説
明するフローチャートである。このフローチャート中の
各ブロックの動作は以下の通りである: 120:圧縮されている次のコード・ワードを獲得 122:コンテキスト値に基づいてキャッシュを選択 124:キャッシュ中の位置を示すコード・ワードか? 126:キャッシュ値を出力 128:キャッシュを適応させる 130:データ値を獲得して出力 132:この新たなデータ値をキャッシュに挿入し、キ
ャッシュを適応させる 図8には、図7に示されている手続で圧縮されたデータ
に応答する伸長の手続が示されている。受信された圧縮
済みコード・ワードがアクセスされ(ブロック12
0)、直上のスキャン行中の既にデコードされたコンテ
キスト・バイトのコンテキスト値に基づいてキャッシュ
がアドレスされる(ブロック122)。圧縮されたコー
ド・ワードがキャッシュ中の位置を示すコード・ワード
である場合には(判定ブロック124)、アドレスされ
たキャッシュ中の指示された位置に現れている値を出力
する(ブロック126)。また、必要なら最も最近使用
されたバイトをキャッシュの先頭に置くことができるよ
うにそのキャッシュ内のエントリを再配置することによ
り、キャッシュを適応させる(ブロック128)。
【0034】受信したデータがキャッシュ中の位置を示
すコード・ワードではないと判定された場合には(判定
ブロック124)、この受信したバイト値がメモリから
取り出して出力する(ブロック130)。また、当該新
たなバイト値をアドレスされたキャッシュの先頭に挿入
し、このキャッシュを適応させる。更に、受信したデー
タがもうなくなるまでこの手続を繰り返す。
【0035】これを要約すると、現在行バイトは、その
アドレスが現在バイトの直上のコンテキスト・バイトの
値であるキャッシュに常に振り向けられる。次のスキャ
ン行がアクセスされるときには、現在バイトがコンテキ
スト・バイトになる。このコンテキスト・バイトの値が
既にキャッシュのアドレスであるときには、新たにキャ
ッシュを生成する必要はない。コンテキスト・バイトの
値が新たなものであるときには、コンテキスト・バイト
をそのアドレスとして、新たなキャッシュが設定され
る。初期化時に全てのキャッシュが設定されている場合
には、出現し得るコンテキスト・バイトの値毎に1つの
キャッシュが存在するので、新たにキャッシュが要求さ
れることはない。
【0036】上述の議論では、コンテキスト値の概念が
導入された。この議論でコンテキスト値を構成するもの
は、現在ラインの直上のラスタ・スキャン・ラインから
のデータ・セグメントの値である。このコンテキスト値
はキャッシュのアドレスとして用いられた。このコンテ
キスト値は先にデコードされたいくつかのデータ・セグ
メントの組み合せから形成することもできる。そのよう
にした場合の利点は、コンテキストを大きくすると、現
在のデータ・セグメントをコード化するための最も性能
の良いキャッシュを選択するより良い手段を提供できる
ことがあるという点である。このコンセプトの1つの具
体的な実現形態では、現在データ・セグメントのすぐ上
のデータ・セグメントだけではなく、図14に示されて
いるように、現在のデータ・セグメントのすぐ上のもの
の左側にあるデータ・セグメントを使用する。これら2
個のデータ・セグメントを組み合わせてコンテキスト値
にする1つのやり方は、現在データ・セグメントのすぐ
上のものの左側にあるデータ・セグメントから取り出し
た2つのビットを、現在データ・セグメントのすぐ上の
データ・セグメントの左側へ付加することである。図1
4で“A”なるラベルが付されたバイトは現在データ・
セグメントである。“B”及び“C”なるラベルが付さ
れたバイトはコンテキスト値を形成するために用いられ
るデータ・セグメントである。コンテキスト値は、デー
タ・セグメントBのビット1及び2をデータ・セグメン
トCのビット1ないし8に連結することによって発生で
き、これによって10ビット・データのコンテキスト値
が得られる。
【0037】あるシステムでは、より複雑なコード化手
続を設けるという犠牲を払ってデコード/伸長手続の複
雑性を減少させることが望まれる。間接的キャッシュ管
理を用いることにより、デコード手続の一部をコード化
手続に移管することができる。LRUキャッシュの場合
には、新たに受信されたデータ・バイトがキャッシュ内
に既に記憶されていることが発見される限り、キャッシ
ュ内の値が変化することはなく、再配置が行われるだけ
であるという事実により、この手続の一部の移管が可能
にされる。LRUキャッシュ内の値のセットが変化する
唯一の時点は、新たなデータ・バイトとキャッシュ内に
既にストアされているバイトとの間に一致が見出されな
い場合だけである。間接的キャッシュ管理においては、
エンコーダを用いて複雑さを増すという犠牲を払って、
LRUキャッシュを維持するために必要な値の再配置を
デコーダがしなくても良いようにしている。
【0038】図9を参照すると、2つの番号リスト、す
なわちキャッシュ・メモリ120内のポインタ・リスト
及びキャッシュ・メモリ122内のバイト値リスト、を
維持・管理するためのコード化手続ができるようにする
一対のキャッシュ・メモリ120及び122が示されて
いる。ポインタ・リストには、値リスト内のエントリへ
のポインタつまりインデクスが含まれている。新たに受
信されたバイトとキャッシュ・メモリ122内のバイト
値リストに既に記憶されているバイトとの間で一致が見
出されたときには、キャッシュ・メモリ120内のポイ
ンタ・リスト中のポインタはLRU方式で再配置され
る。新たな値がキャッシュ・メモリに入力されておら
ず、また古い値がキャッシュ・メモリから取り除かれて
いないため、値リスト内の値は再配置を必要としない。
(新たなバイトとキャッシュ・メモリ122内に既にス
トアされているバイトとの間で)一致するものがあるこ
とがわかると、エンコーダからそれに対応するポインタ
値が発せられる(すなわち、エンコーダは、受信された
バイトに対応するキャッシュ・メモリ122内の値エン
トリを指示する)。
【0039】キャッシュ・メモリ122内で一致するも
のが見出されないときには、値リスト及びポインタ・リ
ストは修正されねばならない。キャッシュ・メモリ12
2内の値リスト内で最も長い間使用されなかった値が取
り除かれる。この操作は、キャッシュ・メモリ122内
の値リスト位置のうちの、キャッシュ・メモリ120内
にある最も長い間使用されなかったものを示すポインタ
(LRUポインタ)が指している位置に現在バイト値を
置くことによって達成される。次に、キャッシュ・メモ
リ120内のポインタは、キャッシュ・メモリ122内
の新たな値の順序を反映するように更新される。この新
たに入力された現在値は、キャッシュ・メモリ120内
にある最も最近使用されたものを示すポインタ(MRU
ポインタ)によって指し示される。この場合、エンコー
ダは一致がなかったことを知らせる特別なコード・ワー
ドを発し、次に実際のバイト値及び(デコーダ中の)値
リスト中のこの実際のバイト値が挿入されるべき位置へ
のポインタをその後に供給する。
【0040】図9において示されているように、キャッ
シュ・メモリ120におけるポインタ・リストのエント
リは、最も最近使用されたもの(MRU)から最も長い
間使用されなかったもの(LRU)への順序で配置され
る。かくして、キャッシュ・メモリ122内の値リスト
中のバイト値の位置に係わらず、ポインタ・リスト内の
ポインタの位置から、最も最近使用されたバイト値が値
リスト内のどこにあるかがわかり、またこのバイト値以
外のストアされているバイト値についてのMRU以降の
全ての使用レベルがわかる。
【0041】デコーダでは、ポインタ・リストではな
く、値リストだけが維持・管理される。コード・ワード
(例えばポインタ値)がデコードされると、値リスト中
の指し示された位置から読み出した値が出力される。
「発見せず」というコード・ワードを受信した場合に
は、ポインタ及びその値が入力ストリームから導出され
て、この値がデコーダ内の値リスト中の指し示された位
置に置かれる。
【0042】図10を参照して、間接的キャッシュ管理
のコード化(圧縮)のための手続について説明する。図
10の各ブロックの動作は以下の通りである: 130:圧縮されていない次のデータ値を獲得 132:キャッシュ値が一致したか? 134:その位置を表す値リスト・ポインタ・コード・
ワードを出力 136:キャッシュを適応させる 138:「発見せず」を示すコード・ワードを出力 140:データ値を出力 142:値リストのLRU位置を示すインデクス・コー
ド・ワードを出力 144:この新たなデータを値リストのLRU値位置に
挿入しキャッシュを適応させる 新たなデータ値が与えられると(ブロック130)と、
この値が値リストを含むキャッシュ・メモリ122内に
既に記憶されている値と一致するかどうかの判定がなさ
れる(ブロック132)。判定結果がyesであるとき
には、値リスト中で一致した値がどこにあるかを示すポ
インタ値をポインタ・リストから出力する(ブロック1
34)。次に、値リスト内の最も最近使用されたバイト
値を適正に指示するように、ポインタ・リスト内のポイ
ンタを適応させる。
【0043】キャッシュ値の一致が発見されなかったと
きには(判定ブロック132)、「発見せず」のコード
・ワードを出力し(ブロック138)、それとともに、
値スト中で一致するものが発見されなかったデータ値も
出力する(ブロック140)。これに加えて、値リスト
中で最も長い間使用されていなかった値を指示するポイ
ンタ値も出力する。かくして、新たなデータ値が値リス
ト内の最も長い間使用されていなかった値の位置に挿入
され、その中に以前からストアされていた値は取り除か
れる。次に、次に続く圧縮されていないデータ値を取得
するため、この手続はその最初に戻る。
【0044】図11にデコード(伸長)手続を示す。図
11の各ブロックの動作は以下の通りである: 150:圧縮されている次のコード・ワードを獲得 152:ポインタ・コード・ワードか? 154:ポインタ位置の値を出力 156:データ値を獲得して出力 158:置換え値リスト・インデクス位置を獲得 160:この新たなデータ値を指定された値リスト・ポ
インタ位置に挿入 この手続では、最初に、圧縮されている次のコード・ワ
ードをアクセスする(ブロック150)。このコード・
ワードがポインタであることがわかった場合には(判定
ブロック152)、対応する値リスト中のそのポインタ
が「指し示している」値を出力する(ブロック15
4)。コード・ワードがポインタ値ではないことがわか
った場合には(判定ブロック152)、受信されたデー
タ値をアクセスする(ブロック156)。この際、置換
えポインタ値も獲得する(ブロック158)。次に、新
たなデータ値を値リスト中のこのポインタで指し示され
ている位置に挿入する。既にそこにある値は廃棄される
(ブロック160)。処理すべき更に別の圧縮されたコ
ード・ワードがなくなるまで、この手続を繰り返す。こ
こで、間接的キャッシュ管理と階層化キャッシュ管理を
組み合わせて双方の技術に固有の長所を得ることができ
るということを理解すべきである。
【0045】上述したシステムは、8ビット・バイトで
データをコーディングするものとして示されている。あ
る種のディザーをかけたイメージ・データのように、別
の周期性、すなわち6ビット、10ビット等、のあるデ
ータであるときには、このようなデータをイメージ・デ
ータの周期性に一致したビット長の単位に分解してもよ
い。
【0046】上述したアルゴリズムの一つの特徴は、値
がキャッシュ中に入っているかどうかを判定するために
は、この値をこのキャッシュ内にストアされている全て
の値と比較しなければならないことである。この比較手
続は、特定の値がキャッシュ内に存在するかどうかにつ
いてのフラグを含むルック・アップ・テーブルを維持・
管理することによって回避することができる(図12の
ルック・アップ・テーブル170を参照)。ルック・ア
ップ・テーブルは可能な全ての値を含まなければならな
い。この手続は更に、この値がキャッシュ内に存在する
ときには、その位置がキャッシュ内で判定されねばなら
ないということも必要とされる。
【0047】上述したように、圧縮動作と伸長動作の間
に確実に同期がとられるように、エンコーダとデコーダ
の双方におけるキャッシュは同じ初期状態でなければな
らない。エンコーダがある程度複雑化するという犠牲を
払って、デコーダのこの初期化を行わないようにでき
る。エンコーダは、(図13のキャッシュ・メモリ18
0で示すように)全てのキャッシュ・エントリフラグを
関連付けることができるさせる。このフラグは対応する
キャッシュ・エントリが定義済みでないあるいは定義済
みの値を持っているか否かを示す。定義済みの値とは、
キャッシュ・エントリが処理されているイメージからの
実際のデータ・バイト値を表している値である。エンコ
ーダは、ある値を定義済みでないキャッシュ値を有する
エントリとの比較が絶対に起こらないようにすることが
できる。デコーダが初期化されていない値を使用するこ
とはないので、デコーダがこれらのフラグを維持・管理
する必要はない。それというのも、エンコーダが初期化
されていない値を使用するようにデコーダに対して指示
することがないからである。
【0048】次の例は、2階層化されたキャッシュを使
用した本発明の一実施例の動作を示す。その第1の層に
は一つの割り当てられた値を持っており、第2の層は3
つの値を持っている。コード・ワード(ビット・シーケ
ンス)は次のように割り当てられる。 1 = 第1の層の予測が正しい 000 = 第2の層の1番目の値の予測が正しい 001 = 第2の層の2番目の値の予測が正しい 010 = 第2の層の3番目の値の予測が正しい 011 = 訂正値が必要 キャッシュは次の条件で開始される。
【0049】キャッシュの第2レベルにおけるランダム
な置換は、簡単なラウンド・ロビン方式で実行される。
変数"reple_index"が定義され、その初期値は1に設定
される。置換が要求されたとき、この変数により、第2
レベルのキャッシュ中のいずれのエントリが置換される
かが決定される。置換が実行された後、変数"reple_ind
ex"がインクリメントされる。変数"reple_index"の値が
4に到達すると、その値は1にリセットされる。
【0051】コーディングされるべきデータ・ストリー
ムは、バイトの系列で構成されている。
【0052】次のテーブルは、コード化シーケンスをト
レースしている。キャッシュの状態は、現在の入力値が
処理された後のものを示している。
【0053】
【表1】
【0054】ここで、前述の説明は本発明を例示してい
るだけであるということを理解しなければならない。当
業者であれば、本発明から逸脱することなく、種々の代
替及び修正を案出することができるであろう。従って、
本発明は特許請求の範囲の記載の範囲内で、全てのこの
ような代替、修正及び変形を包含するように意図されて
いる。
【0055】
【効果】以上詳細に説明したように、本発明によれば簡
単な手順でキャッシュ・ベースのデータ圧縮/伸長を行
うことができる。
【図面の簡単な説明】
【図1】データ圧縮システムにおけるLRUキャッシュ
についての先行技術を説明する図。
【図2】LRUキャッシュ・メモリを使用することによ
ってデータ・セグメントをコーディングするための、先
行技術によるプロセスを説明するフローチャート。
【図3】LRUキャッシュ・メモリを使用することによ
ってデータ・セグメントをデコードするための、先行技
術によるプロセスを説明するフローチャート。
【図4】本発明を実施することのできるシステムのブロ
ック図。
【図5】階層化されたLRUキャッシュを用いてデータ
をコード化するためのプロセスを例示する、キャッシュ
の状態を概略的に表示する図。
【図6】複数のLRUキャッシュ・メモリの中の特定の
もののアドレスとして採用されるコンテキスト・データ
・セグメントを説明する図。
【図7】データ・セグメントに対する圧縮コード化手続
を説明するフローチャート。
【図8】図7のフローチャートに従ってコード化された
データをデコードするための伸長手続を説明する図。
【図9】間接的LRUキャッシュ管理を行うためにする
ために用いられる2個のキャッシュ・メモリを説明する
図。
【図10】図9に示されているキャッシュ・メモリに従
ってキャッシュの間接管理を行うための圧縮手続を説明
するフローチャート。
【図11】図10のフローチャートに従ってコード化さ
れたデータ・セグメントをデコードするための伸長手続
を説明するフローチャート。
【図12】バイト・ボリュームがキャッシュ内にストア
されているかどうかを指示するルック・アップ・テーブ
ルを説明する図。
【図13】記憶位置に対して定義された状態か定義され
ない状態かを指示する、各記憶位置に関連付けられたフ
ラグを有するエンコーダ・キャッシュ・構成を説明する
図。
【図14】コンテキスト・データ・セグメントの図6と
は別の配置を示す図。
【符号の説明】
62:ホストCPU 64:ROM 66:RAM 68:バス 70、73:I/Oモジュール 72:プリンタ72 74:CPU 76:プリント・エンジン 78:RAM 80:ROM 90:キャッシュ 120、122:キャッシュ・メモリ 170:ルック・アップ・テーブル 180:キャッシュ・メモリ

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】以下の(a)ないし(d)を設けたデータ圧縮シ
    ステム: (a)複数のレベルを有する第1のキャッシュ・メモリ手
    段:第1の前記レベルは最も最近使用されたデータ・セ
    グメントに割り当てられ、第2の前記レベルは最も最近
    使用されたものではないデータ・セグメントに割り当て
    られる; (b)受信したデータ・セグメントが前記第1のキャッシ
    ュ・メモリ手段中にあるか否かを判定する手段:前記受
    信したデータ・セグメントが前記第1のキャッシュ・メ
    モリ手段中になかった場合には、前記受信したデータ・
    セグメントを前記第1のレベルに割り当てられていた以
    前に受信していたデータ・セグメントに代えてそこに割
    り当て、前記以前に受信していたデータ・セグメントを
    最も最近使用されたものではないデータ・セグメントに
    代えて前記第2のレベルの中の1つの位置に割り当て、
    前記代えられる最も最近使用されたものではないデータ
    セグメントは前記第2のレベルに割り当てられている最
    も最近使用されたものではないデータ・セグメントの中
    から疑似ランダム方法によって選択される; (c)前記第1のキャッシュ・メモリ手段中にはなかった
    旨の表示及び前記受信したデータ・セグメントを圧縮さ
    れない形式で受信手段に送出する手段; (d)受信したデータ・セグメントが前記第1のキャッシ
    ュ・メモリ手段中にある旨の判定に応答して、前記送出
    手段をして、前記受信手段に対して、前記第1のキャッ
    シュ・メモリ手段中のどこに前記受信したデータ・セグ
    メントが割り当てられているかを指示する位置コードを
    送出させる手段。
  2. 【請求項2】以下の(a)ないし(e)を設けたデータ圧縮/
    伸長システム: (a)複数のレベルを有する第1のキャッシュ・メモリ手
    段:第1の前記レベルは最も最近使用されたデータ・セ
    グメントに割り当てられ、第2の前記レベルは最も最近
    使用されたものではないデータ・セグメントに割り当て
    られる; (b)受信したデータ・セグメントが前記第1のキャッシ
    ュ・メモリ手段中にあるか否かを判定する手段:前記受
    信したデータ・セグメントが前記第1のキャッシュ・メ
    モリ手段中になかった場合には、前記受信したデータ・
    セグメントを前記第1のレベルに割り当てられていた以
    前に受信していたデータ・セグメントに代えてそこに割
    り当て、前記以前に受信していたデータ・セグメントを
    最も最近使用されたものではないデータ・セグメントに
    代えて前記第2のレベルの中の1つの位置に割り当て、
    前記代えられる最も最近使用されたものではないデータ
    セグメントは前記第2のレベルに割り当てられている最
    も最近使用されたものではないデータ・セグメントの中
    から疑似ランダム方法によって選択される; (c)前記第1のキャッシュ・メモリ手段中にはなかった
    旨の表示及び前記受信したデータ・セグメントを圧縮さ
    れない形式で受信手段に送出する手段; (d)受信したデータ・セグメントが前記第1のキャッシ
    ュ・メモリ手段中にある旨の判定に応答して、前記送出
    手段をして、前記受信手段に対して、前記第1のキャッ
    シュ・メモリ手段中のどこに前記受信したデータ・セグ
    メントが割り当てられているかを指示する位置コードを
    送出させる手段; (e)前記受信手段は以下の(e-1)及び(e-2)を含み、圧縮
    された形態のデータを伸長する: (e-1)複数のレベルを有する第2のキャッシュ・メモリ
    手段:前記レベルのうちの第1のレベルは最も最近使用
    されたデータ・セグメントに割り当てられ、前記レベル
    のうちの第2のレベルは前記最も最近使用されたデータ
    ・セグメントよりも長い間使用されていない複数のデー
    タ・セグメントに割り当てられている; (e-2)前記第2のキャッシュ・メモリ手段に関連するデ
    ータ・セグメントを維持・管理してそこに割り当てられ
    たデータが前記第1のキャッシュ・メモリ手段中のデー
    タ・セグメントと同期し提示・管理されるように前記擬
    似ランダム法を行う手段。
  3. 【請求項3】以下のステップ(a)ないし(f)を設け、ラス
    タ・スキャン表現の2レベルのデータを複数のキャッシ
    ュ記憶を使用して圧縮し、各キャッシュ記憶は前記ラス
    タ・スキャン表現からの複数のデータ・セグメントを使
    用状況の階層に基づいてストアするデータ圧縮方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
    ッシュ記憶の各々に割り当てる:前記キャッシュコンテ
    キスト識別子の各々は前記ラスタ・スキャン表現の1つ
    のスキャン行中のデータ・セグメントに関連する値を有
    する; (b)前記1つのスキャン行の次のスキャン行に含まれて
    いる現データ・セグメントにアクセスする:前記現デー
    タ・セグメントの各々は前記1つのスキャン行中のコン
    テキスト・データ・セグメントに位置的に整列してい
    る; (c)前記現データ・セグメントの各々を位置的に整列し
    ているコンテキスト・データ・セグメントと同じ値が割
    り当てられたキャッシュ記憶中に含まれるデータ・セグ
    メントと比較する; (d)前記現データ・セグメントがキャッシュ記憶中にあ
    った場合には当該キャッシュ記憶中の識別子位置を送出
    し、もし前記現データ・セグメントが前記キャッシュ記
    憶中になかった場合には見つからなかった旨の識別子及
    び前記現データ・セグメントを送出する; (e)現データセグメントが前記次のスキャン行中に含ま
    れ、次回のデータ・セグメントのスキャン行についての
    コンテキスト・データ・セグメントになるようにする; (f)他のどのキャッシュ記憶にも新たなコンテキスト・
    セグメント値が割り当てられていない場合には前記新た
    なコンテキスト・セグメント値を新たなキャッシュ記憶
    に割り当て、処理すべきスキャン行がそれ以上なくなる
    までステップ(b)ないしステップ(f)を繰り返す。
  4. 【請求項4】以下のステップ(a)ないし(h)を設け、ラス
    タ・スキャン表現の2レベルのデータを複数のキャッシ
    ュ記憶を使用して圧縮し、各キャッシュ記憶は前記ラス
    タ・スキャン表現からの複数のデータ・セグメントを使
    用状況の階層に基づいてストアし、更に前記圧縮された
    データを伸長するデータ圧縮/伸長方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
    ッシュ記憶の各々に割り当てる:前記キャッシュコンテ
    キスト識別子の各々は前記ラスタ・スキャン表現の1つ
    のスキャン行中のデータ・セグメントに関連する値を有
    する; (b)前記1つのスキャン行の次のスキャン行に含まれて
    いる現データ・セグメントにアクセスする:前記現デー
    タ・セグメントの各々は前記1つのスキャン行中のコン
    テキスト・データ・セグメントに位置的に整列してい
    る; (c)前記現データ・セグメントの各々を位置的に整列し
    ているコンテキスト・データ・セグメントと同じ値が割
    り当てられたキャッシュ記憶中に含まれるデータ・セグ
    メントと比較する; (d)前記現データ・セグメントがキャッシュ記憶中にあ
    った場合には当該キャッシュ記憶中の識別子位置を送出
    し、もし前記現データ・セグメントが前記キャッシュ記
    憶中になかった場合には見つからなかった旨の識別子及
    び前記現データ・セグメントを送出する; (e)現データセグメントが前記次のスキャン行中に含ま
    れ、次回のデータ・セグメントのスキャン行についての
    コンテキスト・データ・セグメントになるようにする; (f)他のどのキャッシュ記憶にも新たなコンテキスト・
    セグメント値が割り当てられていない場合には前記新た
    なコンテキスト・セグメント値を新たなキャッシュ記憶
    に割り当て、処理すべきスキャン行がそれ以上なくなる
    までステップ(b)ないしステップ(f)を繰り返す; (g)複数のキャッシュ記憶を確立する:前記確立された
    キャッシュ記憶の各々は前記ラスタ・スキャン表現の第
    1のスキャン行中のデータ・セグメント値に関連する値
    を持つ割り当てられたコンテキスト識別子を有する; (h)伸長された選考スキャン行中のコンテキスト識別子
    に基づいてキャッシュ記憶を選択し、前記選択されたキ
    ャッシュ記憶中の前記位置識別子によって指示される位
    置内容から、前記位置に割り当てられたデータ・セグメ
    ントが何であるかを判定することによって、受信した位
    置識別子を伸長する。
  5. 【請求項5】以下のステップ(a)ないし(f)を設け、デー
    タ・セグメントのストリームを複数のキャッシュ記憶を
    使用して圧縮し、各キャッシュ記憶は前記データ・スト
    リームからの複数のデータ・セグメントを使用状況の階
    層に基づいてストアするデータ圧縮方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
    ッシュ記憶の各々に割り当てる:前記キャッシュコンテ
    キスト識別子の各々は前記データ・ストリーム中の以前
    に与えられたコンテキスト・データ・セグメント関連付
    けられた値を持っている; (b)コンテキスト・データ・セグメントとの間で予め定
    められた一時的な関係を有している現データ・セグメン
    トにアクセスする; (c)前記現データ・セグメントをコンテキスト・データ
    ・セグメントに等しい値のキャッシュ識別子が割り当て
    られているキャッシュ記憶中に負儒まれ手いるデータ・
    セグメントと比較するが、前記割り当てられたキャッシ
    ュ識別子を持っているキャッシュ記憶が存在しない場合
    には前記キャッシュ識別子を持ったキャッシュ記憶を作
    る; (d)前記現データ・セグメントがキャッシュ記憶中にあ
    った場合には前記キャッシュ記憶のデータ・セグメント
    の位置識別子を送出し、前記現データ・セグメントが前
    記キャッシュ記憶中になかった場合には見つからなかっ
    た旨の識別子及び前記現データ・セグメントを送出す
    る; (e)現データセグメントが以降の現データ・セグメント
    に対しての新たなコンテキスト・データ・セグメントに
    なるようにする; (f)他のどのキャッシュ記憶にも前記新たなコンテキス
    ト・セグメント値が割り当てられていない場合には前記
    新たなコンテキスト・セグメント値を新たなキャッシュ
    記憶に割り当て、処理すべきデータ・セグメントがそれ
    以上なくなるまでステップ(b)ないしステップ(f)を繰り
    返す。
  6. 【請求項6】以下のステップ(a)ないし(f)を設け、ラス
    タ・スキャン表現の2レベルのデータを複数のキャッシ
    ュ記憶を使用して圧縮し、各キャッシュ記憶は前記ラス
    タ・スキャン表現からの複数のデータ・セグメントを使
    用状況の階層に基づいてストアするデータ圧縮方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
    ッシュ記憶の各々に割り当てる:前記キャッシュ記憶の
    個数は前記データ・セグメントが何通りの値を取り得る
    かに等しく、各キャッシュ・コンテキスト識別子はデー
    タ・セグメントの取り得る値と等しい値を持っている; (b)第1のスキャン行の次のスキャン行に含まれている
    現データ・セグメントにアクセスする:前記現データ・
    セグメントの各々は前記第1のスキャン行中のコンテキ
    スト・データ・セグメントに位置的に整列している; (c)前記現データ・セグメントの各々を位置的に整列し
    ているコンテキスト・データ・セグメントと同じ値が割
    り当てられたキャッシュ記憶中に含まれるデータ・セグ
    メントと比較する; (d)前記キャッシュ記憶中で見出されたデータ・セグメ
    ントの識別子位置を送出し、もし前記現データ・セグメ
    ントが前記キャッシュ記憶中になかった場合には見つか
    らなかった旨の識別子及び前記現データ・セグメントを
    送出する; (e)前記次のスキャン行に含まれる現データセグメント
    が次のスキャン行のデータ・セグメントのコンテキスト
    ・データ・セグメントになるようにする; (f)処理すべきスキャン行がそれ以上なくなるまでステ
    ップ(b)ないしステップ(f)を繰り返す。
  7. 【請求項7】以下のステップ(a)ないし(f)を設け、デー
    タ・セグメントのストリームを複数のキャッシュ記憶を
    使用して圧縮し、各キャッシュ記憶は前記データ・スト
    リームからの複数のデータ・セグメントを使用状況の階
    層に基づいてストアするデータ圧縮方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
    ッシュ記憶の各々に割り当てる:前記キャッシュ記憶の
    個数は前記データ・セグメントが何通りの値を取り得る
    かに等しく、各キャッシュ・コンテキスト識別子はデー
    タ・セグメントの取り得る値と等しい値を持っている; (b)コンテキスト・データ・セグメントとの間で予め定
    められた一時的な関係を有している現データ・セグメン
    トにアクセスする; (c)前記現データ・セグメントをコンテキスト・データ
    ・セグメントに等しい値のキャッシュ識別子が割り当て
    られているキャッシュ記憶中に負儒まれ手いるデータ・
    セグメントと比較する; (d)前記キャッシュ記憶中で見出されたデータ・セグメ
    ントの識別子位置を送出し、もし前記現データ・セグメ
    ントが前記キャッシュ記憶中になかった場合には見つか
    らなかった旨の識別子及び前記現データ・セグメントを
    送出する; (e)処理すべきデータ・セグメントがそれ以上なくなる
    までステップ(b)ないしステップ(f)を繰り返す。
  8. 【請求項8】以下の(a)ないし(c)を設けたデータ圧縮シ
    ステム: (a)複数のメモリ位置に複数のデータ・セグメントをス
    トアする第1のキャッシュ・メモリ手段:前記位置は位
    置識別子を有する; (b)複数のレベルを有する第2のキャッシュ・メモリ手
    段:前記レベルのうちの第1のレベルは最も最近使用さ
    れたデータ・セグメントについての位置識別子を含み、
    前記位置識別子は前記第1のキャッシュ・メモリ手段中
    のどこに前記最も最近使用されたデータ・セグメントが
    存在し、前記レベルのうちのそれ以外のレベルは前記第
    1のキャッシュ・メモリ手段中のどこに前記最も最近使
    用されたデータ・セグメントよりも長い間アクセスされ
    ていないデータ・セグメントが存在するかを示す位置識
    別子を含む; (c)受信したデータ・セグメントが前記第1のキャッシ
    ュ・メモリ中に見つかったか否かを判定し、もし見つか
    った場合には前記第1のキャッシュ・メモリ手段中で前
    記受信されたデータ・セグメントをストアしている位置
    を示す前記位置識別子を前記第2のキャッシュ・メモリ
    手段から得て受信手段へ送出する。
JP28397693A 1992-10-19 1993-10-18 データ圧縮/伸長システム及び方法 Expired - Fee Related JP3499903B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US963,201 1992-10-19
US07/963,201 US5450562A (en) 1992-10-19 1992-10-19 Cache-based data compression/decompression

Publications (2)

Publication Number Publication Date
JPH06242924A true JPH06242924A (ja) 1994-09-02
JP3499903B2 JP3499903B2 (ja) 2004-02-23

Family

ID=25506901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28397693A Expired - Fee Related JP3499903B2 (ja) 1992-10-19 1993-10-18 データ圧縮/伸長システム及び方法

Country Status (6)

Country Link
US (1) US5450562A (ja)
EP (2) EP0593968B1 (ja)
JP (1) JP3499903B2 (ja)
KR (1) KR100319657B1 (ja)
DE (1) DE69328855T2 (ja)
SG (1) SG75758A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006515441A (ja) * 2002-10-16 2006-05-25 トムソン ライセンシング エレメントのリストを記憶するための装置、1つの係る装置におけるエレメントを記憶する方法
US7245396B2 (en) 2001-12-06 2007-07-17 Canon Kabushiki Kaisha Image data coding apparatus, image data decoding apparatus, image data coding method and image data decoding method
JP2009531976A (ja) * 2006-03-24 2009-09-03 ユニバーシティ オブ ミシシッピ セットアソシアティブキャッシュマッピング技術に基づく高速データ圧縮

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787472A (en) * 1995-07-31 1998-07-28 Ibm Corporation Disk caching system for selectively providing interval caching or segment caching of vided data
US5689255A (en) * 1995-08-22 1997-11-18 Hewlett-Packard Company Method and apparatus for compressing and decompressing image data
US5764235A (en) 1996-03-25 1998-06-09 Insight Development Corporation Computer implemented method and system for transmitting graphical images from server to client at user selectable resolution
US6148376A (en) 1996-05-10 2000-11-14 Apple Computer, Inc. Method and apparatus for an improved stack arrangement and operations thereon
US5765157A (en) * 1996-06-05 1998-06-09 Sun Microsystems, Inc. Computer system and method for executing threads of execution with reduced run-time memory space requirements
US5936616A (en) * 1996-08-07 1999-08-10 Microsoft Corporation Method and system for accessing and displaying a compressed display image in a computer system
JP3368157B2 (ja) * 1996-11-18 2003-01-20 キヤノン株式会社 データ圧縮装置、方法及びシステム
US5960465A (en) * 1997-02-27 1999-09-28 Novell, Inc. Apparatus and method for directly accessing compressed data utilizing a compressed memory address translation unit and compression descriptor table
US6175896B1 (en) * 1997-10-06 2001-01-16 Intel Corporation Microprocessor system and method for increasing memory Bandwidth for data transfers between a cache and main memory utilizing data compression
US6324621B2 (en) 1998-06-10 2001-11-27 International Business Machines Corporation Data caching with a partially compressed cache
US6128094A (en) * 1998-07-08 2000-10-03 Hewlett-Packard Company Printer having processor with instruction cache and compressed program store
US6218970B1 (en) * 1998-09-11 2001-04-17 International Business Machines Corporation Literal handling in LZ compression employing MRU/LRU encoding
US6192157B1 (en) 1998-10-27 2001-02-20 Hewlett-Packard Company Modifications of postscript adaptive data compression (ADC) for 3 plane, 8 bit color images, JPEG lossy compression, and variable Q factors
US6738150B1 (en) 1999-04-14 2004-05-18 Hewlett-Packard Development Company, L.P. Methods and systems for processing image data
US6594029B1 (en) 1999-04-19 2003-07-15 Hewlett-Packard Company Guard-banding methods, dynamic guard-banding methods, and related apparatus for real time image-data processing
US6832187B1 (en) 1999-05-10 2004-12-14 Hewlett-Packard Development Company, L.P. Methods of providing page protection in a digital printing system having multiple output devices
US6622004B1 (en) * 1999-06-07 2003-09-16 Matsushita Electric Industrial Co., Ltd. Data transceiving system and method
US7155062B1 (en) 1999-11-17 2006-12-26 Genicom Corp. System and method for performing pattern matching image compression
AU766759B2 (en) * 2000-04-18 2003-10-23 Canon Kabushiki Kaisha Image cache system and method
US6856651B2 (en) * 2000-07-25 2005-02-15 Peribit Networks, Inc. System and method for incremental and continuous data compression
EP1330720B1 (en) * 2000-07-25 2008-05-28 Juniper Networks, Inc. Network architecture and methods for transparent on-line cross-sessional encoding and transport of network communications data
US20030028673A1 (en) * 2001-08-01 2003-02-06 Intel Corporation System and method for compressing and decompressing browser cache in portable, handheld and wireless communication devices
WO2003019870A2 (en) * 2001-08-24 2003-03-06 Peribit Networks, Inc. Dynamic multi-point meshed overlay network
US6816949B2 (en) * 2002-01-03 2004-11-09 Intel Corporation Method and apparatus for cache management
AU2002951013A0 (en) * 2002-08-27 2002-09-12 Sunbay Software Ag System for improved network data access
US7580429B1 (en) * 2002-09-05 2009-08-25 U.S. Robotics System and methods for improving data compression
US7181556B2 (en) * 2003-12-23 2007-02-20 Arm Limited Transaction request servicing mechanism
US20060242368A1 (en) * 2005-04-26 2006-10-26 Cheng-Yen Huang Method of Queuing and Related Apparatus
US7339507B1 (en) * 2006-09-13 2008-03-04 Jiun-In Guo Device for video decoding
US8401181B2 (en) * 2009-06-09 2013-03-19 Emc Corporation Segment deduplication system with encryption of segments
US8762348B2 (en) * 2009-06-09 2014-06-24 Emc Corporation Segment deduplication system with compression of segments
US8731190B2 (en) * 2009-06-09 2014-05-20 Emc Corporation Segment deduplication system with encryption and compression of segments
US8013762B2 (en) * 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
CN102194499A (zh) * 2010-03-15 2011-09-21 华为技术有限公司 一种压缩字典同步的方法和装置
US8687902B2 (en) * 2012-03-29 2014-04-01 Intel Corporation System, method, and computer program product for decompression of block compressed images
KR20150134718A (ko) * 2014-05-22 2015-12-02 에스케이플래닛 주식회사 압축 방식을 이용한 데이터 소스 관리 장치 및 방법
US9501419B2 (en) * 2014-10-08 2016-11-22 HGST Netherlands B.V. Apparatus, systems, and methods for providing a memory efficient cache
US11343715B1 (en) * 2020-08-23 2022-05-24 Rockwell Collins, Inc. Header compression for network
CN112286488B (zh) * 2020-09-17 2023-06-16 昆明理工大学 一种基于数据包效用值的缓存替换方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4369463A (en) * 1981-06-04 1983-01-18 International Business Machines Corporation Gray scale image data compression with code words a function of image history
US4562536A (en) * 1983-06-30 1985-12-31 Honeywell Information Systems Inc. Directory test error mode control apparatus
US4626824A (en) * 1985-06-11 1986-12-02 International Business Machines Corporation Apparatus and algorithm for compressing and decompressing data
US4783735A (en) * 1985-12-19 1988-11-08 Honeywell Bull Inc. Least recently used replacement level generating apparatus
US4797814A (en) * 1986-05-01 1989-01-10 International Business Machines Corporation Variable address mode cache
GB8802102D0 (en) * 1988-01-30 1988-02-24 Int Computers Ltd Cache memory
US5043885A (en) * 1989-08-08 1991-08-27 International Business Machines Corporation Data cache using dynamic frequency based replacement and boundary criteria
US5125085A (en) * 1989-09-01 1992-06-23 Bull Hn Information Systems Inc. Least recently used replacement level generating apparatus and method
US5185856A (en) * 1990-03-16 1993-02-09 Hewlett-Packard Company Arithmetic and logic processing unit for computer graphics system
US5222222A (en) * 1990-12-18 1993-06-22 Sun Microsystems, Inc. Apparatus and method for a space saving translation lookaside buffer for content addressable memory
US5263136A (en) * 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7245396B2 (en) 2001-12-06 2007-07-17 Canon Kabushiki Kaisha Image data coding apparatus, image data decoding apparatus, image data coding method and image data decoding method
JP2006515441A (ja) * 2002-10-16 2006-05-25 トムソン ライセンシング エレメントのリストを記憶するための装置、1つの係る装置におけるエレメントを記憶する方法
JP2009531976A (ja) * 2006-03-24 2009-09-03 ユニバーシティ オブ ミシシッピ セットアソシアティブキャッシュマッピング技術に基づく高速データ圧縮

Also Published As

Publication number Publication date
JP3499903B2 (ja) 2004-02-23
EP0593968A1 (en) 1994-04-27
KR100319657B1 (ko) 2002-04-06
US5450562A (en) 1995-09-12
EP0880100A2 (en) 1998-11-25
EP0880100A3 (en) 1999-08-25
DE69328855D1 (de) 2000-07-20
DE69328855T2 (de) 2000-11-02
EP0593968B1 (en) 2000-06-14
SG75758A1 (en) 2000-10-24

Similar Documents

Publication Publication Date Title
JP3499903B2 (ja) データ圧縮/伸長システム及び方法
JP2713369B2 (ja) データ圧縮装置及び方法
US5229768A (en) Adaptive data compression system
JP3367832B2 (ja) 圧縮装置、圧縮方法及びコンテキスト提供装置
US5281967A (en) Data compression/decompression method and apparatus
US6906644B2 (en) Encoding and decoding apparatus with matching length means for symbol strings
EP0666651B1 (en) Apparatus and method for lempel ziv data compression with management of multiple dictionaries in content addressable memory
EP0970419B1 (en) A lempel-ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
KR100331351B1 (ko) 이진입력데이터스트림압축방법
US7028039B2 (en) System and method for storing connectivity information in a web database
JPH0746409A (ja) データの圧縮、復元方法と装置
EP0573208A1 (en) Apparatus and method for managing multiple dictionaries in content addressable based data compression
EP0691628A2 (en) Data compression method and system
EP0438956A1 (en) Method of encoding compressed data
US20080005648A1 (en) Data compression
US5673042A (en) Method of and an apparatus for compressing/decompressing data
JPH07104971A (ja) ネットワークパケットに適用される小型辞書を用いた圧縮方法
EP0471518B1 (en) Data compression method and apparatus
CA1278867C (en) Method of and a device for digital signal coding by vector quantization
KR20060009256A (ko) 데이터 처리 장치 및 방법과, 컴퓨터 프로그램 제품
CN112968706B (zh) 数据压缩方法、fpga芯片及fpga在线升级方法
JP2004194343A (ja) パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法
KR20030082586A (ko) 폰트 압축 및 검색
EP0435802B1 (en) Method of decompressing compressed data
EP0438954A1 (en) Method of decoding compressed data

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081205

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091205

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101205

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101205

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees