(57)【特許請求の範囲】
【請求項１】
変換の対象となる元データを格納した第１の記憶手段と、
前記元データを複数のブロックに分割するブロック分割手段と、
前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成する管理テーブル作成手段と、
前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成する加工手段と、
前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを保存する第２の記憶手段と、
並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段であって、前記第２の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行する複数の復元手段と、
前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もる処理時間計算手段と、
前記複数の復元手段によって実行されるべき前記ブロックの展開処理の処理順序を決定する処理順序決定手段であって、前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定する処理順序決定手段とを具備し、
前記管理テーブル作成手段は、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定し、
前記複数の復元手段は、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序に従って、対応するブロックの展開処理を実行する
データ加工・復元システム。
【請求項２】
前記分割されたブロック毎に、対応するブロックのデータを変換するための変換タイプを決定する変換タイプ決定手段であって、前記対応するブロックのデータを圧縮した際の圧縮率が圧縮率閾値よりも高い第１の場合には第１の変換タイプを決定し、前記対応するブロックのデータが前記第１の場合に該当しないならば第２の変換タイプを決定する変換タイプ決定手段を更に具備し、
前記管理テーブル作成手段は、前記管理テーブルを作成する際に、対応するブロックの前記決定された変換タイプを示す情報を、当該管理テーブルのブロック管理情報に設定し、
前記加工手段は、前記ブロック管理情報によって示される変換タイプを参照し、前記第１の変換タイプの場合には、対応するブロックのデータが圧縮されたブロック加工データを作成し、前記第２の変換タイプの場合には、対応するブロックのデータから構成されるブロック加工データを作成する
請求項１記載のデータ加工・復元システム。
【請求項３】
前記変換タイプ決定手段は、前記対応するブロックのデータが予め定められたバイト列から構成される第２の場合には、前記対応するブロックの変換タイプとして第３の変換タイプを決定し、前記対応するブロックのデータが前記第２の場合に該当しないならば、前記対応するブロックの変換タイプを前記第１の変換タイプまたは前記第２の変換タイプのいずれとするかを決定し、
前記加工手段は、前記ブロック管理情報によって示される変換タイプが前記第３の変換タイプの場合には前記対応するブロックのブロック加工データの作成を抑止する
請求項２記載のデータ加工・復元システム。
【請求項４】
前記ブロック毎の管理テーブルに設定されたブロック管理情報は、前記対応するブロックの変換前のサイズに一致する復元データのサイズを示す情報を含み、
前記複数の復元手段は、前記対応するブロックの変換タイプが前記第３の変換タイプの場合、前記対応するブロックの管理テーブルに設定されたブロック管理情報の示す展開データサイズだけ前記予め定められたバイト列を前記メモリ上に復元し、前記対応するブロックの変換タイプが前記第１の変換タイプの場合、前記保存用加工データ中の対応するブロック加工データを伸張することによって前記対応するブロックの元のデータを前記メモリ上に復元し、前記対応するブロックの変換タイプが前記第２の変換タイプの場合、前記保存用加工データ中の対応するブロック加工データを前記対応するブロックの元のデータとしてそのまま前記メモリ上に復元する請求項３記載のデータ加工・復元システム。
【請求項５】
前記プロセッサ所要時間見積りの合計を前記複数のプロセッサの数で除した第１の値Ａと前記各ブロックのデータ転送所要時間見積もりを合計した第２の値Ｂとの比率Ａ／Ｂが、１より大きい第１の閾値よりも大きい場合には、前記圧縮率閾値を引き下げて、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせ、前記比率Ａ／Ｂが、１より小さい第２の閾値よりも小さい場合には、前記圧縮率閾値を引き上げて、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせるためのブロック調整を実行するブロック調整手段を更に具備する請求項４記載のデータ加工・復元システム。
【請求項６】
前記ブロック調整手段は前記ブロック調整を繰り返し、前記ブロック調整を繰り返した結果作成される複数の保存用加工データのそれぞれの前記第１の値Ａと前記第２の値Ｂのうちの最大値を比較して、前記最大値が最小の保存用加工データを正規の保存用加工データとする
請求項５記載のデータ加工・復元システム。
【請求項７】
前記処理順序決定手段は、前記複数のブロックの前記決定されたブロック処理順序に基づいて、前記展開処理が前記複数の復元手段によって前記複数のプロセッサ上で並行して実行されるブロック群から構成される複数のブロックグループを作成し、
前記処理時間計算手段は、前記ブロックグループ毎に、当該ブロックグループに属する全てのブロックのプロセッサ所要時間の最大値と、当該ブロックグループに属する全てのブロックのＤＭＡ所要時間の合計値のうち、大きい方の値を、実行時間の見積もりとして計算し、前記複数のブロックグループのそれぞれの実行時間の見積もりの合計を第３の値Ｃとて決定する一方、前記第１の値Ａと前記第２の値Ｂのうちの大きい方の値を第４の値Ｄとして決定し、
前記ブロック調整手段は、前記第４の値Ｄと前記第３の値Ｃとの差分Ｄ−Ｃまたは前記第４の値Ｄの前記第３の値Ｃに対する比率Ｄ／Ｃが第３の閾値よりも大きい特定状態の場合、ブロックの分割サイズを小さくして、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせる
請求項５記載のデータ加工・復元システム。
【請求項８】
前記ブロック調整手段は、前記特定状態において、前記第１の値Ａが前記第２の値Ｂよりも大きい場合、前記第１の変換タイプのブロックのデータがより小さなブロックサイズで分割され、前記特定状態において、前記第２の値Ｂが前記第１の値Ａよりも大きい場合、前記第３の変換タイプのブロックのデータがより小さなブロックサイズで分割されるように調整する請求項７記載のデータ加工・復元システム。
【請求項９】
前記第１の記憶手段と、前記ブロック分割手段と、前記管理テーブル作成手段と、前記加工手段と、前記処理時間計算手段と、前記処理順序決定手段とを備えた計算機を更に具備する請求項１記載のデータ加工・復元システム。
【請求項１０】
前記第２の記憶手段と、前記複数の復元手段とを備えた電子機器を更に具備する請求項１記載のデータ加工・復元システム。
【請求項１１】
変換の対象となる元データを格納した第１の記憶手段と、ブロック分割手段と、管理テーブル作成手段と、処理時間計算手段と、処理順序決定手段と、加工手段と、保存手段と、第２の記憶手段と、並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段とを備えたシステムにおけるデータ加工・復元方法であって、
前記ブロック分割手段が、前記元データを複数のブロックに分割するステップと、
前記管理テーブル作成手段が、前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成するステップと、
前記処理時間計算手段が、前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もるステップと、
前記処理順序決定手段が、前記複数の復元手段によって前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定するステップと、
前記管理テーブル作成手段が、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定するステップと、
前記加工手段が、前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成するステップと、
前記保存手段が、前記決定されたブロック処理順序が反映された前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを前記第２の記憶手段に保存するステップと、
前記複数の復元手段が、前記第２の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプと、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序とに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行するステップと
を具備するデータ加工・復元方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ加工・復元システム及びデータ加工・復元方法に関する。
【背景技術】
【０００２】
近年、ＡＶ機器等の電子機器の高機能化が進み、当該電子機器における各種の制御に組み込みＯＳが使用されるようになってきている。組み込みＯＳであっても、当該組み込みＯＳの初期化にはある程度の処理時間が必要である。このため、組み込みＯＳを適用する電子機器は、組み込みＯＳを適用しない電子機器に比べて起動時間が余計にかかる。そこで、組み込みＯＳの高速起動が要求されている。
【０００３】
組み込みＯＳを高速起動するために、当該組み込みＯＳを、当該組み込みＯＳのスナップショットイメージから起動する手法が知られている。しかし、スナップショットイメージのサイズは一般に大きいため、当該スナップショットイメージを、例えば電子機器の外部から当該電子機器のメモリに高速にロードすることは難しい。
【０００４】
一方、電子機器のメモリへの高速データロードのために、データを圧縮し、この圧縮されたデータを用いることが知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−０６６１４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、組み込みＯＳのスナップショットイメージ（以下、元データと称する）を圧縮し、この圧縮されたスナップショット（以下、保存用加工データと称する）を例えば電子機器内の不揮発性記憶装置から当該電子機器内のメモリにロードすることが考えられる。しかし、ロードされた保存用加工データを利用可能とする（ここでは、組み込みＯＳを起動する）ためには、当該保存用加工データから元データをメモリ上に復元するための伸張処理（つまり展開処理）が必要となる。もし、電子機器の更なる高機能化に伴い元データ（組み込みＯＳのスナップショットイメージ）のサイズがより大きくなるならば、展開処理に長時間を要する可能性がある。このため、展開処理の一層の高速化が要求される。このような要求は、組み込みＯＳのスナップショットイメージに限らず、元データの保存用加工データから当該元データを電子機器のメモリ上に復元する展開処理に共通に存在する。
【０００７】
本発明が解決しようとする課題は、メモリ上にデータを高速に復元することができる、データ加工・復元システムデータ加工・復元方法を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、データ加工・復元システムは、第１の記憶手段と、ブロック分割手段と、管理テーブル作成手段と、加工手段と、第２の記憶手段と、並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段と、処理時間計算手段と、処理順序決定手段とを具備する。前記第１の記憶手段は、変換の対象となる元データを格納する。前記ブロック分割手段は、前記元データを複数のブロックに分割する。前記管理テーブル作成手段は、前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成する。前記加工手段は、前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成する。前記第２の記憶手段は、前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを保存する。前記複数の復元手段は、前記第２の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行する。前記処理時間計算手段は、前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もる。処理順序決定手段は、前記複数の復元手段によって実行されるべき前記ブロックの展開処理の処理順序を次のように決定する。処理順序決定手段は、前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定する。前記管理テーブル作成手段は、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定する。前記複数の復元手段は、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序に従って、対応するブロックの展開処理を実行する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係るデータ加工・復元システムの全体構成を示すブロック図。
【図２】第１の実施形態で適用される元データ、保存用加工データ及び展開データのデータ構造例を示す図。
【図３】図１に示す計算機内のプロセッサの機能構成を示すブロック図。
【図４】図１に示す電子機器内の各プロセッサの機能構成を示すブロック図。
【図５】第１の実施形態における加工データ作成処理の手順を示すフローチャート。
【図６】第１の実施形態における加工タイプ決定処理の手順を示すフローチャート。
【図７】第１の実施形態におけるブロック毎の加工タイプの決定結果と加工タイプの決定に用いられたブロック毎の状態とを対応付けて示す図。
【図８】第１の実施形態において、元データが複数のブロックに分割されている状態と、保存用加工データ内の管理テーブル及びブロック加工データの位置関係とを示す図。
【図９】第８に示す保存用加工データに含まれている管理テーブル群の例を示す図。
【図１０】第１の実施形態における加工データ展開処理の手順を示すフローチャート。
【図１１】第２の実施形態におけるブロック配置決定処理の手順を示すフローチャート。
【図１２】ブロック配置決定処理後の管理テーブル群の例を示す図。
【図１３】第３の実施形態におけるブロック調整処理の手順を示すフローチャート。
【図１４】第４の実施形態におけるブロック処理順序決定処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、実施の形態につき図面を参照して説明する。  
＜用語の定義＞
まず、実施形態で適用される用語の定義について説明する。
【００１１】
ａ０）元データ
元データとは、後述する加工の対象となるデータである。  
ａ１）展開データ
展開データとは、最終的に電子機器のメモリ上に配置される目的のデータイメージである。展開データは、元データに一致する。
【００１２】
ａ２）ブロック
実施形態では、元データの領域は複数に分割される。それぞれの分割領域をブロックと呼ぶ。
【００１３】
ａ３）加工
加工とは、各ブロックのデータを復元可能な方法で変換することである。この変換には、ブロック毎に異なったタイプの方法を使用することができる。具体的な変換のタイプとして、実施形態では、第１乃至第３の変換タイプが適用される。第１の変換タイプ、第２の変換タイプ及び第３の変換タイプを、それぞれ、「圧縮」、「非圧縮」及び「０データ」と呼ぶ。
【００１４】
ａ３-1）圧縮：既存の圧縮アルゴリズムを用いて圧縮する手法である。  
ａ３-2）非圧縮：変換を行わずに、元のデータをそのまま使用する手法である。  
ａ３-3）０データ：ブロック内のデータが、予め定められたバイト列から構成されるとき、例えば全て０のとき適用され、変換後のデータを作成しない手法である。  
また、変換後のブロックのデータをブロック加工データと呼ぶ。
【００１５】
ａ４）保存用加工データ
保存用加工データとは、上記のブロック加工データを含み、元データ全体のイメージを復元できるような情報を持ったデータである。
【００１６】
ａ５）展開
展開とは、保存用加工データから元データを復元してメモリ上に展開データとして配置する処理、またはブロック加工データからブロックのデータを復元してメモリ上に配置する処理を表す。
【００１７】
展開処理（各ブロックに対する展開処理）は、上記第１乃至第３の変換タイプのそれぞれに対して、次のような処理に分けられる。なお、以下の説明では、変換タイプを加工タイプと称する。
【００１８】
ａ５-1）圧縮データ展開処理：圧縮に使用された圧縮アルゴリズムに対応する伸張処理である。圧縮データ展開処理では、ブロックの圧縮データがＤＭＡ（ダイレクトメモリアクセス）で取得され、取得された圧縮データがプロセッサによって伸張される。但し、圧縮データのストリームの伸張処理は、全てのデータが揃うまで待たなくても、ＤＭＡが完了した一部のデータを利用して実行可能であり、伸張処理の実行と並行して残りのデータを取得するためのＤＭＡを実行すること、つまりＤＭＡと伸張処理とは並列に実行可能であるものとする。
【００１９】
ａ５-2）非圧縮展開処理：保存用加工データに含まれるブロック加工データをそのままブロックに該当するメモリ領域にＤＭＡでロードする処理である。
【００２０】
ａ５-3）０データ展開処理：ブロックに該当するメモリ領域に、プロセッサが０を書く処理である。
【００２１】
ａ６）ブロックグループ
実施形態では、展開処理が実行される電子機器は複数のプロセッサを備えており、当該複数のプロセッサが、それぞれブロックを単位に並行して展開処理を実行することを想定している。つまり複数のプロセッサの各々は、１ブロックずつ展開処理を実行する。この同時に展開処理が行われることになる、プロセッサ数と同数のブロックの集合をブロックグループと呼ぶ。また、１ブロックずつ実行される展開処理を、全ブロックの展開処理と区別するために、ブロック展開処理と呼ぶこともある。上記圧縮データ展開処理、非圧縮展開処理及び０データ展開処理は、ブロック単位に実行されることから、ブロック展開処理である。
【００２２】
［第１の実施形態］
図１は第１の実施形態に係るデータ加工・復元システムの全体構成を示すブロック図である。  
図１に示すデータ加工・復元システムは、データ加工機能を持つ電子機器、例えば計算機１０と、データ復元機能を持つ、例えばＡＶ機器のような電子機器２０とから構成される。計算機１０及び電子機器２０は、例えばネットワーク３０によって接続されているものとする。
【００２３】
計算機１０は、例えば、プロセッサ１１、メモリ１２、ＨＤＤ１３、ＤＭＡコントローラ１４及び通信機構１５を備えている。  
プロセッサ１１は、例えばＨＤＤ１３に格納されている加工データ作成プログラムＰＰに従い、ＨＤＤ１３に格納されているデータ（元データ）を加工するための所定の加工データ作成処理を実行する。これによりプロセッサ１１は、図３を参照して後述する加工データ作成部１００として機能する。つまり計算機１０は、データ加工機能を持つ電子機器である。
【００２４】
メモリ１２は、プロセッサ１１による保存用加工データ作成のためのワークメモリ等に用いられる。ＨＤＤ１３は、加工データ作成プログラムＰＰを格納する、書き換え可能な不揮発性記憶装置である。ＨＤＤ１３には、保存用加工データ作成に用いられる元データも格納される。なお、ＨＤＤ１３に代えて、他の書き換え可能な不揮発性記憶装置、例えばフラッシュメモリを用いることも可能である。  
ＤＭＡコントローラ１４は、例えばＨＤＤ１３からメモリ１２へのデータ転送等を制御する。通信機構１５は、計算機１０と電子機器２０を含む他の電子機器群との間で通信する。
【００２５】
電子機器２０は、例えば、４つのプロセッサ２１-0〜２１-3、メモリ２２、フラッシュメモリ２３、ＤＭＡコントローラ２４及び通信機構２５を備えている。  
プロセッサ２１-0〜２１-3の性能は同等であるものとする。プロセッサ２１-0〜２１-3は、例えばフラッシュメモリ２３に格納されている加工データ展開プログラムＥＰに従い、当該フラッシュメモリ２３に格納されている保存用加工データから展開データを生成することにより当該展開データを元データとしてメモリ２２上に復元するするための所定の加工データ展開処理を実行する。これによりプロセッサ２１-0〜２１-3は、それぞれ、図４を参照して後述する加工データ展開部２００-0〜２００-3として機能する。つまり電子機器２０は、データ復元機能を持つ電子機器である。
【００２６】
メモリ２２は、プロセッサ２１-0〜２１-3による加工データ展開のためのワークメモリ等に用いられる。フラッシュメモリ２３は、加工データ展開プログラムＥＰを格納する、書き換え可能な不揮発性記憶装置である。フラッシュメモリ２３には、計算機１０によって作成された保存用加工データも格納される。なお、フラッシュメモリ２３に代えて、他の書き換え可能な不揮発性記憶装置、例えばＨＤＤを用いることも可能である。  
ＤＭＡコントローラ２４は、例えばフラッシュメモリ２３からメモリ２２へのデータ転送等を制御する。通信機構２５は、電子機器２０と、計算機１０等との間で通信する。
【００２７】
図２は、元データＯＲＧＤ、保存用加工データＳＴＲＰＤ及び展開データＥＸＴＤ及びのデータ構造例を示す。  
元データＯＲＧＤは、電子機器２０のメモリ２２の特定領域に展開されることを目的として用意されたデータである。第１の実施形態では、元データＯＲＧＤは、組み込みＯＳのスナップショットイメージである。しかし、元データＯＲＧＤが、組み込みＯＳのスナップショットイメージである必要はない。
【００２８】
また第１の実施形態では、元データＯＲＧＤは、ＨＤＤ１３に格納して用意されることを想定している。しかし、元データＯＲＧＤが、例えば計算機１０以外の電子機器によって用意されて、例えばネットワーク３０を介して計算機１０のメモリ１２またはＨＤＤ１３に転送されたものであっても構わない。また元データＯＲＧＤが、可搬型の記憶媒体としての、例えばＣＤＲＯＭまたはＵＳＢメモリに用意され、計算機１０に設けられたＣＤＲＯＭドライブまたはＵＳＢコネクタ（図示せず）を介して、計算機１０内のメモリ１２またはＨＤＤ１３に読み込まれるものであっても構わない。
【００２９】
保存用加工データＳＴＲＰＤは、元データＯＲＧＤを加工することによって取得されるデータを含む。第１の実施形態では、元データＯＲＧＤの領域は、複数のブロック、例えばＮ＋１個のブロックＢ０，Ｂ１，…ＢＮに分割される。各ブロックＢｉ（ｉ＝０，１，…Ｎ）のデータは、予め定められた複数の加工タイプ（第１の実施形態では、「圧縮」、「非圧縮」及び「０データ」）から選択された方法で、ブロック加工データＢＰＤｉに加工（変換）される。但し、加工タイプが「０データ」の場合、後述するように、ブロックＢｉに対応するブロック加工データＢＰＤｉは物理的には存在しない。
【００３０】
保存用加工データＳＴＲＰＤは、ブロックＢ０，Ｂ１，…ＢＮにそれぞれ対応して用意される管理テーブルＭＴ０，ＭＴ１，…ＭＴＮを更に含む。管理テーブルＭＴｉは、対応するブロックＢｉを管理するのに用いられ、当該ブロックＢｉを管理するためのブロック管理情報を登録する。保存用加工データＳＴＲＰＤは、管理テーブルＭＴ０，ＭＴ１，…ＭＴＮと、ブロックＢ０，Ｂ１，…ＢＮのうちの幾つかに対応するブロック加工データ（図２の例では、ブロック加工データＢＰＤ０，ＢＰＤ１を含む複数のブロック加工データ）とを連結して１つのデータとしてまとめられたものである。作成された保存用加工データＳＴＲＰＤは、電子機器２０のフラッシュメモリ２３に保存される。
【００３１】
次に、管理テーブルＭＴｉのデータ構造について説明する。  
管理テーブルＭＴｉは、加工タイプ、加工データオフセット、加工データサイズ、展開データオフセット、展開データサイズ、プロセッサ所用時間及びＤＭＡ所用時間等の各情報が設定されるフィールドを有する。上記ブロック管理情報は、これらの各フィールドに設定された情報から構成される。
【００３２】
加工タイプは、対応するブロックＢｉのデータの加工（変換）に、「圧縮」、「非圧縮」または「０データ」のいずれの加工（変換）方法を適用したかを示す。  
加工データオフセットは、対応するブロック加工データＢＰＤｉ（つまり、ブロックＢｉのデータを上記加工タイプの示す方法で変換することによって取得されたブロック加工データＢＰＤｉ）が、保存用加工データＳＴＲＰＤの先頭位置を基準に、当該保存用加工データＳＴＲＰＤのどの位置にあるかを示す。つまり加工データオフセットは、ブロック加工データＢＰＤｉの、保存用加工データＳＴＲＰＤ内の先頭からのオフセット（メモリアドレスオフセット）を示す。なお、加工タイプが「０データ」の場合、ブロック加工データＢＰＤｉは不要であるため、つまりブロック加工データＢＰＤｉは用意されないため、加工データオフセットは無効な値となる。  
加工データサイズは、対応するブロック加工データＢＰＤｉのサイズを示す。加工タイプが「０データ」の場合、加工データサイズは、加工データオフセットと同様に無効な値となる。
【００３３】
展開データオフセットは、対応するブロックＢｉのデータが復元（展開）されるとき、その復元（展開）後のデータが配置されるべき、展開データＥＸＴＤ内の領域の先頭からのオフセットを示す。  
展開データサイズは、対応するブロックＢｉのデータの復元（展開）先のサイズ、つまり復元後のブロックＢｉのデータのサイズを示す。
【００３４】
プロセッサ所要時間は、対応するブロックＢｉのデータの展開にプロセッサが消費すると予測される時間（見込み時間）を示す。  
ＤＭＡ所要時間は、対応するブロックＢｉのデータを展開する際のＤＭＡ処理（ＤＭＡ転送処理）に必要であると予測される時間（見込み時間）を示す。
【００３５】
次に、上述のプロセッサ所要時間及びＤＭＡ所要時間について、加工タイプ毎に以下に詳述する。  
圧縮：
加工タイプが「圧縮」の場合、対応するブロックＢｉのための展開処理には、圧縮データを伸張する伸張処理が用いられる。この伸張処理に際し、フラッシュメモリ２３に保存されている保存用加工データＳＴＲＰＤ内のブロック加工データＢＰＤｉ（つまりブロックＢｉの圧縮データ）が、ＤＭＡコントローラ２４によるＤＭＡ処理で、電子機器２０のメモリ２２内に確保された伸張処理用バッファにロードされる。プロセッサ２１-j（ｊは０〜３のいずれか）は、伸張処理用バッファにロードされたブロック加工データＢＰＤｉ（圧縮データ）を入力として伸張処理を行い、その出力、つまりブロックＢｉの元のデータを、展開データオフセット及び展開データサイズで示される、メモリ２２内の展開先領域に配置する。
【００３６】
したがって、プロセッサ所要時間はブロック加工データＢＰＤｉの伸張処理に必要な処理時間に相当する。一方、ＤＭＡ所要時間は、ブロック加工データＢＰＤｉをフラッシュメモリ２３からメモリ２２内の伸張処理用バッファにロードする時間に相当し、当該ブロック加工データＢＰＤｉ（圧縮データ）のサイズに比例した時間となる。
【００３７】
なお、伸張処理は入力となる圧縮データが全て揃っていない状態で開始可能である。そこで、圧縮データを小さいサイズに分割して、順次ロードするとよい。プロセッサ２１-jは、ＤＭＡ完了の割り込み処理で、準備できたデータの量を把握し、且つ次のＤＭＡをキックする一方で、準備できたデータ分の伸張処理を開始する。この結果、プロセッサ２１-jにより伸張処理とＤＭＡコントローラ２４によるＤＭＡ処理とは、ほぼ並行して実行される。そこで、例えば外乱要因のない場合のプロセッサ２１-j単独の処理時間を、プロセッサ所要時間とＤＭＡ所要時間のうち大きな方の値と概算することができる。
【００３８】
非圧縮：
加工タイプが「非圧縮」の場合、対応するブロックＢｉのための展開処理は、ＤＭＡコントローラ２４によるＤＭＡ処理により実現される。つまり、フラッシュメモリ２３に保存されている保存用加工データＳＴＲＰＤ内のブロック加工データＢＰＤｉ（つまりブロックＢｉの非圧縮データ）が、ＤＭＡコントローラ２４によるＤＭＡ処理で、電子機器２０のメモリ２２内の、展開データオフセット及び展開データサイズで示される展開先領域にロードされる。
【００３９】
したがって、プロセッサ所要時間は不要となる。一方、ＤＭＡ所要時間は、ブロック加工データＢＰＤｉをフラッシュメモリ２３からメモリ２２内の展開先領域にロードする時間に相当し、当該ブロック加工データＢＰＤｉ（非圧縮データ）のサイズに比例した時間となる。
【００４０】
０データ：
加工タイプが「０データ」の場合、対応するブロックＢｉのための展開処理は、メモリ２２の展開先領域に、その展開先領域のサイズ分、つまり展開オフセットサイズ分の“０”を書く処理であり、プロセッサ２１-jによって実行される。
【００４１】
したがって、プロセッサ所要時間は、プロセッサ２１-jがメモリ２２の展開先領域に“０”を書き込むのに必要な処理時間に相当し、展開オフセットサイズ、つまりブロックＢｉのデータのサイズに比例した時間が必要となる。一方、ＤＭＡ所要時間は、不要となる。
【００４２】
図３は、図１に示す計算機１０内のプロセッサ１１の機能構成を示すブロック図である。  
図１に示すプロセッサ１１は、加工データ作成プログラムＰＰを実行することにより、図３に示す加工データ作成部１００として機能する。加工データ作成部１００は、ブロック加工タイプ決定部１１０、圧縮処理部１２０、処理時間計算部１３０、ブロック調整部１４０、ブロック配置決定部１５０、管理テーブル作成・更新部１６０及びブロック分割部１７０から構成される。
【００４３】
図４は、図１に示す電子機器２０内のプロセッサ２１-0〜２１-3の各々の機能構成を示すブロック図である。  
図１に示すプロセッサ２１-0〜２１-3は、それぞれ、加工データ展開プログラムＥＰを実行することにより、図４に示す加工データ展開部２００-0〜２００-3として機能する。加工データ展開部２００-0〜２００-3は、いずれも管理テーブルアクセス部２１０及び伸張処理部２２０から構成される。
【００４４】
次に、第１の実施形態の動作について説明する。  
第１の実施形態では、計算機１０のプロセッサ１１が加工データ作成プログラムＰＰにしたがって元データＯＲＧＤから保存用加工データＳＴＲＰＤを作成するための加工データ作成処理と、電子機器２０のプロセッサ２１-0〜２１-3が協調して、保存用加工データＳＴＲＰＤ中の各ブロック加工データをメモリ１２上に展開して展開データＥＸＴＤを取得する、つまりメモリ１２上に元データＯＲＧＤを復元するための加工データ展開処理とが実行される。
【００４５】
まず、計算機１０のプロセッサ１１によって実行される加工データ作成処理について、図５のフローチャートを参照して説明する。ここでは、プロセッサ１１が加工データ作成プログラムＰＰを実行することによって実現される加工データ作成部１００が、加工データ作成処理を実行するものとする。
【００４６】
加工データ作成部１００のブロック分割部１７０は、加工の対象となる元データＯＲＧＤを複数のブロックに分割する（ステップＳ１）。この最初の分割における、分割サイズ（つまりブロックサイズ）または分割数（つまりブロック数）に特に制約はない。ここでは、元データＯＲＧＤのサイズは６４ＭＢであり、８ＭＢの均等なサイズの８個のブロックＢ０〜Ｂ７に分割されるものとする。この６４ＭＢの元データが、ブロックＢ０〜Ｂ７に分割されている状態を図８（ａ）に示す。つまり図８（ａ）の例は、図２においてＮ＝７として場合に相当する。
【００４７】
加工データ作成部１００の管理テーブル作成・更新部１６０は、メモリ１２内に、元データＯＲＧＤのブロック数と同数の管理テーブル領域を確保する（ステップＳ２）。ここでは、８個の管理テーブル領域が確保される。ステップＳ２において、管理テーブル作成・更新部１６０は、８個の管理テーブル領域を初期化する。これにより８個の管理テーブル領域に管理テーブルＭＴ０〜ＭＴ７が初期設定される。具体的には、各管理テーブルＭＴｉ（ｉ＝０〜７）の展開データオフセットフィールド及び展開データサイズフィールドに、対応するブロックＢ０〜Ｂ７の位置及びサイズにそれぞれ合致する展開データオフセットフィールド及び展開データサイズが初期設定される。
【００４８】
ブロック加工タイプ決定部１１０は、ブロックＢ０〜Ｂ７をそれぞれ解析して、ブロック毎に加工タイプを決定するための加工タイプ決定処理を実行する（ステップＳ３）。
【００４９】
ここで、加工タイプ決定処理の手順について、ブロックＢｉ（ｉ＝０〜７）の加工タイプを決定する場合を例に、図６のフローチャートを参照して説明する。  
ブロック加工タイプ決定部１１０は、ブロックＢｉの領域内の全てのデータが“０”であるかを判定する（ステップＳ１１）。全てのデータが“０”であるブロックＢｉの領域を「０領域」と呼ぶ。
【００５０】
もし、ステップＳ１１の判定がＹｅｓであるならば、ブロック加工タイプ決定部１１０は、ブロックＢｉの加工タイプを「０データ」と決定する（ステップＳ１２）。そのようにする理由は、全て“０”のデータを圧縮したデータを伸張する処理よりも、プロセッサ１１（伸張処理部２２０）によってブロックＢｉの領域を直接“０”で埋める処理の方が高速となるという前提に基づいている。また、全てのデータが“０”のブロックだけを特別に扱う理由は、ＯＳのスナップショットイメージなどでは未使用領域が全て“０”となることも多く、未使用領域の出現頻度の点からも、十分有用であることによる。
【００５１】
一方、ステップＳ１１の判定がＮｏであるならば、ブロック加工タイプ決定部１１０は圧縮処理部１２０を起動する。圧縮処理部１２０は、ブロックＢｉのデータを圧縮する（ステップＳ１３）。このデータの圧縮には、従来から知られている様々な圧縮アルゴリズムのいずれを使用しても構わない。
【００５２】
ブロック加工タイプ決定部１１０は、圧縮処理部１２０によるデータ圧縮の結果に基づき、圧縮率が閾値Ｘ％以下であるかを判定する（ステップＳ１４）。ここでは、Ｘは５０であるものとする。周知のように圧縮率とは、圧縮前のデータに対する圧縮後のデータのサイズの比率である。この比率が小さいほど、圧縮効果は大きくなる。つまり圧縮率の数値が小さいほど、圧縮率は高くなる。ブロックＢｉの圧縮率が閾値Ｘ％以下であり、つまり圧縮効果が大きく、圧縮率が高い場合（ステップＳ１４のＹｅｓ）、ブロック加工タイプ決定部１１０は、ブロックＢｉの加工タイプを「圧縮」と決定する（ステップＳ１５）。
【００５３】
これに対し、ステップＳ１４の判定がＮｏであるならば、ブロック加工タイプ決定部１１０は、ブロックＢｉの加工タイプを「非圧縮」と決定する（ステップＳ１６）。このようにブロック加工タイプ決定部１１０は、ブロックＢｉの圧縮率が閾値Ｘ％よりも大きく、つまり圧縮効果が小さく、圧縮率が低い場合、当該ブロックＢｉの圧縮による加工データのサイズの縮小及び当該サイズの縮小によるロード時間削減のメリットに対して、伸張処理に要する時間の増大のデメリットが大きいと判断する。
【００５４】
ブロックＢｉを圧縮するかしないかの判定に用いられる閾値Ｘの値は、この時点では、任意に設定可能である。なぜなら、Ｘの適切な値はデータイメージの内容に依存するからである。後述するように、Ｘの値が適切でないと判断できる場合に、Ｘの値を変更することにより、加工タイプの変更等を伴う再調整（ブロック調整）を行うことも可能である。
【００５５】
再び図５のフローチャートを参照すると、ブロック加工タイプ決定部１１０は、ブロックＢ０〜Ｂ７の全てについて、上述の手順で加工タイプを決定する（ステップＳ３）。図７は、ブロック毎の加工タイプの決定結果と加工タイプの決定に用いられたブロック毎の状態（０領域の有無と圧縮率）とを対応付けて示す。
【００５６】
管理テーブル作成・更新部１６０は、ブロック加工タイプ決定部１１０によるブロック毎の加工タイプの決定結果に基づいて管理テーブルＭＴ０〜ＭＴ７を更新する（ステップＳ４）。つまり管理テーブル作成・更新部１６０は、管理テーブルＭＴ０〜ＭＴ７の加工タイプフィールドに、決定された加工タイプを示す値を設定する。
【００５７】
また、ステップＳ４において計算機１０の処理時間計算部１３０は、ブロックＢ０〜Ｂ７それぞれの加工データを展開するための展開処理に必要となる、プロセッサ所要時間及びＤＭＡ所要時間を見積る。また、ステップＳ４において管理テーブル作成・更新部１６０は、処理時間計算部１３０によるブロック毎のプロセッサ所要時間及びＤＭＡ所要時間の見積もり結果に基づいて管理テーブルＭＴ０〜ＭＴ７を更新する。つまり管理テーブル作成・更新部１６０は、処理時間計算部１３０によって見積もられたブロックＢ０〜Ｂ７それぞれに対応するプロセッサ所要時間及びＤＭＡ所要時間を、管理テーブルＭＴ０〜ＭＴ７のプロセッサ所要時間フィールド及びＤＭＡ所要時間フィールドに設定する。
【００５８】
処理時間計算部１３０によるプロセッサ所要時間及びＤＭＡ所要時間の見積もりには、例えば、データのサイズ等をパラメータとして使用して概算する方法が適用可能である。また、計算機１０上でも加工データ展開プログラムＥＰが走行可能であるならば、当該加工データ展開プログラムＥＰに従って実際に展開処理を実行してプロセッサ所要時間及びＤＭＡ所要時間の実測値を取得してもよい。第１の実施形態では計算機１０上でも加工データ展開プログラムＥＰが走行可能であり、加工タイプ毎に、以下のようにプロセッサ所要時間及びＤＭＡ所要時間が算出されるものとする。なお第１の実施形態では、両所要時間には、所定時間を基準とする正規化値が用いられるものとする。しかし、正規化値である必要はない。
【００５９】
ｂ１）プロセッサ所要時間
圧縮：伸張処理の実測値
非圧縮：０
０データ：１ＭＢ当たり１０
ｂ２）ＤＭＡ所要時間
圧縮：圧縮データ１ＭＢ当たり２０
非圧縮：非圧縮データ１ＭＢあたり２０
０データ：０
加工データ作成部１００のブロック調整部１４０は、処理時間計算部１３０によって算出されたブロック毎のプロセッサ所要時間及びＤＭＡ所要時間に基づいて、ステップＳ１で設定されたブロックサイズ及びステップＳ３で決定された加工タイプ（ブロック加工タイプ）を、ステップＳ５において調整することができる。しかし第１の実施形態では、ブロック調整部１４０による調整、つまりブロック調整処理（ステップＳ５）は行われないものとする。
【００６０】
第１の実施形態及び後述する第２乃至第４の実施形態では、管理テーブルＭＴｉの配置順に、対応するブロックＢｉの展開処理が行われることを基本としている。加工データ作成部１００のブロック配置決定部１５０は、このブロック毎の展開処理が効率よく進むように、ブロックの処理順を、ステップＳ７において変更することができる。つまりブロック配置決定部１５０は、ブロックの処理順序を決定する処理順序決定手段として動作する。しかし第１の実施形態では、ブロック配置決定部１５０による順番の変更（ステップＳ７）は行われず、ブロックＢ０〜Ｂ７の順に展開処理が行われるものとする。
【００６１】
加工データ作成部１００の圧縮処理部１２０は、管理テーブルＢＴ０〜ＢＴ７にそれぞれ設定された加工タイプに従って、対応するブロックのブロック加工データを作成する（ステップＳ８）。圧縮処理部１２０は、作成されたブロック加工データを、メモリ１２内の管理テーブルＢＴ０〜ＢＴ７に後続する領域に、連続して配置する（ステップＳ９）。第１の実施形態では、ブロックＢ０〜Ｂ７のうちのブロックＢ６及びＢ７の加工タイプが「０データ」である。この場合、ブロックＢ０〜Ｂ５のブロック加工データＢＰＤ０〜ＢＰＤ５は作成されるものの、ブロックＢ６及びＢ７のブロック加工データは作成されない。つまりブロックＢ６及びＢ７のブロック加工データは存在しない。したがって、メモリ１２内の管理テーブルＢＴ０〜ＢＴ７に後続する領域には、ブロックＢ０〜Ｂ５のブロック加工データＢＰＤ０〜ＢＰＤ５だけが連続して配置される。これにより、管理テーブルＢＴ０〜ＢＴ７及びブロック加工データＢＰＤ０〜ＢＰＤ５が連結された保存用加工データＳＴＲＰＤが作成される。
【００６２】
管理テーブル作成・更新部１６０は、管理テーブルＢＴ０〜ＢＴ７を、作成されたブロック加工データＢＰＤ０〜ＢＰＤ７に合致するように更新する（ステップＳ１０）。つまり管理テーブル作成・更新部１６０は、管理テーブルＭＴ０〜ＭＴ７の加工データオフセットフィールド及び加工データサイズフィールドに、作成されたブロック加工データＢＰＤ０〜ＢＰＤ７に合致する加工データオフセット及び加工データサイズを設定する。これにより管理テーブルＢＴ０〜ＢＴ７及びブロック加工データＢＰＤ０〜ＢＰＤ５から構成される保存用加工データＳＴＲＰＤが完成する。完成した保存用加工データＳＴＲＰＤは、メモリ１２からＨＤＤ１３に転送されて、当該ＨＤＤ１３に格納される。ＨＤＤ１３に格納された保存用加工データＳＴＲＰＤは、例えば通信機構１５によって、ネットワーク３０を介して電子機器２０に送信され、当該電子機器２０内の通信機構２５で受信される。受信された保存用加工データＳＴＲＰＤは、例えばＤＭＡコントローラ２４によってフラッシュメモリ２３に転送されて、当該フラッシュメモリ２３に保存される。この場合、ＤＭＡコントローラ２４は保存手段として機能する。なお、完成した保存用加工データＳＴＲＰＤが、通信機構１５によってメモリ１２からネットワーク３０を介して電子機器２０に送信されて、当該電子機器２０のフラッシュメモリ２３に保存されてもよい。また、計算機１０にフラッシュメモリ２３が装着されるスロットが設けられているならば、完成した保存用加工データＳＴＲＰＤを、メモリ１２またはＨＤＤ１３から当該スロットを介してフラッシュメモリ２３に転送して当該フラッシュメモリ２３に保存し、当該保存用加工データＳＴＲＰＤが保存されたフラッシュメモリ２３を、電子機器２０の製造時に、当該電子機器２０に実装してもよい。
【００６３】
管理テーブルＭＴ０〜ＭＴ７の領域全体のサイズを１ＭＢとする。また、ブロック加工データＢＰＤ０，ＢＰＤ１，ＢＰＤ２，ＢＰＤ３，ＢＰＤ４，ＢＰＤ５のサイズを、それぞれ８ＭＢ，８ＭＢ，４ＭＢ，２ＭＢ，３ＭＢ，１ＭＢとする。この場合、保存用加工データＳＴＲＰＤ内の管理テーブル及びブロック加工データの位置関係を図８（ｂ）に示す。図８（ｂ）には、ブロック加工データＢＰＤ０〜ＢＰＤ５それぞれの横に、当該ブロック加工データＢＰＤ０〜ＢＰＤ５の保存用加工データＳＴＲＰＤ先頭からのオフセットが示されている。また図８（ｂ）には、ブロック加工データＢＰＤ０〜ＢＰＤ５が、それぞれ圧縮データであるか非圧縮データであるかも示されている。なお、管理テーブルＭＴ０〜ＭＴ７の領域全体のサイズは、実際には、ブロック加工データＢＰＤ０〜ＢＰＤ５と比較して十分小さい。つまり、管理テーブルＭＴ０〜ＭＴ７の領域全体のサイズは、実際には、１ＭＢよりも小さい。
【００６４】
図９は、図８に示す保存用加工データＳＴＲＰＤに含まれている管理テーブルＭＴ０〜ＭＴ７の例を示す。
【００６５】
次に、電子機器２０のフラッシュメモリ２３に保存されている保存用加工データＳＴＲＰＤ中の各ブロック加工データをメモリ１２上に展開するための加工データ展開処理について、図１０のフローチャートを参照して説明する。
【００６６】
プロセッサ２１-0〜２１-3は、それぞれ加工データ展開プログラムＥＰに従って加工データ展開処理を実行する。前述したように、プロセッサ２１-0〜２１-3が加工データ展開プログラムＥＰを実行することによって、それぞれ加工データ展開部２００-0〜２００-3が実現される。以下の説明では、加工データ展開部２００-0〜２００-3が協調して、加工データ展開処理を実行するものとする。図１０のフローチャートは、加工データ展開部２００-0〜２００-3（プロセッサ２１-0〜２１-3）の各々が実行する加工データ展開処理の手順を示す。ここで、加工データ展開部２００-j（ｊ＝０〜３）には、データの展開先及び保存用加工データＳＴＲＰＤの保存先の先頭アドレスの情報が予め与えられているものとする。
【００６７】
加工データ展開部２００-jの管理テーブルアクセス部２１０（プロセッサ２１-j）は、フラッシュメモリ２３に保存されている保存用加工データＳＴＲＰＤ内の管理テーブル群（ここでは、管理テーブルＢＴ０〜ＢＴ５）を、メモリ２２内に確保される自身の作業領域に、ＤＭＡコントローラ２４を用いてＤＭＡ処理によりロードする（ステップＳ２１）。このメモリ２２にロードされた管理テーブル群は、加工データ展開部２００による以降の処理で使用される。この管理テーブル群全体のサイズは１ＭＢ未満であり、管理テーブル群のロードに要する時間は無視できるほど十分短いものとする。
【００６８】
加工データ展開部２００-jでは、管理テーブル群で示される全てのブロックＢ０〜Ｂ７についての展開処理が、当該加工データ展開部２００-j自身または他の加工データ展開部によって実行されるまで（ステップＳ２２）、ステップＳ２３から始まる以下の手順が繰り返される。ここでは、説明の簡略化のために、各加工データ展開部２００-jは、１つのブロックを処理する毎に、ステップＳ２３の開始時で互いに同期が取られているかのように挙動するものとする。つまり加工データ展開部２００-0〜２００-3は、互いに同期してブロックを処理するものとする。
【００６９】
したがって、全ての加工データ展開部２００-0〜２００-3（プロセッサ２１-0〜２１-3）が同時に処理するブロック（ここでは４個のブロック）の集まりをブロックグループと呼ぶものとすると、当該ブロックグループの数は、（全ブロック数／プロセッサ数）個となる。１つのブロックグループに含まれるブロック（４個のブロック）は、加工データ展開部２００-0〜２００-3（プロセッサ２１-0〜２１-3）に同時に割り当てられて、当該加工データ展開部２００-0〜２００-3により処理される。なお、全ブロック数がプロセッサ数の整数倍でない場合には、（全ブロック数／プロセッサ数）の商の整数部の値に１を加算した数が、ブロックグループの数となる。この場合、１ブロックグループのみ、ブロック数が４未満となる。また、全ブロック数がプロセッサ数以下の場合、ブロックグループの概念は必ずしも必要ない。
【００７０】
加工データ展開部２００-jの管理テーブルアクセス部２１０は、当該加工データ展開部２００-jの伸張処理部２２０がこれから展開すべきブロック（展開ブロック）を決定する（ステップＳ２３）。この展開ブロックの決定のために、例えば管理テーブルＭＴｉ内に、対応するブロックＢｉを処理すべき（割り当てるべき）加工データ展開部２００-j（プロセッサ２１-j）を示す情報が設定されていても構わない。また、加工データ展開部２００-0〜２００-3相互の通信によって、つまりプロセッサ２１-0〜２１-3上で動作するプログラム間の通信によって、未展開のブロックを探して、当該未展開のブロックを次の展開ブロックと決定しても構わない。
【００７１】
また、管理テーブルＭＴ０〜ＭＴ７の配置順に、対応するブロックＢ０〜Ｂ７の展開処理が行われるものとする。この場合、管理テーブルＭＴ０〜ＭＴ７の配置順に、加工データ展開部２００-0〜２００-3の個数に一致する数のブロックから構成されるブロックグループが形成されることになる。
【００７２】
次に、加工データ展開部２００-jにおいて展開されるべきブロックとしてブロックＢｉが決定されたものとする。すると、加工データ展開部２００-jの伸張処理部２２０は、決定されたブロックＢｉに対応する管理テーブルＭＴｉを、管理テーブルアクセス部２１０を介して参照することにより、当該決定されたブロックＢｉの加工タイプ（つまり、対応する加工データの作成に用いられた加工タイプ）を判別する（ステップＳ２４）。ここでは、ブロックＢｉの加工タイプが、「圧縮」、「非圧縮」または「０データ」のいずれであるかが判別される。
【００７３】
伸張処理部２２０は、加工タイプの判別結果に応じて、以下の処理を行う。  
加工タイプが「圧縮」の場合。伸張処理部２２０は、伸張処理の対象となるブロックＢｉのブロック加工データＢＰＤｉを入力データとして取得するためのＤＭＡ処理と当該伸張処理とが並列に行われるように、以下のような手順（ステップＳ２６〜Ｓ２９）を全ての入力データを処理するまで繰り返す（ステップＳ２５）。
【００７４】
まず伸張処理部２２０は、管理テーブルＢＴｉ内の加工データオフセットの示す位置を起点とする加工データサイズ分のデータ（圧縮イメージ）のうちの未処理の一部が、ＤＭＡコントローラ２４によってメモリ２２内に確保された伸張処理用バッファに入力データとしてロードされるように、当該ＤＭＡコントローラ２４によるＤＭＡ処理を起動（いわゆるＤＭＡキック）する（ステップＳ２６）。ここで上記加工データサイズ分のデータは、フラッシュメモリ２３に保存されているブロック保存用データ中のブロック加工データＢＰＤｉである。
【００７５】
次に伸張処理部２２０は、先行するＤＭＡキックにより既に伸張処理用バッファにロードされている入力データがあれば、当該既にロードされている入力データを伸張する伸張処理を行う（ステップＳ２７）。
【００７６】
伸張処理部２２０は、伸張後のデータ、つまりブロックＢｉの元のイメージの一部を、メモリ２２の対応する展開先に配置する（ステップＳ２８）。このように伸張処理部２２０は、伸張処理用バッファに既にロードされている入力データをメモリ２２の対応する展開先に展開する。  
伸張処理部２２０は、ステップＳ２６でキックしたＤＭＡの完了を待つ（ステップＳ２９）。
【００７７】
次に、加工タイプが「非圧縮」の場合、伸張処理部２２０は、管理テーブルＢＴｉ内の加工データオフセットの示す位置を起点とする加工データサイズ分の非圧縮データ（ブロック加工データＢＰＤｉ）を、管理テーブルＢＴｉ内の展開データオフセットの示す位置から始まる展開データサイズ分のメモリ２２の領域に、ＤＭＡコントローラ２４によるＤＭＡ処理で取得する（ステップＳ３０）
次に、加工タイプが「０データ」の場合、伸張処理部２２０は、管理テーブルＢＴｉ内の展開データオフセットの示す位置から始まる展開データサイズ分のメモリ２２の領域に“０”を書き込む（ステップＳ３１）。  
加工データ展開部２００-0〜２００-3は、全てのブロックＢｉ（０〜７）を展開し終えると、展開処理を終了する。
【００７８】
このように、第１の実施形態によれば、元データＯＲＧＤをブロックＢｉを単位に分割して管理し、各ブロックＢｉの加工タイプ（具体的には、「圧縮」、「非圧縮」または「０データ」のいずれであるか）やデータのオフセット、サイズの情報を、管理テーブルＭＴｉで管理することにより、複数のプロセッサ２１-j（によって実現される複数の加工データ展開部２００-j）で展開処理を容易に並列に実施して、元データＯＲＧＤをメモリ２２上に復元する仕組みを実現することができる。しかも、ブロックＢｉ毎の管理テーブルＭＴｉは、必要な情報が少ないため極めて小さなサイズで済み、データ全体の圧縮率には影響を与えない。また、ブロック毎にデータの内容の加工タイプを「圧縮」、「非圧縮」または「０データ」のいずれかに設定することにより、ブロック毎に効率的なデータの展開処理で対処できる。
【００７９】
次に、上述の仕組みにより、図９に示す管理テーブル群で表される保存用加工データＳＴＲＰＤから元データＯＲＧＤを復元（展開）する過程について、具体型を挙げて説明する。ここでは、説明の簡略化のために、上述の仕組みにおいて、次のような３つの条件が適用されるものとする。
【００８０】
条件１：展開処理は、時系列で複数のブロック展開処理に分割して実行される。  
条件２：各ブロック展開処理において複数のプロセッサ２１-j（加工データ展開部２００-j）は、それぞれ未処理の１個のブロックＢｉを展開する。この複数のプロセッサ２１-jによって同時にブロック展開処理が実行されることになる、プロセッサ数と同数のブロックは、前述のようにブロックグループと呼ばれる。  
条件３：全てのブロックＢｉの展開処理が終了するまで、ブロック展開処理が繰り返される。
【００８１】
また、上記各ブロック展開処理においてブロックグループを処理するために必要な所要時間は以下の要領で概算される。
【００８２】
ブロックグループ全体のプロセッサ所要時間には、ブロックグループに含まれるブロックのうち最大のプロセッサ所要時間が採用される。ここでは、各プロセッサ２１-jが独立して動作することを前提としている。
【００８３】
ブロックグループ全体のＤＭＡ所要時間には、ブロックグループに含まれるブロックそれぞれのＤＭＡ所要時間の合計が採用される。その理由は、複数のプロセッサ２１-jは、独立して並列に処理を実行できるのに対し、ＤＭＡを実行するための転送路となるバス帯域等の資源は、各プロセッサ２１-jで共用され、各プロセッサ２１-jからのＤＭＡ要求を同時に実行できないからである。
【００８４】
各プロセッサ２１-jの処理とＤＭＡ処理とは並列に実行可能である。このため、ブロックグループの処理に必要な所要時間を、上述のように算出される、ブロックグループ全体のプロセッサ所要時間とブロックグループ全体のＤＭＡ所要時間のうち大きいほうの値とすることができる。
【００８５】
上述の３つの条件が適用される場合、プロセッサ数が４である第１の実施形態では、まず、最初にブロックＢ０〜Ｂ３が１つのブロックグループ（第１のブロックグループと称する）としてプロセッサ２１-0〜２１-3によって並行して処理される。即ち、ブロックＢ０〜Ｂ３が、それぞれプロセッサ２１-0〜２１-3に同時に割り当てられて、ブロック展開処理される。
【００８６】
ブロックＢ０〜Ｂ３を処理するのに必要なデータをＤＭＡで取得するための所要時間の合計は、図９の管理テーブル群から明らかなように、４４０（１６０＋１６０＋８０＋４０）である。一方、ブロックＢ０〜Ｂ３を処理するのに必要なプロセッサ所要時間の最大値は、ブロックＢ２を処理するのに必要なプロセッサ所要時間であり、２８０である。したがって、プロセッサ２１-0〜２１-3がそれぞれ最初のブロックＢ０〜Ｂ３のブロック展開処理を実行している間は、ＤＭＡが処理のボトルネックになる傾向となり、当該ブロックＢ０〜Ｂ３の処理（第１のブロックグループの処理）が終了するまでの所要時間は４４０となる。
【００８７】
次に、残りのブロックＢ４〜Ｂ７が１つのブロックグループ（第２のブロックグループと称する）としてプロセッサ２１-0〜２１-3によって並行して処理されるものとする。即ち、ブロックＢ４〜Ｂ７が、それぞれプロセッサ２１-0〜２１-3に同時に割り当てられて、ブロック展開処理されるものとする。
【００８８】
ブロックＢ４〜Ｂ７を処理するのに必要なデータをＤＭＡで取得する所要時間（ＤＭＡ所要時間）の合計は、図９の管理テーブル群から明らかなように、８０（６０＋２０＋０＋０）である。一方、ブロックＢ４〜Ｂ７を処理するのに必要なプロセッサ所要時間の最大値は、ブロックＢ５を処理するのに必要なプロセッサ所要時間であり、３００である。したがって、７４０それぞれブロックＢ４〜Ｂ７のブロック展開処理を実行している間は、ブロックＢ５のプロセッサ処理がボトルネックになる傾向となり、当該ブロックＢ４〜Ｂ７の処理（第２のブロックグループの処理）が終了するまで所要時間は３００となる。
【００８９】
このように、第１の実施形態において、上述した順番でブロックＢ０〜Ｂ７の展開処理が実行された場合、最初の４ブロックＢ０〜Ｂ３の処理に時間４４０を要し、次の４ブロックＢ４〜Ｂ７の処理に時間３００を要する。このため、ブロックＢ０〜Ｂ７の展開処理に合計で時間７４０（４４０＋３００）が必要となる。但し、実際には、プロセッサ２１-0〜２１-3がブロックＢ０〜Ｂ３から次のブロックＢ４〜Ｂ７へと処理を移すときに同期を取る必要がないので、上記のような単純な合計とはなるわけではない。
【００９０】
ここで、ブロックの処理の順番を変更した場合について検証する。例として、最初にブロックＢ０，Ｂ２，Ｂ５，Ｂ６をそれぞれ同時にプロセッサ２１-0〜２１-3で処理し、次に残りのブロックＢ１，Ｂ３，Ｂ４，Ｂ７をそれぞれ同時にプロセッサ２１-0〜２１-3で処理するものとする。
【００９１】
ブロックＢ０，Ｂ２，Ｂ５，Ｂ６のＤＭＡ所要時間の合計は、２６０（１６０＋８０＋２０＋０）であり、当該ブロックＢ０，Ｂ２，Ｂ５，Ｂ６のプロセッサ所要時間の最大値はブロックＢ５を処理するのに必要なプロセッサ所要時間であり、３００である。したがって、ブロックＢ０，Ｂ２，Ｂ５，Ｂ６の処理が終了するまでの所要時間は３００と概算できる。
【００９２】
一方、ブロックＢ１，Ｂ３，Ｂ４，Ｂ７のＤＭＡ所要時間の合計は、２６０（１６０＋６０＋４０＋０）であり、当該ブロックＢ１，Ｂ３，Ｂ４，Ｂ７のプロセッサ所要時間の最大値はブロックＢ３を処理するのに必要なプロセッサ所要時間であり、２４０である。したがって、ブロックＢ１，Ｂ３，Ｂ４，Ｂ７のブロックの処理が終了するまでの所要時間時間は２６０と概算できる。
【００９３】
このように、ブロックの処理の順番を変更するならば、全てのブロックＢ０〜Ｂ７の展開処理に必要な時間は５６０（３００＋２６０）となり、処理時間の短縮が実現できる。
【００９４】
［第２の実施形態］
そこで、ブロック処理の順番の変更を実現する第２の実施形態について、図１、図３及び図４のブロック図を援用して説明する。第２の実施形態の特徴は、ＤＭＡ所要時間とプロセッサ所要時間とのバランスを考慮して、保存用加工データＳＴＲＰＤにおけるブロックの配置を決定する、つまりブロック処理の順番を決定する点にある。
【００９５】
第２の実施形態では、図５のフローチャートにおけるブロック加工タイプを調整するブロック調整処理（ステップＳ５）で調整がなされなかった場合（ステップＳ６のＮｏ）、保存用加工データＳＴＲＰＤにおけるブロックの配置を決定するためのブロック配置決定処理が、主としてブロック配置決定部１５０によって行われる（ステップＳ７）。このブロック配置決定処理の手順について、対象となるブロックが図８に示すブロックＢ０〜Ｂ７の８ブロックである場合を例に、図１１のフローチャートを参照して説明する。
【００９６】
管理テーブル作成・更新部１６０は、メモリ２２内に新しい管理テーブル用の空の領域（新規管理テーブル領域）を確保する（ステップＳ４１）。  
するとブロック配置決定部１５０は、全てのブロックＢ０〜Ｂ７について、管理テーブル作成・更新部１６０と協調して後述するステップＳ４３〜Ｓ４５を繰り返し実行する（ステップＳ４２）。
【００９７】
まずブロック配置決定部１５０は、既に作成されている管理テーブルＭＴ０〜ＭＴ７（図９参照）に基づいて、まだ選択されていないブロックのうちプロセッサ所要時間が最大のブロックを１つ選択する（ステップＳ４３）。図９に示す管理テーブルＭＴ０〜ＭＴ７の例では、１回目のステップＳ４３で、ブロックＢ５が選択される。
【００９８】
次にブロック配置決定部１５０は、選択されたブロックＢ５を含む、プロセッサ２１-0〜２１-3の数と同数のブロック（つまり４ブロック）を選択して、ブロックグループを作成する（ステップＳ４４）。前述したように、ブロックグループは、プロセッサ２１-0〜２１-3が並行して展開処理を実行するブロックの集合である。特に第２の実施形態では、ブロックグループは、プロセッサ２１-0〜２１-3が当該ブロックグループ内のブロックを並列に展開処理すればリソースの無駄が少なく効率良く処理が進むことが予測されるブロックの組み合わせである。第２の実施形態では、残りのブロックの選択基準は以下の通りである。
【００９９】
ｃ１）ブロックグループ内の全ブロックのＤＭＡ所要時間の合計が、ステップＳ４３で選択されたブロック（ここではブロックＢ５）のプロセッサ所要時間を超えないような組み合わせ
ｃ２）選択基準ｃ１に合致する組み合わせの候補が複数ある場合は、それらの組み合わせの候補のうち、ステップＳ４３で選択されたブロックを除く残りのブロックを比較して、最もプロセッサ所要時間が大きいブロックが含まれる組み合わせ
ｃ３）選択基準ｃ２に合致する組み合わせの候補が複数ある場合は、それらの組み合わせの候補のうちＤＭＡ所要時間の合計が最大となる組み合わせ
ｃ４）選択基準ｃ１に合致する組み合わせの候補がない場合は、ＤＭＡ所要時間の合計が最小となるブロックの組み合わせ
図９に示す管理テーブルＭＴ０〜ＭＴ７の例では、１回目のステップＳ４４で、ブロックＢ０，Ｂ２，Ｂ３，Ｂ５からなるブロックグループが作成される。このブロックグループは、ＤＭＡ所要時間の合計が３００（＝１６０＋８０＋４０＋２０）であって、１回目のステップＳ４３で選択されたブロックＢ５のプロセッサ所要時間３００を超えず、更にプロセッサ所要時間がブロックＢ５を除いて最大（２８０）のブロックＢ２を含んでいる。なお第２の実施形態における２回目のステップ４４では、残りのブロックの数が４であるため選択の余地がなく、残りの４個のブロックＢ１，Ｂ４，Ｂ６，Ｂ７からなるブロックグループが形成される。
【０１００】
管理テーブル作成・更新部１６０は、ステップ４４でブロック配置決定部１５０によってブロックグループが作成される毎に、当該作成されたブロックグループに含まれているブロック（ここでは４個のブロック）の管理テーブルを、ステップＳ４１で確保された新規管理テーブル領域内の空き部分の先頭位置から順に配置する（ステップ４５）。第２の実施形態では、第１の実施形態と同様に、管理テーブルの配置順に対応するブロックの展開処理が行われる。このため、ブロック配置決定部１５０によって作成されるブロックグループの順に、当該ブロックグループに属するブロック（４ブロック）が並列に別々のプロセッサ（プロセッサ２１-0〜２１-3）で処理されることが期待できる。
【０１０１】
管理テーブル作成・更新部１６０は、全ブロックＢ０〜Ｂ７について対応する管理テーブルＭＴ０〜ＭＴ３を新規管理テーブル領域に配置する処理（ステップ４４）を実行し終えると（ステップＳ４２）、完成した新しい管理テーブル群を正規の管理テーブル群とする（ステップＳ４６）。なお、新規管理テーブル領域に新しい管理テーブル群を配置する代わりに、既に作成されている管理テーブル群（ここでは図９に示す管理テーブルＭＴ０〜ＭＴ７）に、処理順序を示す処理順序フィールドを付加し、当該処理順序フィールドの情報を決定された配置順に更新してもよい。
【０１０２】
以上のブロック配置決定処理の結果、新たな管理テーブルＭＴ０〜ＭＴ７が図１２に示すように新規管理テーブル領域に配置される。このことは、図９に示す管理テーブルＭＴ０〜ＭＴ７の配置が、図１２のように変更されたことと等価である。
【０１０３】
第２の実施形態では、図１２に示す管理テーブルＭＴ０〜ＭＴ７の配置順に従って、まずブロックＢ０，Ｂ２，Ｂ３，Ｂ５が、それぞれ同時にプロセッサ２１-0〜２１-3（加工データ展開部２００-0〜２００-3）で処理され、次にブロックＢ１，Ｂ４，Ｂ６，Ｂ７がそれぞれ同時にプロセッサ２１-0〜２１-3で処理されるものとする。この場合のブロックグループを処理するために必要な所要時間について述べる。
【０１０４】
まず、ブロックＢ０，Ｂ２，Ｂ３，Ｂ５のＤＭＡ所要時間の合計は、３００（１６０＋８０＋４０＋２０）であり、当該ブロックＢ０，Ｂ２，Ｂ３，Ｂ５のプロセッサ所要時間の最大値は、ブロックＢ５を処理するのに必要なプロセッサ所要時間であり、３００である。したがって、ブロックＢ０，Ｂ２，Ｂ３，Ｂ５の処理が終了するまでの所要時間は３００と概算できる。
【０１０５】
一方、ブロックＢ１，Ｂ４，Ｂ６，Ｂ７のＤＭＡ所要時間の合計は、２２０（１６０＋６０＋０＋０）であり、当該ブロックＢ１，Ｂ４，Ｂ６，Ｂ７のプロセッサ所要時間の最大値は、ブロックＢ４を処理するのに必要なプロセッサ所要時間であり、２２０である。したがって、ブロックＢ１，Ｂ４，Ｂ６，Ｂ７の処理が終了するまでの所要時間は２２０と概算できる。
【０１０６】
これにより、第２の実施形態において、全てのブロックＢ０〜Ｂ７の展開処理に必要な時間は５２０（３００＋２２０）となり、管理テーブルＭＴ０〜ＭＴ７の配置（つまりブロックの処理の順番）を変更しない場合の処理時間見込み７４０よりも短縮できる。つまり第２の実施形態によれば、ブロック処理の順番を変更することにより、プロセッサ処理とＤＭＡ処理とのバランスを図り、ブロック展開処理全体の処理速度を向上することができる。
【０１０７】
以上の説明では、電子機器２０において加工データ展開処理を並列に実行可能なプロセッサの数が、計算機１０における加工データ作成処理の実行段階で予め分かっていることを想定している。もし、加工データ展開処理を並列に実行可能なプロセッサの数が、加工データ作成処理の実行段階で分からない場合、計算機１０のプロセッサ１１（加工データ作成部１００）が、次のように管理テーブル群を用意すればよい。
【０１０８】
まず、電子機器２０に搭載され得るプロセッサの数の可能性はせいぜい数通りである。そこで、この想定される数通りのプロセッサ数のそれぞれについて、最適な処理順序を指定するような配置の管理テーブル群を用意するならば、対応する保存用加工データＳＴＲＰＤをプロセッサ数に対して汎用的なデータとすることも可能である。
【０１０９】
管理テーブルのサイズは十分小さく、用意すべき数も少ないので保存用加工データＳＴＲＰＤ全体のサイズに及ぼす影響は少ない。電子機器２０のプロセッサ２１-0〜２１-3は、上述の汎用的な保存用加工データＳＴＲＰＤの展開処理時において、並列に実行可能なプロセッサ数を意識して、保存用加工データＳＴＲＰＤから適切な管理テーブルを取得すればよい。なお、想定される数通りのプロセッサ数のそれぞれについて、管理テーブル群を用意する代わりに、ブロックの処理順序を示す情報を用意してもよい。
【０１１０】
［第３の実施形態］
次に、第３の実施形態について、図１、図３及び図４のブロック図を援用して説明する。
【０１１１】
まず、加工タイプが「圧縮」のブロック及び「非圧縮」のブロックのそれぞれの展開処理に要する時間について比較検討する。加工タイプが「圧縮」のブロックを展開する場合、例えば図９からも明らかなように、プロセッサ所要時間は多いものの、ＤＭＡ所要時間は比較的少ない。これに対し、加工タイプが「非圧縮」のブロックを展開する場合、プロセッサ所要時間はほぼ０であるものの、ＤＭＡ所要時間は多い。
【０１１２】
そこで第３の実施形態の特徴は、全ブロックの展開処理に関し、プロセッサ処理がネック（以下、プロセッサ所要時間ネックと称する）の場合は、加工タイプが「圧縮」のブロックの数を減らして「非圧縮」のブロックの数を増やし、ＤＭＡ処理がネック（以下、ＤＭＡ所要時間ネックと称する）の場合は、「非圧縮の」ブロックの数を減らして「圧縮」のブロックの数を増やすためのブロック調整処理（図５ステップＳ５）によって、ＤＭＡ所要時間とプロセッサ所要時間とのバランスを第２の実施形態よりも更に取る点にある。これにより、プロセッサ所要時間ネック及びＤＭＡ所要時間ネックを解消して、全体の処理を高速化することが期待される。
【０１１３】
次に、第３の実施形態における調整処理の手順について、対象となるブロックが図８に示すブロックＢ０〜Ｂ７の８ブロックである場合を例に説明する。
【０１１４】
前述したように、処理時間計算部１３０は、ブロックＢ０〜Ｂ７それぞれのプロセッサ所要時間及びＤＭＡ所要時間を見積る（図５ステップＳ４）。このステップＳ４において管理テーブル作成・更新部１６０は、処理時間計算部１３０によるブロック毎のプロセッサ所要時間及びＤＭＡ所要時間の見積もり結果に基づいて管理テーブルＭＴ０〜ＭＴ７を更新する。
【０１１５】
ブロック調整部１４０は、ステップＳ４で見積もられた、ブロックＢ０〜Ｂ７それぞれのプロセッサ所要時間及びＤＭＡ所要時間に基づいて、当該ブロックＢ０〜Ｂ７の加工タイプまたはブロックサイズを調整するためのブロック調整処理を実行する（図５ステップＳ５）。このブロック調整処理では、ブロックＢ０〜Ｂ７それぞれのプロセッサ所要時間及びＤＭＡ所要時間に基づいて、調整が必要かが判定される。
【０１１６】
調整が必要かの判定には、圧縮率の閾値Ｘが用いられる。この閾値Ｘ（％）は、例えば０≦Ｘ≦１００の範囲内で適宜変更される。また、プロセッサ所要時間またはＤＭＡ所要時間いずれがネックとなっているかを判定するため２つの閾値、例えば３／２及び２／３も用いられる。また、プロセッサ所要時間またはＤＭＡ所要時間いずれがネックとなっているかの判定に用いられるパラメータＹも用いられる。
【０１１７】
パラメータＹは、Ａ（第１の値）を
Ａ＝全ブロックのプロセッサ所要時間の合計／プロセッサ数
とし、Ｂ（第２の値）を
Ｂ＝全ブロックのＤＭＡ所要時間の合計
とすると、
Ｙ＝Ａ／Ｂ
で表される。
【０１１８】
Ａは全ブロックを処理するのに必要な、１プロセッサ当たりの平均プロセッサ所要時間であることから、パラメータＹ（＝Ａ／Ｂ）は、プロセッサ所要時間ネックの度合いが強いほど大きくなり、ＤＭＡ所要時間ネックの度合いが強いほど小さくなる。
【０１１９】
以下、このブロック調整処理の手順について、図１３のフローチャートを参照して説明する。  
まずブロック調整部１４０は、プロセッサ所要時間ネックであるかを判定するために、パラメータＹ（＝Ａ／Ｂ）が第１の閾値３／２よりも大きいかを判定する（ステップＳ５１）。もし、Ｙ＞３／２であるならば（ステップＳ５１のＹｅｓ）、ブロック調整部１４０はプロセッサ所要時間ネックと判定する。
【０１２０】
するとブロック調整部１４０は、プロセッサ所要時間ネックを解消するために、圧縮率の閾値Ｘ（つまりブロック加工タイプを「圧縮」または「非圧縮」のいずれとするかを決定するのに用いられる閾値Ｘ）を、一定値、例えば１０（％）だけ減らす（ステップＳ５２）。これにより、ブロック加工タイプが「非圧縮」のブロックが増えて、１プロセッサ当たりの平均プロセッサ所要時間を減らすこと、つまりプロセッサ所要時間ネックを解消することが可能となる。なお、第１の閾値は１より大きければよく、３／２に限らない。
【０１２１】
ステップＳ５２が実行されると、図５のフローチャートに示されるブロック調整処理（ステップＳ５）は終了し、ステップＳ６に進む。ステップＳ６では、ブロック調整処理で調整が行われたかが判定され、この例のように調整が行われた場合（ステップＳ６のＹｅｓ）、加工データ作成処理がステップＳ１から再び開始される。このことは、ステップＳ５２から図５のフローチャートのステップＳ１に戻ることと等価である。
【０１２２】
但し、Ｙ＞３／２であっても（ステップＳ５１のＹｅｓ）、圧縮率の閾値Ｘが既に０（％）に達しているならば（ステップＳ５３のＹｅｓ）、ブロック調整部１４０は、これ以上の閾値Ｘの減調整はできないと判断する。この場合、ブロック調整処理（ステップＳ５）は終了し、ステップＳ６に進む。この例のように調整が行われなかった場合（ステップＳ６のＮｏ）、ステップＳ６からステップＳ７に進む。このことは、ステップＳ５３から図５のフローチャートのステップＳ７に進むことと等価である。
【０１２３】
一方、Ｙ＞３／２でないならば（ステップＳ５１のＮｏ）、ブロック調整部１４０はプロセッサ所要時間ネックではないと判定する。この場合、ブロック調整部１４０は、ＤＭＡ所要時間ネックであるかを判定するために、パラメータＹ（＝Ａ／Ｂ）が第２の閾値２／３よりも小さいかを判定する（ステップＳ５４）。もし、Ｙ＜２／３であるならば（ステップＳ５４のＹｅｓ）、ブロック調整部１４０はＤＭＡ所要時間ネックと判定する。
【０１２４】
するとブロック調整部１４０は、ＤＭＡ所要時間ネックを解消するために、圧縮率の閾値Ｘを、一定値、例えば１０（％）だけ増やす（ステップＳ５５）。これにより、ブロック加工タイプが「圧縮」のブロックが増えて、ＤＭＡ所要時間の合計を減らすこと、つまりＤＭＡ所要時間ネックを解消することが可能となる。なお、第２の閾値は１より小さければよく、３／２に限らない。
【０１２５】
ステップＳ５５が実行されると、図５のフローチャートに示されるブロック調整処理（ステップＳ５）は終了し、ステップＳ６に進む。ステップＳ６では、ブロック調整処理で調整が行われたかが判定され、この例のように調整が行われた場合（ステップＳ６のＹｅｓ）、加工データ作成処理がステップＳ１から再び開始される。このことは、ステップＳ５５から図５のフローチャートのステップＳ１に戻ることと等価である。
【０１２６】
但し、Ｙ＜２／３であっても（ステップＳ５４のＹｅｓ）、閾値Ｘが既に１００（％）に達しているならば（ステップＳ５６のＹｅｓ）、これ以上の閾値Ｘの増調整はできないことから、ブロック調整部１４０は、ブロックサイズを現在よりも小さくなるように調整、例えば現在の１／２に調整する（ステップＳ５７）。これにより、０データのブロックが増えてＤＭＡ所要時間が減り、ＤＭＡ所要時間ネックを解消することが期待される。  
ステップＳ５７が実行されると、ブロック調整処理（ステップＳ５）は終了し、ステップＳ６に進む。そして、加工データ作成処理がステップＳ１から再び開始される。このことは、ステップＳ５７から図５のフローチャートのステップＳ１に戻ることと等価である。
【０１２７】
一方、Ｙ＜２／３でないならば（ステップＳ５４のＮｏ）、ブロック調整部１４０はプロセッサ所要時間ネックでも、ＤＭＡ所要時間ネックでもなく、調整は不要であると判定する。この場合、ブロック調整処理（ステップＳ５）は終了し、ステップＳ６に進み、当該ステップＳ６からステップＳ７に進む。このことは、ステップＳ５４から図５のフローチャートのステップＳ７に進むことと等価である。
【０１２８】
なお、ステップＳ５２，Ｓ５５またはＳ５７から図５のフローチャートのステップＳ１に戻る前に、一旦ステップＳ７乃至Ｓ１０を実行して、仮の保存用加工データを作成しておくようにしても構わない。この場合、仮の保存用加工データに含まれている各ブロックのプロセッサ所要時間とＤＭＡ所要時間とを使用して、前述のように展開時間の見積もりを算出することができる。これにより、圧縮率の閾値Ｘまたはブロックサイズを変更した過程で作成される幾つかの仮の保存用加工データと、当該幾つかの仮の保存用加工データのそれぞれに対応する展開時間の見積りが結果として揃えられる。この中から、展開時間の見積もりが最小の仮の保存用加工データを、正規の保存用加工データＳＴＲＰＤとして決定することもできる。より詳細に述べるならば、仮の保存用加工データ毎に取得される、Ａ及びＢの最大値を比較して、その中の最大値が最小の仮の保存用加工データを、正規の保存用加工データＳＴＲＰＤとして決定することもできる。
【０１２９】
第３の実施形態において、ＤＭＡ処理とプロセッサ処理のオーバラップが効率的に行われない場合、ブロックのサイズを小さく変更してもよい。オーバラップが効率的に行われない状況は、例えば以下の方法で判定できる。
【０１３０】
ｄ１）処理時間計算部１３０は、各ブロックグループの実行時間の見積もりを算出する。ブロックグループの実行時間の見積もりは、当該ブロックグループに属する全てのブロックのプロセッサ所要時間の最大値と、当該ブロックグループに属する全てのブロックのＤＭＡ所要時間の合計値のうち、大きい方の値となる。
【０１３１】
ｄ２）処理時間計算部１３０は、全ブロックグループのそれぞれの実行時間の見積もりの合計を、実実行時間見積もり（第３の値）Ｃとする。  
ｄ３）処理時間計算部１３０は、前述したＡ、つまり全ブロックのプロセッサ所要時間の合計をプロセッサ数で割った値Ａと、前述したＢ、つまり全ブロックのＤＭＡ所要時間の合計とを比較し、大きい方の値を理想的な実行時間（第４の値）Ｄとする。
【０１３２】
ｄ４）ブロック調整部１４０は、実実行時間見積もりＣと理想的な実行時間Ｄとを比較し、理想的な実行時間Ｄと実実行時間見積もりＣとの差分（Ｄ−Ｃ）または理想的な実行時間Ｄの実実行時間見積もりＣに対する比率（Ｄ／Ｃ）が所定の閾値ＴＨよりも大きい場合は、オーバラップが効率的に行われていないと判断する。
【０１３３】
オーバラップが効率的に行われていない状態を検出した場合、ブロック調整部１４０はブロックサイズを現在よりも小さく設定する。そこで、この状態で加工データ作成処理がステップＳ１から再び開始される、つまりデータ加工がやり直されるようにしてもよい。ブロックサイズが小さく設定されることで、ブロックの組み合わせの融通が利きやすくなり、調整がより効率的にできることが期待される。
【０１３４】
また、オーバラップが効率的に行われていない状態（以下、特定状態と称する）が検出され、且つ上記ｄ３）での比較の結果、Ｂが理想的な実行時間Ｄと決定された場合、つまり上記特定状態の要因としてＤＭＡ所要時間の合計Ｂの方が大きかった場合、ブロック調整部１４０はＤＭＡ所要時間ネックと判定する。これに対し、上記特定状態が検出され、且つＡが理想的な実行時間Ｄと決定された場合、つまり上記特定状態の要因としてプロセッサ所要時間の合計をプロセッサ数で割った値Ａの方が大きかった場合、ブロック調整部１４０はプロセッサ所要時間ネックと判定する。
【０１３５】
ＤＭＡ所要時間ネックの場合、ブロック調整部１４０は、特定バイト列のブロックのデータ、例えば加工タイプが「０データ」のブロックのデータ（全て“０”の）が更に小さなブロックサイズで分割されるように調整する。これにより、プロセッサ所要時間の融通が利きやすくなり、オーバラップの効率の悪さが改善することが期待される。
【０１３６】
一方、プロセッサ所要時間ネックの場合、ブロック調整部１４０は、加工タイプが「圧縮」のブロックのデータが更に小さなブロックサイズで分割されるように調整する。これにより、ＤＭＡ所要時間の融通が利きやすくなり、オーバラップの効率の悪さが改善することが期待される。
【０１３７】
上述の説明から明らかなように、ＤＭＡ所要時間ネックまたはプロセッサ所要時間ネックのためにＤＭＡ処理とプロセッサ処理のオーバラップが効率的に行われない状態は、Ａ／Ｂの値が所定の範囲から外れている状態であるといえる。
【０１３８】
次に、このような調整の具体例を、ＤＭＡ所要時間ネックの場合について説明する。  
電子機器２０での展開処理に使用可能なプロセッサ数がプロセッサ２１-0〜２０-3の４で、対象データのブロック数がブロックＢ０〜Ｂ１９の２０で、その内訳が、
ブロックＢ０〜Ｂ１１：０データ、プロセッサ所要時間＝２０
ブロックＢ１２〜Ｂ１９：非圧縮、ＤＭＡ所要時間＝１０
のようになっているものとする。
【０１３９】
これらのブロックの最適なブロックグループ分けによる実行順序割り当て及び実行時間（の見積もり）は、例えば、
ブロックグループ（Ｂ０，Ｂ１，Ｂ１２，Ｂ１３），実行時間＝２０
ブロックグループ（Ｂ２，Ｂ３，Ｂ１４，Ｂ１５），実行時間＝２０
ブロックグループ（Ｂ４，Ｂ５，Ｂ１６，Ｂ１７），実行時間＝２０
ブロックグループ（Ｂ６，Ｂ７，Ｂ１８，Ｂ１９），実行時間＝２０
ブロックグループ（Ｂ８，Ｂ９，Ｂ１０，Ｂ１１），実行時間＝２０
であり、全ブロックグループの実行時間の合計（つまり実実行時間見積もり）Ｃは１００である。
【０１４０】
また、Ａ，Ｂは
Ａ＝全ブロックのプロセッサ所要時間の合計／プロセッサ数
＝２０×１２／４
＝６０
Ｂ＝全ブロックのＤＭＡ所要時間の合計
＝１０×８
＝８０
となる。
【０１４１】
この場合、Ａ＜Ｂであることから、ブロック調整部１４０はＤＭＡ処理時間ネックと判定する。そこでブロック調整部１４０は、ブロックＢ０〜Ｂ１１のデータ、つまり０データが更に小さなブロックサイズ、例えば現在の半分のブロックサイズで分割されるように調整する。ブロックＢ０〜Ｂ１１をそれぞれ半分に分割した後のブロックが、ブロックＢ０′，Ｂ０″〜Ｂ１１′，Ｂ１１″であるとすると、
ブロックＢ０′〜Ｂ１１′：０データ、プロセッサ所要時間＝１０
ブロックＢ０″〜Ｂ１１″：０データ、プロセッサ所要時間＝１０
ブロックＢ１２−Ｂ１９：非圧縮、ＤＭＡ所要時間＝１０
という構成にすることができる。
【０１４２】
これらのブロックの最適なブロックグループ分けによる実行順序割り当て及び実行時間は、例えば、
ブロックグループ（Ｂ０′，Ｂ１′，Ｂ２′，Ｂ１２），実行時間＝１０
ブロックグループ（Ｂ３′，Ｂ４′，Ｂ５′，Ｂ１３），実行時間＝１０
ブロックグループ（Ｂ６′，Ｂ７′，Ｂ８′，Ｂ１４），実行時間＝１０
ブロックグループ（Ｂ９′，Ｂ１０′，Ｂ１１′，Ｂ１５），実行時間＝１０
ブロックグループ（Ｂ０″，Ｂ１″，Ｂ２″，Ｂ１６），実行時間＝１０
ブロックグループ（Ｂ３″，Ｂ４″，Ｂ５″，Ｂ１７），実行時間＝１０
ブロックグループ（Ｂ６″，Ｂ７″，Ｂ８″，Ｂ１８），実行時間＝１０
ブロックグループ（Ｂ９″，Ｂ１０″，Ｂ１１″，Ｂ１９），実行時間＝１０
である。  
この場合、全ブロックグループの実行時間の合計（実実行時間見積もり）Ｃは８０となり、時間短縮が実現できる。
【０１４３】
このように第３の実施形態によれば、ブロック毎にデータの内容の加工タイプを変更できるようにすることにより、ブロック毎に効率的なデータの展開処理で対処でき、更にブロックサイズも変更できるようにすることにより、ＤＭＡ所要時間とプロセッサ所要時間とのバランスを第２の実施形態よりも更に取ることができ、ブロック展開処理全体の高速化を図ことができる。
【０１４４】
［第４の実施形態］
次に、第４の実施形態について、図１、図３及び図４のブロック図を援用して説明する。  
第１乃至第３の実施形態では、保存用加工データＳＴＲＰＤに含まれている管理テーブルの配置順にブロックの展開処理が実行される。つまり第１乃至第３の実施形態では、ブロック展開処理におけるブロックの処理順序は、計算機１０のプロセッサ１１（加工データ作成部１００）によって決定されることを前提としている。しかし、ブロックの処理順序が、電子機器２０のプロセッサ２１-0〜２１-3（加工データ展開部２００-0〜２００-3）によって決定されても構わない。第４の実施形態の特徴は、プロセッサ２１-0〜２１-3がブロック展開処理におけるブロックの処理順序を決定することにある。
【０１４５】
以下、電子機器２０のプロセッサ２１-j（ｊ＝０〜３）が処理順序決定手段として機能して、ブロック展開処理におけるブロックの処理順序を決定するためのブロック処理順序決定処理の手順について、図１４のフローチャートを参照して説明する。
【０１４６】
プロセッサ２１-j（加工データ展開部２００-jのプロセッサ２１-j）は、次に処理すべきブロックグループが既に決定されているかを、電子機器２０内の他のプロセッサとの通信によって確認する（ステップＳ６１）。もし、処理すべきブロックグループが既に決定されているならば（ステップＳ６１のＹｅｓ）、プロセッサ２１-jは、当該ブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する（ステップＳ６２）。
【０１４７】
これに対し、まだ次に処理すべきブロックグループが決定されていない場合（ステップＳ６１のＮｏ）、プロセッサ２１-jは、既に他のプロセッサが当該次に処理すべきブロックグループを決定する作業を行っているかを、当該他のプロセッサとの通信によって確認する（ステップＳ６３）。もし、既に他のプロセッサによって作業が開始されている場合（ステップＳ６３のＹｅｓ）、プロセッサ２１-jは、当該作業が完了して次に処理すべきブロックグループが決定されるのを待つ（ステップＳ６４）。そしてプロセッサ２１-jは、次に処理すべきブロックグループの決定後にステップＳ６２に進み、当該決定されたブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する。
【０１４８】
一方、次に処理すべきブロックグループを決定する作業が他のプロセッサによって開始されていない場合（ステップＳ６３のＮｏ）、プロセッサ２１-jは、図１１のフローチャートのステップＳ４３〜Ｓ４５の手順で、次に処理すべきブロックグループを決定する（ステップＳ６５）。次にプロセッサ２１-jはステップＳ６２に進み、自身が決定したブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する。
【０１４９】
第４の実施形態によれば、電子機器２０内で実行されるブロック展開処理で、ブロックの処理順序が決定される。このため、ブロックの処理順序の決定に要する処理時間がオーバヘッドとして余分にかかる反面、電子機器２０で適用される加工データ展開部２００-j（加工データ展開プログラムＥＰ）をプロセッサ数に依存しない汎用性のあるものとすることができる。
【０１５０】
以上、電子機器２０におけるブロック展開処理に複数のプロセッサ（ここでは４つのプロセッサ２１-0〜２１-3）が使用されることを前提として、ブロック展開処理の高速化を図るようにした第１乃至第４の実施形態について説明した。しかし、ブロック展開処理に、必ずしも複数のプロセッサが使用される必要はない。つまり、単一のプロセッサのみがブロック展開処理を実行する場合でも、以下に述べるように高速化は可能である。
【０１５１】
前述の通り、加工タイプが「非圧縮」のブロックに対する展開処理にはＤＭＡ処理で対応可能である。一方、加工タイプが「０データ」のブロックに対する展開処理にはプロセッサ処理で対応可能である。したがって、プロセッサ処理とＤＭＡ処理とは並列に実行可能という観点から、単一のプロセッサでも、加工タイプが「非圧縮」のブロックと加工タイプが「０データ」のブロックのそれぞれの展開処理を並列に実行することができ、展開処理を高速化することができる。
【０１５２】
次に、「非圧縮」のブロックの数と「０データ」のブロックの数のバランスについて考察する。  
「非圧縮」のブロックの展開処理に必要なＤＭＡ所要時間と、「０データ」のブロックの展開処理に必要な（つまり「０データ」をメモリ２２に書き込むのに必要な）プロセッサ所要時間とは、いずれも、ブロックサイズに比例すると想定できる。そのため、「非圧縮」のブロックと「０データ」のブロックの単位サイズ当たりの展開処理に要する時間の比がａ：ｂであるとすると、各ブロックのサイズが固定長の場合、「非圧縮」のブロックの数と「０データ」のブロックの数の比を、ｂ：ａにすることによって、双方の処理を完全にオーバラップさせることができる。
【０１５３】
したがって、保存用加工データＳＴＲＰＤの作成段階において、「０データ」のブロックの数がｎ個であれば、「０データ」以外の残りのブロックのうち、圧縮率が低い方からｎ×（ｂ／ａ）個のブロックの加工タイプを「非圧縮」とすればよい。
【０１５４】
以上説明した少なくとも１つの実施形態によれば、メモリ上にデータを高速に復元することができる、データ加工・復元システム、データ加工機能を持つ電子機器、及びデータ復元機能を持つ電子機器を提供できる。
【０１５５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５６】
１０…計算機、１１，２１-0〜２１-3…プロセッサ、１２，２２…メモリ、１３…ＨＤＤ（第１の記憶手段）、１４，２４…ＤＭＡコントローラ、１５，２５…通信機構、２０…電子機器、２３…フラッシュメモリ（第２の記憶手段）、３０…ネットワーク、１００…加工データ作成部、１１０…ブロック加工タイプ決定部（変換タイプ決定手段）、１２０…圧縮処理部、１３０…処理時間計算部、１４０…ブロック調整部、１５０…ブロック配置決定部（処理順序決定手段）、１６０…管理テーブル作成・更新部、１７０…ブロック分割部、２００-0〜２００-3…加工データ展開部、２１０…管理テーブルアクセス部、２２０…伸張処理部（復元手段）、ＰＰ…加工データ作成プログラム、ＥＰ…加工データ展開プログラム、ＯＲＧＤ…元データ、ＳＴＲＰＤ…保存用加工データ、ＥＸＴＤ…展開データ、Ｂ０〜Ｂ７，ＢＮ…ブロック、ＭＴ０〜ＭＴ７，ＭＴＮ…管理テーブル、ＢＰＤ０〜ＢＰＤ５…ブロック加工データ。
【図１】
0005161984.tif 000002
【図２】
0005161984.tif 000003
【図３】
0005161984.tif 000004
【図４】
0005161984.tif 000005
【図５】
0005161984.tif 000006
【図６】
0005161984.tif 000007
【図７】
0005161984.tif 000008
【図８】
0005161984.tif 000009
【図９】
0005161984.tif 000010
【図１０】
0005161984.tif 000011
【図１１】
0005161984.tif 000012
【図１２】
0005161984.tif 000013
【図１３】
0005161984.tif 000014
【図１４】
0005161984.tif 000015