JP2015159352A - データ圧縮装置、データ圧縮方法、及びプログラム - Google Patents

データ圧縮装置、データ圧縮方法、及びプログラム Download PDF

Info

Publication number
JP2015159352A
JP2015159352A JP2014031916A JP2014031916A JP2015159352A JP 2015159352 A JP2015159352 A JP 2015159352A JP 2014031916 A JP2014031916 A JP 2014031916A JP 2014031916 A JP2014031916 A JP 2014031916A JP 2015159352 A JP2015159352 A JP 2015159352A
Authority
JP
Japan
Prior art keywords
data
block
data string
address
string
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.)
Ceased
Application number
JP2014031916A
Other languages
English (en)
Inventor
井谷 宣子
Nobuko Itani
宣子 井谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014031916A priority Critical patent/JP2015159352A/ja
Priority to US14/594,476 priority patent/US20150242433A1/en
Publication of JP2015159352A publication Critical patent/JP2015159352A/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】繰り返し出現するデータ列を含む長いデータ列をより高速に圧縮する。【解決手段】データ格納部511は、複数のブロックに分割された圧縮対象データ列を格納する。アドレス格納部512は、第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後のデータ列の順序で、それらのアドレスを表す複数のアドレス情報を格納する。検出部513は、アドレス格納部512に格納された複数のアドレス情報に基づいて、第1のブロック内の複数のデータ列のうち第1のデータ列と一致する第2のデータ列を、第1のブロック内で探索する。そして、第1のブロック内に第2のデータ列が含まれていない場合、検出部513は、複数のブロックのうち第2のブロックを参照して第2のデータ列を検出する。符号化部514は、検出された第2のデータ列の情報に基づいて第1のデータ列を符号化し、符号化された第1のデータ列を出力する。【選択図】図5

Description

