(57)【要約】【課題】  データの高い圧縮速度を確保しつつ、メモリ資源を有効利用することのできるデータ圧縮装置及び電子機器を提供する。【解決手段】  メモリ３内の圧縮前データを圧縮し、圧縮後データをワーク領域３２に格納する圧縮器４１，４２と、圧縮器４１，４２による圧縮後データの格納先であるワーク領域３２のワーク用アドレスを圧縮器４１，４２に提供し且つワーク用アドレス及び圧縮後データのデータサイズを管理する第１、第２シーケンサ４６，４７と、ワーク領域３２内の圧縮後データをヒープ領域３３に移動する第１、第２移動器４３，４４と、前記シーケンサ４６，４７が管理する圧縮後データのデータサイズとヒープポインタ４５により前記移動器４３，４４に前回提供されたヒープ用アドレスとに基づき今回の移動先のヒープ用アドレスを導出して前記移動器４３，４４に提供するヒープポインタ４５とを備えた。【選択図】      図１
2007037044.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納されたデータを圧縮し、その圧縮後データを前記メモリの第１の領域に格納する複数の圧縮器と、
前記圧縮後データを前記メモリの第２の領域に移動するための複数の移動器と、
前記圧縮器及び移動器の動作を制御する制御回路とを備え、
前記制御回路は、
前記圧縮器が前記圧縮後データを格納すべき前記第１の領域における格納先アドレスを前記圧縮器に提供し、
前記格納先アドレス及び前記圧縮後データのデータサイズを管理し、
管理する今回の圧縮後データのデータサイズと、前記移動器に前回提供した移動先アドレスとに基づいて、前記移動器により移動すべき前記今回の圧縮後データの前記第２の領域における移動先アドレスを導出して前記移動器に提供し、
前記移動器は、今回の圧縮後データが格納された格納先アドレスを前記制御回路から取得し、その格納先アドレスに格納された前記今回の圧縮後データを前記制御回路から提供を受けた移動先アドレスに移動することを特徴とするデータ圧縮装置。
【請求項２】
前記制御回路は、前記各移動器に移動先アドレスを順番に提供し、
前記各移動器は、前記制御回路から移動先アドレスの提供を受けたものから前記圧縮後データの移動を行うことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項３】
前記制御回路は、
前記圧縮器が前記圧縮後データを格納すべき前記第１の領域における格納先アドレスを前記圧縮器に提供するとともに前記格納先アドレス及び前記圧縮後データのデータサイズを管理するシーケンサ回路と、
前記シーケンサ回路により管理されている今回の圧縮後データのデータサイズと前記移動器に前回提供した移動先アドレスとに基づいて、前記移動器により移動すべき前記今回の圧縮後データの前記第２の領域における移動先アドレスを導出して前記移動器に提供するヒープポインタ回路とを備えてなり、
前記シーケンサ回路は、前記圧縮器と前記移動器とを並行して動作させることを特徴とする請求項１または２に記載のデータ圧縮装置。
【請求項４】
第１、第２圧縮器と第１、第２移動器とを備え、
前記制御回路は、前記第１圧縮器により前記第１の領域に格納された圧縮後データをその記憶領域に固定して該記憶領域を前記第２の領域として設定し、
前記第２移動器は、前記第２圧縮器により前記第１の領域に格納された圧縮後データを、前記第２の領域として設定された記憶領域内における前記圧縮後データの次のアドレスを移動先アドレスの先頭のアドレスとして移動することを特徴とする請求項１ないし３のいずれかに記載のデータ圧縮装置。
【請求項５】
前記圧縮器により生成された圧縮後データのデータサイズがその圧縮を行う前のデータのデータサイズ以上となったとき、前記移動器は、移動対象を前記圧縮後データに代えて、前記圧縮を行う前のデータとすることを特徴とする請求項１ないし４のいずれかに記載のデータ圧縮装置。
【請求項６】
中央演算処理装置と、
前記中央演算処理装置により生成されたデータを格納するメモリと、
前記データを圧縮する請求項１ないし５のいずれかに記載のデータ圧縮装置とを備えた電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの圧縮処理を行うデータ圧縮装置及び該データ圧縮装置を備えた電子機器に関する。
【背景技術】
【０００２】
従来、各種の電子機器において、メモリ資源の有効利用を図るべく、データの内容を保ったままデータ容量を小さくするデータ圧縮処理が広く行われている。図６は、該データ圧縮処理を実行するデータ圧縮装置を備えた従来の電子機器の電気的な構成を示すブロック図、図７は、前記圧縮器による圧縮処理の手順を説明するための図である。
【０００３】
図６に示す電子機器１００は、ＣＰＵ１０１と、ＣＰＵ１０１により生成された圧縮前データＰ０１〜Ｐ０４を格納するメモリ１０２と、前記圧縮前データＰ０１〜Ｐ０４を圧縮する１のデータ圧縮装置１０３が備えられている。図７に示すように、データ圧縮装置１０３は、メモリ１０２の或る記憶領域に格納された圧縮前データＰ０１に対して圧縮処理を行うとき、まず、圧縮前データＰ０１が格納された前記記憶領域とは異なる記憶領域に前記圧縮前データＰ０１の圧縮後データＣ０１を格納するための領域を予約する（この予約した領域を予約領域という）。
【０００４】
ここで、圧縮後データＣ０１のデータサイズが圧縮前データＰ０１のデータサイズより大きくなる場合があることから、データ圧縮装置１０３は、このことを見越して予約領域を確保する。図７では、予約領域が圧縮後データＣ０１より大きいことを、圧縮後データＣ０１の縦幅より予約領域の縦幅が大きく表すことで示している。そして、データ圧縮装置１０３は、圧縮前データＰ０１を圧縮し圧縮後データＣ０１を生成すると、矢印Ａに示すように、該圧縮後データＣ０１をその予約領域に格納する。
【０００５】
さらに、圧縮後データＣ０１の前記予約領域への格納が完了すると、データ圧縮装置１０３は、圧縮後データＣ０１の格納領域の次のアドレスから始まる所要の記憶領域を圧縮前データＰ０２の圧縮後データＣ０２を格納するための予約領域として確保し、圧縮後データＣ０２を生成すると、矢印Ｂに示すように、該圧縮後データＣ０２をその予約領域に格納する。以下、同様にして、データ圧縮装置１０３は、圧縮前データＰ０３，Ｐ０４の圧縮処理、予約領域の確保、圧縮後データＣ０３，Ｃ０４の予約領域への格納処理を実行する。
【０００６】
ところで、データの圧縮速度を向上させるべく、複数のデータの圧縮処理を同時並行的に行うように構成する場合がある。図８は、このようなデータの圧縮処理を実行する機能を備えた従来の電子機器の電気的な構成を示すブロック図、図９は、これらの圧縮器による圧縮処理の手順を説明するための図である。
【０００７】
図８に示す電子機器１００’は、図６に示すＣＰＵ１０１及びメモリ１０２に加えて、複数の圧縮器１０４，１０５（第１圧縮器１０４、第２圧縮器１０５）からなるデータ圧縮装置１０３’が備えられており、第１圧縮器１０４及び第２圧縮器１０５は、メモリ１０２に格納された複数のデータに対して同時並行的に圧縮可能となっている。そして、図９に示すように、ＣＰＵ１０１は、メモリ１０２の或る記憶領域に圧縮前データＰ０１の圧縮結果（圧縮後データＣ０１）を格納するための予約領域を確保するとともに、その予約領域の次のアドレスから始まる所要の記憶領域を圧縮前データＰ０２の圧縮結果（圧縮後データＣ０２）を格納するための予約領域として確保する。そして、第１圧縮器１０４は圧縮前データＰ０１を、第２圧縮器１０５は圧縮前データＰ０２をそれぞれ同時並行的に圧縮し、圧縮後データＣ０１，Ｃ０２を生成すると、矢印Ｃ，Ｄに示すように、該圧縮後データＣ０１，Ｃ０２を対応する予約領域に格納する。
【０００８】
また、ＣＰＵ１０１は、圧縮後データＣ０２の次のアドレスから始まる所要の記憶領域を圧縮前データＰ０３の圧縮結果（圧縮後データＣ０３）を格納するための予約領域として確保するとともに、その予約領域の次のアドレスから始まる所要の記憶領域を圧縮前データＰ０４の圧縮結果（圧縮後データＣ０４）を格納するための予約領域として確保し、第１圧縮器１０４は圧縮前データＰ０３を、第２圧縮器１０５は圧縮前データＰ０４をそれぞれ同時並行的に圧縮し、圧縮後データＣ０３，Ｃ０４を生成すると矢印Ｅ，Ｆに示すように、圧縮後データＣ０３，Ｃ０４を対応する予約領域に格納する。
【０００９】
一方、メモリの有効利用に関連する技術として、例えば下記特許文献１には、撮像装置に搭載されるメモリの利用効率を向上するべく、メモリから記録媒体への画像の転送を行っているときには、読み出し済みの画像情報の記憶領域を開放し、前記画像の転送が終了すると、その画像のヘッダ及びサムネイルデータの記憶領域も開放する技術が提案されている。
【特許文献１】特開２００１−１１１９５５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
図６，図７に示すように、メモリ１０２内の複数のデータに対して１つずつ圧縮・格納処理等を施すものにおいては、前回の圧縮後データの格納後に、換言すれば格納された圧縮後データの次のアドレスに、今回の圧縮後データを格納するための予約領域を確保することができるため、複数の圧縮後データを、隙間（未使用の記憶領域）無くメモリ１０２内に格納することができる。
【００１１】
しかしながら、図８，図９に示すように、複数のデータの圧縮処理を複数の圧縮器１０４，１０５で同時並行的に行うものにあっては、複数の予約領域の確保を同時並行的に行う必要があるため、結果的に圧縮後データのデータサイズが予約領域より小さくなると、圧縮後データが格納された記憶領域間に未使用の記憶領域、すなわち無駄な記憶領域が発生する。
【００１２】
このように未使用の記憶領域が発生した場合に、ガベージコレクション（不要な記憶領域を解放すること）を行うことが考えられるが、このガベージコレクションを行う場合、前記ＣＰＵ１０１が圧縮後データを隙間無く並べる必要があるため、非常に時間がかかる。
【００１３】
なお、前記引用文献１は、複数のデータに対して同時並行的に圧縮処理を行ってそれらの圧縮後データをメモリに格納する際の未使用の記憶領域に関する問題を解決する技術を提案しているものではない。
【００１４】
本発明は、上記事情に鑑みてなされたもので、データの高い圧縮速度を確保しつつ、メモリ資源を有効利用することのできるデータ圧縮装置及び電子機器を提供することを目的とする。
【課題を解決するための手段】
【００１５】
請求項１に記載の発明は、メモリに格納されたデータを圧縮し、その圧縮後データを前記メモリの第１の領域に格納する複数の圧縮器と、前記圧縮後データを前記メモリの第２の領域に移動するための複数の移動器と、前記圧縮器及び移動器の動作を制御する制御回路とを備え、前記制御回路は、前記圧縮器が前記圧縮後データを格納すべき前記第１の領域における格納先アドレスを前記圧縮器に提供し、前記格納先アドレス及び前記圧縮後データのデータサイズを管理し、管理する今回の圧縮後データのデータサイズと、前記移動器に前回提供した移動先アドレスとに基づいて、前記移動器により移動すべき前記今回の圧縮後データの前記第２の領域における移動先アドレスを導出して前記移動器に提供し、前記移動器は、今回の圧縮後データが格納された格納先アドレスを前記制御回路から取得し、その格納先アドレスに格納された前記今回の圧縮後データを前記制御回路から提供を受けた移動先アドレスに移動することを特徴とするデータ圧縮装置である。
【００１６】
この発明によれば、制御回路により、圧縮器が圧縮後データを格納すべき第１の領域における格納先アドレスが前記圧縮器に提供され、圧縮器により、メモリに格納されたデータが圧縮され、その圧縮後データが制御回路から提供を受けた前記第１の領域における格納先アドレスに格納される。また、制御回路により、圧縮後データが格納された格納先アドレスとその圧縮後データのデータサイズが管理される。
【００１７】
次に、制御回路により、管理する今回の圧縮後データのデータサイズと、前記移動器に前回提供された移動先アドレスとに基づいて、移動器により移動すべき前記今回の圧縮後データの移動先アドレスが導出され、この移動先アドレスが移動器に提供される。そして、移動器により、前記第１の領域に格納された前記今回の圧縮後データが、制御回路から提供を受けた前記移動先アドレスに移動される。これにより、複数の圧縮後データを隙間無くメモリに格納することが可能となる。
【００１８】
請求項２に記載の発明は、請求項１に記載のデータ圧縮装置において、前記制御回路は、前記各移動器に移動先アドレスを順番に提供し、前記各移動器は、前記制御回路から移動先アドレスの提供を受けたものから前記圧縮後データの移動を行うことを特徴とするものである。
【００１９】
この発明によれば、制御回路により、前記各移動器に移動先アドレスが順番に提供され、制御回路から移動先アドレスの提供を受けた移動器から順番に圧縮後データの移動が行われる。これにより、複数の移動器により複数の圧縮後データを隙間無くメモリに格納するための各移動器の移動処理を実現することができる。
【００２０】
請求項３に記載の発明は、請求項１または２に記載のデータ圧縮装置において、前記制御回路は、前記圧縮器が前記圧縮後データを格納すべき前記第１の領域における格納先アドレスを前記圧縮器に提供するとともに前記格納先アドレス及び前記圧縮後データのデータサイズを管理するシーケンサ回路と、前記シーケンサ回路により管理されている今回の圧縮後データのデータサイズと前記移動器に前回提供した移動先アドレスとに基づいて、前記移動器により移動すべき前記今回の圧縮後データの前記第２の領域における移動先アドレスを導出して前記移動器に提供するヒープポインタ回路とを備えてなり、前記シーケンサ回路は、前記圧縮器と前記移動器とを並行して動作させることを特徴とするものである。
【００２１】
この発明によれば、前記シーケンサ回路は、圧縮器と前記移動器とを並行して動作させるようにしたので、移動器による圧縮後データの移動中に、圧縮器による他のデータ（圧縮前のデータ）の圧縮動作を行うことができる。その結果、メモリに格納された複数のデータ（圧縮前のデータ）に対する前記移動処理がすべて完了するまでの時間を短縮することができる。
【００２２】
請求項４に記載の発明は、請求項１ないし３のいずれかに記載のデータ圧縮装置において、第１、第２圧縮器と第１、第２移動器とを備え、前記制御回路は、前記第１圧縮器により前記第１の領域に格納された圧縮後データをその記憶領域に固定して該記憶領域を前記第２の領域として設定し、前記第２移動器は、前記第２圧縮器により前記第１の領域に格納された圧縮後データを、前記第２の領域として設定された記憶領域内における前記圧縮後データの次のアドレスを移動先アドレスの先頭のアドレスとして移動することを特徴とするものである。
【００２３】
この発明によれば、第１圧縮器により第１の領域に格納された圧縮後データをその記憶領域に固定して該記憶領域を第２の領域として設定し、前記第２圧縮器により前記第１の領域に格納された圧縮後データを、前記第２の領域として設定された記憶領域内における圧縮後データの次のアドレスを移動先アドレスの先頭のアドレスとして移動するようにしたので、第１移動器は移動処理を行う必要がなくなる。その結果、データ圧縮装置にかかる負荷を軽減することができる。
【００２４】
請求項５に記載の発明は、請求項１ないし４のいずれかに記載のデータ圧縮装置において、前記圧縮器により生成された圧縮後データのデータサイズがその圧縮を行う前のデータのデータサイズ以上となったとき、前記移動器は、移動対象を前記圧縮後データに代えて、前記圧縮を行う前のデータとすることを特徴とするものである。
【００２５】
この発明によれば、圧縮器により生成された圧縮後データのデータサイズがその圧縮を行う前のデータのデータサイズ以上となったとき、移動器の移動対象を前記圧縮後データに代えて、前記圧縮を行う前のデータとするようにしたので、メモリ資源をより一層有効に利用することができる。
【００２６】
請求項６に記載の発明は、中央演算処理装置と、前記中央演算処理装置により生成されたデータを格納するメモリと、前記データを圧縮する請求項１ないし５のいずれかに記載のデータ圧縮装置とを備えた電子機器である。
【００２７】
この発明によれば、中央演算処理装置と、前記中央演算処理装置により生成されたデータを格納するメモリと、そのメモリに格納されたデータを圧縮するデータ圧縮装置とを備えた電子機器において、前記データ圧縮装置を、請求項１ないし５のいずれかに記載のデータ圧縮装置とすることにより、請求項１ないし５のいずれかに記載の発明による作用効果が得られる。
【発明の効果】
【００２８】
本発明によれば、複数の圧縮手段を備えているため、高い圧縮速度でデータを圧縮することができるとともに、複数の圧縮後データを隙間無くメモリに格納することができるため、メモリ資源の有効利用を図ることができる。また、データの移動処理を前記ＣＰＵで行う場合に比して短時間で行うことができるとともに、データの移動処理をＣＰＵに行わせない分、ＣＰＵにかかる負荷を軽減することができる。
【発明を実施するための最良の形態】
【００２９】
本発明に係るデータ圧縮装置の実施形態について説明する。図１は、本発明に係るデータ圧縮装置を備えた電子機器の電気的な構成の一例を示すブロック図である。
【００３０】
図１に示すように、電子機器１は、例えば、ＦＡＸや複合機等の画像形成装置であり、中央演算処理装置（Central Processing Unit  以下、ＣＰＵという）２と、メモリ３と、データ圧縮装置４とを備えて構成されており、ＣＰＵ２及びデータ圧縮装置４は、それぞれメモリ３との間でそれぞれ図略のバスを介して通信可能となっている。
【００３１】
ＣＰＵ２は、当該電子機器１の動作を制御するための処理プログラムやデータ等を記憶するメモリ３からその制御プログラムやデータを読み出して各種の処理を実行したり、メモリ３に前記処理により生成した各種のデータを書き込んだりするものである。
【００３２】
メモリ３は、図示していないが、例えば、前記処理プログラム等を記憶するＲＯＭ（Read Only Memory）と、ＣＰＵ２の処理により生成されたデータ等を一時的に記憶するＲＡＭ（Random Access Memory）とを備えて構成されている。後述するように、ＲＡＭには、ＣＰＵ２による処理後のデータを記憶する圧縮前データ記憶領域３１と、後述するデータ圧縮装置４により送信された圧縮後のデータ（以下、圧縮後データという）を格納する圧縮後データ記憶領域（以下、ワーク領域という）３２と、後述する第１、第２移動器４３，４４により送信されたデータを格納する移動後データ記憶領域（以下、ヒープ領域という）３３とを有する。
【００３３】
データ圧縮装置４は、第１、第２圧縮器４１，４２と、第１、第２移動器４３，４４と、ヒープポインタ４５と、第１、第２シーケンサ４６，４７とを有し、ＣＰＵ２により圧縮前データ記憶領域３１に格納されたデータを、ワーク領域３２を用いて圧縮し、その圧縮後データをヒープ領域３３に格納するものである。
【００３４】
第１、第２圧縮器４１，４２は、メモリ３及び第１、第２シーケンサ４６，４７との間で通信可能に構成されており、圧縮前データ記憶領域３１に格納されたデータ（以下、圧縮前データという）を読み出し、該圧縮前データを所定の圧縮方式により圧縮するとともに、第１、第２シーケンサ４６，４７から前記圧縮後データの格納先のアドレス（以下、ワーク用アドレスという）を受け取り、該圧縮後データをワーク領域３２の前記ワーク用アドレスに格納するものである。前記圧縮方式は、例えばＪＰＥＧ（Joint Photographic Experts Group）である。ワーク用アドレスは、格納先アドレスに相当するものである。
【００３５】
第１、第２移動器４３，４４は、メモリ３、第１、第２シーケンサ４６，４７及びヒープポインタ４５との間で通信可能に構成されており、メモリ３の圧縮前データ記憶領域３１又はワーク領域３２に格納されたデータを隙間（未使用の記憶領域）が発生しないようにヒープ領域３３に移動するものである。
【００３６】
第１、第２移動器４３，４４は、ヒープポインタ４５から圧縮後データの移動先のアドレス（以下、ヒープ用アドレスという）を受け取り、圧縮後データが圧縮前データよりデータサイズが小さい場合（圧縮処理が成功した場合）には、ワーク領域に格納された圧縮後データを前記ヒープ用アドレスに移動し、圧縮後データが圧縮前データよりデータサイズが大きい又は等しい場合（圧縮処理が失敗した場合）には、圧縮前データ記憶領域に格納された圧縮前データを前記ヒープ用アドレスに移動する。
【００３７】
ヒープポインタ４５は、ヒープ領域に格納されるデータのヒープ用アドレスを管理するものであり、詳細な処理は後述するが、第１、第２移動器４３，４４からヒープ用アドレスの提供を要求されると、その要求とともに受け取った、第１、第２移動器４３，４４で移動すべきデータのデータサイズと、前回格納分のデータのヒープ用アドレスとに基づいて、今回格納分のデータのヒープ用アドレスを導出し、該ヒープ用アドレスを第１、第２移動器４３，４４に提供するものである。ヒープポインタ４５は、ヒープポインタ回路に相当するものである。
【００３８】
ここで、データを隙間無くヒープ領域３３に格納するためには、前回格納分のデータのヒープ用アドレスが決定するまで、前回格納分のデータのヒープ用アドレスを決定することはできない。したがって、ヒープポインタ４５は、ヒープ用アドレスを要求した移動器から順番に該ヒープ用アドレスを提供する。ヒープ用アドレスは、前記移動先アドレスに相当するものである。
【００３９】
第１シーケンサ４６は、第１圧縮器４１及び第１移動器４３の動作を、第２シーケンサ４７は、第２圧縮器４２及び第２移動器４４の動作をそれぞれ制御するものであり、後述するように、第１、第２圧縮器４１，４２にワーク用アドレスを提供したり、この提供したワーク用アドレスや圧縮後データのデータサイズを管理したりする。第１、第２シーケンサ４６，４７は、シーケンサ回路に相当するものである。
【００４０】
図２，図３は、データ圧縮装置４の詳細な処理を示すフローチャートである。なお、図２，図３においては、データ圧縮装置４における異種の機器間での処理の関係を示すため、第１圧縮器４１、第１移動器４３、第１シーケンサ４６及びヒープポインタ４５による処理を図示し、第２圧縮器４２、第２移動器４４及び第２シーケンサ４７による処理は図示を省略している。
【００４１】
図２，図３に示すように、第１シーケンサ４６は、ＣＰＵ２から、圧縮前データ記憶領域３１に格納された圧縮前データの圧縮前データアドレス、そのデータサイズ及びワーク用アドレスとを受信すると（ステップ♯１でＹＥＳ）、第１圧縮器４１に圧縮指示を行うとともに圧縮前データアドレス及びワーク用アドレスの通知を行う（ステップ♯２）。
【００４２】
第１圧縮器４１は、第１シーケンサ４６からデータ圧縮の指示を受けると（ステップ♯１１でＹＥＳ）、メモリ３の圧縮前データ記憶領域３１から前記圧縮前データアドレスに格納された圧縮前データを読み出し（ステップ♯１２）、その圧縮前データに対して圧縮処理を行う（ステップ♯１３）。そして、第１圧縮器４１は、その圧縮後データのデータサイズが圧縮前データのデータサイズ以上となったか否かを判断し（ステップ♯１４）、圧縮後データのデータサイズが圧縮前データのデータサイズ以上の場合には（ステップ♯１４でＹＥＳ）、その旨を第１シーケンサ４６に通知し（ステップ♯１５）、該第１シーケンサ４６から圧縮処理の中止指示があるまで待機する（ステップ♯１６でＮＯ）。
【００４３】
第１シーケンサ４６は、第１圧縮器４１から圧縮後データのデータサイズが圧縮前データのデータサイズ以上となった旨の通知を受けると（ステップ♯３でＹＥＳ）、第１圧縮器４１に圧縮処理の中止指示を行う（ステップ♯４）。
【００４４】
第１圧縮器４１は、該第１シーケンサ４６から圧縮処理の中止指示を受けると（ステップ♯１６でＹＥＳ）、圧縮処理を中止し（ステップ♯１７）、第１シーケンサ４６から通知を受けたワーク用アドレスに圧縮前データを格納するとともに、格納が完了した旨を第１シーケンサ４６に通知する（ステップ♯１８）。
【００４５】
一方、前記圧縮後データのデータサイズが圧縮前データのデータサイズより小さい場合には（ステップ♯１４でＮＯ）、そのデータに対する圧縮処理が完了したか否かを判断し（ステップ♯１９）、圧縮処理が完了していない場合には（ステップ♯１９でＮＯ）、ステップ♯１３に戻る一方、圧縮処理が完了した場合には（ステップ♯１９でＹＥＳ）、第１シーケンサ４６から通知を受けたワーク用アドレスに圧縮後データを格納するとともに、格納が完了した旨と圧縮後データのデータサイズとを第１シーケンサ４６に通知する（ステップ♯２０）。
【００４６】
第１シーケンサ４６は、ステップ♯３又は♯４の処理後、第１圧縮器４１から圧縮前データ又は圧縮後データをメモリ３に格納した旨の通知を受けたか否かを判断し（ステップ♯５）、前記通知を受けていない場合には（ステップ♯５でＮＯ）、ステップ♯３の処理に戻る一方、前記通知を受けた場合には（ステップ♯５でＹＥＳ）、ワーク領域に格納された圧縮前データ又は圧縮後データの移動処理を第１移動器４３に指示するとともに、その圧縮前データ又は圧縮後データのデータサイズを第１移動器４３に通知する（ステップ♯６）。
【００４７】
第１移動器４３は、第１シーケンサ４６からデータ移動の指示及びデータサイズの通知を受けると（ステップ♯３１でＹＥＳ）、ヒープポインタ４５に移動先（ヒープ用アドレス）の通知を要求（以下、リクエストという）するとともに、移動対象のデータのデータサイズをヒープポインタ４５に通知し（ステップ♯３２）、ヒープポインタ４５から移動先の通知を受けるまで待機する（ステップ♯３３でＮＯ）。
【００４８】
ヒープポインタ４５は、第１移動器４３からリクエストを受けると（ステップ♯４１でＹＥＳ）、他の移動器に関連する処理を実行中であるか否かを判断し（ステップ♯４２）、実行中である場合には（ステップ♯４２でＹＥＳ）、引き続きその処理を継続する（ステップ♯４３）一方、実行中でない場合には（ステップ♯４２でＮＯ）、移動先（ヒープ用アドレス）を導出する（ステップ♯４４）。このヒープ用アドレスの導出方法については後述する。
【００４９】
ヒープポインタ４５は、移動先であるヒープ用アドレスを導出すると、そのヒープ用アドレスを第１移動器４３に通知した後（ステップ♯４５）、該ヒープ用アドレスを記憶する（ステップ♯４６）。
【００５０】
第１移動器４３は、ヒープポインタ４５からヒープ用アドレスの通知を受けると（ステップ♯３３でＹＥＳ）、そのヒープ用アドレスに前記圧縮前データ又は圧縮後データを移動する（ステップ♯３４）。
【００５１】
次に、第１圧縮器４１及び第１移動器４３による処理と、第２圧縮器４２及び第２移動器４４による処理との関係につき図４を用いて説明する。
【００５２】
図４（ａ−１）は、メモリ３の圧縮前データ記憶領域３１に圧縮前データＰ０１〜Ｐ０４が格納されている状態を示し、図４（ｘ）は、前記圧縮前データＰ０１〜Ｐ０４の圧縮処理を行う圧縮器を示している。すなわち、図４（ｘ）は、圧縮前データＰ０１については第１圧縮器４１が圧縮し、圧縮前データＰ０２については第２圧縮器４２が圧縮し、圧縮前データＰ０３については第２圧縮器４２が圧縮し、圧縮前データＰ０４については第１圧縮器４１が圧縮したことを示している。
【００５３】
図４（ａ−２）は、ＣＰＵ２が、メモリ３のワーク領域におけるワーク用アドレスＡ０からワーク用アドレスＡ１までを圧縮前データＰ０１の圧縮後のデータＣ０１（圧縮後データＣ０１）を格納するための予約領域として確保し、またワーク用アドレスＢ１からワーク用アドレスＢ２までを圧縮前データＰ０２の圧縮後のデータＣ０２（圧縮後データＣ０２）を格納するための予約領域として確保した状態を示す。
【００５４】
この状態から、第１圧縮器４１は、圧縮前データＰ０１に対して圧縮処理を行い、第２圧縮器４２は、第１圧縮器４１による圧縮処理と同時並行的に、圧縮前データＰ０２に対して圧縮処理を行う。ここで、第１圧縮器４１より第２圧縮器４２の方が先に圧縮処理が完了したものとする。
【００５５】
また、図４（ａ−３）は、第２圧縮器４２による圧縮処理が完了して得られるデータのデータサイズが、圧縮前データＰ０２のデータサイズより大きくなることが圧縮処理の途中に判明したため、該圧縮処理をその判明時点（圧縮した分のデータサイズが予約領域に達した時点）で中断し、途中まで圧縮されたデータＣ０２’が前記予約領域（ワーク用アドレスＢ１からワーク用アドレスＢ２までの記憶領域）に格納された状態を示す。そして、第２移動器４４は、ヒープポインタ４５からヒープ用アドレスＤ０からヒープ用アドレスＤ１までの記憶領域のヒープ用アドレスの提供を受けて、圧縮前データ記憶領域３１に格納された圧縮前データＰ０２を、そのヒープ用アドレスＤ０からヒープ用アドレスＤ１までの記憶領域に移動する。
【００５６】
図４（ａ−６）に示すように、第１圧縮器４１より第２圧縮器４２の方が先に圧縮処理が完了したため、ＣＰＵ２は、第２圧縮器４２の圧縮対象である圧縮前データＰ０３の圧縮後のデータＣ０３（圧縮後データＣ０３）についての予約領域を確保する。ここで、この時点では第１圧縮器４１による圧縮前データＰ０１に対する圧縮処理が完了しておらず、その圧縮処理により生成される圧縮後データＣ０１のデータサイズが不明であるため該圧縮後データＣ０１に連続して前記予約領域を確保することはできない。したがって、ＣＰＵ２は、ワーク用アドレスＢ２の次のワーク用アドレスＢ３からワーク用アドレスＢ４までの記憶領域を前記予約領域として確保する。
【００５７】
一方、第１圧縮器４１は、圧縮前データＰ０１に対する圧縮処理を完了し圧縮後データＣ０１を生成すると、図４（ａ−３）に示すように、該圧縮後データＰ０１を前記予約領域に格納する。なお、図４（ａ−３）は、圧縮後データＣ０１が予約領域よりデータサイズが小さくなり、予約領域より小さいワーク用アドレスＡ０からワーク用アドレスＡ１’（＜ワーク用アドレスＡ１）までの記憶領域に格納された状態を示す。
【００５８】
そして、図４（ａ−５）に示すように、第１移動器４３は、ヒープポインタ４５からヒープ用アドレスＤ１の次のヒープ用アドレスＤ２からヒープ用アドレスＤ３までの記憶領域のヒープ用アドレスの提供を受けて、ワーク用アドレスＡ０からワーク用アドレスＡ１’に格納された圧縮後データＣ０１を、そのヒープ用アドレスＤ２からヒープ用アドレスＤ３までの記憶領域に移動する。
【００５９】
また、ＣＰＵ２は、第１圧縮器４１の圧縮対象である圧縮前データＰ０４の圧縮後のデータＣ０４（圧縮後データＣ０４）についての予約領域として、前記ワーク用アドレスＡ１’の次のワーク用アドレスＡ２からワーク用アドレスＡ３までを確保する。
【００６０】
一方、第２圧縮器４２は、圧縮前データＰ０３に対して圧縮処理を行って圧縮後データＣ０３を生成すると、図４（ａ−７）に示すように、圧縮後データＣ０３を前記予約領域に格納する。なお、図４（ａ−７）は、圧縮後データＣ０３が予約領域よりデータサイズが小さくなり、予約領域より小さいワーク用アドレスＢ３からワーク用アドレスＢ４’（＜ワーク用アドレスＢ４）までの記憶領域に格納された状態を示す。
【００６１】
そして、図４（ａ−８）に示すように、第２移動器４４は、ヒープポインタ４５からヒープ用アドレスＤ３の次のヒープ用アドレスＤ４からヒープ用アドレスＤ５までの記憶領域のヒープ用アドレスの提供を受けて、ワーク用アドレスＢ３からワーク用アドレスＢ４’に格納された圧縮後データＣ０３を、ヒープ用アドレスＤ４を先頭アドレスとして移動していく。
【００６２】
一方、第１圧縮器４１は、圧縮前データＰ０４に対して圧縮処理を行って圧縮後データＣ０４を生成すると、図４（ａ−７）に示すように、圧縮後データＣ０４を前記予約領域に格納する。なお、図４（ａ−７）は、圧縮後データＣ０４が予約領域よりデータサイズが小さくなり、予約領域より小さいワーク用アドレスＡ２からワーク用アドレスＡ３’（＜ワーク用アドレスＡ３）までの記憶領域に格納された状態を示す。
【００６３】
そして、図（ａ−８）に示すように、第１移動器４３は、ヒープポインタ４５からヒープ用アドレスＤ５の次のヒープ用アドレスＤ６からヒープ用アドレスＤ７までの記憶領域のヒープ用アドレスの提供を受けて、ワーク用アドレスＡ２からワーク用アドレスＡ３’に格納された圧縮後データＣ０４を、ヒープ用アドレスＤ６を先頭アドレスとして移動していく。これにより、データＰ０２，Ｃ０１，Ｃ０３，Ｃ０４がこの順に隙間無くヒープ領域３３に格納される。
【００６４】
なお、移動処理が完了した圧縮後データについては、一連の移動処理の完了後に一括してワーク領域３２から削除するようにしてもよいし、各圧縮後データの移動処理ごとにワーク領域３２から削除するようにしてもよい。
【００６５】
図５は、第１、第２圧縮器４１，４２による圧縮処理と第１、第２移動器４３，４４の移動処理との時系列的な関係を示す図である。図５に示すように、まず、第１、第２圧縮器４１，４２は同時並行的に圧縮前データに対する圧縮処理を実行する。そして、第１、第２圧縮器４１，４２による圧縮処理が完了すると、第１、第２移動器４３，４４は同時並行的に前記圧縮後データ又は圧縮失敗の場合には圧縮前データの移動処理を実行する。また、これと並行して、第１、第２圧縮器４１，４２は同時並行的に次に圧縮すべき圧縮前データの圧縮処理を実行する。
【００６６】
そして、前記第１、第２移動器４３，４４の移動処理及び第１、第２圧縮器４１，４２の圧縮処理が完了すると、前記第１、第２移動器４３，４４は、その圧縮処理で生成された圧縮後データ又は圧縮失敗の場合には圧縮前データの移動処理を実行し、また、これと並行して、第１、第２圧縮器４１，４２は同時並行的にさらにその次に圧縮すべき圧縮前データの圧縮処理を実行する。このように、第１、第２圧縮器４１，４２による圧縮処理と第１、第２移動器４３，４４の移動処理とを同時並行的に実行する。
【００６７】
以上のように、データ圧縮装置４内に、第１圧縮器４１及び第２圧縮器４２に対応して第１移動器４３及び第２移動器４４を備え、第１圧縮器４１及び第２圧縮器４２により生成された圧縮後データ又は圧縮前データを、第１移動器４３及び第２移動器４４により、メモリ３のヒープ領域３３内に順番に格納していくようにしたので、従来のように、データの記憶領域間に隙間が発生することなくデータを格納することができる。これにより、メモリ３の限られた記憶領域を有効に利用することができる。
【００６８】
また、前述のような移動処理をハードウェアであるデータ圧縮装置４に行わせるようにしたので、ＣＰＵ２によりソフトウェアで前記移動処理を行う場合に比して、該移動処理を短時間で行うことができるとともに、データの移動処理をＣＰＵ２に行わせない分、ＣＰＵ２にかかる負荷を軽減することができる。
【００６９】
また、第１、第２圧縮器４１，４２による圧縮処理と第１、第２移動器４３，４４による移動処理とを同時並行的に行うようにしたので、各圧縮処理及び各移動処理をシーケンシャルに行う場合に比して、各圧縮処理及び各移動処理が全て完了するまでの時間を短縮化することができる。
【００７０】
また、第１、第２圧縮器４１，４２により生成された圧縮後データのデータサイズがその圧縮前データのデータサイズ以上となったとき、第１、第２移動器４３，４４の移動対象を、前記圧縮後データの代わりに前記圧縮前データとしたので、メモリ３の限られた記憶領域をより一層有効に利用することができる。
【００７１】
なお、前記実施形態では、ワーク領域３２とヒープ領域３３とを異なる記憶領域としたが、この形態に限らず、ワーク領域３２上にヒープ領域３３を設けるようにしてもよい。
【００７２】
すなわち、例えば第１シーケンサ４６は、第１圧縮器４１によりワーク領域３２に格納された圧縮後データ又は圧縮前データをその記憶領域に固定するとともにその記憶領域をヒープ領域３３として設定する。また、第２移動器４４は、第２圧縮器４２によりワーク領域３２に格納された圧縮後データを、前記ヒープ領域３３として設定された記憶領域内の前記圧縮後データの次のアドレスを移動先アドレスの先頭のアドレスとして移動する。
【００７３】
例えば、図４において、圧縮前データＰ０１〜Ｐ０４に対する圧縮処理が完了するまで、図４（ａ−４）、図（ａ−５）に示すような圧縮前データＰ０２及び圧縮後データＣ０１のヒープ領域への移動処理を待機する。そして、図４（ａ−７）に示すように、ワーク用アドレスＡ０からワーク用アドレスＡ３’までの記憶領域に圧縮後データＣ０１,Ｃ０４が格納されると、圧縮後データＣ０１,Ｃ０４をその記憶領域に固定して該記憶領域をヒープ領域として設定し、その後、圧縮前データ記憶領域３１に格納された圧縮前データＰ０２とワーク用アドレスＢ３からワーク用アドレスＢ４’まで記憶領域に格納された圧縮後データＣ０３とを、前記圧縮後データＣ０１,Ｃ０４に連続するように移動するようにしてもよい。この場合、データＣ０１，Ｃ０４，Ｐ０２，Ｃ０３がこの順に隙間無くヒープ領域３３に格納される。
【００７４】
これにより、データを隙間無くメモリ３内に格納することができることに加えて、第１移動器４３は移動処理を行う必要がなくなる。その結果、データ圧縮装置４にかかる負荷を軽減することができる。
【図面の簡単な説明】
【００７５】
【図１】本発明に係るデータ圧縮装置を備えた電子機器の電気的な構成の一例を示すブロック図である。
【図２】データ圧縮装置の詳細な処理を示すフローチャートである。
【図３】同じくデータ圧縮装置の詳細な処理を示すフローチャートである。
【図４】第１圧縮器及び第１移動器による処理と、第２圧縮器及び第２移動器による処理との関係を説明するための図である。
【図５】第１、第２圧縮器による圧縮処理と第１、第２移動器の移動処理との時系列的な関係を示す図である。
【図６】データ圧縮処理を実行する圧縮器を備えた従来の電子機器の電気的な構成を示すブロック図である。
【図７】図６に示す電子機器における圧縮器による圧縮処理の手順を説明するための図である。
【図８】データの圧縮処理を実行する機能を備えた従来の電子機器の電気的な構成を示すブロック図である。
【図９】図８に示す電子機器における圧縮器による圧縮処理の手順を説明するための図である。
【符号の説明】
【００７６】
１    電子機器
２    ＣＰＵ
３    メモリ
３１  圧縮前データ記憶領域
３２  ワーク領域
３３  ヒープ領域
４    データ圧縮装置
４１，４２  第１、第２圧縮器
４３，４４  第１、第２移動器
４５    ヒープポインタ
４６，４７  第１、第２シーケンサ
【図１】
2007037044.tif 000003
【図２】
2007037044.tif 000004
【図３】
2007037044.tif 000005
【図４】
2007037044.tif 000006
【図５】
2007037044.tif 000007
【図６】
2007037044.tif 000008
【図７】
2007037044.tif 000009
【図８】
2007037044.tif 000010
【図９】
2007037044.tif 000011