JP2013214832A - 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム - Google Patents

圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム Download PDF

Info

Publication number
JP2013214832A
JP2013214832A JP2012083183A JP2012083183A JP2013214832A JP 2013214832 A JP2013214832 A JP 2013214832A JP 2012083183 A JP2012083183 A JP 2012083183A JP 2012083183 A JP2012083183 A JP 2012083183A JP 2013214832 A JP2013214832 A JP 2013214832A
Authority
JP
Japan
Prior art keywords
data
compression
decompression
unit
copy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012083183A
Other languages
English (en)
Inventor
Hideyuki Unno
秀之 海野
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 JP2012083183A priority Critical patent/JP2013214832A/ja
Priority to US13/611,804 priority patent/US20130262808A1/en
Priority to EP12186067.0A priority patent/EP2645578A2/en
Priority to KR1020120111836A priority patent/KR20130111170A/ko
Priority to CN2012103846018A priority patent/CN103365648A/zh
Publication of JP2013214832A publication Critical patent/JP2013214832A/ja
Pending 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
    • 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
    • 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/70Type of the data to be coded, other than image and sound
    • H03M7/702Software

Landscapes

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

Abstract

【課題】圧縮データの伸長を高速に行う。
【解決手段】データの圧縮と伸長を行う圧縮伸長システムにおいて、圧縮装置100が圧縮データとしてバイトコード列を生成し、伸長装置200がバイトコード列を実行して圧縮データの伸長を行う。バイトコードには8バイト単位のコピー命令、直データ処理命令が含まれ、圧縮装置100は、伸長時に8バイト単位のコピー命令、直データ処理命令を使用するかバイト単位のコピー命令、直データ処理命令を使用するかを圧縮時に判定してバイトコードを生成する。
【選択図】図1

Description