本発明は、データ圧縮装置、データ圧縮方法、及びプログラムに関する。
近年、文字データ、音声データ、画像データ等の様々な種類の電子データがコンピュータにより処理されており、処理されるデータ量も増大している。このような大量のデータを処理する場合、データ中の冗長な部分を省いて圧縮することにより、データを格納する記憶装置の容量を削減したり、データの転送時間を短縮したりすることができる。
従来のデータ圧縮アルゴリズムの1つとして、LZ77符号化が提案されている(例えば、非特許文献1を参照)。LZ77符号化では、圧縮対象データ列中に繰り返し出現するデータ列を、過去に出現した同じデータ列の位置と長さの組み合わせに置き換えることで、データ量を削減することができる。
図1は、LZ77符号化によるデータ圧縮処理の例を示している。図1の入力文字列のうち、符号化位置101から始まる第1の文字列と一致する第2の文字列が探索され、第2の文字列の位置と長さの組み合わせを用いて、第1の文字列が符号化される。符号化位置101は、符号化が進むにつれて後方にシフトする。
例えば、符号化位置101から始まる文字列“abcdef...”が符号化されるとき、符号化位置101より前方で一致する文字列(一致文字列)は“abcdef”である。そこで、この一致文字列の先頭位置と符号化位置101の相対アドレス“18(バイト)”を一致位置とし、一致文字列の長さ“6(バイト)”を一致長として、(一致位置,一致長)=(18,6)のような符号が生成される。これにより、符号化位置101から始まる文字列“abcdef”が(18,6)に置き換えられる。
図2は、このようなデータ圧縮処理の例を示すフローチャートである。まず、データ圧縮装置は、符号化位置より前方の文字列中で符号化位置から始まる文字列と一致する文字列(一致文字列)を探索し(ステップ201)、一致文字列が見つかったか否かをチェックする(ステップ202)。一致文字列が見つからなかった場合(ステップ202,NO)、データ圧縮装置は、一致文字列が見つからなかった部分(非一致部分)の長さをカウントする(ステップ207)。そして、データ圧縮装置は、符号化位置を後方へシフトし、ステップ201以降の処理を繰り返す。
一方、一致文字列が見つかった場合(ステップ202,YES)、データ圧縮装置は、符号化位置の直前の文字が非一致部分であるか否かをチェックする(ステップ203)。直前の文字が非一致部分である場合(ステップ203,YES)、データ圧縮装置は、非一致部分の文字列を符号化する(ステップ204)。そして、データ圧縮装置は、符号化位置から始まる文字列を、一致文字列の一致位置及び一致長を用いて符号化する(ステップ205)。
一方、直前の文字が非一致部分でない場合(ステップ203,NO)、データ圧縮装置は、ステップ205の処理を行う。
次に、データ圧縮装置は、入力文字列の符号化が終了したか否かをチェックし(ステップ206)、入力文字列の符号化が終了していない場合(ステップ206,NO)、符号化位置を後方へシフトして、ステップ201以降の処理を繰り返す。そして、入力文字列の符号化が終了した場合(ステップ206,YES)、データ圧縮装置は、処理を終了する。
なお、ステップ206において、入力文字列の最後尾に非一致部分が残されている場合、データ圧縮装置は、その非一致部分の文字列を符号化してから処理を終了する。
こうして圧縮された入力文字列を復元する際には、一致位置から一致長分の文字列をコピーすることで、一致文字列と同じ繰返し文字列が復元される。LZ77符号化により圧縮された文字列は、単純なコピーにより復元することができるため、復元処理を高速に行うことが可能である。
図3は、図1の入力文字列から一致文字列を探索するための一致位置リストを生成する処理の例を示している(例えば、特許文献1を参照)。図3の一致位置リスト303は、順位リスト302から生成され、入力バッファ301内の各文字列のアドレスから最近出現した一致文字列の一致位置を求めるための情報を格納する。この例では、入力バッファ301内の各文字列として、“0”〜“31”の各アドレスから始まる3文字(3バイト)の文字列(接頭部)が用いられている。
まず、入力バッファ301の各アドレスから始まる接頭部の値に基づいて、それらのアドレスをソートすることで、順位リスト302が生成される。次に、順位リスト302において同じ接頭部に対応する複数のアドレスのうち、隣接する2つのアドレスの差分から最近出現した一致文字列の一致位置が求められる。そして、入力バッファ301と同じ“0”〜“31”のアドレスを有する一致位置リスト303の各アドレスに、求められた一致位置の情報が格納される。
例えば、順位リスト302において接頭部“abc”に対応するアドレス“6”とアドレス“12”の差分“6”は、入力バッファ301のアドレス“12”から始まる接頭部“abc”の一致位置を表している。そこで、一致位置リスト303のアドレス“12”に差分“6”が格納される。
また、順位リスト302において接頭部“def”に対応するアドレス“3”とアドレス“21”の差分“18”は、入力バッファ301のアドレス“21”から始まる接頭部“def”の一致位置を表している。そこで、一致位置リスト303のアドレス“21”に差分“18”が格納される。
さらに、順位リスト302において直前の接頭部が異なる場合は、一致文字列が存在しないことを示すために、一致位置リスト303の対応するアドレスに差分“0”が格納される。
こうして生成された一致位置リスト303は、図4に示すように、符号化位置から始まる接頭部と同じ文字列が出現した複数の一致位置を示すリンクドリストとして用いることができる。例えば、符号化位置がアドレス“26”である場合、同じ接頭部“abc”が出現した一致位置は、アドレス“18”、アドレス“12”、アドレス“6”、及びアドレス“0”の4箇所である。これらの一致位置を順に辿ることによって、符号化位置から始まる文字列とより長く一致する文字列を求めることができ、圧縮率が向上する。
データベースオペレーションにおいて、2つのリストをそれぞれソートした後にソートされた2つのリストをマージして1つのリストを生成する、マージソートも知られている(例えば、非特許文献2を参照)。
また、ブロック単位に分割されたデータストリームを圧縮するデータ圧縮方法も知られている(例えば、特許文献2を参照)。
特開2001−345710号公報 国際公開第2009/057459号パンフレット
Fiala, E., and Greene, D., "Data Compression with Finite Windows", Communications of the ACM, 32(4), April 1989, 490-505. Satish, N et al.,"Fast Sort on CPUs and GPUs: A Case for Bandwidth Oblivious SIMD Sort", Proceedings of the ACM SIGMOD International Conference on Management of Data, 2010, 351-362.
上述した従来のデータ圧縮技術には、以下のような問題がある。
図3の一致位置リスト303を用いたデータ圧縮処理では、入力バッファ301の各アドレスから始まる接頭部の値に基づいて、それらのアドレスをソートすることで、順位リスト302が生成される。
このとき、ソート対象である入力バッファ301の全体に渡ってランダムアクセスが行われる。ここで、入力バッファ301のサイズが大きくなると、コンピュータの中央処理装置(CPU)に設けられた1次キャッシュメモリ内に、入力バッファ301と順位リスト302とを格納することが難しくなる。そこで、1次キャッシュメモリより容量の大きな2次キャッシュメモリが利用される。
しかし、2次キャッシュメモリのアクセス速度は、1次キャッシュメモリのアクセス速度よりも低速であるため、2次キャッシュメモリを利用してソートを行うと、順位リスト302を生成するための処理時間が長くなる。このため、1次キャッシュメモリに対するランダムアクセスの高速性が損なわれ、処理速度が10分の1程度に低下する場合もある。
なお、かかる問題は、圧縮対象データ列が文字列である場合に限らず、圧縮対象データ列が音声データ、画像データ等の他のデータ列である場合においても生ずるものである。また、かかる問題は、LZ77符号化によるデータ圧縮処理に限らず、圧縮対象データ列中に繰り返し出現するデータ列を符号化する他のデータ圧縮処理においても生ずるものである。
1つの側面において、本発明は、繰り返し出現するデータ列を含む長いデータ列をより高速に圧縮することを目的とする。
1つの案では、データ圧縮装置は、データ格納部、アドレス格納部、検出部、及び符号化部を含む。
データ格納部は、複数のブロックに分割された圧縮対象データ列を格納する。データ格納部は、それらのブロックのうち第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後のデータ列の順序で、それらのアドレスを表す複数のアドレス情報を格納する。
検出部は、それらのアドレス情報に基づいて、第1のデータ列と一致する第2のデータ列を第1のブロック内で探索し、第1のブロック内に第2のデータ列が含まれていない場合、複数のブロックのうち第2のブロックを参照して第2のデータ列を検出する。符号化部は、検出された第2のデータ列の情報に基づいて第1のデータ列を符号化して出力する。
1つの実施形態によれば、繰り返し出現するデータ列を含む長いデータ列をより高速に圧縮することができる。
LZ77符号化によるデータ圧縮処理を示す図である。 LZ77符号化によるデータ圧縮処理のフローチャートである。 一致位置リストを生成する処理を示す図である。 入力バッファと一致位置リストを示す図である。 データ圧縮装置の機能的構成図である。 データ圧縮処理のフローチャートである。 データ圧縮装置の具体例を示す図である。 圧縮対象データ列を2つのブロックに分割した場合を示す図である。 圧縮対象データ列を4つのブロックに分割した場合を示す図である。 一致位置リスト生成処理のフローチャートである。 一致位置リスト生成処理の具体例を示すフローチャート(その1)である。 一致位置リスト生成処理の具体例を示すフローチャート(その2)である。 情報処理装置のハードウェア構成図である。
以下、図面を参照しながら、実施形態を詳細に説明する。
上述したように、図3の一致位置リスト303を用いたデータ圧縮処理では、入力バッファ301の各アドレスから始まる接頭部の値に基づいて、それらのアドレスをソートすることで、順位リスト302が生成される。
このとき、ソート対象である入力バッファ301の全体に渡ってランダムアクセスが行われる。ここで、入力バッファ301のサイズが大きくなると、コンピュータの中央処理装置(CPU)に設けられた1次キャッシュメモリ内に、入力バッファ301と順位リスト302とを格納することが難しくなる。そこで、1次キャッシュメモリより容量の大きな2次キャッシュメモリが利用される。
しかし、2次キャッシュメモリのアクセス速度は、1次キャッシュメモリのアクセス速度よりも低速であるため、2次キャッシュメモリを利用してソートを行うと、順位リスト302を生成するための処理時間が長くなる。このため、1次キャッシュメモリに対するランダムアクセスの高速性が損なわれ、処理速度が10分の1程度に低下する場合もある。
なお、かかる問題は、圧縮対象データ列が文字列である場合に限らず、圧縮対象データ列が音声データ、画像データ等の他のデータ列である場合においても生ずるものである。また、かかる問題は、LZ77符号化によるデータ圧縮処理に限らず、圧縮対象データ列中に繰り返し出現するデータ列を符号化する他のデータ圧縮処理においても生ずるものである。
図5は、実施形態のデータ圧縮装置の機能的構成例を示している。図5のデータ圧縮装置501は、データ格納部511、アドレス格納部512、検出部513、及び符号化部514を含む。
データ格納部511は、複数のブロックに分割された圧縮対象データ列を格納する。アドレス格納部512は、それらのブロックのうち第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後のデータ列の順序で、それらのアドレスを表す複数のアドレス情報を格納する。
検出部513は、アドレス格納部512に格納された複数のアドレス情報に基づいて、第1のデータ列と一致する第2のデータ列を探索し、符号化部514は、検出された第2のデータ列の情報に基づいて第1のデータ列を符号化する。
図6は、図5のデータ圧縮装置501が行うデータ圧縮処理の例を示すフローチャートである。
検出部513は、アドレス格納部512に格納された複数のアドレス情報に基づいて、第1のブロック内の複数のデータ列のうち第1のデータ列と一致する第2のデータ列を、第1のブロック内で探索する(ステップ601)。そして、第1のブロック内に第2のデータ列が含まれていない場合、検出部513は、複数のブロックのうち第2のブロックを参照して第2のデータ列を検出する(ステップ602)。
符号化部514は、検出された第2のデータ列の情報に基づいて第1のデータ列を符号化し、符号化された第1のデータ列を出力する(ステップ603)。
図5のデータ圧縮装置501によれば、繰り返し出現するデータ列を含む長いデータ列をより高速に圧縮することができる。
図7は、図5のデータ圧縮装置501の具体例を示している。図7のデータ圧縮装置501は、データ格納部511、アドレス格納部512、検出部513、符号化部514、ソート部701、及び一致位置格納部702を含む。
データ格納部511は、図3の入力バッファ301に対応し、複数のブロックに分割された圧縮対象データ列711を、入力順に前方から後方へ向かって格納する。
ソート部701は、データ格納部511において、圧縮対象データ列711の各ブロック内の各アドレスを始点とするデータ列を、データ列の内容に基づいて並べ替える。このとき、ソート部701は、複数の同じデータ列が互いに隣接するようにデータ列を並べ替える。そして、ソート部701は、並べ替えた後のデータ列の順序で各データ列のアドレス情報を保持する順位リスト712を生成し、アドレス格納部512に格納する。
検出部513は、順位リスト712のアドレス情報に基づいて、圧縮対象データ列711中に繰り返し出現するデータ列を検出する。そして、検出部513は、各データ列と一致するデータ列(一致データ列)の先頭位置(一致位置)を表す位置情報を保持する一致位置リスト713を生成し、一致位置格納部702に格納する。
符号化部514は、一致位置リスト713の位置情報に基づいて、圧縮対象データ列711を符号化して圧縮データを生成し、生成した圧縮データを出力する。
図8は、図1の入力文字列を圧縮対象データ列711として用いて一致位置リスト713を生成する処理の例を示している。この例では、32バイトの圧縮対象データ列711がデータ格納部511の前方から後方へ向かって、“0”〜“31”のアドレスに格納され、圧縮対象データ列711は、ブロック801とブロック802の2つのブロックに分割されている。各ブロックのサイズは16バイトである。
ブロック801は、圧縮対象データ列711の“0”〜“15”のアドレスに対応し、ブロック802は、“16”〜“31”のアドレスに対応する。各ブロックは、“0”〜“15”のブロック内アドレスを有する。
ソート部701は、各ブロック内アドレスから始まる3バイトの文字列(接頭部)の値の昇順に、各ブロック内の16個の接頭部をソートし、順位リスト811及び順位リスト812を生成する。順位リスト811及び順位リスト812は、図7の順位リスト712に対応する。また、順位リスト811及び順位リスト812は、ブロック801及びブロック802にそれぞれ対応し、ソート後の接頭部の順序で各接頭部の先頭位置のブロック内アドレスを保持している。
検出部513は、順位リスト811及び順位リスト812の各々において、同じ接頭部に対応する複数のブロック内アドレスのうち、隣接する2つのブロック内アドレスの差分から最近出現した一致文字列の一致位置を求める。順位リスト801と順位リスト802の両方に同じ接頭部に対応するブロック内アドレスが含まれている場合、検出部513は、それらのブロック内アドレスに基づいて一致位置を求める。
そして、検出部513は、“0”〜“15”のブロック内アドレスを有する一致位置リスト821及び一致位置リスト822に、求めた一致位置を表す位置情報を格納する。一致位置リスト821及び一致位置リスト822は、図7の一致位置リスト713に対応する。
例えば、順位リスト812において接頭部“abc”に対応するブロック内アドレス“10”とブロック内アドレス“13”の差分“3”は、ブロック802のブロック内アドレス“13”から始まる接頭部“abc”の一致位置を表している。そこで、一致位置リスト822のブロック内アドレス“13”に差分“3”が格納される。
また、順位リスト811において最も後方の接頭部“abc”に対応するブロック内アドレス“12”と、順位リスト812において最も前方の接頭部“abc”に対応するブロック内アドレス“2”との差分は、“−10”である。“−10”を圧縮対象データ列711におけるアドレスの差分に換算すると、“6”が得られる。この差分“6”は、ブロック802のブロック内アドレス“2”から始まる接頭部“abc”の一致位置を表している。そこで、一致位置リスト822のブロック内アドレス“2”に差分“6”が格納される。
さらに、順位リスト811及び順位リスト812の全体を通して1つのみ含まれる接頭部については、一致文字列が存在しないことを示すために、一致位置リスト821及び一致位置リスト822の対応するブロック内アドレスに差分“0”が格納される。こうして得られた一致位置リスト821及び一致位置リスト822は、図3の一致位置リスト303に対応していることが分かる。
図9は、図1の入力文字列を圧縮対象データ列711として用いて一致位置リスト713を生成する処理の別の例を示している。この例では、圧縮対象データ列711は、ブロック901〜ブロック904の4つのブロックに分割されている。各ブロックのサイズは8バイトである。
ブロック901は、圧縮対象データ列711の“0”〜“7”のアドレスに対応し、ブロック902は、“8”〜“15”のアドレスに対応する。ブロック903は、圧縮対象データ列711の“16”〜“23”のアドレスに対応し、ブロック904は、“24”〜“31”のアドレスに対応する。各ブロックは、“0”〜“7”のブロック内アドレスを有する。
ソート部701は、各ブロック内アドレスから始まる3バイトの接頭部の値の昇順に、各ブロック内の8個の接頭部をソートし、順位リスト911〜順位リスト914を生成する。順位リスト911〜順位リスト914は、図7の順位リスト712に対応する。また、順位リスト911〜順位リスト914は、ブロック901〜ブロック904にそれぞれ対応し、ソート後の接頭部の順序で各接頭部の先頭位置のブロック内アドレスを保持している。
検出部513は、順位リスト911〜順位リスト914の各々において、同じ接頭部に対応する複数のブロック内アドレスのうち、隣接する2つのブロック内アドレスの差分から最近出現した一致文字列の一致位置を求める。2つの順位リストに同じ接頭部に対応するブロック内アドレスが含まれている場合、検出部513は、それらのブロック内アドレスに基づいて一致位置を求める。
そして、検出部513は、“0”〜“7”のブロック内アドレスを有する一致位置リスト921〜一致位置リスト924に、求めた一致位置を表す位置情報を格納する。一致位置リスト921〜一致位置リスト924は、図7の一致位置リスト713に対応する。
例えば、順位リスト913の接頭部“abc”に対応するブロック内アドレス“2”と、順位リスト914において最も前方の接頭部“abc”に対応するブロック内アドレス“2”との差分は、“0”である。“0”を圧縮対象データ列711におけるアドレスの差分に換算すると、“8”が得られる。この差分“8”は、ブロック904のブロック内アドレス“2”から始まる接頭部“abc”の一致位置を表している。そこで、一致位置リスト924のブロック内アドレス“2”に差分“8”が格納される。
また、順位リスト911の接頭部“def”に対応するブロック内アドレス“3”と、順位リスト913の接頭部“def”に対応するブロック内アドレス“5”との差分は、“2”である。“2”を圧縮対象データ列711におけるアドレスの差分に換算すると、“18”が得られる。この差分“18”は、ブロック903のブロック内アドレス“5”から始まる接頭部“def”の一致位置を表している。そこで、一致位置リスト923のブロック内アドレス“5”に差分“18”が格納される。
さらに、順位リスト911〜順位リスト914の全体を通して1つのみ含まれる接頭部については、一致文字列が存在しないことを示すために、一致位置リスト921〜一致位置リスト924の対応するブロック内アドレスに差分“0”が格納される。こうして得られた一致位置リスト921〜一致位置リスト924は、図3の一致位置リスト303に対応していることが分かる。
図8及び図9に示した処理によれば、長い圧縮対象データ列が入力された場合でも、圧縮対象データ列を1次キャッシュメモリ内でソート可能なサイズのブロックに分割することで、ランダムアクセスの高速性を活用して順位リストを生成することが可能になる。したがって、長い圧縮対象データ列をより高速に圧縮することができる。
入力バッファが1バイト配列である場合、順位リストは2バイト配列になるため、1次キャッシュメモリ内でブロックのソート処理を行うためには、ブロックサイズの約3倍の記憶容量が消費される。したがって、1次キャッシュメモリの約3分の1のサイズがソート可能な最大ブロックサイズとなると考えられる。例えば、1次キャッシュメモリのサイズが32Kバイトである場合、ソート可能な最大ブロックサイズは約10.6Kバイトである。ブロックサイズとして、1024バイト又は1024バイト×(2のべき乗)を用いてもよい。
図8及び図9に示したように、1つのブロック内の一致文字列については、対応する1つの順位リスト内で隣接する2つのブロック内アドレスの差分から一致位置が求められる。そして、1つのブロック内で一致位置が見つからない場合に、直前のブロック又はさらに前方のブロックを順に参照することで、ブロック間に跨った一致位置が求められる。このとき、各ブロックの順位リストを後方から前方に向かって参照しながら接頭部を比較することで、接頭部の値の降順に比較することができ、各順位リストの参照回数が最小限に抑えられる。
図10は、図7のデータ圧縮装置501が行う一致位置リスト生成処理の例を示すフローチャートである。
まず、データ圧縮装置501は、入力された圧縮対象データ列711をデータ格納部511に格納し(ステップ1001)、圧縮対象データ列711をブロックB(0)〜ブロックB(m−1)のm個のブロックに分割する(ステップ1002)。mは、2以上の整数である。
次に、ソート部701は、ブロックを識別する変数iに0を設定する(ステップ1003)。そして、ソート部701は、ブロックB(i)内の各ブロック内アドレスを始点とするデータ列を、各データ列の値の昇順にソートし、ブロックB(i)の順位リストを生成する(ステップ1004)。各データ列の値の昇順にデータ列をソートすることで、複数の同じデータ列が互いに隣接するようにデータ列が並べ替えられる。
次に、検出部513は、ブロックB(0)〜ブロックB(i)のi+1個の順位リストを参照して、ブロックB(i)内の各アドレスを始点とするデータ列と一致する一致データ列を探索し、ブロックB(i)の一致位置リストを生成する(ステップ1005)。
次に、ソート部701は、iがm−1であるか否かをチェックし(ステップ1006)、iがm−1でない場合(ステップ1006,NO)、iを1だけインクリメントして(ステップ1007)、ステップ1004以降の処理を繰り返す。そして、iがm−1に達した場合(ステップ1006,YES)、データ圧縮装置501は、処理を終了する。
図11及び図12は、図10の一致位置リスト生成処理の具体例を示すフローチャートである。
この具体例では、ブロックサイズをSバイト、各アドレスから始まるデータ列の接頭部のサイズをNバイトとする。また、ブロックB(i)の順位リストをOdr2Pi[]、一致位置リストをPrePi[]とし、順位リストOdr2Pi[]の参照位置を示す参照ポインタをP_Odr2Piとする。
Odr2Pi[x]は、順位リストOdr2Pi[]のブロック内アドレスxに格納された値を表し、PrePi[x]は、一致位置リストPrePi[]のブロック内アドレスxに格納された値を表す。一致位置リスト生成処理の開始時には、すべてのPrePi[x]が“0”に初期化されている。
図11のステップ1101〜ステップ1103の処理は、図10のステップ1001〜ステップ1003の処理と同様である。ソート部701は、ブロックB(i)内の各ブロック内アドレスを始点とするデータ列の接頭部を、接頭部の値の昇順にソートし、順位リストOdr2Pi[]を生成する(ステップ1104)。接頭部を昇順にソートすることで、順位リストOdr2Pi[]内で複数の同じ接頭部が互いに隣接するようになる。ブロックB(i)内に複数の同じ接頭部が含まれている場合、ソート部701は、それらの同じ接頭部をブロック内アドレスの昇順にソートする。
次に、検出部513は、参照ポインタP_Odr2P0〜参照ポインタP_Odr2PiにS−1を設定する(ステップ1105)。これにより、参照ポインタP_Odr2P0〜参照ポインタP_Odr2Piは、それぞれ、順位リストOdr2P0[]〜順位リストOdr2Pi[]の最後尾を指すように設定される。
次に、検出部513は、ブロックB(i)内の所定のアドレスから始まる接頭部と同じ接頭部をブロックB(i)内で探索するために、下記の条件1が成立するか否かをチェックする(ステップ1106)。
条件1:P_Odr2Piが0でなく、かつ、圧縮対象データ列711のアドレスX(i)から始まる接頭部がアドレスY(i)から始まる接頭部と一致する。
X(i)=i×S+Odr2Pi[P_Odr2Pi]
Y(i)=i×S+Odr2Pi[P_Odr2Pi−1]
条件1が成立する場合(ステップ1106,YES)、検出部513は、Odr2Pi[P_Odr2Pi]−Odr2Pi[P_Odr2Pi−1]の値をPrePi[Odr2Pi[P_Odr2Pi]]に格納する(ステップ1107)。
次に、検出部513は、P_Odr2Piを1だけデクリメントして、P_Odr2Piと0とを比較し(ステップ1108)、P_Odr2Piが0以上である場合(ステップ1108,NO)、ステップ1106以降の処理を繰り返す。P_Odr2Piをデクリメントすることで、順位リストOdr2Pi[]の後方から前方へ向かって参照位置が移動する。
そして、P_Odr2Piが0より小さくなった場合(ステップ1108,YES)、ソート部701は、iを1だけインクリメントして、iとmを比較する(ステップ1109)。iがm以下である場合(ステップ1109,NO)、ソート部701は、ステップ1104以降の処理を繰り返し、iがmより大きくなった場合(ステップ1109,YES)、ソート部701は、処理を終了する。iをインクリメントしてステップ1104以降の処理を繰り返すことで、次のブロックB(i)の順位リストOdr2Pi[]が生成される。
一方、条件1が成立しない場合(ステップ1106,NO)、検出部513は、ソート済みのブロックを識別する変数bにiを設定する(図12、ステップ1201)。そして、検出部513は、bを1だけデクリメントして、bと0とを比較し(ステップ1202)、bが0より小さい場合(ステップ1202,NO)、ステップ1108以降の処理を繰り返す。
一方、bが0以上である場合(ステップ1202,YES)、検出部513は、P_Odr2Pbと0とを比較し(ステップ1203)、P_Odr2Pbが0より小さい場合(ステップ1203,NO)、ステップ1202以降の処理を繰り返す。
一方、P_Odr2Pbが0以上である場合(ステップ1203,YES)、検出部513は、ステップ1204の処理を行う。ステップ1204において、検出部513は、ブロックB(i)内の所定のアドレスから始まる接頭部と同じ接頭部を、ブロックB(i)よりも前方のブロックB(b)内で探索するために、下記の条件2が成立するか否かをチェックする。
条件2:圧縮対象データ列711のアドレスX(i)から始まる接頭部がアドレスX(b)から始まる接頭部と一致する。
X(i)=i×S+Odr2Pi[P_Odr2Pi]
X(b)=b×S+Odr2Pb[P_Odr2Pb]
条件2が成立する場合(ステップ1204,YES)、検出部513は、(i−b)×S+Odr2Pi[P_Odr2Pi]−Odr2Pb[P_Odr2Pb]の値をPrePi[Odr2Pi[P_Odr2Pi]]に格納する(ステップ1205)。そして、検出部513は、P_Odr2Pbを1だけデクリメントして(ステップ1206)、ステップ1108以降の処理を繰り返す。P_Odr2Pbをデクリメントすることで、順位リストOdr2Pb[]の後方から前方へ向かって参照位置が移動する。
一方、条件2が成立しない場合(ステップ1204,NO)、検出部513は、圧縮対象データ列711のアドレスX(i)から始まる接頭部の値と、アドレスX(b)から始まる接頭部の値とを比較する(ステップ1207)。
アドレスX(i)から始まる接頭部の値がアドレスX(b)から始まる接頭部の値より小さい場合(ステップ1207,YES)、検出部513は、P_Odr2Pbを1だけデクリメントして(ステップ1208)、ステップ1203以降の処理を繰り返す。
一方、アドレスX(i)から始まる接頭部の値がアドレスX(b)から始まる接頭部の値より大きい場合(ステップ1207,NO)、検出部513は、ステップ1202以降の処理を繰り返す。このとき、ステップ1202においてbをデクリメントすることで、探索対象のブロックB(b)がさらに前方のブロックへ変更される。したがって、順位リストOdr2Pb[]に格納された値のうち、P_Odr2Pbよりも前方の値については参照されることがなく、順位リストOdr2Pb[]の参照回数が最小限に抑えられる。
このような一致位置リスト生成処理によれば、1つのブロック内で一致位置が見つからない場合に、直前のブロック又はさらに前方のブロックを順に参照することで、ブロック間に跨った一致位置が求められる。このとき、各ブロックの順位リストを後方から前方に向かって参照しながら接頭部を比較することで、接頭部の値の降順に比較することができ、各順位リストの参照回数が最小限に抑えられる。
図5及び図7のデータ圧縮装置501の構成は一例に過ぎず、データ圧縮装置の用途や条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、検出部513が一致位置リスト713を生成することなく、検出した一致データ列の一致位置の情報を符号化部514へ直接出力する場合は、図7の一致位置格納部702を省略することができる。
図8及び図9の圧縮対象データ列711は一例に過ぎず、圧縮対象データ列711は、音声データ、画像データ等の他のデータ列であっても構わない。圧縮対象データ列711のブロック数は2又は4に限られず、2以上の他の整数でもよい。
図6及び図10〜図12のフローチャートは一例に過ぎず、データ圧縮装置の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、ソート部701は、図10のステップ1004の順位リスト生成処理をiがインクリメントされる度に行う代わりに、ステップ1003の処理の前にすべてのブロックの順位リストを生成しても構わない。同様に、ソート部701は、図11のステップ1104の順位リスト生成処理をiがインクリメントされる度に行う代わりに、ステップ1103の処理の前にすべてのブロックの順位リストを生成しても構わない。
図12のステップ1202において、検出部513は、デクリメントされたbを0と比較する代わりに、0より大きな所定の整数と比較してもよい。bが所定の整数より小さくなった場合にステップ1203以降の処理を中止して、ステップ1108以降の処理を行うことで、探索対象のブロック数を削減して処理を高速化することができる。
図12のステップ1204において条件2が成立しない場合(ステップ1204,NO)、検出部513は、ステップ1207の処理を行うことなく、直ちにステップ1208以降の処理を行ってもよい。
図10のステップ1004及び図11のステップ1104において、ソート部701は、接頭部の値の昇順の代わりに、接頭部の値の降順に接頭部をソートしてもよい。この場合、検出部513は、各順位リストの参照位置を後方から前方へ向かって移動させる代わりに、前方から後方へ向かって移動させながら、同じ接頭部を探索する。これにより、接頭部の値の降順に接頭部を比較することができるため、各順位リストの参照回数が最小限に抑えられる。
また、すべてのブロックのサイズが同じである必要はなく、ブロックサイズはブロック毎に異なっていてもよい。図6及び図10〜図12のデータ圧縮処理は、LZ77符号化によるデータ圧縮処理に限らず、圧縮対象データ列中に繰り返し出現するデータ列を符号化する他のデータ圧縮処理に対しても適用することができる。
図5及び図7のデータ圧縮装置501は、例えば、図13に示すような情報処理装置(コンピュータ)を用いて実現可能である。
図13の情報処理装置は、CPU1301、メモリ1302、入力装置1303、出力装置1304、補助記憶装置1305、媒体駆動装置1306、及びネットワーク接続装置1307を備える。これらの構成要素はバス1308により互いに接続されている。
メモリ1302は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ1302は、図5及び図7のデータ格納部511、アドレス格納部512、及び一致位置格納部702として用いることができる。
CPU1301(プロセッサ)は、例えば、メモリ1302を利用してプログラムを実行することにより、図5及び図7の検出部513、符号化部514、及びソート部701として動作する。CPU1301内にキャッシュメモリが設けられている場合、そのキャッシュメモリをデータ格納部511、アドレス格納部512、及び一致位置格納部702として用いることもできる。
入力装置1303は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示や情報の入力に用いられる。出力装置1304は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。
補助記憶装置1305は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置1305は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置1305にプログラム及びデータを格納しておき、それらをメモリ1302にロードして使用することができる。
媒体駆動装置1306は、可搬型記録媒体1309を駆動し、その記録内容にアクセスする。可搬型記録媒体1309は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体1309は、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体1309にプログラム及びデータを格納しておき、それらをメモリ1302にロードして使用することができる。
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ1302、補助記憶装置1305、又は可搬型記録媒体1309のような、物理的な(非一時的な)記録媒体である。
ネットワーク接続装置1307は、Local Area Network、Wide Area Network等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置1307を介して受け取り、それらをメモリ1302にロードして使用することができる。
CPU1301は、圧縮対象データ列711から生成した圧縮データを補助記憶装置1305へ出力することができ、補助記憶装置1305は、その圧縮データを格納することができる。CPU1301は、圧縮データを媒体駆動装置1306へ出力することもでき、媒体駆動装置1306は、その圧縮データを可搬型記録媒体1309に記録することができる。CPU1301は、圧縮データをネットワーク接続装置1307へ出力することもでき、ネットワーク接続装置1307は、その圧縮データを通信ネットワーク経由で外部の装置へ送信することができる。
なお、情報処理装置が図13のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、オペレータ又はユーザからの指示や情報を入力する必要がない場合は、入力装置1303を省略してもよい。オペレータ又はユーザへの問い合わせ又は指示、及び処理結果を出力する必要がない場合は、出力装置1304を省略してもよい。また、可搬型記録媒体1309又は通信ネットワークを利用しない場合は、媒体駆動装置1306又はネットワーク接続装置1307を省略してもよい。
情報処理装置がスマートフォンのような通話機能を有する携帯端末である場合、マイク及びスピーカのような通話用の装置を含んでいてもよく、カメラのような撮像装置を含んでいてもよい。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
図5乃至図13を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数のブロックに分割された圧縮対象データ列を格納するデータ格納部と、
前記複数のブロックのうち第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後の前記複数のデータ列の順序で、前記複数のアドレスを表す複数のアドレス情報を格納するアドレス格納部と、
前記複数のアドレス情報に基づいて、前記複数のデータ列のうち第1のデータ列と一致する第2のデータ列を前記第1のブロック内で探索し、前記第1のブロック内に前記第2のデータ列が含まれていない場合、前記複数のブロックのうち第2のブロックを参照して前記第2のデータ列を検出する検出部と、
検出された前記第2のデータ列の情報に基づいて前記第1のデータ列を符号化して出力する符号化部と、
を備えることを特徴とするデータ圧縮装置。
(付記2)
前記データ格納部は、前記圧縮対象データ列を入力順に前方から後方へ向かって格納し、前記第2のブロックは、前記第1のブロックよりも前方のブロックであり、前記符号化部は、前記第2のデータ列の位置情報を用いて前記第1のデータ列を符号化することを特徴とする付記1記載のデータ圧縮装置。
(付記3)
前記アドレス格納部は、前記複数のアドレス情報を前記複数のデータ列の値の順序で格納し、前記検出部は、前記複数のアドレス情報をデータ列の値の降順に参照しながら前記第2のデータ列を探索することを特徴とする付記2記載のデータ圧縮装置。
(付記4)
前記アドレス格納部は、前記第2のブロック内の複数のアドレスを表す複数のアドレス情報を、前記第2のブロック内の前記複数のアドレスを始点とする複数のデータ列の値の順序で格納し、前記検出部は、前記第2のブロック内の前記複数のアドレスを表す前記複数のアドレス情報をデータ列の値の降順に参照しながら、前記第2のブロック内で前記第2のデータ列を探索し、参照位置のアドレス情報が表すアドレスを始点とする第3のデータ列の値が前記第1のデータ列の値よりも小さくなった場合、前記第2のブロックよりも前方の第3のブロックを参照して前記第2のデータ列を検出することを特徴とする付記3記載のデータ圧縮装置。
(付記5)
前記第1のブロックのサイズは、前記第1のブロック内の前記複数のアドレスを始点とする前記複数のデータ列を1つのキャッシュメモリ内で並べ替え可能なサイズであることを特徴とする付記1乃至4のいずれか1項に記載のデータ圧縮装置。
(付記6)
複数のブロックに分割された圧縮対象データ列を格納するデータ格納部を参照して、前記複数のブロックのうち第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後の前記複数のデータ列の順序で、前記複数のアドレスを表す複数のアドレス情報をアドレス格納部に格納し、
前記複数のアドレス情報に基づいて、前記複数のデータ列のうち第1のデータ列と一致する第2のデータ列を前記第1のブロック内で探索し、前記第1のブロック内に前記第2のデータ列が含まれていない場合、前記複数のブロックのうち第2のブロックを参照して前記第2のデータ列を検出し、
検出された前記第2のデータ列の情報に基づいて前記第1のデータ列を符号化して出力する、
処理をコンピュータに実行させるプログラム。
(付記7)
前記データ格納部は、前記圧縮対象データ列を入力順に前方から後方へ向かって格納し、前記第2のブロックは、前記第1のブロックよりも前方のブロックであり、前記符号化部は、前記第2のデータ列の位置情報を用いて前記第1のデータ列を符号化することを特徴とする付記6記載のプログラム。
(付記8)
前記アドレス格納部は、前記複数のアドレス情報を前記複数のデータ列の値の順序で格納し、前記第2のデータ列を探索する処理は、前記複数のアドレス情報をデータ列の値の降順に参照しながら前記第2のデータ列を探索することを特徴とする付記7記載のプログラム。
(付記9)
前記アドレス格納部は、前記第2のブロック内の複数のアドレスを表す複数のアドレス情報を、前記第2のブロック内の前記複数のアドレスを始点とする複数のデータ列の値の順序で格納し、前記第2のデータ列を探索する処理は、前記第2のブロック内の前記複数のアドレスを表す前記複数のアドレス情報をデータ列の値の降順に参照しながら、前記第2のブロック内で前記第2のデータ列を探索し、参照位置のアドレス情報が表すアドレスを始点とする第3のデータ列の値が前記第1のデータ列の値よりも小さくなった場合、前記第2のブロックよりも前方の第3のブロックを参照して前記第2のデータ列を検出することを特徴とする付記8記載のプログラム。
(付記10)
前記第1のブロックのサイズは、前記第1のブロック内の前記複数のアドレスを始点とする前記複数のデータ列を1つのキャッシュメモリ内で並べ替え可能なサイズであることを特徴とする付記6乃至9のいずれか1項に記載のプログラム。
(付記11)
コンピュータによって実行されるデータ圧縮方法であって、
複数のブロックに分割された圧縮対象データ列を格納するデータ格納部を参照して、前記複数のブロックのうち第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後の前記複数のデータ列の順序で、前記複数のアドレスを表す複数のアドレス情報をアドレス格納部に格納し、
前記複数のアドレス情報に基づいて、前記複数のデータ列のうち第1のデータ列と一致する第2のデータ列を前記第1のブロック内で探索し、前記第1のブロック内に前記第2のデータ列が含まれていない場合、前記複数のブロックのうち第2のブロックを参照して前記第2のデータ列を検出し、
検出された前記第2のデータ列の情報に基づいて前記第1のデータ列を符号化して出力する、
ことを特徴とするデータ圧縮方法。
(付記12)
前記データ格納部は、前記圧縮対象データ列を入力順に前方から後方へ向かって格納し、前記第2のブロックは、前記第1のブロックよりも前方のブロックであり、前記符号化部は、前記第2のデータ列の位置情報を用いて前記第1のデータ列を符号化することを特徴とする付記11記載のデータ圧縮方法。
(付記13)
前記アドレス格納部は、前記複数のアドレス情報を前記複数のデータ列の値の順序で格納し、前記第2のデータ列を探索する処理は、前記複数のアドレス情報をデータ列の値の降順に参照しながら前記第2のデータ列を探索することを特徴とする付記12記載のデータ圧縮方法。
(付記14)
前記アドレス格納部は、前記第2のブロック内の複数のアドレスを表す複数のアドレス情報を、前記第2のブロック内の前記複数のアドレスを始点とする複数のデータ列の値の順序で格納し、前記第2のデータ列を探索する処理は、前記第2のブロック内の前記複数のアドレスを表す前記複数のアドレス情報をデータ列の値の降順に参照しながら、前記第2のブロック内で前記第2のデータ列を探索し、参照位置のアドレス情報が表すアドレスを始点とする第3のデータ列の値が前記第1のデータ列の値よりも小さくなった場合、前記第2のブロックよりも前方の第3のブロックを参照して前記第2のデータ列を検出することを特徴とする付記13記載のデータ圧縮方法。
(付記15)
前記第1のブロックのサイズは、前記第1のブロック内の前記複数のアドレスを始点とする前記複数のデータ列を1つのキャッシュメモリ内で並べ替え可能なサイズであることを特徴とする付記11乃至14のいずれか1項に記載のデータ圧縮方法。
101 符号化位置
301 入力バッファ
302、712、811、812、911〜914 順位リスト
303、713、821、822、921〜924 一致位置リスト
501 データ圧縮装置
511 データ格納部
512 アドレス格納部
513 検出部
514 符号化部
701 ソート部
702 一致位置格納部
711 圧縮対象データ列
801、802、901〜904 ブロック
1301 CPU
1302 メモリ
1303 入力装置
1304 出力装置
1305 補助記憶装置
1306 媒体駆動装置
1307 ネットワーク接続装置
1308 バス
1309 可搬型記録媒体

