(57)【要約】【課題】複数の子プロセッサに処理を分散させて効率よく処理を行うことができる。【解決手段】画像処理部３２のモジュール管理部４１は、処理モジュールに関するプロファイル情報に基づいて、処理モジュールを管理している。モジュール選択部４２は、モジュール管理部４１で管理されている処理モジュールのうち、システム制御部３１から通知された「処理内容」に応じた処理モジュールについて、「リソース条件」に応じた処理モジュールを、プロファイル情報に基づいて選択する。モジュール選択部４２は、選択した処理モジュールを、モジュール管理部４１から取得するとともに、モジュール制御部４３に供給する。モジュール制御部４３は、モジュール選択部４２から供給された処理モジュールを、子プロセッサ管理部３３に供給し、所定の子プロセッサに、その処理モジュールを実行させる。【選択図】  図７
2006099156.tif 000002
【特許請求の範囲】
【請求項１】
システムバスに接続された複数の子プロセッサとそれらを制御するメインプロセッサからなる情報処理装置において、
前記子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持手段と、
前記プロファイル情報に基づいて、前記子プロセッサに実行させる処理モジュールを選択する選択手段と、
前記選択手段により選択された前記処理モジュールを前記子プロセッサに実行させる実行手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記プロファイル情報は、前記処理モジュールの処理速度、使用するメモリ量、または前記システムバスの使用量である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理モジュールの実行に応じたプロファイル結果を取得する取得手段と、
前記プロファイル結果に基づいて、前記プロファイル情報を更新する更新手段と
をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記処理モジュールが実行されている間のリソースの使用状態を監視する監視手段をさらに備え、
前記選択手段は、前記リソースの使用状態に基づいて、前記子プロセッサに実行させる処理モジュールを再度選択する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記リソースは、システムバスの帯域、処理モジュールを実行している前記子プロセッサの数、または前記子プロセッサの使用率である
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
過去のリソース情報を保持する過去データ保持手段をさらに備え、
前記選択手段は、前記過去のリソース情報に基づいて、前記子プロセッサに実行させる処理モジュールを再度選択する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項７】
要求に応じて、所定の単体モジュールを結合して、複数の処理を実行する複合モジュールを生成する生成手段
をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記生成手段により生成された前記複合モジュールを保存する保存手段
をさらに備えることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記プロファイル情報は、入力データの依存関係情報を含み、
前記生成手段は、前記依存関係情報に基づいて、複合モジュールを生成する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
システムバスに接続された複数の子プロセッサとそれらを制御するメインプロセッサからなる情報処理装置の情報処理方法において、
前記子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持ステップと、
前記プロファイル情報に基づいて、前記子プロセッサに実行させる処理モジュールを選択する選択ステップと、
前記選択ステップの処理で選択された前記処理モジュールを前記子プロセッサに実行させる実行ステップと
を含むことを特徴とする情報処理方法。
【請求項１１】
システムバスに接続された複数の子プロセッサとそれらを制御するメインプロセッサからなる情報処理装置を制御するプロセッサに実行させるプログラムにおいて、
前記子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持ステップと、
前記プロファイル情報に基づいて、前記子プロセッサに実行させる処理モジュールを選択する選択ステップと、
前記選択ステップの処理で選択された前記処理モジュールを前記子プロセッサに実行させる実行ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、所定の処理を複数の子プロセッサに分散させて行う情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来から、システムバスに接続された複数の演算器(以下、子プロセッサと称する)に処理を分散させ高速に処理を行う演算装置が提案されている（特許文献１および特許文献２参照）
【０００３】
このようなシステムにおいて、ノイズ除去処理、エッジ強調処理、およびRGB画像変換処理等の複数の単一的な処理からなる画像の後処理等を逐次実行させる方法として、各単一的な処理を、それぞれ異なる子プロセッサに割り当てて実行させる方法（以下、適宜、単一モジュール処理と称する）や、単一的な処理をいくつかまとめて実行する実行オブジェクトを生成して、子プロセッサに実行させる方法（以下、適宜、複合モジュール処理と称する）が存在する。
【０００４】
単一モジュール処理は、１つの処理（画像の後処理）で使用するリソース（子プロセッサ内のメモリ量等）が多いため高速でその処理を行うことができるが、当然多くのリソースが必要となる。
【０００５】
複合モジュール処理は、使用するリソースは少ないが、単一モジュール処理と比べ処理が低速になる。複合モジュール処理における速度の低下は、特に、子プロセッサが１つのチップ内に実装されたマルチコアプロセッサにおいて顕著になる。これは子プロセッサのメモリ領域が少ないため、メインメモリへの記憶が必要となり、その分処理に時間がかかるためである。
【０００６】
通常、ある時点での利用可能なリソース（子プロセッサの数や使用可能な帯域）を事前に推定することは困難であるため、従来では、予め決められた上記のいずれかの一方の方法で処理が使用される。
【０００７】
【特許文献１】特開平9-18593号公報
【特許文献２】特開2002-351850号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら利用可能なリソースが動的に変化する場合、複合モジュール処理を使用したとき、子プロセッサが遊んでしまったり、単一モジュール処理を使用したとき、例えば実行時に他の処理が実行されてシステムバスの帯域が圧迫されたり、子プロセッサのコンテキストスイッチが頻繁に起こりリソースが制限される結果、全体としてのパフォーマンスが低下したりする問題があった。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、システムバスに接続された複数の子プロセッサに処理を分散させて効率よく処理を行うことができるようにするものである。
【課題を解決するための手段】
【００１０】
本発明の情報処理装置は、子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持手段と、プロファイル情報に基づいて、子プロセッサに実行させる処理モジュールを選択する選択手段と、選択手段により選択された処理モジュールを子プロセッサに実行させる実行手段とを備えることを特徴とする。
【００１１】
プロファイル情報は、処理モジュールの処理速度、使用するメモリ量、またはシステムバスの使用量であるようにすることができる。
【００１２】
処理モジュールの実行に応じたプロファイル結果を取得する取得手段と、プロファイル結果に基づいて、プロファイル情報を更新する更新手段とをさらに設けることができる。
【００１３】
処理モジュールが実行されている間のリソースの使用状態を監視する監視手段をさらに設け、選択手段には、リソースの使用状態に基づいて、子プロセッサに実行させる処理モジュールを再度選択させることができる。
【００１４】
リソースは、システムバスの帯域、処理モジュールを実行している子プロセッサの数、または子プロセッサの使用率であるようにすることができる。
【００１５】
過去のリソース情報を保持する過去データ保持手段をさらに設け、選択手段には、過去のリソース情報に基づいて、子プロセッサに実行させる処理モジュールを再度選択させるようにすることができる。
【００１６】
要求に応じて、所定の単体モジュールを結合して、複数の処理を実行する複合モジュールを生成する生成手段をさらに設けることができる。
【００１７】
生成手段により生成された複合モジュールを保存する保存手段をさらに設けることができる。
【００１８】
プロファイル情報は、入力データの依存関係情報を含み、生成手段は、依存関係情報に基づいて、複合モジュールを生成することができる。
【００１９】
本発明の情報処理方法は、子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持ステップと、プロファイル情報に基づいて、子プロセッサに実行させる処理モジュールを選択する選択ステップと、選択ステップの処理で選択された処理モジュールを子プロセッサに実行させる実行ステップとを含むことを特徴とする。
【００２０】
本発明のプログラムは、子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持ステップと、プロファイル情報に基づいて、子プロセッサに実行させる処理モジュールを選択する選択ステップと、選択ステップの処理で選択された処理モジュールを子プロセッサに実行させる実行ステップとを含むことを特徴とする。
【００２１】
本発明の情報処理装置および方法、並びにプログラムにおいては、子プロセッサが実行可能な処理モジュールのプロファイル情報が保持され、プロファイル情報に基づいて、子プロセッサに実行させる処理モジュールが選択され、選択された処理モジュールが子プロセッサにより実行される。
【発明の効果】
【００２２】
本発明によれば、所定の処理を、システムバスに接続された複数の子プロセッサに分散させて効率よく行うことができる。
【発明を実施するための最良の形態】
【００２３】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００２４】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
【００２５】
本発明の情報処理装置は、子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持手段（例えば、図７のモジュール保存部５１）と、プロファイル情報に基づいて、子プロセッサに実行させる処理モジュールを選択する選択手段（例えば、図７のモジュール選択部４２）と、選択手段により選択された処理モジュールを子プロセッサに実行させる実行手段（例えば、図７のモジュール制御部４３）とを備えることを特徴とする。
【００２６】
処理モジュールの実行に応じたプロファイル結果を取得する取得手段（例えば、図２２のモジュールプロファイル更新部１１１）と、プロファイル結果に基づいて、プロファイル情報を更新する更新手段（例えば、図２２のモジュール管理部４１）とをさらに設けることができる。
【００２７】
処理モジュールが実行されている間のリソースの使用状態を監視する監視手段（例えば、図１３のリソース監視部６１）をさらに設け、選択手段には、リソースの使用状態に基づいて、子プロセッサに実行させる処理モジュールを再度選択させることができる。
【００２８】
過去のリソース情報を保持する過去データ保持手段（図１６のリソース統計データ保存部７１）をさらに設け、選択手段（例えば、最適モジュール算出部８２）には、過去のリソース情報に基づいて、子プロセッサに実行させる処理モジュールを再度選択させるようにすることができる。
【００２９】
要求に応じて、所定の単体モジュールを結合して、複数の処理を実行する複合モジュールを生成する生成手段（例えば、図１８の複合モジュール生成部１０２）をさらに設けることができる。
【００３０】
生成手段により生成された複合モジュールを保存する保存手段（例えば、図１８のモジュール保存部１０４）をさらに設けることができる。
【００３１】
プロファイル情報は、入力データの依存関係情報（例えば、図２０の依存データ）を含み、生成手段は、依存関係情報に基づいて、複合モジュールを生成することができる。
【００３２】
本発明の情報処理方法は、子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持ステップ（例えば、図７のモジュール保存部５１の処理）と、プロファイル情報に基づいて、子プロセッサに実行させる処理モジュールを選択する選択ステップ（例えば、図９のステップＳ２）と、選択ステップの処理で選択された処理モジュールを子プロセッサに実行させる実行ステップ（例えば、図９のステップＳ３およびステップＳ４）とを含むことを特徴とする。
【００３３】
本発明のプログラムは、子プロセッサが実行可能な処理モジュールのプロファイル情報を保持する保持ステップ（例えば、図７のモジュール保存部５１の処理）と、プロファイル情報に基づいて、子プロセッサに実行させる処理モジュールを選択する選択ステップ（例えば、図９のステップＳ２）と、選択ステップの処理で選択された処理モジュールを子プロセッサに実行させる実行ステップ（例えば、図９のステップＳ３およびステップＳ４）とを含むことを特徴とする。
【００３４】
図１は、本発明を適用した画像処理装置１の構成を示す。
【００３５】
画像処理装置１は、メインプロセッサ１１、メインメモリ１２、複数の子プロセッサ（この例の場合、４個の子プロセッサ１３−１乃至１３−４）（以下、個々に区別する必要がない場合、単に子プロセッサ１３と称する）がシステムバス１５で結合されて構成されている。なお図１では、演算処理に必要な部分のみ図示しており、ハードディスクやネットワークインターフェイス、キーボード、モニタなどの外部インターフェイスの図示は省略されている。
【００３６】
メインプロセッサ１１は、標準的なMPU（Micro Processing Unit）であり、装置全体を制御する。具体的には、メインプロセッサ１１は、要求される処理に対応して行うべき「処理内容」と「リソース条件」に基づいて、管理している処理モジュールを子プロセッサ１３に提供して実行させる。
【００３７】
例えば、要求された画像の後処理に対応して行うべき「処理内容」が、ノイズ除去処理（ブロックノイズ除去：BNR（Block Noise Reducer））、画質改善処理（エッジ強調フィルタ）、およびフォーマット変換処理（RGB変換）であり、そのときの「リソース条件」が「子プロセッサは３個」、「帯域は100MB/s以下」であるとした場合、メインプロセッサ１１は、３個の子プロセッサ１３で実行し、「帯域が100MB以下」となる、「BNR」、「エッジ強調フィルタ」、および「RGB変換」を行う処理モジュール（または幾つかの処理モジュールの組み合わせ）を決定する。そしてメインプロセッサ１１は、決定した処理モジュールを、子プロセッサ１３に供給して実行させる。
【００３８】
なお「処理内容」は、「BNR」、「エッジ強調フィルタ」、および「RGB変換」の他、「コントラスト調整」、「モスキートノイズ除去」などがあり、「リソース条件」は、「子プロセッサの数」、「帯域」の他、「メモリの使用量」、「子プロセッサの使用率」、「処理モジュールの処理速度」、「システムバスの使用量」などがある。
【００３９】
各子プロセッサ１３は、図２に示すような構成を有している。すなわち子プロセッサ１３は、システムバスインタフェース２１を介して、メインプロセッサ１１やメインメモリ１２と通信し、メインメモリ１２からロードされた実行コードを受信したり、プロセッサ１１の指令を受信する。ローカルメモリ２２は、メインメモリ１２からロードされた実行コードやその他のデータを記憶する。演算器２３は、メインプロセッサ１１からの指令に従ってローカルメモリ２２に記憶されている実行コードを演算し、所定の処理を実行する。
【００４０】
ここで、画像の後処理としての、ノイズ除去処理（ブロックノイズ除去：BNR）、画質改善処理（エッジ強調フィルタ）、およびフォーマット変換処理（RGB変換）の処理モジュールが実行される場合の子プロセッサ１３の動作を説明する。
【００４１】
実際の処理の割り当ては、後述するようになされてその処理を実行する処理モジュールが各子プロセッサ１３にロードされるが、ここでは、図３に示すように「BNR」の処理モジュールが、子プロセッサ１３−１に、「エッジ強調フィルタ」の処理モジュールが、子プロセッサ１３−２に、そして「フォーマット変換」の処理モジュールが、子プロセッサ１３−３に、それぞれロードされたものとする。すなわち単一モジュール処理により、画像の後処理が逐次実行される。
【００４２】
子プロセッサ１３−１にロードされたブロックノイズ除去の処理モジュールは、メインメモリ１２に記憶されている、オリジナルのYUV画像が保存されている画像データＤａからデータを読み込み、ノイズを除去し、その結果を画像データＤｂへ出力する。
【００４３】
子プロセッサ１３−２にロードされたエッジ強調フィルタの処理モジュールは、メインメモリ１２に記憶されている画像データＤｂからデータを読み込み、エッジ強調処理を施した後、画像データＤｃへ出力する。
【００４４】
子プロセッサ１３−３にロードされたフォーマット変換モジュールは、画像データＤｃからデータを読み込み、RGBに変換した結果を画像データＤｄへ出力する。
【００４５】
すなわちこの場合のデータフローは、図４に示すようになる。またフレーム単位での処理の流れは、図５に示すようになる。例えば子プロセッサ１３−１でフレームＦ０の画像に対してBNR処理が行われた後（Ｆ'０）、子プロセッサ１３−２でエッジ強調処理が行われ（Ｆ''０）、その後、子プロセッサ１３−３でフォーマット変換が行われる。
【００４６】
なお子プロセッサ１３のローカルメモリ２２のサイズによって、画像データを一度に読み込むことができない場合、画像データを一部ずつローカルメモリ２２に読み込み、処理結果をメインメモリ１２に出力するという処理が繰り返し実行させる。
【００４７】
図３の例では、単一モジュール処理で画像の後処理を行う場合を例として子プロセッサ１３の動作を説明したが、次に、複合モジュール処理で画像の後処理を行う場合の子プロセッサ１３の動作を説明する。
【００４８】
この例の場合、複合モジュールは、「BNR」、「エッジ強調フィルタ」、および「RGB変換」を順に行うものであり、図６の例では、子プロセッサ１３−１にロードされる。すなわち子プロセッサ１３−１にロードされたこの処理モジュールは、メインメモリ１２の画像データＤａに保存されたオリジナルのYUV画像を読み込み、BNR、エッジ強調フィルタ、およびフォーマット変換を逐次行った後、処理結果を画像データＤｂへ出力する。
【００４９】
なお複合モジュールを用いた方法は、単一モジュールを複数の子プロセッサ１３に配置した場合と比べ、１枚の画像を処理する場合においても、低速になる可能性がある。単一モジュールの方が高速となる理由としては、以下のものがあげられる。
【００５０】
・中間処理結果を多く保存することができる。データ処理においては、中間結果を一時的に保存する必要が生じるが、メモリがないと一度破棄して再計算する必要が生じる場合がある。また、中間結果の保存形式を一度メモリ消費量の少ない形に変換する必要が生じることもある。たとえば、整数ベクトル型で出力された処理結果をcharベクトル型に変換して保存し、再び整数ベクトル型に変換して使用する場合などである。メモリ量が多ければこのような変換が不要になる分高速になりうる。
・オブジェクトコードを大きくすることができる。すなわち、関数のインライン展開や、ループアンロールなどの高速化手法では、実行コードのサイズが増加する。１つのモジュールが使用できるローカルメモリの量が多ければ、より多くインライン展開やループアンロールが行える。
・利用可能メモリが多ければ、まったく異なるアルゴリズムを使用することができる可能性がある。その場合、大きな速度改善が望める。
【００５１】
図７は、メインプロセッサ１１上で動作するソフトウェアモジュール、すなわち画像処理装置１の機能的構成例を示している。
【００５２】
システム制御部３１は、画像処理部３２に対して、要求された処理に応じた、行うべき「処理内容」と、利用可能なリソース（「リソース条件」）を供給し、その実行を要求する。
【００５３】
例えば、「処理内容」が、「BNR」、「エッジ強調フィルタ」、および「RGB変換」で、「リソース条件」が、「子プロセッサは２個」、および「帯域は10MB/s以下」であることや、「処理内容」が、「BNR」、「エッジ強調フィルタ」、「コントラスト調整」、「モスキートノイズ除去」、および「RGB変換」で、「リソース条件」が、「子プロセッサは４個」、および「帯域は100MB/s以下」であることが、画像処理部３２に通知される。
【００５４】
画像処理部３２は、画像処理を行う処理モジュールなどを管理し、システム制御部３１からの「処理内容」と「リソース条件」に応じた処理モジュールを、子プロセッサ管理部３３に提供する。
【００５５】
子プロセッサ管理部３３は、画像処理部３２の指示に従って、供給された処理モジュールの実行コードを子プロセッサ１３にロードしたり、それを起動させたりする。
【００５６】
画像処理部３２の詳細について説明する。画像処理部３２は、モジュール管理部４１、モジュール選択部４２、およびモジュール制御部４３から構成されている。
【００５７】
モジュール管理部４１は、モジュール保存部５１に保存されている、図８に示すような、子プロセッサ１３上で動作する処理モジュールに関するプロファイル情報５１Ａに基づいて、処理モジュールを管理している。
【００５８】
図８中のプロファイル情報５１Ａの「id」は、処理モジュールのＩＤ（Identification）であり、「object_name」は、処理モジュールの名前である。処理モジュールの実体が特定のパスに存在する場合、このobject_nameからそのパスに辿り着くことができる。
【００５９】
「algorithm」は、その処理モジュールで実行する画像処理アルゴリズムを順にCSV（Comma Separated Value）形式で記述したものである。
【００６０】
「cycle」は、所定の基準画像でその処理モジュールを実行するのに必要なサイクル数である。「data flow」は、基準画像をその処理モジュールで実行するときにメインメモリ１２やローカルメモリ２２間で流れるデータの量である。
【００６１】
モジュール選択部４２は、モジュール管理部４１で管理されている処理モジュールのうち、システム制御部３１から通知された「処理内容」に応じた処理モジュールについて、「リソース条件」に応じた処理モジュールを、プロファイル情報５１Ａに基づいて選択する。モジュール選択部４２は、選択した処理モジュールを、モジュール管理部４１から取得するとともに、モジュール制御部４３に供給する。
【００６２】
モジュール制御部４３は、システム制御部３１からの要求（「処理内容」や「リソース条件」）を受信し、モジュール選択部４２に供給する。モジュール制御部４３はまた、システム制御部３１からの要求に応じて、モジュール選択部４２から供給された処理モジュールを、子プロセッサ管理部３３に供給し、所定の子プロセッサ１３に、その処理モジュールを実行させる。
【００６３】
次に、画像処理部３２の動作を、図９のフローチャートを参照して説明する。
【００６４】
ステップＳ１において、画像処理部３２のモジュール制御部４３は、システム制御部３１からの「処理内容」と「リソース条件」の通知を入力し、モジュール選択部４２に供給する。
【００６５】
次に、ステップＳ２において、モジュール選択部４２は、使用する処理モジュールを計算し、モジュール管理部４１からその処理モジュールを取得する。モジュール選択部４２は、取得した処理モジュールを、モジュール制御部４３に供給する。
【００６６】
ここで、この処理モジュールの計算方法について具体的に説明する。プロファイル情報５１Ａには、処理に必要な「サイクル数」（cycle）と「データフロー量」（data flow）が格納されている。「サイクル数」からは、処理に必要な「速度」が、「データフロー量」と「サイクル数」からは、必要な「帯域」がわかるので、モジュール選択部４２は、プロファイル情報５１Ａを、モジュール管理部４１から取得し、プロファイル情報５１Ａのこの２つの情報から、「リソース条件」を満たす「処理内容」を実行する処理モジュールを選択する。
【００６７】
「処理内容」が、例えば「BNR」、「エッジ強調フィルタ」、および「RGB変換」である場合、このときの処理モジュールの組み合わせのパターンは、図１０に示すように、「BNR」の処理モジュールbnr、「エッジ強調フィルタ」の処理モジュール ee、および「RGB変換」の処理モジュールrgbをそれぞれ使用するパターン（図１０Ａ）、「BNR」と「エッジ強調フィルタ」を順に行う処理モジュールbnr_ee、および処理モジュールrgbを使用するパターン（図１０Ｂ）、処理モジュールbnr、および「エッジ強調フィルタ」と「RGB変換」を順に行う処理モジュールee_rgbを使用するパターン（図１０Ｃ）、並びに「BNR」、「エッジ強調フィルタ」、および「フォーマット変換」を順に行う処理モジュールbnr_ee_rgbのみ使用する４通り考えられる。
【００６８】
そこでこの場合モジュール選択部４２は、図１１に示すように、それぞれの場合の必要なサイクル数などを、プロファイル情報５１Ａから読み出してまとめる。図１１中、「子プロセッサ数」の欄は、それぞれの組み合わせを並列して実行するのに必要な子プロセッサ数を、「p1」、「p2」、および「p3」の欄は、それぞれの子プロセッサ１３でかかるサイクル数を、「画像１枚処理に必要なcycle数」の欄は、レイテンシを、そして「画像1枚処理の平均cycle数」の欄は、スループットをそれぞれ示している。
【００６９】
なお例えば処理モジュールbnr_ee_rgbを複数の子プロセッサ１３にロードし（ＩＤが（Ｅ）のパターン）、別のフレーム画像を処理することも、処理にフレーム間の依存関係がなければ可能である。また１つの子プロセッサ１３に、処理モジュールbnr、処理モジュールee、および処理モジュールrgbを順にロードして実行する方法に関しては、オブジェクトロードのオーバヘッドが大きいとして除外している。
【００７０】
ここで「リソース条件」が、「子プロセッサ数は２個」である場合、ＩＤが（Ｂ）、（Ｃ）、（Ｄ）、および（Ｅ）のパターンが可能となるが、最も性能がよいのは、ＩＤが（Ｃ）のパターンとなるので、そのパターンを構成する処理モジュールが選択される。
【００７１】
また、「リソース条件」が、「データフロー量が10Mbyte以下」である場合、その条件を満たすパターンは、ＩＤが（Ｄ）のパターンとなるので、そのパターンを構成する処理モジュールが選択される。
【００７２】
このように処理モジュールを選択するとモジュール選択部４２は、モジュール管理部４１からその処理モジュールを取得して、モジュール制御部４３に供給する。
【００７３】
図９に戻りステップＳ３において、モジュール制御部４３は、モジュール選択部４２から供給された処理モジュールを、子プロセッサ管理部３３を介して、子プロセッサ１３にロードする。
【００７４】
次に、ステップＳ４において、モジュール制御部４３は、ロードしたモジュールを適切な順番とタイミングで起動させ、子プロセッサ１３に処理を実行させる。
【００７５】
ステップＳ５において、システム制御部３１は、メインメモリ１２に出力された子プロセッサ１３の処理モジュールの実行の結果（例えば、画像）を、メインメモリ１２の適当な位置に保存する。
【００７６】
以上のようにして、「処理内容」および「リソース条件」に応じた処理モジュールの組み合わせが選択され、その処理モジュールにより分散的に画像の後処理が行われる。
【００７７】
なお図１１に示した「データフロー量」は、処理単位で一定であったため、単純に、処理モジュールを結合するとその分だけ、つまり子プロセッサ１３の使用数に比例して、総データフロー量が減少する。しかし、一般には、モジュールの組み合わせによって、子プロセッサ１３の使用数が同じでも、総データフロー量が変化しうる。具体的な理由としては、以下の2点が挙げられる。
【００７８】
・モジュールの出力データが大きくなる場合
例えば、画像処理でRGBのみを入力とする画質改善処理があるとする。その場合、図１２に示したように、複合モジュールを図１２Ｂの形で作成したほうが、図１２Ｃの形で作成するよりデータフロー量が減少する。
・処理途中のデータをメインメモリ１２に保存する必要がある場合
子プロセッサ１３のローカルメモリ２２が小さい場合には、処理途中データをメインメモリ１２に退避する必要がある場合がある。そのような処理モジュールを他の処理モジュールと結合させる場合には、よりオブジェクトサイズが小さい処理モジュールと結合させることで、処理途中データをローカルメモリ２２に保存するためのバッファを大きくすることができるようになり、ローカルメモリ２２およびメインメモリ１２間のデータフロー量が減少する。
【００７９】
したがって、「リソース条件」として「データフロー量」が与えられた場合には、使用できる子プロセッサ１３の数が同じとなる組み合わせの中からでも、「データフロー量」が少ないものを選択する必要がある。
【００８０】
図１３は、画像処理装置１の他の機能的構成例（メインプロセッサ１１上で動作する他のソフトウェアモジュールの構成例）を示している。この構成には、図７に示した画像処理部３２と接続するリソース監視部６１がさらに設けられている。
【００８１】
リソース監視部６１は、現在のリソース使用量を監視し、画像処理部３２のモジュール制御部４３へ通知する。リソース監視部６１が存在することで、バス１５の使用帯域など動的に変化するリソースの使用状態については、システム制御部３１は逐次知らせる必要なく自動的に最適なモジュール配置に切り替えることができる。
【００８２】
この場合には、システム制御部３１は、利用可能な子プロセッサ数の最大値など、上限の制約のみを、「リソース条件」として与えるだけでよく、例えば他の処理部が子プロセッサ１３を多く使用し始めるとリソース監視部６１から通知されたリソースの使用状態に応じて、画像処理部３２は、処理モジュールの組み合わせを変更する。
【００８３】
リソース監視部６１の動作を、図１４のフローチャートを参照して説明する。
【００８４】
ステップＳ１１において、リソース監視部６１は、まず、現在のリソース使用量（例えば、使用している子プロセッサ１３の数や帯域）を取得する。
【００８５】
次にステップＳ１２において、リソース監視部６１は、それを前回取得したリソース使用量と比較してリソース変化量を計算する。なおこの変化量の計算は、リソース毎に行われる。
【００８６】
ステップＳ１３において、リソース監視部６１は、リソース変化量が予め設定された閾値以上であるか否かを判定する。この判定も、リソース毎にそれぞれの閾値に基づいて行われる。
【００８７】
ステップＳ１３で、変化量が閾値以上であると判定された場合、ステップＳ１４に進み、リソース監視部６１は、現在のリソース使用状態を、画像処理部３２のモジュール制御部４３へ通知する。一方、閾値より小さいと判定された場合、処理はそのまま終了する。
【００８８】
以上の処理が所定のタイミングで繰り返し行われる。
【００８９】
次に、ステップＳ１４での通知を受けた画像処理部３２の動作を、図１５のフローチャートを参照して説明する。
【００９０】
ステップＳ２１において、画像処理部３２のモジュール制御部４３は、リソース監視部６１からの現在のリソース使用状態を入力し、モジュール選択部４２に供給する。
【００９１】
ステップＳ２２において、モジュール選択部４２は、モジュール制御部４３から供給されたリソース使用状態に基づいて、最適な処理モジュールとその配置を計算する。なおここでの処理は、基本的には、図９のステップＳ２における処理と同様に、プロファイル情報５１Ａが参照されて、処理モジュールが選択される。
【００９２】
ステップＳ２３において、モジュール選択部４２は、ステップＳ２２で計算した処理モジュールが現在の使用する処理モジュールと異なるか否かを判定し、異なると判定した場合、ステップＳ２４に進み、速度向上の推定値があらかじめ定めた閾値以上であるか否かを判定する。
【００９３】
ステップＳ２４で、速度向上の推定値が閾値以上であると判定された場合、ステップＳ２５に進み、モジュール選択部４２は、ステップＳ２２で計算した処理モジュールをモジュール管理部４１から取得して、モジュール制御部４３に供給する。モジュール制御部４３は、供給された処理モジュールを、子プロセッサ管理部３３に介して、子プロセッサ１３に再ロードする。なおこのとき、現在処理中のモジュールがあれば、子プロセッサ管理部３３は、その終了命令を送るとともに、現在処理中のフレームの処理終了後に処理モジュールをロードする。
【００９４】
なお処理モジュールの組み合わせによっては、前の処理モジュールがメインメモリ１２に出力した結果を入力として利用できる場合があるので、入力データを適切に設定する必要がある。
【００９５】
以上のようにして、現在のリソースの使用状態に基づいて、処理モジュールが再度選択されて再ロードされる。
【００９６】
なおここでの処理モジュールの再ロードには、オーバヘッドがあるため、再ロードが頻繁に繰り返されると速度向上が相殺されてしまう可能性がある。そのための対策として、ステップＳ２４における速度向上の推定値の閾値を適応的に変化させるようにしてもよい。具体的には、例えば、オブジェクトの再ロードの直後は、閾値を一時的に大きくし、その後時間とともにもとの閾値に戻すようにする。また、前回と今回の速度向上の推定値の差を保持しておき、その速度向上の推定値の総和がオーバヘッド分を上回るまでは再ロードを行わない（閾値を無限大とする）ようにすることもできる。
【００９７】
また過去のリソース使用状態の統計情報に基づいて、各処理モジュールの実際の速度を算出し（期待値）、ステップＳ２２での処理モジュールの計算において、計算した最も期待値が小さい（速度が速い）処理モジュールを選択するようにすることもできる。
【００９８】
このような方法を用いると、利用可能なリソースの状態が状態Ａと状態Ｂであって、状態Ａは、処理モジュール１にとって最適であるが、処理モジュール２の実行速度が遅くなり、状態Ｂは、処理モジュール２にとって最適であるが、処理モジュール１の実行速度が遅くなり、結局処理モジュール１および処理モジュール２は、状態Ａおよび状態Ｂにおいては最適ではない場合においては、状態Ａおよび状態Ｂで、一定以上の速度で実行可能な処理モジュール３が存在したとき、平均としてパフォーマンスの高いその処理モジュール３を選択し続けることができる。
【００９９】
この方法を実行する構成としては、図１６に示すように、図１３に示すモジュール選択部４２に代えてモジュール選択部７１が画像処理部３２に設けられる。
【０１００】
モジュール選択部７１のリソース統計データ保存部８１は、過去のリソース使用状態におけるサイクル数を記憶している。
【０１０１】
最適モジュール算出部８２は、リソース統計データ保存部８１に保存されている過去のリソース情報と、モジュール管理部４１のモジュール保存部５１に保存されているプロファイル情報５１Ａに基づいて、期待値を算出する。
【０１０２】
具体的には、最適モジュール算出部８２は、保存された過去のリソース情報を、ランダムにサンプリングし、そのリソース使用状態でのサイクル数を処理モジュールごとに計算する。そして最適モジュール算出部８２は、この処理をN回繰り返し、総和を求めることで、それぞれの処理モジュールのサイクル数の期待値（のN倍）を求める。
【０１０３】
この処理のフローチャートを、図１７に示す。すなわちステップＳ３１において、サンプリング回数をカウントするカウンタｉに０が初期設定された後、ステップＳ３２において、リソース統計データ保存部８１から過去のリソース使用状態の１つがランダムに選択される。
【０１０４】
次にステップＳ３３において、存在する処理モジュールの１つが選択され、ステップＳ３４において、その処理モジュールの、ステップＳ３２で選択されたリソース使用状態でのサイクル数が計算される。
【０１０５】
ステップＳ３５において、ステップＳ３４で計算されたサイクル数が、処理モジュール毎に加算される。
【０１０６】
次にステップＳ３６において、すべての処理モジュールが選択されたか否かが判定され、まだ選択されていない処理モジュールが存在すると判定された場合、ステップＳ３３に戻り、他の処理モジュールが選択されて、ステップＳ３４以降の処理が行われる。すなわちステップＳ３２で選択されたリソースの使用状態における、各処理モジュールのサイクル数が求められる。
【０１０７】
ステップＳ３６で、すべての処理モジュールが選択されたと判定された場合、ステップＳ３７に進む。ステップＳ３７において、カウントｉ＜Ｎであるか否かが判定され、カウンタｉ＜Ｎであると判定された場合、ステップＳ３８に進む。そしてステップＳ３８で、カウンタｉが１だけインクリメントされた後、ステップＳ３２に戻り、他の使用状態が１つ選択されて、ステップＳ３３以降の処理が行われる。すなわちＮ個リソースの使用状態における各処理モジュールのサイクル数の総和が求められる。
【０１０８】
ステップＳ３７で、カウンタｉ＝Ｎであると判定されたとき、ステップＳ３８に進み、サイクル数の総和が最も小さい処理モジュールが求められる。
【０１０９】
図１８は、画像処理装置１の他の機能的構成例を示している。この構成には、図７に示す画像処理部３２のモジュール管理部４１に代えて、モジュール管理部９１が設けられている。
【０１１０】
モジュール管理部９１は、複数のフィルタ処理を行う複合モジュールを動的に生成する。モジュール管理部９１の構成について説明する。
【０１１１】
モジュールの管理部９１の制御部１０１は、モジュール選択部４２から、複数のフィルタ処理を実行する複合モジュールの要求があった場合、その旨を複合モジュール生成部１０２に供給する。
【０１１２】
複合モジュール生成部１０２は、制御部１０１から、複数のフィルタ処理を実行する複合モジュールの要求があった旨の通知を受けると、その要求に応じて動的に複合モジュールを生成する。
【０１１３】
例えば、制御部１０１から、「BNR」と「コントラスト改善」を実行する複合モジュールが要求された場合、複合モジュール生成部１０２はそれを生成し、制御部１０１へ返す。また、「BNR」と「コントラスト改善」を実行する複合モジュールであって、「データフロー量が10MByte以下」という要求があった場合、複合モジュール生成部１０２は、その「リソース条件」に合う複合モジュールを生成し、それを制御部１０１に返す。
【０１１４】
単体モジュールソース保存部１０３は、複合モジュール生成部１０２で複数の機能を有する複合モジュール（フィルタ）を生成するときに、その元となる単体モジュールのソースを保存している。単体モジュールのソースは、具体的には、例えば、１つの画像処理を行う処理モジュールのリンク前オブジェクトファイルであったり、ソースコードであったりする。
【０１１５】
モジュール保存部１０４は、子プロセッサ１３上で動作する処理モジュールを保存する。ここで、保存される処理モジュールは、前実施例と同様に、事前に準備されたものであってもよいし、複合モジュール生成部１０２で生成されたものであってもよい。
【０１１６】
次に、複合モジュールの要求があったときの、モジュール管理部９１の動作を、図１９のフローチャートを参照して説明する。
【０１１７】
ステップＳ５１において、モジュール管理部９１の制御部１０１は、複合モジュール生成部１０２に複合モジュールの生成を要求する。このときの「処理内容」（例えば、「BNR」と「コントラスト改善」）と「リソース条件」（例えば、データフロー10MByte以下）も複合モジュール生成部１０２に通知される。
【０１１８】
ステップＳ５２において、複合モジュール生成部１０２は、単体モジュールソース保存部１０３に保持されている単体モジュールの、図２０に示すようなプロファイル情報１０３Ａの取得を要求する。単体モジュールソース保存部１０３は、提供可能な単体モジュールとそのプロファイル情報１０３Ａを保持しており、そのプロファイル情報を複合モジュール生成部１０２に供給する。
【０１１９】
プロファイル情報１０３Ａの「名前」は、単体モジュールを一意に指定できるラベルであり、「処理」は、モジュールが行う処理の名称であり、「object size」は、モジュール自体のサイズであり、「必要メモリ」は、モジュールがアロケートするローカルメモリ量であり、「cycle数」は、処理のサイクル数であり、「data(in)」は、入力データ量であり、「data(out)」は、出力データ量であり、そして「data(med)」は、処理の中間結果をメインメモリ１２に退避させるために必要なデータ量である。
【０１２０】
ステップＳ５３において、複合モジュール生成部１０２は、取得したプロファイル情報１０３Ａに基づいて、使用する単体モジュールを決定する。このとき、制御部１０１から与えられた「リソース条件」を最もよく満たす組み合わせが選択される。以下に、この処理を具体的に説明する。
【０１２１】
例えば要求された「処理内容」が「BNR」と「エッジ強調フィルタ」である場合、いまの例では、「BNR」の単体モジュールは、３個の単体モジュールbnr_1、bnr_2、bnr_3があり、「エッジ強調フィルタ」の単一モジュールも３個の単体モジュールee_1、 ee_2、ee_3があるので、その組み合わせは9通り存在し、それぞれの組み合わせのときの、図２１に示すようなプロファイルがまとめられる。
【０１２２】
そして「リソース条件」が、例えば「子プロセッサは１個で、使用可能ローカルメモリは600バイト以下」である場合、図２１の「必要メモリ量」が600バイト以下の中で、最も「サイクル数」の少ない、単体モジュールbnr_1 と単体モジュールee_3の組み合わせが選択される。
【０１２３】
また「リソース条件」が「子プロセッサは１個で、使用可能ローカルメモリは1000バイト以下、データフロー量は30以下」である場合には、単体モジュールbnr_1 と単体モジュールee_1の組み合わせが選択される。
【０１２４】
図１９に戻り、ステップＳ５４において、複合モジュール生成部１０２は、ステップＳ５３で選択した使用する単体モジュールを、単体モジュールソース保存部１０３から取得し、それらを組み合わせて複合モジュールを生成する。複合モジュール生成部１０２は、生成した複合モジュールを制御部１０１に供給する。この複合モジュールは子プロセッサ１３で動作可能な実行オブジェクトである。
【０１２５】
ステップＳ５５において、制御部１０１は、複合モジュール生成部１０２から供給された複合モジュールをモジュール保存部１０４にそのプロファイルとともに保存する。このとき、モジュール保存部１０４には、動的に生成されたモジュール（複合モジュール生成部１０２で生成されたモジュール）であることが記録される。これは、多くの複合モジュールが生成されて、モジュール保存部１０４のメモリ領域が足りなくなったときに、削除の対象とするためである。動的に生成された複合モジュールは、必要となれば再び生成することができるため消去してもかまわない。
【０１２６】
以上のようにして、複数の機能を行う複合モジュールが生成される。
【０１２７】
なおここで、単体モジュールソース保存部１０３では、コンパイル済みオブジェクトを、１つのアルゴリズムに対して複数保存していてもよいし、あるいは、１つのアルゴリズムに対して１つのソースコードを保持しておき、要求があったときに、コンパイルオプションの変更により異なるオブジェクトを生成してもかまわない。ただし、この場合単体モジュールのプロファイル情報１０３Ａのサイクル数は推定値となる。
【０１２８】
また、ここでいう単体モジュールは、１つの画像処理を行うモジュールだけでなく、複数の処理を行うものでもかまわない。すなわち、ここでいう「単体」とは複数組み合わせることで複合モジュールを生成することのできるモジュールという意味である。
【０１２９】
また以上においては、処理の手順が「BNR」、「エッジ強調フィルタ」、そして「フォーマット変換」である場合を例として説明したが、可換なフィルタ（適応に順番を入れ替えても結果が変わらないフィルタの組）である場合や、処理を入れ替えても結果の差が少なくシステム制御部３１の要求に処理の順番が含まれない場合には、どの順番にフィルタを組み合わせるかは自由である。
【０１３０】
またある単体モジュール（フィルタモジュール）が画像データを処理すべき方向が定まっている場合には、異なる処理方向のフィルタを組み合わせると途中結果をメインメモリ１２に保存する必要が生じオーバヘッドが大きくなる。例えば、「BNR」フィルタは画像を横方向に処理する必要があり、「コントラスト改善」フィルタは画像を縦方向に処理する必要がある場合には、この２つのフィルタを組み合わせることは適当でない。
【０１３１】
そこで、図２０の「依存データ」の欄にあるように、そのフィルタモジュールの処理方向の情報を保存しておけば、モジュール選択時には、モジュール管理部９１の複合モジュール生成部１０２は、この情報を加味して組み合わせを決定することができる。依存データの欄の「水平方向」は、画像の水平方向に処理を行う必要があることを示し、「垂直方向」は画像の垂直方向に処理を行う必要があることを示し、「＊」は任意の方向で処理ができることを示している。
【０１３２】
図２０で、「エッジ強調」と「RGB変換」のモジュールを組み合わせる場合を例として説明する。このとき、単体モジュールee_2と単体モジュールee_3は、任意の方向で処理可能であるので、単体モジュールrgb_1、単体モジュールrgb_2、単体モジュールrgb_3のすべてと結合可能である。しかし、単体モジュールee_1を用いる場合には、単体モジュールrgb_1を使用することはできないので、単体モジュールrgb_2と単体モジュール rgb_3のどちらかを選択する必要がある。結局、リソースの制限を考えないと、単体モジュールee_2と単体モジュール rgb_1の組み合わせが総サイクル数850となり最適な組み合わせとなる。
【０１３３】
図２２は、画像処理装置１の他の機能的構成例を示している。この構成には、図７に示す画像処理部３２に、モジュールプロファイル更新部１１１がさらに設けられている。
【０１３４】
動的に複合モジュールが生成された場合、特に、ソースコードから動的に更新された場合には、その複合モジュールがどのくらいの性能であるかが不明である。そこで、モジュールプロファイル更新部１１１は、実際に生成された複合モジュールが動作した結果をモジュール管理部４１へフィードバックする。
【０１３５】
プロファイル更新の具体的な手順を、図２３のフローチャートを参照して説明する。
【０１３６】
ステップＳ６１において、画像処理部３２のモジュール制御部４３は、処理モジュールの処理が終了したときにモジュール実行終了通知をモジュールプロファイル更新部１１１へ送る。この時、同時に、処理に要した時間や、データフロー量などのプロファイル結果もモジュールプロファイル更新部１１へ送られる。どのモジュールに関して、どれ位の頻度で終了通知が欲しいかは、モジュールプロファイル更新部１１１がモジュール制御部４３に対して設定することができる。
【０１３７】
ステップＳ６２において、モジュールプロファイル更新部１１１は、実行結果のプロファイル情報をモジュール管理部４１へ送信し、モジュール管理部４１は、その情報をもとに処理モジュールのプロファイル情報５１Ａを更新する。具体的にはモジュールプロファイルが存在しなければ、与えられた値が設定され、すでに値があれば、例えば、既存の値と新しい値の平均値が設定される。
【０１３８】
以上のようにしてプロファイル情報５１Ａが更新される。
【０１３９】
なお以上においては、画像処理を例として説明するが、本発明は画像処理以外にも、音声処理など一般の信号処理、データ処理に対して適用することができる。
【０１４０】
また、本明細書において、記録媒体により提供されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１４１】
【図１】本発明を提供した画像処理装置１の構成例を示すブロック図である。
【図２】図１の子プロセッサ１３の構成例を示すブロック図である。
【図３】子プロセッサ１３の動作を説明する図である。
【図４】データフローを示す図である。
【図５】子プロセッサ１３の処理を、フレーム単位で説明する図である。
【図６】子プロセッサ１３の他の動作を説明する図である。
【図７】図１の画像処理装置１の機能的構成例を示すブロック図である。
【図８】図７のモジュール保存部５１に保存されているプロファイル情報５１Ａを示す図である。
【図９】図７のモジュール選択部４２の動作を説明するフローチャートである。
【図１０】図７のモジュール選択部４２の動作を説明する図である。
【図１１】所定の処理モジュールのプロファイルを示す図である。
【図１２】モジュール選択部４２の動作を説明する他の図である。
【図１３】図１の画像処理装置１の他の機能的構成例を示すブロック図である。
【図１４】図１３のリソース監視部６１の動作を説明するフローチャートである。
【図１５】図１３のモジュール選択部４２の動作を説明するフローチャートである。
【図１６】図１の画像処理装置１の他の機能的構成例を示すブロック図である。
【図１７】図１６のモジュール選択部７１の動作を説明するフローチャートである。
【図１８】図１の画像処理装置１の他の機能的構成例を示すブロック図である。
【図１９】図１８のモジュール管理部９１の動作を説明するフローチャートである。
【図２０】図１８の単体モジュールソース保存部１０３に保存されているプロファイル情報を示す図である。
【図２１】所定の処理モジュールのプロファイルを示す図である。
【図２２】図１の画像処理装置１の他の機能的構成例を示すブロック図である。
【図２３】プロファイル更新処理を説明するフローチャートである。
【符号の説明】
【０１４２】
１  画像処理装置，  １１  メインプロセッサ，  １２  メインメモリ，  １３  子プロセッサ，  １５  バス，  ２１  システムバスインタフェース，  ２２  ローカルメモリ，  ２３  演算器，  ３１  システム制御部，  ３２  画像処理部，  ３３  子プロセッサ管理部，  ４１  モジュール管理部，  ４２  モジュール選択部，  ４３  モジュール制御部，  ５１  モジュール保存部，  ６１  リソース監視部，  ７１  モジュール選択部，  ８１  リソース統計データ保存部，  ８２  最適モジュール算出部，  ９１  モジュール管理部，  １０１  制御部，  １０２  複合モジュール生成部，  １０３  単体モジュールソース保存部，  １０４  モジュール保存部，  １１１  モジュールプロファイル更新部
【図１】
2006099156.tif 000003
【図２】
2006099156.tif 000004
【図３】
2006099156.tif 000005
【図４】
2006099156.tif 000006
【図５】
2006099156.tif 000007
【図６】
2006099156.tif 000008
【図７】
2006099156.tif 000009
【図８】
2006099156.tif 000010
【図９】
2006099156.tif 000011
【図１０】
2006099156.tif 000012
【図１１】
2006099156.tif 000013
【図１２】
2006099156.tif 000014
【図１３】
2006099156.tif 000015
【図１４】
2006099156.tif 000016
【図１５】
2006099156.tif 000017
【図１６】
2006099156.tif 000018
【図１７】
2006099156.tif 000019
【図１８】
2006099156.tif 000020
【図１９】
2006099156.tif 000021
【図２０】
2006099156.tif 000022
【図２１】
2006099156.tif 000023
【図２２】
2006099156.tif 000024
【図２３】
2006099156.tif 000025