(57)【要約】  入力部（１１０）は、主記憶からデータを読み出して、可逆圧縮を行う圧縮実行部（１２０）への入力の開始と停止を繰り返す。先頭アドレス保持部（１１２）は、入力部（１１０）が今回に入力するデータの先頭が主記憶におけるアドレスを記憶する。書込部（１３０）は、圧縮実行部（１２０）が毎回に出力した圧縮データを補助記憶に書き込む際に、サイズが補助の書込単位になるように圧縮データに所定のデータをパディングする。制御部（１５０）は、入力部（１１０）が入力を停止する度に圧縮実行部（１２０）の内部状態をリセットする。入力部（１１０）は、今回の入力により既に圧縮実行部に入力したデータの圧縮後のなり得る最大サイズが補助記憶の書込単位に到達する前に入力を停止する。このようにして、圧縮データの書込先の記憶装置の書込単位で圧縮データの再生成を可能にする。
2012164813.tif 000002
【特許請求の範囲】
【請求項１】
入力されたデータに対して可逆圧縮を行って圧縮データを出力する圧縮実行手段と、
第１の記憶装置からデータを読み出して、前記圧縮実行手段への入力の開始と停止を繰り返す入力手段と、
前記入力手段による各回の入力毎に、今回に入力するデータの先頭が前記第１の記憶装置におけるアドレスを記憶する先頭アドレス保持手段と、
前記入力手段による各回の入力毎に、今回に入力したデータに対して前記圧縮実行手段が出力した前記圧縮データを第２の記憶装置に書き込むと共に、今回の書込みの成功または失敗を示す完了信号を出力する書込手段であって、書込みに際しては、書き込むデータのサイズが前記第２の記憶装置の書込単位になるように前記圧縮データに所定のデータをパディングする前記書込手段と、
前記入力手段が入力を停止する度に前記圧縮実行手段の内部状態をリセットし、または、前記入力手段が入力を開始する度に前記圧縮実行手段の内部状態を退避する制御手段とを備え、
前記入力手段は、今回の入力により既に前記圧縮実行手段に入力したデータの圧縮後のなり得る最大サイズが前記第２の記憶装置の前記書込単位に到達する前に入力を停止し、記書込手段が前記完了信号を出力したときに入力を再開するものであり、再開に際しては、前記先頭アドレス保持手段に保持された前回の入力に対応する前記アドレスと、前記完了信号とに応じて、前記圧縮実行手段に入力するデータを決定することを特徴とする圧縮装置。
【請求項２】
前記入力手段による各回の入力毎に、前記入力の開始から前記圧縮実行手段が出力した前記圧縮データのサイズを計測するサイズ計測手段をさらに備え、
前記圧縮実行手段は、各回に入力されたデータを圧縮して得た圧縮データの末尾に終了語を付加し、
前記入力手段は、前記サイズ計測手段により計測されたサイズが閾値に到達したときに入力を停止し、
前記閾値は、式（１）に従って定められていることを特徴とする請求項１に記載の圧縮装置。
閾値
＝書込単位
−符号語最大ビット長×（入力済でありまだ圧縮データとして出力されていないデータの語数）−終了語ビット長      （１）
【請求項３】
前記入力手段は、前記第１の記憶装置から読み出したデータを一時的に格納する入力キューを備えることを特徴とする請求項１または２に記載の圧縮装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮、特に可逆圧縮技術に関する。
【背景技術】
【０００２】
データの可逆圧縮技術は、ロスレス圧縮とも呼ばれ、データ系列を完全に復元可能な状態で圧縮することで、データ量を削減する技術である。データ可逆圧縮技術は、伸張（復元）後にデータが元通りになる必要のあるデータ系列を圧縮する目的で、頻繁に使用されている（例えば特許文献１−２）。【０００３】
データ可逆圧縮技術のアルゴリズムは、例えば、非特許文献１−４に開示されている。非特許文献１乃至４に開示されたように、可逆圧縮では、ハフマン符号化やランレングス符号化、算術符号、ＬＺ符号及びその変形など、データ系列中の繰り返しパターンを探索するアルゴリズムが主流である。また、非特許文献５には、ＬＺにおけるハードウェア装置向けの高速実装手法が開示されている。【０００４】
また、計算機内の主記憶に格納されたデータについては、当該計算機の装置電源を一時オフにした時に、主記憶から補助記憶である不揮発記憶へデータを退避する処理であるハイバネーションを行うものが知られている。特許文献３−５には、ハイバネーションの際に可逆圧縮や非可逆圧縮を適用することによって、退避及び復帰にかかる時間を短縮する技術が開示されている。また、プログラム等については可逆圧縮、画像等については非可逆圧縮を適用可能である。【０００５】
また、特許文献３−５に記載された技術は、スワッピングにも適用可能である。スワッピングとは、計算機の動作中において、使用頻度の低いプロセスを一時的に主記憶から補助記憶装置へ退避して、主記憶の領域を開放する処理である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０００／０２１１９９号
【特許文献２】特開平１０−１７３５４１号公報
【特許文献３】特開２００４−０３８５４５号公報
【特許文献４】特開２００４−０３８５４６号公報
【特許文献５】国際公開第２０００／０５４１３３号
【非特許文献】
【０００７】
【非特許文献１】Jacob Ziv and Abraham Lempel; "A Universal Algorithm for Sequential Data Compression", IEEE Transactions on Information Theory, 23(3), pp. 337-343, May 1977.
【非特許文献２】Rissanen, Jorma (May 1976). "Generalized Kraft Inequality and Arithmetic Coding". IBM Journal of Research and Development 20 (3): 198-203.
【非特許文献３】Huffman's original article: D.A. Huffman, "A Method for the Construction of Minimum-Redundancy Codes", Proceedings of the I.R.E., September 1952, pp 1098-1101.
【非特許文献４】Vitter, Jeffrey Scott, "Design and Analysis of Dynamic Huffman Coding", IEEE Foundations of Computer Science, 26th Annual Symposium on Digital Object Identifier: pp. 293-302, 1985.
【非特許文献５】森岡澄夫, 佐藤証: "100Mbyte/s高速データ圧縮エンジン", 第9回FPGA/PLD Design Conference, Jan 2002.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した可逆圧縮手法では、データの可逆圧縮を行う際の処理速度を落とすことなく、圧縮率を維持することが困難という問題点がある。その理由は、可逆圧縮手法は、圧縮に関わる処理速度と、圧縮率との間でトレードオフの関係があるためである。特に、計算機の主記憶に格納されたデータの可逆圧縮の際に、このような問題点が顕著となる。そこで、以下に具体的に述べる。【０００９】
上述したハイバネーションやスワッピングなどを高速化するためには、計算機の主記憶に格納されたデータを圧縮することが有効である。特に、近年、主記憶の容量が著しく増大している。そのため、主記憶である揮発性記憶領域から補助記憶である不揮発性記憶領域への退避及び復帰処理には、以前に比べて長時間を要するようになった。そのため、主記憶に格納するデータを圧縮する必要性が高まっている。【００１０】
計算機主記憶の内容を圧縮する場合、例えば非特許文献１−５に開示された汎用的な可逆圧縮手法を用いるか、又は、例えば特許文献３−４に開示されたようにデータ内容に応じて複数の圧縮手法を切り替えることが考えられる。ところで、計算機の主記憶に格納されたデータの内容は画像等に特定されていない。そこで、特許文献３−４に開示された技術を適用すると、対象データについて都度、圧縮の可否を判定する必要があり、判定処理の負荷が高い。そのため、データ内容に応じて複数の圧縮手法を切り替えるという手法は、処理が複雑であるため、長い処理時間を要する。また、当該手法は、データ内容の判別が困難であるため、一般的な利用には適さない。【００１１】
そのため、主記憶に格納されたデータを圧縮するには、汎用的な可逆圧縮手法を利用することが望ましい。しかし、単一の汎用的な可逆圧縮手法である算術符号など計算量の多いアルゴリズムでは、圧縮及び伸張に長時間かかってしまうため、ハイバネーションやスワッピングなどを高速化することができない。【００１２】
一方、汎用的な可逆圧縮手法のうちＬＺについては、例えば非特許文献５に開示されたように、ハードウェア装置向けの高速実装手法が知られている。そのため、主記憶に格納されたデータを圧縮するために、ＬＺを用いることは適切と考えられる。【００１３】
ＬＺ圧縮ではパターン・マッチングが行われる。具体的には、あるデータ列に着目して、それが以前に出現したことがあるかをチェックし、既に出現したことがあるのならば、そのデータ列を示す何らかの符号に置き換えることにより圧縮を行う。当然ながら、データ列を置き換える符号は、データ列より短い。【００１４】
ここで、置換えの対象となるデータ列は、辞書に登録されるようになっている。このようなデータ列は、あらかじめデータに存在するものと決まっているならば、先に辞書を作成しておくことも可能であるが、画像データのように、どのようなデータ列が存在するのか予測できないような場合は、圧縮を行いながら、同時に辞書を作成していく必要がある。この場合、ある時点での圧縮装置の内部状態（辞書の内容など）は、過去の先頭からの入力系列を反映している。【００１５】
また、ＬＺに限らず可逆圧縮は、実際に圧縮してみるまでは圧縮後データのサイズが分からないという性質を持つ。このため、圧縮後のデータを記憶する領域が元の主記憶上のどのアドレスに対応するかは、主記憶上にどのようなデータが存在していたかによって変動すると共に、圧縮前に予測することができない。【００１６】
また、可逆圧縮の符号語はビット単位で可変長である。圧縮後のデータは符号語が順に並んだものであるが、そこにおいて符号語は、バイト境界やワード境界をまたぐ形となりうる。【００１７】
ここで、ハイバネーションやスワッピングなどにおいて不揮発記憶に圧縮後のデータを書き込む際、書込みエラーが生じた場合を考える。不揮発記憶への書込みは一定サイズのブロック単位で物理ブロック・アドレスを指定して行われるが、あるブロックの書込みに失敗した場合、異なる物理ブロック・アドレスへの書直しが必要となる。なお、「ブロック」とは、記憶装置の物理的な記録単位を意味し、セクタとも呼ばれる。【００１８】
このような書直しに対応するために、例えば、ブロックに書き込む圧縮データ（以下ブロック・データともいう）全体を、書込みの成功が判明するまで主記憶または別途に設けられたバッファなどに一時的に保存しておくことが考えられる。こうすることにより、書込みの失敗が判明したならば、一時的に保存しておいたデータで再書込みをすればよい。【００１９】
しかし、この手法では、主記憶上にブロック・データを保存する領域を確保するか、別途にバッファを設ける必要がある。システムによっては、主記憶上でそのための領域を確保できない場合もある。【００２０】
その一方、ブロック・データを一時的保存しない場合には、書込み失敗と判明した時点でブロック・データが消失してしまう。この場合、ブロック・データを再度作り直す必要があり、そのために、圧縮装置の内部状態を当該ブロックの圧縮開始前の状態に戻す処理（ロールバック）が必要である。【００２１】
ところで、前述したように、可逆圧縮アルゴリズムでは、入力系列のうち先頭から現在に至る部分によって内部状態が決定するという特性がある。そのため、単純に入力系列の途中から再圧縮をしても、同じ符号語を生成することができない。【００２２】
また、符号語長は可変であり、そのサイズを圧縮前に予測することはできない。そのため、入力系列を一定量ごとに区切って圧縮しても、その一定量を圧縮して得た符号語系列が１つのブロックに収まりきらなかったり、逆にブロック長に対して短すぎたりなどの状況になりうる。【００２３】
さらに、圧縮して得た符号語系列をブロックのサイズごとに区切ろうとしても、符号語系列がブロック間にまたがってしまう可能性があるので、できない。仮に、ブロックの先頭と符号系列の境界が一致していたとしても、ブロック・データの先頭にある符号語が入力となる主記憶のどのアドレスと対応しているかは明らかではない。【００２４】
上述したようなことから、可逆圧縮では、圧縮データの書込単位となるブロック単位で圧縮データの再生成が困難であり、入力の最初から圧縮をやり直せざるを得ない場合が多々ある。【００２５】
本発明は、上記事情を鑑みてなされたものであり、書込単位で圧縮後のデータの再生成が可能な可逆圧縮技術を提供する。
【課題を解決するための手段】
【００２６】
本発明の１つの態様は、圧縮装置である。この圧縮装置は、圧縮実行部と、入力部と、先頭アドレス保持部と、書込部と、制御部を備える。【００２７】
圧縮実行部は、入力されたデータに対して可逆圧縮を行って圧縮データを出力する。【００２８】
入力部は、第１の記憶装置からデータを読み出して、前記圧縮実行部への入力の開始と停止を繰り返す。【００２９】
先頭アドレス保持部は、前記入力部による各回の入力毎に、今回に入力するデータの先頭が前記第１の記憶装置におけるアドレスを記憶する。【００３０】
書込部は、前記入力部による各回の入力毎に、今回に入力したデータに対して前記圧縮実行部が出力した前記圧縮データを第２の記憶装置に書き込むと共に、今回の書込みの成功または失敗を示す完了信号を出力する。また、書込みに際しては、書き込むデータのサイズが前記第２の記憶装置の書込単位になるように前記圧縮データに所定のデータをパディングする。【００３１】
制御部は、前記入力が入力を停止する度に前記圧縮実行部の内部状態をリセットし、または、前記入力部が入力を開始する度に前記圧縮実行部の内部状態を退避する。【００３２】
また、前記入力部は、今回の入力により既に前記圧縮実行部に入力したデータの圧縮後のなり得る最大サイズが前記第２の記憶装置の前記書込単位に到達する前に入力を停止し、記書込部が前記完了信号を出力したときに入力を再開するものであり、再開に際しては、前記先頭アドレス保持部に保持された前回の入力に対応する前記アドレスと、前記完了信号とに応じて、前記圧縮実行部に入力するデータを決定する。【００３３】
なお、上記態様の装置をシステムや方法に置き換えて表現したもの、コンピュータを該装置として実行せしめるプログラムなども、本発明の態様としては有効である。
【発明の効果】
【００３４】
本発明にかかる技術によれば、圧縮データの書込先の記憶装置の書込単位で圧縮データの再生成が可能である。
【図面の簡単な説明】
【００３５】
【図１】本発明の第１の実施の形態にかかる可逆圧縮装置を示す図である。
【図２】本発明の第２の実施の形態にかかる可逆圧縮装置を示す図である。
【図３】本発明の第３の実施の形態にかかる可逆圧縮装置を示す図である。
【図４】本発明の第４の実施の形態にかかる可逆圧縮装置を示す図である。
【発明を実施するための形態】
【００３６】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００３７】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００３８】
＜第１の実施の形態＞
図１は、本発明の実施の形態にかかる可逆圧縮装置１００を示す。該可逆圧縮装置１００は、例えば計算機に設けられ、ハイバネーションやスワッピングなどのために第１の記憶装置例えば主記憶（図示せず）上の情報系列を圧縮して第２の記憶装置例えば補助記憶（図示せず）に書き込むものであり、入力部１１０、圧縮実行部１２０、書込部１３０、サイズ計測部１４０、制御部１５０を備える。
【００３９】
入力部１１０は、サイズ計測部１４０からの後述する制御信号ＣＴＲと、書込部１３０からの後述する完了信号ＲＳＵにより制御され、圧縮対象のデータである情報系列Ｄ１を主記憶から読み出して、圧縮実行部１２０へのデータ入力の開始と停止を繰り返すことにより圧縮実行部１２０にデータを供給する。具体的には、入力部１１０は、制御信号ＣＴＲを受信すると圧縮実行部１２０へのデータ入力を停止し、完了信号ＲＳＵを受信すると圧縮実行部１２０へのデータ入力を再開する。
【００４０】
また、入力部１１０は、先頭アドレス保持部１１２を備える。先頭アドレス保持部１１２は、例えばレジスタであり、入力部１１０が圧縮実行部１２０へのデータ入力を開始する度に、今回に入力するデータの先頭バイトの主記憶におけるアドレスを一時的に保存する。
【００４１】
また、入力部１１０は、圧縮実行部１２０へのデータ入力の再開に際して、先頭アドレス保持部１１２に保持された前回の入力に対応するアドレスと、完了信号ＲＳＵとに応じて、圧縮実行部１２０に今回入力するデータを決定する。これについては、後に詳細を説明する。
【００４２】
圧縮実行部１２０は、可逆圧縮を行うものであり、辞書バッファ１２２とマッチング結果保持部１２４を有する。圧縮実行部１２０は、入力部１１０から入力されるデータ（入力データＤ２という）を辞書バッファ１２２に投入してマッチングを行うと共に、マッチング結果保持部１２４に保持されたマッチング結果を更新しつつ符号語を生成することにより圧縮を行う。辞書バッファ１２２とマッチング結果保持部１２４は、可逆圧縮を行うこの種の圧縮装置に通常備えられるものであり、ここで詳細な説明を省略する。また、圧縮実行部１２０は、制御部１５０により内部状態（辞書バッファ１２２とマッチング結果保持部１２４の保存内容）の初期化（リセット）が可能である点を除き、圧縮のアルゴリズムなどは、非特許文献５に記載されたものなど、従来知られているこの種の可逆圧縮装置のものと同様である。以下、圧縮実行部１２０が入力データＤ２に対して圧縮を行って書込部１３０に出力するデータを「出力データＤ３」という。
【００４３】
分かりやすいように、入力部１１０が入力の開始から停止までを１回の入力という。また、入力部１１０の１回の入力により入力された全ての入力データＤ２に対して圧縮実行部１２０が行った圧縮を圧縮実行部１２０の１回の圧縮という。
【００４４】
書込部１３０は、圧縮実行部１２０の各回の圧縮毎に、今回の圧縮により得た圧縮データ（出力データＤ３）を補助記憶に書き込むと共に、今回の書込みの成功または失敗を示す完了信号ＲＳＵを入力部１１０に出力する。また、書込部１３０は、書込みに際しては、書き込むデータのサイズが一定のサイズになるように出力データＤ３に所定のデータ（パディングデータ）を追加する。この一定のサイズは、補助記憶への書込単位となるブロックまたはセクタのサイズであり、以下「書込単位Ｓ１」という。なお、書込部１３０が出力データＤ３にパディングデータを付加して補助記憶に書き込むデータをブロック・データＤ４という。
【００４５】
サイズ計測部１４０は、例えばカウンタであり、圧縮実行部１２０からの出力データＤ３のサイズ（例えばバイト数）をカウントし、カウント値が閾値Ｓ２以上になる度に、制御信号ＣＴＲを出力する。この制御信号ＣＴＲは、入力部１１０制御部１５０に出力される。また、サイズ計測部１４０は、制御信号ＣＴＲの出力後、次回のカウントのためにカウント値をクリアする。すなわち、サイズ計測部１４０は、入力部１１０による各回の入力毎に、今回の入力の開始から圧縮実行部１２０が出力した出力データＤ３のサイズを計測するものであり、計測したサイズが閾値Ｓ２になったときまたは閾値Ｓ２を超えたときに制御信号ＣＴＲを出力すると共に、カウント値をクリアする。
【００４６】
制御部１５０は、サイズ計測部１４０から制御信号ＣＴＲを受信すると圧縮実行部１２０の内部状態をリセットする。すなわち、本実施の形態の可逆圧縮装置１００において、制御部１５０は、サイズ計測部１４０のカウント値が閾値Ｓ２以上になる度、すなわち入力部１１０が入力を停止する度に圧縮実行部１２０の内部状態をリセットするリセット部として機能する。
【００４７】
閾値Ｓ２は、サイズ計測部１４０により計測した出力データＤ３のサイズが該閾値Ｓ２以上に到達したときに入力部１１０からの入力を停止した場合に、今回に入力されたデータに対して圧縮実行部１２０が書込部１３０に出力した全てのデータのサイズが書込単位Ｓ１以下になるように定められている。
【００４８】
例えば、閾値Ｓ２は、下記の式（１）に従って定められる。
閾値Ｓ２
＝書込単位Ｓ１
−符号語最大ビット長×（入力済でありまだ圧縮データとして出力されていないデータの語数）−終了語ビット長      （１）
【００４９】
式（１）において、「符号語最大ビット長」は、圧縮実行部１２０が圧縮する際にデータ列を置き換える符号語のうちの最長の符号語のビット長である。「入力済でありまだ圧縮データとして出力されていないデータの語数」は、入力部１１０が今回のデータ入力において既に圧縮実行部１２０に出力したデータＤ２のうちの、まだ圧縮実行部１２０による処理中であり圧縮データとして出力されていないデータの語数である。「語」は、入力部１１０による入力時の単位であり、例えば「１バイト」である。また、「終了語ビット長」は、圧縮実行部１２０の今回の圧縮により得られた出力データＤ３の終了を示す語（終了語）のビット長である。本実施の形態の可逆圧縮装置１００において、圧縮実行部１２０は、回毎の入力により入力されたデータの圧縮を完了するたびに、出力データＤ３の末尾に終了語を付加する。
【００５０】
こうすることにより、圧縮実行部１２０の今回の圧縮により得られた出力データＤ３のサイズが書込単位Ｓ１になる前に、入力部１１０と圧縮実行部１２０の動作が停止する。そのため、圧縮実行部１２０の一回の圧縮により得られた出力データＤ３の総サイズが書込単位Ｓ１以下になる。
【００５１】
書込部１３０は、毎回の書込み時に、書込単位Ｓ１になるように出力データＤ３にパディングデータを付加するため、ブロック・データＤ４のサイズが常に書込単位Ｓ１と同一である。
【００５２】
具体例を用いて説明する。例えば、書込単位Ｓ１は「１０００バイト」であり、今回の入力により、既に１０００バイトのデータＤ２が圧縮実行部１２０に出力されている。該１０００バイトのデータＤ２のうちの９９９０バイト分は既に圧縮され、圧縮データ（出力データＤ３）として書込部１３０に出力されているとする。このとき、該１０００バイトのうちの１０バイトの「１０」は、上記式（１）における「入力済でありまだ圧縮データとして出力されていないデータの語数」となる。
【００５３】
上記９９９０バイト分の圧縮後のサイズが９９５バイトであるとする。書込単位Ｓ１まで５バイトの余裕が残っている。ゆえに、最後の１０バイト分が「５バイト−終了語ビット長」まで圧縮できるなら、圧縮実行部１２０が今回の圧縮により得られた出力データＳ３のサイズを書込単位Ｓ１以下に抑えることができる。なお、出力データＳ２のサイズが書込単位Ｓ１に未満であるときには、書込部１２０のパディングにより、ブロック・データＤ４のサイズは、書込単位Ｓ１になる。
【００５４】
入力部１１０は、完了信号ＲＳＵを受信すると、書込みが成功したか失敗したかに応じて異なる動作をする。具体的には、完了信号ＲＳＵが書込みの成功を示す場合に、入力部１１０は、先頭アドレス保持部１１２に保持されたアドレスを更新したうえで次に圧縮実行部１２０へ供給するデータの読出しと出力を開始する。これにより、圧縮実行部１２０は、次のブロックのデータの圧縮を開始する。
【００５５】
一方、完了信号ＲＳＵが書込みの失敗を示す場合には、入力部１１０は、先頭アドレス保持部１１２に保持されたアドレスから主記憶の読出しを行い、読み出したデータを圧縮実行部１２０に出力する。これにより、圧縮実行部１２０は、書込みが失敗したブロック・データの再生成を行う。
【００５６】
このように、本実施の形態の可逆圧縮装置１００によれば、圧縮実行部１２０からの出力データＤ３のサイズが閾値Ｓ２以上になる度に、入力部１１０によるデータ入力と圧縮実行部１２０による圧縮が停止されると共に、圧縮実行部１２０の内部状態がリセットされ、書込部１３０により一定のサイズ（書込単位Ｓ１）のブロック・データＤ４が補助記憶に書き込まれる。すなわち、１回の圧縮により得られた全ての圧縮データを１つのブロックに書込むことができる。また、先頭アドレス保持部１１２が今回圧縮実行部１２０に入力したデータの先頭ビットの主記憶におけるアドレスを保持しているため、ブロック・データＤ４の書込みが成功した場合には次のブロック・データＤ４を生成することができると共に、書込みが失敗した場合には、失敗したブロック・データＤ４の再生成が可能であり、情報系列Ｄ１を最初からやり直す必要がない。さらに、ブロック・データＤ４を一時的に保存するメモリを必要としない利点もある。
【００５７】
＜第２の実施の形態＞
図２は、本発明の第２の実施の形態にかかる可逆圧縮装置２００を示す。可逆圧縮装置２００は、入力部１１０の代わりに入力部２１０を備えたこと以外、入力部１１０と同様の構成を有する。入力部２１０も、入力キュー２１４を備える点を除き、入力部１１０と同様である。
【００５８】
可逆圧縮装置２００は、可逆圧縮装置１００と同様の効果を得ることができると共に、入力キュー２１４を備えることにより、主記憶から読み出した情報系列Ｄ１をある程度蓄積することができるため、データ転送が高速になるとともに、入力の開始と停止の制御が簡便になる。
【００５９】
＜第３の実施の形態＞
図３は、本発明の第３の実施の形態にかかる可逆圧縮装置３００を示す。可逆圧縮装置３００は、バッファ３２０を備える点と、制御部３５０が可逆圧縮装置１００における制御部１５０と異なる点とを除き、可逆圧縮装置１００と同様である。ここで、制御部３５０とバッファ３２０についてのみ説明する。
【００６０】
制御部３５０は、圧縮実行部１２０による毎回の圧縮の開始時に、圧縮実行部１２０の内部状態すなわち辞書バッファ１２２とマッチング結果保持部１２４の内容をバッファ３２０にコピーする。
【００６１】
バッファ３２０は、辞書バッファ１２２の内容のコピーを格納する辞書退避バッファ３２２と、マッチング結果保持部１２４の内容のコピーを格納するマッチング結果退避バッファ３２４を有する。制御部３５０は、圧縮実行部１２０による毎回の圧縮の開示時に、辞書バッファ１２２の内容を辞書退避バッファ３２２に上書きコピーし、マッチング結果保持部１２４の内容をマッチング結果退避バッファ３２４に上書きコピーする。
【００６２】
また、本実施の形態の可逆圧縮装置３００において、書込部１３０からの完了信号ＲＳＵは、制御部３５０にも出力される。制御部３５０は、完了信号ＲＳＵに応じて、書込部１３０による書込みが失敗した場合には、辞書退避バッファ３２２とマッチング結果退避バッファ３２４の内容を辞書バッファ１２２とマッチング結果保持部１２４に夫々上書きコピーすることにより復帰させる。この場合、第１の実施の形態の可逆圧縮装置１００の説明時に述べたように、入力部１１０が先頭アドレス保持部１１２により保持されたアドレスからデータの読出しと圧縮実行部１２０への入力を行うので、書込みが失敗したブロック・データＤ４の再生成が行われる。
【００６３】
一方、完了信号ＲＳＵが書込部１３０による書込みが成功したことを示す場合に、制御部３５０は、バッファ３２０の内容を辞書バッファ１２２とマッチング結果保持部１２４への復帰処理をしない。前述したように、この場合、入力部１１０は、先頭アドレス保持部１１２に保持されたアドレスを更新した上で次に圧縮実行部１２０に入力すべきデータの読出しと入力を行うので、書込みが成功したブロック・データＤ４の次の圧縮データの再生成が行われる。
【００６４】
このように、本実施の形態の可逆圧縮装置３００は、各回の圧縮の開始時に圧縮実行部１２０の内部状態をバッファ３２０に退避しておき、今回の圧縮により得られた圧縮データの書込みが失敗した場合にバッファ３２０に退避しておいた内容を圧縮実行部１２０に復帰させる。そのため、第１の実施の形態の可逆圧縮装置１００と同様にブロック・データＤ４の書込みが失敗したときに該ブロック・データＤ４の再生成ができると共に、可逆圧縮装置１００より圧縮の効率が向上する。
【００６５】
＜第４の実施の形態＞
図４は、本発明の第４の実施の形態にかかる可逆圧縮装置４００を示す。可逆圧縮装置４００は、可逆圧縮装置３００において、入力部１１０の代わりに可逆圧縮装置２００における圧縮実行部１２０を設けたものである。すなわち、可逆圧縮装置４００は、入力部２１０に入力キュー２１４が備えられた点を除き、可逆圧縮装置３００と同様である。
【００６６】
そのため、可逆圧縮装置４００は、可逆圧縮装置３００と同様の効果を得ることができると共に、入力キュー２１４を備えることにより、主記憶から読み出した情報系列Ｄ１をある程度蓄積することができるため、データ転送が高速になるとともに、入力の開始と停止の制御が簡便になる。
【００６７】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述実施の形態に対して、さまざまな変更、増減、組合せを加えてもよい。これらの変更、増減、組合せが加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【００６８】
例えば、可逆圧縮装置１００と可逆圧縮装置２００において、制御部１５０が圧縮実行部１２０の外部に設けられているが、制御部１５０を圧縮実行部１２０内部に設けるようにしてもよい。
【００６９】
また、各実施の形態の可逆圧縮装置において、先頭アドレス保持部１１２が入力部１１０または入力部２１０の内部に設けられているが、先頭アドレス保持部１１２を入力部の外部に設けるようにしても、勿論よい。
【００７０】
また、上述した各実施の形態の圧縮装置において、サイズ計測部１４０を設け、該サイズ計測部により計測したサイズが式（１）により定められた閾値Ｓ２以上になったときに入力部１１０による入力を停止するようにしている。サイズ計測部１４０を設けずに、入力部１１０が、今回の入力により既に圧縮実行部１２０に入力したデータの圧縮後のなり得る最大サイズが書込単位Ｓ１に到達する前に今回の入力を停止するようにしてもよい。なお、「入力したデータの圧縮後のなり得る最大サイズ」は、例えば、既に入力したデータの語数と、符号語最大ビット長との積とすることができる。
【００７１】
この出願は、２０１１年５月３０日に出願された日本出願特願２０１１−１２００３７を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００７２】
１００  可逆圧縮装置  １１０  入力部
１１２  先頭アドレス保持部  １２０  圧縮実行部
１２２  辞書バッファ  １２４  マッチング結果保持部
１３０  書込部  １４０  サイズ計測部
１５０  制御部  ２００  可逆圧縮装置
２１０  入力部  ２１４  入力キュー
３００  可逆圧縮装置  ３２０  バッファ
３２２  辞書退避バッファ  ３２４  マッチング結果退避バッファ
３５０  制御部  ４００  可逆圧縮装置
ＣＴＲ  制御信号  ＲＳＵ  完了信号
【図１】
2012164813.tif 000003
【図２】
2012164813.tif 000004
【図３】
2012164813.tif 000005
【図４】
2012164813.tif 000006
【国際調査報告】
2012164813.tif 000007
2012164813.tif 000008
2012164813.tif 000009
2012164813.tif 000010