Claims (7)

  1. 複数のブロックに分割された圧縮対象データ列を格納するデータ格納部と、
    前記複数のブロックのうち第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後の前記複数のデータ列の順序で、前記複数のアドレスを表す複数のアドレス情報を格納するアドレス格納部と、
    前記複数のアドレス情報に基づいて、前記複数のデータ列のうち第1のデータ列と一致する第2のデータ列を前記第1のブロック内で探索し、前記第1のブロック内に前記第2のデータ列が含まれていない場合、前記複数のブロックのうち第2のブロックを参照して前記第2のデータ列を検出する検出部と、
    検出された前記第2のデータ列の情報に基づいて前記第1のデータ列を符号化して出力する符号化部と、
    を備えることを特徴とするデータ圧縮装置。
  2. 前記データ格納部は、前記圧縮対象データ列を入力順に前方から後方へ向かって格納し、前記第2のブロックは、前記第1のブロックよりも前方のブロックであり、前記符号化部は、前記第2のデータ列の位置情報を用いて前記第1のデータ列を符号化することを特徴とする請求項1記載のデータ圧縮装置。
  3. 前記アドレス格納部は、前記複数のアドレス情報を前記複数のデータ列の値の順序で格納し、前記検出部は、前記複数のアドレス情報をデータ列の値の降順に参照しながら前記第2のデータ列を探索することを特徴とする請求項2記載のデータ圧縮装置。
  4. 前記アドレス格納部は、前記第2のブロック内の複数のアドレスを表す複数のアドレス情報を、前記第2のブロック内の前記複数のアドレスを始点とする複数のデータ列の値の順序で格納し、前記検出部は、前記第2のブロック内の前記複数のアドレスを表す前記複数のアドレス情報をデータ列の値の降順に参照しながら、前記第2のブロック内で前記第2のデータ列を探索し、参照位置のアドレス情報が表すアドレスを始点とする第3のデータ列の値が前記第1のデータ列の値よりも小さくなった場合、前記第2のブロックよりも前方の第3のブロックを参照して前記第2のデータ列を検出することを特徴とする請求項3記載のデータ圧縮装置。
  5. 前記第1のブロックのサイズは、前記第1のブロック内の前記複数のアドレスを始点とする前記複数のデータ列を1つのキャッシュメモリ内で並べ替え可能なサイズであることを特徴とする請求項1乃至4のいずれか1項に記載のデータ圧縮装置。
  6. 複数のブロックに分割された圧縮対象データ列を格納するデータ格納部を参照して、前記複数のブロックのうち第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後の前記複数のデータ列の順序で、前記複数のアドレスを表す複数のアドレス情報をアドレス格納部に格納し、
    前記複数のアドレス情報に基づいて、前記複数のデータ列のうち第1のデータ列と一致する第2のデータ列を前記第1のブロック内で探索し、前記第1のブロック内に前記第2のデータ列が含まれていない場合、前記複数のブロックのうち第2のブロックを参照して前記第2のデータ列を検出し、
    検出された前記第2のデータ列の情報に基づいて前記第1のデータ列を符号化して出力する、
    処理をコンピュータに実行させるプログラム。
  7. コンピュータによって実行されるデータ圧縮方法であって、
    複数のブロックに分割された圧縮対象データ列を格納するデータ格納部を参照して、前記複数のブロックのうち第1のブロック内の複数のアドレスを始点とする複数のデータ列を並べ替えた後の前記複数のデータ列の順序で、前記複数のアドレスを表す複数のアドレス情報をアドレス格納部に格納し、
    前記複数のアドレス情報に基づいて、前記複数のデータ列のうち第1のデータ列と一致する第2のデータ列を前記第1のブロック内で探索し、前記第1のブロック内に前記第2のデータ列が含まれていない場合、前記複数のブロックのうち第2のブロックを参照して前記第2のデータ列を検出し、
    検出された前記第2のデータ列の情報に基づいて前記第1のデータ列を符号化して出力する、
    ことを特徴とするデータ圧縮方法。