本発明は、圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラムに関する。
従来、データの圧縮方式として、符号列の繰り返しに着目したLZ77がある。LZ77では、圧縮プログラムは、現在注目している位置から始まる符号列が、それ以前に出現していたかを探し、出現していた場合には、符号列をその出現位置と長さに置き換える。ここで、符号列を探す範囲はスライドウィンドウと呼ばれる。
スライドウィンドウは、8Kバイト、64Kバイトなどの所定の大きさを有し、データの圧縮処理の進行とともにデータ上でずらされる。したがって、圧縮データは、基本的には(スライドウィンドウでのコピー開始位置、コピー長)の組の羅列である。
また、伸長プログラムは、(スライドウィンドウでのコピー開始位置、コピー長)の組に基づいて、スライドウィンドウのコピー開始位置からコピー長の符号列をコピーすることでデータを伸長する。
図18は、LZ77圧縮データの伸長を説明するための図である。図18(a)に示すスライドウィンドウ1、コピー開始位置、コピー長の状態で伸長が行われると、図18(b)に示すように、コピー開始位置からコピー長の文字列”abcdef”がスライドウィンドウ1の最後尾にコピーされる。そして、スライドウィンドウ1がコピー長分ずらされる。LZ77圧縮データの伸長処理は、基本的にこの処理の繰り返しである。
ここで、各コピーに必要な処理は、コンピュータで処理される命令のレベルでは、次のようになる。
(1)コピー開始位置に基づいてコピー元となるアドレスを計算し
(2)コピー元アドレス、コピー先アドレスや、コピー長等に応じて最適なコピー処理を選択して実行し
(3)コピーを実行後、スライドウィンドウ1をずらす。
なお、関連する先行技術として、RISCによるマシン語のプログラムデータでは、データ長が32ビットの固定フォーマットで決められた所定領域に対して同じ意味のコードが格納されるため、4バイト毎に小さい値の変換アドレス値を割り当てる技術がある。
特開2011−193406号公報
LZ77圧縮データの伸長処理で繰り返されるコピー処理において、コンピュータで処理される命令のレベルでは、コピー元アドレス、コピー先アドレスや、コピー長等に応じて最適なコピー処理を選択して実行することが重要となる。すなわち、コピー長が数バイト程度ときわめて短い場合には、バイト単位のコピーを必要な回数だけ繰り返すことが適切である。一方、コピー長が長い場合には、端数部分をバイト単位で処理し、8バイト単位で処理できる部分は8バイト単位のロード・ストア命令を用いてコピーすることが適切である。
図19は、コピー処理最適化の一例を示す図である。図19に示すように、伸長プログラムが10バイトデータをコピーする場合に、バイト単位でコピーすると、10回のコピーが必要になる。一方、伸長プログラムが10バイトデータのコピーを、2回のバイト単位のコピーと1回の8バイト単位のコピーに分解すると、3回のコピーだけですむ。
しかしながら、このようにコピー処理をきめ細かく選択するためには、アドレスやコピー長に基づいた分岐処理が必要となり、分岐処理のオーバーヘッドが性能向上の妨げとなる。すなわち、コンピュータは、パイプライン処理において、分岐命令については分岐方向を予測して後続命令を投機実行するが、予測ミスがあると投機実行した命令を破棄する必要がある。したがって、分岐命令が多いと、伸長プログラムの性能が低下する。
本発明は、1つの側面では、圧縮データを伸長する処理の性能向上を図ることを目的とする。
本願の開示する圧縮及び伸長システムは、1つの態様において、データを圧縮して得られる圧縮データに基づいて、実行されることにより前記データを生成可能なコード列を含み、前記データに対してデータ量が少ない圧縮データを生成する圧縮装置と、前記圧縮データに含まれる前記コード列を実行して、前記データを生成する伸長装置と、を有する。
1実施態様によれば、圧縮データを伸長する処理の性能向上を図ることができる。
図1は、実施例1に係る圧縮伸長システムの構成を示す図である。 図2は、圧縮装置が生成するバイトコードを示す図である。 図3は、圧縮装置の構成を示す図である。 図4は、圧縮装置による圧縮処理の手順を示すフローチャートである。 図5は、最長一致検索の手順を示すフローチャートである。 図6は、保留直データ出力の手順を示すフローチャートである。 図7は、一致データ列出力の手順を示すフローチャートである。 図8は、圧縮データの一例を示す図である。 図9は、伸長装置の構成を示す図である。 図10は、伸長装置として使用されるコンピュータの構成を示す図である。 図11は、8バイトデータを主記憶装置に書き込む場合のコンピュータの処理を示すフローチャートである。 図12は、伸長プログラムの機能構成を示す図である。 図13は、8バイト単位のコピー処理におけるロード及びストアの回数を説明するための図である。 図14は、伸長プログラムによる伸長処理の手順を示すフローチャートである。 図15は、コピー処理の手順を示すフローチャートである。 図16は、直データ処理の手順を示すフローチャートである。 図17は、本実施例に係る圧縮プログラムを実行するコンピュータの構成を示す機能ブロック図である。 図18は、LZ77圧縮データの伸長を説明するための図である。 図19は、コピー処理最適化の一例を示す図である。
以下に、本願の開示する圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例1に係る圧縮伸長システムについて説明する。図1は、実施例1に係る圧縮伸長システムの構成を示す図である。図1に示すように、圧縮伸長システムは、圧縮装置100、伸長装置200を有する。
圧縮装置100は、データを入力して圧縮し、圧縮データを生成する。ここで、圧縮装置100は、(スライドウィンドウでのコピー開始位置、コピー長)の組の羅列による圧縮データを生成するのではなく、バイトコード列による圧縮データを生成する。すなわち、圧縮装置100は、データを読み込んでバイトコード列にコンパイルすることにより圧縮データを生成する。
伸長装置200は、圧縮装置100が生成したバイトコード列を実行して圧縮データから元のデータを生成するコンピュータである。すなわち、実施例1に係る圧縮伸長システムでは、伸長装置200は、バイトコードを実行するという単純な処理を繰り返すことにより圧縮データを伸長する。
逆に、圧縮装置100は、伸長処理で繰り返されるコピー処理において、コンピュータで処理される命令コードレベルで処理性能が向上するように、最適なバイトコードを生成する。具体的には、圧縮装置100は、伸長時に8バイト単位命令が用いられるか1バイト単位命令が用いられるかを圧縮時に判定して、バイトコードを生成する。
このように、実施例1に係る圧縮伸長システムでは、伸長処理が高速に実行されるように、伸長時にコンピュータで処理される命令コードレベルで圧縮装置100がデータの圧縮時に最適化を行う。したがって、実施例1に係る圧縮伸長システムは、圧縮時に必要な処理量を増加させるが、伸長時の処理を高速化することができる。
なお、図1では、圧縮装置100と伸長装置200とが直接接続されているが、実施例1に係る圧縮伸長システムでは、圧縮装置100により圧縮された圧縮データを図示しない記憶装置に記憶し、記憶装置から読み出した圧縮データを伸長装置200で伸長する。また、図1に示すように、伸長装置200は、記憶装置を経由することなく、圧縮装置100により圧縮された圧縮データを直接入力するようにすることもできる。
図2は、圧縮装置100が生成するバイトコードを示す図である。図2に示すように、バイトコードには、「読出ポインタ更新」、「読出ポインタ設定」、「ドレイン&コピー」、「ドレイン&直データ」、「倍長語ドレイン」がある。
「読出ポインタ更新」は、読出ポインタをbc[5:0]=xを用いて更新する命令である。ここで、読出ポインタは、スライドウィンドウ1でコピー元の符号列の開始位置を指定するポインタである。また、bc[b2:b1]は、バイトコードのビットb1からビットb2までを表す。ただし、x=0〜63に対して、読出ポインタの更新値は−31〜32が対応する。すなわち、読出ポインタ=読出ポインタ+x−31である。「読出ポインタ更新」では、bc[7:6]=00である。
「読出ポインタ設定」は2バイト長のバイトコードであり、1バイト目のbc[7:6]=01である。「読出ポインタ設定」は、1バイト目のbc[5:0]を上位6ビット、2バイト目の8ビットを下位8ビットとする値a[13:0]を読出ポインタに設定する命令である。すなわち、読出ポインタ=a[13:0]である。
なお、以下では、バイトコード「読出ポインタ更新」及びバイトコード「読出ポインタ設定」を合わせて「読出ポインタコード」と呼ぶこととする。
「ドレイン&コピー」は、スライドバッファにおけるデータのコピーとドレインを指示する命令である。ここで、スライドバッファは、スライドウィンドウ1内のデータを格納するバッファである。コピー元は読出ポインタで指定され、コピー先は書込ポインタで指定される。書込ポインタは、これまでに生成されたデータの次を指す。
「ドレイン&コピー」では、bc[7:6]=10である。また、「ドレイン」とは、スライドバッファの先頭から一部のデータをメモリに吐き出すことである。伸長処理により生成されたデータはスライドバッファに順次格納されるが、スライドバッファがオーバーフローしないように、データは先頭からメモリに吐き出される。
bc[5]=Tは、コピー単位を示し、T=0は、バイト単位を示し、T=1は、倍長語単位を示す。ここで、bc[b3]はバイトコードのビットb3を示す。また、倍長語の長さは8バイトである。bc[4:1]=nは、コピー単位数を示す。bc[0]=dは、ドレイン量を示し、T=0の場合は、ドレイン量はdバイトであり、T=1の場合は、ドレイン量はn*d倍長語である。なお、「*」は乗算を示す。
また、以下では、T=0の場合、バイトコード「ドレイン&コピー」を「COPYBコード」と呼び、T=1の場合、バイトコード「ドレイン&コピー」を「COPYDコード」と呼ぶこととする。
「ドレイン&直データ」は、スライドバッファへの直データの格納とドレインを指示する命令である。直データは、圧縮データ中このバイトコードに後続するデータである。データの格納先は書込ポインタで指定される。
bc[5]=Tは、直データの単位を示し、T=0は、バイト単位を示し、T=1は、倍長語単位を示す。bc[4:1]=nは、データ単位数を示す。bc[0]=dは、ドレイン量を示し、T=0の場合は、ドレイン量はdバイトであり、T=1の場合は、ドレイン量はn*d倍長語である。「ドレイン&直データ」では、bc[7:6]=11である。「ドレイン&直データ」は、伸長処理の最初などで、スライドバッファに直データを格納する場合に用いられる。
また、以下では、T=0の場合、バイトコード「ドレイン&直データ」を「RAW1コード」と呼び、T=1の場合、バイトコード「ドレイン&直データ」を「RAW8コード」と呼ぶこととする。
「倍長語ドレイン」は、1倍長語のドレインを指示する命令である。「倍長語ドレイン」では、bc[7:0]=1x000001である。なお、「x」は0と1のいずれでもよいことを示す。
次に、圧縮装置100の構成について説明する。図3は、圧縮装置100の構成を示す図である。図3に示すように、圧縮装置100は、読出ポインタ101、書込ポインタ102、データ入力部110、入力データ記憶部120、保留直データ記憶部130、最長一致列検索部140、保留直データ出力部150、一致データ列出力部160を有する。また、圧縮装置100は、制御部170を有する。
読出ポインタ101は、伸長時におけるスライドバッファからのデータの読み出し位置を記憶し、書込ポインタ102、伸長時におけるスライドバッファへのデータの書き込み位置を記憶する。
データ入力部110は、圧縮対象のデータをファイルから読み込んで、入力データ記憶部120に書き込む。入力データ記憶部120は、圧縮対象のデータを記憶し、一部がスライドバッファとして用いられる。
保留直データ記憶部130は、RAW1コード又はRAW8コードに後続する直データ(RAW データ)として圧縮コードの一部となるデータを記憶する。すなわち、保留直データ記憶部130は、スライドバッファ中に一致する符号列が検索されなかった符号列を記憶する。
最長一致列検索部140は、圧縮装置100がある時点で圧縮しようとする符号列と一致する符号列のうち最長の符号列を最長一致符号列としてスライドバッファから検索する。
保留直データ出力部150は、RAW1コード又はRAW8コードをファイルに出力し、保留直データ記憶部130が記憶する直データをRAW1コード又はRAW8コードに後続する直データとしてファイルに出力する。
一致データ列出力部160は、最長一致列検索部140により検索された最長一致符号列をコピーするバイトコードをファイルに出力する。また、一致データ列出力部160は、スライドバッファにおける最長一致符号列の開始位置と読出ポインタ101の現在値に差がある場合には、読出ポインタ命令をファイルに出力し、伸長時に読出ポインタ101の値を最長一致符号列の開始位置に合わせる。
制御部170は、圧縮装置100全体の制御を行い、具体的には、機能部間の制御の移動や機能部と記憶部の間のデータの受け渡しなどを行うことによって、圧縮装置100を一つの装置として機能させる。
次に、圧縮装置100による圧縮処理の手順について説明する。図4は、圧縮装置100による圧縮処理の手順を示すフローチャートである。図4に示すように、圧縮装置100は、データ入力部110が圧縮対象のデータをファイルから入力し(ステップS11)、入力データ記憶部120に書き込む。
そして、制御部170が、入力データ記憶部120からデータを読み出し、データの有無を判定する(ステップS12)。その結果、データがある場合には、最長一致列検索部140が、最長一致列検索を実行する(ステップS13)。すなわち、最長一致列検索部140は、圧縮しようとする符号列と一致する最長の符号列をスライドバッファから検索する。
そして、制御部170が、一致する符号列が見つかったか否かを判定し(ステップS14)、見つかった場合には、保留直データ出力部150が保留直データ出力を行う(ステップS15)。すなわち、保留直データ出力部150は、RAW1コード又はRAW8コードを出力し、保留直データ記憶部130が記憶する直データをRAW1コード又はRAW8コードに後続する直データとして出力する。そして、一致データ列出力部160が、一致データ列出力を行う(ステップS16)。すなわち、最長一致列検索部140により検索された最長一致符号列をコピーするバイトコードを出力する。そして、制御部170は、入力データ記憶部120からの読み出し位置を、一致したバイト数分ずらし、スライドウィンドウを再設定する(ステップS17)。そして、制御部170は、ステップS12に制御を戻す。
一方、一致する符号列が見つからなかった場合には、制御部170は、入力データ記憶部120から1バイト読み出し、保留直データ記憶部130に追加する。また、制御部170は、入力データ記憶部120からの読み出し位置を1バイト分ずらし、スライドウィンドウを再設定する(ステップS18)。制御部170は、ステップS12に制御を戻す。
これに対して、入力データ記憶部120にデータがない場合には、保留直データ出力部150が保留直データ出力を行い(ステップS19)、制御部170は圧縮処理を終了する。
次に、最長一致列検索の手順について説明する。図5は、最長一致列検索の手順を示すフローチャートである。図5に示すように、最長一致列検索部140は、longest_match_idx、longest_match_sizeを0で初期化する(ステップS21)。ここで、longest_match_idxは、スライドバッファでの最長一致した符号列の開始位置であり、longest_match_sizeは、最長一致した符号列の長さである。
そして、最長一致列検索部140は、idxを0で初期化する(ステップS22)。ここで、idxは、スライドバッファ内で検索される符号列の先頭位置を示す。そして、最長一致列検索部140は、idxがlengthより小さいか否かを判定する(ステップS23)。ここで、lengthはスライドバッファのサイズである。
そして、idxがlengthより小さくない場合には、スライドバッファの検索が終了したので、最長一致列検索部140は、処理を終了し、検索結果として、longest_match_idx、longest_match_sizeを返す。
一方、idxがlengthより小さい場合には、最長一致列検索部140は、i、match_sizeを0で初期化する(ステップS24)。ここで、iは、スライドバッファ内で検索中の符号列の先頭からのオフセットであり、match_sizeは、これまでに一致している文字列の長さである。
そして、最長一致列検索部140は、iがin_sizeより小さく、かつ、idx+iがlengthより小さく、かつ、Slide_buf[idx+i]とin_data[idx+i]とが等しいか否かを判定する(ステップS25)。ここで、in_sizeは、未圧縮データの長さであり、Slide_bufはスライドバッファであり、in_dataは、入力データ記憶部120の未圧縮部分である。
その結果、iがin_sizeより小さく、かつ、idx+iがlengthより小さく、かつ、Slide_buf[idx+i]とin_data[idx+i]とが等しい場合には、最長一致列検索部140は、i、match_sizeに1を加え(ステップS26)、ステップS25に戻る。ここで、iがin_sizeより小さく、かつ、idx+iがlengthより小さく、かつ、Slide_buf[idx+i]とin_data[idx+i]とが等しい場合とは、スライドバッファ内で現在検索中の符号列がi+1番目まで非圧縮符号列と一致する場合である。
一方、ステップS25における判定が否である場合には、最長一致列検索部140は、match_sizeが3より大きく、かつ、match_sizeがlongest_match_sizeより大きいか否かを判定する(ステップS27)。ここで、ステップS25における判定が否である場合とは、スライドバッファ内で現在検索中の符号列のi+1番目が非圧縮符号列のi+1番目と一致しない場合である。
その結果、match_sizeが3より大きく、かつ、match_sizeがlongest_match_sizeより大きい場合には、最長一致列検索部140は、match_sizeをlongest_match_sizeの新たな値とし、idxをlongest_match_idxの新たな値とする(ステップS28)。ここで、match_sizeが3より大きく、かつ、match_sizeがlongest_match_sizeより大きい場合とは、新たに最長一致符号列が見つかった場合である。そして、最長一致列検索部140は、idxに1を加え(ステップS29)、ステップS23に戻り、スライドバッファ内で1つずらした位置から新たな最長一致符号列を検索する。
一方、match_sizeが3より大きくないか、又は、match_sizeがlongest_match_sizeより大きくない場合には、最長一致列検索部140は、idxに1を加え(ステップS29)、ステップS23に戻る。ここで、match_sizeが3より大きくないか、又は、match_sizeがlongest_match_sizeより大きくない場合とは、一致した符号列の長さが3以下であるか、これまで検索された最長一致符号列よりも短い場合である。
このように、最長一致列検索部140が、スライドバッファから最長一致符号列を検索することで、圧縮装置100は、繰り返される符号列を効率良く圧縮することができる。
次に、保留直データ出力の手順について説明する。図6は、保留直データ出力の手順を示すフローチャートである。図6に示すように、保留直データ出力部150は、保留直データ記憶部130に保留直データがあるか否かを判定する(ステップS31)。その結果、保留直データがない場合には、保留直データ出力部150は、処理を終了する。
一方、保留直データがある場合には、保留直データ出力部150は、書込ポインタ102が8バイト境界にあるか否かを判定する(ステップS32)。その結果、書込ポインタ102が8バイト境界にない場合には、保留直データ出力部150は、8バイト境界か、保留直データの最後に達するまでRAW1コード及び1バイト直データを繰り返し出力し(ステップS33)、ステップS31に戻る。
一方、書込ポインタ102が8バイト境界にある場合には、保留直データ出力部150は、保留直データは8バイト以上の長さであるか否かを判定する(ステップS34)。その結果、8バイト以上の長さである場合には、保留直データ出力部150は、保留直データの残りが8バイト未満になるまでRAW8コード、8バイト直データを繰り返し出力する(ステップS35)。これに対して、8バイト以上の長さでない場合には、保留直データ出力部150は、保留直データの最後に達するまでRAW1コード、1バイト直データを繰り返し出力する(ステップS36)。そして、保留直データ出力部150は、ステップS31に戻る。
なお、保留直データ出力部150は、RAW1コード、RAW8コードを出力する際、スライドバッファの残り容量が一定量以下である場合には、ドレインビットdを1に設定して、RAW1コード、RAW8コードを出力する。
このように、保留直データ出力部150が保留直データを出力することで、圧縮処理の初期などスライドバッファから一致する符号列が検索されない場合に、スライドバッファから検索されなかった符号列を圧縮データに含めることができる。
次に、一致データ列出力の手順について説明する。図7は、一致データ列出力の手順を示すフローチャートである。図7に示すように、一致データ列出力部160は、最長一致列検索によるスライドバッファ内の符号列の一致箇所と読出ポインタの現在値とに差がある場合には、読出ポインタコードを出力する(ステップS41)。
そして、一致データ列出力部160は、未出力の一致データが残っているか否かを判定する(ステップS42)。その結果、未出力の一致データが残っていない場合には、一致データ列出力部160は、処理を終了する。
一方、未出力の一致データが残っている場合には、一致データ列出力部160は、書込ポインタ102が8バイト境界にあるか否かを判定する(ステップS43)。その結果、書込ポインタ102が8バイト境界にない場合には、一致データ列出力部160は、8バイト境界か、一致データの最後に達するまでCOPYBコードを繰り返し出力し(ステップS44)、ステップS42に戻る。
一方、書込ポインタ102が8バイト境界にある場合には、一致データ列出力部160は、一致データは8バイト以上の長さであるか否かを判定する(ステップS45)。その結果、8バイト以上の長さである場合には、一致データ列出力部160は、一致データの残りが8バイト未満になるまでCOPYDコードを繰り返し出力する(ステップS46)。これに対して、8バイト以上の長さでない場合には、一致データ列出力部160は、一致データの最後に達するまでCOPYBコードを繰り返し出力する(ステップS47)。そして、一致データ列出力部160は、ステップS42に戻る。
なお、一致データ列出力部160は、COPYBコード、COPYDコードを出力する際、スライドバッファの残り容量が一定量以下である場合には、ドレインビットdを1に設定して、COPYBコード、COPYDコードを出力する。
このように、一致データ列出力部160が一致データに対応してCOPYBコード、COPYDコードを出力することで、入力データ中に繰り返し表れる符号列を圧縮することができる。
図8は、圧縮データの一例を示す図である。図8は、文字列”abcdabcd”を圧縮した場合の圧縮データを示し、”0xXX”は”XX”が16進数であることを示す。図8において、”0xC8”は直データ長が4バイトのRAW1コードを示し、4バイトの直データ’a’、’b’、’c’、’d’がスライドバッファに格納される。ドレインは行われない。また、”0x88”は4バイト長のCOPYBコードを示し、ドレインは行われない。ここでは、読出ポインタ=0の位置から4バイト分コピーするだけでよいため、読出ポインタコードは出力されない。なお、各行において、”#”以降の文字列はコメントである。
次に、伸長装置200の構成について説明する。図9は、伸長装置200の構成を示す図である。図9に示すように、伸長装置200は、プロセッサ210、主記憶装置220を有するコンピュータである。
プロセッサ210は、バイトコードを実行して圧縮データを伸長し、主記憶装置220は、圧縮データ及び伸長されたデータを記憶する。プロセッサ210は、スライドバッファ格納RAM211、バイトコード実行器212、入出力部213、バス制御部214、を有する。スライドバッファ格納RAM211は、スライドバッファとして機能するメモリであり、例えば64Kバイトの容量を備える。
バイトコード実行器212は、主記憶装置220からバス制御部214を介してバイトコードを読み出し、読み出したバイトコードを実行することによって圧縮データを伸長する。バイトコード実行器212は、読出ポインタ212a、書込ポインタ212bを有する。バイトコード実行器212は、読出ポインタ212a及び書込ポインタ212bを用いてスライドバッファ格納RAM211にアクセスする。また、バイトコード実行器212は、レイン指定があるバイトコードを実行すると、スライドバッファ格納RAM211に記憶されたデータを主記憶装置に吐き出す。
入出力部213は、ファイルから圧縮データを読み込んで主記憶装置220に格納する。また、入出力部213は、伸長されたデータを主記憶装置220から読み出してファイルに出力する。
バス制御部214は、バイトコード実行器212による主記憶装置220からのバイトコードの読み出し、及び、スライドバッファ格納RAM211から主記憶装置220へのデータの吐き出しに用いられるバスを制御する。また、バス制御部214は、入出力部213と主記憶装置220との間のデータ転送に用いられるバスを制御する。
上述してきたように、実施例1では、圧縮装置100が圧縮データとしてバイトコード列を生成し、伸長装置200がバイトコードを実行して圧縮データの伸長を行う。したがって、圧縮伸長システムは、圧縮データの伸長処理を命令の実行で実現することができ、高速に圧縮データの伸長を行うことができる。
ところで、上記実施例1では、伸長装置200がバイトコードを実行するコンピュータである場合について説明した。しかしながら、主記憶装置と8バイト単位でデータを転送するコンピュータとコンピュータで実行されるプログラムとで伸長装置を実現することもできる。そこで、実施例2では、伸長装置を、主記憶装置と8バイト単位でデータを転送するコンピュータとコンピュータで実行される伸長プログラムとで実現する場合について説明する。
まず、伸長装置として使用されるコンピュータについて説明する。図10は、伸長装置として使用されるコンピュータの構成を示す図である。図10に示すように、伸長装置として使用されるコンピュータ300は、コア310、キャッシュメモリ320、主記憶装置330を有する。
コア310は、命令を処理する処理装置であり、演算器311、命令制御部312、レジスタファイル313を有する。演算器311は、命令制御部312の指示に基づいて、四則演算、論路演算などの演算を行う。命令制御部312は、コア310を制御し、演算器311、レジスタファイル313を用いて命令を処理する。レジスタファイル313は、演算器311で用いられるデータや演算結果を記憶するレジスタの集まりである。各レジスタの長さは8バイトである。
キャッシュメモリ320は、主記憶装置330へのアクセスを高速化するためのメモリであり、バッファ321、データRAM322を有する。バッファ321は、レジスタファイル313とデータRAM322との間で転送されるデータを一時的に格納する。バッファ321の長さは8バイトであり、レジスタファイル313とバッファ321との間のデータ転送及びバッファ321とデータRAM322との間のデータ転送は8バイト単位である。
データRAM322は、主記憶装置330に記憶されるデータの一部を記憶する。データRAM322と主記憶装置330との間のデータ転送は64バイト単位である。主記憶装置330は、コア310で使用されるデータ、コア310での演算結果等を記憶する。
次に、8バイトデータを主記憶装置330に書き込む場合のコンピュータ300の処理について説明する。図11は、8バイトデータを主記憶装置330に書き込む場合のコンピュータ300の処理を示すフローチャートである。
図11に示すように、8バイトデータを主記憶装置330に書き込む場合、まず演算器311からレジスタファイル313のいずれかのレジスタに8バイトデータが転送される(ステップS61)。
そして、レジスタから8バイト幅バスを用いてバッファ321に8バイトデータが転送される(ステップS62)。そして、バッファ321から8バイト幅バスを用いてデータRAM322へ8バイトデータが転送される(ステップS63)。
そして、データRAM322において、8バイトデータが主記憶装置330での格納先アドレスに基づいて適切な位置に部分書き込みされる(ステップS64)。
このように、コンピュータ300では、8バイト単位のメモリアクセスが最も効率良く処理される。逆に、1バイト単位のアクセスは、8バイト幅のレジスタ、バスの一部にのみ有効なデータを流すことになり、非効率である。したがって、圧縮装置100ができるだけ8バイト単位でデータのコピーを行うバイトコードを生成することによって、コンピュータ300は、効率良く伸長処理を行うことができる。
次に、伸長プログラムの機能構成について説明する。図12は、伸長プログラムの機能構成を示す図である。図12に示すように、伸長プログラム10は、読出ポインタ11、書込ポインタ12、スライドバッファ13、圧縮データ読込部14、圧縮データ記憶部15、命令制御部16、rpt更新部17、rpt設定部18、コピー部19、直データ処理部20を有する。
読出ポインタ11は、スライドバッファ13からデータを読み出す位置を指定する。書込ポインタ12はスライドバッファ13にデータを書き込む位置を指定する。スライドバッファ13は、圧縮データに基づいて伸長されたデータを記憶する。スライドバッファ13は主記憶装置330上の領域であり、データの伸長にともなって、スライドバッファ13の大きさや主記憶装置330上での位置が変化する。
圧縮データ読込部14は、ファイルから圧縮データを読み込み、圧縮データ記憶部15に書き込む。圧縮データ記憶部15は、圧縮データを記憶する。命令制御部16は、圧縮データ記憶部15から圧縮データを読み込み、伸長処理を制御する。すなわち、命令制御部16は、圧縮データとしてバイトコードを圧縮データ記憶部15から順番に読み出してバイトコードの種別を判定し、種別に応じた処理部に制御を渡す。
rpt更新部17は、バイトコード「読出ポインタ更新」を処理する。すなわち、rpt更新部17は、読出ポインタ11にbc[5:0]−31を加える。
rpt設定部18は、バイトコード「読出ポインタ設定」を処理する。すなわち、rpt設定部18は、1バイト目のbc[5:0]を上位6ビット、2バイト目のbc[7:0]を下位8ビットとする値を読出ポインタ11に設定する。
コピー部19は、バイトコード「ドレイン&コピー」を処理する。すなわち、コピー部19は、bc[5]=T=0の場合には、スライドバッファ13で、読出ポインタ11で指定される位置からbc[4:1]で指定される数のバイトを書込ポインタ12で指定される位置にコピーする。また、コピー部19は、bc[5]=T=1の場合には、スライドバッファ13で、読出ポインタ11で指定される位置からbc[4:1]で指定される数の倍長語を書込ポインタ12で指定される位置にコピーする。そして、コピー部19は、読出ポインタ11及び書込ポインタ12をコピーしたバイト数で更新する。ただし、ここでは、主記憶装置330上にスライドバッファ13があるため、ドレインは不要となる。
図13は、8バイト単位のコピー処理におけるロード及びストアの回数を説明するための図である。図13(a)は、読出ポインタ11が主記憶装置330の8バイト境界にある場合を示し、図13(b)は、読出ポインタ11が主記憶装置330の8バイト境界にない場合を示す。なお、8バイト単位のコピー処理が行われるときは、書込ポインタ12は常に主記憶装置330の8バイト境界にあるように圧縮装置100がバイトコードを生成する。
図13(a)に示すように、読出ポインタ11が主記憶装置330の8バイト境界にある場合には、コピー部19は、読出ポインタ11が指す位置からレジスタに8バイトロードして、書込ポインタ12が指す位置へ8バイトストアする。したがって、n単位処理するために必要な命令実行回数は、8バイトロード命令がn回、8バイトストア命令がn回である。
一方、図13(b)に示すように、読出ポインタ11が主記憶装置330の8バイト境界にない場合には、コピー部19は、8バイトロード命令を2回実行して、コピー対象の8バイトを含む16バイトを主記憶装置330から2つのレジスタに読み出す。そして、コピー部19は、コピー対象の先頭を含むレジスタをコピー対象の先頭が左端になり、右端から0が埋められるように左シフトし、コピー対象の最後尾を含むレジスタをコピー対象の最後尾が右端になり、左端から0が埋められるように右シフトする。そして、コピー部19は、2つのレジスタの論理和をとり、書込ポインタ12が指す位置へ8バイトストアする。
ここで、コピー対象の最後尾を含むレジスタには次のコピー対象データが含まれるため、コピー部19は、コピー対象の最後尾を含むレジスタを右シフトしたとき、シフトアウトしたデータをゼロクリアされた別のレジスタにシフトインし、次のコピーで使用する。したがって、コピー部19は、次のコピーでは、コピー対象の最後尾を含む8バイトをレジスタにロードするだけでコピー対象データを得ることができる。すなわち、コピー部19が8バイト単位コピーをn回実行する場合に、最初の回だけは8バイトロードが2回必要となるが、他のn−1回は8バイトロードは1回ですむ。したがって、n単位処理するために必要な命令実行回数は、8バイトロード命令がn+1回、8バイトストア命令がn回である。一方、1バイト単位でn単位処理する場合の命令実行回数は、ロード命令及びストア命令がそれぞれ8n回となる。
したがって、コピー部19は、読出ポインタ11が主記憶装置330の8バイト境界以外を指す場合にも、8バイト単位コピーを行うことにより、1バイト単位でコピーを行う場合と比較して、ロード命令及びストア命令の実行回数を減らすことができる。
直データ処理部20は、バイトコード「ドレイン&直データ」を処理する。すなわち、直データ処理部20は、bc[5]=T=0の場合には、圧縮データの次のバイトからbc[4:1]で指定される数のバイトをスライドバッファ13で書込ポインタ12が指定する位置に書き込む。また、直データ処理部20は、bc[5]=T=1の場合には、圧縮データの次の倍長語からbc[4:1]で指定される数の倍長語をスライドバッファ13で書込ポインタ12が指定する位置に書き込む。そして、直データ処理部20は、書込ポインタ12を書き込んだバイト数で更新する。ただし、ここでは、主記憶装置330上にスライドバッファ13があるため、ドレインは不要となる。
次に、伸長プログラム10による伸長処理の手順について説明する。図14は、伸長プログラム10による伸長処理の手順を示すフローチャートである。図14に示すように、伸長プログラム10は、まず圧縮データ読込部14が、ファイルから圧縮データを読み込んで(ステップS71)、圧縮データ記憶部15に書き込む。
そして、命令制御部16が、バイドコードの実行に必要な初期化処理を行う(ステップS72)。初期化処理としては、読出ポインタ11、書込ポインタ12、スライドバッファ13の初期設定などがある。
そして、命令制御部16が、圧縮データ記憶部15からバイトコードを読み出し(ステップS73)、全バイトコードの読み出しが完了したか否かを判定する(ステップS74)。その結果、全バイトコードの読み出しが完了した場合には、命令制御部16は、伸長処理を終了する。
一方、全バイトコードの読み出しが完了していない場合には、命令制御部16は、読み出したバイトコードの種別を判定する(ステップS75)。その結果、バイトコードが「読出ポインタ更新」である場合には、rpt更新部17が読出ポインタ11を更新する(ステップS76)。また、バイトコードが「読出ポインタ設定」である場合には、rpt設定部18が読出ポインタ11に値を設定する(ステップS77)。また、バイトコードが「ドレイン&コピー」である場合には、コピー部19がコピー処理を行う(ステップS78)。また、バイトコードが「ドレイン&直データ」である場合には、直データ処理部20が直データ処理を行う(ステップS79)。
そして、命令制御部16はステップS73に戻り、次のバイトコードを処理する。このように、命令制御部16がバイトコードの種別に基づく処理を実行することにより、伸長プログラム10は圧縮データを伸長することができる。
次に、コピー処理の手順について説明する。図15は、コピー処理の手順を示すフローチャートである。図15に示すように、コピー部19は、まずバイトコピーであるか否か、すなわちbc[5]=Tの値が0であるか1であるかを判定する(ステップS81)。
その結果、バイトコピーであると判定した場合には、コピー部19は、スライドバッファ13で、読出ポインタ11により指定される位置から書込ポインタ12で指定される位置へnバイトコピーする(ステップS82)。ここで、nはbc[4:1]で指定される数である。そして、コピー部19は、読出ポインタ11及び書込ポインタ12にnを加え、スライドウィンドウを再設定する(ステップS83)。
一方、バイトコピーでないと判定した場合には、コピー部19は、スライドバッファ13で、読出ポインタ11により指定される位置から書込ポインタ12で指定される位置へ8バイト単位コピーをn回実行する(ステップS84)。そして、コピー部19は、読出ポインタ11及び書込ポインタ12に8×nを加え、スライドウィンドウを再設定する(ステップS85)。
このように、コピー部19は、読出ポインタ11により指定される位置から書込ポインタ12で指定される位置へデータをコピーすることにより、スライドバッファ13内に伸長データを生成していくことができる。
次に、直データ処理の手順について説明する。図16は、直データ処理の手順を示すフローチャートである。図16に示すように、直データ処理部20は、まず直データがバイトデータであるか否か、すなわちbc[5]=Tの値が0であるか1であるかを判定する(ステップS91)。
その結果、直データがバイトデータであると判定した場合には、直データ処理部20は、スライドバッファ13で書込ポインタ12により指定される位置に圧縮データ記憶部15からnバイトコピーする(ステップS92)。ここで、nはbc[4:1]で指定される数である。そして、直データ処理部20は、書込ポインタ12にnを加え、スライドウィンドウを再設定する(ステップS93)。
一方、直データがバイトデータでないと判定した場合には、直データ処理部20は、スライドバッファ13で書込ポインタ12により指定される位置に圧縮データ記憶部15からn倍長語コピーする(ステップS94)。そして、直データ処理部20は、書込ポインタ12に8×nを加え、スライドウィンドウを再設定する(ステップS95)。
このように、直データ処理部20は、書込ポインタ12で指定される位置へ圧縮データ記憶部15からデータをコピーすることにより、スライドバッファ13に伸長データを生成していくことができる。
上述してきたように、実施例2では、伸長プログラム10がバイトコードを解釈して実行することにより圧縮データの伸長を行うので、圧縮装置100はバイトコードを圧縮データとすることができる。
なお、実施例1及び2では、圧縮装置100について説明したが、圧縮装置100が有する構成をソフトウェアによって実現することで、同様の機能を有する圧縮プログラムを得ることができる。そこで、圧縮プログラムを実行するコンピュータについて説明する。
図17は、本実施例に係る圧縮プログラムを実行するコンピュータの構成を示す機能ブロック図である。図17に示すように、コンピュータ400は、RAM410と、CPU420と、HDD430と、LANインタフェース440と、入出力インタフェース450と、DVDドライブ460とを有する。
RAM410は、プログラムやプログラムの実行途中結果などを記憶するメモリであり、CPU420は、RAM410からプログラムを読み出して実行する中央処理装置である。HDD430は、プログラムやデータを格納するディスク装置であり、LANインタフェース440は、コンピュータ400をLAN経由で他のコンピュータに接続するためのインタフェースである。入出力インタフェース450は、マウスやキーボードなどの入力装置及び表示装置を接続するためのインタフェースであり、DVDドライブ460は、DVDの読み書きを行う装置である。
そして、コンピュータ400において実行される圧縮プログラム411は、DVDに記憶され、DVDドライブ460によってDVDから読み出されてコンピュータ400にインストールされる。あるいは、圧縮プログラム411は、LANインタフェース440を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ400にインストールされる。そして、インストールされた圧縮プログラム411は、HDD430に記憶され、RAM410に読み出されてCPU420によって実行される。なお、コンピュータ400は、伸長プログラム10を実行することもできる。
また、実施例1及び2では、圧縮伸長システムがバイトコードを用いる場合について説明した。しかしながら、本発明はこれに限定されるものではなく、バイト単位でデータをコピーするか8バイト単位でデータをコピーするかなど伸長時の処理を指定する形式のデータを圧縮データとして圧縮伸長システムが用いる場合にも同様に適用することができる。
また、実施例1及び2では、伸長処理を行うコンピュータ内部でのデータ転送が8バイト単位で行われる場合について説明した。しかしながら、本発明はこれに限定されるものではなく、データ転送が例えば16バイト単位など8バイト以外の単位で行われる場合にも同様に適用することができる。
1 スライドウィンドウ
10 伸長プログラム
11 読出ポインタ
12 書込ポインタ
13 スライドバッファ
14 圧縮データ読込部
15 圧縮データ記憶部
16 命令制御部
17 rpt更新部
18 rpt設定部
19 コピー部
20 直データ処理部
100 圧縮装置
101 読出ポインタ
102 書込ポインタ
110 データ入力部
120 入力データ記憶部
130 保留直データ記憶部
140 最長一致列検索部
150 保留直データ出力部
160 一致データ列出力部
170 制御部
200 伸長装置
210 プロセッサ
211 スライドバッファ格納RAM
212 バイトコード実行器
213 入出力部
214 バス制御部
220 主記憶装置
300,400 コンピュータ
310 コア
311 演算器
312 命令制御部
313 レジスタファイル
320 キャッシュメモリ
321 バッファ
322 データRAM
330 主記憶装置
410 RAM
411 圧縮プログラム
420 CPU
430 HDD
440 LANインタフェース
450 入出力インタフェース
460 DVDドライブ

