データ加工・復元システム及びデータ加工・復元方法
【課題】メモリ上にデータを高速に復元することができるようにする。
【解決手段】実施形態によれば、データ加工・復元システムにおいて管理テーブル作成手段は、変換の対象となる元データが分割されたブロック毎に管理テーブルを作成する。加工手段は、ブロック毎の管理テーブルによって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成する。処理時間計算手段は、ブロック毎の管理テーブルに基づいて、ブロック毎に、複数の復元手段によって実行されるべきブロックの展開処理に要するプロセッサの所要時間と展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もる。処理順序決定手段は、プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりとデータ転送所要時間見積もりの合計が最も均等となるなるようにブロックの展開処理の処理順序を決定する。
【解決手段】実施形態によれば、データ加工・復元システムにおいて管理テーブル作成手段は、変換の対象となる元データが分割されたブロック毎に管理テーブルを作成する。加工手段は、ブロック毎の管理テーブルによって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成する。処理時間計算手段は、ブロック毎の管理テーブルに基づいて、ブロック毎に、複数の復元手段によって実行されるべきブロックの展開処理に要するプロセッサの所要時間と展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もる。処理順序決定手段は、プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりとデータ転送所要時間見積もりの合計が最も均等となるなるようにブロックの展開処理の処理順序を決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、データ加工・復元システム及びデータ加工・復元方法に関する。
【背景技術】
【0002】
近年、AV機器等の電子機器の高機能化が進み、当該電子機器における各種の制御に組み込みOSが使用されるようになってきている。組み込みOSであっても、当該組み込みOSの初期化にはある程度の処理時間が必要である。このため、組み込みOSを適用する電子機器は、組み込みOSを適用しない電子機器に比べて起動時間が余計にかかる。そこで、組み込みOSの高速起動が要求されている。
【0003】
組み込みOSを高速起動するために、当該組み込みOSを、当該組み込みOSのスナップショットイメージから起動する手法が知られている。しかし、スナップショットイメージのサイズは一般に大きいため、当該スナップショットイメージを、例えば電子機器の外部から当該電子機器のメモリに高速にロードすることは難しい。
【0004】
一方、電子機器のメモリへの高速データロードのために、データを圧縮し、この圧縮されたデータを用いることが知られている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−066142号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、組み込みOSのスナップショットイメージ(以下、元データと称する)を圧縮し、この圧縮されたスナップショット(以下、保存用加工データと称する)を例えば電子機器内の不揮発性記憶装置から当該電子機器内のメモリにロードすることが考えられる。しかし、ロードされた保存用加工データを利用可能とする(ここでは、組み込みOSを起動する)ためには、当該保存用加工データから元データをメモリ上に復元するための伸張処理(つまり展開処理)が必要となる。もし、電子機器の更なる高機能化に伴い元データ(組み込みOSのスナップショットイメージ)のサイズがより大きくなるならば、展開処理に長時間を要する可能性がある。このため、展開処理の一層の高速化が要求される。このような要求は、組み込みOSのスナップショットイメージに限らず、元データの保存用加工データから当該元データを電子機器のメモリ上に復元する展開処理に共通に存在する。
【0007】
本発明が解決しようとする課題は、メモリ上にデータを高速に復元することができる、データ加工・復元システムデータ加工・復元方法を提供することにある。
【課題を解決するための手段】
【0008】
実施形態によれば、データ加工・復元システムは、第1の記憶手段と、ブロック分割手段と、管理テーブル作成手段と、加工手段と、第2の記憶手段と、並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段と、処理時間計算手段と、処理順序決定手段とを具備する。前記第1の記憶手段は、変換の対象となる元データを格納する。前記ブロック分割手段は、前記元データを複数のブロックに分割する。前記管理テーブル作成手段は、前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成する。前記加工手段は、前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成する。前記第2の記憶手段は、前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを保存する。前記複数の復元手段は、前記第2の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行する。前記処理時間計算手段は、前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もる。処理順序決定手段は、前記複数の復元手段によって実行されるべき前記ブロックの展開処理の処理順序を次のように決定する。処理順序決定手段は、前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定する。前記管理テーブル作成手段は、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定する。前記複数の復元手段は、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序に従って、対応するブロックの展開処理を実行する。
【図面の簡単な説明】
【0009】
【図1】第1の実施形態に係るデータ加工・復元システムの全体構成を示すブロック図。
【図2】第1の実施形態で適用される元データ、保存用加工データ及び展開データのデータ構造例を示す図。
【図3】図1に示す計算機内のプロセッサの機能構成を示すブロック図。
【図4】図1に示す電子機器内の各プロセッサの機能構成を示すブロック図。
【図5】第1の実施形態における加工データ作成処理の手順を示すフローチャート。
【図6】第1の実施形態における加工タイプ決定処理の手順を示すフローチャート。
【図7】第1の実施形態におけるブロック毎の加工タイプの決定結果と加工タイプの決定に用いられたブロック毎の状態とを対応付けて示す図。
【図8】第1の実施形態において、元データが複数のブロックに分割されている状態と、保存用加工データ内の管理テーブル及びブロック加工データの位置関係とを示す図。
【図9】第8に示す保存用加工データに含まれている管理テーブル群の例を示す図。
【図10】第1の実施形態における加工データ展開処理の手順を示すフローチャート。
【図11】第2の実施形態におけるブロック配置決定処理の手順を示すフローチャート。
【図12】ブロック配置決定処理後の管理テーブル群の例を示す図。
【図13】第3の実施形態におけるブロック調整処理の手順を示すフローチャート。
【図14】第4の実施形態におけるブロック処理順序決定処理の手順を示すフローチャート。
【発明を実施するための形態】
【0010】
以下、実施の形態につき図面を参照して説明する。
<用語の定義>
まず、実施形態で適用される用語の定義について説明する。
【0011】
a0)元データ
元データとは、後述する加工の対象となるデータである。
a1)展開データ
展開データとは、最終的に電子機器のメモリ上に配置される目的のデータイメージである。展開データは、元データに一致する。
【0012】
a2)ブロック
実施形態では、元データの領域は複数に分割される。それぞれの分割領域をブロックと呼ぶ。
【0013】
a3)加工
加工とは、各ブロックのデータを復元可能な方法で変換することである。この変換には、ブロック毎に異なったタイプの方法を使用することができる。具体的な変換のタイプとして、実施形態では、第1乃至第3の変換タイプが適用される。第1の変換タイプ、第2の変換タイプ及び第3の変換タイプを、それぞれ、「圧縮」、「非圧縮」及び「0データ」と呼ぶ。
【0014】
a3-1)圧縮:既存の圧縮アルゴリズムを用いて圧縮する手法である。
a3-2)非圧縮:変換を行わずに、元のデータをそのまま使用する手法である。
a3-3)0データ:ブロック内のデータが、予め定められたバイト列から構成されるとき、例えば全て0のとき適用され、変換後のデータを作成しない手法である。
また、変換後のブロックのデータをブロック加工データと呼ぶ。
【0015】
a4)保存用加工データ
保存用加工データとは、上記のブロック加工データを含み、元データ全体のイメージを復元できるような情報を持ったデータである。
【0016】
a5)展開
展開とは、保存用加工データから元データを復元してメモリ上に展開データとして配置する処理、またはブロック加工データからブロックのデータを復元してメモリ上に配置する処理を表す。
【0017】
展開処理(各ブロックに対する展開処理)は、上記第1乃至第3の変換タイプのそれぞれに対して、次のような処理に分けられる。なお、以下の説明では、変換タイプを加工タイプと称する。
【0018】
a5-1)圧縮データ展開処理:圧縮に使用された圧縮アルゴリズムに対応する伸張処理である。圧縮データ展開処理では、ブロックの圧縮データがDMA(ダイレクトメモリアクセス)で取得され、取得された圧縮データがプロセッサによって伸張される。但し、圧縮データのストリームの伸張処理は、全てのデータが揃うまで待たなくても、DMAが完了した一部のデータを利用して実行可能であり、伸張処理の実行と並行して残りのデータを取得するためのDMAを実行すること、つまりDMAと伸張処理とは並列に実行可能であるものとする。
【0019】
a5-2)非圧縮展開処理:保存用加工データに含まれるブロック加工データをそのままブロックに該当するメモリ領域にDMAでロードする処理である。
【0020】
a5-3)0データ展開処理:ブロックに該当するメモリ領域に、プロセッサが0を書く処理である。
【0021】
a6)ブロックグループ
実施形態では、展開処理が実行される電子機器は複数のプロセッサを備えており、当該複数のプロセッサが、それぞれブロックを単位に並行して展開処理を実行することを想定している。つまり複数のプロセッサの各々は、1ブロックずつ展開処理を実行する。この同時に展開処理が行われることになる、プロセッサ数と同数のブロックの集合をブロックグループと呼ぶ。また、1ブロックずつ実行される展開処理を、全ブロックの展開処理と区別するために、ブロック展開処理と呼ぶこともある。上記圧縮データ展開処理、非圧縮展開処理及び0データ展開処理は、ブロック単位に実行されることから、ブロック展開処理である。
【0022】
[第1の実施形態]
図1は第1の実施形態に係るデータ加工・復元システムの全体構成を示すブロック図である。
図1に示すデータ加工・復元システムは、データ加工機能を持つ電子機器、例えば計算機10と、データ復元機能を持つ、例えばAV機器のような電子機器20とから構成される。計算機10及び電子機器20は、例えばネットワーク30によって接続されているものとする。
【0023】
計算機10は、例えば、プロセッサ11、メモリ12、HDD13、DMAコントローラ14及び通信機構15を備えている。
プロセッサ11は、例えばHDD13に格納されている加工データ作成プログラムPPに従い、HDD13に格納されているデータ(元データ)を加工するための所定の加工データ作成処理を実行する。これによりプロセッサ11は、図3を参照して後述する加工データ作成部100として機能する。つまり計算機10は、データ加工機能を持つ電子機器である。
【0024】
メモリ12は、プロセッサ11による保存用加工データ作成のためのワークメモリ等に用いられる。HDD13は、加工データ作成プログラムPPを格納する、書き換え可能な不揮発性記憶装置である。HDD13には、保存用加工データ作成に用いられる元データも格納される。なお、HDD13に代えて、他の書き換え可能な不揮発性記憶装置、例えばフラッシュメモリを用いることも可能である。
DMAコントローラ14は、例えばHDD13からメモリ12へのデータ転送等を制御する。通信機構15は、計算機10と電子機器20を含む他の電子機器群との間で通信する。
【0025】
電子機器20は、例えば、4つのプロセッサ21-0〜21-3、メモリ22、フラッシュメモリ23、DMAコントローラ24及び通信機構25を備えている。
プロセッサ21-0〜21-3の性能は同等であるものとする。プロセッサ21-0〜21-3は、例えばフラッシュメモリ23に格納されている加工データ展開プログラムEPに従い、当該フラッシュメモリ23に格納されている保存用加工データから展開データを生成することにより当該展開データを元データとしてメモリ22上に復元するするための所定の加工データ展開処理を実行する。これによりプロセッサ21-0〜21-3は、それぞれ、図4を参照して後述する加工データ展開部200-0〜200-3として機能する。つまり電子機器20は、データ復元機能を持つ電子機器である。
【0026】
メモリ22は、プロセッサ21-0〜21-3による加工データ展開のためのワークメモリ等に用いられる。フラッシュメモリ23は、加工データ展開プログラムEPを格納する、書き換え可能な不揮発性記憶装置である。フラッシュメモリ23には、計算機10によって作成された保存用加工データも格納される。なお、フラッシュメモリ23に代えて、他の書き換え可能な不揮発性記憶装置、例えばHDDを用いることも可能である。
DMAコントローラ24は、例えばフラッシュメモリ23からメモリ22へのデータ転送等を制御する。通信機構25は、電子機器20と、計算機10等との間で通信する。
【0027】
図2は、元データORGD、保存用加工データSTRPD及び展開データEXTD及びのデータ構造例を示す。
元データORGDは、電子機器20のメモリ22の特定領域に展開されることを目的として用意されたデータである。第1の実施形態では、元データORGDは、組み込みOSのスナップショットイメージである。しかし、元データORGDが、組み込みOSのスナップショットイメージである必要はない。
【0028】
また第1の実施形態では、元データORGDは、HDD13に格納して用意されることを想定している。しかし、元データORGDが、例えば計算機10以外の電子機器によって用意されて、例えばネットワーク30を介して計算機10のメモリ12またはHDD13に転送されたものであっても構わない。また元データORGDが、可搬型の記憶媒体としての、例えばCDROMまたはUSBメモリに用意され、計算機10に設けられたCDROMドライブまたはUSBコネクタ(図示せず)を介して、計算機10内のメモリ12またはHDD13に読み込まれるものであっても構わない。
【0029】
保存用加工データSTRPDは、元データORGDを加工することによって取得されるデータを含む。第1の実施形態では、元データORGDの領域は、複数のブロック、例えばN+1個のブロックB0,B1,…BNに分割される。各ブロックBi(i=0,1,…N)のデータは、予め定められた複数の加工タイプ(第1の実施形態では、「圧縮」、「非圧縮」及び「0データ」)から選択された方法で、ブロック加工データBPDiに加工(変換)される。但し、加工タイプが「0データ」の場合、後述するように、ブロックBiに対応するブロック加工データBPDiは物理的には存在しない。
【0030】
保存用加工データSTRPDは、ブロックB0,B1,…BNにそれぞれ対応して用意される管理テーブルMT0,MT1,…MTNを更に含む。管理テーブルMTiは、対応するブロックBiを管理するのに用いられ、当該ブロックBiを管理するためのブロック管理情報を登録する。保存用加工データSTRPDは、管理テーブルMT0,MT1,…MTNと、ブロックB0,B1,…BNのうちの幾つかに対応するブロック加工データ(図2の例では、ブロック加工データBPD0,BPD1を含む複数のブロック加工データ)とを連結して1つのデータとしてまとめられたものである。作成された保存用加工データSTRPDは、電子機器20のフラッシュメモリ23に保存される。
【0031】
次に、管理テーブルMTiのデータ構造について説明する。
管理テーブルMTiは、加工タイプ、加工データオフセット、加工データサイズ、展開データオフセット、展開データサイズ、プロセッサ所用時間及びDMA所用時間等の各情報が設定されるフィールドを有する。上記ブロック管理情報は、これらの各フィールドに設定された情報から構成される。
【0032】
加工タイプは、対応するブロックBiのデータの加工(変換)に、「圧縮」、「非圧縮」または「0データ」のいずれの加工(変換)方法を適用したかを示す。
加工データオフセットは、対応するブロック加工データBPDi(つまり、ブロックBiのデータを上記加工タイプの示す方法で変換することによって取得されたブロック加工データBPDi)が、保存用加工データSTRPDの先頭位置を基準に、当該保存用加工データSTRPDのどの位置にあるかを示す。つまり加工データオフセットは、ブロック加工データBPDiの、保存用加工データSTRPD内の先頭からのオフセット(メモリアドレスオフセット)を示す。なお、加工タイプが「0データ」の場合、ブロック加工データBPDiは不要であるため、つまりブロック加工データBPDiは用意されないため、加工データオフセットは無効な値となる。
加工データサイズは、対応するブロック加工データBPDiのサイズを示す。加工タイプが「0データ」の場合、加工データサイズは、加工データオフセットと同様に無効な値となる。
【0033】
展開データオフセットは、対応するブロックBiのデータが復元(展開)されるとき、その復元(展開)後のデータが配置されるべき、展開データEXTD内の領域の先頭からのオフセットを示す。
展開データサイズは、対応するブロックBiのデータの復元(展開)先のサイズ、つまり復元後のブロックBiのデータのサイズを示す。
【0034】
プロセッサ所要時間は、対応するブロックBiのデータの展開にプロセッサが消費すると予測される時間(見込み時間)を示す。
DMA所要時間は、対応するブロックBiのデータを展開する際のDMA処理(DMA転送処理)に必要であると予測される時間(見込み時間)を示す。
【0035】
次に、上述のプロセッサ所要時間及びDMA所要時間について、加工タイプ毎に以下に詳述する。
圧縮:
加工タイプが「圧縮」の場合、対応するブロックBiのための展開処理には、圧縮データを伸張する伸張処理が用いられる。この伸張処理に際し、フラッシュメモリ23に保存されている保存用加工データSTRPD内のブロック加工データBPDi(つまりブロックBiの圧縮データ)が、DMAコントローラ24によるDMA処理で、電子機器20のメモリ22内に確保された伸張処理用バッファにロードされる。プロセッサ21-j(jは0〜3のいずれか)は、伸張処理用バッファにロードされたブロック加工データBPDi(圧縮データ)を入力として伸張処理を行い、その出力、つまりブロックBiの元のデータを、展開データオフセット及び展開データサイズで示される、メモリ22内の展開先領域に配置する。
【0036】
したがって、プロセッサ所要時間はブロック加工データBPDiの伸張処理に必要な処理時間に相当する。一方、DMA所要時間は、ブロック加工データBPDiをフラッシュメモリ23からメモリ22内の伸張処理用バッファにロードする時間に相当し、当該ブロック加工データBPDi(圧縮データ)のサイズに比例した時間となる。
【0037】
なお、伸張処理は入力となる圧縮データが全て揃っていない状態で開始可能である。そこで、圧縮データを小さいサイズに分割して、順次ロードするとよい。プロセッサ21-jは、DMA完了の割り込み処理で、準備できたデータの量を把握し、且つ次のDMAをキックする一方で、準備できたデータ分の伸張処理を開始する。この結果、プロセッサ21-jにより伸張処理とDMAコントローラ24によるDMA処理とは、ほぼ並行して実行される。そこで、例えば外乱要因のない場合のプロセッサ21-j単独の処理時間を、プロセッサ所要時間とDMA所要時間のうち大きな方の値と概算することができる。
【0038】
非圧縮:
加工タイプが「非圧縮」の場合、対応するブロックBiのための展開処理は、DMAコントローラ24によるDMA処理により実現される。つまり、フラッシュメモリ23に保存されている保存用加工データSTRPD内のブロック加工データBPDi(つまりブロックBiの非圧縮データ)が、DMAコントローラ24によるDMA処理で、電子機器20のメモリ22内の、展開データオフセット及び展開データサイズで示される展開先領域にロードされる。
【0039】
したがって、プロセッサ所要時間は不要となる。一方、DMA所要時間は、ブロック加工データBPDiをフラッシュメモリ23からメモリ22内の展開先領域にロードする時間に相当し、当該ブロック加工データBPDi(非圧縮データ)のサイズに比例した時間となる。
【0040】
0データ:
加工タイプが「0データ」の場合、対応するブロックBiのための展開処理は、メモリ22の展開先領域に、その展開先領域のサイズ分、つまり展開オフセットサイズ分の“0”を書く処理であり、プロセッサ21-jによって実行される。
【0041】
したがって、プロセッサ所要時間は、プロセッサ21-jがメモリ22の展開先領域に“0”を書き込むのに必要な処理時間に相当し、展開オフセットサイズ、つまりブロックBiのデータのサイズに比例した時間が必要となる。一方、DMA所要時間は、不要となる。
【0042】
図3は、図1に示す計算機10内のプロセッサ11の機能構成を示すブロック図である。
図1に示すプロセッサ11は、加工データ作成プログラムPPを実行することにより、図3に示す加工データ作成部100として機能する。加工データ作成部100は、ブロック加工タイプ決定部110、圧縮処理部120、処理時間計算部130、ブロック調整部140、ブロック配置決定部150、管理テーブル作成・更新部160及びブロック分割部170から構成される。
【0043】
図4は、図1に示す電子機器20内のプロセッサ21-0〜21-3の各々の機能構成を示すブロック図である。
図1に示すプロセッサ21-0〜21-3は、それぞれ、加工データ展開プログラムEPを実行することにより、図4に示す加工データ展開部200-0〜200-3として機能する。加工データ展開部200-0〜200-3は、いずれも管理テーブルアクセス部210及び伸張処理部220から構成される。
【0044】
次に、第1の実施形態の動作について説明する。
第1の実施形態では、計算機10のプロセッサ11が加工データ作成プログラムPPにしたがって元データORGDから保存用加工データSTRPDを作成するための加工データ作成処理と、電子機器20のプロセッサ21-0〜21-3が協調して、保存用加工データSTRPD中の各ブロック加工データをメモリ12上に展開して展開データEXTDを取得する、つまりメモリ12上に元データORGDを復元するための加工データ展開処理とが実行される。
【0045】
まず、計算機10のプロセッサ11によって実行される加工データ作成処理について、図5のフローチャートを参照して説明する。ここでは、プロセッサ11が加工データ作成プログラムPPを実行することによって実現される加工データ作成部100が、加工データ作成処理を実行するものとする。
【0046】
加工データ作成部100のブロック分割部170は、加工の対象となる元データORGDを複数のブロックに分割する(ステップS1)。この最初の分割における、分割サイズ(つまりブロックサイズ)または分割数(つまりブロック数)に特に制約はない。ここでは、元データORGDのサイズは64MBであり、8MBの均等なサイズの8個のブロックB0〜B7に分割されるものとする。この64MBの元データが、ブロックB0〜B7に分割されている状態を図8(a)に示す。つまり図8(a)の例は、図2においてN=7として場合に相当する。
【0047】
加工データ作成部100の管理テーブル作成・更新部160は、メモリ12内に、元データORGDのブロック数と同数の管理テーブル領域を確保する(ステップS2)。ここでは、8個の管理テーブル領域が確保される。ステップS2において、管理テーブル作成・更新部160は、8個の管理テーブル領域を初期化する。これにより8個の管理テーブル領域に管理テーブルMT0〜MT7が初期設定される。具体的には、各管理テーブルMTi(i=0〜7)の展開データオフセットフィールド及び展開データサイズフィールドに、対応するブロックB0〜B7の位置及びサイズにそれぞれ合致する展開データオフセットフィールド及び展開データサイズが初期設定される。
【0048】
ブロック加工タイプ決定部110は、ブロックB0〜B7をそれぞれ解析して、ブロック毎に加工タイプを決定するための加工タイプ決定処理を実行する(ステップS3)。
【0049】
ここで、加工タイプ決定処理の手順について、ブロックBi(i=0〜7)の加工タイプを決定する場合を例に、図6のフローチャートを参照して説明する。
ブロック加工タイプ決定部110は、ブロックBiの領域内の全てのデータが“0”であるかを判定する(ステップS11)。全てのデータが“0”であるブロックBiの領域を「0領域」と呼ぶ。
【0050】
もし、ステップS11の判定がYesであるならば、ブロック加工タイプ決定部110は、ブロックBiの加工タイプを「0データ」と決定する(ステップS12)。そのようにする理由は、全て“0”のデータを圧縮したデータを伸張する処理よりも、プロセッサ11(伸張処理部220)によってブロックBiの領域を直接“0”で埋める処理の方が高速となるという前提に基づいている。また、全てのデータが“0”のブロックだけを特別に扱う理由は、OSのスナップショットイメージなどでは未使用領域が全て“0”となることも多く、未使用領域の出現頻度の点からも、十分有用であることによる。
【0051】
一方、ステップS11の判定がNoであるならば、ブロック加工タイプ決定部110は圧縮処理部120を起動する。圧縮処理部120は、ブロックBiのデータを圧縮する(ステップS13)。このデータの圧縮には、従来から知られている様々な圧縮アルゴリズムのいずれを使用しても構わない。
【0052】
ブロック加工タイプ決定部110は、圧縮処理部120によるデータ圧縮の結果に基づき、圧縮率が閾値X%以下であるかを判定する(ステップS14)。ここでは、Xは50であるものとする。周知のように圧縮率とは、圧縮前のデータに対する圧縮後のデータのサイズの比率である。この比率が小さいほど、圧縮効果は大きくなる。つまり圧縮率の数値が小さいほど、圧縮率は高くなる。ブロックBiの圧縮率が閾値X%以下であり、つまり圧縮効果が大きく、圧縮率が高い場合(ステップS14のYes)、ブロック加工タイプ決定部110は、ブロックBiの加工タイプを「圧縮」と決定する(ステップS15)。
【0053】
これに対し、ステップS14の判定がNoであるならば、ブロック加工タイプ決定部110は、ブロックBiの加工タイプを「非圧縮」と決定する(ステップS16)。このようにブロック加工タイプ決定部110は、ブロックBiの圧縮率が閾値X%よりも大きく、つまり圧縮効果が小さく、圧縮率が低い場合、当該ブロックBiの圧縮による加工データのサイズの縮小及び当該サイズの縮小によるロード時間削減のメリットに対して、伸張処理に要する時間の増大のデメリットが大きいと判断する。
【0054】
ブロックBiを圧縮するかしないかの判定に用いられる閾値Xの値は、この時点では、任意に設定可能である。なぜなら、Xの適切な値はデータイメージの内容に依存するからである。後述するように、Xの値が適切でないと判断できる場合に、Xの値を変更することにより、加工タイプの変更等を伴う再調整(ブロック調整)を行うことも可能である。
【0055】
再び図5のフローチャートを参照すると、ブロック加工タイプ決定部110は、ブロックB0〜B7の全てについて、上述の手順で加工タイプを決定する(ステップS3)。図7は、ブロック毎の加工タイプの決定結果と加工タイプの決定に用いられたブロック毎の状態(0領域の有無と圧縮率)とを対応付けて示す。
【0056】
管理テーブル作成・更新部160は、ブロック加工タイプ決定部110によるブロック毎の加工タイプの決定結果に基づいて管理テーブルMT0〜MT7を更新する(ステップS4)。つまり管理テーブル作成・更新部160は、管理テーブルMT0〜MT7の加工タイプフィールドに、決定された加工タイプを示す値を設定する。
【0057】
また、ステップS4において計算機10の処理時間計算部130は、ブロックB0〜B7それぞれの加工データを展開するための展開処理に必要となる、プロセッサ所要時間及びDMA所要時間を見積る。また、ステップS4において管理テーブル作成・更新部160は、処理時間計算部130によるブロック毎のプロセッサ所要時間及びDMA所要時間の見積もり結果に基づいて管理テーブルMT0〜MT7を更新する。つまり管理テーブル作成・更新部160は、処理時間計算部130によって見積もられたブロックB0〜B7それぞれに対応するプロセッサ所要時間及びDMA所要時間を、管理テーブルMT0〜MT7のプロセッサ所要時間フィールド及びDMA所要時間フィールドに設定する。
【0058】
処理時間計算部130によるプロセッサ所要時間及びDMA所要時間の見積もりには、例えば、データのサイズ等をパラメータとして使用して概算する方法が適用可能である。また、計算機10上でも加工データ展開プログラムEPが走行可能であるならば、当該加工データ展開プログラムEPに従って実際に展開処理を実行してプロセッサ所要時間及びDMA所要時間の実測値を取得してもよい。第1の実施形態では計算機10上でも加工データ展開プログラムEPが走行可能であり、加工タイプ毎に、以下のようにプロセッサ所要時間及びDMA所要時間が算出されるものとする。なお第1の実施形態では、両所要時間には、所定時間を基準とする正規化値が用いられるものとする。しかし、正規化値である必要はない。
【0059】
b1)プロセッサ所要時間
圧縮:伸張処理の実測値
非圧縮:0
0データ:1MB当たり10
b2)DMA所要時間
圧縮:圧縮データ1MB当たり20
非圧縮:非圧縮データ1MBあたり20
0データ:0
加工データ作成部100のブロック調整部140は、処理時間計算部130によって算出されたブロック毎のプロセッサ所要時間及びDMA所要時間に基づいて、ステップS1で設定されたブロックサイズ及びステップS3で決定された加工タイプ(ブロック加工タイプ)を、ステップS5において調整することができる。しかし第1の実施形態では、ブロック調整部140による調整、つまりブロック調整処理(ステップS5)は行われないものとする。
【0060】
第1の実施形態及び後述する第2乃至第4の実施形態では、管理テーブルMTiの配置順に、対応するブロックBiの展開処理が行われることを基本としている。加工データ作成部100のブロック配置決定部150は、このブロック毎の展開処理が効率よく進むように、ブロックの処理順を、ステップS7において変更することができる。つまりブロック配置決定部150は、ブロックの処理順序を決定する処理順序決定手段として動作する。しかし第1の実施形態では、ブロック配置決定部150による順番の変更(ステップS7)は行われず、ブロックB0〜B7の順に展開処理が行われるものとする。
【0061】
加工データ作成部100の圧縮処理部120は、管理テーブルBT0〜BT7にそれぞれ設定された加工タイプに従って、対応するブロックのブロック加工データを作成する(ステップS8)。圧縮処理部120は、作成されたブロック加工データを、メモリ12内の管理テーブルBT0〜BT7に後続する領域に、連続して配置する(ステップS9)。第1の実施形態では、ブロックB0〜B7のうちのブロックB6及びB7の加工タイプが「0データ」である。この場合、ブロックB0〜B5のブロック加工データBPD0〜BPD5は作成されるものの、ブロックB6及びB7のブロック加工データは作成されない。つまりブロックB6及びB7のブロック加工データは存在しない。したがって、メモリ12内の管理テーブルBT0〜BT7に後続する領域には、ブロックB0〜B5のブロック加工データBPD0〜BPD5だけが連続して配置される。これにより、管理テーブルBT0〜BT7及びブロック加工データBPD0〜BPD5が連結された保存用加工データSTRPDが作成される。
【0062】
管理テーブル作成・更新部160は、管理テーブルBT0〜BT7を、作成されたブロック加工データBPD0〜BPD7に合致するように更新する(ステップS10)。つまり管理テーブル作成・更新部160は、管理テーブルMT0〜MT7の加工データオフセットフィールド及び加工データサイズフィールドに、作成されたブロック加工データBPD0〜BPD7に合致する加工データオフセット及び加工データサイズを設定する。これにより管理テーブルBT0〜BT7及びブロック加工データBPD0〜BPD5から構成される保存用加工データSTRPDが完成する。完成した保存用加工データSTRPDは、メモリ12からHDD13に転送されて、当該HDD13に格納される。HDD13に格納された保存用加工データSTRPDは、例えば通信機構15によって、ネットワーク30を介して電子機器20に送信され、当該電子機器20内の通信機構25で受信される。受信された保存用加工データSTRPDは、例えばDMAコントローラ24によってフラッシュメモリ23に転送されて、当該フラッシュメモリ23に保存される。この場合、DMAコントローラ24は保存手段として機能する。なお、完成した保存用加工データSTRPDが、通信機構15によってメモリ12からネットワーク30を介して電子機器20に送信されて、当該電子機器20のフラッシュメモリ23に保存されてもよい。また、計算機10にフラッシュメモリ23が装着されるスロットが設けられているならば、完成した保存用加工データSTRPDを、メモリ12またはHDD13から当該スロットを介してフラッシュメモリ23に転送して当該フラッシュメモリ23に保存し、当該保存用加工データSTRPDが保存されたフラッシュメモリ23を、電子機器20の製造時に、当該電子機器20に実装してもよい。
【0063】
管理テーブルMT0〜MT7の領域全体のサイズを1MBとする。また、ブロック加工データBPD0,BPD1,BPD2,BPD3,BPD4,BPD5のサイズを、それぞれ8MB,8MB,4MB,2MB,3MB,1MBとする。この場合、保存用加工データSTRPD内の管理テーブル及びブロック加工データの位置関係を図8(b)に示す。図8(b)には、ブロック加工データBPD0〜BPD5それぞれの横に、当該ブロック加工データBPD0〜BPD5の保存用加工データSTRPD先頭からのオフセットが示されている。また図8(b)には、ブロック加工データBPD0〜BPD5が、それぞれ圧縮データであるか非圧縮データであるかも示されている。なお、管理テーブルMT0〜MT7の領域全体のサイズは、実際には、ブロック加工データBPD0〜BPD5と比較して十分小さい。つまり、管理テーブルMT0〜MT7の領域全体のサイズは、実際には、1MBよりも小さい。
【0064】
図9は、図8に示す保存用加工データSTRPDに含まれている管理テーブルMT0〜MT7の例を示す。
【0065】
次に、電子機器20のフラッシュメモリ23に保存されている保存用加工データSTRPD中の各ブロック加工データをメモリ12上に展開するための加工データ展開処理について、図10のフローチャートを参照して説明する。
【0066】
プロセッサ21-0〜21-3は、それぞれ加工データ展開プログラムEPに従って加工データ展開処理を実行する。前述したように、プロセッサ21-0〜21-3が加工データ展開プログラムEPを実行することによって、それぞれ加工データ展開部200-0〜200-3が実現される。以下の説明では、加工データ展開部200-0〜200-3が協調して、加工データ展開処理を実行するものとする。図10のフローチャートは、加工データ展開部200-0〜200-3(プロセッサ21-0〜21-3)の各々が実行する加工データ展開処理の手順を示す。ここで、加工データ展開部200-j(j=0〜3)には、データの展開先及び保存用加工データSTRPDの保存先の先頭アドレスの情報が予め与えられているものとする。
【0067】
加工データ展開部200-jの管理テーブルアクセス部210(プロセッサ21-j)は、フラッシュメモリ23に保存されている保存用加工データSTRPD内の管理テーブル群(ここでは、管理テーブルBT0〜BT5)を、メモリ22内に確保される自身の作業領域に、DMAコントローラ24を用いてDMA処理によりロードする(ステップS21)。このメモリ22にロードされた管理テーブル群は、加工データ展開部200による以降の処理で使用される。この管理テーブル群全体のサイズは1MB未満であり、管理テーブル群のロードに要する時間は無視できるほど十分短いものとする。
【0068】
加工データ展開部200-jでは、管理テーブル群で示される全てのブロックB0〜B7についての展開処理が、当該加工データ展開部200-j自身または他の加工データ展開部によって実行されるまで(ステップS22)、ステップS23から始まる以下の手順が繰り返される。ここでは、説明の簡略化のために、各加工データ展開部200-jは、1つのブロックを処理する毎に、ステップS23の開始時で互いに同期が取られているかのように挙動するものとする。つまり加工データ展開部200-0〜200-3は、互いに同期してブロックを処理するものとする。
【0069】
したがって、全ての加工データ展開部200-0〜200-3(プロセッサ21-0〜21-3)が同時に処理するブロック(ここでは4個のブロック)の集まりをブロックグループと呼ぶものとすると、当該ブロックグループの数は、(全ブロック数/プロセッサ数)個となる。1つのブロックグループに含まれるブロック(4個のブロック)は、加工データ展開部200-0〜200-3(プロセッサ21-0〜21-3)に同時に割り当てられて、当該加工データ展開部200-0〜200-3により処理される。なお、全ブロック数がプロセッサ数の整数倍でない場合には、(全ブロック数/プロセッサ数)の商の整数部の値に1を加算した数が、ブロックグループの数となる。この場合、1ブロックグループのみ、ブロック数が4未満となる。また、全ブロック数がプロセッサ数以下の場合、ブロックグループの概念は必ずしも必要ない。
【0070】
加工データ展開部200-jの管理テーブルアクセス部210は、当該加工データ展開部200-jの伸張処理部220がこれから展開すべきブロック(展開ブロック)を決定する(ステップS23)。この展開ブロックの決定のために、例えば管理テーブルMTi内に、対応するブロックBiを処理すべき(割り当てるべき)加工データ展開部200-j(プロセッサ21-j)を示す情報が設定されていても構わない。また、加工データ展開部200-0〜200-3相互の通信によって、つまりプロセッサ21-0〜21-3上で動作するプログラム間の通信によって、未展開のブロックを探して、当該未展開のブロックを次の展開ブロックと決定しても構わない。
【0071】
また、管理テーブルMT0〜MT7の配置順に、対応するブロックB0〜B7の展開処理が行われるものとする。この場合、管理テーブルMT0〜MT7の配置順に、加工データ展開部200-0〜200-3の個数に一致する数のブロックから構成されるブロックグループが形成されることになる。
【0072】
次に、加工データ展開部200-jにおいて展開されるべきブロックとしてブロックBiが決定されたものとする。すると、加工データ展開部200-jの伸張処理部220は、決定されたブロックBiに対応する管理テーブルMTiを、管理テーブルアクセス部210を介して参照することにより、当該決定されたブロックBiの加工タイプ(つまり、対応する加工データの作成に用いられた加工タイプ)を判別する(ステップS24)。ここでは、ブロックBiの加工タイプが、「圧縮」、「非圧縮」または「0データ」のいずれであるかが判別される。
【0073】
伸張処理部220は、加工タイプの判別結果に応じて、以下の処理を行う。
加工タイプが「圧縮」の場合。伸張処理部220は、伸張処理の対象となるブロックBiのブロック加工データBPDiを入力データとして取得するためのDMA処理と当該伸張処理とが並列に行われるように、以下のような手順(ステップS26〜S29)を全ての入力データを処理するまで繰り返す(ステップS25)。
【0074】
まず伸張処理部220は、管理テーブルBTi内の加工データオフセットの示す位置を起点とする加工データサイズ分のデータ(圧縮イメージ)のうちの未処理の一部が、DMAコントローラ24によってメモリ22内に確保された伸張処理用バッファに入力データとしてロードされるように、当該DMAコントローラ24によるDMA処理を起動(いわゆるDMAキック)する(ステップS26)。ここで上記加工データサイズ分のデータは、フラッシュメモリ23に保存されているブロック保存用データ中のブロック加工データBPDiである。
【0075】
次に伸張処理部220は、先行するDMAキックにより既に伸張処理用バッファにロードされている入力データがあれば、当該既にロードされている入力データを伸張する伸張処理を行う(ステップS27)。
【0076】
伸張処理部220は、伸張後のデータ、つまりブロックBiの元のイメージの一部を、メモリ22の対応する展開先に配置する(ステップS28)。このように伸張処理部220は、伸張処理用バッファに既にロードされている入力データをメモリ22の対応する展開先に展開する。
伸張処理部220は、ステップS26でキックしたDMAの完了を待つ(ステップS29)。
【0077】
次に、加工タイプが「非圧縮」の場合、伸張処理部220は、管理テーブルBTi内の加工データオフセットの示す位置を起点とする加工データサイズ分の非圧縮データ(ブロック加工データBPDi)を、管理テーブルBTi内の展開データオフセットの示す位置から始まる展開データサイズ分のメモリ22の領域に、DMAコントローラ24によるDMA処理で取得する(ステップS30)
次に、加工タイプが「0データ」の場合、伸張処理部220は、管理テーブルBTi内の展開データオフセットの示す位置から始まる展開データサイズ分のメモリ22の領域に“0”を書き込む(ステップS31)。
加工データ展開部200-0〜200-3は、全てのブロックBi(0〜7)を展開し終えると、展開処理を終了する。
【0078】
このように、第1の実施形態によれば、元データORGDをブロックBiを単位に分割して管理し、各ブロックBiの加工タイプ(具体的には、「圧縮」、「非圧縮」または「0データ」のいずれであるか)やデータのオフセット、サイズの情報を、管理テーブルMTiで管理することにより、複数のプロセッサ21-j(によって実現される複数の加工データ展開部200-j)で展開処理を容易に並列に実施して、元データORGDをメモリ22上に復元する仕組みを実現することができる。しかも、ブロックBi毎の管理テーブルMTiは、必要な情報が少ないため極めて小さなサイズで済み、データ全体の圧縮率には影響を与えない。また、ブロック毎にデータの内容の加工タイプを「圧縮」、「非圧縮」または「0データ」のいずれかに設定することにより、ブロック毎に効率的なデータの展開処理で対処できる。
【0079】
次に、上述の仕組みにより、図9に示す管理テーブル群で表される保存用加工データSTRPDから元データORGDを復元(展開)する過程について、具体型を挙げて説明する。ここでは、説明の簡略化のために、上述の仕組みにおいて、次のような3つの条件が適用されるものとする。
【0080】
条件1:展開処理は、時系列で複数のブロック展開処理に分割して実行される。
条件2:各ブロック展開処理において複数のプロセッサ21-j(加工データ展開部200-j)は、それぞれ未処理の1個のブロックBiを展開する。この複数のプロセッサ21-jによって同時にブロック展開処理が実行されることになる、プロセッサ数と同数のブロックは、前述のようにブロックグループと呼ばれる。
条件3:全てのブロックBiの展開処理が終了するまで、ブロック展開処理が繰り返される。
【0081】
また、上記各ブロック展開処理においてブロックグループを処理するために必要な所要時間は以下の要領で概算される。
【0082】
ブロックグループ全体のプロセッサ所要時間には、ブロックグループに含まれるブロックのうち最大のプロセッサ所要時間が採用される。ここでは、各プロセッサ21-jが独立して動作することを前提としている。
【0083】
ブロックグループ全体のDMA所要時間には、ブロックグループに含まれるブロックそれぞれのDMA所要時間の合計が採用される。その理由は、複数のプロセッサ21-jは、独立して並列に処理を実行できるのに対し、DMAを実行するための転送路となるバス帯域等の資源は、各プロセッサ21-jで共用され、各プロセッサ21-jからのDMA要求を同時に実行できないからである。
【0084】
各プロセッサ21-jの処理とDMA処理とは並列に実行可能である。このため、ブロックグループの処理に必要な所要時間を、上述のように算出される、ブロックグループ全体のプロセッサ所要時間とブロックグループ全体のDMA所要時間のうち大きいほうの値とすることができる。
【0085】
上述の3つの条件が適用される場合、プロセッサ数が4である第1の実施形態では、まず、最初にブロックB0〜B3が1つのブロックグループ(第1のブロックグループと称する)としてプロセッサ21-0〜21-3によって並行して処理される。即ち、ブロックB0〜B3が、それぞれプロセッサ21-0〜21-3に同時に割り当てられて、ブロック展開処理される。
【0086】
ブロックB0〜B3を処理するのに必要なデータをDMAで取得するための所要時間の合計は、図9の管理テーブル群から明らかなように、440(160+160+80+40)である。一方、ブロックB0〜B3を処理するのに必要なプロセッサ所要時間の最大値は、ブロックB2を処理するのに必要なプロセッサ所要時間であり、280である。したがって、プロセッサ21-0〜21-3がそれぞれ最初のブロックB0〜B3のブロック展開処理を実行している間は、DMAが処理のボトルネックになる傾向となり、当該ブロックB0〜B3の処理(第1のブロックグループの処理)が終了するまでの所要時間は440となる。
【0087】
次に、残りのブロックB4〜B7が1つのブロックグループ(第2のブロックグループと称する)としてプロセッサ21-0〜21-3によって並行して処理されるものとする。即ち、ブロックB4〜B7が、それぞれプロセッサ21-0〜21-3に同時に割り当てられて、ブロック展開処理されるものとする。
【0088】
ブロックB4〜B7を処理するのに必要なデータをDMAで取得する所要時間(DMA所要時間)の合計は、図9の管理テーブル群から明らかなように、80(60+20+0+0)である。一方、ブロックB4〜B7を処理するのに必要なプロセッサ所要時間の最大値は、ブロックB5を処理するのに必要なプロセッサ所要時間であり、300である。したがって、740それぞれブロックB4〜B7のブロック展開処理を実行している間は、ブロックB5のプロセッサ処理がボトルネックになる傾向となり、当該ブロックB4〜B7の処理(第2のブロックグループの処理)が終了するまで所要時間は300となる。
【0089】
このように、第1の実施形態において、上述した順番でブロックB0〜B7の展開処理が実行された場合、最初の4ブロックB0〜B3の処理に時間440を要し、次の4ブロックB4〜B7の処理に時間300を要する。このため、ブロックB0〜B7の展開処理に合計で時間740(440+300)が必要となる。但し、実際には、プロセッサ21-0〜21-3がブロックB0〜B3から次のブロックB4〜B7へと処理を移すときに同期を取る必要がないので、上記のような単純な合計とはなるわけではない。
【0090】
ここで、ブロックの処理の順番を変更した場合について検証する。例として、最初にブロックB0,B2,B5,B6をそれぞれ同時にプロセッサ21-0〜21-3で処理し、次に残りのブロックB1,B3,B4,B7をそれぞれ同時にプロセッサ21-0〜21-3で処理するものとする。
【0091】
ブロックB0,B2,B5,B6のDMA所要時間の合計は、260(160+80+20+0)であり、当該ブロックB0,B2,B5,B6のプロセッサ所要時間の最大値はブロックB5を処理するのに必要なプロセッサ所要時間であり、300である。したがって、ブロックB0,B2,B5,B6の処理が終了するまでの所要時間は300と概算できる。
【0092】
一方、ブロックB1,B3,B4,B7のDMA所要時間の合計は、260(160+60+40+0)であり、当該ブロックB1,B3,B4,B7のプロセッサ所要時間の最大値はブロックB3を処理するのに必要なプロセッサ所要時間であり、240である。したがって、ブロックB1,B3,B4,B7のブロックの処理が終了するまでの所要時間時間は260と概算できる。
【0093】
このように、ブロックの処理の順番を変更するならば、全てのブロックB0〜B7の展開処理に必要な時間は560(300+260)となり、処理時間の短縮が実現できる。
【0094】
[第2の実施形態]
そこで、ブロック処理の順番の変更を実現する第2の実施形態について、図1、図3及び図4のブロック図を援用して説明する。第2の実施形態の特徴は、DMA所要時間とプロセッサ所要時間とのバランスを考慮して、保存用加工データSTRPDにおけるブロックの配置を決定する、つまりブロック処理の順番を決定する点にある。
【0095】
第2の実施形態では、図5のフローチャートにおけるブロック加工タイプを調整するブロック調整処理(ステップS5)で調整がなされなかった場合(ステップS6のNo)、保存用加工データSTRPDにおけるブロックの配置を決定するためのブロック配置決定処理が、主としてブロック配置決定部150によって行われる(ステップS7)。このブロック配置決定処理の手順について、対象となるブロックが図8に示すブロックB0〜B7の8ブロックである場合を例に、図11のフローチャートを参照して説明する。
【0096】
管理テーブル作成・更新部160は、メモリ22内に新しい管理テーブル用の空の領域(新規管理テーブル領域)を確保する(ステップS41)。
するとブロック配置決定部150は、全てのブロックB0〜B7について、管理テーブル作成・更新部160と協調して後述するステップS43〜S45を繰り返し実行する(ステップS42)。
【0097】
まずブロック配置決定部150は、既に作成されている管理テーブルMT0〜MT7(図9参照)に基づいて、まだ選択されていないブロックのうちプロセッサ所要時間が最大のブロックを1つ選択する(ステップS43)。図9に示す管理テーブルMT0〜MT7の例では、1回目のステップS43で、ブロックB5が選択される。
【0098】
次にブロック配置決定部150は、選択されたブロックB5を含む、プロセッサ21-0〜21-3の数と同数のブロック(つまり4ブロック)を選択して、ブロックグループを作成する(ステップS44)。前述したように、ブロックグループは、プロセッサ21-0〜21-3が並行して展開処理を実行するブロックの集合である。特に第2の実施形態では、ブロックグループは、プロセッサ21-0〜21-3が当該ブロックグループ内のブロックを並列に展開処理すればリソースの無駄が少なく効率良く処理が進むことが予測されるブロックの組み合わせである。第2の実施形態では、残りのブロックの選択基準は以下の通りである。
【0099】
c1)ブロックグループ内の全ブロックのDMA所要時間の合計が、ステップS43で選択されたブロック(ここではブロックB5)のプロセッサ所要時間を超えないような組み合わせ
c2)選択基準c1に合致する組み合わせの候補が複数ある場合は、それらの組み合わせの候補のうち、ステップS43で選択されたブロックを除く残りのブロックを比較して、最もプロセッサ所要時間が大きいブロックが含まれる組み合わせ
c3)選択基準c2に合致する組み合わせの候補が複数ある場合は、それらの組み合わせの候補のうちDMA所要時間の合計が最大となる組み合わせ
c4)選択基準c1に合致する組み合わせの候補がない場合は、DMA所要時間の合計が最小となるブロックの組み合わせ
図9に示す管理テーブルMT0〜MT7の例では、1回目のステップS44で、ブロックB0,B2,B3,B5からなるブロックグループが作成される。このブロックグループは、DMA所要時間の合計が300(=160+80+40+20)であって、1回目のステップS43で選択されたブロックB5のプロセッサ所要時間300を超えず、更にプロセッサ所要時間がブロックB5を除いて最大(280)のブロックB2を含んでいる。なお第2の実施形態における2回目のステップ44では、残りのブロックの数が4であるため選択の余地がなく、残りの4個のブロックB1,B4,B6,B7からなるブロックグループが形成される。
【0100】
管理テーブル作成・更新部160は、ステップ44でブロック配置決定部150によってブロックグループが作成される毎に、当該作成されたブロックグループに含まれているブロック(ここでは4個のブロック)の管理テーブルを、ステップS41で確保された新規管理テーブル領域内の空き部分の先頭位置から順に配置する(ステップ45)。第2の実施形態では、第1の実施形態と同様に、管理テーブルの配置順に対応するブロックの展開処理が行われる。このため、ブロック配置決定部150によって作成されるブロックグループの順に、当該ブロックグループに属するブロック(4ブロック)が並列に別々のプロセッサ(プロセッサ21-0〜21-3)で処理されることが期待できる。
【0101】
管理テーブル作成・更新部160は、全ブロックB0〜B7について対応する管理テーブルMT0〜MT3を新規管理テーブル領域に配置する処理(ステップ44)を実行し終えると(ステップS42)、完成した新しい管理テーブル群を正規の管理テーブル群とする(ステップS46)。なお、新規管理テーブル領域に新しい管理テーブル群を配置する代わりに、既に作成されている管理テーブル群(ここでは図9に示す管理テーブルMT0〜MT7)に、処理順序を示す処理順序フィールドを付加し、当該処理順序フィールドの情報を決定された配置順に更新してもよい。
【0102】
以上のブロック配置決定処理の結果、新たな管理テーブルMT0〜MT7が図12に示すように新規管理テーブル領域に配置される。このことは、図9に示す管理テーブルMT0〜MT7の配置が、図12のように変更されたことと等価である。
【0103】
第2の実施形態では、図12に示す管理テーブルMT0〜MT7の配置順に従って、まずブロックB0,B2,B3,B5が、それぞれ同時にプロセッサ21-0〜21-3(加工データ展開部200-0〜200-3)で処理され、次にブロックB1,B4,B6,B7がそれぞれ同時にプロセッサ21-0〜21-3で処理されるものとする。この場合のブロックグループを処理するために必要な所要時間について述べる。
【0104】
まず、ブロックB0,B2,B3,B5のDMA所要時間の合計は、300(160+80+40+20)であり、当該ブロックB0,B2,B3,B5のプロセッサ所要時間の最大値は、ブロックB5を処理するのに必要なプロセッサ所要時間であり、300である。したがって、ブロックB0,B2,B3,B5の処理が終了するまでの所要時間は300と概算できる。
【0105】
一方、ブロックB1,B4,B6,B7のDMA所要時間の合計は、220(160+60+0+0)であり、当該ブロックB1,B4,B6,B7のプロセッサ所要時間の最大値は、ブロックB4を処理するのに必要なプロセッサ所要時間であり、220である。したがって、ブロックB1,B4,B6,B7の処理が終了するまでの所要時間は220と概算できる。
【0106】
これにより、第2の実施形態において、全てのブロックB0〜B7の展開処理に必要な時間は520(300+220)となり、管理テーブルMT0〜MT7の配置(つまりブロックの処理の順番)を変更しない場合の処理時間見込み740よりも短縮できる。つまり第2の実施形態によれば、ブロック処理の順番を変更することにより、プロセッサ処理とDMA処理とのバランスを図り、ブロック展開処理全体の処理速度を向上することができる。
【0107】
以上の説明では、電子機器20において加工データ展開処理を並列に実行可能なプロセッサの数が、計算機10における加工データ作成処理の実行段階で予め分かっていることを想定している。もし、加工データ展開処理を並列に実行可能なプロセッサの数が、加工データ作成処理の実行段階で分からない場合、計算機10のプロセッサ11(加工データ作成部100)が、次のように管理テーブル群を用意すればよい。
【0108】
まず、電子機器20に搭載され得るプロセッサの数の可能性はせいぜい数通りである。そこで、この想定される数通りのプロセッサ数のそれぞれについて、最適な処理順序を指定するような配置の管理テーブル群を用意するならば、対応する保存用加工データSTRPDをプロセッサ数に対して汎用的なデータとすることも可能である。
【0109】
管理テーブルのサイズは十分小さく、用意すべき数も少ないので保存用加工データSTRPD全体のサイズに及ぼす影響は少ない。電子機器20のプロセッサ21-0〜21-3は、上述の汎用的な保存用加工データSTRPDの展開処理時において、並列に実行可能なプロセッサ数を意識して、保存用加工データSTRPDから適切な管理テーブルを取得すればよい。なお、想定される数通りのプロセッサ数のそれぞれについて、管理テーブル群を用意する代わりに、ブロックの処理順序を示す情報を用意してもよい。
【0110】
[第3の実施形態]
次に、第3の実施形態について、図1、図3及び図4のブロック図を援用して説明する。
【0111】
まず、加工タイプが「圧縮」のブロック及び「非圧縮」のブロックのそれぞれの展開処理に要する時間について比較検討する。加工タイプが「圧縮」のブロックを展開する場合、例えば図9からも明らかなように、プロセッサ所要時間は多いものの、DMA所要時間は比較的少ない。これに対し、加工タイプが「非圧縮」のブロックを展開する場合、プロセッサ所要時間はほぼ0であるものの、DMA所要時間は多い。
【0112】
そこで第3の実施形態の特徴は、全ブロックの展開処理に関し、プロセッサ処理がネック(以下、プロセッサ所要時間ネックと称する)の場合は、加工タイプが「圧縮」のブロックの数を減らして「非圧縮」のブロックの数を増やし、DMA処理がネック(以下、DMA所要時間ネックと称する)の場合は、「非圧縮の」ブロックの数を減らして「圧縮」のブロックの数を増やすためのブロック調整処理(図5ステップS5)によって、DMA所要時間とプロセッサ所要時間とのバランスを第2の実施形態よりも更に取る点にある。これにより、プロセッサ所要時間ネック及びDMA所要時間ネックを解消して、全体の処理を高速化することが期待される。
【0113】
次に、第3の実施形態における調整処理の手順について、対象となるブロックが図8に示すブロックB0〜B7の8ブロックである場合を例に説明する。
【0114】
前述したように、処理時間計算部130は、ブロックB0〜B7それぞれのプロセッサ所要時間及びDMA所要時間を見積る(図5ステップS4)。このステップS4において管理テーブル作成・更新部160は、処理時間計算部130によるブロック毎のプロセッサ所要時間及びDMA所要時間の見積もり結果に基づいて管理テーブルMT0〜MT7を更新する。
【0115】
ブロック調整部140は、ステップS4で見積もられた、ブロックB0〜B7それぞれのプロセッサ所要時間及びDMA所要時間に基づいて、当該ブロックB0〜B7の加工タイプまたはブロックサイズを調整するためのブロック調整処理を実行する(図5ステップS5)。このブロック調整処理では、ブロックB0〜B7それぞれのプロセッサ所要時間及びDMA所要時間に基づいて、調整が必要かが判定される。
【0116】
調整が必要かの判定には、圧縮率の閾値Xが用いられる。この閾値X(%)は、例えば0≦X≦100の範囲内で適宜変更される。また、プロセッサ所要時間またはDMA所要時間いずれがネックとなっているかを判定するため2つの閾値、例えば3/2及び2/3も用いられる。また、プロセッサ所要時間またはDMA所要時間いずれがネックとなっているかの判定に用いられるパラメータYも用いられる。
【0117】
パラメータYは、A(第1の値)を
A=全ブロックのプロセッサ所要時間の合計/プロセッサ数
とし、B(第2の値)を
B=全ブロックのDMA所要時間の合計
とすると、
Y=A/B
で表される。
【0118】
Aは全ブロックを処理するのに必要な、1プロセッサ当たりの平均プロセッサ所要時間であることから、パラメータY(=A/B)は、プロセッサ所要時間ネックの度合いが強いほど大きくなり、DMA所要時間ネックの度合いが強いほど小さくなる。
【0119】
以下、このブロック調整処理の手順について、図13のフローチャートを参照して説明する。
まずブロック調整部140は、プロセッサ所要時間ネックであるかを判定するために、パラメータY(=A/B)が第1の閾値3/2よりも大きいかを判定する(ステップS51)。もし、Y>3/2であるならば(ステップS51のYes)、ブロック調整部140はプロセッサ所要時間ネックと判定する。
【0120】
するとブロック調整部140は、プロセッサ所要時間ネックを解消するために、圧縮率の閾値X(つまりブロック加工タイプを「圧縮」または「非圧縮」のいずれとするかを決定するのに用いられる閾値X)を、一定値、例えば10(%)だけ減らす(ステップS52)。これにより、ブロック加工タイプが「非圧縮」のブロックが増えて、1プロセッサ当たりの平均プロセッサ所要時間を減らすこと、つまりプロセッサ所要時間ネックを解消することが可能となる。なお、第1の閾値は1より大きければよく、3/2に限らない。
【0121】
ステップS52が実行されると、図5のフローチャートに示されるブロック調整処理(ステップS5)は終了し、ステップS6に進む。ステップS6では、ブロック調整処理で調整が行われたかが判定され、この例のように調整が行われた場合(ステップS6のYes)、加工データ作成処理がステップS1から再び開始される。このことは、ステップS52から図5のフローチャートのステップS1に戻ることと等価である。
【0122】
但し、Y>3/2であっても(ステップS51のYes)、圧縮率の閾値Xが既に0(%)に達しているならば(ステップS53のYes)、ブロック調整部140は、これ以上の閾値Xの減調整はできないと判断する。この場合、ブロック調整処理(ステップS5)は終了し、ステップS6に進む。この例のように調整が行われなかった場合(ステップS6のNo)、ステップS6からステップS7に進む。このことは、ステップS53から図5のフローチャートのステップS7に進むことと等価である。
【0123】
一方、Y>3/2でないならば(ステップS51のNo)、ブロック調整部140はプロセッサ所要時間ネックではないと判定する。この場合、ブロック調整部140は、DMA所要時間ネックであるかを判定するために、パラメータY(=A/B)が第2の閾値2/3よりも小さいかを判定する(ステップS54)。もし、Y<2/3であるならば(ステップS54のYes)、ブロック調整部140はDMA所要時間ネックと判定する。
【0124】
するとブロック調整部140は、DMA所要時間ネックを解消するために、圧縮率の閾値Xを、一定値、例えば10(%)だけ増やす(ステップS55)。これにより、ブロック加工タイプが「圧縮」のブロックが増えて、DMA所要時間の合計を減らすこと、つまりDMA所要時間ネックを解消することが可能となる。なお、第2の閾値は1より小さければよく、3/2に限らない。
【0125】
ステップS55が実行されると、図5のフローチャートに示されるブロック調整処理(ステップS5)は終了し、ステップS6に進む。ステップS6では、ブロック調整処理で調整が行われたかが判定され、この例のように調整が行われた場合(ステップS6のYes)、加工データ作成処理がステップS1から再び開始される。このことは、ステップS55から図5のフローチャートのステップS1に戻ることと等価である。
【0126】
但し、Y<2/3であっても(ステップS54のYes)、閾値Xが既に100(%)に達しているならば(ステップS56のYes)、これ以上の閾値Xの増調整はできないことから、ブロック調整部140は、ブロックサイズを現在よりも小さくなるように調整、例えば現在の1/2に調整する(ステップS57)。これにより、0データのブロックが増えてDMA所要時間が減り、DMA所要時間ネックを解消することが期待される。
ステップS57が実行されると、ブロック調整処理(ステップS5)は終了し、ステップS6に進む。そして、加工データ作成処理がステップS1から再び開始される。このことは、ステップS57から図5のフローチャートのステップS1に戻ることと等価である。
【0127】
一方、Y<2/3でないならば(ステップS54のNo)、ブロック調整部140はプロセッサ所要時間ネックでも、DMA所要時間ネックでもなく、調整は不要であると判定する。この場合、ブロック調整処理(ステップS5)は終了し、ステップS6に進み、当該ステップS6からステップS7に進む。このことは、ステップS54から図5のフローチャートのステップS7に進むことと等価である。
【0128】
なお、ステップS52,S55またはS57から図5のフローチャートのステップS1に戻る前に、一旦ステップS7乃至S10を実行して、仮の保存用加工データを作成しておくようにしても構わない。この場合、仮の保存用加工データに含まれている各ブロックのプロセッサ所要時間とDMA所要時間とを使用して、前述のように展開時間の見積もりを算出することができる。これにより、圧縮率の閾値Xまたはブロックサイズを変更した過程で作成される幾つかの仮の保存用加工データと、当該幾つかの仮の保存用加工データのそれぞれに対応する展開時間の見積りが結果として揃えられる。この中から、展開時間の見積もりが最小の仮の保存用加工データを、正規の保存用加工データSTRPDとして決定することもできる。より詳細に述べるならば、仮の保存用加工データ毎に取得される、A及びBの最大値を比較して、その中の最大値が最小の仮の保存用加工データを、正規の保存用加工データSTRPDとして決定することもできる。
【0129】
第3の実施形態において、DMA処理とプロセッサ処理のオーバラップが効率的に行われない場合、ブロックのサイズを小さく変更してもよい。オーバラップが効率的に行われない状況は、例えば以下の方法で判定できる。
【0130】
d1)処理時間計算部130は、各ブロックグループの実行時間の見積もりを算出する。ブロックグループの実行時間の見積もりは、当該ブロックグループに属する全てのブロックのプロセッサ所要時間の最大値と、当該ブロックグループに属する全てのブロックのDMA所要時間の合計値のうち、大きい方の値となる。
【0131】
d2)処理時間計算部130は、全ブロックグループのそれぞれの実行時間の見積もりの合計を、実実行時間見積もり(第3の値)Cとする。
d3)処理時間計算部130は、前述したA、つまり全ブロックのプロセッサ所要時間の合計をプロセッサ数で割った値Aと、前述したB、つまり全ブロックのDMA所要時間の合計とを比較し、大きい方の値を理想的な実行時間(第4の値)Dとする。
【0132】
d4)ブロック調整部140は、実実行時間見積もりCと理想的な実行時間Dとを比較し、理想的な実行時間Dと実実行時間見積もりCとの差分(D−C)または理想的な実行時間Dの実実行時間見積もりCに対する比率(D/C)が所定の閾値THよりも大きい場合は、オーバラップが効率的に行われていないと判断する。
【0133】
オーバラップが効率的に行われていない状態を検出した場合、ブロック調整部140はブロックサイズを現在よりも小さく設定する。そこで、この状態で加工データ作成処理がステップS1から再び開始される、つまりデータ加工がやり直されるようにしてもよい。ブロックサイズが小さく設定されることで、ブロックの組み合わせの融通が利きやすくなり、調整がより効率的にできることが期待される。
【0134】
また、オーバラップが効率的に行われていない状態(以下、特定状態と称する)が検出され、且つ上記d3)での比較の結果、Bが理想的な実行時間Dと決定された場合、つまり上記特定状態の要因としてDMA所要時間の合計Bの方が大きかった場合、ブロック調整部140はDMA所要時間ネックと判定する。これに対し、上記特定状態が検出され、且つAが理想的な実行時間Dと決定された場合、つまり上記特定状態の要因としてプロセッサ所要時間の合計をプロセッサ数で割った値Aの方が大きかった場合、ブロック調整部140はプロセッサ所要時間ネックと判定する。
【0135】
DMA所要時間ネックの場合、ブロック調整部140は、特定バイト列のブロックのデータ、例えば加工タイプが「0データ」のブロックのデータ(全て“0”の)が更に小さなブロックサイズで分割されるように調整する。これにより、プロセッサ所要時間の融通が利きやすくなり、オーバラップの効率の悪さが改善することが期待される。
【0136】
一方、プロセッサ所要時間ネックの場合、ブロック調整部140は、加工タイプが「圧縮」のブロックのデータが更に小さなブロックサイズで分割されるように調整する。これにより、DMA所要時間の融通が利きやすくなり、オーバラップの効率の悪さが改善することが期待される。
【0137】
上述の説明から明らかなように、DMA所要時間ネックまたはプロセッサ所要時間ネックのためにDMA処理とプロセッサ処理のオーバラップが効率的に行われない状態は、A/Bの値が所定の範囲から外れている状態であるといえる。
【0138】
次に、このような調整の具体例を、DMA所要時間ネックの場合について説明する。
電子機器20での展開処理に使用可能なプロセッサ数がプロセッサ21-0〜20-3の4で、対象データのブロック数がブロックB0〜B19の20で、その内訳が、
ブロックB0〜B11:0データ、プロセッサ所要時間=20
ブロックB12〜B19:非圧縮、DMA所要時間=10
のようになっているものとする。
【0139】
これらのブロックの最適なブロックグループ分けによる実行順序割り当て及び実行時間(の見積もり)は、例えば、
ブロックグループ(B0,B1,B12,B13),実行時間=20
ブロックグループ(B2,B3,B14,B15),実行時間=20
ブロックグループ(B4,B5,B16,B17),実行時間=20
ブロックグループ(B6,B7,B18,B19),実行時間=20
ブロックグループ(B8,B9,B10,B11),実行時間=20
であり、全ブロックグループの実行時間の合計(つまり実実行時間見積もり)Cは100である。
【0140】
また、A,Bは
A=全ブロックのプロセッサ所要時間の合計/プロセッサ数
=20×12/4
=60
B=全ブロックのDMA所要時間の合計
=10×8
=80
となる。
【0141】
この場合、A<Bであることから、ブロック調整部140はDMA処理時間ネックと判定する。そこでブロック調整部140は、ブロックB0〜B11のデータ、つまり0データが更に小さなブロックサイズ、例えば現在の半分のブロックサイズで分割されるように調整する。ブロックB0〜B11をそれぞれ半分に分割した後のブロックが、ブロックB0′,B0″〜B11′,B11″であるとすると、
ブロックB0′〜B11′:0データ、プロセッサ所要時間=10
ブロックB0″〜B11″:0データ、プロセッサ所要時間=10
ブロックB12−B19:非圧縮、DMA所要時間=10
という構成にすることができる。
【0142】
これらのブロックの最適なブロックグループ分けによる実行順序割り当て及び実行時間は、例えば、
ブロックグループ(B0′,B1′,B2′,B12),実行時間=10
ブロックグループ(B3′,B4′,B5′,B13),実行時間=10
ブロックグループ(B6′,B7′,B8′,B14),実行時間=10
ブロックグループ(B9′,B10′,B11′,B15),実行時間=10
ブロックグループ(B0″,B1″,B2″,B16),実行時間=10
ブロックグループ(B3″,B4″,B5″,B17),実行時間=10
ブロックグループ(B6″,B7″,B8″,B18),実行時間=10
ブロックグループ(B9″,B10″,B11″,B19),実行時間=10
である。
この場合、全ブロックグループの実行時間の合計(実実行時間見積もり)Cは80となり、時間短縮が実現できる。
【0143】
このように第3の実施形態によれば、ブロック毎にデータの内容の加工タイプを変更できるようにすることにより、ブロック毎に効率的なデータの展開処理で対処でき、更にブロックサイズも変更できるようにすることにより、DMA所要時間とプロセッサ所要時間とのバランスを第2の実施形態よりも更に取ることができ、ブロック展開処理全体の高速化を図ことができる。
【0144】
[第4の実施形態]
次に、第4の実施形態について、図1、図3及び図4のブロック図を援用して説明する。
第1乃至第3の実施形態では、保存用加工データSTRPDに含まれている管理テーブルの配置順にブロックの展開処理が実行される。つまり第1乃至第3の実施形態では、ブロック展開処理におけるブロックの処理順序は、計算機10のプロセッサ11(加工データ作成部100)によって決定されることを前提としている。しかし、ブロックの処理順序が、電子機器20のプロセッサ21-0〜21-3(加工データ展開部200-0〜200-3)によって決定されても構わない。第4の実施形態の特徴は、プロセッサ21-0〜21-3がブロック展開処理におけるブロックの処理順序を決定することにある。
【0145】
以下、電子機器20のプロセッサ21-j(j=0〜3)が処理順序決定手段として機能して、ブロック展開処理におけるブロックの処理順序を決定するためのブロック処理順序決定処理の手順について、図14のフローチャートを参照して説明する。
【0146】
プロセッサ21-j(加工データ展開部200-jのプロセッサ21-j)は、次に処理すべきブロックグループが既に決定されているかを、電子機器20内の他のプロセッサとの通信によって確認する(ステップS61)。もし、処理すべきブロックグループが既に決定されているならば(ステップS61のYes)、プロセッサ21-jは、当該ブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する(ステップS62)。
【0147】
これに対し、まだ次に処理すべきブロックグループが決定されていない場合(ステップS61のNo)、プロセッサ21-jは、既に他のプロセッサが当該次に処理すべきブロックグループを決定する作業を行っているかを、当該他のプロセッサとの通信によって確認する(ステップS63)。もし、既に他のプロセッサによって作業が開始されている場合(ステップS63のYes)、プロセッサ21-jは、当該作業が完了して次に処理すべきブロックグループが決定されるのを待つ(ステップS64)。そしてプロセッサ21-jは、次に処理すべきブロックグループの決定後にステップS62に進み、当該決定されたブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する。
【0148】
一方、次に処理すべきブロックグループを決定する作業が他のプロセッサによって開始されていない場合(ステップS63のNo)、プロセッサ21-jは、図11のフローチャートのステップS43〜S45の手順で、次に処理すべきブロックグループを決定する(ステップS65)。次にプロセッサ21-jはステップS62に進み、自身が決定したブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する。
【0149】
第4の実施形態によれば、電子機器20内で実行されるブロック展開処理で、ブロックの処理順序が決定される。このため、ブロックの処理順序の決定に要する処理時間がオーバヘッドとして余分にかかる反面、電子機器20で適用される加工データ展開部200-j(加工データ展開プログラムEP)をプロセッサ数に依存しない汎用性のあるものとすることができる。
【0150】
以上、電子機器20におけるブロック展開処理に複数のプロセッサ(ここでは4つのプロセッサ21-0〜21-3)が使用されることを前提として、ブロック展開処理の高速化を図るようにした第1乃至第4の実施形態について説明した。しかし、ブロック展開処理に、必ずしも複数のプロセッサが使用される必要はない。つまり、単一のプロセッサのみがブロック展開処理を実行する場合でも、以下に述べるように高速化は可能である。
【0151】
前述の通り、加工タイプが「非圧縮」のブロックに対する展開処理にはDMA処理で対応可能である。一方、加工タイプが「0データ」のブロックに対する展開処理にはプロセッサ処理で対応可能である。したがって、プロセッサ処理とDMA処理とは並列に実行可能という観点から、単一のプロセッサでも、加工タイプが「非圧縮」のブロックと加工タイプが「0データ」のブロックのそれぞれの展開処理を並列に実行することができ、展開処理を高速化することができる。
【0152】
次に、「非圧縮」のブロックの数と「0データ」のブロックの数のバランスについて考察する。
「非圧縮」のブロックの展開処理に必要なDMA所要時間と、「0データ」のブロックの展開処理に必要な(つまり「0データ」をメモリ22に書き込むのに必要な)プロセッサ所要時間とは、いずれも、ブロックサイズに比例すると想定できる。そのため、「非圧縮」のブロックと「0データ」のブロックの単位サイズ当たりの展開処理に要する時間の比がa:bであるとすると、各ブロックのサイズが固定長の場合、「非圧縮」のブロックの数と「0データ」のブロックの数の比を、b:aにすることによって、双方の処理を完全にオーバラップさせることができる。
【0153】
したがって、保存用加工データSTRPDの作成段階において、「0データ」のブロックの数がn個であれば、「0データ」以外の残りのブロックのうち、圧縮率が低い方からn×(b/a)個のブロックの加工タイプを「非圧縮」とすればよい。
【0154】
以上説明した少なくとも1つの実施形態によれば、メモリ上にデータを高速に復元することができる、データ加工・復元システム、データ加工機能を持つ電子機器、及びデータ復元機能を持つ電子機器を提供できる。
【0155】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0156】
10…計算機、11,21-0〜21-3…プロセッサ、12,22…メモリ、13…HDD(第1の記憶手段)、14,24…DMAコントローラ、15,25…通信機構、20…電子機器、23…フラッシュメモリ(第2の記憶手段)、30…ネットワーク、100…加工データ作成部、110…ブロック加工タイプ決定部(変換タイプ決定手段)、120…圧縮処理部、130…処理時間計算部、140…ブロック調整部、150…ブロック配置決定部(処理順序決定手段)、160…管理テーブル作成・更新部、170…ブロック分割部、200-0〜200-3…加工データ展開部、210…管理テーブルアクセス部、220…伸張処理部(復元手段)、PP…加工データ作成プログラム、EP…加工データ展開プログラム、ORGD…元データ、STRPD…保存用加工データ、EXTD…展開データ、B0〜B7,BN…ブロック、MT0〜MT7,MTN…管理テーブル、BPD0〜BPD5…ブロック加工データ。
【技術分野】
【0001】
本発明の実施形態は、データ加工・復元システム及びデータ加工・復元方法に関する。
【背景技術】
【0002】
近年、AV機器等の電子機器の高機能化が進み、当該電子機器における各種の制御に組み込みOSが使用されるようになってきている。組み込みOSであっても、当該組み込みOSの初期化にはある程度の処理時間が必要である。このため、組み込みOSを適用する電子機器は、組み込みOSを適用しない電子機器に比べて起動時間が余計にかかる。そこで、組み込みOSの高速起動が要求されている。
【0003】
組み込みOSを高速起動するために、当該組み込みOSを、当該組み込みOSのスナップショットイメージから起動する手法が知られている。しかし、スナップショットイメージのサイズは一般に大きいため、当該スナップショットイメージを、例えば電子機器の外部から当該電子機器のメモリに高速にロードすることは難しい。
【0004】
一方、電子機器のメモリへの高速データロードのために、データを圧縮し、この圧縮されたデータを用いることが知られている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−066142号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、組み込みOSのスナップショットイメージ(以下、元データと称する)を圧縮し、この圧縮されたスナップショット(以下、保存用加工データと称する)を例えば電子機器内の不揮発性記憶装置から当該電子機器内のメモリにロードすることが考えられる。しかし、ロードされた保存用加工データを利用可能とする(ここでは、組み込みOSを起動する)ためには、当該保存用加工データから元データをメモリ上に復元するための伸張処理(つまり展開処理)が必要となる。もし、電子機器の更なる高機能化に伴い元データ(組み込みOSのスナップショットイメージ)のサイズがより大きくなるならば、展開処理に長時間を要する可能性がある。このため、展開処理の一層の高速化が要求される。このような要求は、組み込みOSのスナップショットイメージに限らず、元データの保存用加工データから当該元データを電子機器のメモリ上に復元する展開処理に共通に存在する。
【0007】
本発明が解決しようとする課題は、メモリ上にデータを高速に復元することができる、データ加工・復元システムデータ加工・復元方法を提供することにある。
【課題を解決するための手段】
【0008】
実施形態によれば、データ加工・復元システムは、第1の記憶手段と、ブロック分割手段と、管理テーブル作成手段と、加工手段と、第2の記憶手段と、並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段と、処理時間計算手段と、処理順序決定手段とを具備する。前記第1の記憶手段は、変換の対象となる元データを格納する。前記ブロック分割手段は、前記元データを複数のブロックに分割する。前記管理テーブル作成手段は、前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成する。前記加工手段は、前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成する。前記第2の記憶手段は、前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを保存する。前記複数の復元手段は、前記第2の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行する。前記処理時間計算手段は、前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もる。処理順序決定手段は、前記複数の復元手段によって実行されるべき前記ブロックの展開処理の処理順序を次のように決定する。処理順序決定手段は、前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定する。前記管理テーブル作成手段は、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定する。前記複数の復元手段は、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序に従って、対応するブロックの展開処理を実行する。
【図面の簡単な説明】
【0009】
【図1】第1の実施形態に係るデータ加工・復元システムの全体構成を示すブロック図。
【図2】第1の実施形態で適用される元データ、保存用加工データ及び展開データのデータ構造例を示す図。
【図3】図1に示す計算機内のプロセッサの機能構成を示すブロック図。
【図4】図1に示す電子機器内の各プロセッサの機能構成を示すブロック図。
【図5】第1の実施形態における加工データ作成処理の手順を示すフローチャート。
【図6】第1の実施形態における加工タイプ決定処理の手順を示すフローチャート。
【図7】第1の実施形態におけるブロック毎の加工タイプの決定結果と加工タイプの決定に用いられたブロック毎の状態とを対応付けて示す図。
【図8】第1の実施形態において、元データが複数のブロックに分割されている状態と、保存用加工データ内の管理テーブル及びブロック加工データの位置関係とを示す図。
【図9】第8に示す保存用加工データに含まれている管理テーブル群の例を示す図。
【図10】第1の実施形態における加工データ展開処理の手順を示すフローチャート。
【図11】第2の実施形態におけるブロック配置決定処理の手順を示すフローチャート。
【図12】ブロック配置決定処理後の管理テーブル群の例を示す図。
【図13】第3の実施形態におけるブロック調整処理の手順を示すフローチャート。
【図14】第4の実施形態におけるブロック処理順序決定処理の手順を示すフローチャート。
【発明を実施するための形態】
【0010】
以下、実施の形態につき図面を参照して説明する。
<用語の定義>
まず、実施形態で適用される用語の定義について説明する。
【0011】
a0)元データ
元データとは、後述する加工の対象となるデータである。
a1)展開データ
展開データとは、最終的に電子機器のメモリ上に配置される目的のデータイメージである。展開データは、元データに一致する。
【0012】
a2)ブロック
実施形態では、元データの領域は複数に分割される。それぞれの分割領域をブロックと呼ぶ。
【0013】
a3)加工
加工とは、各ブロックのデータを復元可能な方法で変換することである。この変換には、ブロック毎に異なったタイプの方法を使用することができる。具体的な変換のタイプとして、実施形態では、第1乃至第3の変換タイプが適用される。第1の変換タイプ、第2の変換タイプ及び第3の変換タイプを、それぞれ、「圧縮」、「非圧縮」及び「0データ」と呼ぶ。
【0014】
a3-1)圧縮:既存の圧縮アルゴリズムを用いて圧縮する手法である。
a3-2)非圧縮:変換を行わずに、元のデータをそのまま使用する手法である。
a3-3)0データ:ブロック内のデータが、予め定められたバイト列から構成されるとき、例えば全て0のとき適用され、変換後のデータを作成しない手法である。
また、変換後のブロックのデータをブロック加工データと呼ぶ。
【0015】
a4)保存用加工データ
保存用加工データとは、上記のブロック加工データを含み、元データ全体のイメージを復元できるような情報を持ったデータである。
【0016】
a5)展開
展開とは、保存用加工データから元データを復元してメモリ上に展開データとして配置する処理、またはブロック加工データからブロックのデータを復元してメモリ上に配置する処理を表す。
【0017】
展開処理(各ブロックに対する展開処理)は、上記第1乃至第3の変換タイプのそれぞれに対して、次のような処理に分けられる。なお、以下の説明では、変換タイプを加工タイプと称する。
【0018】
a5-1)圧縮データ展開処理:圧縮に使用された圧縮アルゴリズムに対応する伸張処理である。圧縮データ展開処理では、ブロックの圧縮データがDMA(ダイレクトメモリアクセス)で取得され、取得された圧縮データがプロセッサによって伸張される。但し、圧縮データのストリームの伸張処理は、全てのデータが揃うまで待たなくても、DMAが完了した一部のデータを利用して実行可能であり、伸張処理の実行と並行して残りのデータを取得するためのDMAを実行すること、つまりDMAと伸張処理とは並列に実行可能であるものとする。
【0019】
a5-2)非圧縮展開処理:保存用加工データに含まれるブロック加工データをそのままブロックに該当するメモリ領域にDMAでロードする処理である。
【0020】
a5-3)0データ展開処理:ブロックに該当するメモリ領域に、プロセッサが0を書く処理である。
【0021】
a6)ブロックグループ
実施形態では、展開処理が実行される電子機器は複数のプロセッサを備えており、当該複数のプロセッサが、それぞれブロックを単位に並行して展開処理を実行することを想定している。つまり複数のプロセッサの各々は、1ブロックずつ展開処理を実行する。この同時に展開処理が行われることになる、プロセッサ数と同数のブロックの集合をブロックグループと呼ぶ。また、1ブロックずつ実行される展開処理を、全ブロックの展開処理と区別するために、ブロック展開処理と呼ぶこともある。上記圧縮データ展開処理、非圧縮展開処理及び0データ展開処理は、ブロック単位に実行されることから、ブロック展開処理である。
【0022】
[第1の実施形態]
図1は第1の実施形態に係るデータ加工・復元システムの全体構成を示すブロック図である。
図1に示すデータ加工・復元システムは、データ加工機能を持つ電子機器、例えば計算機10と、データ復元機能を持つ、例えばAV機器のような電子機器20とから構成される。計算機10及び電子機器20は、例えばネットワーク30によって接続されているものとする。
【0023】
計算機10は、例えば、プロセッサ11、メモリ12、HDD13、DMAコントローラ14及び通信機構15を備えている。
プロセッサ11は、例えばHDD13に格納されている加工データ作成プログラムPPに従い、HDD13に格納されているデータ(元データ)を加工するための所定の加工データ作成処理を実行する。これによりプロセッサ11は、図3を参照して後述する加工データ作成部100として機能する。つまり計算機10は、データ加工機能を持つ電子機器である。
【0024】
メモリ12は、プロセッサ11による保存用加工データ作成のためのワークメモリ等に用いられる。HDD13は、加工データ作成プログラムPPを格納する、書き換え可能な不揮発性記憶装置である。HDD13には、保存用加工データ作成に用いられる元データも格納される。なお、HDD13に代えて、他の書き換え可能な不揮発性記憶装置、例えばフラッシュメモリを用いることも可能である。
DMAコントローラ14は、例えばHDD13からメモリ12へのデータ転送等を制御する。通信機構15は、計算機10と電子機器20を含む他の電子機器群との間で通信する。
【0025】
電子機器20は、例えば、4つのプロセッサ21-0〜21-3、メモリ22、フラッシュメモリ23、DMAコントローラ24及び通信機構25を備えている。
プロセッサ21-0〜21-3の性能は同等であるものとする。プロセッサ21-0〜21-3は、例えばフラッシュメモリ23に格納されている加工データ展開プログラムEPに従い、当該フラッシュメモリ23に格納されている保存用加工データから展開データを生成することにより当該展開データを元データとしてメモリ22上に復元するするための所定の加工データ展開処理を実行する。これによりプロセッサ21-0〜21-3は、それぞれ、図4を参照して後述する加工データ展開部200-0〜200-3として機能する。つまり電子機器20は、データ復元機能を持つ電子機器である。
【0026】
メモリ22は、プロセッサ21-0〜21-3による加工データ展開のためのワークメモリ等に用いられる。フラッシュメモリ23は、加工データ展開プログラムEPを格納する、書き換え可能な不揮発性記憶装置である。フラッシュメモリ23には、計算機10によって作成された保存用加工データも格納される。なお、フラッシュメモリ23に代えて、他の書き換え可能な不揮発性記憶装置、例えばHDDを用いることも可能である。
DMAコントローラ24は、例えばフラッシュメモリ23からメモリ22へのデータ転送等を制御する。通信機構25は、電子機器20と、計算機10等との間で通信する。
【0027】
図2は、元データORGD、保存用加工データSTRPD及び展開データEXTD及びのデータ構造例を示す。
元データORGDは、電子機器20のメモリ22の特定領域に展開されることを目的として用意されたデータである。第1の実施形態では、元データORGDは、組み込みOSのスナップショットイメージである。しかし、元データORGDが、組み込みOSのスナップショットイメージである必要はない。
【0028】
また第1の実施形態では、元データORGDは、HDD13に格納して用意されることを想定している。しかし、元データORGDが、例えば計算機10以外の電子機器によって用意されて、例えばネットワーク30を介して計算機10のメモリ12またはHDD13に転送されたものであっても構わない。また元データORGDが、可搬型の記憶媒体としての、例えばCDROMまたはUSBメモリに用意され、計算機10に設けられたCDROMドライブまたはUSBコネクタ(図示せず)を介して、計算機10内のメモリ12またはHDD13に読み込まれるものであっても構わない。
【0029】
保存用加工データSTRPDは、元データORGDを加工することによって取得されるデータを含む。第1の実施形態では、元データORGDの領域は、複数のブロック、例えばN+1個のブロックB0,B1,…BNに分割される。各ブロックBi(i=0,1,…N)のデータは、予め定められた複数の加工タイプ(第1の実施形態では、「圧縮」、「非圧縮」及び「0データ」)から選択された方法で、ブロック加工データBPDiに加工(変換)される。但し、加工タイプが「0データ」の場合、後述するように、ブロックBiに対応するブロック加工データBPDiは物理的には存在しない。
【0030】
保存用加工データSTRPDは、ブロックB0,B1,…BNにそれぞれ対応して用意される管理テーブルMT0,MT1,…MTNを更に含む。管理テーブルMTiは、対応するブロックBiを管理するのに用いられ、当該ブロックBiを管理するためのブロック管理情報を登録する。保存用加工データSTRPDは、管理テーブルMT0,MT1,…MTNと、ブロックB0,B1,…BNのうちの幾つかに対応するブロック加工データ(図2の例では、ブロック加工データBPD0,BPD1を含む複数のブロック加工データ)とを連結して1つのデータとしてまとめられたものである。作成された保存用加工データSTRPDは、電子機器20のフラッシュメモリ23に保存される。
【0031】
次に、管理テーブルMTiのデータ構造について説明する。
管理テーブルMTiは、加工タイプ、加工データオフセット、加工データサイズ、展開データオフセット、展開データサイズ、プロセッサ所用時間及びDMA所用時間等の各情報が設定されるフィールドを有する。上記ブロック管理情報は、これらの各フィールドに設定された情報から構成される。
【0032】
加工タイプは、対応するブロックBiのデータの加工(変換)に、「圧縮」、「非圧縮」または「0データ」のいずれの加工(変換)方法を適用したかを示す。
加工データオフセットは、対応するブロック加工データBPDi(つまり、ブロックBiのデータを上記加工タイプの示す方法で変換することによって取得されたブロック加工データBPDi)が、保存用加工データSTRPDの先頭位置を基準に、当該保存用加工データSTRPDのどの位置にあるかを示す。つまり加工データオフセットは、ブロック加工データBPDiの、保存用加工データSTRPD内の先頭からのオフセット(メモリアドレスオフセット)を示す。なお、加工タイプが「0データ」の場合、ブロック加工データBPDiは不要であるため、つまりブロック加工データBPDiは用意されないため、加工データオフセットは無効な値となる。
加工データサイズは、対応するブロック加工データBPDiのサイズを示す。加工タイプが「0データ」の場合、加工データサイズは、加工データオフセットと同様に無効な値となる。
【0033】
展開データオフセットは、対応するブロックBiのデータが復元(展開)されるとき、その復元(展開)後のデータが配置されるべき、展開データEXTD内の領域の先頭からのオフセットを示す。
展開データサイズは、対応するブロックBiのデータの復元(展開)先のサイズ、つまり復元後のブロックBiのデータのサイズを示す。
【0034】
プロセッサ所要時間は、対応するブロックBiのデータの展開にプロセッサが消費すると予測される時間(見込み時間)を示す。
DMA所要時間は、対応するブロックBiのデータを展開する際のDMA処理(DMA転送処理)に必要であると予測される時間(見込み時間)を示す。
【0035】
次に、上述のプロセッサ所要時間及びDMA所要時間について、加工タイプ毎に以下に詳述する。
圧縮:
加工タイプが「圧縮」の場合、対応するブロックBiのための展開処理には、圧縮データを伸張する伸張処理が用いられる。この伸張処理に際し、フラッシュメモリ23に保存されている保存用加工データSTRPD内のブロック加工データBPDi(つまりブロックBiの圧縮データ)が、DMAコントローラ24によるDMA処理で、電子機器20のメモリ22内に確保された伸張処理用バッファにロードされる。プロセッサ21-j(jは0〜3のいずれか)は、伸張処理用バッファにロードされたブロック加工データBPDi(圧縮データ)を入力として伸張処理を行い、その出力、つまりブロックBiの元のデータを、展開データオフセット及び展開データサイズで示される、メモリ22内の展開先領域に配置する。
【0036】
したがって、プロセッサ所要時間はブロック加工データBPDiの伸張処理に必要な処理時間に相当する。一方、DMA所要時間は、ブロック加工データBPDiをフラッシュメモリ23からメモリ22内の伸張処理用バッファにロードする時間に相当し、当該ブロック加工データBPDi(圧縮データ)のサイズに比例した時間となる。
【0037】
なお、伸張処理は入力となる圧縮データが全て揃っていない状態で開始可能である。そこで、圧縮データを小さいサイズに分割して、順次ロードするとよい。プロセッサ21-jは、DMA完了の割り込み処理で、準備できたデータの量を把握し、且つ次のDMAをキックする一方で、準備できたデータ分の伸張処理を開始する。この結果、プロセッサ21-jにより伸張処理とDMAコントローラ24によるDMA処理とは、ほぼ並行して実行される。そこで、例えば外乱要因のない場合のプロセッサ21-j単独の処理時間を、プロセッサ所要時間とDMA所要時間のうち大きな方の値と概算することができる。
【0038】
非圧縮:
加工タイプが「非圧縮」の場合、対応するブロックBiのための展開処理は、DMAコントローラ24によるDMA処理により実現される。つまり、フラッシュメモリ23に保存されている保存用加工データSTRPD内のブロック加工データBPDi(つまりブロックBiの非圧縮データ)が、DMAコントローラ24によるDMA処理で、電子機器20のメモリ22内の、展開データオフセット及び展開データサイズで示される展開先領域にロードされる。
【0039】
したがって、プロセッサ所要時間は不要となる。一方、DMA所要時間は、ブロック加工データBPDiをフラッシュメモリ23からメモリ22内の展開先領域にロードする時間に相当し、当該ブロック加工データBPDi(非圧縮データ)のサイズに比例した時間となる。
【0040】
0データ:
加工タイプが「0データ」の場合、対応するブロックBiのための展開処理は、メモリ22の展開先領域に、その展開先領域のサイズ分、つまり展開オフセットサイズ分の“0”を書く処理であり、プロセッサ21-jによって実行される。
【0041】
したがって、プロセッサ所要時間は、プロセッサ21-jがメモリ22の展開先領域に“0”を書き込むのに必要な処理時間に相当し、展開オフセットサイズ、つまりブロックBiのデータのサイズに比例した時間が必要となる。一方、DMA所要時間は、不要となる。
【0042】
図3は、図1に示す計算機10内のプロセッサ11の機能構成を示すブロック図である。
図1に示すプロセッサ11は、加工データ作成プログラムPPを実行することにより、図3に示す加工データ作成部100として機能する。加工データ作成部100は、ブロック加工タイプ決定部110、圧縮処理部120、処理時間計算部130、ブロック調整部140、ブロック配置決定部150、管理テーブル作成・更新部160及びブロック分割部170から構成される。
【0043】
図4は、図1に示す電子機器20内のプロセッサ21-0〜21-3の各々の機能構成を示すブロック図である。
図1に示すプロセッサ21-0〜21-3は、それぞれ、加工データ展開プログラムEPを実行することにより、図4に示す加工データ展開部200-0〜200-3として機能する。加工データ展開部200-0〜200-3は、いずれも管理テーブルアクセス部210及び伸張処理部220から構成される。
【0044】
次に、第1の実施形態の動作について説明する。
第1の実施形態では、計算機10のプロセッサ11が加工データ作成プログラムPPにしたがって元データORGDから保存用加工データSTRPDを作成するための加工データ作成処理と、電子機器20のプロセッサ21-0〜21-3が協調して、保存用加工データSTRPD中の各ブロック加工データをメモリ12上に展開して展開データEXTDを取得する、つまりメモリ12上に元データORGDを復元するための加工データ展開処理とが実行される。
【0045】
まず、計算機10のプロセッサ11によって実行される加工データ作成処理について、図5のフローチャートを参照して説明する。ここでは、プロセッサ11が加工データ作成プログラムPPを実行することによって実現される加工データ作成部100が、加工データ作成処理を実行するものとする。
【0046】
加工データ作成部100のブロック分割部170は、加工の対象となる元データORGDを複数のブロックに分割する(ステップS1)。この最初の分割における、分割サイズ(つまりブロックサイズ)または分割数(つまりブロック数)に特に制約はない。ここでは、元データORGDのサイズは64MBであり、8MBの均等なサイズの8個のブロックB0〜B7に分割されるものとする。この64MBの元データが、ブロックB0〜B7に分割されている状態を図8(a)に示す。つまり図8(a)の例は、図2においてN=7として場合に相当する。
【0047】
加工データ作成部100の管理テーブル作成・更新部160は、メモリ12内に、元データORGDのブロック数と同数の管理テーブル領域を確保する(ステップS2)。ここでは、8個の管理テーブル領域が確保される。ステップS2において、管理テーブル作成・更新部160は、8個の管理テーブル領域を初期化する。これにより8個の管理テーブル領域に管理テーブルMT0〜MT7が初期設定される。具体的には、各管理テーブルMTi(i=0〜7)の展開データオフセットフィールド及び展開データサイズフィールドに、対応するブロックB0〜B7の位置及びサイズにそれぞれ合致する展開データオフセットフィールド及び展開データサイズが初期設定される。
【0048】
ブロック加工タイプ決定部110は、ブロックB0〜B7をそれぞれ解析して、ブロック毎に加工タイプを決定するための加工タイプ決定処理を実行する(ステップS3)。
【0049】
ここで、加工タイプ決定処理の手順について、ブロックBi(i=0〜7)の加工タイプを決定する場合を例に、図6のフローチャートを参照して説明する。
ブロック加工タイプ決定部110は、ブロックBiの領域内の全てのデータが“0”であるかを判定する(ステップS11)。全てのデータが“0”であるブロックBiの領域を「0領域」と呼ぶ。
【0050】
もし、ステップS11の判定がYesであるならば、ブロック加工タイプ決定部110は、ブロックBiの加工タイプを「0データ」と決定する(ステップS12)。そのようにする理由は、全て“0”のデータを圧縮したデータを伸張する処理よりも、プロセッサ11(伸張処理部220)によってブロックBiの領域を直接“0”で埋める処理の方が高速となるという前提に基づいている。また、全てのデータが“0”のブロックだけを特別に扱う理由は、OSのスナップショットイメージなどでは未使用領域が全て“0”となることも多く、未使用領域の出現頻度の点からも、十分有用であることによる。
【0051】
一方、ステップS11の判定がNoであるならば、ブロック加工タイプ決定部110は圧縮処理部120を起動する。圧縮処理部120は、ブロックBiのデータを圧縮する(ステップS13)。このデータの圧縮には、従来から知られている様々な圧縮アルゴリズムのいずれを使用しても構わない。
【0052】
ブロック加工タイプ決定部110は、圧縮処理部120によるデータ圧縮の結果に基づき、圧縮率が閾値X%以下であるかを判定する(ステップS14)。ここでは、Xは50であるものとする。周知のように圧縮率とは、圧縮前のデータに対する圧縮後のデータのサイズの比率である。この比率が小さいほど、圧縮効果は大きくなる。つまり圧縮率の数値が小さいほど、圧縮率は高くなる。ブロックBiの圧縮率が閾値X%以下であり、つまり圧縮効果が大きく、圧縮率が高い場合(ステップS14のYes)、ブロック加工タイプ決定部110は、ブロックBiの加工タイプを「圧縮」と決定する(ステップS15)。
【0053】
これに対し、ステップS14の判定がNoであるならば、ブロック加工タイプ決定部110は、ブロックBiの加工タイプを「非圧縮」と決定する(ステップS16)。このようにブロック加工タイプ決定部110は、ブロックBiの圧縮率が閾値X%よりも大きく、つまり圧縮効果が小さく、圧縮率が低い場合、当該ブロックBiの圧縮による加工データのサイズの縮小及び当該サイズの縮小によるロード時間削減のメリットに対して、伸張処理に要する時間の増大のデメリットが大きいと判断する。
【0054】
ブロックBiを圧縮するかしないかの判定に用いられる閾値Xの値は、この時点では、任意に設定可能である。なぜなら、Xの適切な値はデータイメージの内容に依存するからである。後述するように、Xの値が適切でないと判断できる場合に、Xの値を変更することにより、加工タイプの変更等を伴う再調整(ブロック調整)を行うことも可能である。
【0055】
再び図5のフローチャートを参照すると、ブロック加工タイプ決定部110は、ブロックB0〜B7の全てについて、上述の手順で加工タイプを決定する(ステップS3)。図7は、ブロック毎の加工タイプの決定結果と加工タイプの決定に用いられたブロック毎の状態(0領域の有無と圧縮率)とを対応付けて示す。
【0056】
管理テーブル作成・更新部160は、ブロック加工タイプ決定部110によるブロック毎の加工タイプの決定結果に基づいて管理テーブルMT0〜MT7を更新する(ステップS4)。つまり管理テーブル作成・更新部160は、管理テーブルMT0〜MT7の加工タイプフィールドに、決定された加工タイプを示す値を設定する。
【0057】
また、ステップS4において計算機10の処理時間計算部130は、ブロックB0〜B7それぞれの加工データを展開するための展開処理に必要となる、プロセッサ所要時間及びDMA所要時間を見積る。また、ステップS4において管理テーブル作成・更新部160は、処理時間計算部130によるブロック毎のプロセッサ所要時間及びDMA所要時間の見積もり結果に基づいて管理テーブルMT0〜MT7を更新する。つまり管理テーブル作成・更新部160は、処理時間計算部130によって見積もられたブロックB0〜B7それぞれに対応するプロセッサ所要時間及びDMA所要時間を、管理テーブルMT0〜MT7のプロセッサ所要時間フィールド及びDMA所要時間フィールドに設定する。
【0058】
処理時間計算部130によるプロセッサ所要時間及びDMA所要時間の見積もりには、例えば、データのサイズ等をパラメータとして使用して概算する方法が適用可能である。また、計算機10上でも加工データ展開プログラムEPが走行可能であるならば、当該加工データ展開プログラムEPに従って実際に展開処理を実行してプロセッサ所要時間及びDMA所要時間の実測値を取得してもよい。第1の実施形態では計算機10上でも加工データ展開プログラムEPが走行可能であり、加工タイプ毎に、以下のようにプロセッサ所要時間及びDMA所要時間が算出されるものとする。なお第1の実施形態では、両所要時間には、所定時間を基準とする正規化値が用いられるものとする。しかし、正規化値である必要はない。
【0059】
b1)プロセッサ所要時間
圧縮:伸張処理の実測値
非圧縮:0
0データ:1MB当たり10
b2)DMA所要時間
圧縮:圧縮データ1MB当たり20
非圧縮:非圧縮データ1MBあたり20
0データ:0
加工データ作成部100のブロック調整部140は、処理時間計算部130によって算出されたブロック毎のプロセッサ所要時間及びDMA所要時間に基づいて、ステップS1で設定されたブロックサイズ及びステップS3で決定された加工タイプ(ブロック加工タイプ)を、ステップS5において調整することができる。しかし第1の実施形態では、ブロック調整部140による調整、つまりブロック調整処理(ステップS5)は行われないものとする。
【0060】
第1の実施形態及び後述する第2乃至第4の実施形態では、管理テーブルMTiの配置順に、対応するブロックBiの展開処理が行われることを基本としている。加工データ作成部100のブロック配置決定部150は、このブロック毎の展開処理が効率よく進むように、ブロックの処理順を、ステップS7において変更することができる。つまりブロック配置決定部150は、ブロックの処理順序を決定する処理順序決定手段として動作する。しかし第1の実施形態では、ブロック配置決定部150による順番の変更(ステップS7)は行われず、ブロックB0〜B7の順に展開処理が行われるものとする。
【0061】
加工データ作成部100の圧縮処理部120は、管理テーブルBT0〜BT7にそれぞれ設定された加工タイプに従って、対応するブロックのブロック加工データを作成する(ステップS8)。圧縮処理部120は、作成されたブロック加工データを、メモリ12内の管理テーブルBT0〜BT7に後続する領域に、連続して配置する(ステップS9)。第1の実施形態では、ブロックB0〜B7のうちのブロックB6及びB7の加工タイプが「0データ」である。この場合、ブロックB0〜B5のブロック加工データBPD0〜BPD5は作成されるものの、ブロックB6及びB7のブロック加工データは作成されない。つまりブロックB6及びB7のブロック加工データは存在しない。したがって、メモリ12内の管理テーブルBT0〜BT7に後続する領域には、ブロックB0〜B5のブロック加工データBPD0〜BPD5だけが連続して配置される。これにより、管理テーブルBT0〜BT7及びブロック加工データBPD0〜BPD5が連結された保存用加工データSTRPDが作成される。
【0062】
管理テーブル作成・更新部160は、管理テーブルBT0〜BT7を、作成されたブロック加工データBPD0〜BPD7に合致するように更新する(ステップS10)。つまり管理テーブル作成・更新部160は、管理テーブルMT0〜MT7の加工データオフセットフィールド及び加工データサイズフィールドに、作成されたブロック加工データBPD0〜BPD7に合致する加工データオフセット及び加工データサイズを設定する。これにより管理テーブルBT0〜BT7及びブロック加工データBPD0〜BPD5から構成される保存用加工データSTRPDが完成する。完成した保存用加工データSTRPDは、メモリ12からHDD13に転送されて、当該HDD13に格納される。HDD13に格納された保存用加工データSTRPDは、例えば通信機構15によって、ネットワーク30を介して電子機器20に送信され、当該電子機器20内の通信機構25で受信される。受信された保存用加工データSTRPDは、例えばDMAコントローラ24によってフラッシュメモリ23に転送されて、当該フラッシュメモリ23に保存される。この場合、DMAコントローラ24は保存手段として機能する。なお、完成した保存用加工データSTRPDが、通信機構15によってメモリ12からネットワーク30を介して電子機器20に送信されて、当該電子機器20のフラッシュメモリ23に保存されてもよい。また、計算機10にフラッシュメモリ23が装着されるスロットが設けられているならば、完成した保存用加工データSTRPDを、メモリ12またはHDD13から当該スロットを介してフラッシュメモリ23に転送して当該フラッシュメモリ23に保存し、当該保存用加工データSTRPDが保存されたフラッシュメモリ23を、電子機器20の製造時に、当該電子機器20に実装してもよい。
【0063】
管理テーブルMT0〜MT7の領域全体のサイズを1MBとする。また、ブロック加工データBPD0,BPD1,BPD2,BPD3,BPD4,BPD5のサイズを、それぞれ8MB,8MB,4MB,2MB,3MB,1MBとする。この場合、保存用加工データSTRPD内の管理テーブル及びブロック加工データの位置関係を図8(b)に示す。図8(b)には、ブロック加工データBPD0〜BPD5それぞれの横に、当該ブロック加工データBPD0〜BPD5の保存用加工データSTRPD先頭からのオフセットが示されている。また図8(b)には、ブロック加工データBPD0〜BPD5が、それぞれ圧縮データであるか非圧縮データであるかも示されている。なお、管理テーブルMT0〜MT7の領域全体のサイズは、実際には、ブロック加工データBPD0〜BPD5と比較して十分小さい。つまり、管理テーブルMT0〜MT7の領域全体のサイズは、実際には、1MBよりも小さい。
【0064】
図9は、図8に示す保存用加工データSTRPDに含まれている管理テーブルMT0〜MT7の例を示す。
【0065】
次に、電子機器20のフラッシュメモリ23に保存されている保存用加工データSTRPD中の各ブロック加工データをメモリ12上に展開するための加工データ展開処理について、図10のフローチャートを参照して説明する。
【0066】
プロセッサ21-0〜21-3は、それぞれ加工データ展開プログラムEPに従って加工データ展開処理を実行する。前述したように、プロセッサ21-0〜21-3が加工データ展開プログラムEPを実行することによって、それぞれ加工データ展開部200-0〜200-3が実現される。以下の説明では、加工データ展開部200-0〜200-3が協調して、加工データ展開処理を実行するものとする。図10のフローチャートは、加工データ展開部200-0〜200-3(プロセッサ21-0〜21-3)の各々が実行する加工データ展開処理の手順を示す。ここで、加工データ展開部200-j(j=0〜3)には、データの展開先及び保存用加工データSTRPDの保存先の先頭アドレスの情報が予め与えられているものとする。
【0067】
加工データ展開部200-jの管理テーブルアクセス部210(プロセッサ21-j)は、フラッシュメモリ23に保存されている保存用加工データSTRPD内の管理テーブル群(ここでは、管理テーブルBT0〜BT5)を、メモリ22内に確保される自身の作業領域に、DMAコントローラ24を用いてDMA処理によりロードする(ステップS21)。このメモリ22にロードされた管理テーブル群は、加工データ展開部200による以降の処理で使用される。この管理テーブル群全体のサイズは1MB未満であり、管理テーブル群のロードに要する時間は無視できるほど十分短いものとする。
【0068】
加工データ展開部200-jでは、管理テーブル群で示される全てのブロックB0〜B7についての展開処理が、当該加工データ展開部200-j自身または他の加工データ展開部によって実行されるまで(ステップS22)、ステップS23から始まる以下の手順が繰り返される。ここでは、説明の簡略化のために、各加工データ展開部200-jは、1つのブロックを処理する毎に、ステップS23の開始時で互いに同期が取られているかのように挙動するものとする。つまり加工データ展開部200-0〜200-3は、互いに同期してブロックを処理するものとする。
【0069】
したがって、全ての加工データ展開部200-0〜200-3(プロセッサ21-0〜21-3)が同時に処理するブロック(ここでは4個のブロック)の集まりをブロックグループと呼ぶものとすると、当該ブロックグループの数は、(全ブロック数/プロセッサ数)個となる。1つのブロックグループに含まれるブロック(4個のブロック)は、加工データ展開部200-0〜200-3(プロセッサ21-0〜21-3)に同時に割り当てられて、当該加工データ展開部200-0〜200-3により処理される。なお、全ブロック数がプロセッサ数の整数倍でない場合には、(全ブロック数/プロセッサ数)の商の整数部の値に1を加算した数が、ブロックグループの数となる。この場合、1ブロックグループのみ、ブロック数が4未満となる。また、全ブロック数がプロセッサ数以下の場合、ブロックグループの概念は必ずしも必要ない。
【0070】
加工データ展開部200-jの管理テーブルアクセス部210は、当該加工データ展開部200-jの伸張処理部220がこれから展開すべきブロック(展開ブロック)を決定する(ステップS23)。この展開ブロックの決定のために、例えば管理テーブルMTi内に、対応するブロックBiを処理すべき(割り当てるべき)加工データ展開部200-j(プロセッサ21-j)を示す情報が設定されていても構わない。また、加工データ展開部200-0〜200-3相互の通信によって、つまりプロセッサ21-0〜21-3上で動作するプログラム間の通信によって、未展開のブロックを探して、当該未展開のブロックを次の展開ブロックと決定しても構わない。
【0071】
また、管理テーブルMT0〜MT7の配置順に、対応するブロックB0〜B7の展開処理が行われるものとする。この場合、管理テーブルMT0〜MT7の配置順に、加工データ展開部200-0〜200-3の個数に一致する数のブロックから構成されるブロックグループが形成されることになる。
【0072】
次に、加工データ展開部200-jにおいて展開されるべきブロックとしてブロックBiが決定されたものとする。すると、加工データ展開部200-jの伸張処理部220は、決定されたブロックBiに対応する管理テーブルMTiを、管理テーブルアクセス部210を介して参照することにより、当該決定されたブロックBiの加工タイプ(つまり、対応する加工データの作成に用いられた加工タイプ)を判別する(ステップS24)。ここでは、ブロックBiの加工タイプが、「圧縮」、「非圧縮」または「0データ」のいずれであるかが判別される。
【0073】
伸張処理部220は、加工タイプの判別結果に応じて、以下の処理を行う。
加工タイプが「圧縮」の場合。伸張処理部220は、伸張処理の対象となるブロックBiのブロック加工データBPDiを入力データとして取得するためのDMA処理と当該伸張処理とが並列に行われるように、以下のような手順(ステップS26〜S29)を全ての入力データを処理するまで繰り返す(ステップS25)。
【0074】
まず伸張処理部220は、管理テーブルBTi内の加工データオフセットの示す位置を起点とする加工データサイズ分のデータ(圧縮イメージ)のうちの未処理の一部が、DMAコントローラ24によってメモリ22内に確保された伸張処理用バッファに入力データとしてロードされるように、当該DMAコントローラ24によるDMA処理を起動(いわゆるDMAキック)する(ステップS26)。ここで上記加工データサイズ分のデータは、フラッシュメモリ23に保存されているブロック保存用データ中のブロック加工データBPDiである。
【0075】
次に伸張処理部220は、先行するDMAキックにより既に伸張処理用バッファにロードされている入力データがあれば、当該既にロードされている入力データを伸張する伸張処理を行う(ステップS27)。
【0076】
伸張処理部220は、伸張後のデータ、つまりブロックBiの元のイメージの一部を、メモリ22の対応する展開先に配置する(ステップS28)。このように伸張処理部220は、伸張処理用バッファに既にロードされている入力データをメモリ22の対応する展開先に展開する。
伸張処理部220は、ステップS26でキックしたDMAの完了を待つ(ステップS29)。
【0077】
次に、加工タイプが「非圧縮」の場合、伸張処理部220は、管理テーブルBTi内の加工データオフセットの示す位置を起点とする加工データサイズ分の非圧縮データ(ブロック加工データBPDi)を、管理テーブルBTi内の展開データオフセットの示す位置から始まる展開データサイズ分のメモリ22の領域に、DMAコントローラ24によるDMA処理で取得する(ステップS30)
次に、加工タイプが「0データ」の場合、伸張処理部220は、管理テーブルBTi内の展開データオフセットの示す位置から始まる展開データサイズ分のメモリ22の領域に“0”を書き込む(ステップS31)。
加工データ展開部200-0〜200-3は、全てのブロックBi(0〜7)を展開し終えると、展開処理を終了する。
【0078】
このように、第1の実施形態によれば、元データORGDをブロックBiを単位に分割して管理し、各ブロックBiの加工タイプ(具体的には、「圧縮」、「非圧縮」または「0データ」のいずれであるか)やデータのオフセット、サイズの情報を、管理テーブルMTiで管理することにより、複数のプロセッサ21-j(によって実現される複数の加工データ展開部200-j)で展開処理を容易に並列に実施して、元データORGDをメモリ22上に復元する仕組みを実現することができる。しかも、ブロックBi毎の管理テーブルMTiは、必要な情報が少ないため極めて小さなサイズで済み、データ全体の圧縮率には影響を与えない。また、ブロック毎にデータの内容の加工タイプを「圧縮」、「非圧縮」または「0データ」のいずれかに設定することにより、ブロック毎に効率的なデータの展開処理で対処できる。
【0079】
次に、上述の仕組みにより、図9に示す管理テーブル群で表される保存用加工データSTRPDから元データORGDを復元(展開)する過程について、具体型を挙げて説明する。ここでは、説明の簡略化のために、上述の仕組みにおいて、次のような3つの条件が適用されるものとする。
【0080】
条件1:展開処理は、時系列で複数のブロック展開処理に分割して実行される。
条件2:各ブロック展開処理において複数のプロセッサ21-j(加工データ展開部200-j)は、それぞれ未処理の1個のブロックBiを展開する。この複数のプロセッサ21-jによって同時にブロック展開処理が実行されることになる、プロセッサ数と同数のブロックは、前述のようにブロックグループと呼ばれる。
条件3:全てのブロックBiの展開処理が終了するまで、ブロック展開処理が繰り返される。
【0081】
また、上記各ブロック展開処理においてブロックグループを処理するために必要な所要時間は以下の要領で概算される。
【0082】
ブロックグループ全体のプロセッサ所要時間には、ブロックグループに含まれるブロックのうち最大のプロセッサ所要時間が採用される。ここでは、各プロセッサ21-jが独立して動作することを前提としている。
【0083】
ブロックグループ全体のDMA所要時間には、ブロックグループに含まれるブロックそれぞれのDMA所要時間の合計が採用される。その理由は、複数のプロセッサ21-jは、独立して並列に処理を実行できるのに対し、DMAを実行するための転送路となるバス帯域等の資源は、各プロセッサ21-jで共用され、各プロセッサ21-jからのDMA要求を同時に実行できないからである。
【0084】
各プロセッサ21-jの処理とDMA処理とは並列に実行可能である。このため、ブロックグループの処理に必要な所要時間を、上述のように算出される、ブロックグループ全体のプロセッサ所要時間とブロックグループ全体のDMA所要時間のうち大きいほうの値とすることができる。
【0085】
上述の3つの条件が適用される場合、プロセッサ数が4である第1の実施形態では、まず、最初にブロックB0〜B3が1つのブロックグループ(第1のブロックグループと称する)としてプロセッサ21-0〜21-3によって並行して処理される。即ち、ブロックB0〜B3が、それぞれプロセッサ21-0〜21-3に同時に割り当てられて、ブロック展開処理される。
【0086】
ブロックB0〜B3を処理するのに必要なデータをDMAで取得するための所要時間の合計は、図9の管理テーブル群から明らかなように、440(160+160+80+40)である。一方、ブロックB0〜B3を処理するのに必要なプロセッサ所要時間の最大値は、ブロックB2を処理するのに必要なプロセッサ所要時間であり、280である。したがって、プロセッサ21-0〜21-3がそれぞれ最初のブロックB0〜B3のブロック展開処理を実行している間は、DMAが処理のボトルネックになる傾向となり、当該ブロックB0〜B3の処理(第1のブロックグループの処理)が終了するまでの所要時間は440となる。
【0087】
次に、残りのブロックB4〜B7が1つのブロックグループ(第2のブロックグループと称する)としてプロセッサ21-0〜21-3によって並行して処理されるものとする。即ち、ブロックB4〜B7が、それぞれプロセッサ21-0〜21-3に同時に割り当てられて、ブロック展開処理されるものとする。
【0088】
ブロックB4〜B7を処理するのに必要なデータをDMAで取得する所要時間(DMA所要時間)の合計は、図9の管理テーブル群から明らかなように、80(60+20+0+0)である。一方、ブロックB4〜B7を処理するのに必要なプロセッサ所要時間の最大値は、ブロックB5を処理するのに必要なプロセッサ所要時間であり、300である。したがって、740それぞれブロックB4〜B7のブロック展開処理を実行している間は、ブロックB5のプロセッサ処理がボトルネックになる傾向となり、当該ブロックB4〜B7の処理(第2のブロックグループの処理)が終了するまで所要時間は300となる。
【0089】
このように、第1の実施形態において、上述した順番でブロックB0〜B7の展開処理が実行された場合、最初の4ブロックB0〜B3の処理に時間440を要し、次の4ブロックB4〜B7の処理に時間300を要する。このため、ブロックB0〜B7の展開処理に合計で時間740(440+300)が必要となる。但し、実際には、プロセッサ21-0〜21-3がブロックB0〜B3から次のブロックB4〜B7へと処理を移すときに同期を取る必要がないので、上記のような単純な合計とはなるわけではない。
【0090】
ここで、ブロックの処理の順番を変更した場合について検証する。例として、最初にブロックB0,B2,B5,B6をそれぞれ同時にプロセッサ21-0〜21-3で処理し、次に残りのブロックB1,B3,B4,B7をそれぞれ同時にプロセッサ21-0〜21-3で処理するものとする。
【0091】
ブロックB0,B2,B5,B6のDMA所要時間の合計は、260(160+80+20+0)であり、当該ブロックB0,B2,B5,B6のプロセッサ所要時間の最大値はブロックB5を処理するのに必要なプロセッサ所要時間であり、300である。したがって、ブロックB0,B2,B5,B6の処理が終了するまでの所要時間は300と概算できる。
【0092】
一方、ブロックB1,B3,B4,B7のDMA所要時間の合計は、260(160+60+40+0)であり、当該ブロックB1,B3,B4,B7のプロセッサ所要時間の最大値はブロックB3を処理するのに必要なプロセッサ所要時間であり、240である。したがって、ブロックB1,B3,B4,B7のブロックの処理が終了するまでの所要時間時間は260と概算できる。
【0093】
このように、ブロックの処理の順番を変更するならば、全てのブロックB0〜B7の展開処理に必要な時間は560(300+260)となり、処理時間の短縮が実現できる。
【0094】
[第2の実施形態]
そこで、ブロック処理の順番の変更を実現する第2の実施形態について、図1、図3及び図4のブロック図を援用して説明する。第2の実施形態の特徴は、DMA所要時間とプロセッサ所要時間とのバランスを考慮して、保存用加工データSTRPDにおけるブロックの配置を決定する、つまりブロック処理の順番を決定する点にある。
【0095】
第2の実施形態では、図5のフローチャートにおけるブロック加工タイプを調整するブロック調整処理(ステップS5)で調整がなされなかった場合(ステップS6のNo)、保存用加工データSTRPDにおけるブロックの配置を決定するためのブロック配置決定処理が、主としてブロック配置決定部150によって行われる(ステップS7)。このブロック配置決定処理の手順について、対象となるブロックが図8に示すブロックB0〜B7の8ブロックである場合を例に、図11のフローチャートを参照して説明する。
【0096】
管理テーブル作成・更新部160は、メモリ22内に新しい管理テーブル用の空の領域(新規管理テーブル領域)を確保する(ステップS41)。
するとブロック配置決定部150は、全てのブロックB0〜B7について、管理テーブル作成・更新部160と協調して後述するステップS43〜S45を繰り返し実行する(ステップS42)。
【0097】
まずブロック配置決定部150は、既に作成されている管理テーブルMT0〜MT7(図9参照)に基づいて、まだ選択されていないブロックのうちプロセッサ所要時間が最大のブロックを1つ選択する(ステップS43)。図9に示す管理テーブルMT0〜MT7の例では、1回目のステップS43で、ブロックB5が選択される。
【0098】
次にブロック配置決定部150は、選択されたブロックB5を含む、プロセッサ21-0〜21-3の数と同数のブロック(つまり4ブロック)を選択して、ブロックグループを作成する(ステップS44)。前述したように、ブロックグループは、プロセッサ21-0〜21-3が並行して展開処理を実行するブロックの集合である。特に第2の実施形態では、ブロックグループは、プロセッサ21-0〜21-3が当該ブロックグループ内のブロックを並列に展開処理すればリソースの無駄が少なく効率良く処理が進むことが予測されるブロックの組み合わせである。第2の実施形態では、残りのブロックの選択基準は以下の通りである。
【0099】
c1)ブロックグループ内の全ブロックのDMA所要時間の合計が、ステップS43で選択されたブロック(ここではブロックB5)のプロセッサ所要時間を超えないような組み合わせ
c2)選択基準c1に合致する組み合わせの候補が複数ある場合は、それらの組み合わせの候補のうち、ステップS43で選択されたブロックを除く残りのブロックを比較して、最もプロセッサ所要時間が大きいブロックが含まれる組み合わせ
c3)選択基準c2に合致する組み合わせの候補が複数ある場合は、それらの組み合わせの候補のうちDMA所要時間の合計が最大となる組み合わせ
c4)選択基準c1に合致する組み合わせの候補がない場合は、DMA所要時間の合計が最小となるブロックの組み合わせ
図9に示す管理テーブルMT0〜MT7の例では、1回目のステップS44で、ブロックB0,B2,B3,B5からなるブロックグループが作成される。このブロックグループは、DMA所要時間の合計が300(=160+80+40+20)であって、1回目のステップS43で選択されたブロックB5のプロセッサ所要時間300を超えず、更にプロセッサ所要時間がブロックB5を除いて最大(280)のブロックB2を含んでいる。なお第2の実施形態における2回目のステップ44では、残りのブロックの数が4であるため選択の余地がなく、残りの4個のブロックB1,B4,B6,B7からなるブロックグループが形成される。
【0100】
管理テーブル作成・更新部160は、ステップ44でブロック配置決定部150によってブロックグループが作成される毎に、当該作成されたブロックグループに含まれているブロック(ここでは4個のブロック)の管理テーブルを、ステップS41で確保された新規管理テーブル領域内の空き部分の先頭位置から順に配置する(ステップ45)。第2の実施形態では、第1の実施形態と同様に、管理テーブルの配置順に対応するブロックの展開処理が行われる。このため、ブロック配置決定部150によって作成されるブロックグループの順に、当該ブロックグループに属するブロック(4ブロック)が並列に別々のプロセッサ(プロセッサ21-0〜21-3)で処理されることが期待できる。
【0101】
管理テーブル作成・更新部160は、全ブロックB0〜B7について対応する管理テーブルMT0〜MT3を新規管理テーブル領域に配置する処理(ステップ44)を実行し終えると(ステップS42)、完成した新しい管理テーブル群を正規の管理テーブル群とする(ステップS46)。なお、新規管理テーブル領域に新しい管理テーブル群を配置する代わりに、既に作成されている管理テーブル群(ここでは図9に示す管理テーブルMT0〜MT7)に、処理順序を示す処理順序フィールドを付加し、当該処理順序フィールドの情報を決定された配置順に更新してもよい。
【0102】
以上のブロック配置決定処理の結果、新たな管理テーブルMT0〜MT7が図12に示すように新規管理テーブル領域に配置される。このことは、図9に示す管理テーブルMT0〜MT7の配置が、図12のように変更されたことと等価である。
【0103】
第2の実施形態では、図12に示す管理テーブルMT0〜MT7の配置順に従って、まずブロックB0,B2,B3,B5が、それぞれ同時にプロセッサ21-0〜21-3(加工データ展開部200-0〜200-3)で処理され、次にブロックB1,B4,B6,B7がそれぞれ同時にプロセッサ21-0〜21-3で処理されるものとする。この場合のブロックグループを処理するために必要な所要時間について述べる。
【0104】
まず、ブロックB0,B2,B3,B5のDMA所要時間の合計は、300(160+80+40+20)であり、当該ブロックB0,B2,B3,B5のプロセッサ所要時間の最大値は、ブロックB5を処理するのに必要なプロセッサ所要時間であり、300である。したがって、ブロックB0,B2,B3,B5の処理が終了するまでの所要時間は300と概算できる。
【0105】
一方、ブロックB1,B4,B6,B7のDMA所要時間の合計は、220(160+60+0+0)であり、当該ブロックB1,B4,B6,B7のプロセッサ所要時間の最大値は、ブロックB4を処理するのに必要なプロセッサ所要時間であり、220である。したがって、ブロックB1,B4,B6,B7の処理が終了するまでの所要時間は220と概算できる。
【0106】
これにより、第2の実施形態において、全てのブロックB0〜B7の展開処理に必要な時間は520(300+220)となり、管理テーブルMT0〜MT7の配置(つまりブロックの処理の順番)を変更しない場合の処理時間見込み740よりも短縮できる。つまり第2の実施形態によれば、ブロック処理の順番を変更することにより、プロセッサ処理とDMA処理とのバランスを図り、ブロック展開処理全体の処理速度を向上することができる。
【0107】
以上の説明では、電子機器20において加工データ展開処理を並列に実行可能なプロセッサの数が、計算機10における加工データ作成処理の実行段階で予め分かっていることを想定している。もし、加工データ展開処理を並列に実行可能なプロセッサの数が、加工データ作成処理の実行段階で分からない場合、計算機10のプロセッサ11(加工データ作成部100)が、次のように管理テーブル群を用意すればよい。
【0108】
まず、電子機器20に搭載され得るプロセッサの数の可能性はせいぜい数通りである。そこで、この想定される数通りのプロセッサ数のそれぞれについて、最適な処理順序を指定するような配置の管理テーブル群を用意するならば、対応する保存用加工データSTRPDをプロセッサ数に対して汎用的なデータとすることも可能である。
【0109】
管理テーブルのサイズは十分小さく、用意すべき数も少ないので保存用加工データSTRPD全体のサイズに及ぼす影響は少ない。電子機器20のプロセッサ21-0〜21-3は、上述の汎用的な保存用加工データSTRPDの展開処理時において、並列に実行可能なプロセッサ数を意識して、保存用加工データSTRPDから適切な管理テーブルを取得すればよい。なお、想定される数通りのプロセッサ数のそれぞれについて、管理テーブル群を用意する代わりに、ブロックの処理順序を示す情報を用意してもよい。
【0110】
[第3の実施形態]
次に、第3の実施形態について、図1、図3及び図4のブロック図を援用して説明する。
【0111】
まず、加工タイプが「圧縮」のブロック及び「非圧縮」のブロックのそれぞれの展開処理に要する時間について比較検討する。加工タイプが「圧縮」のブロックを展開する場合、例えば図9からも明らかなように、プロセッサ所要時間は多いものの、DMA所要時間は比較的少ない。これに対し、加工タイプが「非圧縮」のブロックを展開する場合、プロセッサ所要時間はほぼ0であるものの、DMA所要時間は多い。
【0112】
そこで第3の実施形態の特徴は、全ブロックの展開処理に関し、プロセッサ処理がネック(以下、プロセッサ所要時間ネックと称する)の場合は、加工タイプが「圧縮」のブロックの数を減らして「非圧縮」のブロックの数を増やし、DMA処理がネック(以下、DMA所要時間ネックと称する)の場合は、「非圧縮の」ブロックの数を減らして「圧縮」のブロックの数を増やすためのブロック調整処理(図5ステップS5)によって、DMA所要時間とプロセッサ所要時間とのバランスを第2の実施形態よりも更に取る点にある。これにより、プロセッサ所要時間ネック及びDMA所要時間ネックを解消して、全体の処理を高速化することが期待される。
【0113】
次に、第3の実施形態における調整処理の手順について、対象となるブロックが図8に示すブロックB0〜B7の8ブロックである場合を例に説明する。
【0114】
前述したように、処理時間計算部130は、ブロックB0〜B7それぞれのプロセッサ所要時間及びDMA所要時間を見積る(図5ステップS4)。このステップS4において管理テーブル作成・更新部160は、処理時間計算部130によるブロック毎のプロセッサ所要時間及びDMA所要時間の見積もり結果に基づいて管理テーブルMT0〜MT7を更新する。
【0115】
ブロック調整部140は、ステップS4で見積もられた、ブロックB0〜B7それぞれのプロセッサ所要時間及びDMA所要時間に基づいて、当該ブロックB0〜B7の加工タイプまたはブロックサイズを調整するためのブロック調整処理を実行する(図5ステップS5)。このブロック調整処理では、ブロックB0〜B7それぞれのプロセッサ所要時間及びDMA所要時間に基づいて、調整が必要かが判定される。
【0116】
調整が必要かの判定には、圧縮率の閾値Xが用いられる。この閾値X(%)は、例えば0≦X≦100の範囲内で適宜変更される。また、プロセッサ所要時間またはDMA所要時間いずれがネックとなっているかを判定するため2つの閾値、例えば3/2及び2/3も用いられる。また、プロセッサ所要時間またはDMA所要時間いずれがネックとなっているかの判定に用いられるパラメータYも用いられる。
【0117】
パラメータYは、A(第1の値)を
A=全ブロックのプロセッサ所要時間の合計/プロセッサ数
とし、B(第2の値)を
B=全ブロックのDMA所要時間の合計
とすると、
Y=A/B
で表される。
【0118】
Aは全ブロックを処理するのに必要な、1プロセッサ当たりの平均プロセッサ所要時間であることから、パラメータY(=A/B)は、プロセッサ所要時間ネックの度合いが強いほど大きくなり、DMA所要時間ネックの度合いが強いほど小さくなる。
【0119】
以下、このブロック調整処理の手順について、図13のフローチャートを参照して説明する。
まずブロック調整部140は、プロセッサ所要時間ネックであるかを判定するために、パラメータY(=A/B)が第1の閾値3/2よりも大きいかを判定する(ステップS51)。もし、Y>3/2であるならば(ステップS51のYes)、ブロック調整部140はプロセッサ所要時間ネックと判定する。
【0120】
するとブロック調整部140は、プロセッサ所要時間ネックを解消するために、圧縮率の閾値X(つまりブロック加工タイプを「圧縮」または「非圧縮」のいずれとするかを決定するのに用いられる閾値X)を、一定値、例えば10(%)だけ減らす(ステップS52)。これにより、ブロック加工タイプが「非圧縮」のブロックが増えて、1プロセッサ当たりの平均プロセッサ所要時間を減らすこと、つまりプロセッサ所要時間ネックを解消することが可能となる。なお、第1の閾値は1より大きければよく、3/2に限らない。
【0121】
ステップS52が実行されると、図5のフローチャートに示されるブロック調整処理(ステップS5)は終了し、ステップS6に進む。ステップS6では、ブロック調整処理で調整が行われたかが判定され、この例のように調整が行われた場合(ステップS6のYes)、加工データ作成処理がステップS1から再び開始される。このことは、ステップS52から図5のフローチャートのステップS1に戻ることと等価である。
【0122】
但し、Y>3/2であっても(ステップS51のYes)、圧縮率の閾値Xが既に0(%)に達しているならば(ステップS53のYes)、ブロック調整部140は、これ以上の閾値Xの減調整はできないと判断する。この場合、ブロック調整処理(ステップS5)は終了し、ステップS6に進む。この例のように調整が行われなかった場合(ステップS6のNo)、ステップS6からステップS7に進む。このことは、ステップS53から図5のフローチャートのステップS7に進むことと等価である。
【0123】
一方、Y>3/2でないならば(ステップS51のNo)、ブロック調整部140はプロセッサ所要時間ネックではないと判定する。この場合、ブロック調整部140は、DMA所要時間ネックであるかを判定するために、パラメータY(=A/B)が第2の閾値2/3よりも小さいかを判定する(ステップS54)。もし、Y<2/3であるならば(ステップS54のYes)、ブロック調整部140はDMA所要時間ネックと判定する。
【0124】
するとブロック調整部140は、DMA所要時間ネックを解消するために、圧縮率の閾値Xを、一定値、例えば10(%)だけ増やす(ステップS55)。これにより、ブロック加工タイプが「圧縮」のブロックが増えて、DMA所要時間の合計を減らすこと、つまりDMA所要時間ネックを解消することが可能となる。なお、第2の閾値は1より小さければよく、3/2に限らない。
【0125】
ステップS55が実行されると、図5のフローチャートに示されるブロック調整処理(ステップS5)は終了し、ステップS6に進む。ステップS6では、ブロック調整処理で調整が行われたかが判定され、この例のように調整が行われた場合(ステップS6のYes)、加工データ作成処理がステップS1から再び開始される。このことは、ステップS55から図5のフローチャートのステップS1に戻ることと等価である。
【0126】
但し、Y<2/3であっても(ステップS54のYes)、閾値Xが既に100(%)に達しているならば(ステップS56のYes)、これ以上の閾値Xの増調整はできないことから、ブロック調整部140は、ブロックサイズを現在よりも小さくなるように調整、例えば現在の1/2に調整する(ステップS57)。これにより、0データのブロックが増えてDMA所要時間が減り、DMA所要時間ネックを解消することが期待される。
ステップS57が実行されると、ブロック調整処理(ステップS5)は終了し、ステップS6に進む。そして、加工データ作成処理がステップS1から再び開始される。このことは、ステップS57から図5のフローチャートのステップS1に戻ることと等価である。
【0127】
一方、Y<2/3でないならば(ステップS54のNo)、ブロック調整部140はプロセッサ所要時間ネックでも、DMA所要時間ネックでもなく、調整は不要であると判定する。この場合、ブロック調整処理(ステップS5)は終了し、ステップS6に進み、当該ステップS6からステップS7に進む。このことは、ステップS54から図5のフローチャートのステップS7に進むことと等価である。
【0128】
なお、ステップS52,S55またはS57から図5のフローチャートのステップS1に戻る前に、一旦ステップS7乃至S10を実行して、仮の保存用加工データを作成しておくようにしても構わない。この場合、仮の保存用加工データに含まれている各ブロックのプロセッサ所要時間とDMA所要時間とを使用して、前述のように展開時間の見積もりを算出することができる。これにより、圧縮率の閾値Xまたはブロックサイズを変更した過程で作成される幾つかの仮の保存用加工データと、当該幾つかの仮の保存用加工データのそれぞれに対応する展開時間の見積りが結果として揃えられる。この中から、展開時間の見積もりが最小の仮の保存用加工データを、正規の保存用加工データSTRPDとして決定することもできる。より詳細に述べるならば、仮の保存用加工データ毎に取得される、A及びBの最大値を比較して、その中の最大値が最小の仮の保存用加工データを、正規の保存用加工データSTRPDとして決定することもできる。
【0129】
第3の実施形態において、DMA処理とプロセッサ処理のオーバラップが効率的に行われない場合、ブロックのサイズを小さく変更してもよい。オーバラップが効率的に行われない状況は、例えば以下の方法で判定できる。
【0130】
d1)処理時間計算部130は、各ブロックグループの実行時間の見積もりを算出する。ブロックグループの実行時間の見積もりは、当該ブロックグループに属する全てのブロックのプロセッサ所要時間の最大値と、当該ブロックグループに属する全てのブロックのDMA所要時間の合計値のうち、大きい方の値となる。
【0131】
d2)処理時間計算部130は、全ブロックグループのそれぞれの実行時間の見積もりの合計を、実実行時間見積もり(第3の値)Cとする。
d3)処理時間計算部130は、前述したA、つまり全ブロックのプロセッサ所要時間の合計をプロセッサ数で割った値Aと、前述したB、つまり全ブロックのDMA所要時間の合計とを比較し、大きい方の値を理想的な実行時間(第4の値)Dとする。
【0132】
d4)ブロック調整部140は、実実行時間見積もりCと理想的な実行時間Dとを比較し、理想的な実行時間Dと実実行時間見積もりCとの差分(D−C)または理想的な実行時間Dの実実行時間見積もりCに対する比率(D/C)が所定の閾値THよりも大きい場合は、オーバラップが効率的に行われていないと判断する。
【0133】
オーバラップが効率的に行われていない状態を検出した場合、ブロック調整部140はブロックサイズを現在よりも小さく設定する。そこで、この状態で加工データ作成処理がステップS1から再び開始される、つまりデータ加工がやり直されるようにしてもよい。ブロックサイズが小さく設定されることで、ブロックの組み合わせの融通が利きやすくなり、調整がより効率的にできることが期待される。
【0134】
また、オーバラップが効率的に行われていない状態(以下、特定状態と称する)が検出され、且つ上記d3)での比較の結果、Bが理想的な実行時間Dと決定された場合、つまり上記特定状態の要因としてDMA所要時間の合計Bの方が大きかった場合、ブロック調整部140はDMA所要時間ネックと判定する。これに対し、上記特定状態が検出され、且つAが理想的な実行時間Dと決定された場合、つまり上記特定状態の要因としてプロセッサ所要時間の合計をプロセッサ数で割った値Aの方が大きかった場合、ブロック調整部140はプロセッサ所要時間ネックと判定する。
【0135】
DMA所要時間ネックの場合、ブロック調整部140は、特定バイト列のブロックのデータ、例えば加工タイプが「0データ」のブロックのデータ(全て“0”の)が更に小さなブロックサイズで分割されるように調整する。これにより、プロセッサ所要時間の融通が利きやすくなり、オーバラップの効率の悪さが改善することが期待される。
【0136】
一方、プロセッサ所要時間ネックの場合、ブロック調整部140は、加工タイプが「圧縮」のブロックのデータが更に小さなブロックサイズで分割されるように調整する。これにより、DMA所要時間の融通が利きやすくなり、オーバラップの効率の悪さが改善することが期待される。
【0137】
上述の説明から明らかなように、DMA所要時間ネックまたはプロセッサ所要時間ネックのためにDMA処理とプロセッサ処理のオーバラップが効率的に行われない状態は、A/Bの値が所定の範囲から外れている状態であるといえる。
【0138】
次に、このような調整の具体例を、DMA所要時間ネックの場合について説明する。
電子機器20での展開処理に使用可能なプロセッサ数がプロセッサ21-0〜20-3の4で、対象データのブロック数がブロックB0〜B19の20で、その内訳が、
ブロックB0〜B11:0データ、プロセッサ所要時間=20
ブロックB12〜B19:非圧縮、DMA所要時間=10
のようになっているものとする。
【0139】
これらのブロックの最適なブロックグループ分けによる実行順序割り当て及び実行時間(の見積もり)は、例えば、
ブロックグループ(B0,B1,B12,B13),実行時間=20
ブロックグループ(B2,B3,B14,B15),実行時間=20
ブロックグループ(B4,B5,B16,B17),実行時間=20
ブロックグループ(B6,B7,B18,B19),実行時間=20
ブロックグループ(B8,B9,B10,B11),実行時間=20
であり、全ブロックグループの実行時間の合計(つまり実実行時間見積もり)Cは100である。
【0140】
また、A,Bは
A=全ブロックのプロセッサ所要時間の合計/プロセッサ数
=20×12/4
=60
B=全ブロックのDMA所要時間の合計
=10×8
=80
となる。
【0141】
この場合、A<Bであることから、ブロック調整部140はDMA処理時間ネックと判定する。そこでブロック調整部140は、ブロックB0〜B11のデータ、つまり0データが更に小さなブロックサイズ、例えば現在の半分のブロックサイズで分割されるように調整する。ブロックB0〜B11をそれぞれ半分に分割した後のブロックが、ブロックB0′,B0″〜B11′,B11″であるとすると、
ブロックB0′〜B11′:0データ、プロセッサ所要時間=10
ブロックB0″〜B11″:0データ、プロセッサ所要時間=10
ブロックB12−B19:非圧縮、DMA所要時間=10
という構成にすることができる。
【0142】
これらのブロックの最適なブロックグループ分けによる実行順序割り当て及び実行時間は、例えば、
ブロックグループ(B0′,B1′,B2′,B12),実行時間=10
ブロックグループ(B3′,B4′,B5′,B13),実行時間=10
ブロックグループ(B6′,B7′,B8′,B14),実行時間=10
ブロックグループ(B9′,B10′,B11′,B15),実行時間=10
ブロックグループ(B0″,B1″,B2″,B16),実行時間=10
ブロックグループ(B3″,B4″,B5″,B17),実行時間=10
ブロックグループ(B6″,B7″,B8″,B18),実行時間=10
ブロックグループ(B9″,B10″,B11″,B19),実行時間=10
である。
この場合、全ブロックグループの実行時間の合計(実実行時間見積もり)Cは80となり、時間短縮が実現できる。
【0143】
このように第3の実施形態によれば、ブロック毎にデータの内容の加工タイプを変更できるようにすることにより、ブロック毎に効率的なデータの展開処理で対処でき、更にブロックサイズも変更できるようにすることにより、DMA所要時間とプロセッサ所要時間とのバランスを第2の実施形態よりも更に取ることができ、ブロック展開処理全体の高速化を図ことができる。
【0144】
[第4の実施形態]
次に、第4の実施形態について、図1、図3及び図4のブロック図を援用して説明する。
第1乃至第3の実施形態では、保存用加工データSTRPDに含まれている管理テーブルの配置順にブロックの展開処理が実行される。つまり第1乃至第3の実施形態では、ブロック展開処理におけるブロックの処理順序は、計算機10のプロセッサ11(加工データ作成部100)によって決定されることを前提としている。しかし、ブロックの処理順序が、電子機器20のプロセッサ21-0〜21-3(加工データ展開部200-0〜200-3)によって決定されても構わない。第4の実施形態の特徴は、プロセッサ21-0〜21-3がブロック展開処理におけるブロックの処理順序を決定することにある。
【0145】
以下、電子機器20のプロセッサ21-j(j=0〜3)が処理順序決定手段として機能して、ブロック展開処理におけるブロックの処理順序を決定するためのブロック処理順序決定処理の手順について、図14のフローチャートを参照して説明する。
【0146】
プロセッサ21-j(加工データ展開部200-jのプロセッサ21-j)は、次に処理すべきブロックグループが既に決定されているかを、電子機器20内の他のプロセッサとの通信によって確認する(ステップS61)。もし、処理すべきブロックグループが既に決定されているならば(ステップS61のYes)、プロセッサ21-jは、当該ブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する(ステップS62)。
【0147】
これに対し、まだ次に処理すべきブロックグループが決定されていない場合(ステップS61のNo)、プロセッサ21-jは、既に他のプロセッサが当該次に処理すべきブロックグループを決定する作業を行っているかを、当該他のプロセッサとの通信によって確認する(ステップS63)。もし、既に他のプロセッサによって作業が開始されている場合(ステップS63のYes)、プロセッサ21-jは、当該作業が完了して次に処理すべきブロックグループが決定されるのを待つ(ステップS64)。そしてプロセッサ21-jは、次に処理すべきブロックグループの決定後にステップS62に進み、当該決定されたブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する。
【0148】
一方、次に処理すべきブロックグループを決定する作業が他のプロセッサによって開始されていない場合(ステップS63のNo)、プロセッサ21-jは、図11のフローチャートのステップS43〜S45の手順で、次に処理すべきブロックグループを決定する(ステップS65)。次にプロセッサ21-jはステップS62に進み、自身が決定したブロックグループ内でまだ展開処理に割り当てられていないブロックのうちプロセッサ所要時間が最大のブロックを自身が担当すべきブロックとして決定して、当該決定されたブロックの展開処理を開始する。
【0149】
第4の実施形態によれば、電子機器20内で実行されるブロック展開処理で、ブロックの処理順序が決定される。このため、ブロックの処理順序の決定に要する処理時間がオーバヘッドとして余分にかかる反面、電子機器20で適用される加工データ展開部200-j(加工データ展開プログラムEP)をプロセッサ数に依存しない汎用性のあるものとすることができる。
【0150】
以上、電子機器20におけるブロック展開処理に複数のプロセッサ(ここでは4つのプロセッサ21-0〜21-3)が使用されることを前提として、ブロック展開処理の高速化を図るようにした第1乃至第4の実施形態について説明した。しかし、ブロック展開処理に、必ずしも複数のプロセッサが使用される必要はない。つまり、単一のプロセッサのみがブロック展開処理を実行する場合でも、以下に述べるように高速化は可能である。
【0151】
前述の通り、加工タイプが「非圧縮」のブロックに対する展開処理にはDMA処理で対応可能である。一方、加工タイプが「0データ」のブロックに対する展開処理にはプロセッサ処理で対応可能である。したがって、プロセッサ処理とDMA処理とは並列に実行可能という観点から、単一のプロセッサでも、加工タイプが「非圧縮」のブロックと加工タイプが「0データ」のブロックのそれぞれの展開処理を並列に実行することができ、展開処理を高速化することができる。
【0152】
次に、「非圧縮」のブロックの数と「0データ」のブロックの数のバランスについて考察する。
「非圧縮」のブロックの展開処理に必要なDMA所要時間と、「0データ」のブロックの展開処理に必要な(つまり「0データ」をメモリ22に書き込むのに必要な)プロセッサ所要時間とは、いずれも、ブロックサイズに比例すると想定できる。そのため、「非圧縮」のブロックと「0データ」のブロックの単位サイズ当たりの展開処理に要する時間の比がa:bであるとすると、各ブロックのサイズが固定長の場合、「非圧縮」のブロックの数と「0データ」のブロックの数の比を、b:aにすることによって、双方の処理を完全にオーバラップさせることができる。
【0153】
したがって、保存用加工データSTRPDの作成段階において、「0データ」のブロックの数がn個であれば、「0データ」以外の残りのブロックのうち、圧縮率が低い方からn×(b/a)個のブロックの加工タイプを「非圧縮」とすればよい。
【0154】
以上説明した少なくとも1つの実施形態によれば、メモリ上にデータを高速に復元することができる、データ加工・復元システム、データ加工機能を持つ電子機器、及びデータ復元機能を持つ電子機器を提供できる。
【0155】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0156】
10…計算機、11,21-0〜21-3…プロセッサ、12,22…メモリ、13…HDD(第1の記憶手段)、14,24…DMAコントローラ、15,25…通信機構、20…電子機器、23…フラッシュメモリ(第2の記憶手段)、30…ネットワーク、100…加工データ作成部、110…ブロック加工タイプ決定部(変換タイプ決定手段)、120…圧縮処理部、130…処理時間計算部、140…ブロック調整部、150…ブロック配置決定部(処理順序決定手段)、160…管理テーブル作成・更新部、170…ブロック分割部、200-0〜200-3…加工データ展開部、210…管理テーブルアクセス部、220…伸張処理部(復元手段)、PP…加工データ作成プログラム、EP…加工データ展開プログラム、ORGD…元データ、STRPD…保存用加工データ、EXTD…展開データ、B0〜B7,BN…ブロック、MT0〜MT7,MTN…管理テーブル、BPD0〜BPD5…ブロック加工データ。
【特許請求の範囲】
【請求項1】
変換の対象となる元データを格納した第1の記憶手段と、
前記元データを複数のブロックに分割するブロック分割手段と、
前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成する管理テーブル作成手段と、
前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成する加工手段と、
前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを保存する第2の記憶手段と、
並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段であって、前記第2の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行する複数の復元手段と、
前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もる処理時間計算手段と、
前記複数の復元手段によって実行されるべき前記ブロックの展開処理の処理順序を決定する処理順序決定手段であって、前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定する処理順序決定手段とを具備し、
前記管理テーブル作成手段は、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定し、
前記複数の復元手段は、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序に従って、対応するブロックの展開処理を実行する
データ加工・復元システム。
【請求項2】
前記分割されたブロック毎に、対応するブロックのデータを変換するための変換タイプを決定する変換タイプ決定手段であって、前記対応するブロックのデータを圧縮した際の圧縮率が圧縮率閾値よりも高い第1の場合には第1の変換タイプを決定し、前記対応するブロックのデータが前記第1の場合に該当しないならば第2の変換タイプを決定する変換タイプ決定手段を更に具備し、
前記管理テーブル作成手段は、前記管理テーブルを作成する際に、対応するブロックの前記決定された変換タイプを示す情報を、当該管理テーブルのブロック管理情報に設定し、
前記加工手段は、前記ブロック管理情報によって示される変換タイプを参照し、前記第1の変換タイプの場合には、対応するブロックのデータが圧縮されたブロック加工データを作成し、前記第2の変換タイプの場合には、対応するブロックのデータから構成されるブロック加工データを作成する
請求項1記載のデータ加工・復元システム。
【請求項3】
前記変換タイプ決定手段は、前記対応するブロックのデータが予め定められたバイト列から構成される第2の場合には、前記対応するブロックの変換タイプとして第3の変換タイプを決定し、前記対応するブロックのデータが前記第2の場合に該当しないならば、前記対応するブロックの変換タイプを前記第1の変換タイプまたは前記第2の変換タイプのいずれとするかを決定し、
前記加工手段は、前記ブロック管理情報によって示される変換タイプが前記第3の変換タイプの場合には前記対応するブロックのブロック加工データの作成を抑止する
請求項2記載のデータ加工・復元システム。
【請求項4】
前記ブロック毎の管理テーブルに設定されたブロック管理情報は、前記対応するブロックの変換前のサイズに一致する復元データのサイズを示す情報を含み、
前記複数の復元手段は、前記対応するブロックの変換タイプが前記第3の変換タイプの場合、前記対応するブロックの管理テーブルに設定されたブロック管理情報の示す展開データサイズだけ前記予め定められたバイト列を前記メモリ上に復元し、前記対応するブロックの変換タイプが前記第1の変換タイプの場合、前記保存用加工データ中の対応するブロック加工データを伸張することによって前記対応するブロックの元のデータを前記メモリ上に復元し、前記対応するブロックの変換タイプが前記第2の変換タイプの場合、前記保存用加工データ中の対応するブロック加工データを前記対応するブロックの元のデータとしてそのまま前記メモリ上に復元する請求項3記載のデータ加工・復元システム。
【請求項5】
前記プロセッサ所要時間見積りの合計を前記複数のプロセッサの数で除した第1の値Aと前記各ブロックのデータ転送所要時間見積もりを合計した第2の値Bとの比率A/Bが、1より大きい第1の閾値よりも大きい場合には、前記圧縮率閾値を引き下げて、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせ、前記比率A/Bが、1より小さい第2の閾値よりも小さい場合には、前記圧縮率閾値を引き上げて、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせるためのブロック調整を実行するブロック調整手段を更に具備する請求項4記載のデータ加工・復元システム。
【請求項6】
前記ブロック調整手段は前記ブロック調整を繰り返し、前記ブロック調整を繰り返した結果作成される複数の保存用加工データのそれぞれの前記第1の値Aと前記第2の値Bのうちの最大値を比較して、前記最大値が最小の保存用加工データを正規の保存用加工データとする
請求項5記載のデータ加工・復元システム。
【請求項7】
前記処理順序決定手段は、前記複数のブロックの前記決定されたブロック処理順序に基づいて、前記展開処理が前記複数の復元手段によって前記複数のプロセッサ上で並行して実行されるブロック群から構成される複数のブロックグループを作成し、
前記処理時間計算手段は、前記ブロックグループ毎に、当該ブロックグループに属する全てのブロックのプロセッサ所要時間の最大値と、当該ブロックグループに属する全てのブロックのDMA所要時間の合計値のうち、大きい方の値を、実行時間の見積もりとして計算し、前記複数のブロックグループのそれぞれの実行時間の見積もりの合計を第3の値Cとて決定する一方、前記第1の値Aと前記第2の値Bのうちの大きい方の値を第4の値Dとして決定し、
前記ブロック調整手段は、前記第4の値Dと前記第3の値Cとの差分D−Cまたは前記第4の値Dの前記第3の値Cに対する比率D/Cが第3の閾値よりも大きい特定状態の場合、ブロックの分割サイズを小さくして、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせる
請求項5記載のデータ加工・復元システム。
【請求項8】
前記ブロック調整手段は、前記特定状態において、前記第1の値Aが前記第2の値Bよりも大きい場合、前記第1の変換タイプのブロックのデータがより小さなブロックサイズで分割され、前記特定状態において、前記第2の値Bが前記第1の値Aよりも大きい場合、前記第3の変換タイプのブロックのデータがより小さなブロックサイズで分割されるように調整する請求項7記載のデータ加工・復元システム。
【請求項9】
前記第1の記憶手段と、前記ブロック分割手段と、前記管理テーブル作成手段と、前記加工手段と、前記処理時間計算手段と、前記処理順序決定手段とを備えた計算機を更に具備する請求項1記載のデータ加工・復元システム。
【請求項10】
前記第2の記憶手段と、前記複数の復元手段とを備えた電子機器を更に具備する請求項1記載のデータ加工・復元システム。
【請求項11】
変換の対象となる元データを格納した第1の記憶手段と、ブロック分割手段と、管理テーブル作成手段と、処理時間計算手段と、処理順序決定手段と、加工手段と、保存手段と、第2の記憶手段と、並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段とを備えたシステムにおけるデータ加工・復元方法であって、
前記ブロック分割手段が、前記元データを複数のブロックに分割するステップと、
前記管理テーブル作成手段が、前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成するステップと、
前記処理時間計算手段が、前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もるステップと、
前記処理順序決定手段が、前記複数の復元手段によって前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定するステップと、
前記管理テーブル作成手段が、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定するステップと、
前記加工手段が、前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成するステップと、
前記保存手段が、前記決定されたブロック処理順序が反映された前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを前記第2の記憶手段に保存するステップと、
前記複数の復元手段が、前記第2の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプと、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序とに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行するステップと
を具備するデータ加工・復元方法。
【請求項1】
変換の対象となる元データを格納した第1の記憶手段と、
前記元データを複数のブロックに分割するブロック分割手段と、
前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成する管理テーブル作成手段と、
前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成する加工手段と、
前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを保存する第2の記憶手段と、
並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段であって、前記第2の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行する複数の復元手段と、
前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もる処理時間計算手段と、
前記複数の復元手段によって実行されるべき前記ブロックの展開処理の処理順序を決定する処理順序決定手段であって、前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定する処理順序決定手段とを具備し、
前記管理テーブル作成手段は、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定し、
前記複数の復元手段は、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序に従って、対応するブロックの展開処理を実行する
データ加工・復元システム。
【請求項2】
前記分割されたブロック毎に、対応するブロックのデータを変換するための変換タイプを決定する変換タイプ決定手段であって、前記対応するブロックのデータを圧縮した際の圧縮率が圧縮率閾値よりも高い第1の場合には第1の変換タイプを決定し、前記対応するブロックのデータが前記第1の場合に該当しないならば第2の変換タイプを決定する変換タイプ決定手段を更に具備し、
前記管理テーブル作成手段は、前記管理テーブルを作成する際に、対応するブロックの前記決定された変換タイプを示す情報を、当該管理テーブルのブロック管理情報に設定し、
前記加工手段は、前記ブロック管理情報によって示される変換タイプを参照し、前記第1の変換タイプの場合には、対応するブロックのデータが圧縮されたブロック加工データを作成し、前記第2の変換タイプの場合には、対応するブロックのデータから構成されるブロック加工データを作成する
請求項1記載のデータ加工・復元システム。
【請求項3】
前記変換タイプ決定手段は、前記対応するブロックのデータが予め定められたバイト列から構成される第2の場合には、前記対応するブロックの変換タイプとして第3の変換タイプを決定し、前記対応するブロックのデータが前記第2の場合に該当しないならば、前記対応するブロックの変換タイプを前記第1の変換タイプまたは前記第2の変換タイプのいずれとするかを決定し、
前記加工手段は、前記ブロック管理情報によって示される変換タイプが前記第3の変換タイプの場合には前記対応するブロックのブロック加工データの作成を抑止する
請求項2記載のデータ加工・復元システム。
【請求項4】
前記ブロック毎の管理テーブルに設定されたブロック管理情報は、前記対応するブロックの変換前のサイズに一致する復元データのサイズを示す情報を含み、
前記複数の復元手段は、前記対応するブロックの変換タイプが前記第3の変換タイプの場合、前記対応するブロックの管理テーブルに設定されたブロック管理情報の示す展開データサイズだけ前記予め定められたバイト列を前記メモリ上に復元し、前記対応するブロックの変換タイプが前記第1の変換タイプの場合、前記保存用加工データ中の対応するブロック加工データを伸張することによって前記対応するブロックの元のデータを前記メモリ上に復元し、前記対応するブロックの変換タイプが前記第2の変換タイプの場合、前記保存用加工データ中の対応するブロック加工データを前記対応するブロックの元のデータとしてそのまま前記メモリ上に復元する請求項3記載のデータ加工・復元システム。
【請求項5】
前記プロセッサ所要時間見積りの合計を前記複数のプロセッサの数で除した第1の値Aと前記各ブロックのデータ転送所要時間見積もりを合計した第2の値Bとの比率A/Bが、1より大きい第1の閾値よりも大きい場合には、前記圧縮率閾値を引き下げて、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせ、前記比率A/Bが、1より小さい第2の閾値よりも小さい場合には、前記圧縮率閾値を引き上げて、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせるためのブロック調整を実行するブロック調整手段を更に具備する請求項4記載のデータ加工・復元システム。
【請求項6】
前記ブロック調整手段は前記ブロック調整を繰り返し、前記ブロック調整を繰り返した結果作成される複数の保存用加工データのそれぞれの前記第1の値Aと前記第2の値Bのうちの最大値を比較して、前記最大値が最小の保存用加工データを正規の保存用加工データとする
請求項5記載のデータ加工・復元システム。
【請求項7】
前記処理順序決定手段は、前記複数のブロックの前記決定されたブロック処理順序に基づいて、前記展開処理が前記複数の復元手段によって前記複数のプロセッサ上で並行して実行されるブロック群から構成される複数のブロックグループを作成し、
前記処理時間計算手段は、前記ブロックグループ毎に、当該ブロックグループに属する全てのブロックのプロセッサ所要時間の最大値と、当該ブロックグループに属する全てのブロックのDMA所要時間の合計値のうち、大きい方の値を、実行時間の見積もりとして計算し、前記複数のブロックグループのそれぞれの実行時間の見積もりの合計を第3の値Cとて決定する一方、前記第1の値Aと前記第2の値Bのうちの大きい方の値を第4の値Dとして決定し、
前記ブロック調整手段は、前記第4の値Dと前記第3の値Cとの差分D−Cまたは前記第4の値Dの前記第3の値Cに対する比率D/Cが第3の閾値よりも大きい特定状態の場合、ブロックの分割サイズを小さくして、前記変換タイプ決定手段による変換タイプ決定のやり直しを行わせる
請求項5記載のデータ加工・復元システム。
【請求項8】
前記ブロック調整手段は、前記特定状態において、前記第1の値Aが前記第2の値Bよりも大きい場合、前記第1の変換タイプのブロックのデータがより小さなブロックサイズで分割され、前記特定状態において、前記第2の値Bが前記第1の値Aよりも大きい場合、前記第3の変換タイプのブロックのデータがより小さなブロックサイズで分割されるように調整する請求項7記載のデータ加工・復元システム。
【請求項9】
前記第1の記憶手段と、前記ブロック分割手段と、前記管理テーブル作成手段と、前記加工手段と、前記処理時間計算手段と、前記処理順序決定手段とを備えた計算機を更に具備する請求項1記載のデータ加工・復元システム。
【請求項10】
前記第2の記憶手段と、前記複数の復元手段とを備えた電子機器を更に具備する請求項1記載のデータ加工・復元システム。
【請求項11】
変換の対象となる元データを格納した第1の記憶手段と、ブロック分割手段と、管理テーブル作成手段と、処理時間計算手段と、処理順序決定手段と、加工手段と、保存手段と、第2の記憶手段と、並列に動作可能な複数のプロセッサのそれぞれで動作する複数の復元手段とを備えたシステムにおけるデータ加工・復元方法であって、
前記ブロック分割手段が、前記元データを複数のブロックに分割するステップと、
前記管理テーブル作成手段が、前記分割されたブロック毎に、対応するブロックを管理するための当該対応するブロックの変換タイプを示す情報を含むブロック管理情報が設定された管理テーブルを作成するステップと、
前記処理時間計算手段が、前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、前記ブロック毎に、前記複数の復元手段によって実行されるべき前記ブロックの展開処理に要するプロセッサの所要時間と前記展開処理の対象となるデータの転送処理に要するデータ転送所要時間とを見積もるステップと、
前記処理順序決定手段が、前記複数の復元手段によって前記複数のプロセッサ上でそれぞれブロックが並行して処理される場合の前記プロセッサ所要時間見積もりのうち最大のプロセッサ所要時間見積もりと前記データ転送所要時間見積もりの合計が最も均等となるなるようにブロックの処理順序を決定するステップと、
前記管理テーブル作成手段が、前記決定されたブロック処理順序を示すように、前記ブロック毎の管理テーブルを配置、または前記ブロック毎の管理テーブルのブロック管理情報に前記決定されたブロック処理順序を設定するステップと、
前記加工手段が、前記ブロック毎の管理テーブルに設定されたブロック管理情報によって示される変換タイプに基づいて、対応するブロックのブロック加工データを作成するステップと、
前記保存手段が、前記決定されたブロック処理順序が反映された前記ブロック毎の管理テーブル及び前記作成されたブロック加工データから構成される保存用加工データを前記第2の記憶手段に保存するステップと、
前記複数の復元手段が、前記第2の記憶手段に保存されている保存用加工データ中の前記ブロック毎の管理テーブルに設定されたブロック管理情報に基づいて、対応するブロックの変換タイプを判定し、判定された変換タイプと、前記ブロック毎の管理テーブルの配置の示すブロック処理順序、または前記ブロック毎の管理テーブルのブロック管理情報の示すブロック処理順序とに従って、前記対応するブロックのデータをメモリ上に復元するための展開処理を実行するステップと
を具備するデータ加工・復元方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−155582(P2012−155582A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−15048(P2011−15048)
【出願日】平成23年1月27日(2011.1.27)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願日】平成23年1月27日(2011.1.27)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】
[ Back to top ]