JP2014031916A 2014-02-21 2014-02-21 データ圧縮装置、データ圧縮方法、及びプログラム Ceased JP2015159352A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014031916A JP2015159352A (ja) 2014-02-21 2014-02-21 データ圧縮装置、データ圧縮方法、及びプログラム
US14/594,476 US20150242433A1 (en) 2014-02-21 2015-01-12 Data compression apparatus and data compression method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014031916A JP2015159352A (ja) 2014-02-21 2014-02-21 データ圧縮装置、データ圧縮方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2015159352A true JP2015159352A (ja) 2015-09-03

Family

ID=53882402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014031916A Ceased JP2015159352A (ja) 2014-02-21 2014-02-21 データ圧縮装置、データ圧縮方法、及びプログラム

Country Status (2)

Country Link
US (1) US20150242433A1 (ja)
JP (1) JP2015159352A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9813079B2 (en) 2016-02-29 2017-11-07 International Business Machines Corporation High-throughput compression of data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187410A (ja) * 1996-12-24 1998-07-21 Fujitsu Ltd データ圧縮方法及び装置
JP2001345710A (ja) * 2000-03-31 2001-12-14 Fujitsu Ltd データ圧縮装置および方法
WO2009057459A1 (ja) * 2007-10-30 2009-05-07 Nec Corporation データ圧縮方法
JP2013197850A (ja) * 2012-03-19 2013-09-30 Fujitsu Ltd 符号化方法、符号化装置及びコンピュータプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10187410A (ja) * 1996-12-24 1998-07-21 Fujitsu Ltd データ圧縮方法及び装置
JP2001345710A (ja) * 2000-03-31 2001-12-14 Fujitsu Ltd データ圧縮装置および方法
WO2009057459A1 (ja) * 2007-10-30 2009-05-07 Nec Corporation データ圧縮方法
JP2013197850A (ja) * 2012-03-19 2013-09-30 Fujitsu Ltd 符号化方法、符号化装置及びコンピュータプログラム

