JP2581903B2 - バイト整列式データ圧縮方法及び装置 - Google Patents
バイト整列式データ圧縮方法及び装置Info
- Publication number
- JP2581903B2 JP2581903B2 JP6256356A JP25635694A JP2581903B2 JP 2581903 B2 JP2581903 B2 JP 2581903B2 JP 6256356 A JP6256356 A JP 6256356A JP 25635694 A JP25635694 A JP 25635694A JP 2581903 B2 JP2581903 B2 JP 2581903B2
- Authority
- JP
- Japan
- Prior art keywords
- bytes
- byte
- gap
- bit
- group
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 52
- 238000013144 data compression Methods 0.000 title claims description 3
- 230000004044 response Effects 0.000 claims 3
- 238000007906 compression Methods 0.000 description 24
- 230000006835 compression Effects 0.000 description 24
- 239000013598 vector Substances 0.000 description 24
- 238000010586 diagram Methods 0.000 description 7
- 238000009826 distribution Methods 0.000 description 6
- 238000004581 coalescence Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
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)
Description
【0001】
【産業上の利用分野】本発明は一般にコンピュータシス
テムに係り、より詳細には、コンピュータシステムのメ
モリに記憶されるデータを圧縮する方法及び装置に係
る。
テムに係り、より詳細には、コンピュータシステムのメ
モリに記憶されるデータを圧縮する方法及び装置に係
る。
【0002】
【従来の技術】コンピュータシステムにおいては、デー
タをよりコンパクトなフォーマットに圧縮することによ
り、データを記憶するのに必要な物理的なスペースの量
を減少できることが知られている。更に、付加的な利点
として、圧縮されたデータは、圧縮されないデータより
も一般に短い時間で処理できる。例えば、圧縮されたデ
ータがあるコンピュータシステムから別のコンピュータ
システムへ通信されるときには、より少ないビットが処
理される。大きなデータベースや、グラフィック像や、
全テキスト反転ファイルに対してはしばしばデータ圧縮
が使用される。
タをよりコンパクトなフォーマットに圧縮することによ
り、データを記憶するのに必要な物理的なスペースの量
を減少できることが知られている。更に、付加的な利点
として、圧縮されたデータは、圧縮されないデータより
も一般に短い時間で処理できる。例えば、圧縮されたデ
ータがあるコンピュータシステムから別のコンピュータ
システムへ通信されるときには、より少ないビットが処
理される。大きなデータベースや、グラフィック像や、
全テキスト反転ファイルに対してはしばしばデータ圧縮
が使用される。
【0003】整数ベクトルに対して時々使用される1つ
の形式の圧縮は、「ビットマップ」エンコードである。
このビットマップエンコードでは、ベクトルの各整数が
ビットマップにおいて単一のビットで表される。ビット
マップのビット位置における論理「1」は、整数の存在
を表し、そして論理「0」は、整数の不存在を表す。こ
れは、スペースを相当に減少するだけでなく、処理中の
時間も節約する。というのは、ビットマップの代表的な
ビットを直接アクセスしそして操作することができるか
らである。
の形式の圧縮は、「ビットマップ」エンコードである。
このビットマップエンコードでは、ベクトルの各整数が
ビットマップにおいて単一のビットで表される。ビット
マップのビット位置における論理「1」は、整数の存在
を表し、そして論理「0」は、整数の不存在を表す。こ
れは、スペースを相当に減少するだけでなく、処理中の
時間も節約する。というのは、ビットマップの代表的な
ビットを直接アクセスしそして操作することができるか
らである。
【0004】ビットマップは、密ベクトルの圧縮につい
ては、スペース及び時間利用効率が比較的高い。密ベク
トルとは、比較的多数の整数が集まったベクトルであ
る。しかしながら、ビットマップは、疎ベクトル又は密
度がスキューしたベクトルについては、スペース及び時
間のロスを被る。疎ベクトルを表すビットマップにおい
ては、論理0以外の何ももたないビットシーケンスにお
いてビットマップスペースの大部分が浪費される。
ては、スペース及び時間利用効率が比較的高い。密ベク
トルとは、比較的多数の整数が集まったベクトルであ
る。しかしながら、ビットマップは、疎ベクトル又は密
度がスキューしたベクトルについては、スペース及び時
間のロスを被る。疎ベクトルを表すビットマップにおい
ては、論理0以外の何ももたないビットシーケンスにお
いてビットマップスペースの大部分が浪費される。
【0005】いかなる形式の系統的なビット分布も欠乏
しているベクトルについては、「ビット方式(bit-wis
e)」圧縮が時々使用される。このビット方式圧縮は、非
常に大きなベクトルの場合はベクトルにおける連続する
整数間の差が通常は小さいことからスペースの減少を引
き出す。従って、連続する整数間の差における有効ビッ
トの数を、整数自体よりもコンパクトにエンコードする
ことができる。各々の差は、「プレフィックス」ビット
ストリング及びそれに続く「サフィックス」ビットスト
リングとしてエンコードされる。プレフィックスビット
ストリングは、サフィックスにおけるビットの数をエン
コードし、そしてサフィックスビットストリングは、差
の全ての有効ビットをエンコードする。次々の差をエン
コードするビット方式圧縮は、デルタ圧縮としても知ら
れている。
しているベクトルについては、「ビット方式(bit-wis
e)」圧縮が時々使用される。このビット方式圧縮は、非
常に大きなベクトルの場合はベクトルにおける連続する
整数間の差が通常は小さいことからスペースの減少を引
き出す。従って、連続する整数間の差における有効ビッ
トの数を、整数自体よりもコンパクトにエンコードする
ことができる。各々の差は、「プレフィックス」ビット
ストリング及びそれに続く「サフィックス」ビットスト
リングとしてエンコードされる。プレフィックスビット
ストリングは、サフィックスにおけるビットの数をエン
コードし、そしてサフィックスビットストリングは、差
の全ての有効ビットをエンコードする。次々の差をエン
コードするビット方式圧縮は、デルタ圧縮としても知ら
れている。
【0006】ビット方式圧縮は、圧縮データのいかなる
形式の分布についても理論的限界の近くまで圧縮を行
う。しかしながら、ビット方式で圧縮されたデータは、
データの圧縮表示を、AND、OR及びXOR(排他的
オア)等の論理演算子によって一般的に直接操作するこ
とができないので、問題がある。それ故、ビット方式圧
縮は、一般に、論理演算を行うために時間のかかるエン
コード及びデコード動作を必要とし、これは、ビット方
式圧縮を、論理的に操作されるデータに対してあまり適
当でないものにする。
形式の分布についても理論的限界の近くまで圧縮を行
う。しかしながら、ビット方式で圧縮されたデータは、
データの圧縮表示を、AND、OR及びXOR(排他的
オア)等の論理演算子によって一般的に直接操作するこ
とができないので、問題がある。それ故、ビット方式圧
縮は、一般に、論理演算を行うために時間のかかるエン
コード及びデコード動作を必要とし、これは、ビット方
式圧縮を、論理的に操作されるデータに対してあまり適
当でないものにする。
【0007】更に、ビット方式圧縮は、ビットストリン
グを操作するのに用いられる論理回路及びデータ路に常
に適合するものでない種々のサイズのビットストリング
を使用する。例えば、デジタルコンピュータは、一般
に、固定サイズのバイトに編成されたビットに基づいて
動作するように設計される。従って、ビット方式の圧縮
は、操作容易なバイト境界に沿ってプレフィックス及び
サフィックスストリングを整列状態に保持するためにス
ペースを浪費しなければならないか、又はプレフィック
ス及びサフィックスの可変ビット長さを操作可能なバイ
トへ分解するために時間が浪費されるかのいずれかであ
る。
グを操作するのに用いられる論理回路及びデータ路に常
に適合するものでない種々のサイズのビットストリング
を使用する。例えば、デジタルコンピュータは、一般
に、固定サイズのバイトに編成されたビットに基づいて
動作するように設計される。従って、ビット方式の圧縮
は、操作容易なバイト境界に沿ってプレフィックス及び
サフィックスストリングを整列状態に保持するためにス
ペースを浪費しなければならないか、又はプレフィック
ス及びサフィックスの可変ビット長さを操作可能なバイ
トへ分解するために時間が浪費されるかのいずれかであ
る。
【0008】
【発明が解決しようとする課題】以上のことを考慮する
と、データの内容に係わりなくデータを圧縮する圧縮技
術が要望されていることは明らかである。更に、圧縮さ
れたデータに基づく論理演算を、データを完全に圧縮解
除しなくても行えることも要望される。
と、データの内容に係わりなくデータを圧縮する圧縮技
術が要望されていることは明らかである。更に、圧縮さ
れたデータに基づく論理演算を、データを完全に圧縮解
除しなくても行えることも要望される。
【0009】
【課題を解決するための手段】本発明は、データ記憶の
必要性を低減し且つ処理性能を向上するようにして高い
エンコード及びデコード効率を得るように任意のビット
マップで表されたソースデータを圧縮する方法及び装置
を提供する。本発明は、大きなデータベースを処理する
コンピュータシステムであって、データベースに基づく
多数のアクセス及び論理演算が頻繁に生じるようなコン
ピュータシステムに特に適用できる。
必要性を低減し且つ処理性能を向上するようにして高い
エンコード及びデコード効率を得るように任意のビット
マップで表されたソースデータを圧縮する方法及び装置
を提供する。本発明は、大きなデータベースを処理する
コンピュータシステムであって、データベースに基づく
多数のアクセス及び論理演算が頻繁に生じるようなコン
ピュータシステムに特に適用できる。
【0010】広い意味において、本発明は、コンピュー
タシステムのハードウェア特徴と、ソースデータに存在
する空間的関係の利点を取り入れたデータ構造を提供す
る。更に、本発明は、コンピュータシステムの特徴及び
ソースデータの関係に対して最適化されたエンコード及
びデコード技術を使用する。
タシステムのハードウェア特徴と、ソースデータに存在
する空間的関係の利点を取り入れたデータ構造を提供す
る。更に、本発明は、コンピュータシステムの特徴及び
ソースデータの関係に対して最適化されたエンコード及
びデコード技術を使用する。
【0011】本発明の1つの特徴において、圧縮データ
をエンコードし、デコードしそして操作するための量子
は、均一サイズのバイトである。即ち、ビットマップの
ビットは、コンピュータシステムのハードウェア特徴に
便利なそしてそれに適合する境界に整列されたバイトサ
イズ部分へと編成される。例えば、ビットマップの各バ
イトサイズ部分は、8個のビットを含む。
をエンコードし、デコードしそして操作するための量子
は、均一サイズのバイトである。即ち、ビットマップの
ビットは、コンピュータシステムのハードウェア特徴に
便利なそしてそれに適合する境界に整列されたバイトサ
イズ部分へと編成される。例えば、ビットマップの各バ
イトサイズ部分は、8個のビットを含む。
【0012】ソース又は入力ビットマップをバイトの出
力圧縮原子(アトム)シーケンスへとエンコードするた
めに、次のような一般的な原理が遵守される。編成され
たバイト各々は、1つのバイトの全てのビットが同じ論
理値を記憶する場合には「ギャップバイト」(GBYT
E)として分類され、さもなくば、バイトは、非ギャッ
プ即ち「マップバイト」(MBYTE)として分類され
る。更に、ギャップバイトは、全て0を記憶するか又は
全て1を記憶するかのいずれかとして分類できる。マッ
プバイトは、更に、1つを除く全てのビットがその手前
の隣接するギャップバイトと同じ値を記憶する場合は
「オフセット」バイトとして分類できる。即ち、オフセ
ットバイトは、その直前のギャップバイトのビットとは
厳密に1ビット異なる。
力圧縮原子(アトム)シーケンスへとエンコードするた
めに、次のような一般的な原理が遵守される。編成され
たバイト各々は、1つのバイトの全てのビットが同じ論
理値を記憶する場合には「ギャップバイト」(GBYT
E)として分類され、さもなくば、バイトは、非ギャッ
プ即ち「マップバイト」(MBYTE)として分類され
る。更に、ギャップバイトは、全て0を記憶するか又は
全て1を記憶するかのいずれかとして分類できる。マッ
プバイトは、更に、1つを除く全てのビットがその手前
の隣接するギャップバイトと同じ値を記憶する場合は
「オフセット」バイトとして分類できる。即ち、オフセ
ットバイトは、その直前のギャップバイトのビットとは
厳密に1ビット異なる。
【0013】同じクラスの隣接して分類されたバイトは
グループ編成にされ、そして各グループのビット数がカ
ウントされる。次いで、バイトの行き先即ち出力原子
(アトム)シーケンスにおいて、分類されグループ編成
にされた入力ビットマップのバイトは、次のようにエン
コードされる。ギャップバイトの各グループに対して、
原子シーケンスにおける各グループ内のビット数を表す
第1ビットシーケンスを記憶する。又、そのグループが
0を記憶するか1を記憶するかを指示するためのフラグ
も記憶する。
グループ編成にされ、そして各グループのビット数がカ
ウントされる。次いで、バイトの行き先即ち出力原子
(アトム)シーケンスにおいて、分類されグループ編成
にされた入力ビットマップのバイトは、次のようにエン
コードされる。ギャップバイトの各グループに対して、
原子シーケンスにおける各グループ内のビット数を表す
第1ビットシーケンスを記憶する。又、そのグループが
0を記憶するか1を記憶するかを指示するためのフラグ
も記憶する。
【0014】マップバイトの各グループに対しては、出
力原子シーケンスにおいて、そのグループにおけるビッ
ト数を表す第2ビットシーケンスを記憶すると共に、マ
ップバイトのグループを記憶する。分類されたバイトが
オフセットバイトである場合には、オフセットバイト内
の1つの異なるビットの位置を指示する第3ビットシー
ケンスを原子シーケンスにおいて記憶する。
力原子シーケンスにおいて、そのグループにおけるビッ
ト数を表す第2ビットシーケンスを記憶すると共に、マ
ップバイトのグループを記憶する。分類されたバイトが
オフセットバイトである場合には、オフセットバイト内
の1つの異なるビットの位置を指示する第3ビットシー
ケンスを原子シーケンスにおいて記憶する。
【0015】第1、第2及び第3ビットシーケンスは、
次のように構成された原子へと編成される。エンコード
の各原子は、制御バイト(CBYTE)と、おそらくこ
れに続く1つ以上の「GBYTE」及びおそらく1つ以
上の「MBYTE」とを備えている。制御バイトは、
「TFIELD」、「FFIELD」及び「DFIEL
D」を含む。第1ビットシーケンスは、そのグループに
おけるギャップバイトの数が第1のスレッシュホール
ド、例えば、4より小さい場合に、制御バイトのTFI
ELDに記憶される。さもなくば、第1ビットシーケン
スは、ギャップバイトに記憶される。フラグはFFIE
LDに記憶され、そして第2又は第3のビットシーケン
スは、ギャップバイトの直後にマップバイトが続くかオ
フセットバイトが続くかに基づいてDFIELDに記憶
される。マップバイトに関連した長さは、制御バイトの
DFIELDに記憶され、そしてマップバイトは制御バ
イトに続く。
次のように構成された原子へと編成される。エンコード
の各原子は、制御バイト(CBYTE)と、おそらくこ
れに続く1つ以上の「GBYTE」及びおそらく1つ以
上の「MBYTE」とを備えている。制御バイトは、
「TFIELD」、「FFIELD」及び「DFIEL
D」を含む。第1ビットシーケンスは、そのグループに
おけるギャップバイトの数が第1のスレッシュホール
ド、例えば、4より小さい場合に、制御バイトのTFI
ELDに記憶される。さもなくば、第1ビットシーケン
スは、ギャップバイトに記憶される。フラグはFFIE
LDに記憶され、そして第2又は第3のビットシーケン
スは、ギャップバイトの直後にマップバイトが続くかオ
フセットバイトが続くかに基づいてDFIELDに記憶
される。マップバイトに関連した長さは、制御バイトの
DFIELDに記憶され、そしてマップバイトは制御バ
イトに続く。
【0016】本発明の別の特徴においては、ビットマッ
プは、これをビットごとに走査しそして上記の一般的な
原理に基づいてバイトを分類することにより原子構造体
へとエンコードされる。制御バイト、ギャップバイト及
びマップバイトは、ビットを個々に検査するときにオン
ザフライで(進行中に)発生される。この方法は、各異
なるビットマップに対する原子構造体の独特のシーケン
スを保証し、ビットマップ識別の決定を容易にする。更
に、この方法は、最もコンパクトな原子シーケンスを発
生するように保証される。
プは、これをビットごとに走査しそして上記の一般的な
原理に基づいてバイトを分類することにより原子構造体
へとエンコードされる。制御バイト、ギャップバイト及
びマップバイトは、ビットを個々に検査するときにオン
ザフライで(進行中に)発生される。この方法は、各異
なるビットマップに対する原子構造体の独特のシーケン
スを保証し、ビットマップ識別の決定を容易にする。更
に、この方法は、最もコンパクトな原子シーケンスを発
生するように保証される。
【0017】本発明の更に別の特徴においては、原子シ
ーケンスは、ビットマップを回復するようにデコードさ
れる。圧縮解除方法は、制御バイトを用いて原子シーケ
ンスを走査し、種々のエンコードされたビットシーケン
スをデコードして、ビットマップを発生する。
ーケンスは、ビットマップを回復するようにデコードさ
れる。圧縮解除方法は、制御バイトを用いて原子シーケ
ンスを走査し、種々のエンコードされたビットシーケン
スをデコードして、ビットマップを発生する。
【0018】本発明の更に別の特徴においては、多数の
圧縮されたビットマップがANDやORのような論理演
算を用いることにより合体(マージ)される。この合体
方法は、合体されるべきビットマップを表す原子シーケ
ンスを部分的にデコードし、分解されたバイトに基づい
て必要な論理演算を実行して、合体されたビットマップ
を表す新たな原子シーケンスを発生する。この方法は、
圧縮されたビットマップの論理的操作を、デルタ圧縮で
可能な時間より短い時間で行えるようにする。本発明の
構造及び方法は、像、データベース、又は任意のビット
分布を有する全テキスト反転ファイルを表すビットマッ
プに対して特に適している。
圧縮されたビットマップがANDやORのような論理演
算を用いることにより合体(マージ)される。この合体
方法は、合体されるべきビットマップを表す原子シーケ
ンスを部分的にデコードし、分解されたバイトに基づい
て必要な論理演算を実行して、合体されたビットマップ
を表す新たな原子シーケンスを発生する。この方法は、
圧縮されたビットマップの論理的操作を、デルタ圧縮で
可能な時間より短い時間で行えるようにする。本発明の
構造及び方法は、像、データベース、又は任意のビット
分布を有する全テキスト反転ファイルを表すビットマッ
プに対して特に適している。
【0019】
【実施例】図1は、本発明を使用できるコンピュータシ
ステム1を示している。このコンピュータシステム1
は、中央処理ユニット(CPU)2と、バス4を経て互
いに通信する記憶装置、例えば、メモリ3とを備えるこ
とができる。CPU2は、いかなる形式の従来のデータ
プロセッサでもよく、例えば、メインフレーム、ワーク
ステーション、マイクロプロセッサ、パーソナルコンピ
ュータ等でよい。メモリ3は、データを記憶することの
できる何らかの形式のメモリであり、例えば、半導体揮
発性ランダムアクセスメモリ、レジスタ又は永久ディス
ク記憶装置である。データを記憶するためのスペース及
びデータを処理するための時間は、以下に述べるように
データをよりコンパクトなフォーマットにエンコードす
ることにより減少することができる。
ステム1を示している。このコンピュータシステム1
は、中央処理ユニット(CPU)2と、バス4を経て互
いに通信する記憶装置、例えば、メモリ3とを備えるこ
とができる。CPU2は、いかなる形式の従来のデータ
プロセッサでもよく、例えば、メインフレーム、ワーク
ステーション、マイクロプロセッサ、パーソナルコンピ
ュータ等でよい。メモリ3は、データを記憶することの
できる何らかの形式のメモリであり、例えば、半導体揮
発性ランダムアクセスメモリ、レジスタ又は永久ディス
ク記憶装置である。データを記憶するためのスペース及
びデータを処理するための時間は、以下に述べるように
データをよりコンパクトなフォーマットにエンコードす
ることにより減少することができる。
【0020】図2を参照し、おそらく0ないし455の
範囲の整数を有する上昇順ベクトルを一例として使用し
て本発明の圧縮を説明する。ベクトルの特定の表現は、
整数8、11、19、174、181、189、19
1、450、451、453及び455を含む。11個
の整数ベクトルが32ビット整数として2進形態でメモ
リ3に記憶される場合には、ベクトルは、352(11
x32)ビットを消費する。
範囲の整数を有する上昇順ベクトルを一例として使用し
て本発明の圧縮を説明する。ベクトルの特定の表現は、
整数8、11、19、174、181、189、19
1、450、451、453及び455を含む。11個
の整数ベクトルが32ビット整数として2進形態でメモ
リ3に記憶される場合には、ベクトルは、352(11
x32)ビットを消費する。
【0021】或いは、図2に示すように、整数ベクトル
は、ベクトルの個々の整数を表すために複数のビット2
1を有するビットマップ20として記憶することができ
る。ビット位置の論理「0」は、整数の不存在を表し、
そして論理「1」は、整数の存在を表す。利点として、
ビットマップ20のサイズは、0ないし455の範囲の
付加的な整数がベクトルに追加されても増加しない。ビ
ットマップ20は、整数ベクトル以外のデータシーケン
スを表すことができ、例えば、ビットマップ20は、像
の「オン」及び「オフ」状態のピクセルを表すこともで
きるし、データベースに対する指示を表すこともでき
る。
は、ベクトルの個々の整数を表すために複数のビット2
1を有するビットマップ20として記憶することができ
る。ビット位置の論理「0」は、整数の不存在を表し、
そして論理「1」は、整数の存在を表す。利点として、
ビットマップ20のサイズは、0ないし455の範囲の
付加的な整数がベクトルに追加されても増加しない。ビ
ットマップ20は、整数ベクトル以外のデータシーケン
スを表すことができ、例えば、ビットマップ20は、像
の「オン」及び「オフ」状態のピクセルを表すこともで
きるし、データベースに対する指示を表すこともでき
る。
【0022】ビットマップ20のビット21は、右から
左へと示されている。最も右のビットは整数「0」を表
し、次に左のビットは整数「1」を表し、等々となる。
最も左のビットは整数「455」を表す。ビットマップ
20の16進(hex)等価表示は、2C−0−A02
04−0−80900と書き表される。
左へと示されている。最も右のビットは整数「0」を表
し、次に左のビットは整数「1」を表し、等々となる。
最も左のビットは整数「455」を表す。ビットマップ
20の16進(hex)等価表示は、2C−0−A02
04−0−80900と書き表される。
【0023】表示「−0−」は、ビットマップ20にお
ける「ギャップ」を示すのに使用される。ギャップは、
全て同じ論理値、例えば、全て0を記憶する一連のビッ
ト21として定められる。或いは、全て1のギャップは
「−1−」として表すことができる。
ける「ギャップ」を示すのに使用される。ギャップは、
全て同じ論理値、例えば、全て0を記憶する一連のビッ
ト21として定められる。或いは、全て1のギャップは
「−1−」として表すことができる。
【0024】図2に示したようなビットマップをメモリ
3において物理的なスペースをあまりとらないものに圧
縮するための方法及び構造について説明する。更に、こ
の縮小サイズのデータ構造体は、CPU2により、非圧
縮データに対して考えられる時間より短い時間で論理的
に処理することができる。
3において物理的なスペースをあまりとらないものに圧
縮するための方法及び構造について説明する。更に、こ
の縮小サイズのデータ構造体は、CPU2により、非圧
縮データに対して考えられる時間より短い時間で論理的
に処理することができる。
【0025】本発明は、その一部分において、コンピュ
ータシステム1の基礎的なハードウェア構造、例えば、
CPU2の論理回路、メモリ3の記憶セル、及びバス4
のデータ経路の巾を考慮して、ビットマップ20を最適
にエンコードすることによりスペース及び時間効率を得
るものである。それ故、ビットマップ20をエンコード
し、デコードしそして処理するための量子は、均一サイ
ズのバイト22である。これらのバイト22は、コンピ
ュータシステム1のハードウェア特徴に対して便利で且
つそれに適合する境界において整列される。例えば、各
バイト22は、8個のビット21を含む。本発明は、他
のバイトサイズを有するコンピュータシステムにも容易
に適用できることを理解されたい。
ータシステム1の基礎的なハードウェア構造、例えば、
CPU2の論理回路、メモリ3の記憶セル、及びバス4
のデータ経路の巾を考慮して、ビットマップ20を最適
にエンコードすることによりスペース及び時間効率を得
るものである。それ故、ビットマップ20をエンコード
し、デコードしそして処理するための量子は、均一サイ
ズのバイト22である。これらのバイト22は、コンピ
ュータシステム1のハードウェア特徴に対して便利で且
つそれに適合する境界において整列される。例えば、各
バイト22は、8個のビット21を含む。本発明は、他
のバイトサイズを有するコンピュータシステムにも容易
に適用できることを理解されたい。
【0026】ビットマップ20は、ビットマップ20の
ビット21を、次の一般的な原理に基づいてバイト整列
された原子(アトム)シーケンスへとエンコードするこ
とにより圧縮される。
ビット21を、次の一般的な原理に基づいてバイト整列
された原子(アトム)シーケンスへとエンコードするこ
とにより圧縮される。
【0027】ビットマップの各バイトは、ギャップバイ
ト又は非ギャップバイトとして分類される。ギャップバ
イトは全て同じビットを有し、非ギャップバイトは全て
同じビットをもたない。以下、非ギャップバイトを「マ
ップバイト」とも称する。
ト又は非ギャップバイトとして分類される。ギャップバ
イトは全て同じビットを有し、非ギャップバイトは全て
同じビットをもたない。以下、非ギャップバイトを「マ
ップバイト」とも称する。
【0028】同じクラスの隣接バイトはグループ分けさ
れ、各分類されたグループに含まれるビットの数が決定
される。
れ、各分類されたグループに含まれるビットの数が決定
される。
【0029】グループ分けされたギャップバイトに対し
て、ビットのセンス、即ち0であるか1であるかが決定
される。異なるセンスのビットを有するギャップバイト
は、個別にグループ編成される。グループ分けされたマ
ップバイトに対し、そのグループの第1バイトがその手
前のギャップのセンスと1ビットしか異ならないかどう
かが判断される。このようなバイトは「オフセットバイ
ト」と分類される。
て、ビットのセンス、即ち0であるか1であるかが決定
される。異なるセンスのビットを有するギャップバイト
は、個別にグループ編成される。グループ分けされたマ
ップバイトに対し、そのグループの第1バイトがその手
前のギャップのセンスと1ビットしか異ならないかどう
かが判断される。このようなバイトは「オフセットバイ
ト」と分類される。
【0030】ギャップバイトのグループに対し、グルー
プの長さ及びグループのセンス(0か1か)が原子シー
ケンスに記憶される。マップのグループに対し、グルー
プの長さ及びグループ自体が原子シーケンスに記憶され
る。オフセットバイトは、手前のギャップバイトの長さ
をエンコードする制御バイトへとエンコードされる。一
貫性を得るために、ビットマップ20の前に、例えば、
ゼロ長さゼロ充填のギャップがあると仮定する。
プの長さ及びグループのセンス(0か1か)が原子シー
ケンスに記憶される。マップのグループに対し、グルー
プの長さ及びグループ自体が原子シーケンスに記憶され
る。オフセットバイトは、手前のギャップバイトの長さ
をエンコードする制御バイトへとエンコードされる。一
貫性を得るために、ビットマップ20の前に、例えば、
ゼロ長さゼロ充填のギャップがあると仮定する。
【0031】図3は、これらの原理に基づいて構成され
たバイト整列原子30の一般的構造を示している。原子
30の多数の異なる構成が考えられる。原子30の異な
る構成は、ビットマップ20のビット21に記憶された
論理0及び1の予想できない種々の分布をコンパクトに
圧縮するように最適に取り扱われる。
たバイト整列原子30の一般的構造を示している。原子
30の多数の異なる構成が考えられる。原子30の異な
る構成は、ビットマップ20のビット21に記憶された
論理0及び1の予想できない種々の分布をコンパクトに
圧縮するように最適に取り扱われる。
【0032】各エンコードされた原子30は、少なくと
も1つの制御バイト(CBYTE)40を含む。以下で
詳細に述べるように、各制御バイト40の後に、1つ以
上のエンコードされたギャップバイト(GBYTE)5
0及び/又は1つ以上のエンコードされたビットマップ
バイト(MBYTE)60が続く。
も1つの制御バイト(CBYTE)40を含む。以下で
詳細に述べるように、各制御バイト40の後に、1つ以
上のエンコードされたギャップバイト(GBYTE)5
0及び/又は1つ以上のエンコードされたビットマップ
バイト(MBYTE)60が続く。
【0033】特定の原子30の特定形式の構成が制御バ
イト40にエンコードされる。それ故、各制御バイト4
0は、タイプフィールド(TFIELD)41及びデー
タフィールド(DFIELD)45を含む。ここに示す
実施例では、タイプフィールド41は、3ビットを含
み、DFIELD45は、4ビットを含む。本発明は、
制御バイト40が異なるビット数のフィールドへと編成
された場合にも機能し得ることが明らかであろう。
イト40にエンコードされる。それ故、各制御バイト4
0は、タイプフィールド(TFIELD)41及びデー
タフィールド(DFIELD)45を含む。ここに示す
実施例では、タイプフィールド41は、3ビットを含
み、DFIELD45は、4ビットを含む。本発明は、
制御バイト40が異なるビット数のフィールドへと編成
された場合にも機能し得ることが明らかであろう。
【0034】又、制御バイト40は、ギャップのエンコ
ードされたビットが全て0と感知されるか全て1と感知
されるかを指示するための任意の充填フィールド(FF
IELD)44を含むことができる。FFIELD44
が論理「0」のときは、エンコードされたギャップのバ
イトが全て0であり、そしてFFIELD44が論理
「1」のときには、エンコードされたギャップバイトに
全て1が充填される。0又は1の一種類のギャップのみ
をエンコードするように本発明が使用されたときには、
FFIELD44は必要とされず、DFIELD45
を、例えば、5つのビットを含むように拡張することが
できる。
ードされたビットが全て0と感知されるか全て1と感知
されるかを指示するための任意の充填フィールド(FF
IELD)44を含むことができる。FFIELD44
が論理「0」のときは、エンコードされたギャップのバ
イトが全て0であり、そしてFFIELD44が論理
「1」のときには、エンコードされたギャップバイトに
全て1が充填される。0又は1の一種類のギャップのみ
をエンコードするように本発明が使用されたときには、
FFIELD44は必要とされず、DFIELD45
を、例えば、5つのビットを含むように拡張することが
できる。
【0035】タイプフィールド41は、原子30の種々
の構造を指示するように0ないし7の範囲の値をもつこ
とができる。DFIELD45は、0ないし15の範囲
の値をもつことができる。任意のFFIELD44は、
0又は1のいずれかの値をもつことができる。
の構造を指示するように0ないし7の範囲の値をもつこ
とができる。DFIELD45は、0ないし15の範囲
の値をもつことができる。任意のFFIELD44は、
0又は1のいずれかの値をもつことができる。
【0036】ギャップバイト50は、原子30に現れる
ときには、連続的にエンコードされるギャップバイトの
数を記憶するのに用いられる1ないし8バイトのシーケ
ンスである。ギャップバイトは、既に述べたように、全
て同じ論理値を記憶するビットを有するバイトのグルー
プである。原子30の対応する制御バイト40のFFI
ELD44は、エンコードされたギャップバイト50が
0を記憶するバイトを有するか1を記憶するバイトを有
するかを指示するのに用いられる。
ときには、連続的にエンコードされるギャップバイトの
数を記憶するのに用いられる1ないし8バイトのシーケ
ンスである。ギャップバイトは、既に述べたように、全
て同じ論理値を記憶するビットを有するバイトのグルー
プである。原子30の対応する制御バイト40のFFI
ELD44は、エンコードされたギャップバイト50が
0を記憶するバイトを有するか1を記憶するバイトを有
するかを指示するのに用いられる。
【0037】ギャップバイトシーケンスにおけるバイト
の数は、ギャップバイト50のGFIELD51に記憶
され、例えば、第1ギャップバイト50の下位3ビット
に記憶される。第1GBYTE50の残りのビットは、
2進「0」で拡張され、その後のギャップバイト50
は、ビットで測定したギャップサイズを表し、常に、8
の倍数として表現される。換言すれば、ギャップバイト
50は、バイト整列されたビットギャップのみをエンコ
ードする。ギャップサイズの有効ビットをもつバイトの
みがギャップバイト50によって表され、全て0の先導
バイトのギャップサイズは破棄される。
の数は、ギャップバイト50のGFIELD51に記憶
され、例えば、第1ギャップバイト50の下位3ビット
に記憶される。第1GBYTE50の残りのビットは、
2進「0」で拡張され、その後のギャップバイト50
は、ビットで測定したギャップサイズを表し、常に、8
の倍数として表現される。換言すれば、ギャップバイト
50は、バイト整列されたビットギャップのみをエンコ
ードする。ギャップサイズの有効ビットをもつバイトの
みがギャップバイト50によって表され、全て0の先導
バイトのギャップサイズは破棄される。
【0038】マップバイト60は、原子30に存在する
ときには、全て同じビットをもたないビットマップ20
の1ないし15バイトのシーケンスである。マップバイ
トシーケンスにおけるバイトの数は、制御バイト40の
DFIELD45に記憶される。換言すれば、マップバ
イトは、ビットマップ20のバイト整列されたビットで
ある。
ときには、全て同じビットをもたないビットマップ20
の1ないし15バイトのシーケンスである。マップバイ
トシーケンスにおけるバイトの数は、制御バイト40の
DFIELD45に記憶される。換言すれば、マップバ
イトは、ビットマップ20のバイト整列されたビットで
ある。
【0039】ビットマップ20を圧縮するのに使用され
る原子30の種々の構造について詳細に説明する。原子
30の説明に続いて、この構造体をエンコードし、デコ
ードしそして論理的に操作するのに使用される方法につ
いて説明する。この説明において、制御バイト40の8
つのビットは、例えば、〔TFIELD|FFIELD
|DFIELD〕のように書かれる。垂直のバー「|」
は、フィールドセパレータとして使用され、スラッシュ
「/」は、「又は」を指示し、そしてダッシュ「−」
は、包含範囲を示す。
る原子30の種々の構造について詳細に説明する。原子
30の説明に続いて、この構造体をエンコードし、デコ
ードしそして論理的に操作するのに使用される方法につ
いて説明する。この説明において、制御バイト40の8
つのビットは、例えば、〔TFIELD|FFIELD
|DFIELD〕のように書かれる。垂直のバー「|」
は、フィールドセパレータとして使用され、スラッシュ
「/」は、「又は」を指示し、そしてダッシュ「−」
は、包含範囲を示す。
【0040】以下のテーブル1は、原子30がとり得る
種々の形態の概要である。 テーブル1 − 原子の一般的形態 ケース TFIELD FFIELD DFIELD GBYTE MBYTE 1 0-3 0 又は1 1-15 ノー イエス 2 4 0 又は1 1-15 イエス イエス 3 5 0-3 0-7 ノー ノー 4 6 0 又は1 0-7 イエス ノー 5 7 0-3 0-7 ノー ノー
種々の形態の概要である。 テーブル1 − 原子の一般的形態 ケース TFIELD FFIELD DFIELD GBYTE MBYTE 1 0-3 0 又は1 1-15 ノー イエス 2 4 0 又は1 1-15 イエス イエス 3 5 0-3 0-7 ノー ノー 4 6 0 又は1 0-7 イエス ノー 5 7 0-3 0-7 ノー ノー
【0041】原子30の第1ケースは、次の一般式を有
する。 CBYTE=〔0−3|0/1|1−15〕 タイプフィールド41が0ないし3の範囲の値を記憶す
るときに、タイプフィールド41は、エンコードされる
ギャップのサイズを直接指示する。換言すれば、0ない
し3の範囲のタイプフィールド41を有する原子30の
場合には、制御バイト40の後に、いかなるギャップバ
イト50も続かない。むしろ、ギャップのサイズは、制
御バイト40のタイプフィールド41に直接エンコード
される。このケースは、頻繁に生じる小さなサイズのギ
ャップをコンパクトに圧縮するのに有用である。ギャッ
プが全て0を含むか1を含むかは、FFIELD44に
よって指示される。ギャップに続くビットマップ20の
バイトの数は、上記したように、DFIELD45に記
憶される。
する。 CBYTE=〔0−3|0/1|1−15〕 タイプフィールド41が0ないし3の範囲の値を記憶す
るときに、タイプフィールド41は、エンコードされる
ギャップのサイズを直接指示する。換言すれば、0ない
し3の範囲のタイプフィールド41を有する原子30の
場合には、制御バイト40の後に、いかなるギャップバ
イト50も続かない。むしろ、ギャップのサイズは、制
御バイト40のタイプフィールド41に直接エンコード
される。このケースは、頻繁に生じる小さなサイズのギ
ャップをコンパクトに圧縮するのに有用である。ギャッ
プが全て0を含むか1を含むかは、FFIELD44に
よって指示される。ギャップに続くビットマップ20の
バイトの数は、上記したように、DFIELD45に記
憶される。
【0042】原子30の第2ケースは、次の一般式を有
する。 CBYTE=〔4|0/1|1−15〕 このケースにおいて、制御バイト40の直後には1つ以
上のギャップバイト50が続き、このギャップバイト5
0は、上記したようにエンコードされる。ギャップバイ
ト50の後には、複数のマップバイト60が続き、この
マップバイト60の数は、制御バイト40のDFIEL
D45に指示される。
する。 CBYTE=〔4|0/1|1−15〕 このケースにおいて、制御バイト40の直後には1つ以
上のギャップバイト50が続き、このギャップバイト5
0は、上記したようにエンコードされる。ギャップバイ
ト50の後には、複数のマップバイト60が続き、この
マップバイト60の数は、制御バイト40のDFIEL
D45に指示される。
【0043】図4に示すように、タイプフィールド41
が5ないし7の範囲に入る次の3つのケースについて
は、制御バイト40は、3ビットのタイプフィールド4
1、2ビットのFFIELD44及び3ビットのDFI
ELD45に仕切られる。これらケースにおいては、D
FIELD45は、1つを除く全てのビットが同じであ
るビットマップ20のバイトをエンコードするのに使用
される。例えば、ビットマップ20のエンコードされた
バイト22は、1つが1で残りが全て0であるか又は1
つが0ビットで残りのビットが1にセットされるかのい
ずれかである。
が5ないし7の範囲に入る次の3つのケースについて
は、制御バイト40は、3ビットのタイプフィールド4
1、2ビットのFFIELD44及び3ビットのDFI
ELD45に仕切られる。これらケースにおいては、D
FIELD45は、1つを除く全てのビットが同じであ
るビットマップ20のバイトをエンコードするのに使用
される。例えば、ビットマップ20のエンコードされた
バイト22は、1つが1で残りが全て0であるか又は1
つが0ビットで残りのビットが1にセットされるかのい
ずれかである。
【0044】バイト22において残りのビットと異なる
1つのビットの位置は、DFIELD45のオフセット
として指示される。このオフセットは、0ないし7の範
囲の数であり、各数は、バイト22における異なるビッ
トに対する8個の考えられる位置の1つを表す。以下、
このクラスのバイトを「オフセット」バイトと称するこ
とにする。
1つのビットの位置は、DFIELD45のオフセット
として指示される。このオフセットは、0ないし7の範
囲の数であり、各数は、バイト22における異なるビッ
トに対する8個の考えられる位置の1つを表す。以下、
このクラスのバイトを「オフセット」バイトと称するこ
とにする。
【0045】オフセットバイトは、ギャップの直後に、
そのギャップのビットのセンスとは1ビットだけ異なる
バイトが続くような形式の頻繁に観察されるビット分布
をコンパクトに圧縮するのに有用である。
そのギャップのビットのセンスとは1ビットだけ異なる
バイトが続くような形式の頻繁に観察されるビット分布
をコンパクトに圧縮するのに有用である。
【0046】原子30の第3ケースは、次の一般式を有
する。 CBYTE=〔5|0−3|0−7〕 このケースにおいて、制御バイト40は、ギャップ及び
それに続くオフセットバイトをエンコードする。ギャッ
プのサイズは、FFIELD44に指示される。TFI
ELDが値5を有する場合には、ギャップ及びオフセッ
トバイトのビットは、1つの「1」ビットを除いて全て
0であり、そのオフセット位置はDFIELD45に指
示される。
する。 CBYTE=〔5|0−3|0−7〕 このケースにおいて、制御バイト40は、ギャップ及び
それに続くオフセットバイトをエンコードする。ギャッ
プのサイズは、FFIELD44に指示される。TFI
ELDが値5を有する場合には、ギャップ及びオフセッ
トバイトのビットは、1つの「1」ビットを除いて全て
0であり、そのオフセット位置はDFIELD45に指
示される。
【0047】原子30の第4ケースは、次の一般式を有
する。 CBYTE=〔6|0/1|0−7〕 このケースにおいて、制御バイト40の直後に1つ以上
のギャップバイト50が続き、このギャップバイト50
は、上記したようにエンコードされる。対応するビット
マップにおいては、このようにエンコードされたギャッ
プの直後に、オフセットバイトが続く。FFIELD4
4が0である場合には、ギャップ及びオフセットバイト
が、オフセットビットを除いて「0」である。或いは
又、FFIELD44が1である場合には、ギャップ及
びオフセットバイトに「1」が満たされそしてオフセッ
トビットは0である。
する。 CBYTE=〔6|0/1|0−7〕 このケースにおいて、制御バイト40の直後に1つ以上
のギャップバイト50が続き、このギャップバイト50
は、上記したようにエンコードされる。対応するビット
マップにおいては、このようにエンコードされたギャッ
プの直後に、オフセットバイトが続く。FFIELD4
4が0である場合には、ギャップ及びオフセットバイト
が、オフセットビットを除いて「0」である。或いは
又、FFIELD44が1である場合には、ギャップ及
びオフセットバイトに「1」が満たされそしてオフセッ
トビットは0である。
【0048】原子30の第5ケースは、次の一般式を有
する。 CBYTE=〔7|0−3|0−7〕 このケースは、ビットのセンスが反転された以外は、上
記の第3ケース(TFIELD=5)と同様である。即
ち、ギャップ及びオフセットバイトは、1つの異なるビ
ットを除くと、全て1である。以上に、ビットマップ2
0を圧縮するのに使用される種々の形式の原子30のデ
ータ構造体の一般的な形式を説明した。
する。 CBYTE=〔7|0−3|0−7〕 このケースは、ビットのセンスが反転された以外は、上
記の第3ケース(TFIELD=5)と同様である。即
ち、ギャップ及びオフセットバイトは、1つの異なるビ
ットを除くと、全て1である。以上に、ビットマップ2
0を圧縮するのに使用される種々の形式の原子30のデ
ータ構造体の一般的な形式を説明した。
【0049】これらの一般的な形態に加えて、原子30
のある特殊な構造について更に定義し、これをテーブル
2に要約する。 テーブル2 − 原子の特殊な形態 ケース TFIELD FFIELD DFIELD GBYTE MBYTE 1 0 0 0 ノー イエス 2 1-3 0 又は1 0 ノー ノー 3 4 0-3 0 イエス ノー
のある特殊な構造について更に定義し、これをテーブル
2に要約する。 テーブル2 − 原子の特殊な形態 ケース TFIELD FFIELD DFIELD GBYTE MBYTE 1 0 0 0 ノー イエス 2 1-3 0 又は1 0 ノー ノー 3 4 0-3 0 イエス ノー
【0050】第1に、全てのビットが論理0にセットさ
れた制御バイト40の特殊なケースにおいては、原子が
次の形態である。 CBYTE=〔0|0|0〕 この原子は、ビットマップ20を圧縮するのに使用され
る原子30のシーケンスの終止符として使用される。こ
の終止符は、圧縮された原子シーケンスを操作する手順
に対する信号として使用できる。
れた制御バイト40の特殊なケースにおいては、原子が
次の形態である。 CBYTE=〔0|0|0〕 この原子は、ビットマップ20を圧縮するのに使用され
る原子30のシーケンスの終止符として使用される。こ
の終止符は、圧縮された原子シーケンスを操作する手順
に対する信号として使用できる。
【0051】第2に、タイプフィールド41が1ないし
3の範囲でありそしてDFIELD=0であるような特
殊なケースにおいては、例えば、マップビット50が指
示されない。この特殊なケースの一般式は、次のような
原子を有する。 CBYTE=〔1−3|0/1|0〕 この形式の制御バイト40は、圧縮されたギャップのビ
ットとセンスは異なるが全て同じビットを有するバイト
が直後に続くようなギャップを圧縮するのに使用され
る。例えば、16進表示では、「FFFF00」のビッ
トマップシーケンスは、制御バイト=〔2|1|0〕よ
り成る単一バイト原子によってエンコードされる。TF
IELD=2であり、そしてFFIELD=1であって
2つの「1」充填バイトを指示し、その後に「0」充填
バイトが続く。これとは逆に、ビットマップシーケンス
「000000FF」は、制御バイト=〔3|0|0〕
としてエンコードすることができる。
3の範囲でありそしてDFIELD=0であるような特
殊なケースにおいては、例えば、マップビット50が指
示されない。この特殊なケースの一般式は、次のような
原子を有する。 CBYTE=〔1−3|0/1|0〕 この形式の制御バイト40は、圧縮されたギャップのビ
ットとセンスは異なるが全て同じビットを有するバイト
が直後に続くようなギャップを圧縮するのに使用され
る。例えば、16進表示では、「FFFF00」のビッ
トマップシーケンスは、制御バイト=〔2|1|0〕よ
り成る単一バイト原子によってエンコードされる。TF
IELD=2であり、そしてFFIELD=1であって
2つの「1」充填バイトを指示し、その後に「0」充填
バイトが続く。これとは逆に、ビットマップシーケンス
「000000FF」は、制御バイト=〔3|0|0〕
としてエンコードすることができる。
【0052】第3に、タイプフィールド41が4であり
そしてDFIELD45が0であるような特殊なケース
においては、原子は、次のような一般式を有する。 CBYTE=〔4|0/1|0〕 この形式の制御バイト40は、第2のケースと同様であ
るが、圧縮されたギャップのサイズはギャップバイト5
0によりエンコードされる。例えば、16進表示では、
「FFFFFFFF00」のビットマップシーケンス
は、制御バイト〔4|1|0〕と、これに続いて16進
値「20」を記憶する単一ギャップバイトとで構成され
た2つのバイトに圧縮される。
そしてDFIELD45が0であるような特殊なケース
においては、原子は、次のような一般式を有する。 CBYTE=〔4|0/1|0〕 この形式の制御バイト40は、第2のケースと同様であ
るが、圧縮されたギャップのサイズはギャップバイト5
0によりエンコードされる。例えば、16進表示では、
「FFFFFFFF00」のビットマップシーケンス
は、制御バイト〔4|1|0〕と、これに続いて16進
値「20」を記憶する単一ギャップバイトとで構成され
た2つのバイトに圧縮される。
【0053】ここで、これらの圧縮構造を図2の元のビ
ットマップ20に適用すると、次のような原子バイトシ
ーケンスが生じる。 原子1:CBYTE=〔4|0|2〕 (0充填の1バイトギャップ、 MBYTE=hex0809 (2つのマップバイトが続く。 原子2:CBYTE=〔6|0|6〕 (ビット6オフセットバイト及び GBYTE=hex90 (90hex、0充填ビット。 原子3:CBYTE=〔5|0|5〕 (ビット6オフセットバイトギャッ プなし。 原子4:CBYTE=〔0|0|1〕 (ギャップサイズ=0、その後に MBYTE=hexA0 (1つのマップバイト。 原子5:CBYTE=〔4|0|1〕 (ギャップバイト及びmバイト GBYTE=hex101 (100hex、0充填ビット MBYTE=hexAC (1つのマップバイトが続く。
ットマップ20に適用すると、次のような原子バイトシ
ーケンスが生じる。 原子1:CBYTE=〔4|0|2〕 (0充填の1バイトギャップ、 MBYTE=hex0809 (2つのマップバイトが続く。 原子2:CBYTE=〔6|0|6〕 (ビット6オフセットバイト及び GBYTE=hex90 (90hex、0充填ビット。 原子3:CBYTE=〔5|0|5〕 (ビット6オフセットバイトギャッ プなし。 原子4:CBYTE=〔0|0|1〕 (ギャップサイズ=0、その後に MBYTE=hexA0 (1つのマップバイト。 原子5:CBYTE=〔4|0|1〕 (ギャップバイト及びmバイト GBYTE=hex101 (100hex、0充填ビット MBYTE=hexAC (1つのマップバイトが続く。
【0054】従って、本発明の構造を使用することによ
り、整数ベクトルは、全部で12の8ビットバイトに対
する5つの原子、即ち元のサイズの一部分に圧縮され
る。
り、整数ベクトルは、全部で12の8ビットバイトに対
する5つの原子、即ち元のサイズの一部分に圧縮され
る。
【0055】ビットマップエンコード動作 入力ビットマップを、上記構造を用いて出力原子シーケ
ンスに圧縮するための例示的な方法を詳細に述べる前
に、次の説明をする。入力ビットマップは、そのシーケ
ンスにおけるビットを第1ビットから最終ビットへ即ち
図2を参照すれば右から左へ個々に検査することにより
圧縮される。この処理中に、ビットは、ビットが存在す
る整列されたバイトの文脈において検査される。
ンスに圧縮するための例示的な方法を詳細に述べる前
に、次の説明をする。入力ビットマップは、そのシーケ
ンスにおけるビットを第1ビットから最終ビットへ即ち
図2を参照すれば右から左へ個々に検査することにより
圧縮される。この処理中に、ビットは、ビットが存在す
る整列されたバイトの文脈において検査される。
【0056】現在バイトの現在ビットは、現在原子にエ
ンコードされるべき次のビットである。手前のビット
は、手前の制御バイトを有する手前に原子に既にエンコ
ードされている。エンコードプロセス中には、次のよう
な一般的原理が適用される。
ンコードされるべき次のビットである。手前のビット
は、手前の制御バイトを有する手前に原子に既にエンコ
ードされている。エンコードプロセス中には、次のよう
な一般的原理が適用される。
【0057】手前のビットと現在ビットとの間のギャッ
プが、全て同じビットを有する1つ以上のバイトを含む
が、手前のビット及び現在ビットとはセンスが異なる場
合には、このような全ての介在バイトがギャップとして
エンコードされる。ギャップが4つ以上のバイトを含む
場合には、そのギャップはギャップバイトとしてエンコ
ードされ、さもなくば、ギャップは制御バイトにおいて
エンコードされる。原子構造体は完全に対称的であるか
ら、このルールは、0及び1充填ギャップの両方に等し
く適用される。
プが、全て同じビットを有する1つ以上のバイトを含む
が、手前のビット及び現在ビットとはセンスが異なる場
合には、このような全ての介在バイトがギャップとして
エンコードされる。ギャップが4つ以上のバイトを含む
場合には、そのギャップはギャップバイトとしてエンコ
ードされ、さもなくば、ギャップは制御バイトにおいて
エンコードされる。原子構造体は完全に対称的であるか
ら、このルールは、0及び1充填ギャップの両方に等し
く適用される。
【0058】現在ビットがオフセットバイトのビットで
あり、そして手前のビットがギャップ、オフセットバイ
ト、又は考えられる最上位の(15番目の)マップバイ
トとしてエンコードされた場合には、現在バイトをオフ
セットバイトとしてエンコードする。さもなくば、現在
バイトを既にエンコードされたマップバイトシーケンス
に加え、そして既にエンコードされた制御バイトのDF
IELDにおけるマップバイトカウントを増加する。
あり、そして手前のビットがギャップ、オフセットバイ
ト、又は考えられる最上位の(15番目の)マップバイ
トとしてエンコードされた場合には、現在バイトをオフ
セットバイトとしてエンコードする。さもなくば、現在
バイトを既にエンコードされたマップバイトシーケンス
に加え、そして既にエンコードされた制御バイトのDF
IELDにおけるマップバイトカウントを増加する。
【0059】現在ビットがギャップバイトのビットでも
ないしオフセットバイトのビットでもない場合には、現
在ビットを既にエンコードされたマップバイトシーケン
スに添付するか、又はここに示す実施例では15である
マップバイト限界に達したときに、マップバイトシーケ
ンスを有する新たな原子を形成する。
ないしオフセットバイトのビットでもない場合には、現
在ビットを既にエンコードされたマップバイトシーケン
スに添付するか、又はここに示す実施例では15である
マップバイト限界に達したときに、マップバイトシーケ
ンスを有する新たな原子を形成する。
【0060】これらのルールは、最小数のバイトを有す
る圧縮された原子シーケンスを保証する。これらのルー
ルに基づいて形成されたエンコードされた構造体は、一
般に次のように説明することができる。
る圧縮された原子シーケンスを保証する。これらのルー
ルに基づいて形成されたエンコードされた構造体は、一
般に次のように説明することができる。
【0061】全てのビットが同じである全てのバイト
は、ギャップとしてエンコードされ、そしてマップバイ
トシーケンスの部分にはなり得ない。
は、ギャップとしてエンコードされ、そしてマップバイ
トシーケンスの部分にはなり得ない。
【0062】各ギャップの直後に、オフセットバイト又
はマップバイトシーケンスが続くか或いは制御バイト=
〔1−4|0/1|1〕の特殊な場合のように逆のセン
スのギャップバイトが続く。
はマップバイトシーケンスが続くか或いは制御バイト=
〔1−4|0/1|1〕の特殊な場合のように逆のセン
スのギャップバイトが続く。
【0063】全マップバイトシーケンスの後には、常
に、ギャップ、オフセットバイト又は別のマップバイト
シーケンスのいずれかが続く。
に、ギャップ、オフセットバイト又は別のマップバイト
シーケンスのいずれかが続く。
【0064】原子構造体をエンコードするのに用いる方
法の詳細な説明においては、次の変数及び用語を定義す
る。
法の詳細な説明においては、次の変数及び用語を定義す
る。
【0065】圧縮されるべき入力ビットマップのビット
は、次のように表すことができる。 b(0)、・・・b(I)、・・・b(K)、・・・b
(N) 但し、b(0)は、ビットマップの第1ビットであり、
b(I)は、現在ビットであり、b(K)は、最初は、
次のバイトの第1ビットであり、そしてb(N)は、ビ
ットマップの最終ビットである。
は、次のように表すことができる。 b(0)、・・・b(I)、・・・b(K)、・・・b
(N) 但し、b(0)は、ビットマップの第1ビットであり、
b(I)は、現在ビットであり、b(K)は、最初は、
次のバイトの第1ビットであり、そしてb(N)は、ビ
ットマップの最終ビットである。
【0066】出力原子シーケンスのバイトは、次のよう
に表すことができる。 B(0)、・・・B(PP)、・・・B(P)、・・・
B(T) 但し、B(0)は、第1原子の制御バイトであり、B
(PP)は、手前の原子の制御バイトであり、B(P)
は、現在原子の制御バイトであり、そしてB(T)は、
原子シーケンスの終止符である。
に表すことができる。 B(0)、・・・B(PP)、・・・B(P)、・・・
B(T) 但し、B(0)は、第1原子の制御バイトであり、B
(PP)は、手前の原子の制御バイトであり、B(P)
は、現在原子の制御バイトであり、そしてB(T)は、
原子シーケンスの終止符である。
【0067】さて、図5を参照し、上記の一般的なルー
ルに基づいてビットマップをエンコードするための例示
的な方法500を説明する。ビットマップの処理は、ビ
ットマップの走査を初期化しそして第1の原子を「手
前」の原子としてエンコードするための第1段階を含
む。この第1段階の後に、全てのビットが圧縮されるま
でビットマップの残りのビットを圧縮するためのループ
が続く。
ルに基づいてビットマップをエンコードするための例示
的な方法500を説明する。ビットマップの処理は、ビ
ットマップの走査を初期化しそして第1の原子を「手
前」の原子としてエンコードするための第1段階を含
む。この第1段階の後に、全てのビットが圧縮されるま
でビットマップの残りのビットを圧縮するためのループ
が続く。
【0068】ステップ505において、変数I、K、
N、PP及びPを初期化する。次いで、ステップ510
において、入力ビットマップが空であるかどうかを決定
する。もしこれが真であれば、ステップ515におい
て、終止符原子B(T)、例えばB(PP)=0を発生
する。さもなくば、それが偽であれば、ステップ520
において、b(0)から始めて、手前のビットとはセン
スが異なる第1のb(I)を位置決めする。
N、PP及びPを初期化する。次いで、ステップ510
において、入力ビットマップが空であるかどうかを決定
する。もしこれが真であれば、ステップ515におい
て、終止符原子B(T)、例えばB(PP)=0を発生
する。さもなくば、それが偽であれば、ステップ520
において、b(0)から始めて、手前のビットとはセン
スが異なる第1のb(I)を位置決めする。
【0069】ステップ525において、B(PP)をオ
フセットバイトとして発生する。又、第1原子の制御バ
イトB(PP)にもしあれば第1ギャップのサイズをエ
ンコードするか、又はギャップのサイズが24ビット即
ち3バイトより大きければ、ギャップバイトとしてエン
コードする。
フセットバイトとして発生する。又、第1原子の制御バ
イトB(PP)にもしあれば第1ギャップのサイズをエ
ンコードするか、又はギャップのサイズが24ビット即
ち3バイトより大きければ、ギャップバイトとしてエン
コードする。
【0070】ステップ530において、b(K)を次の
整列バイトの第1ビットにセットしそしてB(P)をセ
ットする。
整列バイトの第1ビットにセットしそしてB(P)をセ
ットする。
【0071】次いで、ステップ535へ続き、ビットマ
ップの全てのビットが検査されたかどうか判断する。も
しそれが真であれば、ステップ515に続く。さもなく
ば、それが偽であれば、ステップ540において、Iを
増加することにより次のバイトを検査する準備をする。
ップの全てのビットが検査されたかどうか判断する。も
しそれが真であれば、ステップ515に続く。さもなく
ば、それが偽であれば、ステップ540において、Iを
増加することにより次のバイトを検査する準備をする。
【0072】ステップ545において、I<Kであるか
どうかを決定する。即ち、現在ビットb(I)が既にエ
ンコードされたビットと同じバイト内に配置されている
かどうかを決定する。もしそれが真であれば、ステップ
550に続いて、現在ビットを、制御バイトB(PP)
をもつ現在原子に組み込む。さもなくば、それが偽であ
れば、ステップ570へ続く。
どうかを決定する。即ち、現在ビットb(I)が既にエ
ンコードされたビットと同じバイト内に配置されている
かどうかを決定する。もしそれが真であれば、ステップ
550に続いて、現在ビットを、制御バイトB(PP)
をもつ現在原子に組み込む。さもなくば、それが偽であ
れば、ステップ570へ続く。
【0073】ステップ550では、現在原子がオフセッ
トバイトをエンコードするかどうか決定する。もしそれ
が偽であれば、ステップ560へ続く。さもなくば、も
し真であれば、ステップ555において、現在原子を、
ビットをマップバイトとしてエンコードする形態へと変
換し、ステップ560へ続く。
トバイトをエンコードするかどうか決定する。もしそれ
が偽であれば、ステップ560へ続く。さもなくば、も
し真であれば、ステップ555において、現在原子を、
ビットをマップバイトとしてエンコードする形態へと変
換し、ステップ560へ続く。
【0074】ステップ560では、現在ビットを現在原
子のマップバイトに加え、ステップ535へ続く。
子のマップバイトに加え、ステップ535へ続く。
【0075】ステップ570では、現在ビットb(I)
が、まだエンコードされていない整列ビットマップバイ
トに配置されているかどうか(I≧K)決定される。即
ち、ギャップ(I≧K+8)があるか、又は現在制御バ
イトがオフセットバイトであるかどうか、或いはマップ
バイトカウントがバイト限界15に達したかどうかの判
断がなされる。
が、まだエンコードされていない整列ビットマップバイ
トに配置されているかどうか(I≧K)決定される。即
ち、ギャップ(I≧K+8)があるか、又は現在制御バ
イトがオフセットバイトであるかどうか、或いはマップ
バイトカウントがバイト限界15に達したかどうかの判
断がなされる。
【0076】これらのいずれかが真であれば、ステップ
575において、現在ビットをオフセットバイトとして
B(P)へとエンコードすることにより新たな原子を発
生する。又、制御バイトB(PP)にもしあれば第1バ
イトのサイズをエンコードするか、又はこのギャップの
サイズが24ビット即ち3バイトより大きい場合にはギ
ャップバイトとしてエンコードする。次いで、ステップ
590へ続く。
575において、現在ビットをオフセットバイトとして
B(P)へとエンコードすることにより新たな原子を発
生する。又、制御バイトB(PP)にもしあれば第1バ
イトのサイズをエンコードするか、又はこのギャップの
サイズが24ビット即ち3バイトより大きい場合にはギ
ャップバイトとしてエンコードする。次いで、ステップ
590へ続く。
【0077】さもなくば、ステップ580において、付
加的なマップバイトを現在原子に添付し、そこに現在ビ
ットを挿入し、ステップ590へ続く。
加的なマップバイトを現在原子に添付し、そこに現在ビ
ットを挿入し、ステップ590へ続く。
【0078】ステップ590において、Kを次のバイト
の第1ビットに対して調整し、そしてPP及びPを必要
に応じて調整して、全てのビットが検査されるまでステ
ップ535へ続く。変数Kは、変数Iの下位3ビットを
クリアして8を加えることにより次のバイトの第1ビッ
トをインデックスするように調整できる。
の第1ビットに対して調整し、そしてPP及びPを必要
に応じて調整して、全てのビットが検査されるまでステ
ップ535へ続く。変数Kは、変数Iの下位3ビットを
クリアして8を加えることにより次のバイトの第1ビッ
トをインデックスするように調整できる。
【0079】ビットマップをここに定める構造へと圧縮
するための多数の他の方法も考えられるが、一度に1ビ
ットを処理する好ましい方法は、各異なるビットマップ
に対して原子構造体の独特のシーケンスを与える。それ
故、原子シーケンスは、ビットマップの特定の表現に対
して独特であるから、圧縮されたビットマップ全部を容
易に比較して、単一バイトストリング命令により、例え
ば、ビットマップ識別を決定することができる。
するための多数の他の方法も考えられるが、一度に1ビ
ットを処理する好ましい方法は、各異なるビットマップ
に対して原子構造体の独特のシーケンスを与える。それ
故、原子シーケンスは、ビットマップの特定の表現に対
して独特であるから、圧縮されたビットマップ全部を容
易に比較して、単一バイトストリング命令により、例え
ば、ビットマップ識別を決定することができる。
【0080】更に、ビットマップを本発明により定めら
れた構造へとエンコードするための方法のこの実施例
は、メモリ3の記憶スペースの消費を最も節約できるよ
う保証される。
れた構造へとエンコードするための方法のこの実施例
は、メモリ3の記憶スペースの消費を最も節約できるよ
う保証される。
【0081】又、ビットは一度に1つづつエンコードさ
れるので、エンコード手順は、例えば、ビットマップ全
体にわたるビットの0及び1の値の総分布に一般的に不
感なソフトウェアプログラムや、限定された数の時間の
かかる判断実行段階しか必要としないソフトウェアプロ
グラムによって効率的に実施することができる。
れるので、エンコード手順は、例えば、ビットマップ全
体にわたるビットの0及び1の値の総分布に一般的に不
感なソフトウェアプログラムや、限定された数の時間の
かかる判断実行段階しか必要としないソフトウェアプロ
グラムによって効率的に実施することができる。
【0082】又、この手順は、ハードウェアとして実施
することもできる。例えば、ハードウェアの実施は、シ
リアルな入力ビット流を、圧縮された出力バイト流に変
換して、通信ネットワークを経て送信するのに特に適し
ている。又、好ましい方法のビットごとの処理は、低コ
ストの固定布線ロジック回路、ラッチ及びゲートに良く
適している。
することもできる。例えば、ハードウェアの実施は、シ
リアルな入力ビット流を、圧縮された出力バイト流に変
換して、通信ネットワークを経て送信するのに特に適し
ている。又、好ましい方法のビットごとの処理は、低コ
ストの固定布線ロジック回路、ラッチ及びゲートに良く
適している。
【0083】ビットマップのビットが処理されるとき
に、エンコード方法は、制御バイト、ギャップバイト、
マップバイトを与え、そしてオフセットバイトを変換す
る。オフセットバイトの変換を含むこれら全ての動作
は、発生されるコードの直交特性により、高速で且つ取
るに足らないものである。
に、エンコード方法は、制御バイト、ギャップバイト、
マップバイトを与え、そしてオフセットバイトを変換す
る。オフセットバイトの変換を含むこれら全ての動作
は、発生されるコードの直交特性により、高速で且つ取
るに足らないものである。
【0084】例えば、大きなギャップの構造は、原子構
造体の残り部分によって影響されることなくギャップバ
イト内で独立してエンコードされる。ギャップバイトシ
ーケンスの長さ(単位はバイト)は、バイト当たりのビ
ット数と同じベース(8)でエンコードされることに特
に注意されたい。オフセットバイト(160未満の制御
バイト)をエンコードする原子と、そうでない原子とが
容易に区別されることに注意されたい。同様に、オフセ
ットバイト及びギャップバイトの二重のセンス(1又は
0)は全く対称的であり、それ故、単にFFIELD4
4をオフにキーイングしそしてギャップ及びオフセット
バイトのビットを相補的に処理するだけで、同じコード
によって処理できる。テーブル1及び2に要約した構造
体の優雅さ及び簡単さは、例えば、縮小命令セットアー
キテクチャを用いた近代的な高性能プロセッサによる処
理に特に良く適している。
造体の残り部分によって影響されることなくギャップバ
イト内で独立してエンコードされる。ギャップバイトシ
ーケンスの長さ(単位はバイト)は、バイト当たりのビ
ット数と同じベース(8)でエンコードされることに特
に注意されたい。オフセットバイト(160未満の制御
バイト)をエンコードする原子と、そうでない原子とが
容易に区別されることに注意されたい。同様に、オフセ
ットバイト及びギャップバイトの二重のセンス(1又は
0)は全く対称的であり、それ故、単にFFIELD4
4をオフにキーイングしそしてギャップ及びオフセット
バイトのビットを相補的に処理するだけで、同じコード
によって処理できる。テーブル1及び2に要約した構造
体の優雅さ及び簡単さは、例えば、縮小命令セットアー
キテクチャを用いた近代的な高性能プロセッサによる処
理に特に良く適している。
【0085】本発明による圧縮速度を、上記のデルタ圧
縮と比較した。圧縮速度は、圧縮されたバイトの数を、
各整数を4バイトで表すようにして元の整数ベクトルを
表すのに用いたバイトの数で除算したものとして測定し
た。整数ベクトルは、例えば、1、2、3、11、2
1、51、201、10001及び100001のよう
に、種々のサイズ範囲にわたってランダムに選んだ連続
する整数間に差を有するものであった。
縮と比較した。圧縮速度は、圧縮されたバイトの数を、
各整数を4バイトで表すようにして元の整数ベクトルを
表すのに用いたバイトの数で除算したものとして測定し
た。整数ベクトルは、例えば、1、2、3、11、2
1、51、201、10001及び100001のよう
に、種々のサイズ範囲にわたってランダムに選んだ連続
する整数間に差を有するものであった。
【0086】デルタ圧縮は、疎ベクトルに対して若干優
れており、本発明による圧縮は、密ベクトルに対して優
れていた。百万のランダムに発生した整数を有する上昇
整数ベクトルの場合に、本発明は、デルタ圧縮よりも約
2倍の速度でエンコードしそして約4倍の速度でデコー
ドした。
れており、本発明による圧縮は、密ベクトルに対して優
れていた。百万のランダムに発生した整数を有する上昇
整数ベクトルの場合に、本発明は、デルタ圧縮よりも約
2倍の速度でエンコードしそして約4倍の速度でデコー
ドした。
【0087】ビットマップデコード動作 入力原子シーケンスを出力ビットマップに圧縮解除する
実施例を説明する。この方法は、一般に、終止符B
(T)に遭遇するまで第1原子B(0)から原子シーケ
ンスを走査する。ここに述べる方法は、テーブル1及び
2に要約したデータ構造に適合するように、考えられる
最短の原子シーケンス及び必ずしも最短でない他の原子
シーケンスを形成するための上記のエンコードルールに
従うことにより、発生された原子シーケンスをデコード
する。
実施例を説明する。この方法は、一般に、終止符B
(T)に遭遇するまで第1原子B(0)から原子シーケ
ンスを走査する。ここに述べる方法は、テーブル1及び
2に要約したデータ構造に適合するように、考えられる
最短の原子シーケンス及び必ずしも最短でない他の原子
シーケンスを形成するための上記のエンコードルールに
従うことにより、発生された原子シーケンスをデコード
する。
【0088】デコード中に、この方法は、各原子を順次
に検査し、制御バイト41をパーズ(解析)し、ギャッ
プ、マップバイト及びオフセットバイトを解読する。
に検査し、制御バイト41をパーズ(解析)し、ギャッ
プ、マップバイト及びオフセットバイトを解読する。
【0089】この方法の実施例を示す図6を特に参照す
れば、ステップ610において、変数I及びPPが初期
化される。変数Iは、ビットマップに対して発生された
現在ビットを指示し、そしてPPは、現在原子B(P
P)のバイトを指示する。
れば、ステップ610において、変数I及びPPが初期
化される。変数Iは、ビットマップに対して発生された
現在ビットを指示し、そしてPPは、現在原子B(P
P)のバイトを指示する。
【0090】ステップ620において、現在原子B(P
P)の制御バイトを検査し、それが終止符原子B(T)
であるかどうかを決定する。この場合に、原子シーケン
スのデコードが完了すると、ステップ625から退出と
なる。
P)の制御バイトを検査し、それが終止符原子B(T)
であるかどうかを決定する。この場合に、原子シーケン
スのデコードが完了すると、ステップ625から退出と
なる。
【0091】さもなくば、ステップ630において、現
在原子がオフセットバイトをエンコードするかどうか決
定する。もしそれが真であれば、ステップ640におい
て、手前のギャップのサイズを、もしこれがあれば、制
御バイト又はギャップバイトから計算する。FFIEL
D44の指示されたセンスに基づいてギャップの必要な
ビットを発生し、そしてデコードされたオフセットバイ
トを発生する。ステップ660へと続く。
在原子がオフセットバイトをエンコードするかどうか決
定する。もしそれが真であれば、ステップ640におい
て、手前のギャップのサイズを、もしこれがあれば、制
御バイト又はギャップバイトから計算する。FFIEL
D44の指示されたセンスに基づいてギャップの必要な
ビットを発生し、そしてデコードされたオフセットバイ
トを発生する。ステップ660へと続く。
【0092】さもなくば、もし偽であれば、現在原子B
(PP)はマップビットをエンコードし、そしてステッ
プ650において、ギャップのビットをもしあれば発生
し、マップバイトのビットを回復する。ステップ660
へ続く。
(PP)はマップビットをエンコードし、そしてステッ
プ650において、ギャップのビットをもしあれば発生
し、マップバイトのビットを回復する。ステップ660
へ続く。
【0093】ステップ660において、変数I、PPを
調整し、全ての原子がデコードされるまでステップ61
0へ続く。
調整し、全ての原子がデコードされるまでステップ61
0へ続く。
【0094】バイト整列された原子構造の優雅さは、例
えば、デルタエンコードされたビットマップと比較し
て、圧縮されたビットマップのデコードを相当に高速な
ものとすることが明らかであろう。
えば、デルタエンコードされたビットマップと比較し
て、圧縮されたビットマップのデコードを相当に高速な
ものとすることが明らかであろう。
【0095】ビットマップの合体 更に、エンコードされたビットマップを論理的に合体
(マージ)する方法について説明する。エンコードされ
たビットマップは、例えば、AND、OR、NAND、
NOR、XOR等の論理演算子を、合体されるべきビッ
トマップの対応するエンコードされたバイトに適用する
ことにより合体される。この説明から明らかなように、
これらの演算子は、ビットマップの論理的な交差、結合
及び相違を与えることができる。
(マージ)する方法について説明する。エンコードされ
たビットマップは、例えば、AND、OR、NAND、
NOR、XOR等の論理演算子を、合体されるべきビッ
トマップの対応するエンコードされたバイトに適用する
ことにより合体される。この説明から明らかなように、
これらの演算子は、ビットマップの論理的な交差、結合
及び相違を与えることができる。
【0096】本発明のここに示す方法により2つの原子
シーケンスを合体することは、次の一般的な定義及びル
ールに基づいて行われる。これらのルールは、AND及
びOR演算子と、「0」充填ギャップとを参照して説明
するが、他の論理演算子及び「1」充填ギャップに使用
するようにこれらルール及び手順を拡張することは、自
明であろう。
シーケンスを合体することは、次の一般的な定義及びル
ールに基づいて行われる。これらのルールは、AND及
びOR演算子と、「0」充填ギャップとを参照して説明
するが、他の論理演算子及び「1」充填ギャップに使用
するようにこれらルール及び手順を拡張することは、自
明であろう。
【0097】合体されるべき2つの入力ビットマップ
を、各々左及び右のビットを有する左ビットマップ及び
右ビットマップと定義する。2つのビットマップをエン
コードする圧縮構造体を各々左及び右の原子を有する左
及び右の原子シーケンスと定義する。左及び右の原子シ
ーケンスを合体した後の結果を出力原子シーケンスと定
義する。
を、各々左及び右のビットを有する左ビットマップ及び
右ビットマップと定義する。2つのビットマップをエン
コードする圧縮構造体を各々左及び右の原子を有する左
及び右の原子シーケンスと定義する。左及び右の原子シ
ーケンスを合体した後の結果を出力原子シーケンスと定
義する。
【0098】左及び右の原子シーケンスからの原子を各
々左及び右のバイトへと部分的にデコードする。左及び
右のバイトをギャップバイト又は非ギャップバイトと分
類する。バイトの特定対が同じクラスのものか異なるク
ラスのものかを判断し、ルールI又はルールIIのいず
れかを適用して、出力原子シーケンスに組み込むべき出
力バイトを発生する。
々左及び右のバイトへと部分的にデコードする。左及び
右のバイトをギャップバイト又は非ギャップバイトと分
類する。バイトの特定対が同じクラスのものか異なるク
ラスのものかを判断し、ルールI又はルールIIのいず
れかを適用して、出力原子シーケンスに組み込むべき出
力バイトを発生する。
【0099】ルールI − バイトが異なるクラスの場
合 左又は右のいずれかのビットマップのギャップバイトが
他のビットマップの非ギャップバイトに対応する場合
に、AND演算子については、非ギャップバイトをスキ
ップし、そしてギャップバイトを出力バイトへと複製
し、出力原子シーケンスへと組み込む。OR演算子の場
合には、ギャップバイトをスキップし、非ギャップバイ
トを出力バイトへと複製する。
合 左又は右のいずれかのビットマップのギャップバイトが
他のビットマップの非ギャップバイトに対応する場合
に、AND演算子については、非ギャップバイトをスキ
ップし、そしてギャップバイトを出力バイトへと複製
し、出力原子シーケンスへと組み込む。OR演算子の場
合には、ギャップバイトをスキップし、非ギャップバイ
トを出力バイトへと複製する。
【0100】同様に、圧縮された原子は対称的であるか
ら、スキップ及び複製段階を相補的な仕方で適用するこ
とにより、1充填ギャップが処理される。即ち、1充填
ギャップについては、AND演算子の場合に非ギャップ
バイトを複製しそしてギャップバイトをスキップし、O
R演算子の場合には、ギャップバイトを複製しそして非
ギャップバイトを複製する。
ら、スキップ及び複製段階を相補的な仕方で適用するこ
とにより、1充填ギャップが処理される。即ち、1充填
ギャップについては、AND演算子の場合に非ギャップ
バイトを複製しそしてギャップバイトをスキップし、O
R演算子の場合には、ギャップバイトを複製しそして非
ギャップバイトを複製する。
【0101】ルールII − バイトが同じクラスの場
合 左及び右のバイトがギャップバイトであるか又は両方の
バイトが非ギャップバイトである場合には、例えば、A
NDのような論理演算を行って、合体出力バイトを発生
し、出力原子シーケンスに組み込む。
合 左及び右のバイトがギャップバイトであるか又は両方の
バイトが非ギャップバイトである場合には、例えば、A
NDのような論理演算を行って、合体出力バイトを発生
し、出力原子シーケンスに組み込む。
【0102】図7を参照し、例示的な方法700の段階
を説明する。ステップ710では、次の左バイト及びそ
れに対応する次の右バイトが合体のために左及び右の原
子シーケンスから抽出される。左右のバイトは、各左右
の原子シーケンスを終わりから始めて一般的に非同期で
部分的にデコードすることにより形成される。
を説明する。ステップ710では、次の左バイト及びそ
れに対応する次の右バイトが合体のために左及び右の原
子シーケンスから抽出される。左右のバイトは、各左右
の原子シーケンスを終わりから始めて一般的に非同期で
部分的にデコードすることにより形成される。
【0103】左及び右のシーケンスの原子は、2つの圧
縮されたビットマップがビットごとに同じでない限りそ
して更に2つのビットマップが両方とも同じ方法によっ
てエンコードされない限り、必ずしもビットマップのバ
イトを並列にエンコードしないことにことが明らかであ
る。同期したデコードを行う最適な方法を以下に説明す
る。
縮されたビットマップがビットごとに同じでない限りそ
して更に2つのビットマップが両方とも同じ方法によっ
てエンコードされない限り、必ずしもビットマップのバ
イトを並列にエンコードしないことにことが明らかであ
る。同期したデコードを行う最適な方法を以下に説明す
る。
【0104】ステップ710は、右及び左のバイトを形
成するために、例えば、図6について上記したデコード
方法の後に、デコードされるべき左及び右の原子シーケ
ンスに対する1組の変数を個別に維持するようにモデリ
ングすることができる。
成するために、例えば、図6について上記したデコード
方法の後に、デコードされるべき左及び右の原子シーケ
ンスに対する1組の変数を個別に維持するようにモデリ
ングすることができる。
【0105】ステップ730において、ルールIを適用
する必要があるかルールIIを適用する必要があるかを
決定する。次いで、ステップ740及び750において
適当なルールを適用する。次いで、終了までステップ7
10を続ける。
する必要があるかルールIIを適用する必要があるかを
決定する。次いで、ステップ740及び750において
適当なルールを適用する。次いで、終了までステップ7
10を続ける。
【0106】左及び右の原子シーケンスがオーバーラッ
プしない場合には、「欠落」ビットに対応するバイト
を、論理演算子に対して指示されるように、スキップ、
複製、及び合体することができる。
プしない場合には、「欠落」ビットに対応するバイト
を、論理演算子に対して指示されるように、スキップ、
複製、及び合体することができる。
【0107】ルールI及びルールIIをサポートする際
に、以下のテーブル3に要約するように、ビットマップ
の合体速度を向上するために2つのスキップフラグ及び
3つのバイトマスクが示唆される。これらフラグ及びマ
スクを使用することにより、ルールI及びルールIIの
中心部は、例えば、時間のかかる判断型の命令を必要と
せずに単一の効率的なインライン式の一般的な命令シー
ケンスによって実施することができる。
に、以下のテーブル3に要約するように、ビットマップ
の合体速度を向上するために2つのスキップフラグ及び
3つのバイトマスクが示唆される。これらフラグ及びマ
スクを使用することにより、ルールI及びルールIIの
中心部は、例えば、時間のかかる判断型の命令を必要と
せずに単一の効率的なインライン式の一般的な命令シー
ケンスによって実施することができる。
【0108】テーブル3において、記号「&、|、/、
及び\」は、左(A)及び右(B)のビットマップAに
おける次の論理演算を指示するのに用いられる。 &:交差、即ち、A AND B、 |:結合、即ち、A OR B、 /:差、即ち、A AND(NOT B) \:差、即ち、(NOT A)AND B テーブル3 − スキップフラグ及び合体演算子 演算子 スキップ1 スキップ2 op1 op2 op3 & 1 1 00 00 00 | 0 0 FF FF FF / 1 0 FF 00 00 \ 0 1 00 FF 00
及び\」は、左(A)及び右(B)のビットマップAに
おける次の論理演算を指示するのに用いられる。 &:交差、即ち、A AND B、 |:結合、即ち、A OR B、 /:差、即ち、A AND(NOT B) \:差、即ち、(NOT A)AND B テーブル3 − スキップフラグ及び合体演算子 演算子 スキップ1 スキップ2 op1 op2 op3 & 1 1 00 00 00 | 0 0 FF FF FF / 1 0 FF 00 00 \ 0 1 00 FF 00
【0109】スキップフラグは、左右のバイトを特定の
論理演算子に対してスキップすべきか複製すべきか指示
する。バイトマスクは、次の計算式を使用することによ
り、リストされた論理演算子のいすれかに対し、左バイ
ト(lbyte)及び右バイト(rbyte)から出力
バイト(obyte)を形成するのに使用される。 obyte=((lbyte XOR op1)AND
(rbyte XORop2)XOR op3)
論理演算子に対してスキップすべきか複製すべきか指示
する。バイトマスクは、次の計算式を使用することによ
り、リストされた論理演算子のいすれかに対し、左バイ
ト(lbyte)及び右バイト(rbyte)から出力
バイト(obyte)を形成するのに使用される。 obyte=((lbyte XOR op1)AND
(rbyte XORop2)XOR op3)
【0110】
【発明の効果】本発明の効果として、デジタル像又はデ
ータベース表示を表わしているビットマップは、ビット
マップをバイト的に処理することにより効率的に圧縮及
び合体される。更に、左右の原子が同じである合体され
たビットマップの部分については、非常に多数のビット
をデコードせずに直接処理することができる。例えば、
ここに示すように圧縮されたビットマップを合体するこ
とは、従来のビット方式の又はデルタ圧縮されたデータ
での合体よりも、典型的に、約10ないし30倍も高速
である。別の望ましい効果として、圧縮された形態での
任意のビットの順序付けは、原子バイト整列のシーケン
スにも保持され、本発明の圧縮技術を、順序に敏感なビ
ットマップに対して特に有用なものとする。
ータベース表示を表わしているビットマップは、ビット
マップをバイト的に処理することにより効率的に圧縮及
び合体される。更に、左右の原子が同じである合体され
たビットマップの部分については、非常に多数のビット
をデコードせずに直接処理することができる。例えば、
ここに示すように圧縮されたビットマップを合体するこ
とは、従来のビット方式の又はデルタ圧縮されたデータ
での合体よりも、典型的に、約10ないし30倍も高速
である。別の望ましい効果として、圧縮された形態での
任意のビットの順序付けは、原子バイト整列のシーケン
スにも保持され、本発明の圧縮技術を、順序に敏感なビ
ットマップに対して特に有用なものとする。
【0111】本発明を好ましい実施例について説明した
が、多数の他の変更や修正がなされ得ることが明らかで
あろう。従って、それらの等価な構成は本発明の特許請
求の範囲の精神及び範囲内に包含されるものとする。
が、多数の他の変更や修正がなされ得ることが明らかで
あろう。従って、それらの等価な構成は本発明の特許請
求の範囲の精神及び範囲内に包含されるものとする。
【図1】本発明を使用することのできるコンピュータシ
ステムのブロック図である。
ステムのブロック図である。
【図2】本発明の原理を用いて圧縮できるビットマップ
のブロック図である。
のブロック図である。
【図3】本発明によるバイト整列され圧縮された原子の
ブロック図である。
ブロック図である。
【図4】バイト整列され圧縮された原子の別の形態を示
すブロック図である。
すブロック図である。
【図5】図2のビットマップを図3及び4の原子シーケ
ンスにエンコードするための手順を示すブロック図であ
る。
ンスにエンコードするための手順を示すブロック図であ
る。
【図6】原子シーケンスをビットマップにデコードする
手順のブロック図である。
手順のブロック図である。
【図7】原子シーケンスを論理的に操作する手順を示す
ブロック図である。
ブロック図である。
1 コンピュータシステム 2 中央処理ユニット(CPU) 3 メモリ 4 バス 20 ビットマップ 21 ビット 22 バイト 30 バイト整列された原子 40 制御バイト(CBYTE) 41 タイプフィールド(TFIELD) 44 充填フィールド(FFIELD) 45 データフィールド(DFIELD) 50 ギャップバイト(GBYTE) 60 ビットマップバイト(MBYTE)
Claims (9)
- 【請求項1】 コンピュータシステムにおいて、データ
を圧縮する方法が、 データをコンピュータシステムのメモリの第1組のバイ
トに記憶し、該バイトの組の各バイトは、論理値を記憶
するための同じ数のビットを含み、 上記第1組のバイトの1つのバイトをそのバイトの各ビ
ットが同じ論理値を記憶する場合にギャップバイトとし
て分類し、さもなくば、上記バイトをマップバイトとし
て分類し、 隣接する同じ分類のバイトをグループに編成し、 各グループのギャップバイトに対し、そのグループのギ
ャップバイトにおけるビットの数を表す第1ビットシー
ケンスを上記メモリの第2組の順序付けされたバイトに
記憶し、 各グループのマップバイトに対し、そのグループのマッ
プバイトにおけるビットの数を表す第2ビットシーケン
スを上記第2の順序付けされた組のバイトに記憶し、上
記第2組のバイトは、上記第1組のバイトに対応する順
序を有するものであることを特徴とする方法。 - 【請求項2】 特定グループのギャップバイトの上記ビ
ットが全て0か又は全て1を記憶する場合を感知し、 上記特定グループのギャップバイトに対応する特定の第
1ビットシーケンスに関連したフラグを記憶し、このフ
ラグは、上記特定グループのギャップバイトの上記ビッ
トの感知を表すものである請求項1に記載の方法。 - 【請求項3】 マップバイトのグループの第1バイトが
その直前のギャップバイトのグループと厳密に1ビット
異なる場合を感知し、そして上記感知に応答して、上記
第1バイトを上記第2組のバイトにビットオフセットと
して記憶し、このビットオフセットは、上記手前のギャ
ップバイトのグループを表す対応する第1ビットシーケ
ンスに関連され、このビットオフセットは、上記第1バ
イトにおける上記1つの異なるビットの位置を表す請求
項2に記載の方法。 - 【請求項4】 上記第2組のバイトを複数のアトムとし
て編成し、これらアトムの各々は、上記第1ビットシー
ケンス、上記第2ビットシーケンス及び上記フラグを記
憶するための制御バイトを含む請求項3に記載の方法。 - 【請求項5】 上記ギャップバイトのグループにおける
ビットの数が所定数よりも大きい場合に上記制御バイト
に続くバイトに上記第1ビットシーケンスを記憶する請
求項4に記載の方法。 - 【請求項6】 データを記憶するための第1組のバイト
を有するメモリを備え、各バイトは、データを表す論理
値を記憶するための複数のビットを含み、これら論理値
は、1又は0のいずれかであり、 更に、上記第1組のバイトの1つのバイトを、そのバイ
トの上記複数のビットが全部同じ論理値を記憶する場合
はギャップバイトとして分類し、さもなくば、上記バイ
トをマップバイトとして分類するための手段と、 同じ分類を有する隣接バイトにおけるビットの数をカウ
ントする手段と、 隣接するギャップバイトの各グループに対し、上記カウ
ントされたビット数を表す第1ビットシーケンスを上記
メモリの第2組のバイトに記憶するための手段と、 隣接するマップバイトの各グループに対し、上記カウン
トされたビット数を表す第2ビットシーケンスを上記第
2組のバイトに記憶するための手段と、 上記隣接するマップバイトのグループを上記第2組のバ
イトに記憶するための手段とを備え、上記第1及び第2
組のバイトの順序は互いに対応することを特徴とするデ
ータ圧縮装置。 - 【請求項7】 ギャップバイトの特定グループが全て0
か又は全て1を記憶する場合を感知する手段と、 特定の第1ビットシーケンスに関連したフラグであっ
て、上記ギャップバイトの特定グループのビットの感知
を表すフラグを記憶するための手段とを更に備えた請求
項6に記載の装置。 - 【請求項8】 マップバイトのグループの第1バイトが
その直前のギャップバイトのグループとは厳密に1ビッ
ト異なる場合を感知する手段と、 上記感知手段に応答して、上記第1バイトを上記第2組
のバイトにビットオフセットとして記憶するための手段
とを更に備え、上記ビットオフセットは、上記手前のギ
ャップバイトのグループを表す対応する第1ビットシー
ケンスに関連され、上記ビットオフセットは、上記第1
バイトにおける上記1つの異なるバイトの位置を表すも
のである請求項7に記載の装置。 - 【請求項9】 データを記憶装置のソースバイトセット
に記憶し、各ソースバイトは複数のビットを有し、各ビ
ットは論理0か又は論理1を記憶するものであり、 上記ソースバイトセットの特定バイトの上記複数のビッ
トが全部同じ論理値を記憶する場合を決定し、 真の決定に応答して、上記特定バイトをギャップバイト
として分類し、さもなくば、上記特定バイトをマップバ
イトとして分類し、 上記のソースバイトセットのうちの隣接する同じ分類の
バイトをグループ編成し、 上記隣接する同じ分類のバイトの各グループにおける上
記ビットの数をカウントし、 上記分類されたギャップバイトの各グループに対し、上
記ギャップバイトのグループの上記カウントされたビッ
トの数を表すギャップビットシーケンスを上記記憶装置
の行き先バイトセットに記憶し、 上記分類されたマップバイトの各グループに対し、上記
マップバイトのグループの上記カウントされたビットの
数を表すマップビットシーケンスを上記記憶装置の上記
行き先バイトセットに記憶し、 上記分類されたマップバイトの各グループを上記記憶装
置の上記行き先バイトセットに記憶し、上記ソース及び
行き先バイトセットの順序は互いに対応することを特徴
とするデータ圧縮方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/142,640 US5363098A (en) | 1993-10-25 | 1993-10-25 | Byte aligned data compression |
US08/142640 | 1993-10-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07160473A JPH07160473A (ja) | 1995-06-23 |
JP2581903B2 true JP2581903B2 (ja) | 1997-02-19 |
Family
ID=22500699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6256356A Expired - Lifetime JP2581903B2 (ja) | 1993-10-25 | 1994-10-21 | バイト整列式データ圧縮方法及び装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5363098A (ja) |
EP (1) | EP0650264B1 (ja) |
JP (1) | JP2581903B2 (ja) |
DE (1) | DE69413347T2 (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5504929A (en) * | 1993-11-17 | 1996-04-02 | Adobe Systems Incorporated | Method and apparatus for encoding byte sequence for self-clocked high speed data transfer from a parallel port |
JP2715871B2 (ja) * | 1993-12-20 | 1998-02-18 | 日本電気株式会社 | 可変長符号化方法 |
US5502439A (en) * | 1994-05-16 | 1996-03-26 | The United States Of America As Represented By The United States Department Of Energy | Method for compression of binary data |
US5940833A (en) * | 1996-07-12 | 1999-08-17 | Microsoft Corporation | Compressing sets of integers |
US5870271A (en) * | 1997-02-19 | 1999-02-09 | Applied Materials, Inc. | Pressure actuated sealing diaphragm for chucks |
US6057790A (en) * | 1997-02-28 | 2000-05-02 | Fujitsu Limited | Apparatus and method for data compression/expansion using block-based coding with top flag |
US5907297A (en) * | 1997-02-28 | 1999-05-25 | Oracle Corporation | Bitmap index compression |
US5977889A (en) * | 1997-06-05 | 1999-11-02 | International Business Machines Corporation | Optimization of data representations for transmission of storage using differences from reference data |
US6085289A (en) * | 1997-07-18 | 2000-07-04 | International Business Machines Corporation | Method and system for load data formatting and improved method for cache line organization |
US6112208A (en) * | 1997-08-25 | 2000-08-29 | Fujitsu Limited | Data compressing method and apparatus to generate bit maps in accordance with extracted data symbols |
NL1009763C2 (nl) * | 1998-07-29 | 2000-02-01 | Koninkl Kpn Nv | Werkwijze en stelsel voor het overdragen van een reeks data-elementen met uitsluiting van bepaalde bijzondere data-elementen. |
US6504495B1 (en) * | 1999-02-17 | 2003-01-07 | Arm Limited | Clipping data values in a data processing system |
US7007037B2 (en) * | 2000-07-31 | 2006-02-28 | Oracle International Corporation | Opaque types |
EP1217541A1 (en) | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Method of processing queries in a database system, and database system and software product for implementing such method |
EP1217540A1 (en) | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Methods of organizing data and processing queries in a database system, and database system and software product for implementing such method |
JP2004534981A (ja) * | 2000-11-29 | 2004-11-18 | ラファイエット・ソフトウェア・インコーポレーテッド | データベース・システムでデータを編成し、問合せを処理する方法、およびそのような方法を実施するためのデータベース・システムおよびソフトウェア製品 |
EP1211611A1 (en) * | 2000-11-29 | 2002-06-05 | Lafayette Software Inc. | Methods of encoding and combining integer lists |
US6826563B1 (en) | 2001-05-29 | 2004-11-30 | Oracle International Corporation | Supporting bitmap indexes on primary B+tree like structures |
US7580927B1 (en) | 2001-05-29 | 2009-08-25 | Oracle International Corporation | Quadtree center tile/boundary tile optimization |
US7054872B1 (en) | 2001-05-29 | 2006-05-30 | Oracle International Corporation | Online tracking and fixing of invalid guess-DBAs in secondary indexes and mapping tables on primary B+tree structures |
US6859808B1 (en) | 2001-05-31 | 2005-02-22 | Oracle International Corporation | Mapping logical row identifiers for primary B+tree-like structures to physical row identifiers |
TW505848B (en) * | 2001-06-01 | 2002-10-11 | Far Stone Tech Inc | Backup/recovery system and method regarding the same |
US6708178B1 (en) * | 2001-06-04 | 2004-03-16 | Oracle International Corporation | Supporting B+tree indexes on primary B+tree structures with large primary keys |
US6831575B2 (en) * | 2002-11-04 | 2004-12-14 | The Regents Of The University Of California | Word aligned bitmap compression method, data structure, and apparatus |
US7467150B2 (en) * | 2005-10-25 | 2008-12-16 | Oracle International Corproation | Block-aware encoding of bitmap for bitmap index eliminating max-slot restriction |
US8243340B2 (en) * | 2006-02-23 | 2012-08-14 | Microsoft Corporation | Pre-processing of image data for enhanced compression |
US7609179B2 (en) * | 2008-01-08 | 2009-10-27 | International Business Machines Corporation | Method for compressed data with reduced dictionary sizes by coding value prefixes |
US8238677B2 (en) * | 2008-03-07 | 2012-08-07 | International Business Machines Corporation | Adaptive lossless data compression method for compression of color image data |
FR2929778B1 (fr) * | 2008-04-07 | 2012-05-04 | Canon Kk | Procedes et dispositifs de codage et de decodage binaire iteratif pour documents de type xml. |
US8023755B2 (en) * | 2008-05-15 | 2011-09-20 | International Business Machines Corporation | Generating subimages of an image to use to represent the image |
EP2462696A1 (en) * | 2009-08-07 | 2012-06-13 | Algorhyme A/S | Compression of bitmaps and values |
US8989507B2 (en) | 2010-07-05 | 2015-03-24 | International Business Machines Corporation | Bitmap compression for fast searches and updates |
CN103262424B (zh) * | 2010-11-02 | 2016-10-19 | 简·克劳德·科林 | 用于压缩图像、音频和/或视频文件的数字值的方法 |
US8442988B2 (en) | 2010-11-04 | 2013-05-14 | International Business Machines Corporation | Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data |
US8515882B2 (en) | 2010-11-18 | 2013-08-20 | International Business Machines Corporation | Efficient storage of individuals for optimization simulation |
US8489526B2 (en) | 2010-11-24 | 2013-07-16 | International Business Machines Corporation | Controlling quarantining and biasing in cataclysms for optimization simulations |
US9251197B2 (en) | 2011-06-27 | 2016-02-02 | Jethrodata Ltd. | System, method and data structure for fast loading, storing and access to huge data sets in real time |
US9563844B2 (en) | 2011-06-30 | 2017-02-07 | International Business Machines Corporation | Speculative asynchronous sub-population evolutionary computing utilizing a termination speculation threshold |
US20130063475A1 (en) * | 2011-09-09 | 2013-03-14 | Microsoft Corporation | System and method for text rendering |
JP5685683B2 (ja) * | 2011-10-28 | 2015-03-18 | 株式会社Gnzo | バイトアラインメント装置及びバイトアラインメント方法 |
GB2496423B (en) * | 2011-11-11 | 2016-08-17 | Ibm | Data compression |
US9165247B2 (en) | 2012-01-04 | 2015-10-20 | International Business Machines Corporation | Using global and local catastrophes across sub-populations in parallel evolutionary computing |
US9305257B2 (en) | 2013-05-20 | 2016-04-05 | International Business Machines Corporation | Adaptive cataclysms in genetic algorithms |
US10644721B2 (en) | 2018-06-11 | 2020-05-05 | Tenstorrent Inc. | Processing core data compression and storage system |
CN111178490B (zh) | 2019-12-31 | 2021-08-24 | 北京百度网讯科技有限公司 | 数据输出方法、获取方法、装置和电子设备 |
CN111597239B (zh) * | 2020-04-10 | 2021-08-31 | 中科驭数(北京)科技有限公司 | 数据对齐的方法及装置 |
US11677416B2 (en) * | 2021-05-17 | 2023-06-13 | Radu Mircea Secareanu | Hardware implementable data compression/decompression algorithm |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3656178A (en) * | 1969-09-15 | 1972-04-11 | Research Corp | Data compression and decompression system |
US4495639A (en) * | 1982-03-08 | 1985-01-22 | Halliburton Company | Electronic data compressor |
US4606002A (en) * | 1983-05-02 | 1986-08-12 | Wang Laboratories, Inc. | B-tree structured data base using sparse array bit maps to store inverted lists |
US4610027A (en) * | 1983-12-30 | 1986-09-02 | International Business Machines Corporation | Method for converting a bit map of an image to a run length or run end representation |
SE8307228D0 (sv) * | 1983-12-30 | 1983-12-30 | Grundstenen 16808 Ab | Datakomprimering |
US4630030A (en) * | 1984-06-28 | 1986-12-16 | Wang Laboratories, Inc. | Compression of data for storage |
US4684923A (en) * | 1984-09-17 | 1987-08-04 | Nec Corporation | Encoder with selective indication of compression encoding and decoder therefor |
US4626824A (en) * | 1985-06-11 | 1986-12-02 | International Business Machines Corporation | Apparatus and algorithm for compressing and decompressing data |
US4626829A (en) * | 1985-08-19 | 1986-12-02 | Intelligent Storage Inc. | Data compression using run length encoding and statistical encoding |
US4841299A (en) * | 1987-08-31 | 1989-06-20 | Digital Recording Research Limited Partnership | Method and apparatus for digital encoding and decoding |
US4868570A (en) * | 1988-01-15 | 1989-09-19 | Arthur D. Little, Inc. | Method and system for storing and retrieving compressed data |
US5006849A (en) * | 1989-07-26 | 1991-04-09 | Astro, Inc. | Apparatus and method for effecting data compression |
US4988998A (en) * | 1989-09-05 | 1991-01-29 | Storage Technology Corporation | Data compression system for successively applying at least two data compression methods to an input data stream |
US5049881A (en) * | 1990-06-18 | 1991-09-17 | Intersecting Concepts, Inc. | Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique |
-
1993
- 1993-10-25 US US08/142,640 patent/US5363098A/en not_active Expired - Lifetime
-
1994
- 1994-10-06 EP EP94307332A patent/EP0650264B1/en not_active Expired - Lifetime
- 1994-10-06 DE DE69413347T patent/DE69413347T2/de not_active Expired - Fee Related
- 1994-10-21 JP JP6256356A patent/JP2581903B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH07160473A (ja) | 1995-06-23 |
DE69413347T2 (de) | 1999-05-06 |
EP0650264A1 (en) | 1995-04-26 |
US5363098A (en) | 1994-11-08 |
EP0650264B1 (en) | 1998-09-16 |
DE69413347D1 (de) | 1998-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2581903B2 (ja) | バイト整列式データ圧縮方法及び装置 | |
JP3009727B2 (ja) | 改良形データ圧縮装置 | |
US7358874B2 (en) | Data compression using a stream selector with edit-in-place capability for compressed data | |
US7079051B2 (en) | In-place differential compression | |
US5870036A (en) | Adaptive multiple dictionary data compression | |
US5058144A (en) | Search tree data structure encoding for textual substitution data compression systems | |
EP0951753B1 (en) | Computer sorting system for data compression | |
Franaszek et al. | Parallel compression with cooperative dictionary construction | |
EP0691628A2 (en) | Data compression method and system | |
US6225922B1 (en) | System and method for compressing data using adaptive field encoding | |
JPH07226846A (ja) | 入力データストリームの処理方法及び圧縮フォーマットの生成方法 | |
Hsu et al. | Automatic synthesis of compression techniques for heterogeneous files | |
Lin | A hardware architecture for the LZW compression and decompression algorithms based on parallel dictionaries | |
Cinque et al. | Scalability and communication in parallel low-complexity lossless compression | |
EP0340039B1 (en) | Search tree data structure encoding for textual substitution data compression systems | |
Haque et al. | Study on data compression technique | |
EP0340041B1 (en) | Start, step, stop unary coding for data compression | |
Bharathi et al. | A plain-text incremental compression (pic) technique with fast lookup ability | |
JPH0628149A (ja) | 複数種類データのデータ圧縮方法 | |
Doshi et al. | “Quad-Byte Transformation as a Pre-processing to Arithmetic Coding | |
Nahar et al. | Data compression methods and analysis | |
Mesut et al. | A New Approach to Dictionary-Based Lossless Compression | |
Mesut et al. | ISSDC: Digram coding based lossless data compression algorithm | |
Höglund | Lightweight Real-Time Lossless Software Compression of Trace Data | |
Perl et al. | Cascading LZW algorithm with huffman coding: A variable to variable length compression algorithm |