(57)【要約】【課題】記憶領域に空き領域を生じることなく複数の圧縮部を用いて圧縮されたデータを記憶装置に記憶させることが容易なデータ圧縮装置、このデータ圧縮装置により圧縮されたデータを伸張することができるデータ伸張装置、及び情報処理装置を提供する。【解決手段】被圧縮データストリーム４Ａ，４Ｂから、第１単位データ量Ｌ１ずつ順次データを取得して圧縮する圧縮／伸張器１１Ａ，１１Ｂと、被圧縮データストリーム４Ａ，４Ｂから第１単位データ量Ｌ１のデータが取得された回数を計数するカウンタ１２Ａ，１２Ｂと、第２単位データ量Ｌ２の圧縮データストリーム６の合成を行う都度、カウンタ１２Ａ，１２Ｂの計数値が小さい方に対応する圧縮／伸張器１１Ａ，１１Ｂを選択し、当該選択された圧縮／伸張器により圧縮される圧縮データ５Ａ，５Ｂのうち第２単位データ量Ｌ２のデータを、順次圧縮データストリーム６として記憶部３に記憶させるようにした。【選択図】図１
2008252163.tif 000002
【特許請求の範囲】
【請求項１】
圧縮対象となる複数の非圧縮データストリームのそれぞれに対応して設けられ、各圧縮部に対応する非圧縮データストリームから、予め設定された非圧縮設定データ量ずつ順次データを取得して圧縮することにより、対応する非圧縮データストリームをそれぞれ並行して圧縮する複数の圧縮部と、
前記複数の圧縮部によってそれぞれ圧縮された圧縮データを、予め設定された圧縮設定データ量ずつ合成すると共に、前記圧縮設定データ量分の圧縮データの合成を行う都度、前記複数の圧縮部のうち、各圧縮部に対応する非圧縮データストリームからの取得済みのデータ量が最小の圧縮部を選択し、当該選択された圧縮部により圧縮される圧縮データのうち前記圧縮設定データ量分のデータを、順次前記圧縮データストリームとして出力することによって、前記複数の圧縮部によってそれぞれ圧縮された圧縮データを一つの圧縮データストリームに合成して出力する合成部と
を備えることを特徴とするデータ圧縮装置。
【請求項２】
前記複数の圧縮部には、優先順位が予め設定されており、
前記合成部は、
前記圧縮設定データ量分の前記圧縮データストリームの合成を行う場合において、前記取得済みのデータ量が最小となる圧縮部が複数あるとき、前記優先順位に従って圧縮部を選択すること
を特徴とする請求項１記載のデータ圧縮装置。
【請求項３】
前記複数の圧縮部のそれぞれに対応して設けられ、対応する圧縮部によって前記非圧縮データストリームから前記非圧縮設定データ量のデータが取得された回数を計数する複数の計数部をさらに備え、
前記合成部は、
前記各計数部の計数値を、各計数部に対応する圧縮部の前記取得済みのデータ量として用いること
を特徴とする請求項１又は２記載のデータ圧縮装置。
【請求項４】
圧縮対象となるプログラムコードをオペコードとオペランドとに分離して、それぞれを前記非圧縮データストリームとして前記圧縮部へ出力するプログラムコード分離部をさらに備えること
を特徴とする請求項１〜３のいずれか１項に記載のデータ圧縮装置。
【請求項５】
圧縮されたデータを伸張する複数の伸張部と、
前記伸張部の数と同数の圧縮されたデータ列である圧縮データ列のうち、いずれかの圧縮データ列に含まれる予め設定された圧縮設定データ量ずつの複数のデータブロックが合成された圧縮データストリームであって、前記各データブロックが圧縮される前のデータが、当該各データブロックの含まれる圧縮データ列が圧縮される前のデータ列である非圧縮データストリームにおける先頭に近い位置に位置するデータブロックほど、先頭に近い位置になるように各データブロックが配列されている圧縮データストリームから、前記各データブロックを順次取得し、前記複数の伸張部に分配してそれぞれに伸張させることによって、当該伸張部により前記非圧縮データストリームを生成させる分配部とを備え、
前記分配部は、前記各データブロックを前記複数の伸張部へ分配する都度、前記複数の伸張部のうち、前記非圧縮データストリームとして生成済みのデータ量が最小の伸張部を選択すること
を特徴とするデータ伸張装置。
【請求項６】
前記複数の伸張部には、優先順位が予め設定されており、
前記分配部は、
前記各データブロックの前記複数の伸張部への分配を行う場合において、前記非圧縮データストリームとして生成済みのデータ量が最小となる伸張部が複数あるとき、前記優先順位に従って伸張部を選択すること
を特徴とする請求項５記載のデータ伸張装置。
【請求項７】
前記複数の伸張部は、前記各データブロックのデータを伸張して得られた非圧縮データ列を、予め設定された非圧縮設定データ量ずつ順次出力することによって、前記複数の非圧縮データストリームを生成し、
前記複数の伸張部のそれぞれに対応して設けられ、対応する伸張部から前記非圧縮設定データ量のデータが出力された回数を計数する複数の計数部をさらに備え、
前記分配部は、前記各計数部の計数値を、前記各伸張部による生成済みの非圧縮データストリームのデータ量として用いること
を特徴とする請求項５又は６記載のデータ伸張装置。
【請求項８】
圧縮対象となる被圧縮データのデータストリームである複数の非圧縮データストリームのそれぞれに対応して設けられ、対応する非圧縮データストリームから予め設定された非圧縮設定データ量ずつ順次データを取得して圧縮する複数の圧縮部と、
前記複数の圧縮部のそれぞれに対応して設けられ、対応する圧縮部によって前記非圧縮データストリームから前記非圧縮設定データ量のデータが取得された回数を計数する複数の計数部と、
前記複数の圧縮部によってそれぞれ圧縮された圧縮データを合成して、一つの圧縮データストリームとして出力する合成部と、
前記合成部から出力された圧縮データストリームを被伸張データとして記憶する記憶部と、
圧縮されたデータを伸張し、前記非圧縮設定データ量ずつ順次出力することによって、伸張されたデータのデータストリームである非圧縮データストリームを生成する複数の伸張部と、
前記記憶部に記憶されている被伸張データを、前記複数の伸張部に分配して当該各伸張部に前記非圧縮データストリームを生成させる分配部とを備え、
前記複数の計数部は、
さらに、前記複数の伸張部のそれぞれに対応し、前記複数の伸張部によって前記非圧縮データストリームの生成が行われる場合、対応する伸張部から前記非圧縮設定データ量の被圧縮データが出力される回数を計数し、
前記合成部は、
予め設定された圧縮設定データ量分の前記圧縮データストリームの生成を行う都度、前記複数の圧縮部のうち対応する計数部の計数値が最小の圧縮部を選択し、当該選択した圧縮部により圧縮された圧縮データを前記圧縮設定データ量ずつ順次前記圧縮データストリームとして出力することによって、前記圧縮データストリームを合成し、
前記分配部は、
前記被伸張データの前記複数の伸張部への分配を行う都度、分配先の伸張部として前記複数の伸張部のうち対応する計数部の計数値が最小の伸張部を選択すること
を特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮部を複数備えたデータ圧縮装置、このデータ圧縮装置により圧縮されたデータを伸張するデータ伸張装置、及びこのデータ圧縮装置とデータ伸張装置とを備えた情報処理装置に関する。
【背景技術】
【０００２】
近年、電子機器の取り扱うデータ量が増大し、このような大量のデータを記憶するためのメモリやＨＤＤ等の記憶装置の容量が増加することを低減するために、データ圧縮装置とデータ伸張装置とを備えてデータを圧縮して記憶装置に記憶させ、データを読み出すときにデータを伸張することで記憶装置の記憶容量を低減するようにした電子機器が知られている。このようなデータ圧縮を行うことで、記憶装置の記憶領域において、作業用のワークエリアを確保したり、近い将来利用しないデータの一部を圧縮して記憶領域を確保することも容易となる。
【０００３】
また、電子機器の情報処理速度が高速になると、情報処理速度に追従してデータ圧縮、伸張を行う必要が生じる。そこで、圧縮器や伸張器を複数備えて並行動作させることにより、圧縮伸張処理を高速化する技術が知られている（例えば、特許文献１参照。）。
【特許文献１】特開２００３−１９８８１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、複数の圧縮器を並行動作させてデータの圧縮を行う場合、各圧縮器がそれぞれ独立して圧縮されたデータを出力するので、各圧縮器から出力されるデータそれぞれを記憶するための記憶領域を予め記憶装置に確保する必要がある。図８は、背景技術に係る複数の圧縮器を並行動作させる場合の記憶領域と、圧縮器により圧縮されたデータとの関係を説明するための説明図である。
【０００５】
複数の圧縮器を並行動作させる場合、各圧縮器で圧縮されるデータの圧縮率は、事前に分からない。そのため、各圧縮器がそれぞれ独立して圧縮されたデータを出力すると、各圧縮器により圧縮されるデータをそれぞれ記憶させるための記憶領域を、各圧縮器による圧縮率がそれぞれ最悪であった場合でも記憶領域が不足しないように、予め圧縮率が最悪の場合のワーストサイズに合わせて確保する必要がある。そして、実際にデータ圧縮を行った後に得られた圧縮データは、多くの場合、ワーストサイズより小さくなるから、予め確保されていた記憶領域に空き領域が生じて記憶領域が断片化する。
【０００６】
記憶領域が断片化すると、記憶領域の利用効率が低下したり、記憶領域の管理が複雑となって、記憶領域へのアクセス速度が低下したりする等の弊害が生じるという不都合があった。また、記憶領域が断片化した場合、断片化した記憶領域を整理して連続した記憶領域を確保する処理として、いわゆるガーページコレクションが知られているが、このような処理は、メモリ管理の情報処理量を増大させ、また処理時間も増大するという不都合があった。
【０００７】
本発明は、このような事情に鑑みて為された発明であり、記憶領域に空き領域を生じることなく複数の圧縮部を用いて圧縮されたデータを記憶装置に記憶させることが容易なデータ圧縮装置、このデータ圧縮装置により圧縮されたデータを伸張することができるデータ伸張装置、及びこのデータ圧縮装置とデータ伸張装置とを備えた情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るデータ圧縮装置は、圧縮対象となる複数の非圧縮データストリームのそれぞれに対応して設けられ、各圧縮部に対応する非圧縮データストリームから、予め設定された非圧縮設定データ量ずつ順次データを取得して圧縮することにより、対応する非圧縮データストリームをそれぞれ並行して圧縮する複数の圧縮部と、前記複数の圧縮部によってそれぞれ圧縮された圧縮データを、予め設定された圧縮設定データ量ずつ合成すると共に、前記圧縮設定データ量分の圧縮データの合成を行う都度、前記複数の圧縮部のうち、各圧縮部に対応する非圧縮データストリームからの取得済みのデータ量が最小の圧縮部を選択し、当該選択された圧縮部により圧縮される圧縮データのうち前記圧縮設定データ量分のデータを、順次前記圧縮データストリームとして出力することによって、前記複数の圧縮部によってそれぞれ圧縮された圧縮データを一つの圧縮データストリームに合成して出力する合成部とを備える。
【０００９】
この構成によれば、圧縮対象となる複数の非圧縮データストリームが、複数の圧縮部によって並行して圧縮されるので、データの圧縮処理時間を短縮することができる。また、複数の圧縮部によってそれぞれ圧縮された圧縮データは、合成部によって一つの圧縮データストリームとして出力されるので、合成部から出力された圧縮データストリームを記憶装置に記憶させる際に、圧縮されたデータをひとかたまりにして記憶させることが容易となる結果、記憶領域に空き領域を生じることなく複数の圧縮部によって圧縮されたデータを記憶させることが容易となる。また、複数の圧縮部によって、各圧縮部に対応する非圧縮データストリームから、非圧縮設定データ量ずつ順次データが取得されて圧縮され、合成部によって、圧縮設定データ量分の圧縮データストリームの合成を行う都度、複数の圧縮部のうち、各圧縮部に対応する非圧縮データストリームからの取得済みのデータ量が最小の圧縮部が選択される。そして、合成部によって、当該選択された圧縮部により圧縮される圧縮データのうち圧縮設定データ量分のデータが、順次圧縮データストリームとして出力される。この場合、各圧縮部における圧縮後のデータ量に差異が生じた場合であっても、非圧縮データストリームからの取得済みのデータ量が最小の圧縮部が順次選択されて、当該選択された圧縮部により圧縮される圧縮データが圧縮データストリームに合成される結果、各圧縮部による圧縮処理をバランスよく実行させることができるので、特定の圧縮部が、圧縮済みのデータが合成されるまで待たされ続けるおそれが低減される。
【００１０】
さらに、この場合、合成部から出力される圧縮データストリームは、圧縮部の数と同数の非圧縮データストリームがそれぞれ圧縮されて得られたデータ列である圧縮データ列のうち、いずれかの圧縮データ列に含まれる圧縮設定データ量ずつの複数のデータブロックが合成されて圧縮データストリームとなる。そして、圧縮データストリームにおける各データブロックの配列順序は、各データブロックが含まれる圧縮データ列の圧縮前の非圧縮データストリームにおける先頭に近い位置に位置するデータブロックほど、当該データブロックの位置が先頭に近い位置になるように各データブロックが配列される。
【００１１】
また、前記複数の圧縮部には、優先順位が予め設定されており、前記合成部は、前記圧縮設定データ量分の前記圧縮データストリームの合成を行う場合において、前記取得済みのデータ量が最小となる圧縮部が複数あるとき、前記優先順位に従って圧縮部を選択することが好ましい。
【００１２】
この構成によれば、前記取得済みのデータ量が最小となる圧縮部が複数あるときは、合成部によって優先順位に従って圧縮部が選択されるので、前記取得済みのデータ量が最小となる圧縮部が複数あるときであっても、各圧縮部により圧縮された圧縮データが一定の規則に従って配列される結果、データの伸張を行う際に、圧縮データストリームから各圧縮部により圧縮された圧縮データを取り出すことが容易となる。
【００１３】
また、前記複数の圧縮部のそれぞれに対応して設けられ、対応する圧縮部によって前記非圧縮データストリームから前記非圧縮設定データ量のデータが取得された回数を計数する複数の計数部をさらに備え、前記合成部は、前記各計数部の計数値を、各計数部に対応する圧縮部の前記取得済みのデータ量として用いることが好ましい。
【００１４】
この構成によれば、複数の計数部によって、各圧縮部により非圧縮データストリームから非圧縮設定データ量のデータが取得された回数が計数される。そして、合成部によって、各計数部の計数値が、各計数部に対応する圧縮部の取得済みのデータ量として用いられるので、各計数部を用いて各圧縮部による非圧縮データストリームからの取得済みのデータ量を検出することができる。
【００１５】
また、圧縮対象となるプログラムコードをオペコードとオペランドとに分離して、それぞれを前記非圧縮データストリームとして前記圧縮部へ出力するプログラムコード分離部をさらに備えることが好ましい。
【００１６】
この構成によれば、プログラムコード分離部によって、圧縮対象となるプログラムコードがオペコードとオペランドとに分離され、それぞれが非圧縮データストリームとして圧縮部へ出力されることにより、オペコードとオペランドとが個別に圧縮される。そうすると、同種のデータが集められて各非圧縮データストリームが構成されることとなる結果、各被圧縮データに規則性が生じやすくなって、圧縮率を増大させることが容易となる。
【００１７】
また、本発明に係るデータ伸張装置は、圧縮されたデータを伸張する複数の伸張部と、前記伸張部の数と同数の圧縮されたデータ列である圧縮データ列のうち、いずれかの圧縮データ列に含まれる予め設定された圧縮設定データ量ずつの複数のデータブロックが合成された圧縮データストリームであって、前記各データブロックが圧縮される前のデータが、当該各データブロックの含まれる圧縮データ列が圧縮される前のデータ列である非圧縮データストリームにおける先頭に近い位置に位置するデータブロックほど、先頭に近い位置になるように各データブロックが配列されている圧縮データストリームから、前記各データブロックを順次取得し、前記複数の伸張部に分配してそれぞれに伸張させることによって、当該伸張部により前記非圧縮データストリームを生成させる分配部とを備え、前記分配部は、前記各データブロックを前記複数の伸張部へ分配する都度、前記複数の伸張部のうち、前記非圧縮データストリームとして生成済みのデータ量が最小の伸張部を選択する。
【００１８】
この構成によれば、伸張部の数と同数の圧縮されたデータ列である圧縮データ列のうち、いずれかの圧縮データ列に含まれる予め設定された圧縮設定データ量ずつの複数のデータブロックが合成されたデータストリームである圧縮データストリームであって、前記各データブロックが圧縮される前のデータが、当該各データブロックの含まれる圧縮データ列が圧縮される前のデータ列である非圧縮データストリームにおける先頭に近い位置に位置するデータブロックほど、先頭に近い位置になるように各データブロックが配列されている圧縮データストリームから各データブロックが、分配部によって順次取得され、複数の伸張部に分配されてそれぞれ伸張されて、非圧縮データストリームが生成される。そして、分配部によって、各データブロックが複数の伸張部へ分配される都度、複数の伸張部のうち、非圧縮データストリームとして生成済みのデータ量が最小の伸張部が選択される。非圧縮データストリームとして生成済みのデータ量が最小であることは、当該非圧縮データストリームの次に生成されるべきデータの位置が、他の非圧縮データストリームより先頭に近い位置であることを意味するから、各データブロックが複数の伸張部へ分配される都度、複数の伸張部のうち、非圧縮データストリームとして生成済みのデータ量が最小の伸張部を選択することにより、非圧縮データストリームにおける先頭に近い位置に位置するデータブロックほど、先頭に近い位置になるように各データブロックが配列されている圧縮データストリームから合成前の圧縮データ列を取り出して、それぞれ伸張することにより、非圧縮データストリームを復元することが可能となる。そうすると、このような圧縮データストリームは、上述のデータ圧縮装置によって生成されるから、上述のデータ圧縮装置によって生成された圧縮データストリームを伸張することができる。
【００１９】
また、前記複数の伸張部には、優先順位が予め設定されており、前記分配部は、前記各データブロックの前記複数の伸張部への分配を行う場合において、前記非圧縮データストリームとして生成済みのデータ量が最小となる伸張部が複数あるとき、前記優先順位に従って伸張部を選択することが好ましい。
【００２０】
この構成によれば、非圧縮データストリームとして生成済みのデータ量が最小となる伸張部が複数あるときは、分配部によって優先順位に従って伸張部が選択されるので、非圧縮データストリームとして生成済みのデータ量が最小となる伸張部が複数あるときであっても、一定の規則に従って伸張部を選択することができる。
【００２１】
また、前記複数の伸張部は、前記各データブロックのデータを伸張して得られた非圧縮データ列を、予め設定された非圧縮設定データ量ずつ順次出力することによって、前記複数の非圧縮データストリームを生成し、前記複数の伸張部のそれぞれに対応して設けられ、対応する伸張部から前記非圧縮設定データ量のデータが出力された回数を計数する複数の計数部をさらに備え、前記分配部は、前記各計数部の計数値を、前記各伸張部による生成済みの非圧縮データストリームのデータ量として用いることが好ましい。
【００２２】
この構成によれば、複数の伸張部によって、各データブロックのデータを伸張して得られた非圧縮データ列が、非圧縮設定データ量ずつ順次出力されることによって、複数の非圧縮データストリームが生成される。また、計数部によって、対応する伸張部から非圧縮設定データ量のデータが出力された回数が計数される。そして、各計数部の計数値が、各伸張部による生成済みの非圧縮データストリームのデータ量として用いられるので、各計数部を用いて各伸張部による生成済みの非圧縮データストリームのデータ量を検出することができる。
【００２３】
また、本発明に係る情報処理装置は、圧縮対象となる被圧縮データのデータストリームである複数の非圧縮データストリームのそれぞれに対応して設けられ、対応する非圧縮データストリームから予め設定された非圧縮設定データ量ずつ順次データを取得して圧縮する複数の圧縮部と、前記複数の圧縮部のそれぞれに対応して設けられ、対応する圧縮部によって前記非圧縮データストリームから前記非圧縮設定データ量のデータが取得された回数を計数する複数の計数部と、前記複数の圧縮部によってそれぞれ圧縮された圧縮データを合成して、一つの圧縮データストリームとして出力する合成部と、前記合成部から出力された圧縮データストリームを被伸張データとして記憶する記憶部と、圧縮されたデータを伸張し、前記非圧縮設定データ量ずつ順次出力することによって、伸張されたデータのデータストリームである非圧縮データストリームを生成する複数の伸張部と、前記記憶部に記憶されている被伸張データを、前記複数の伸張部に分配して当該各伸張部に前記非圧縮データストリームを生成させる分配部とを備え、前記複数の計数部は、さらに、前記複数の伸張部のそれぞれに対応し、前記複数の伸張部によって前記非圧縮データストリームの生成が行われる場合、対応する伸張部から前記非圧縮設定データ量の被圧縮データが出力される回数を計数し、前記合成部は、予め設定された圧縮設定データ量分の前記圧縮データストリームの生成を行う都度、前記複数の圧縮部のうち対応する計数部の計数値が最小の圧縮部を選択し、当該選択した圧縮部により圧縮された圧縮データを前記圧縮設定データ量ずつ順次前記圧縮データストリームとして出力することによって、前記圧縮データストリームを合成し、前記分配部は、前記被伸張データの前記複数の伸張部への分配を行う都度、分配先の伸張部として前記複数の伸張部のうち対応する計数部の計数値が最小の伸張部を選択する。
【００２４】
この構成によれば、圧縮部によって、複数の非圧縮データストリームから予め設定された非圧縮設定データ量ずつ順次データが取得されて圧縮される。また、複数の圧縮部によって非圧縮データストリームから非圧縮設定データ量のデータが取得された回数が、複数の計数部によってそれぞれ計数される。そして、合成部によって、圧縮設定データ量分の圧縮データストリームの生成を行う都度、複数の圧縮部のうち対応する計数部の計数値が最小の圧縮部が選択され、当該選択された圧縮部により圧縮された圧縮データが、圧縮設定データ量ずつ順次圧縮データストリームとして出力されることによって、圧縮データストリームが合成される。これによれば、圧縮対象となる複数の非圧縮データストリームが、複数の圧縮部によって並行して圧縮されるので、データの圧縮処理時間を短縮することができる。また、複数の圧縮部によってそれぞれ圧縮された圧縮データは、合成部によって一つの圧縮データストリームとして出力されるので、この圧縮データストリームをひとかたまりにして被伸張データとして記憶部に記憶させることが容易となる結果、記憶部の記憶領域に空き領域を生じることなく複数の圧縮部によって圧縮されたデータを記憶部に記憶させることが容易となる。
【００２５】
そして、分配部によって、記憶部に記憶されている被伸張データの複数の伸張部への分配を行う都度、分配先の伸張部として複数の伸張部のうち対応する計数部の計数値が最小の伸張部が選択され、当該選択された伸張部によって、分配されたデータが伸張されて非圧縮設定データ量ずつ順次出力されることによって、非圧縮データストリームが生成される。また、伸張部によって非圧縮データストリームの生成が行われるとき、当該伸張部に対応する計数部によって、当該伸張部から非圧縮設定データ量の被圧縮データが出力される回数が計数される。この場合、複数の計数部は、複数の圧縮部によって非圧縮データストリームから非圧縮設定データ量のデータが取得された回数の計数と、伸張部から非圧縮設定データ量の被圧縮データが出力される回数の計数とに共用されるので、圧縮用の計数部と伸張用の計数部とを個別に備える必要がなく、回路規模を低減することができる。
【発明の効果】
【００２６】
このような構成のデータ圧縮装置及び情報処理装置は、圧縮対象となる複数の非圧縮データストリームが、複数の圧縮部によって並行して圧縮されるので、データの圧縮処理時間を短縮することができる。また、複数の圧縮部によってそれぞれ圧縮された圧縮データは、合成部によって一つの圧縮データストリームとして出力されるので、合成部から出力された圧縮データストリームを記憶装置に記憶させる際に、圧縮されたデータをひとかたまりにして記憶させることが容易となる結果、記憶領域に空き領域を生じることなく複数の圧縮部によって圧縮されたデータを記憶させることが容易となる。
【００２７】
また、このような構成のデータ伸張装置は、上述のデータ圧縮装置により圧縮されたデータを伸張することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明に係る実施形態を図面に基づいて説明する。なお、各図において同一の符号を付した構成は、同一の構成であることを示し、その説明を省略する。図１は、本発明の一実施形態に係るデータ圧縮装置及びデータ伸張装置の一例である圧縮伸張装置１を用いた情報処理装置２の構成の一例を示すブロック図である。なお、図１は、圧縮伸張装置１によってデータの圧縮が行われる際のデータの流れを矢印で示している。また、図２は、圧縮伸張装置１によってデータの伸張が行われる際のデータの流れを矢印で示している。
【００２９】
図１に示す情報処理装置２は、圧縮伸張装置１と、記憶部３とを備えている。図１に示す圧縮伸張装置１は、圧縮／伸張器１１Ａ，１１Ｂと、カウンタ１２Ａ，１２Ｂ（計数部）と、マージ／分離部１３とを備えている。記憶部３は、半導体メモリやＨＤＤ（Hard Disk Drive）等の記憶装置である。
【００３０】
そして、情報処理装置２は、図略の情報処理回路、例えば画像処理回路やＤＭＡ（Direct Memory Access）回路等から出力された圧縮されていない、非圧縮データＡの非圧縮データストリーム４Ａと、非圧縮データＢの非圧縮データストリーム４Ｂとが、並行してそれぞれ圧縮／伸張器１１Ａと、圧縮／伸張器１１Ｂとへ供給されるようになっている。
【００３１】
圧縮／伸張器１１Ａ，１１Ｂは、並行動作することにより、圧縮対象となる非圧縮データストリーム４Ａと非圧縮データストリーム４Ｂとを並行して圧縮し、それぞれを圧縮データ５Ａ，５Ｂとしてマージ／分離部１３へ出力する。圧縮／伸張器１１Ａ，１１Ｂは、圧縮部の一例に相当している。
【００３２】
マージ／分離部１３は、圧縮／伸張器１１Ａ，１１Ｂによってそれぞれ圧縮された圧縮データ５Ａ，５Ｂを、圧縮データストリーム６に合成して記憶部３へ出力し、圧縮データストリーム６を圧縮データＡ＋Ｂとして記憶部３に記憶させる。マージ／分離部１３は、合成部の一例に相当している。
【００３３】
また、マージ／分離部１３は、図２に示すように、記憶部３に記憶されている圧縮データＡ＋Ｂをデータストリーム７（圧縮データストリーム）として読み出して、圧縮／伸張器１１Ａ，１１Ｂへ圧縮データ８Ａ，８Ｂとして分配する。マージ／分離部１３は、分配部の一例にも相当している。
【００３４】
また、圧縮／伸張器１１Ａ，１１Ｂは、図２に示すように、マージ／分離部１３によって分配された圧縮データ８Ａ，８Ｂを伸張し、それぞれ伸張データストリーム９Ａ，９Ｂ（非圧縮データストリーム）として、図略の情報処理回路へ出力する。圧縮／伸張器１１Ａ，１１Ｂは、伸張部の一例にも相当している。
【００３５】
また、図略の情報処理回路と圧縮／伸張器１１Ａ，１１Ｂとの間は、それぞれ例えば３２ビットのバス幅のバスラインで接続されており、非圧縮データストリーム４Ａ，４Ｂ、及び伸張データストリーム９Ａ，９Ｂのデータ幅が３２ビットにされている。この場合、非圧縮データストリーム４Ａ，４Ｂ、及び伸張データストリーム９Ａ，９Ｂは、圧縮／伸張器１１Ａ，１１Ｂとの間でバス幅に相当する第１単位データ量Ｌ１の３２ビットずつ、入出力が行われ、この第１単位データ量Ｌ１が非圧縮設定データ量の一例に相当している。
【００３６】
また、圧縮／伸張器１１Ａ，１１Ｂとマージ／分離部１３との間は、それぞれ例えば３２ビットのバス幅のバスラインで接続されており、圧縮データ５Ａ，５Ｂや圧縮データ８Ａ，８Ｂは、圧縮／伸張器１１Ａ，１１Ｂとマージ／分離部１３との間でバス幅に相当する第２単位データ量Ｌ２の３２ビットずつ、転送されるようになっている。また、圧縮／伸張器１１Ａ，１１Ｂとマージ／分離部１３との間には、圧縮データ５Ａ，５Ｂを一時的に記憶する図略の記憶バッファが設けられており、圧縮／伸張器１１Ａ，１１Ｂとマージ／分離部１３との間でタイミング調整を行うようになっている。この場合、第２単位データ量Ｌ２が圧縮設定データ量の一例に相当している。なお、第１単位データ量Ｌ１と第２単位データ量Ｌ２とは異なるデータ量に設定されていてもよい。
【００３７】
カウンタ１２Ａは、圧縮／伸張器１１Ａによって非圧縮データストリーム４Ａから第１単位データ量Ｌ１のデータが取得された回数（データの個数）を計数する。カウンタ１２Ｂは、圧縮／伸張器１１Ｂによって非圧縮データストリーム４Ｂから第１単位データ量Ｌ１のデータが取得された回数（データの個数）を計数する。
【００３８】
また、カウンタ１２Ａは、さらに、圧縮／伸張器１１Ａによって伸張データストリーム９Ａの生成が行われる場合、圧縮／伸張器１１Ａから第１単位データ量Ｌ１ずつのデータが出力される回数（データの個数）を計数する。また、カウンタ１２Ｂは、さらに、圧縮／伸張器１１Ｂによって伸張データストリーム９Ｂの生成が行われる場合、圧縮／伸張器１１Ｂから第１単位データ量Ｌ１ずつのデータが出力される回数（データの個数）を計数する。
【００３９】
次に、上述のように構成された圧縮伸張装置１を用いた情報処理装置２の動作について説明する。図３は、圧縮伸張装置１がデータ圧縮を行う場合の動作を説明するための説明図である。図３（ａ）は、非圧縮データストリーム４Ａが圧縮／伸張器１１Ａによって圧縮され、圧縮データ５Ａが生成される動作の一例を示し、図３（ｂ）は、非圧縮データストリーム４Ｂが圧縮／伸張器１１Ｂによって圧縮され、圧縮データ５Ｂが生成される動作の一例を示している。
【００４０】
非圧縮データストリーム４Ａは、それぞれ第１単位データ量Ｌ１のデータＡ１〜Ａ８が連結されて構成されている。非圧縮データストリーム４Ｂは、それぞれ第１単位データ量Ｌ１のデータＢ１〜Ｂ８が連結されて構成されている。
【００４１】
まず、圧縮／伸張器１１Ａによって、非圧縮データストリーム４ＡのデータＡ１が圧縮されてデータａ１が生成されるのと並行して、圧縮／伸張器１１Ｂによって、非圧縮データストリーム４ＢのデータＢ１が圧縮されてデータｂ１が生成される。このとき、圧縮／伸張器１１ＡによってデータＡ１が取得され、圧縮／伸張器１１ＢによってデータＢ１が取得されるから、カウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが共に「１」となる。
【００４２】
データＡ１〜Ａ８やデータＢ１〜Ｂ８が圧縮される際の圧縮率は、当該データやその前後のデータの内容によって異なり、圧縮後のデータａ１〜ａ８、ｂ１〜ｂ８のデータ量は可変長となる。データａ１，ｂ１は第２単位データ量Ｌ２より小さいので、さらに圧縮／伸張器１１Ａ，１１Ｂによって、データＡ２，Ｂ２が取得されてカウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが共に「２」になると共に、圧縮／伸張器１１Ａ，１１ＢによってデータＡ２，Ｂ２が圧縮されてデータａ２，ｂ２となる。そうすると、図３に示すように、データａ１＋ａ２、データｂ１＋ｂ２は、共に第２単位データ量Ｌ２を超えるから、圧縮／伸張器１１Ａから第２単位データ量Ｌ２分のデータが圧縮データ５Ａ（データａ１とデータａ２の一部とを含む）としてマージ／分離部１３へ出力され、圧縮／伸張器１１Ｂから第２単位データ量Ｌ２分のデータが圧縮データ５Ｂ（データｂ１とデータｂ２の一部とを含む）としてマージ／分離部１３へ出力される。
【００４３】
以下、同様にして、データＡ２〜Ａ８、及びＢ２〜Ｂ８についても、圧縮／伸張器１１Ａ，１１Ｂによって、圧縮／伸張器１１Ａ，１１Ｂにそれぞれ対応する非圧縮データストリーム４Ａ，４Ｂから、第１単位データ量Ｌ１ずつ順次データが取得され、当該取得された第１単位データ量Ｌ１のデータの圧縮が終わり、圧縮済みのデータ量が第２単位データ量Ｌ２に達する都度、第２単位データ量Ｌ２分のデータが圧縮データ５Ａ，５Ｂとしてマージ／分離部１３へ出力される。そして、圧縮／伸張器１１Ａ，１１Ｂから、圧縮データ５Ａ，５Ｂがマージ／分離部１３へ出力される都度、新たな第１単位データ量Ｌ１のデータが取得されてカウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが一つずつ加算されて、例えば図３に示す圧縮データ５Ａ，５Ｂが得られる。
【００４４】
図４は、図１に示すマージ／分離部１３の動作の一例を説明するための説明図である。まず、マージ／分離部１３によって、圧縮データ５Ａ（データａ１とデータａ２の一部），５Ｂ（データｂ１とデータｂ２の一部）が受信されると、タイミングＴ１において、マージ／分離部１３によって、カウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが比較される。そうすると、計数値ＣＡ，ＣＢは共に「２」であるから、マージ／分離部１３によって、優先順位が高く設定されている圧縮／伸張器、例えば圧縮／伸張器１１Ａが選択され、圧縮／伸張器１１Ａから出力された圧縮データ５Ａ（データａ１とデータａ２の一部）が圧縮データストリーム６として記憶部３へ出力されて、記憶部３によって圧縮データ５Ａ（データａ１とデータａ２の一部）が記憶される。
【００４５】
次に、タイミングＴ２において、マージ／分離部１３によって、カウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが比較される。そうすると、計数値ＣＡは「３」、計数値ＣＢは「２」であって、計数値が異なっているから、マージ／分離部１３によって、計数値が小さいカウンタ１２Ｂに対応する圧縮／伸張器１１Ｂが選択され、圧縮／伸張器１１Ｂから出力された圧縮データ５Ｂ（データｂ１とデータｂ２の一部）が圧縮データストリーム６として記憶部３へ出力されて、記憶部３によって圧縮データ５Ｂ（データｂ１とデータｂ２の一部）が記憶される。
【００４６】
以下、図４に示すように、タイミングＴ３〜Ｔ１２においても同様に、マージ／分離部１３によって、カウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが比較される。そして、計数値ＣＡ，ＣＢの値が異なっているときは、マージ／分離部１３によって、計数値が小さいカウンタに対応する圧縮／伸張器から出力された圧縮データが選択されて圧縮データストリーム６として記憶部３へ出力されると共に記憶される。また、計数値ＣＡ，ＣＢの値が等しいときは、マージ／分離部１３によって、優先順位が高く設定されている圧縮／伸張器から出力された圧縮データが選択されて圧縮データストリーム６として記憶部３へ出力されると共に記憶される。
【００４７】
このように、マージ／分離部１３によって、計数値が小さいカウンタに対応する圧縮／伸張器から出力された圧縮データが選択されることによって、複数の圧縮／伸張器１１Ａ，１１Ｂのうち、非圧縮データストリーム４Ａ，４Ｂから取得済みのデータ量が最小の圧縮／伸張器が選択される。
【００４８】
ところで、例えば非圧縮データストリーム４Ａと非圧縮データストリーム４Ｂとを交互に選択し、圧縮データストリームに合成した場合には、非圧縮データストリーム４Ａと非圧縮データストリーム４Ｂとの間で圧縮率に差があると、圧縮率が高いデータストリームの圧縮、合成処理の進み方と、圧縮率が低いデータストリームの圧縮、合成処理の進み方との差が大きくなり、圧縮／伸張器１１Ａ，１１Ｂの動作タイミングを調節するために必要となる図略の記憶バッファの記憶容量が増大するという不都合がある。しかしながら、図１に記載のマージ／分離部１３によれば、非圧縮データストリーム４Ａと非圧縮データストリーム４Ｂとの間で圧縮率に差がある場合であっても、圧縮／伸張器１１Ａで圧縮された圧縮データ５Ａと、圧縮／伸張器１１Ｂで圧縮された圧縮データ５Ｂとを、バランスよく配列して圧縮データストリーム６に合成することができるので、圧縮／伸張器１１Ａ，１１Ｂとマージ／分離部１３との間でタイミング調整を行うための記憶バッファの記憶容量を低減することが可能となる。
【００４９】
図５は、図１に示す圧縮伸張装置１の効果を説明するための説明図である。図５に示すように、非圧縮データＡ，Ｂは、圧縮を行う前は、圧縮後のデータサイズが不明である。そのため、図５に示すように、情報処理装置２において予め記憶部３に、圧縮後の非圧縮データＡのワーストデータサイズと圧縮後の非圧縮データＢのワーストデータサイズとを合わせた記憶領域を確保する必要がある。しかし、図１に示す圧縮伸張装置１によれば、非圧縮データＡ，Ｂが圧縮されて、連続する一つの圧縮データストリーム６（圧縮データＡ＋Ｂ）として記憶部３へ出力されるので、記憶部３に、ひとかたまりの圧縮データＡ＋Ｂとして記憶させることができる。
【００５０】
そうすると、図８に示す背景技術のように、記憶領域に空き領域が生じることがなく、記憶部３の圧縮データＡ＋Ｂが記憶されている記憶領域の直後から、新たなデータＣを記憶させることができるので、記憶領域の利用効率の低下が低減される。また、記憶領域が断片化することがないので、記憶領域の管理が複雑となって、記憶領域へのアクセス速度が低下する等の弊害が生じることが低減される。
【００５１】
なお、被圧縮データは、非圧縮データＡ，Ｂの二つに限られない。例えば、カラー画像データをＲ，Ｇ，Ｂの各色成分のプレーンで表した場合、色成分毎に、同一の画素値の画素が連続する等、圧縮率が高くなる条件が整い易くなる。そこで、圧縮／伸張器を三つ設けて、Ｒ，Ｇ，Ｂの各色成分を示す三つの画像データを並行して三つの非圧縮データストリームとして、三つの圧縮／伸張器へそれぞれ供給することにより、全体としての圧縮率を増大させることが容易となる。
【００５２】
また、例えばメモリに記憶されているひとかたまりのプログラムコードを、例えば奇数アドレスと偶数アドレスとのように、複数に分離してそれぞれ被圧縮データとしてもよい。この場合、圧縮しようとする処理対象のデータが一つであっても、複数の被圧縮データに分離して複数の圧縮／伸張器によって並列にデータ圧縮を行うことができるので、ひとかたまりのプログラムコードについても、圧縮速度を向上させることができる。
【００５３】
また、例えばメモリに記憶されているひとかたまりのプログラムコードを、オペコードとオペランドとに分離するプログラムコード分離部を備え、分離されたオペコードとオペランドとそれぞれ被圧縮データとしてもよい。この場合、圧縮しようとするプログラムを、複数の被圧縮データに分離して複数の圧縮／伸張器によって並列にデータ圧縮を行うことができることで、プログラムの圧縮速度を向上させることができると共に、オペコードとオペランドとに分離してそれぞれを被圧縮データとして圧縮を行うことにより、各被圧縮データに規則性が生じやすくなる結果、圧縮率を増大させることが容易となる。
【００５４】
次に、図２に示す情報処理装置２において、記憶部３に記憶されている圧縮データＡ＋Ｂを圧縮伸張装置１によって伸張する場合の動作について説明する。まず、図１に示す情報処理装置２によって、上述のように記憶部３に記憶された圧縮データＡ＋Ｂは、下記のように構成されている。すなわち、圧縮／伸張器の数と同数である二つの圧縮されていない非圧縮データストリーム４Ａ，４Ｂがそれぞれ圧縮されて得られた圧縮データ５Ａ，５Ｂは、当該各圧縮データ列の先頭から順に第２単位データ量Ｌ２ずつのデータブロックにされ、このデータブロックが連結されて、圧縮データＡ＋Ｂとして記憶部３に記憶されている。そうすると、記憶部３からマージ／分離部１３へ圧縮データＡ＋Ｂが読み出されて流れることにより得られるデータストリーム７は、非圧縮データストリーム４Ａ，４Ｂにおける、前記各データブロックの圧縮前におけるデータの位置が非圧縮データストリーム４Ａ，４Ｂの先頭に近いデータブロックほど、データストリーム７の先頭に近い位置になるように各データブロックが配列されることとなる。
【００５５】
図６は、圧縮伸張装置１がデータ伸張を行う場合の動作を説明するための説明図である。まず、タイミングＴ２１において、マージ／分離部１３によって、カウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが比較される。そうすると、まだカウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢは共に「０」であるからマージ／分離部１３によって、優先順位の高い圧縮／伸張器１１Ａが選択されて、圧縮／伸張器１１Ａへ、記憶部３から読み出されてマージ／分離部１３へ流れるデータストリーム７の先頭から第２単位データ量Ｌ２のデータが、圧縮データ８Ａとして出力される。そうすると、圧縮データ８Ａには、データａ１とデータａ２の一部が含まれているから、図７（ａ）に示すように、圧縮／伸張器１１Ａによって、データａ１が伸張されて第１単位データ量Ｌ１のデータＡ１が復元され、伸張データストリーム９Ａとして図略の情報処理回路へ出力される。そうすると、カウンタ１２Ａの計数値ＣＡが加算されて「１」となる。
【００５６】
次に、図６に示すタイミングＴ２２において、マージ／分離部１３によって、カウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが比較される。そうすると、カウンタ１２Ａの計数値ＣＡが「１」、カウンタ１２Ｂの計数値ＣＢが「０」であるから、マージ／分離部１３によって、計数値の小さいカウンタ１２Ｂに対応する圧縮／伸張器１１Ｂが選択されて、圧縮／伸張器１１Ｂへ、データストリーム７における次の第２単位データ量Ｌ２のデータが、圧縮データ８Ｂとして出力される。そうすると、圧縮データ８Ｂには、データｂ１とデータｂ２の一部が含まれているから、図７（ｂ）に示すように、圧縮／伸張器１１Ｂによって、データｂ１が伸張されて第１単位データ量Ｌ１のデータＢ１が復元され、伸張データストリーム９Ｂとして図略の情報処理回路へ出力される。そうすると、カウンタ１２Ｂの計数値ＣＢが加算されて「１」となる。
【００５７】
以下、図６に示すように、タイミングＴ２３〜Ｔ３２においても同様に、マージ／分離部１３によって、カウンタ１２Ａ，１２Ｂの計数値ＣＡ，ＣＢが比較される。そして、計数値ＣＡ，ＣＢの値が異なっているときは、マージ／分離部１３によって、計数値が小さいカウンタに対応する圧縮／伸張器が選択されて、当該選択された圧縮／伸張器へ、データストリーム７における次の第２単位データ量Ｌ２のデータが、圧縮データとして出力される。また、計数値ＣＡ，ＣＢの値が等しいときは、マージ／分離部１３によって、優先順位が高く設定されている圧縮／伸張器が選択されて、当該選択された圧縮／伸張器へ、データストリーム７における次の第２単位データ量Ｌ２のデータが、圧縮データとして出力される。
【００５８】
そして、マージ／分離部１３により選択された圧縮／伸張器によって、第２単位データ量Ｌ２の圧縮データが伸張され、さらに伸張されたデータのうち第１単位データ量Ｌ１分が復元され、伸張データストリームとして図略の情報処理回路へ出力され、当該選択された圧縮／伸張器に対応するカウンタの計数値が一つ加算される。
【００５９】
これにより、記憶部３に記憶されていた圧縮データＡ＋Ｂを分離して伸張し、圧縮前の元のデータＡ１〜Ａ８、及びデータＢ１〜Ｂ８を復元して、伸張データストリーム９Ａ，９Ｂとしてそれぞれ図略の情報処理回路へ出力することができる。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施形態に係るデータ圧縮装置及びデータ伸張装置の一例である圧縮伸張装置を用いた情報処理装置の構成の一例を示すブロック図である。
【図２】図１に示す圧縮伸張装置によってデータの伸張が行われる際のデータの流れを示す説明図である。
【図３】図１に示す圧縮伸張装置の圧縮動作を説明するための説明図である。
【図４】図１に示すマージ／分離部の動作の一例を説明するための説明図である。
【図５】図１に示す圧縮伸張装置の効果を説明するための説明図である。
【図６】図２に示す圧縮伸張装置がデータ伸張を行う場合の動作を説明するための説明図である。
【図７】図２に示す圧縮伸張装置の伸張動作を説明するための説明図である。
【図８】背景技術に係る複数の圧縮器を並行動作させる場合の記憶領域と、圧縮器により圧縮されたデータとの関係を説明するための説明図である。
【符号の説明】
【００６１】
１  圧縮伸張装置
２  情報処理装置
３  記憶部
４Ａ，４Ｂ  非圧縮データストリーム
５Ａ，５Ｂ  圧縮データ
６  圧縮データストリーム
７  データストリーム
８Ａ，８Ｂ  圧縮データ
９Ａ，９Ｂ  伸張データストリーム
１１Ａ，１１Ｂ  圧縮／伸張器
１２Ａ，１２Ｂ  カウンタ
１３  マージ／分離部
Ａ，Ｂ  非圧縮データ
ＣＡ，ＣＢ  計数値
Ｌ１，Ｌ２  単位データ量
【図１】
2008252163.tif 000003
【図２】
2008252163.tif 000004
【図３】
2008252163.tif 000005
【図４】
2008252163.tif 000006
【図５】
2008252163.tif 000007
【図６】
2008252163.tif 000008
【図７】
2008252163.tif 000009
【図８】
2008252163.tif 000010