(57)【要約】【課題】  プロセッサ上で実行されるメディア処理プログラムのシミュレーションデバッグ方法に係り、特にメディア処理プログラムの停止方法、データ表示方法に関し、メディア処理プログラムのシミュレーションデバッグを行う場合に、ＤＭＡ転送に着目し、データに属性値付けを行い、属性値を指定したプログラムの停止機能およびデータ表示機能を提供することにより、メディア処理プログラムの効率的なデバッグが可能となる。【解決手段】  プロセッサのソフトウェア開発を支援するシミュレーションデバッグ方法であって、データに属性値を付与するステップと、シミュレーション実行時に入力データの属性値から演算結果の属性値を決定するステップと、プログラム実行停止条件にハードウェア資源の属性値を指定するステップと、前記ハードウェア資源の属性値から停止条件を判定するステップとを備えることを特徴とするものである。【選択図】    図５
2006127203.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのソフトウェア開発を支援するシミュレーションデバッグ方法であって、
データに属性値を付与するステップと、
シミュレーション実行時に入力データの属性値から演算結果の属性値を決定するステップと、
プログラム実行停止条件にハードウェア資源の属性値を指定するステップと、
前記ハードウェア資源の属性値から停止条件を判定するステップと、を備えることを特徴とするシミュレーションデバッグ方法。
【請求項２】
プロセッサのソフトウェア開発を支援するシミュレーションデバッグ方法であって、
ＤＭＡ転送シミュレーション時に属性値を決定するステップと、
シミュレーション実行時に入力データの属性値から演算結果の属性値を決定するステップと、を備えることを特徴とするシミュレーションデバッグ方法。
【請求項３】
前記ＤＭＡ転送シミュレーション時に属性値を決定するステップが、ＤＭＡ転送処理の回数に基づいて属性値付けを行うことを特徴とする請求項２に記載のシミュレーションデバッグ方法。
【請求項４】
前記属性値を決定するステップが、一定期間での入力属性値の集合から決定するステップであることを特徴とする請求項１ないし請求項３のいずれかに記載のシミュレーションデバッグ方法。
【請求項５】
変数あるいはメモリ内容を属性値を指定することによって選択的に表示するステップを備えることを特徴とする請求項１ないし請求項４のいずれかに記載のシミュレーションデバッグ方法。
【請求項６】
パイプライン処理を構成するハードウェア資源の構成を指定するステップと、
ハードウェア資源の属性値を記録するステップと、
ハードウェア資源の属性値を時系列に表示するステップと、を備えることを特徴とする請求項１ないし請求項４のいずれかに記載のシミュレーションデバッグ方法。
【請求項７】
プロセッサのソフトウェア開発を支援するシミュレーションデバッグ方法であって、
パイプライン処理を構成するハードウェア資源の情報を指定するステップを備えることを特徴とするシミュレーションデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ上で実行されるメディア処理プログラムのシミュレーションデバッグ方法に係り、特にメディア処理プログラムの停止方法、データ表示方法に関する。
【背景技術】
【０００２】
近年の電子技術の発展により、映像機器などの家電機器においてもプロセッサを組み込み、ソフトウェアによるメディア処理機能を実現する機器開発が行われている。さらに、家電機器など組込み向け開発では、プロセッサ内のＣＰＵで全てのメディア処理をソフトウェアで実現する方式ではなく、特定の演算をハードウェアにより高速実行するハードウェアアクセラレータを実装し、ＣＰＵとアクセラレータ間ではダイレクトメモリアクセス（ＤＭＡ）転送を利用してデータを授受する方式のメディア処理向けのプロセッサが性能、消費電力面のメリットにより採用されている。
【０００３】
このような機器開発では、ソフトウェア開発者は、デバッガを用いて、開発したプログラムが設計した意図通りに動作しているどうかを確認することにより、プログラムの検証、デバッグを行う。例えば、プログラムの任意の箇所にブレークポイントを設定し、プログラムを前記ブレークポイント設定箇所まで実行し、その状態での変数の値やメモリの値を確認する表示機能や、プログラムの実行結果の系列を表示するトレース機能と呼ばれるデバッガの機能を用いてプログラムの動作を確認することが行われていた。
【０００４】
また、メディア処理を上記のようなプロセッサで実現するには、入力データをフレームといった単位に分け、フレーム毎に繰り返し処理を実行することが多い。このため、ソフトウェア開発者が、デバッグする際には、プログラムの処理シーケンスだけではなく、現在どのフレームのデータが処理されているかを注目することが重要である。
【０００５】
なお、メディア処理向けのコンピュータ機器の解析装置としては、先行技術文献として特許文献１がある。
【特許文献１】特開平１０−２８３２２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のデバッガにおいては、処理中のフレーム番号などの情報を得るためには、ソフトウェア開発者がその都度フレーム番号が格納されている変数あるいはメモリの値を表示させて計算、確認するなどの必要があり、デバッグの効率が悪いという問題があった。また、特定のフレーム番号のデータを処理している場合にのみプログラムを停止させて確認したい場合も、効率が悪いという問題があった。
【０００７】
本発明の目的は、前記課題に鑑み、処理対象のデータにフレーム番号に対応する情報を属性情報として付与し、その属性情報を利用して、メディア処理プログラムのデータを判り易く表示するとともに、属性情報を利用した実行停止機能を備えて効率的なデバッグを行うことができるシミュレーションデバッグ方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の請求項１のシミュレーションデバッグ方法は、プロセッサのソフトウェア開発を支援するシミュレーションデバッグ方法であって、データに属性値を付与するステップと、シミュレーション実行時に入力データの属性値から演算結果の属性値を決定するステップと、プログラム実行停止条件にハードウェア資源の属性値を指定するステップと、前記ハードウェア資源の属性値から停止条件を判定するステップと、を備えることを特徴とするものである。
【０００９】
本発明の請求項１のシミュレーションデバッグ方法によると、シミュレーション実行時に、ハードウェア資源の属性値を導出でき、その属性値を指定した停止条件によって、シミュレーション実行を停止することができる。
【００１０】
本発明の請求項２のシミュレーションデバッグ方法は、プロセッサのソフトウェア開発を支援するシミュレーションデバッグ方法であって、ＤＭＡ転送シミュレーション時に属性値を決定するステップと、シミュレーション実行時に入力データの属性値から演算結果の属性値を決定するステップと、を備えることを特徴とするものである。
【００１１】
本発明の請求項２のシミュレーションデバッグ方法によると、ＤＭＡ転送に基づいて属性値を決定することができ、ＤＭＡ転送を利用するソフトウェアのデバッグに好適である。
【００１２】
本発明の請求項３のシミュレーションデバッグ方法は、前記ＤＭＡ転送シミュレーション時に属性値を決定するステップが、ＤＭＡ転送処理の回数に基づいて属性値付けを行うことを特徴とするものである。
【００１３】
本発明の請求項３のシミュレーションデバッグ方法によると、ＤＭＡ転送処理の回数に基づいて属性値を決定することができ、ＤＭＡ転送処理を単位した属性値付けが可能となり、ＤＭＡ転送に着目したソフトウェアのデバッグに好適である。
【００１４】
本発明の請求項４のシミュレーションデバッグ方法は、前記属性値を決定するステップが、一定期間での入力属性値の集合から決定するステップであることを特徴とするものである。
【００１５】
本発明の請求項４のシミュレーションデバッグ方法によると、属性値の例外的な変動をマスクすることができ、より重要な属性値の変化だけを観測することが可能となり、効率的なデバッグが行えることとなる。
【００１６】
本発明の請求項５のシミュレーションデバッグ方法は、変数あるいはメモリ内容を属性値を指定することによって選択的に表示するステップを備えることを特徴とするものである。
【００１７】
本発明の請求項５のシミュレーションデバッグ方法によると、属性値に着目したメディア処理プログラムのメモリ内容、データの確認が可能となり、効率的なデバッグが可能となる。
【００１８】
本発明の請求項６のシミュレーションデバッグ方法は、パイプライン処理を構成するハードウェア資源の構成を指定するステップと、ハードウェア資源の属性値を記録するステップと、ハードウェア資源の属性値を時系列に表示するステップと、を備えることを特徴とするものである。
【００１９】
本発明の請求項６のシミュレーションデバッグ方法によると、ハードウェア資源の属性値の変化を時系列で確認することができ、パイプライン的なメディア処理の流れを効率よく把握することができ、デバッグの効率を向上させることが可能となる。
【発明の効果】
【００２０】
本発明では、メディア処理プログラムのシミュレーションデバッグを行う場合に、ＤＭＡ転送に着目し、データに属性値付けを行い、属性値を指定したプログラムの停止機能およびデータ表示機能を提供することにより、メディア処理プログラムの効率的なデバッグが可能となる。
【発明を実施するための最良の形態】
【００２１】
（第１の実施の形態）
本発明の第１の実施の形態について、図１ないし図３２に基づいて説明する。
【００２２】
図１に、ソフトウェア開発支援システムの構成を示す。
【００２３】
１０１はＣソースプログラムであり、ソフトウェア開発者が開発対象のメディア処理等の応用システムを実現するプログラムである。１０２はコンパイラであり、Ｃソースプログラム１０１を入力とし、開発対象の応用システムで用いるプロセッサ用の実行コードとデバッグ情報からなるオブジェクトファイル１０３を出力する。１０４はデバッガであり、オブジェクトファイル１０３を入力し、利用者であるソフトウェア開発者からの指示をキーボード，マウス１０６などユーザインターフェイス部から入力し、その結果や情報をディスプレイ１０７に表示する。１０５はデバッグ対象のプログラムの入力データとなるストリームデータを格納したストリームデータファイルである。利用者は、ストリームデータを入力として与え、デバッグ対象となるプログラムを実行し動作の検証、デバッグを行う。
【００２４】
図２に、メディア処理が実現されるプロセッサの機能ブロックの構成例を示す。
【００２５】
２０１はＣＰＵであり、２０２は主記憶メモリ（ＭＥＭ）であり、２０３，２０５は特定のメディア処理演算をハードウェアで実現する第１，２ハードウェアアクセラレータ（ＡＣＣ１，ＡＣＣ２）であり、２０４，２０６は、第１，２ハードウェアアクセラレータ２０３，２０５に付随する第１，２ローカルメモリ（ＬＭ１，ＬＭ２）であり、２０７はＤＭＡコントローラ（ＤＭＡＣ）であり、２０８はこれら各ブロックの間を接続するバスである。
【００２６】
図３に、メディア処理の概略データフローの例を示す。
【００２７】
メディア処理の入力データは、主記憶メモリ２０２に置かれ、ＤＭＡコントローラ２０７の第１転送チャネル（ｃｈ１）により、第１ローカルメモリ２０４に転送される（Ｓ３０１）。ＤＭＡ転送は、ＣＰＵ２０１上のプログラムにより起動される。ＤＭＡ転送完了は、ＣＰＵ２０１上のプログラムには割込みとして通知され、ＣＰＵ２０１上のプログラムは、転送完了後に、第１ハードウェアアクセラレータ２０３の起動を行う。第１ハードウェアアクセラレータ２０３は、第１ローカルメモリ２０４上のデータを入力としてメディア処理演算を行い、演算結果を第１ローカルメモリ２０４へ書き戻す（Ｓ３０２）。第１ローカルメモリ２０４上に書き戻されたデータは、続いて、第２転送チャネル（ｃｈ２）により、主記憶メモリ２０２に転送する（Ｓ３０３）。続いて、ＣＰＵ２０１上のプログラムが主記憶メモリ２０２上のデータを読み込み、メディア処理演算を行い、結果を主記憶メモリ２０２へ書き出す（Ｓ３０４）。
【００２８】
これらの処理を、入力データの所定の単位（フレーム）毎に、繰り返し行う。
【００２９】
上記説明したように、ハードウェアアクセラレータとＣＰＵの間をＤＭＡ転送によりデータを授受しメディア処理を行う。この時、ＣＰＵ上のプログラムでは、処理対象のフレームの識別を行うためのフレーム番号などを用いて、処理対象のデータ記憶領域の管理を行う。
【００３０】
このため、ＣＰＵ上のソフトウェアの動作のデバッグには、このフレーム番号の情報を効率よく把握することが重要である。
【００３１】
また、このようなメディア処理では、前記フレーム番号ごとに処理を分割し、パイプライン的に処理を行うことにより、ハードウェア資源の効率的な使用を図る。
【００３２】
図４に、メディア処理パイプラインの例を示す。図４中、４０１は時間軸であり、矢印方向に時間が経過することを示している。
【００３３】
４０２はｎ番目のフレームのデータを入力とする処理の流れを、同様に、４０３，４０４はそれぞれ（ｎ＋１）番目、（ｎ＋２）番目のフレームのデータを入力とする処理の流れを示したものである。
【００３４】
例えば、４０１上の時刻ｔ０時点では、第２転送チャネル（ＤＭＡｃｈ２）は、ｎ番目の処理データの転送を行い、第１アクセラレータ（ＡＣＣ１）は、（ｎ＋１）番目の処理データの演算処理を行い、第１転送チャネル（ＤＭＡｃｈ１）は、（ｎ＋２）番目の処理データの転送を行っている。
【００３５】
このように、ＣＰＵやＡＣＣ１、転送チャネルなどハードウェア資源を利用するタイミングを時分割し、ｎ番目、（ｎ＋１）番目、（ｎ＋２）番目の処理をパイプライン的に処理することにより、ハードウェア資源の効率的な使用と処理スループットの向上を図る。
【００３６】
このようなパイプライン処理を行うプログラムをデバッグするには、ハードウェア資源の処理対象データが現在どのフレームのデータを対象としているか、また他のハードウェア資源の対象データとの関係が仕様通りであるかどうかなどの観点から確認できることが重要である。
【００３７】
本発明は、このメディア処理パイプラインがＤＭＡ転送を介して繰り返し行われることに着目し、ＤＭＡ転送時に、フレーム番号に相当する情報を属性値として付与することにより、処理対象データをフレーム単位に区別することを可能にし、デバッグの効率化を図るものである。
【００３８】
以下、前記デバッガ１０４の動作を説明する。
【００３９】
図５に、デバッガ１０４の機能ブロック図を示す。
【００４０】
５０１はデバッガ制御部であり、コマンド入力部５０２から利用者であるソフトウェア開発者からのデバッガコマンドの入力を行い、デバッグ機能の実行処理を行い、表示部５０３により利用者に結果を表示する。５０４は実行ターゲット環境部であり、前記オブジェクトファイル１０３に格納されているプログラムが実行される環境であり、計算機上に構築されたプロセッサのソフトウェアシミュレータである。５０５はシミュレーション制御部であり、デバッガ制御部５０１からの制御を受け、プロセッサのシミュレーション実行やシミュレーション状態の参照、更新およびシミュレーション環境の初期設定などを行う。５０６はシミュレーション実行部であり、プロセッサのシミュレーションを行う。５０７はレジスタイメージ情報であり、プロセッサ上のＣＰＵ２０１の内部レジスタの値を保持する。５０８はメモリイメージ情報であり、プロセッサ上の全てのメモリの値を保持する。つまり、主記憶メモリ２０２、第１，２ローカルメモリ２０４，２０６の値を保持する。５０９はレジスタ属性情報であり、プロセッサ上のＣＰＵ２０１の内部レジスタの値に対応する属性情報を保持する。５１０はメモリ属性情報であり、プロセッサ上のメモリの値に対応する属性情報を保持する。５１１はアクセラレータ属性情報であり、第１，２ハードウェアアクセラレータ２０３，２０５の処理対象データに対応する属性情報を保持する。５１２はＤＭＡ属性情報であり、ＤＭＡコントローラ２０７で転送されるデータに付与する属性情報をＤＭＡのチャネル毎に保持する。５１３は停止条件管理情報であり、利用者が設定したブレークポイントの情報を保持する。５１４はパイプライン構成情報であり、利用者が設定したメディア処理のパイプライン処理の構成の情報を保持する。５１５はパイプライン属性トレース情報であり、メディア処理パイプラインの各構成要素の属性情報を時系列に保持する。
【００４１】
図６に、前記デバッガ１０４の処理フローを示す。
【００４２】
デバッガが起動された後、ステップＳ６０１では、デバッガの作業用メモリの初期化や表示用ウィンドウの描画などの初期処理を行う。ステップＳ６０２では、利用者から、デバッガコマンドの入力を受け付ける。利用者は、デバッグ対象プログラムのオブジェクトファイルの読込みコマンドや、プログラムの実行開始やブレークポイントの設定、メモリのダンプなどデバッグに必要なコマンドを入力する。ステップＳ６０３では、入力されたコマンドを解釈し、ステップＳ６０４では、入力されたコマンドに対応するそれぞれの処理を行う。ステップＳ６０５では、デバッガの表示更新処理を行う。表示更新処理は、コードを表示するコードウインドウで、プログラム実行が停止したアドレスの前後のコードを表示するよう表示内容を更新し、また、メモリ内容を表示するメモリウインドウで、メモリ内容の変更に伴う表示内容の更新などである。ステップＳ６０４で、終了コマンドが入力された場合、ステップＳ６０６で、デバッガの作業領域の解放や実行ターゲット環境との接続の切断など終了処理を行い、処理を終了する。
【００４３】
図７に、前記ステップＳ６０４の処理フローを示す。
【００４４】
入力されたコマンドの種別により、ステップＳ７０１からＳ７０６のいずれかに進み、それぞれの処理を行う。ステップＳ７０１では、シミュレーション実行コマンドの処理を行う。ステップＳ７０２では、ブレークポイント設定コマンドの処理を行う。ステップＳ７０３では、パイプライン構成指定コマンドの処理を行う。ステップＳ７０４では、属性値指定メモリ表示コマンドの処理を行う。ステップＳ７０５では、パイプライン属性トレース表示コマンドの処理を行う。ステップＳ７０６では、上記以外のコマンドの処理を行う。
【００４５】
図８に、パイプライン構成指定コマンドの例を示す。
【００４６】
図８において、”ｓｅｔ−ｐｉｐｅｌｉｎｅ”は、メディア処理パイプラインの構成を指定するコマンドであり、”ＤＭＡｃｈ１，ＡＣＣ１，ＤＭＡｃｈ２，ＣＰＵ”は、パイプラインの処理順に従って、メディア処理パイプラインを構成するハードウェア資源（ＤＭＡ転送チャネル、ハードウェアアクセラレータ、ＣＰＵ）を指定するものである。本例は、図３に示すメディア処理パイプラインの構成の場合の指定例である。
【００４７】
前記ステップＳ７０３で、パイプライン構成指定コマンドを解釈し、パイプライン構成情報として、前記パイプライン構成情報５１４に格納する。
【００４８】
図９に、パイプライン構成情報の例を示す。
【００４９】
９０１はパイプライン構成要素の処理順序を示し、９０２はパイプライン構成要素を示す。本例では、１番目が第１ＤＭＡ転送チャネルＤＭＡｃｈ１であり、２番目が第１ハードウェアアクセラレータＡＣＣ１であり、３番目が第２ＤＭＡ転送チャネルＤＭＡｃｈ２であり、４番目がＣＰＵであることを示す。
【００５０】
図１０に、前記ステップＳ７０１におけるシミュレーション実行処理の処理フローを示す。
【００５１】
ステップＳ１００１で、シミュレーション実行の停止条件の判定を行う。ステップＳ１００２で、停止条件判定結果により、停止条件が成立した場合は、シミュレーション実行を終了し、停止条件が成立しない場合は、ステップＳ１００３に進む。ステップＳ１００３で、ＣＰＵ部のシミュレーションを１サイクル分実行する。ステップＳ１００４で、アクセラレータ部のシミュレーションを１サイクル分実行する。ステップＳ１００５で、ＤＭＡＣ部のシミュレーションを１サイクル分実行する。
【００５２】
なお、ステップＳ１００３，Ｓ１００４，Ｓ１００５では、シミュレーションの実行の単位を１サイクルとしたが、１命令単位や１機能処理単位などの構成としても構わない。
【００５３】
図１１に、ステップＳ１００３におけるＣＰＵ部のシミュレーション実行の処理フローを示す。
【００５４】
ステップＳ１１０１で現ＰＣの命令コードを読み込み、ステップＳ１１０２で前記命令コードをデコードする。ステップＳ１１０３で、前記デコードした結果から命令の演算対象の入力オペランドがレジスタであるかメモリであるか判定する。入力オペランドがレジスタの場合はステップＳ１１０４に進み、入力オペランドがメモリの場合はステップＳ１１０５に進む。ステップＳ１１０４で、レジスタ属性情報５０９を参照し、対応する属性値を取得し、入力オペランドの属性値とする。ステップＳ１１０５で、メモリ属性情報５１０を参照し、対応する属性値を取得し、入力オペランドの属性値とする。ステップＳ１１０６で、命令の演算処理を実行する。入力オペランドからデータを読み込み、出力オペランドに演算結果データを書き込む。ステップＳ１１０７で、ステップＳ１１０４あるいはステップＳ１１０５で求めた入力オペランドの属性値の内、最小のものを演算結果の属性値として決定する。ステップＳ１１０８で、前記デコードした結果から命令の演算対象の出力オペランドがレジスタであるかメモリであるか判定する。出力オペランドがレジスタの場合はステップＳ１１０９に進み、出力オペランドがメモリの場合はステップＳ１１１０に進む。ステップＳ１１０９で、ステップＳ１１０８で決定した演算結果の属性値を、レジスタ属性情報５０９に設定する。ステップＳ１１１０で、ステップＳ１１０８で決定した演算結果の属性値を、メモリ属性情報５１０に設定する。
【００５５】
なお、ステップＳ１１０７では、演算結果の属性値を入力オペランドの属性値の内で最小の値としたが、最大の値でもよいし、また、中間の値、あるいは平均値としてもよい。また、入力オペランドの属性値が未定義の場合は、定義されている値の中から求めればよい。
【００５６】
以下、具体例を挙げて動作を説明する。
【００５７】
まず、(1),(2),(3)に、命令の例を示す。
【００５８】
ＡＤＤ  Ｒ０，Ｒ１，Ｒ２  ・・・(1)
ＬＤ  Ｒ３，（０ｘ０）  ・・・(2)
ＳＴ  （０ｘ１０），Ｒ４  ・・・(3)
(1)に示すＡＤＤ命令は、レジスタＲ１，Ｒ２から値を入力し、加算を行い、演算結果をレジスタＲ０に格納する命令である。(2)に示すＬＤ命令は、メモリ（０ｘ０番地）から値を入力し、レジスタＲ３に格納する命令である。(3)に示すＳＴ命令は、レジスタＲ４から値を入力し、メモリ（０ｘ１０番地）に格納する命令である。
【００５９】
図１２に、命令実行前のレジスタ属性情報５０９を示す。図１３に、命令実行前のメモリ属性情報５１０を示す。
【００６０】
ステップＳ１１０１，Ｓ１１０２で、現ＰＣの命令コードとして、(1)に示すＡＤＤ命令を読み込み、デコードする。ステップＳ１１０３で、前記ＡＤＤ命令の入力オペランドがレジスタＲ１，Ｒ２であることが判り、ステップＳ１１０４に進む。ステップＳ１１０４で、入力オペランドの属性値として、図１２に示すレジスタ属性情報５０９を参照し、それぞれ２，３を得る。ステップＳ１１０６でＡＤＤ命令の演算を行う。ステップＳ１１０７で、入力オペランドの属性値２，３で最小の値２を、演算結果の属性値として決定する。ステップＳ１１０８で、出力オペランドがレジスタであることを判定し、ステップＳ１１０９に進む。ステップＳ１１０９で、出力オペランドのレジスタＲ０に対応する属性情報を２として、レジスタ属性情報５０９を更新する。図１４に、更新後のレジスタ属性情報４０９を示す。
【００６１】
同様に、(2)に示すＬＤ命令の場合は、ステップＳ１１０３で、入力元がメモリ０ｘ０番地から０ｘ３番地であることが判り、ステップＳ１１０５で、入力オペランドの属性値として、メモリ属性情報５１０を参照し、０，０，０，０を得る。ステップＳ１１０７で、演算結果の属性値として０を決定する。ステップＳ１１０９で、出力オペランドのレジスタＲ３に対応する属性情報を０として、レジスタ属性情報５０９を更新する。図１５に、更新後のレジスタ属性情報５０９を示す。
【００６２】
同様に、(3)に示すＳＴ命令の場合は、ステップＳ１１０３で、入力元がレジスタＲ４であることが判り、ステップＳ１１０４で、入力オペランドの属性値として、レジスタ属性情報５０９を参照し、１を得る。ステップＳ１１０７で、演算結果の属性値として１を決定する。ステップＳ１１０８で出力オペランドがメモリであることが判り、ステップＳ１１１０に進む。ステップＳ１１１０で、出力オペランドのメモリ０ｘ１０番地から０ｘ１３番地に対応する属性情報を１として、メモリ属性情報５１０を更新する。図１６に、更新後のメモリ属性情報を示す。１６０１に示す部分が０から１に変更された結果となる。
【００６３】
図１７に、前記ステップＳ１００４のアクセラレータ部のシミュレーション実行の処理フローを示す。
【００６４】
なお、図１７では、第１ハードウェアアクセラレータ２０３のシミュレーション実行の処理フローを示すが、第２ハードウェアアクセラレータ２０５のシミュレーション実行の処理フローも同様である。
【００６５】
ステップＳ１７０１で、第１ローカルメモリから入力データを入力する。ステップＳ１７０２で、入力データに対応する属性値をメモリ属性情報５１０内のローカルメモリ属性情報から求める。ステップＳ１７０３で、アクセラレータの演算処理行う。ステップＳ１７０４で、演算結果の属性値を全ての入力データの属性値の中での最小値とする。ステップＳ１７０５で、当該演算結果をローカルメモリに格納する。ステップＳ１７０６で、当該演算結果の属性値をメモリ属性情報５１０内のローカルメモリ属性情報に格納する。ステップＳ１７０７で、当該演算結果の属性値をアクセラレータの現属性値として、アクセラレータ属性情報５１１に格納する。
【００６６】
なお、本実施の形態では、アクセラレータはローカルメモリからデータを入力し、演算結果をローカルメモリに出力する形態としたが、ＣＰＵから入力データを与えられる形態としてもよく、前記ＣＰＵからの入力データの属性値をレジスタ属性情報５０９を参照し、入力データの属性値を求めるよう構成すればよい。
【００６７】
また、ステップＳ１７０４では、演算結果の属性値を入力データの属性値の内で最小の値としたが、最大の値でもよいし、また、中間の値、あるいは平均値としてもよい。また、入力データの属性値が未定義の場合は、定義されている値の中から求めればよい。
【００６８】
図１８に、前記ステップＳ１００５のＤＭＡＣ部のシミュレーションの実行フローを示す。
【００６９】
ステップＳ１８０１で、ＤＭＡＣ部の制御レジスタの値により、動作させるＤＭＡの転送チャネルを決定する。ステップＳ１８０２で、動作させるチャネルが、パイプライン構成情報５１４を参照し、パイプライン処理の初段のＤＭＡ転送であるかどうかを判定する。パイプライン構成情報５１４には、図９に示すような情報が管理されており、パイプライン構成要素９０２がＤＭＡ転送チャネルであって、かつ最も処理順序９０１が小さいものがパイプライン処理の初段のＤＭＡ転送チャネルである。図９に示す例では、ＤＭＡｃｈ１が初段のＤＭＡ転送チャネルである。この初段転送チャネルと、ステップＳ１８０１で決定した転送チャネルが同一かどうかを判定する。初段のＤＭＡ転送の場合は、ステップＳ１８０３に進む。そうでない場合は、ステップＳ１８０４に進む。ステップＳ１８０３で、ＤＭＡ属性情報５１２に保持されている対象チャネルに対応するＤＭＡ属性値を１増加させる。当該ＤＭＡ属性値は処理対象のデータに付与されるものである。ステップＳ１８０４で、ＤＭＡデータ転送処理を行う。ステップＳ１８０５で、転送したデータに付与するＤＭＡ属性値を設定する。転送したデータが格納されるメモリに対応するメモリ属性情報の値を設定する。
【００７０】
図３，４，１９，２０，２１を用いて動作を具体的に説明する。
【００７１】
図３，４に示したメディア処理のデータフローの場合、メディア処理パイプラインの初段のＤＭＡ転送はＤＭＡＣｃｈ１による主記憶メモリから第１ローカルメモリへの転送である。
【００７２】
図１９に、本例で説明するＤＭＡ転送のデータフローを示す。主記憶メモリから第１転送チャネルで第１ローカルメモリに転送する処理である。
【００７３】
図２０に、当該ＤＭＡ転送の転送経路を示す。ＤＭＡＣ２０７により経路２００１，２００２により主記憶メモリから第１ローカルメモリにデータが転送される。
【００７４】
図２１に、前記ＤＭＡ属性情報５１２の例を示す。２１０１は、ＤＭＡの転送チャネルを示す。２１０２は、対応する転送チャネルの属性値を示す。
【００７５】
ステップＳ１８０１で求められた転送チャネルがＤＭＡｃｈ１である場合は、ステップＳ１８０２で、図５に示すパイプライン構成情報５１４を参照し、パイプライン処理の初段のＤＭＡ転送であることを判定し、ステップＳ１８０３に進む。ステップＳ１８０３では、対象チャネルであるｃｈ１のＤＭＡ属性値を１増加させる。図２１に示す例の場合、ｃｈ１のＤＭＡ属性値を２から３に増加させることになる。ステップＳ１８０４では、当該ＤＭＡ転送処理を行う。つまり主記憶メモリからデータを読込み、第１ローカルメモリにデータを書込む。ステップＳ１８０５では、転送先である第１ローカルメモリ２０４のメモリ属性情報５１０の対応するアドレスの値を前記ＤＭＡ属性値である３に設定する。ステップＳ１８０１で求めたＤＭＡｃｈ１以外の転送の場合は、ステップＳ１８０４，ステップＳ１８０５に進み、当該チャネルに対応するＤＭＡ属性値をＤＭＡ属性情報５１２から取得し、転送先のメモリに対応するメモリ属性情報５１０に設定する。
【００７６】
以上、説明したようにメディア処理におけるパイプライン処理の初段のＤＭＡ転送時に、データに属性値付けを行い、アクセラレータ、ＣＰＵでの演算時に、演算結果の属性値を導出し、演算結果に属性値付けを行うことにより、メディア処理の対象となるデータに対して属性を付与することができる。
【００７７】
図２２に、前記ステップＳ７０２でのブレークポイント設定処理における属性値指定ブレークポイントの設定例を示す。
【００７８】
利用者は、デバッガのコマンド入力部により、図２２に示すコマンドを入力する。図２２において、”−ａｔｔｒ”は属性値指定のブレークポイントであることを示し、”ＡＣＣ１”，”１０”は、対象となるブロックがアクセラレータＡＣＣ１で、その属性値が１０と等しくなった場合に停止するブレークポイントであることを示している。
【００７９】
前記ステップＳ７０２でのブレークポイント設定処理において、利用者から入力されたブレークポイント設定の情報を、停止条件管理情報５１３に格納する。
【００８０】
図２３に停止条件管理情報５１３の例を示す。
【００８１】
図２３において、２３０１，２３０２，２３０３は、ブレークポイントの設定情報であり、停止条件管理情報５１３の中でリストとして管理されている。”ｔｙｐｅ”はブレークポイントの種別を表すブレーク種別であり、”ｖａｌ”はブレーク指定に用いる値、”ｉｄ”は付随する情報を示す識別子である。前記ブレーク種別の値は、”ＰＣ”は命令実行が指定アドレスに到達した場合に成立する命令ブレークポイントを表し、”ｍｅｍ”は指定アドレスにメモリアクセスがあった場合に成立するメモリブレークポイントを表し、”ａｔｔｒ”は属性値指定ブレークポイントであり、第１ハードウェアアクセラレータの属性値が指定値になった場合に成立する属性値指定ブレークポイントを表す。２３０１は、ソフトウェアブレークポイントの設定情報であり、命令実行が指定したアドレス０ｘ０００００２００に到達した場合に、停止するブレークポイントを管理する情報である。２３０２は、属性値指定ブレークポイントの設定情報であり、前記”ｉｄ”で示すブロックの属性値が、前記”ｖａｌ”で示す指定した値になった場合に、停止するブレークポイントを管理する情報である。図２２に示したコマンド例の場合、２３０２に示す停止条件管理情報となる。
【００８２】
図２４に、前記ステップＳ１００２での停止条件の成立判定処理の処理フローを示す。
【００８３】
ステップＳ２４０２では、停止条件管理情報５１３より停止条件管理情報を１つ取り出す。ステップＳ２４０３では、ブレーク種別が属性値指定”ａｔｔｒ”の場合は、対象のブロックの属性値を求め、指定値と比較し、条件成立を判定する。ステップＳ２４０２からステップＳ２４０３までを、全てのブレークポイント設定情報について繰り返す。ステップＳ２４０３でブレーク種別を判定し、ＰＣブレークの場合はステップＳ２４０５に進み、メモリブレークの場合はステップＳ２４０６に進み、属性値ブレークの場合はステップＳ２４０３に進む。ステップＳ２４０５でのＰＣブレークの判定処理、ステップＳ２４０６でのメモリブレークの判定処理は、従来技術であり説明を割愛する。
【００８４】
以降、図２２，２３に示した例の場合について、動作を説明する。
【００８５】
ステップＳ２４０２で、停止条件管理情報５１３からブレークポイント設定情報の一つである図２３に示すブレークポイント設定情報２３０２を取り出す。ステップＳ２４０３で、属性値指定ブレークであることを判定し、指定されたブロックであるハードウェアアクセラレータＡＣＣ１の属性値をアクセラレータ属性情報５１１を参照し、取得する。ステップＳ２４０４で、前記取得した属性値と１０を比較し、成立しているかどうかを判定する。停止条件が成立した場合は、前記ステップＳ１００２により、シミュレーション実行処理が停止することになる。
【００８６】
図２５に、属性値指定メモリ表示コマンドの入力例を示す。
【００８７】
前記ステップＳ６０２において、利用者は、デバッガのコマンド入力部により、図２５に示すコマンドを入力する。図２５において、”ｄｕｍｐ”はメモリ内容表示コマンドであることを示し、”−ａｔｔｒ  ３”は属性値が３であるメモリだけを表示対象とすること、”０ｘ００００００００，０ｘ００００ＦＦＦＦ”は表示対象のアドレス範囲が０ｘ００００００００番地から０ｘ００００ＦＦＦＦ番地までであることを示す。ステップＳ６０２で入力された前記コマンドは、ステップＳ６０３で解釈され、ステップＳ６０４の各コマンドごとの処理に進み、属性値指定メモリ表示コマンドの場合は、ステップＳ７０４に進む。
【００８８】
図２６に、ステップＳ７０４における属性値指定メモリ表示処理の処理フローを示す。
【００８９】
ステップＳ２６０１で、入力されたコマンドを前記ステップＳ６０３で解釈した結果より、表示対象のアドレス範囲（開始アドレス、終了アドレス）と表示対象の属性値を求める。ステップＳ２６０２で、前記アドレス範囲の開始アドレスから終了アドレスまでの全てのアドレス（アドレスｐ）について、ステップＳ２６０３からＳ２６０６の処理を繰り返す。ステップＳ２６０３で、アドレスｐのメモリ内容の値と対応する属性値を、メモリイメージ情報５０８とメモリ属性情報５１０をそれぞれ参照して求める。ステップＳ２６０４で、前記アドレスｐの属性値が、ステップＳ２６０１で求めた表示対象の属性値と同一か判定する。同一の場合は、ステップＳ２６０５に進み、アドレスｐのメモリ内容の値を出力する。異なる場合は、ステップＳ２６０６に進み、”−”を出力する。
【００９０】
以下、図２５，２７，２８，２９に示す例を用いて、具体的に説明する。
【００９１】
ステップＳ２６０１では、表示対象のアドレス範囲として、０ｘ００００００００から０ｘ００００ＦＦＦＦを得、表示対象の属性値として３を得る。ステップ２６０２で、０ｘ００００００００番地から０ｘ００００ＦＦＦＦ番地までの全てのアドレスについて、アドレスｐを１番地ずつ増加させながら、ステップＳ２６０３からステップＳ２６０６までを繰り返し処理する。
【００９２】
図２７に、メモリイメージ情報５０８の例を示す。図２８に、メモリ属性情報５１０の例を示す。例えば、アドレスｐが０ｘ００００００００番地の場合、ステップＳ２６０３で、図２７，図２８に示すメモリイメージ情報，メモリ属性情報を参照し、メモリ内容として０ｘＦＦ、対応する属性値として２を得る。続いて、ステップＳ２６０４で前記属性値の２とコマンドで指定された属性値３を比較し、ステップＳ２６０６に進み、”−”を出力する。また、アドレスｐが０ｘ０００００００１０番地の場合、ステップＳ２６０３で、メモリ内容として０ｘＥ２、対応する属性値として３を得る。続いてステップＳ２６０４，ステップＳ２６０５に進み、メモリ内容０ｘＥ２を画面に出力する。これらの処理を０ｘ００００００００番地から０ｘ００００００９Ｆ番地を対象に繰り返す。
【００９３】
図２９に、出力結果例を示す。０ｘ００００００００番地から０ｘ００００００９Ｆ番地のメモリ範囲で、属性値が３である値だけが内容表示されており、対応する属性値が３ではないアドレスについては、”−”が表示されることとなる。なお、本例では、ステップＳ２６０６で、指定属性値ではないメモリの内容を”−”で表示したが、メモリの値をグレーアウト表示するなど表示方法を変えるよう構成してもよい。
【００９４】
以上説明したように、メモリ属性情報を参照して、指定された属性値に対応するメモり内容だけを表示することにより、効率的なデバッグが可能となる。
【００９５】
なお、本例では、レジスタ属性情報５０９，メモリ属性情報５１０を、対応する属性値を１つだけ保持する構成としたが、属性値を複数個保持し、ステップＳ１１０４，Ｓ１１０５ではその中から１つを選択して利用し、ステップＳ１１０９，Ｓ１１１０では、複数個保持するうちの最も古い属性値と置き換えて設定するよう構成してもよい。
【００９６】
図３０，３１，３２に、属性値を複数個持つように構成した場合の例を示す。
【００９７】
図３０に、レジスタ属性情報５０９の一例を示す。例えばレジスタＲ０の属性値は、３個の要素（１、２、３）を持つＦＩＦＯリストとして構成されており、最も古い属性値は、左側の１であり、最も新しい属性値は右側の３である。ステップＳ１１０４でこのレジスタ属性情報を参照する場合は、３個の属性値から最も小さいものを選択し、結果としてレジスタＲ０の属性値は１と決定する。また、ステップＳ１１０９で属性値を更新する場合は、最も古い属性値である１と置き換えられる。図３１に、更新後のレジスタ属性情報５０９の一例を示す。図３２に、メモリ属性情報５１０の一例を示す。図３０と同様に、属性値を３個の要素を持つＦＩＦＯリストとして構成する。ステップＳ１１０５，ステップＳ１１１０の処理は、前述したステップＳ１１０４，ステップＳ１１０９の処理と同様である。
【００９８】
以上、説明したように属性値を複数個保持することにより、属性値の例外的な変動（ノイズ）をマスクすることができ、より重要な属性値の変化だけを観測することが可能となり、効率的なデバッグが行えることとなる。
（第２の実施の形態）
本発明第２の実施の形態について説明する。第２の実施の形態は、第１の実施の形態とは、ステップＳ１００４で行われるアクセラレータシミュレーション実行処理と、ステップＳ１００５で行われるＤＭＡＣシミュレーション実行処理の処理内容が異なる。
【００９９】
図３３に、ステップＳ１００４で行われるアクセラレータシミュレーション実行処理の処理フローを示す。
【０１００】
本処理フローは、図１７に示す処理フローとは、アクセラレータの属性値の情報を都度パイプライン属性情報に記録する点が異なる。ステップＳ３３０１からステップＳ３３０７までは、図１７に示すステップＳ１７０１からステップＳ１７０７の処理と同一である。ステップＳ３３０８で、ステップＳ３３０７で格納した属性値が前回の格納した値と異なっているか判定する。異なっている場合は、ステップＳ３３０９に進む。同一の場合は、処理を終了する。ステップＳ３３０９で、アクセラレータ種別、時刻、属性値をパイプライン属性トレース情報５１５に記録する。
【０１０１】
図３４に、ステップＳ１００５で行われるＤＭＡＣシミュレーション実行処理の処理フローを示す。
【０１０２】
本処理フローは、図１８に示す処理フローとは、ＤＭＡＣの属性値の情報を都度パイプライン属性情報に記録する点が異なる。ステップＳ３４０１で、ＤＭＡＣ部の制御レジスタの値により、動作させるＤＭＡの転送チャネルを決定する。ステップＳ３４０２で、ＤＭＡ転送の開始かどうかを判定する。ＤＭＡ転送開始の場合はステップＳ３４０３に進み、転送中あるいは停止中の場合はステップＳ３４０６に進む。ステップＳ３４０３で、パイプライン構成情報５１４を参照し、転送チャネルが、パイプライン処理の初段のＤＭＡ転送であるかどうかを判定する。初段のＤＭＡ転送の場合は、ステップＳ３４０４に進む。そうでない場合は、ステップＳ３４０５に進む。ステップＳ３４０４で、対象チャネルのＤＭＡ属性値を１増加させる。当該ＤＭＡ属性値は処理対象のデータに付与されるものであり、ＤＭＡ属性情報５１２に保持されている。ステップＳ３４０５で、転送チャネル種別、時刻、属性値をパイプライン属性トレース情報５１５に記録する。ステップＳ３４０６で、ＤＭＡデータ転送処理を行う。ステップＳ３４０７で、転送したデータが格納されるメモリに対応するメモリ属性情報５１０に、前記ＤＭＡ属性値を格納する。ステップＳ３４０８で、ＤＭＡ転送の完了ポイントかどうかを判定する。ＤＭＡ転送完了の場合はステップＳ３４０９に進み、そうでない場合は処理を終了する。ステップＳ３４０９で、転送チャネル種別、時刻、完了情報をパイプライン属性トレース情報５１５に記録する。
【０１０３】
図３５に、パイプライン属性トレース情報５１５の一例を示す。３５０１は時刻であり、３５０２はハードウェア資源の情報であり、３５０３は属性値である。なお、３５０３で、”−”はＤＭＡ転送の完了を示す。
【０１０４】
図３６に、前記ステップＳ７０５のパイプライン属性トレース表示処理の処理フローを示す。
【０１０５】
ステップＳ３６０１で、パイプライン構成情報５１４を参照し、メディア処理パイプラインの全ての構成要素を取得する。図９に示したパイプライン構成情報例の場合は、構成要素として、ＤＭＡｃｈ１，ＡＣＣ１，ＤＭＡｃｈ２，ＣＰＵを得る。ステップＳ３６０２およびステップＳ３６０７で、前記全ての構成要素に対して、ステップＳ３６０３からステップＳ３６０６までを、繰り返し処理する。ステップＳ３６０３およびステップＳ３６０６で、パイプライン構成情報５１５を参照し、該構成要素の全ての属性値の情報に対して、ステップＳ３６０４およびステップＳ３６０５を繰り返し処理する。ステップＳ３６０４で、該パイプライン構成要素の属性値および時刻の情報を、パイプライン構成情報５１５から得る。ステップＳ３６０５で、前記パイプライン構成要素、時刻に対応するチャートを表示する。
【０１０６】
図３７に、図３５に示したパイプライン属性値情報をチャート表示した例を示す。
【０１０７】
図３７において、横軸方向は時刻であり、縦軸方向に各パイプライン構成要素であるＤＭＡｃｈ１，ＡＣＣ１，ＤＭＡｃｈ２，ＣＰＵの対応する属性値がプロットされる。本例では、ＤＭＡｃｈ１が時刻１００から属性値が１となり時刻２０５で転送完了し、時刻２５０から時刻３５５の間は属性値が２である。同様に、ＡＣＣ１，ＤＭＡｃｈ２の属性値もプロットされる。
【０１０８】
以上、説明したように、メディア処理パイプラインの各構成要素について、その属性値の経過情報をパイプライン属性情報として時系列に記録することにより、チャート表示することができ、これにより、ソフト開発者は、メディア処理パイプラインの各構成要素間の属性値の相関、整合性を視覚的に把握し、効率の良いデバッグが可能となる。
【産業上の利用可能性】
【０１０９】
本発明にかかるシミュレーションデバッグ方法は、プロセッサのプログラム開発の効率を向上させる方法として有用である。
【図面の簡単な説明】
【０１１０】
【図１】本発明の実施の形態におけるソフトウェア開発支援システムの構成図である。
【図２】本発明の実施の形態におけるメディア処理プロセッサの機能ブロック図である。
【図３】本発明の実施の形態におけるメディア処理のデータフローの例である。
【図４】本発明の実施の形態におけるメディア処理パイプラインの例である。
【図５】本発明の実施の形態におけるデバッガの機能ブロック図である。
【図６】デバッガの処理フロー図である。
【図７】各コマンド処理の処理フロー図である。
【図８】パイプライン構成指定コマンドの指定例である。
【図９】パイプライン構成情報の一例である。
【図１０】シミュレーション実行処理の処理フロー図である。
【図１１】ＣＰＵ部のシミュレーション実行の処理フロー図である。
【図１２】命令実行前のレジスタ属性情報の例を示している。
【図１３】命令実行前のメモリ属性情報の例を示している。
【図１４】命令実行後のレジスタ属性情報の例を示している。
【図１５】命令実行後のレジスタ属性情報の例を示している。
【図１６】命令実行後のメモリ属性情報の例を示している。
【図１７】本発明の第１の実施の形態におけるアクセラレータ部のシミュレーション実行処理の処理フロー図である。
【図１８】本発明の第１の実施の形態におけるＤＭＡＣ部のシミュレーション実行処理の処理フロー図である。
【図１９】ＤＭＡ転送のデータフロー図である。
【図２０】ＤＭＡ転送の転送経路を説明する図である。
【図２１】ＤＭＡ属性情報の例である。
【図２２】ブレークポイント設定コマンドの例である。
【図２３】停止条件管理情報の例である。
【図２４】停止条件判定処理フロー図である。
【図２５】属性値指定メモリ内容表示コマンドの指定例である。
【図２６】属性値指定メモリ表示処理の処理フロー図である。
【図２７】メモリイメージ情報の一例である。
【図２８】メモリ属性情報の一例である。
【図２９】属性値指定メモリ内容表示コマンドの出力例である。
【図３０】命令実行前のレジスタ属性情報の一例である。
【図３１】命令実行後のレジスタ属性情報の一例である。
【図３２】命令実行前のメモリ属性情報の一例である。
【図３３】本発明の第２の実施の形態におけるアクセラレータ部のシミュレーション実行処理の処理フロー図である。
【図３４】本発明の第２の実施の形態におけるＤＭＡＣ部のシミュレーション実行処理の処理フロー図である。
【図３５】パイプライン属性情報の一例である。
【図３６】パイプライン属性トレース表示の処理フローである。
【図３７】パイプライン属性トレースの表示例である。
【符号の説明】
【０１１１】
１０１  ソースプログラム
１０２  コンパイラ
１０３  オブジェクトファイル
１０４  デバッガ
１０５  ストリームデータファイル
１０６  キーボード，マウス
１０７  ディスプレイ
２０１  ＣＰＵ
２０２  主記憶メモリ（ＭＥＭ）
２０３  第１ハードウェアアクセラレータ（ＡＣＣ１）
２０４  第１ローカルメモリ（ＬＭ１）
２０５  第２ハードウェアアクセラレータ（ＡＣＣ２）
２０６  第２ローカルメモリ（ＬＭ２）
２０７  ＤＭＡコントローラ（ＤＭＡＣ）
２０８  バス
５０１  デバッガ制御部
５０２  コマンド入力部
５０３  表示部
５０４  実行ターゲット環境部
５０５  シミュレーション制御部
５０６  シミュレーション実行部
５０７  レジスタイメージ情報
５０８  メモリイメージ情報
５０９  レジスタ属性情報
５１０  メモリ属性情報
５１１  アクセラレータ属性情報
５１２  ＤＭＡ属性情報
５１３  停止条件管理情報
５１４  パイプライン構成情報
５１５  パイプライン属性トレース情報
【図１】
2006127203.tif 000003
【図２】
2006127203.tif 000004
【図３】
2006127203.tif 000005
【図４】
2006127203.tif 000006
【図５】
2006127203.tif 000007
【図６】
2006127203.tif 000008
【図７】
2006127203.tif 000009
【図８】
2006127203.tif 000010
【図９】
2006127203.tif 000011
【図１０】
2006127203.tif 000012
【図１１】
2006127203.tif 000013
【図１２】
2006127203.tif 000014
【図１３】
2006127203.tif 000015
【図１４】
2006127203.tif 000016
【図１５】
2006127203.tif 000017
【図１６】
2006127203.tif 000018
【図１７】
2006127203.tif 000019
【図１８】
2006127203.tif 000020
【図１９】
2006127203.tif 000021
【図２０】
2006127203.tif 000022
【図２１】
2006127203.tif 000023
【図２２】
2006127203.tif 000024
【図２３】
2006127203.tif 000025
【図２４】
2006127203.tif 000026
【図２５】
2006127203.tif 000027
【図２６】
2006127203.tif 000028
【図２７】
2006127203.tif 000029
【図２８】
2006127203.tif 000030
【図２９】
2006127203.tif 000031
【図３０】
2006127203.tif 000032
【図３１】
2006127203.tif 000033
【図３２】
2006127203.tif 000034
【図３３】
2006127203.tif 000035
【図３４】
2006127203.tif 000036
【図３５】
2006127203.tif 000037
【図３６】
2006127203.tif 000038
【図３７】
2006127203.tif 000039