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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
- G06F12/124—Replacement 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/41—Bandwidth or redundancy reduction
- H04N1/411—Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
- H04N1/413—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
- H04N1/417—Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information using predictive or differential encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed 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
えた場合に、捨てるべきパターンを決めるに当たって、
完全なLRU管理を行うと辞書管理のための計算量の負
担が大きい点を改善する。 【構成】出現パターンの辞書を作り、与えられたパター
ンが辞書中のパターンと一致した場合には、そのパター
ンの代わりに辞書中のパターンの位置を示す識別子を出
力することによってデータ圧縮を行う。辞書を最も最近
使用されたパターンが入る第1のキャッシュ部分91と、
それ以外の第2のキャッシュ部分92-94に分ける。新た
なパターンが与えられると、それを第1の部分へ入れ、
以前第1の部分に入っていたパターンを第2の部分中で
ランダムに選択された部分に上書きする。
Description
ecompression)のための方法及び装置に関するものであ
り、より詳細には、同期動作するキャッシュ・メモリに
よるこのような方法及び装置に関するものである。
ータまたはイメージを表すために必要なビットの数を節
減することにある。先行技術はデータ圧縮のための多く
の方法で満ちている。最高のレベルのデータ圧縮を与え
る技術は一般的には最も複雑なデータ処理機器を必要と
するものであり、またその実行速度が遅いものが多い。
比較的低いレベルのデータ圧縮を与える技術は、比較的
迅速に動作し、比較的単純なハードウエアを用いること
が多い。一般的にいえば、データ圧縮の方法を選択する
ことは、システムの複雑性や実行時間とデータ圧縮の所
望のレベルとの間での妥協に基づくものである。
についての多くの技術が含まれている。"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次元のコーディング方式に
ついても説明している。
Ziv-Lempel Data Compression Algorithm", Proceedin
gs of the IEEE Data Compression Conference, April,
1991, pp. 362-371 には、周知の Lempel -Ziv )(LZ)
の圧縮アルゴリズムを高速で実現することが説明されて
いる。この方法では、受信ノードと送信ノードの双方で
データ・ストリングのストリングの辞書を構築し、入力
されたデータ・ストリングと辞書内に見出されるデータ
・ストリングとの間の一致に従ってコードを送出する。
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 のアルゴリズムは、イメージをブロ
ックに分割し、先行のブロックから現ブロックを予測す
ることを試みる。イメージの最終的なコーディング結果
は予測誤差とブロックの値からなる。
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レベル・イメージ・データのコーディングの国際的
な標準になるはずである。
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
で、自己組織型逐次サーチ技術を用いてテキスト・デー
タを圧縮する方法を説明している。具体的に言えば、頻
繁にアクセスされるワードはサーチ・シーケンスの先頭
の近傍にあり、このためにそれらのワードは圧縮動作に
当たって短時間で見つかるということである。
ムは、中央処理ユニットのメモリ・システム中のキャッ
シュ・メモリに類似している。具体的に言えば、LRU
(least recently used) 管理を使ったキャッシュ・メ
モリ(数のリストの形態をとるキャッシュ)が採用され
ている。このリストは、最も最近使用されたものからこ
れまで一番長い期間使用されていないものへという態様
で順序付けられる。サーチ対象の値つまりワードがこの
リスト中にあれば、その度に、このワードがキャッシュ
・リストから取り出されてこのキャッシュ・リストの先
頭に配置され、残りの値は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が取り
除かれ、また、その他の値はプッシュ・ダウンされる。
コーディング・プロセス及びデコード・プロセスでは、
キャッシュの状態がエンコーダ機構及びデコーダ機能の
双方と確実に同期するように、圧縮されたコード・ワー
ドとキャッシュの適応の操作がなされる。キャッシュの
同期をとることにより、欠落のないデータ処理が確実に
行われるようになる。図1に示されているように、キャ
ッシュ20の状態は、新たな値についてのサーチが行わ
れる毎に「適応される」。ある値がエンコーダ内のキャ
ッシュに既に存在しているときには、そのキャッシュ位
置が、この値の位置を指示するコード・ワードの形式で
送出される。この値がキャッシュ内に存在しないときに
は、ある特別なコード・ワードがこの値それ自体ととも
にエンコーダによって出力される。通常は値それ自体よ
りも少ないビット数でキャッシュ位置を送出できるため
に、圧縮が達成される。デコーダでは、受取ったコード
・ワードを解釈して、当初のデータ・ストリームを再構
成する。更に、このデコーダはエンコーダと同様のやり
方でそのキャッシュを「適応させて」、エンコーダとの
同期状態を維持する。
コーダ機構の双方で同期を確保するために採用される手
続のフローチャートが図示されている。図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)。そして、この手続は、次の圧縮され
ていないデータ値を獲得するところまで戻って再び繰り
返される。
ュ中で発見できなかった場合には、「発見せず」、つま
りミスヒット、を表すコード・ワードが出力され(ブロ
ック38)、また実際のデータ値が出力される(ブロッ
ク40)。そして、受信したデータ値がキャッシュの先
頭に挿入され、また、残りの値をプッシュ・ダウンし、
最も長い間使用されていなかった値を排除することによ
って、キャッシュの残りのものについての「適応」がな
される。
ード・ワードをアクセスし(ブロック44)、このコー
ド・ワードに位置コード・ワードが含まれているかどう
か判定する(判定ブロック46)。判定結果がyesで
あるときには、デコーダのキャッシュ中の当該位置の値
を出力し(ブロック48)、また出力されたキャッシュ
値をキャッシュの先頭まで移動させることにより、この
キャッシュの適応がなされる(ブロック50)。
位置コード・ワードではなかったときには、この受信し
たデータ値をアクセスして、出力する(ブロック5
2)。また、このデータ値はまたキャッシュの先頭に挿
入され、更に、このキャッシュの残りの部分についての
適応が成される。
手続は効果的なものではあるが、LRU方式のキャッシ
ュ管理は演算が複雑であることが多い。キャッシュを
「適応」させる度に多くの値を再配置することが必要と
される。このような再配置は、一連の圧縮の間に何回も
生起するために、相当な処理時間を占める可能性があ
り、その圧縮手続の効率を著しく低下させる。
ュ管理技術を使用することにより、キャッシュ・ベース
の圧縮手続をより効率的にすることにある。
ースの予測技術を用いた、改良された圧縮/伸長手続を
提供することにある。
理に特に適応しており、圧縮されるべき値の近傍におけ
るデータの内容を用いるようにする、キャッシュ・ベー
スの圧縮/伸長手続を提供することにある。
データを圧縮するためのシステムには、使用が割り当て
られた複数のレベルを有する第1のキャッシュ・メモリ
が含まれている。その第1のレベルは最も使用頻度が高
いデータ・セグメントに対して割り当てられ、その第2
のレベルは複数のより使用頻度が低いデータ・セグメン
トに対して割り当てられている。プロセッサは、受信し
たデータがデータ・セグメントがキャッシュ・メモリ内
で発見されたかどうかを判定し、発見されなされなかっ
たときには、この受信したデータ・セグメントを、キャ
ッシュ・メモリの第1のレベルに既にストアされている
以前のデータセグメントに代えてそこに割り当てる。こ
の以前のデータ・セグメントは、第2のデータセグメン
トに以前にストアされているところの、より長い間使用
されていなかったデータ・セグメントに代えて、その位
置に割り当てられる。より長い間使用されていなかった
データ・セグメントであって置換されるものは、疑似ラ
ンダム法によって選択される。そして、発見されなかっ
たという通知は、受信したデータ・セグメントの識別情
報とともに、受信ステーションに送出される。この受信
ステーションは送信側と同じキャッシュ構造を含んでお
り、受信されたコード・ワード及びデータ・セグメント
に応答してそのキャッシュを更新する。本発明の更に別
の変形によれば、データ・セグメントのまわりのコンテ
キストに従って、複数のキャッシュ・メモリに対してデ
ータ・セグメントが入力される。なお、これら複数のキ
ャッシュ・メモリは、コンテキストから導出されたアド
レスに従って割り当てられる。
信をするホスト・コンピュータに関連してなされるもの
であり、そのコーディングは、送出されるデータのバイ
ト(8ビット)に対して行われる。しかしながら、後述
する手続及びシステムは、データを送り出し、また送出
時のバンド幅の経済性やメモリの節約のために圧縮/伸
長の手続を採用する多様なシステムに適用されるという
ことを理解しなければならない。
には、ホスト中央処理ユニット(CPU)62、リード
・オンリ・メモリ(ROM)64及びランダム・アクセ
ス・メモリ(RAM)66が含まれている。これらのモ
ジュールの各々はバス68で相互接続されており、その
入力/出力の通信はI/Oモジュール70によって処理
される。ROM64には、I/Oモジュール70が送出
ライン上にデータを送出する前にホストCPU62の制
御の下にデータの圧縮操作を行うコード化手続が含まれ
ている。RAM66は、LRU方式で構造化され、デー
タの圧縮操作を達成できるようにする複数のキャッシュ
・メモリを含む。
タは、I/Oモジュール73を介してプリンタ72で受
信される。プリンタ72には、CPU74、プリント・
エンジン76、RAM78及びROM80が含まれてい
る。RAM78は、I/Oモジュール73を介して受信
された入力データのための一時記憶部として作用するも
のであり、また、ホストCPU60中のRAM66に含
まれているキャッシュ・メモリと構造的に同一のキャッ
シュ・メモリも含んでいる。ROM80は、I/Oモジ
ュール73を介して受信した圧縮済みデータを伸長し、
使用するためにRAM78中にストアするようにするデ
コード手続を含んでいる。
含まれているキャッシュ・メモリはLRUキャッシュと
して構成されている。このキャッシュでは、キャッシュ
の先頭のデータは最も最近使用された(MRU)もので
あり、このキャッシュの底にあるデータは最も長い間使
用されなかったものである。キャッシュが更新される
(「適応させられる」)度に多くの値の再配置が必要と
されることから、このようなキャッシュの管理は演算上
複雑なものである。
な、修正された形式のLRUキャッシュを示す。キャッ
シュ90は階層化されたLRUキャッシュとして構成さ
れており、ここに、最上位層91は最も最近使用された
データ・バイトであり、層92〜94は3個の最も長い
間使用されなかった(LRU)データ・バイトを含む
「単一の」層を有している。ここで、単に説明を簡単に
するだけの目的で、キャッシュ90が4個のエントリと
2つの層を有するものとして示されていることを理解さ
れたい。任意の数の層を設けまた層毎に任意の個数のエ
ントリを有することができる。
んで取り除くかということは、コード化機構とデコード
機構との間の同期状態を維持しながら、疑似ランダム的
に行うことができる。例えば、ラウンド・ロビン方式カ
ウント法を用いることができる。このやり方では、最も
長い間使用されなかった層から取り除かれるべきバイト
は、エントリ92〜94の逐次的なカウントに基づいて
選択される。この態様において、キャッシュが大きくな
ると、処理上のオーバヘッドをより少なくして管理で
き、またそれでもLRUキャッシュと殆ど同様に効率的
である。
3つの異なる時点(すなわちA、B及びC)におけるキ
ャッシュ90の状態が示されている。時点Aにおいて
は、キャッシュの状態は図示した通りである。時点Bに
おいて値2のバイトがサーチされ、最も最近使用された
層91に置かれる。値2のバイトは既にキャッシュの第
2のレベルにあることから、第1のレベルの値78とそ
の位置を交換し、これによって(キャッシュの状態96
によって示されるように)値78を位置94に置く。時
点Cにおいて、値89のバイトをサーチするものとす
る。この値はキャッシュ中にはないことから、最も最近
使用されたものを入れておく層91に挿入され、また最
も長い間使用されなかったものが入る層(この場合で
は、位置93)から疑似ランダムに導出された位置に
は、値89によって置換された値(すなわち値2)が上
書きされる。
次回に必要とされた際には、置換されるのは位置94で
あり、これに次いで位置92、位置93等々となる。従
って、キャッシュ90を階層化することにより、適応操
作の間のキャッシュ値の移動を少なくすることができ
る。構成的にいえば、最も長い間使用されなかったもの
を入れておく層中で交換されるべき位置は、ラウンド・
ロビン方式のカウントが増大するにつれて更新されるポ
インタの位置に基づいて決定することができる。
独立したキャッシュの中から選択するためのコンテキス
トを採用することにより、パフォーマンスを更に向上す
ることができる。プリンタには通常、各ピクセルが2値
のビット値で表されるところの、ピクセルのラスタ・イ
メージを有するビット・マップ・メモリを備えている。
各ラスタ・スキャン行は8ビット・バイトのシーケンス
に分割される。前以ってデコードされているような位置
に置かれている周辺のピクセルを、最も最近使用された
バイトをストアするためにいずれのキャッシュを用いる
べきかを判定するコンテキストとして用いる。周辺のピ
クセルのビット値を組み合わせて1つの数を形成し、ど
のキャッシュを使用すべきかを指定するコンテキスト値
(つまりインデクス)が導出できるようにする。この操
作を行うことで、各キャッシュが個々のコンテキストに
対してより良好に適応できるようにすることにより、デ
ータ圧縮の改善がなされる。
番号の付いた8個のピクセル(ピクセル100)は、コ
ード化される8個のハッチングの付いたのピクセル(ピ
クセル102)のためのコンテキスト値を形成する。こ
れ以降では、ピクセル100をコンテキスト・バイトと
呼び、またピクセル102は現在バイトと呼ぶ。コンテ
キスト依存キャッシュ構成の思想は、イメージは垂直方
向に相関関係を持っている(例えば、表組みにおける垂
直の線)ことが多いという事実に基づいている。また、
キャッシュのアドレスとしてコンテキスト・バイトを採
用することにより、現在バイトでサーチした際、アドレ
スされたキャッシュ内の最も最近使用されたものが入る
エントリ中に現在バイトと同一のデータ・バイトが入っ
ている可能性が高くなり、これにより、キャッシュのデ
ータをそれ以上移動させることなく、高速にコード化す
ることができるようになる。「垂直の」コンテキスト・
バイトは後続する説明の基本を形成するものであるが、
別の物理的な関係も本発明の範囲内に入っているという
ことを理解しなければならない。
したものでは、圧縮/伸長手続の開始時点で全てのキャ
ッシュを生成し初期化してよい。例えば、8ビット・バ
イトが採用されるときには、最初に256個のキャッシ
ュを生成し、各キャッシュには複数のエントリを持てる
ようにしておくことができる。キャッシュが複雑化する
ことによる問題よりもメモリの方が重要であるときに
は、全てのキャッシュを最初に生成しておく必要ではな
く、必要とされるときにのみキャッシュを生成させるこ
とができる。
コード化手続を説明するフローチャートである。このフ
ローチャートの各ブロックの動作は以下の通りである: 104:圧縮されていない次のデータ値を獲得 106:コンテキスト値に基づいてキャッシュを選択 108:キャッシュ値が一致したか? 110:その位置を表すコード・ワードを出力 112:キャッシュを適応させる 114:「発見せず」を示すコード・ワードを出力 116:データ値を出力 118:この新たなデータをキャッシュに挿入しキャッ
シュを適応させる 図7に示されているように、送出されるべき新たなデー
タ・バイトが与えられると(判定ブロック104)、そ
のピクセル・イメージの直前のスキャン行に垂直に整列
したコンテキスト・バイトのアドレスを有する特定のキ
ャッシュがアドレスされる(ブロック106)。(先に
示したように、このアドレスされたキャッシュ中の最も
最近使用されたエントリは、与えられた圧縮されていな
いバイト値と同じである可能性が高い。)次に、このバ
イト値をこのアドレスされたキャッシュ中の値と比較す
る(判定ブロック108)。ここで一致が取れた場合に
は、アドレスされたキャッシュ中で一致した値の位置を
指示するコード・ワードを出力する(ブロック11
0)。また、必要ならその一致した値をアドレスされた
キャッシュ中の最も最近使用されたものが入るエントリ
に持ち上げ(ブロック112)、この手続の先頭に戻
る。
取れなかった場合には(判定ブロック108)、「発見
せず」、つまりミスヒット、を表すコード・ワードを出
力し(ブロック114)、次いで実際のバイト値を送出
する(ブロック116)。このキャッシュ中のどの値と
も一致しなかったバイト値はアドレスされたキャッシュ
に送出され、このキャッシュを適応させて(ブロック1
18)、またこれによって置き換えられたバイトをキャ
ッシュのもっと下位のレベルに移動させ、更にこのもっ
と下位のレベルに既にストアされていたバイトを置換す
る等の作業がなされる。次に、この手続はその先頭に戻
る。
ード化されたデータをデコードするための伸長手続を説
明するフローチャートである。このフローチャート中の
各ブロックの動作は以下の通りである: 120:圧縮されている次のコード・ワードを獲得 122:コンテキスト値に基づいてキャッシュを選択 124:キャッシュ中の位置を示すコード・ワードか? 126:キャッシュ値を出力 128:キャッシュを適応させる 130:データ値を獲得して出力 132:この新たなデータ値をキャッシュに挿入し、キ
ャッシュを適応させる 図8には、図7に示されている手続で圧縮されたデータ
に応答する伸長の手続が示されている。受信された圧縮
済みコード・ワードがアクセスされ(ブロック12
0)、直上のスキャン行中の既にデコードされたコンテ
キスト・バイトのコンテキスト値に基づいてキャッシュ
がアドレスされる(ブロック122)。圧縮されたコー
ド・ワードがキャッシュ中の位置を示すコード・ワード
である場合には(判定ブロック124)、アドレスされ
たキャッシュ中の指示された位置に現れている値を出力
する(ブロック126)。また、必要なら最も最近使用
されたバイトをキャッシュの先頭に置くことができるよ
うにそのキャッシュ内のエントリを再配置することによ
り、キャッシュを適応させる(ブロック128)。
すコード・ワードではないと判定された場合には(判定
ブロック124)、この受信したバイト値がメモリから
取り出して出力する(ブロック130)。また、当該新
たなバイト値をアドレスされたキャッシュの先頭に挿入
し、このキャッシュを適応させる。更に、受信したデー
タがもうなくなるまでこの手続を繰り返す。
アドレスが現在バイトの直上のコンテキスト・バイトの
値であるキャッシュに常に振り向けられる。次のスキャ
ン行がアクセスされるときには、現在バイトがコンテキ
スト・バイトになる。このコンテキスト・バイトの値が
既にキャッシュのアドレスであるときには、新たにキャ
ッシュを生成する必要はない。コンテキスト・バイトの
値が新たなものであるときには、コンテキスト・バイト
をそのアドレスとして、新たなキャッシュが設定され
る。初期化時に全てのキャッシュが設定されている場合
には、出現し得るコンテキスト・バイトの値毎に1つの
キャッシュが存在するので、新たにキャッシュが要求さ
れることはない。
導入された。この議論でコンテキスト値を構成するもの
は、現在ラインの直上のラスタ・スキャン・ラインから
のデータ・セグメントの値である。このコンテキスト値
はキャッシュのアドレスとして用いられた。このコンテ
キスト値は先にデコードされたいくつかのデータ・セグ
メントの組み合せから形成することもできる。そのよう
にした場合の利点は、コンテキストを大きくすると、現
在のデータ・セグメントをコード化するための最も性能
の良いキャッシュを選択するより良い手段を提供できる
ことがあるという点である。このコンセプトの1つの具
体的な実現形態では、現在データ・セグメントのすぐ上
のデータ・セグメントだけではなく、図14に示されて
いるように、現在のデータ・セグメントのすぐ上のもの
の左側にあるデータ・セグメントを使用する。これら2
個のデータ・セグメントを組み合わせてコンテキスト値
にする1つのやり方は、現在データ・セグメントのすぐ
上のものの左側にあるデータ・セグメントから取り出し
た2つのビットを、現在データ・セグメントのすぐ上の
データ・セグメントの左側へ付加することである。図1
4で“A”なるラベルが付されたバイトは現在データ・
セグメントである。“B”及び“C”なるラベルが付さ
れたバイトはコンテキスト値を形成するために用いられ
るデータ・セグメントである。コンテキスト値は、デー
タ・セグメントBのビット1及び2をデータ・セグメン
トCのビット1ないし8に連結することによって発生で
き、これによって10ビット・データのコンテキスト値
が得られる。
続を設けるという犠牲を払ってデコード/伸長手続の複
雑性を減少させることが望まれる。間接的キャッシュ管
理を用いることにより、デコード手続の一部をコード化
手続に移管することができる。LRUキャッシュの場合
には、新たに受信されたデータ・バイトがキャッシュ内
に既に記憶されていることが発見される限り、キャッシ
ュ内の値が変化することはなく、再配置が行われるだけ
であるという事実により、この手続の一部の移管が可能
にされる。LRUキャッシュ内の値のセットが変化する
唯一の時点は、新たなデータ・バイトとキャッシュ内に
既にストアされているバイトとの間に一致が見出されな
い場合だけである。間接的キャッシュ管理においては、
エンコーダを用いて複雑さを増すという犠牲を払って、
LRUキャッシュを維持するために必要な値の再配置を
デコーダがしなくても良いようにしている。
なわちキャッシュ・メモリ120内のポインタ・リスト
及びキャッシュ・メモリ122内のバイト値リスト、を
維持・管理するためのコード化手続ができるようにする
一対のキャッシュ・メモリ120及び122が示されて
いる。ポインタ・リストには、値リスト内のエントリへ
のポインタつまりインデクスが含まれている。新たに受
信されたバイトとキャッシュ・メモリ122内のバイト
値リストに既に記憶されているバイトとの間で一致が見
出されたときには、キャッシュ・メモリ120内のポイ
ンタ・リスト中のポインタはLRU方式で再配置され
る。新たな値がキャッシュ・メモリに入力されておら
ず、また古い値がキャッシュ・メモリから取り除かれて
いないため、値リスト内の値は再配置を必要としない。
(新たなバイトとキャッシュ・メモリ122内に既にス
トアされているバイトとの間で)一致するものがあるこ
とがわかると、エンコーダからそれに対応するポインタ
値が発せられる(すなわち、エンコーダは、受信された
バイトに対応するキャッシュ・メモリ122内の値エン
トリを指示する)。
のが見出されないときには、値リスト及びポインタ・リ
ストは修正されねばならない。キャッシュ・メモリ12
2内の値リスト内で最も長い間使用されなかった値が取
り除かれる。この操作は、キャッシュ・メモリ122内
の値リスト位置のうちの、キャッシュ・メモリ120内
にある最も長い間使用されなかったものを示すポインタ
(LRUポインタ)が指している位置に現在バイト値を
置くことによって達成される。次に、キャッシュ・メモ
リ120内のポインタは、キャッシュ・メモリ122内
の新たな値の順序を反映するように更新される。この新
たに入力された現在値は、キャッシュ・メモリ120内
にある最も最近使用されたものを示すポインタ(MRU
ポインタ)によって指し示される。この場合、エンコー
ダは一致がなかったことを知らせる特別なコード・ワー
ドを発し、次に実際のバイト値及び(デコーダ中の)値
リスト中のこの実際のバイト値が挿入されるべき位置へ
のポインタをその後に供給する。
シュ・メモリ120におけるポインタ・リストのエント
リは、最も最近使用されたもの(MRU)から最も長い
間使用されなかったもの(LRU)への順序で配置され
る。かくして、キャッシュ・メモリ122内の値リスト
中のバイト値の位置に係わらず、ポインタ・リスト内の
ポインタの位置から、最も最近使用されたバイト値が値
リスト内のどこにあるかがわかり、またこのバイト値以
外のストアされているバイト値についてのMRU以降の
全ての使用レベルがわかる。
く、値リストだけが維持・管理される。コード・ワード
(例えばポインタ値)がデコードされると、値リスト中
の指し示された位置から読み出した値が出力される。
「発見せず」というコード・ワードを受信した場合に
は、ポインタ及びその値が入力ストリームから導出され
て、この値がデコーダ内の値リスト中の指し示された位
置に置かれる。
のコード化(圧縮)のための手続について説明する。図
10の各ブロックの動作は以下の通りである: 130:圧縮されていない次のデータ値を獲得 132:キャッシュ値が一致したか? 134:その位置を表す値リスト・ポインタ・コード・
ワードを出力 136:キャッシュを適応させる 138:「発見せず」を示すコード・ワードを出力 140:データ値を出力 142:値リストのLRU位置を示すインデクス・コー
ド・ワードを出力 144:この新たなデータを値リストのLRU値位置に
挿入しキャッシュを適応させる 新たなデータ値が与えられると(ブロック130)と、
この値が値リストを含むキャッシュ・メモリ122内に
既に記憶されている値と一致するかどうかの判定がなさ
れる(ブロック132)。判定結果がyesであるとき
には、値リスト中で一致した値がどこにあるかを示すポ
インタ値をポインタ・リストから出力する(ブロック1
34)。次に、値リスト内の最も最近使用されたバイト
値を適正に指示するように、ポインタ・リスト内のポイ
ンタを適応させる。
きには(判定ブロック132)、「発見せず」のコード
・ワードを出力し(ブロック138)、それとともに、
値スト中で一致するものが発見されなかったデータ値も
出力する(ブロック140)。これに加えて、値リスト
中で最も長い間使用されていなかった値を指示するポイ
ンタ値も出力する。かくして、新たなデータ値が値リス
ト内の最も長い間使用されていなかった値の位置に挿入
され、その中に以前からストアされていた値は取り除か
れる。次に、次に続く圧縮されていないデータ値を取得
するため、この手続はその最初に戻る。
11の各ブロックの動作は以下の通りである: 150:圧縮されている次のコード・ワードを獲得 152:ポインタ・コード・ワードか? 154:ポインタ位置の値を出力 156:データ値を獲得して出力 158:置換え値リスト・インデクス位置を獲得 160:この新たなデータ値を指定された値リスト・ポ
インタ位置に挿入 この手続では、最初に、圧縮されている次のコード・ワ
ードをアクセスする(ブロック150)。このコード・
ワードがポインタであることがわかった場合には(判定
ブロック152)、対応する値リスト中のそのポインタ
が「指し示している」値を出力する(ブロック15
4)。コード・ワードがポインタ値ではないことがわか
った場合には(判定ブロック152)、受信されたデー
タ値をアクセスする(ブロック156)。この際、置換
えポインタ値も獲得する(ブロック158)。次に、新
たなデータ値を値リスト中のこのポインタで指し示され
ている位置に挿入する。既にそこにある値は廃棄される
(ブロック160)。処理すべき更に別の圧縮されたコ
ード・ワードがなくなるまで、この手続を繰り返す。こ
こで、間接的キャッシュ管理と階層化キャッシュ管理を
組み合わせて双方の技術に固有の長所を得ることができ
るということを理解すべきである。
データをコーディングするものとして示されている。あ
る種のディザーをかけたイメージ・データのように、別
の周期性、すなわち6ビット、10ビット等、のあるデ
ータであるときには、このようなデータをイメージ・デ
ータの周期性に一致したビット長の単位に分解してもよ
い。
がキャッシュ中に入っているかどうかを判定するために
は、この値をこのキャッシュ内にストアされている全て
の値と比較しなければならないことである。この比較手
続は、特定の値がキャッシュ内に存在するかどうかにつ
いてのフラグを含むルック・アップ・テーブルを維持・
管理することによって回避することができる(図12の
ルック・アップ・テーブル170を参照)。ルック・ア
ップ・テーブルは可能な全ての値を含まなければならな
い。この手続は更に、この値がキャッシュ内に存在する
ときには、その位置がキャッシュ内で判定されねばなら
ないということも必要とされる。
に確実に同期がとられるように、エンコーダとデコーダ
の双方におけるキャッシュは同じ初期状態でなければな
らない。エンコーダがある程度複雑化するという犠牲を
払って、デコーダのこの初期化を行わないようにでき
る。エンコーダは、(図13のキャッシュ・メモリ18
0で示すように)全てのキャッシュ・エントリフラグを
関連付けることができるさせる。このフラグは対応する
キャッシュ・エントリが定義済みでないあるいは定義済
みの値を持っているか否かを示す。定義済みの値とは、
キャッシュ・エントリが処理されているイメージからの
実際のデータ・バイト値を表している値である。エンコ
ーダは、ある値を定義済みでないキャッシュ値を有する
エントリとの比較が絶対に起こらないようにすることが
できる。デコーダが初期化されていない値を使用するこ
とはないので、デコーダがこれらのフラグを維持・管理
する必要はない。それというのも、エンコーダが初期化
されていない値を使用するようにデコーダに対して指示
することがないからである。
用した本発明の一実施例の動作を示す。その第1の層に
は一つの割り当てられた値を持っており、第2の層は3
つの値を持っている。コード・ワード(ビット・シーケ
ンス)は次のように割り当てられる。 1 = 第1の層の予測が正しい 000 = 第2の層の1番目の値の予測が正しい 001 = 第2の層の2番目の値の予測が正しい 010 = 第2の層の3番目の値の予測が正しい 011 = 訂正値が必要 キャッシュは次の条件で開始される。
な置換は、簡単なラウンド・ロビン方式で実行される。
変数"reple_index"が定義され、その初期値は1に設定
される。置換が要求されたとき、この変数により、第2
レベルのキャッシュ中のいずれのエントリが置換される
かが決定される。置換が実行された後、変数"reple_ind
ex"がインクリメントされる。変数"reple_index"の値が
4に到達すると、その値は1にリセットされる。
ムは、バイトの系列で構成されている。
レースしている。キャッシュの状態は、現在の入力値が
処理された後のものを示している。
るだけであるということを理解しなければならない。当
業者であれば、本発明から逸脱することなく、種々の代
替及び修正を案出することができるであろう。従って、
本発明は特許請求の範囲の記載の範囲内で、全てのこの
ような代替、修正及び変形を包含するように意図されて
いる。
単な手順でキャッシュ・ベースのデータ圧縮/伸長を行
うことができる。
についての先行技術を説明する図。
ってデータ・セグメントをコーディングするための、先
行技術によるプロセスを説明するフローチャート。
ってデータ・セグメントをデコードするための、先行技
術によるプロセスを説明するフローチャート。
ック図。
をコード化するためのプロセスを例示する、キャッシュ
の状態を概略的に表示する図。
もののアドレスとして採用されるコンテキスト・データ
・セグメントを説明する図。
を説明するフローチャート。
データをデコードするための伸長手続を説明する図。
ために用いられる2個のキャッシュ・メモリを説明する
図。
ってキャッシュの間接管理を行うための圧縮手続を説明
するフローチャート。
れたデータ・セグメントをデコードするための伸長手続
を説明するフローチャート。
されているかどうかを指示するルック・アップ・テーブ
ルを説明する図。
ない状態かを指示する、各記憶位置に関連付けられたフ
ラグを有するエンコーダ・キャッシュ・構成を説明する
図。
は別の配置を示す図。
Claims (8)
- 【請求項1】以下の(a)ないし(d)を設けたデータ圧縮シ
ステム: (a)複数のレベルを有する第1のキャッシュ・メモリ手
段:第1の前記レベルは最も最近使用されたデータ・セ
グメントに割り当てられ、第2の前記レベルは最も最近
使用されたものではないデータ・セグメントに割り当て
られる; (b)受信したデータ・セグメントが前記第1のキャッシ
ュ・メモリ手段中にあるか否かを判定する手段:前記受
信したデータ・セグメントが前記第1のキャッシュ・メ
モリ手段中になかった場合には、前記受信したデータ・
セグメントを前記第1のレベルに割り当てられていた以
前に受信していたデータ・セグメントに代えてそこに割
り当て、前記以前に受信していたデータ・セグメントを
最も最近使用されたものではないデータ・セグメントに
代えて前記第2のレベルの中の1つの位置に割り当て、
前記代えられる最も最近使用されたものではないデータ
セグメントは前記第2のレベルに割り当てられている最
も最近使用されたものではないデータ・セグメントの中
から疑似ランダム方法によって選択される; (c)前記第1のキャッシュ・メモリ手段中にはなかった
旨の表示及び前記受信したデータ・セグメントを圧縮さ
れない形式で受信手段に送出する手段; (d)受信したデータ・セグメントが前記第1のキャッシ
ュ・メモリ手段中にある旨の判定に応答して、前記送出
手段をして、前記受信手段に対して、前記第1のキャッ
シュ・メモリ手段中のどこに前記受信したデータ・セグ
メントが割り当てられているかを指示する位置コードを
送出させる手段。 - 【請求項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】以下のステップ(a)ないし(f)を設け、ラス
タ・スキャン表現の2レベルのデータを複数のキャッシ
ュ記憶を使用して圧縮し、各キャッシュ記憶は前記ラス
タ・スキャン表現からの複数のデータ・セグメントを使
用状況の階層に基づいてストアするデータ圧縮方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
ッシュ記憶の各々に割り当てる:前記キャッシュコンテ
キスト識別子の各々は前記ラスタ・スキャン表現の1つ
のスキャン行中のデータ・セグメントに関連する値を有
する; (b)前記1つのスキャン行の次のスキャン行に含まれて
いる現データ・セグメントにアクセスする:前記現デー
タ・セグメントの各々は前記1つのスキャン行中のコン
テキスト・データ・セグメントに位置的に整列してい
る; (c)前記現データ・セグメントの各々を位置的に整列し
ているコンテキスト・データ・セグメントと同じ値が割
り当てられたキャッシュ記憶中に含まれるデータ・セグ
メントと比較する; (d)前記現データ・セグメントがキャッシュ記憶中にあ
った場合には当該キャッシュ記憶中の識別子位置を送出
し、もし前記現データ・セグメントが前記キャッシュ記
憶中になかった場合には見つからなかった旨の識別子及
び前記現データ・セグメントを送出する; (e)現データセグメントが前記次のスキャン行中に含ま
れ、次回のデータ・セグメントのスキャン行についての
コンテキスト・データ・セグメントになるようにする; (f)他のどのキャッシュ記憶にも新たなコンテキスト・
セグメント値が割り当てられていない場合には前記新た
なコンテキスト・セグメント値を新たなキャッシュ記憶
に割り当て、処理すべきスキャン行がそれ以上なくなる
までステップ(b)ないしステップ(f)を繰り返す。 - 【請求項4】以下のステップ(a)ないし(h)を設け、ラス
タ・スキャン表現の2レベルのデータを複数のキャッシ
ュ記憶を使用して圧縮し、各キャッシュ記憶は前記ラス
タ・スキャン表現からの複数のデータ・セグメントを使
用状況の階層に基づいてストアし、更に前記圧縮された
データを伸長するデータ圧縮/伸長方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
ッシュ記憶の各々に割り当てる:前記キャッシュコンテ
キスト識別子の各々は前記ラスタ・スキャン表現の1つ
のスキャン行中のデータ・セグメントに関連する値を有
する; (b)前記1つのスキャン行の次のスキャン行に含まれて
いる現データ・セグメントにアクセスする:前記現デー
タ・セグメントの各々は前記1つのスキャン行中のコン
テキスト・データ・セグメントに位置的に整列してい
る; (c)前記現データ・セグメントの各々を位置的に整列し
ているコンテキスト・データ・セグメントと同じ値が割
り当てられたキャッシュ記憶中に含まれるデータ・セグ
メントと比較する; (d)前記現データ・セグメントがキャッシュ記憶中にあ
った場合には当該キャッシュ記憶中の識別子位置を送出
し、もし前記現データ・セグメントが前記キャッシュ記
憶中になかった場合には見つからなかった旨の識別子及
び前記現データ・セグメントを送出する; (e)現データセグメントが前記次のスキャン行中に含ま
れ、次回のデータ・セグメントのスキャン行についての
コンテキスト・データ・セグメントになるようにする; (f)他のどのキャッシュ記憶にも新たなコンテキスト・
セグメント値が割り当てられていない場合には前記新た
なコンテキスト・セグメント値を新たなキャッシュ記憶
に割り当て、処理すべきスキャン行がそれ以上なくなる
までステップ(b)ないしステップ(f)を繰り返す; (g)複数のキャッシュ記憶を確立する:前記確立された
キャッシュ記憶の各々は前記ラスタ・スキャン表現の第
1のスキャン行中のデータ・セグメント値に関連する値
を持つ割り当てられたコンテキスト識別子を有する; (h)伸長された選考スキャン行中のコンテキスト識別子
に基づいてキャッシュ記憶を選択し、前記選択されたキ
ャッシュ記憶中の前記位置識別子によって指示される位
置内容から、前記位置に割り当てられたデータ・セグメ
ントが何であるかを判定することによって、受信した位
置識別子を伸長する。 - 【請求項5】以下のステップ(a)ないし(f)を設け、デー
タ・セグメントのストリームを複数のキャッシュ記憶を
使用して圧縮し、各キャッシュ記憶は前記データ・スト
リームからの複数のデータ・セグメントを使用状況の階
層に基づいてストアするデータ圧縮方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
ッシュ記憶の各々に割り当てる:前記キャッシュコンテ
キスト識別子の各々は前記データ・ストリーム中の以前
に与えられたコンテキスト・データ・セグメント関連付
けられた値を持っている; (b)コンテキスト・データ・セグメントとの間で予め定
められた一時的な関係を有している現データ・セグメン
トにアクセスする; (c)前記現データ・セグメントをコンテキスト・データ
・セグメントに等しい値のキャッシュ識別子が割り当て
られているキャッシュ記憶中に負儒まれ手いるデータ・
セグメントと比較するが、前記割り当てられたキャッシ
ュ識別子を持っているキャッシュ記憶が存在しない場合
には前記キャッシュ識別子を持ったキャッシュ記憶を作
る; (d)前記現データ・セグメントがキャッシュ記憶中にあ
った場合には前記キャッシュ記憶のデータ・セグメント
の位置識別子を送出し、前記現データ・セグメントが前
記キャッシュ記憶中になかった場合には見つからなかっ
た旨の識別子及び前記現データ・セグメントを送出す
る; (e)現データセグメントが以降の現データ・セグメント
に対しての新たなコンテキスト・データ・セグメントに
なるようにする; (f)他のどのキャッシュ記憶にも前記新たなコンテキス
ト・セグメント値が割り当てられていない場合には前記
新たなコンテキスト・セグメント値を新たなキャッシュ
記憶に割り当て、処理すべきデータ・セグメントがそれ
以上なくなるまでステップ(b)ないしステップ(f)を繰り
返す。 - 【請求項6】以下のステップ(a)ないし(f)を設け、ラス
タ・スキャン表現の2レベルのデータを複数のキャッシ
ュ記憶を使用して圧縮し、各キャッシュ記憶は前記ラス
タ・スキャン表現からの複数のデータ・セグメントを使
用状況の階層に基づいてストアするデータ圧縮方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
ッシュ記憶の各々に割り当てる:前記キャッシュ記憶の
個数は前記データ・セグメントが何通りの値を取り得る
かに等しく、各キャッシュ・コンテキスト識別子はデー
タ・セグメントの取り得る値と等しい値を持っている; (b)第1のスキャン行の次のスキャン行に含まれている
現データ・セグメントにアクセスする:前記現データ・
セグメントの各々は前記第1のスキャン行中のコンテキ
スト・データ・セグメントに位置的に整列している; (c)前記現データ・セグメントの各々を位置的に整列し
ているコンテキスト・データ・セグメントと同じ値が割
り当てられたキャッシュ記憶中に含まれるデータ・セグ
メントと比較する; (d)前記キャッシュ記憶中で見出されたデータ・セグメ
ントの識別子位置を送出し、もし前記現データ・セグメ
ントが前記キャッシュ記憶中になかった場合には見つか
らなかった旨の識別子及び前記現データ・セグメントを
送出する; (e)前記次のスキャン行に含まれる現データセグメント
が次のスキャン行のデータ・セグメントのコンテキスト
・データ・セグメントになるようにする; (f)処理すべきスキャン行がそれ以上なくなるまでステ
ップ(b)ないしステップ(f)を繰り返す。 - 【請求項7】以下のステップ(a)ないし(f)を設け、デー
タ・セグメントのストリームを複数のキャッシュ記憶を
使用して圧縮し、各キャッシュ記憶は前記データ・スト
リームからの複数のデータ・セグメントを使用状況の階
層に基づいてストアするデータ圧縮方法: (a)キャッシュ・コンテキスト識別子を前記複数のキャ
ッシュ記憶の各々に割り当てる:前記キャッシュ記憶の
個数は前記データ・セグメントが何通りの値を取り得る
かに等しく、各キャッシュ・コンテキスト識別子はデー
タ・セグメントの取り得る値と等しい値を持っている; (b)コンテキスト・データ・セグメントとの間で予め定
められた一時的な関係を有している現データ・セグメン
トにアクセスする; (c)前記現データ・セグメントをコンテキスト・データ
・セグメントに等しい値のキャッシュ識別子が割り当て
られているキャッシュ記憶中に負儒まれ手いるデータ・
セグメントと比較する; (d)前記キャッシュ記憶中で見出されたデータ・セグメ
ントの識別子位置を送出し、もし前記現データ・セグメ
ントが前記キャッシュ記憶中になかった場合には見つか
らなかった旨の識別子及び前記現データ・セグメントを
送出する; (e)処理すべきデータ・セグメントがそれ以上なくなる
までステップ(b)ないしステップ(f)を繰り返す。 - 【請求項8】以下の(a)ないし(c)を設けたデータ圧縮シ
ステム: (a)複数のメモリ位置に複数のデータ・セグメントをス
トアする第1のキャッシュ・メモリ手段:前記位置は位
置識別子を有する; (b)複数のレベルを有する第2のキャッシュ・メモリ手
段:前記レベルのうちの第1のレベルは最も最近使用さ
れたデータ・セグメントについての位置識別子を含み、
前記位置識別子は前記第1のキャッシュ・メモリ手段中
のどこに前記最も最近使用されたデータ・セグメントが
存在し、前記レベルのうちのそれ以外のレベルは前記第
1のキャッシュ・メモリ手段中のどこに前記最も最近使
用されたデータ・セグメントよりも長い間アクセスされ
ていないデータ・セグメントが存在するかを示す位置識
別子を含む; (c)受信したデータ・セグメントが前記第1のキャッシ
ュ・メモリ中に見つかったか否かを判定し、もし見つか
った場合には前記第1のキャッシュ・メモリ手段中で前
記受信されたデータ・セグメントをストアしている位置
を示す前記位置識別子を前記第2のキャッシュ・メモリ
手段から得て受信手段へ送出する。
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)
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)
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)
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 |
-
1992
- 1992-10-19 US US07/963,201 patent/US5450562A/en not_active Expired - Lifetime
-
1993
- 1993-10-04 EP EP93116015A patent/EP0593968B1/en not_active Expired - Lifetime
- 1993-10-04 DE DE69328855T patent/DE69328855T2/de not_active Expired - Fee Related
- 1993-10-04 EP EP98113104A patent/EP0880100A3/en not_active Withdrawn
- 1993-10-04 SG SG1996001806A patent/SG75758A1/en unknown
- 1993-10-18 KR KR1019930021597A patent/KR100319657B1/ko not_active IP Right Cessation
- 1993-10-18 JP JP28397693A patent/JP3499903B2/ja not_active Expired - Fee Related
Cited By (3)
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 |