Claims (10)

  1. データを圧縮して得られる圧縮データに基づいて、実行されることにより前記データを生成可能なコード列を含み、前記データに対してデータ量が少ない圧縮データを生成する圧縮装置と、
    前記圧縮データに含まれる前記コード列を実行して、前記データを生成する伸長装置と、
    を備えたことを特徴とする圧縮及び伸長システム。
  2. 前記圧縮装置は、伸長時に単位長の複数倍のデータの処理命令が用いられるか単位長のデータの処理命令が用いられるかを判定し、判定結果に基づいて前記コード列を生成し、
    前記伸長装置は、単位長の複数倍のデータの処理命令及び単位長のデータの処理命令を含むコード列を実行することを特徴とする請求項1に記載の圧縮及び伸長システム。
  3. 前記圧縮装置は、前記コード列に含まれる命令として、伸長されたデータを格納する範囲をずらしながら該データの一部を格納するスライドバッファの読み出し位置を示す読出ポインタを操作するポインタ操作命令、スライドバッファで前記読出ポインタにより指された位置から指定された長さのデータを書込ポインタにより指された位置にコピーするコピー命令、前記スライドバッファで書込ポインタにより指された位置に命令内で指定されたデータをコピーする直データ処理命令を生成し、
    前記伸長装置は、前記ポインタ操作命令、前記コピー命令、前記直データ処理命令を含むコード列を実行することを特徴とする請求項2に記載の圧縮及び伸長システム。
  4. 前記伸長装置は、スライドバッファとは異なる記憶装置を有し、
    前記圧縮装置は、コピーしたデータの長さと同じ長さのデータをスライドバッファから前記記憶装置に吐き出すか否かを判定し、前記コピー命令及び直データ処理命令で判定結果を指定することを特徴とする請求項3に記載の圧縮及び伸長システム。
  5. 前記圧縮装置は、単位長の複数倍のデータの処理命令を生成する前に、前記書込ポインタの値が単位長の複数倍になるように、単位長のデータの処理命令を生成することを特徴とする請求項3に記載の圧縮及び伸長システム。
  6. データを圧縮して圧縮データを生成する圧縮装置において、
    データを圧縮して得られる圧縮データに基づいて、実行されることにより前記データを生成可能なコード列を含み、前記データに対してデータ量が少ない圧縮データを生成する生成部
    を有することを特徴とする圧縮装置。
  7. 圧縮装置により圧縮されたデータである圧縮データを伸長する伸長装置において、
    前記データに対してデータ量が少ない圧縮データに含まれるコード列を実行して、前記データを生成する伸長部
    を有することを特徴とする伸長装置。
  8. データを圧縮して得られる圧縮データに基づいて、実行されることにより前記データを生成可能なコード列を含み、前記データに対してデータ量が少ない圧縮データを生成し、
    前記圧縮データに含まれる前記コード列を実行して、前記データを生成する
    ことを特徴とする圧縮及び伸長方法。
  9. データを圧縮して圧縮データを生成する圧縮プログラムにおいて、
    データを圧縮して得られる圧縮データに基づいて、実行されることにより前記データを生成可能なコード列を含み、前記データに対してデータ量が少ない圧縮データを生成する処理をコンピュータに実行させることを特徴とする圧縮プログラム。
  10. 圧縮装置により圧縮されたデータである圧縮データを伸長する伸長プログラムにおいて、
    前記データに対してデータ量が少ない圧縮データに含まれるコード列を実行して、前記データを生成する
    処理をコンピュータに実行させることを特徴とする伸長プログラム。