Also Published As

Publication number Publication date
US20150242433A1 (en) 2015-08-27

Similar Documents

Publication Publication Date Title
US10305512B2 (en) Encoding method and apparatus
JP3889762B2 (ja) データ圧縮方法、プログラム及び装置
US9647684B2 (en) Memory-based history search
US7098815B1 (en) Method and apparatus for efficient compression
US20020196166A1 (en) Data compression method and data compression apparatus
US11334609B2 (en) Semantic structure search device and semantic structure search method
US10224957B1 (en) Hash-based data matching enhanced with backward matching for data compression
JP2014534486A (ja) スケーラブル・データ・デュプリケーションのための方法、システム、およびコンピュータ・プログラム
US10817474B2 (en) Adaptive rate compression hash processor
JP2016533046A (ja) 復元中に予備拡張辞書を利用するデータ復元
JP2011250431A (ja) データ圧縮装置および方法
JP2015159352A (ja) データ圧縮装置、データ圧縮方法、及びプログラム
JP2016170750A (ja) データ管理プログラム、情報処理装置およびデータ管理方法
JPWO2014097353A1 (ja) 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム
US11909423B2 (en) Compression circuit, storage system, and compression method
US20140009314A1 (en) Efficient string hash computation
JP2016134808A (ja) データ圧縮プログラム、データ復元プログラム、データ圧縮装置、及びデータ復元装置
US8854235B1 (en) Decompression circuit and associated compression method and decompression method
JP2013197850A (ja) 符号化方法、符号化装置及びコンピュータプログラム
JP6276386B2 (ja) データ構造、情報処理装置、情報処理方法、及びプログラム記録媒体
JP6838471B2 (ja) インデックス生成プログラム、データ検索プログラム、インデックス生成装置、データ検索装置、インデックス生成方法、及びデータ検索方法
US20190130022A1 (en) Data generation method, information processing device, and recording medium
US11748307B2 (en) Selective data compression based on data similarity
US20240106459A1 (en) Compression device and compression method
JP2952067B2 (ja) データ圧縮方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161102

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171017

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180213

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20180626