JP2012083183A 2012-03-30 2012-03-30 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム Pending JP2013214832A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2012083183A JP2013214832A (ja) 2012-03-30 2012-03-30 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム
US13/611,804 US20130262808A1 (en) 2012-03-30 2012-09-12 Compression and decompression system, compression apparatus, decompression apparatus and compression and decompression method
EP12186067.0A EP2645578A2 (en) 2012-03-30 2012-09-26 Method, system and apparatus for data compression and decomression
KR1020120111836A KR20130111170A (ko) 2012-03-30 2012-10-09 압축 및 신장 시스템, 압축 장치, 신장 장치, 압축 및 신장 방법, 압축 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체, 및 신장 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
CN2012103846018A CN103365648A (zh) 2012-03-30 2012-10-11 压缩和解压缩***及方法,压缩装置,和解压缩装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012083183A JP2013214832A (ja) 2012-03-30 2012-03-30 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム

Publications (1)

Publication Number Publication Date
JP2013214832A true JP2013214832A (ja) 2013-10-17

Family

ID=47044821

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012083183A Pending JP2013214832A (ja) 2012-03-30 2012-03-30 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム

Country Status (5)

Country Link
US (1) US20130262808A1 (ja)
EP (1) EP2645578A2 (ja)
JP (1) JP2013214832A (ja)
KR (1) KR20130111170A (ja)
CN (1) CN103365648A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016019113A (ja) * 2014-07-07 2016-02-01 富士通株式会社 伸長方法、伸長プログラムおよび伸長装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9325813B2 (en) * 2013-09-03 2016-04-26 Qualcomm Incorporated Formatting data packets for compression
JP6511836B2 (ja) * 2015-01-30 2019-05-15 富士通株式会社 圧縮プログラム、圧縮方法、圧縮装置および伸長プログラム
US10474385B2 (en) * 2016-02-23 2019-11-12 Google Llc Managing memory fragmentation in hardware-assisted data compression
US10592248B2 (en) * 2016-08-30 2020-03-17 Advanced Micro Devices, Inc. Branch target buffer compression
CN110545108B (zh) * 2019-09-09 2022-12-20 飞天诚信科技股份有限公司 数据处理方法、装置、电子设备及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000188692A (ja) * 1998-12-22 2000-07-04 Toshiba Corp データ処理方法
JP2003046392A (ja) * 2001-06-30 2003-02-14 Robert Bosch Gmbh データ圧縮方法およびデータ伸長方法、該方法を実施するためのコンピュータプログラム製品と電子システム
JP2004260256A (ja) * 2003-02-24 2004-09-16 Oki Electric Ind Co Ltd データ圧縮装置及びデータ展開装置
JP2007293461A (ja) * 2006-04-21 2007-11-08 Funai Electric Co Ltd データ圧縮プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2156889C (en) * 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
US20030074364A1 (en) * 2001-10-12 2003-04-17 Sewall Patrick M. Compressed data structure and decompression system
US7965710B1 (en) * 2006-11-27 2011-06-21 Marvell International Ltd. Decoding operations in normal transmission mode
US7692561B2 (en) * 2008-07-17 2010-04-06 International Business Machines Corporation Method and apparatus for data decompression in the presence of memory hierarchies
JP5533083B2 (ja) 2010-03-16 2014-06-25 株式会社リコー データ処理装置およびデータ処理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000188692A (ja) * 1998-12-22 2000-07-04 Toshiba Corp データ処理方法
JP2003046392A (ja) * 2001-06-30 2003-02-14 Robert Bosch Gmbh データ圧縮方法およびデータ伸長方法、該方法を実施するためのコンピュータプログラム製品と電子システム
JP2004260256A (ja) * 2003-02-24 2004-09-16 Oki Electric Ind Co Ltd データ圧縮装置及びデータ展開装置
JP2007293461A (ja) * 2006-04-21 2007-11-08 Funai Electric Co Ltd データ圧縮プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016019113A (ja) * 2014-07-07 2016-02-01 富士通株式会社 伸長方法、伸長プログラムおよび伸長装置

Also Published As

Publication number Publication date
KR20130111170A (ko) 2013-10-10
US20130262808A1 (en) 2013-10-03
EP2645578A2 (en) 2013-10-02
CN103365648A (zh) 2013-10-23

Similar Documents

Publication Publication Date Title
US7661102B2 (en) Method for reducing binary image update package sizes
JP2013214832A (ja) 圧縮及び伸長システム、圧縮装置、伸長装置、圧縮及び伸長方法、圧縮プログラム及び伸長プログラム
JP4533682B2 (ja) トレース解析装置およびトレース解析方法
EP3120266B1 (en) Ozip compression and decompression
KR950001485A (ko) 연산처리방법 및 마이크로 컴퓨터
US7979853B2 (en) Compiler device, method, program and recording medium
US11055328B2 (en) Non-transitory computer readable medium, encode device, and encode method
JP4921310B2 (ja) 命令ビット長削減方法
JP6201788B2 (ja) ループ分割検出プログラム及びループ分割検出方法
JP5770534B2 (ja) プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法
KR20050089031A (ko) 명령 집합 처리 방법, 데이터 처리 시스템 및 컴퓨터프로그램 저장 매체
JPH04360246A (ja) ファイル圧縮装置
TW202215234A (zh) 遮罩向量比較指令
JPH10187460A (ja) バイナリ・プログラム変換装置および方法
JP2009277062A (ja) データ書き換えシステム及び新版データ作成装置及び差分データ作成装置及び新版データ作成プログラム及び差分データ作成プログラム
JP2013257670A (ja) プロセッサ、圧縮装置、圧縮方法、および圧縮プログラム
US11593311B2 (en) Compression system with longest match processing for generating compressed data
JPH09330219A (ja) 命令解読器切替型プロセッサ及び翻訳装置
JP3424430B2 (ja) プロセッサ
JP6222374B2 (ja) コード変換プログラム、コード変換装置およびコード変換方法
JP2004139369A (ja) 定数アドレス領域を指示するポインタ解析方法
JP2006011822A (ja) プロセッサ
JPH08263263A (ja) データ処理装置および圧縮プログラム作成装置
JPH10301791A (ja) オブジェクトコード最適化装置、オブジェクトコード最適化方法、オブジェクトコード最適化プログラムを記録した機械読み取り可能な記録媒体、及び、コンパイラ
Consolazio et al. Optimization of Finite‐Element Software Using Data‐Compression Techniques

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131112

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140114

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140212