(57)【要約】【課題】並列動作環境の状況とユーザ指定の双方に基づいて、少ないローカルメモリの最適利用を図ることが可能な情報処理装置およびその方法、並びにプログラムを提供する。【解決手段】あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、実行制御ファイルに記載された優先度に基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成し、実行を制御するデーモンは実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行する機能部１２を有する。【選択図】図２
2008123315.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムを、共通部分と各ノード別部分を分離し、各ノード部分は、実行させる各ノード用のコードのみを、実行するノードのメモリに動的にロードして並列実行プログラムをロードする機能を有する情報処理装置であって、
あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成する生成手段と、
前記実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行する実行手段と
を有する情報処理装置。
【請求項２】
前記生成手段は、実行制御ファイルに記載された優先度に基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成する
請求項１記載の情報処理装置。
【請求項３】
前記実行手段は、必要に応じて、実行設定調整に基づく実行プログラムの再構成を行う
請求項１記載の情報処理装置。
【請求項４】
ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムのコンパイル機能を有する情報処理装置であって、
並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義し、分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義し、ランクを表現するランク最大値を定義し、前記定義したランク、ランク最小値、ランク最大値に基づいて実行プログラムを生成する生成手段を、有する
情報処理装置。
【請求項５】
前記生成手段は、ひとつのプログラムとして複数のランクを対象とする実行プログラムを生成する
請求項４記載の情報処理装置。
【請求項６】
前記生成手段は、前記定義したランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムを生成する
請求項４記載の情報処理装置。
【請求項７】
前記生成手段は、前記定義したランク、ランク最小値、ランク最大値に基づいて、ひとつのプログラムとして複数のランクを対象とする実行プログラムと、前記定義したランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムの両方を生成する
請求項４記載の情報処理装置。
【請求項８】
第１の手段と第２の手段を有し、
前記第１の手段は、
ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムを、共通部分と各ノード別部分を分離し、各ノード部分は、実行させる各ノード用のコードのみを、実行するノードのメモリに動的にロードして並列実行プログラムをロードする機能を有し、
あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成し、前記実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行し、
前記第２の手段は、
ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムのコンパイル機能を有し、
並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義し、分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義し、ランクを表現するランク最大値を定義し、前記定義したランク、ランク最小値、ランク最大値に基づいて実行プログラムを生成する
情報処理装置。
【請求項９】
ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムを、共通部分と各ノード別部分を分離し、各ノード部分は、実行させる各ノード用のコードのみを、実行するノードのメモリに動的にロードして並列実行プログラムをロードする情報処理方法であって、
あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成する第１ステップと、
前記実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行する第２ステップと
を有する情報処理方法。
【請求項１０】
前記第１ステップにおいては、実行制御ファイルに記載された優先度に基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成する
請求項９記載の情報処理方法。
【請求項１１】
前記第２ステップにおいては、必要に応じて、実行設定調整に基づく実行プログラムの再構成を行う
請求項９記載の情報処理方法。
【請求項１２】
ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムのコンパイルを行う情報処理方法であって、
並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義する第１ステップと、
分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義する第２ステップと、
ランクを表現するランク最大値を定義する第３ステップと、
前記定義したランク、ランク最小値、ランク最大値に基づいて、ひとつのプログラムとして複数のランクを対象とする実行プログラムと、前記定義したランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムの少なくともいずれかを生成する第４ステップと
を有する情報処理方法。
【請求項１３】
前記第４ステップにおいては、ひとつのプログラムとして複数のランクを対象とする実行プログラムを生成する
請求項１２記載の情報処理方法。
【請求項１４】
前記第４ステップにおいては、前記定義したランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムを生成する
請求項１２記載の情報処理方法。
【請求項１５】
前記第４ステップにおいては、前記定義したランク、ランク最小値、ランク最大値に基づいて、ひとつのプログラムとして複数のランクを対象とする実行プログラムと、前記定義したランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムの両方を生成する
請求項１２記載の情報処理方法。
【請求項１６】
半導体集積回路のハードウェア部分と、そのハードウェア部分を制御する制御ソフトウェアを含む半導体集積回路の論理シミュレーションを並列実行するコンピュータによる並列実行環境において、
前記並列実行環境のコンピュータ資源情報を取得し、
前記取得したコンピュータ資源情報と、あらかじめ設定された実行制御ファイルとに基づき並列実行を行う際の実行設定を調整する実行設定調整を行い、
実行設定調整を行った結果に基づき並列実行プログラムの再構成を行う場合は実行設定記述ファイルを生成し、
前記実行設定記述ファイルに基づき並列実行プログラムを再構成し、
前記並列実行プログラムを前記実行設定記述ファイルに基づきハードウェア部分の論理シミュレーションを実行する並列実行環境のノードに、各ノードに必要な並列実行プログラムの共通部分と、各ノードのみに必要な並列実行プログラムの個別部分を各ノード別にロードし、
前記並列実行プログラムを前記実行設定記述ファイルに基づきソフトウェア部分の論理シミュレーションを実行する並列実行環境のノードにソフトウェア部分の並列実行プログラムをロードし、
並列実行プログラムを実行する情報処理方法。
【請求項１７】
ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムを、共通部分と各ノード別部分を分離し、各ノード部分は、実行させる各ノード用のコードのみを、実行するノードのメモリに動的にロードして並列実行プログラムをロードする情報処理であって、
あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成する第１ステップと、
前記実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行する第２ステップと
を有する情報処理をコンピュータに実行させるプログラム。
【請求項１８】
ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムのコンパイルを行う情報処理であって、
並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義する第１ステップと、
分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義する第２ステップと、
ランクを表現するランク最大値を定義する第３ステップと、
前記定義したランク、ランク最小値、ランク最大値に基づいて、ひとつのプログラムとして複数のランクを対象とする実行プログラムと、前記定義したランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムの少なくともいずれかを生成する第４ステップと
を有する情報処理をコンピュータに実行させるプログラム。
【請求項１９】
半導体集積回路のハードウェア部分と、そのハードウェア部分を制御する制御ソフトウェアを含む半導体集積回路の論理シミュレーションを並列実行するコンピュータによる並列実行環境において、
前記並列実行環境のコンピュータ資源情報を取得し、
前記取得したコンピュータ資源情報と、あらかじめ設定された実行制御ファイルとに基づき並列実行を行う際の実行設定を調整する実行設定調整を行い、
実行設定調整を行った結果に基づき並列実行プログラムの再構成を行う場合は実行設定記述ファイルを生成し、
前記実行設定記述ファイルに基づき並列実行プログラムを再構成し、
前記並列実行プログラムを前記実行設定記述ファイルに基づきハードウェア部分の論理シミュレーションを実行する並列実行環境のノードに、各ノードに必要な並列実行プログラムの共通部分と、各ノードのみに必要な並列実行プログラムの個別部分を各ノード別にロードし、
前記並列実行プログラムを前記実行設定記述ファイルに基づきソフトウェア部分の論理シミュレーションを実行する並列実行環境のノードにソフトウェア部分の並列実行プログラムをロードする
情報処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびその方法、並びにプログラムに係り、特に、ロジック系の半導体（LSI、SoC（システムオンチップ）など）を開発するEDA開発設計環境で、プロセッサブロックを含むハードウェア・ソフトウェアのシミュレーションを行う際に、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する技術に関するものである。
【背景技術】
【０００２】
メッセージパッシング方式の通信で分散されたプログラムが、メッセージパッシングによる通信、または共有メモリ方式による通信に基づき、複数のコンピュータの並列実行環境で並列分散処理を行う並列実行プログラムをソースコードから生成するコンパイル方法が知られている。
この方法においては、同一のソースコード内に各ノード毎の並列動作内容が記述されたソースコードからひとつの実行プログラムを生成し、対応する並列実行環境でそのひとつの実行プログラムを決められた実行手順により処理実行させている（たとえば特許文献１参照）。
【０００３】
また、並列プログラムを実行する並列コンピューティングの分野では、分散する各ノードにロードし実行する並列プログラムは、特定の提供サーバから提供される同一の並列プログラムを利用し、各ノードはその同一の並列プログラムに記載された、ノード毎に異なる処理として記述された部分の該当する部分のコードを実行することで、各ノードが別の処理を並列処理している。
これに関連する技術が特許文献２に記載されている。この開示技術では、各プロセッサが処理するデータに関して、複数のプロセッサ同士で送受信する際に、データがレジデントであるか否かにより、実行オブジェクトを修正する。
【特許文献１】特開平１０−１９８７９８号公報
【特許文献２】特開２０００−４８０００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、特許文献１に記載された技術に関連する方法では、同一のソースコードから、分散された各コンピュータが実行するプログラムを分けることなく、同じ実行プログラムとして実行し、各コンピュータが自己を認識するユニークなＩＤに基づいて分散処理を行うことで並列実行を実現しており、自コンピュータでは実行することのない実行コードもメインメモリ上、キャッシュメモリ上にロードする必要があり、限られたメモリを有効に利用することができないという不利益がある。
【０００５】
また、前記した特許文献２に関連する並列コンピューティングの分野では、同一の並列プログラムとして、各ノードが実行する全ての処理が含まれているため、あるノードの視点でみると実行することが無いコードもロードされ、貴重なメモリ資源が消費され、ローカルメモリが少ない場合には、実行されないコード部分と実行されるコード部分が、外部のメインメモリとの入れ替えが発生し、余分なトランザクションや、それによる実行時間の低下を発生させていた。
また、特許文献２の開示技術では、各プロセッサが処理するデータに関して、複数のプロセッサ同士で送受信する際に、データがレジデントであるか否かにより、実行オブジェクトを修正するだけであり、並列動作環境の状況とユーザ指定の双方に基づいて、少ないローカルメモリの最適利用を図ることは考慮されていない。
【０００６】
本発明は、並列動作環境の状況とユーザ指定の双方に基づいて、少ないローカルメモリの最適利用を図ることが可能な情報処理装置およびその方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の第１の観点は、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムを、共通部分と各ノード別部分を分離し、各ノード部分は、実行させる各ノード用のコードのみを、実行するノードのメモリに動的にロードして並列実行プログラムをロードする機能を有する情報処理装置であって、あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成する生成手段と、前記実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行する実行手段とを有する。
【０００８】
本発明の第２の観点は、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムのコンパイル機能を有する情報処理装置であって、並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義し、分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義し、ランクを表現するランク最大値を定義し、前記定義したランク、ランク最小値、ランク最大値に基づいて実行プログラムを生成する生成手段を有する。
【０００９】
本発明の第３の観点の情報処理装置は、第１の手段と第２の手段を有し、前記第１の手段は、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムを、共通部分と各ノード別部分を分離し、各ノード部分は、実行させる各ノード用のコードのみを、実行するノードのメモリに動的にロードして並列実行プログラムをロードする機能を有し、あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成し、前記実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行し、前記第２の手段は、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムのコンパイル機能を有し、並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義し、分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義し、ランクを表現するランク最大値を定義し、前記定義したランク、ランク最小値、ランク最大値に基づいて実行プログラムを生成する。
【００１０】
本発明の第４の観点は、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムを、共通部分と各ノード別部分を分離し、各ノード部分は、実行させる各ノード用のコードのみを、実行するノードのメモリに動的にロードして並列実行プログラムをロードする情報処理方法であって、あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成する第１ステップと、前記実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行する第２ステップとを有する。
【００１１】
本発明の第５の観点は、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムのコンパイルを行う情報処理方法であって、並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義する第１ステップと、分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義する第２ステップと、ランクを表現するランク最大値を定義する第３ステップと、前記定義したランク、ランク最小値、ランク最大値に基づいて、ひとつのプログラムとして複数のランクを対象とする実行プログラムと、前記定義したランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムの少なくともいずれかを生成する第４ステップとを有する。
【００１２】
本発明の第６の観点の情報処理方法は、半導体集積回路のハードウェア部分と、そのハードウェア部分を制御する制御ソフトウェアを含む半導体集積回路の論理シミュレーションを並列実行するコンピュータによる並列実行環境において、前記並列実行環境のコンピュータ資源情報を取得し、前記取得したコンピュータ資源情報と、あらかじめ設定された実行制御ファイルとに基づき並列実行を行う際の実行設定を調整する実行設定調整を行い、実行設定調整を行った結果に基づき並列実行プログラムの再構成を行う場合は実行設定記述ファイルを生成し、前記実行設定記述ファイルに基づき並列実行プログラムを再構成し、前記並列実行プログラムを前記実行設定記述ファイルに基づきハードウェア部分の論理シミュレーションを実行する並列実行環境のノードに、各ノードに必要な並列実行プログラムの共通部分と、各ノードのみに必要な並列実行プログラムの個別部分を各ノード別にロードし、前記並列実行プログラムを前記実行設定記述ファイルに基づきソフトウェア部分の論理シミュレーションを実行する並列実行環境のノードにソフトウェア部分の並列実行プログラムをロードし、並列実行プログラムを実行する。
【００１３】
本発明によれば、たとえば生成手段において、あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルが生成され、実行手段に供給される。
実行手段においては、実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムが実行される。
【発明の効果】
【００１４】
本発明によれば、並列動作環境の状況とユーザ指定の双方に基づいて、少ないローカルメモリの最適利用を図ることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態を添付図面に関連付けて説明する。
【００１６】
図１は、本発明の実施形態に係る情報処理装置の基本概念を示すシステム構成図である。
図２は、本発明の実施形態に係る情報処理装置の要部の具体的なアーキテクチャを示す図である。
【００１７】
本情報処理装置１０は、図１に示すように、ノードＮＤ１を含むソフトウェアシミュレーション統合制御ブロック(以下、単に統合制御ブロックという)１１、ノードＮＤ２，ＮＤ３を含むソフトウェアブロック１２、複数（本実施形態では４）のノードＮＤ４〜ＮＤ７を含むハードウェアブロック１３、ノードＮＤ８を含むストレージ装置１４、並びに統合制御ブロック１１、ソフトウェアブロック１２、ストレージ装置１３、ハードウェア１４、およびノードＮＤ９を含む開発環境部１５が接続され、これらが相互に通信を行うためのネットワーク１６を有する。
【００１８】
統合制御ブロック１１は、全体の統制制御を行い、協調シミュレーション実行環境の資源状況とソフトウェアブロックの実行内容に基づいて、実行環境の構成を動的に制御管理する。
【００１９】
図１および図２に示すノードＮＤ９を含む開発環境部１５は、ＭＰＩ版のＳｙｓｔｅｍＣのソースコード（Source Code）をＭＰＩ並列ライブラリとＳｙｓｔｅｍＣライブラリを使い、ＭＰＩ並列コンパイラでコンパイルを行い、シミュレーション実行形式のファイルを生成する計算機環境である。
【００２０】
ソフトウェアブロック１２は、ソフトウェアを実行するプログラムを収納し実行する。
ソフトウェアブロック１２は、たとえば図２に示すように、アプリケーション部１２Ａ、ミドルウェア部１２Ｂ、およびオペレーティングシステム（ＯＳ）１２Ｃにより形成される。
【００２１】
アプリケーション部１２Ａは、ＳｙｓｔｅｍＣソースコード（ＭＰＩ版）生成部１２１、ＭＰＩ並列コンパイラ１２２、およびシミュレーション実行形式部１２３を含む。
ミドルウェア部１２Ｂは、ＭＰＩ並列(関数)ライブラリ１２４、およびＳｙｓｔｅｍＣライブラリ１１２５を含む。
また、オペレーティングシステム１２Ｃは、ラムホストファイル部１２６、ユーティリティ部１２７、および常駐プログラム部（ｌａｍｄ）１２８を含む。
【００２２】
このように形成されるソフトウェアブロック１２の実行ファイル生成および実行環境起動手順について、図３および図４に関連付けて説明する。
図３は、ソフトウェアブロック１２における実行ファイル生成の手順を示すフローチャートである。また、図４は、ソフトウェアブロック１２における実行環境起動手順を示すフローチャートである。
【００２３】
実行ファイルの生成処理においては、まず、ソースコード生成部１２１において、ＭＰＩ版のソースコードを作成する（ＳＴ１）。
ＭＰＩ関数ライブラリ１２４、ＳｙｓｔｅｍＣライブラリ１１２５を参照しＭＰＩ並列コンパイラ１２２で作成したソースコードに関するコンパイルを行う（ＳＴ２）。
コンパイル結果を用いてシミュレーション実行形式部１２３が並列アプリケーションの実行ファイルを完成する（ＳＴ３）。完成した実行ファイルは、オペレーティングシステム１２Ｃに与えられる。
【００２４】
実行環境起動処理においては、実行ホストを設定し（ＳＴ１１）、ラム部１２８の環境の初期化を行う（ＳＴ１２）。
そして、実行ファイル生成処理で生成した実行ファイルに基づいて並列アプリケーションの実行を行う（ＳＴ１３）。
実行して、実行環境の停止である場合に（ＳＴ１４）、ラム部１２８の環境のクリーンアップを行う（ＳＴ１５）。
【００２５】
ハードウェアブロック１３は、プロセッサブロックを含む複数の回路ブロックであるノードＮＤ４〜ＮＤ７を有する。また、ノードＮＤ４〜ＮＤ７は、処理装置としてのＣＰＵあるいはハードウェア（Ｈ／Ｗ）ブロックを含む場合もある。
図２においては、ノードＮＤ４は１つのＣＰＵ４１を有し、ノードＮＤ５は２つのＣＰＵ５１を有し、ノードＮＤ６は２つのＣＰＵ６１，６２を有し、ノードＮＤ７は４つのＣＰＵ７１〜７４を有している例を示している。
【００２６】
ここで、各ノードの構成について説明する。
統合制御ブロック１１のノードＮＤ１、ソフトウェアブロック１２のノードＮＤ２，ＮＤ３、ハードウェアブロック１３のノードＮＤ４〜ＮＤ７は同様の構成を有し、ストレージ装置１４のノードＮＤ８のみ異なる構成を有する。
【００２７】
図５は、ストレージ装置を除く各ブロックにおける第１ノードの構成例を示すブロック図である。
また、図６は、ストレージ装置における第２ノードの構成例を示すブロック図である。
【００２８】
第１ノード２０は、図５に示すように、演算処理部２１、制御部２２、蓄積部２３、通信部２４、入力部２５、および出力部２６がバスＢＳ１により接続されて形成されている。
図２の構成においては、たとえば、第１ノード２０における演算処理部２１と制御部２２によりＣＰＵが形成される。
【００２９】
第２ノード３０は、図６に示すように、制御部３１、蓄積部３２、通信部３３、入力部３４、および出力部３５がバスＢＳ２により接続されて形成されている。
【００３０】
図７は、作成された実行ファイルにより２つのノード(ハードウェア部)間でネットワークを介してデータ通信を行う例を示す図である。
【００３１】
図７の例は、メッセージパッシングの例であって、ノードＮＤ４でデータを入力し、ノードＮＤ４の出力メッセージをネットワーク１６を介してノードＮＤ５に入力し、ノードＮＤ５から所定の処理後の所望のデータを出力する。
【００３２】
図８は、作成された実行ファイルにより２つのノード(ハードウェア部)間で共有メモリを介してデータの授受を行う例を示す図である。
【００３３】
図８の例は、ネットワークの代わりに、共有メモリ１６を用いる例であって、ノードＮＤ４でデータを入力し、ノードＮＤ４の処理後のデータ（たとえば係数等）を共有メモリ１７に記憶し、この共有メモリ１７に記憶されたデータをノードＮＤ５で読み出し、ノードＮＤ５から所定の処理後の所望のデータを出力する。
【００３４】
以上の構成を有する情報処理装置１０は、シミュレーション実行にあたり、各ブロックを別ＣＰＵ上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境において、以下の特徴的な機能を有している。
【００３５】
第１の機能として、プロセッサブロックを含むハードウェア・ソフトウェアのシミュレーションを行う際に、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムを、共通部分と各ノード別部分を分離し、各ノード部分は、実行させる各ノード用のコードのみを、実行するノードのメモリに動的にロードして並列実行プログラムをロードする、並列実行機能を有する。
【００３６】
第１の機能においては、あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、実行制御ファイルに記載された優先度に基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成する。
そして、実行を制御するデーモンは実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行する。
【００３７】
第１の機能を備えることにより、ＥＤＡツールによる半導体開発設計環境において、プロセッサブロックを含むハードウェア・ソフトウェアのシミュレーションをＳｙｓｔｅｍＣなどのプログラム言語を用いて行う際に、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムが並列分割設定に応じて、実行ファイルのサイズ低減を行い、比較的小さいサイズのローカルメモリを持つプロセッサでも、ローカルメモリのみでの並列実行が可能となる。
【００３８】
第２の機能として、プロセッサブロックを含むハードウェア・ソフトウェアのシミュレーションを行う際に、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムをコンパイルする機能を有する。
【００３９】
第２の機能においては、並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義し、分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義し、ランクを表現するランク最大値を定義し、この定義した、ランク、ランク最小値、ランク最大値に基づいて、ひとつのプログラムとして複数のランクを対象とする実行プログラムを生成する。
【００４０】
または、定義した、ランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムを生成する。
または、定義した、ランク、ランク最小値、ランク最大値に基づいて、ひとつのプログラムとして複数のランクを対象とする実行プログラムと、定義した、ランク、ランク最小値、ランク最大値に基づいて、ランク毎に別々のより小さなプログラムとして実行プログラムの両方を生成する。
【００４１】
第２の機能を備えることにより、ＥＤＡツールによる半導体開発設計環境において、プロセッサブロックを含むハードウェア・ソフトウェアのシミュレーションをＳｙｓｔｅｍＣなどのプログラム言語を用いて行う際に、ハードウェアブロックを複数のサブブロックに分散させ、ソフトウェアを別ブロックに分散させ、並列実行処理を行わせる並列実行プログラムをソースコードから生成する並列実行プログラムのコンパイル方法において、並列処理のために分散させる単位に応じて、それぞれの単位に対応する複数の実行コードを同一のソースコードから生成する並列実行プログラムのコンパイルを実現できる。
【００４２】
この特徴的な機能を踏まえた代表的なシーケンスを説明する。
図９は、本実施形態のシステムにおける図４の処理に対応した代表的なシーケンス例を示す図である。
図９においては、ハードウェアブロック１４のノードＮＤ４はプロセッサブロック、ノードＮＤ５はハードウェア（Ｈ／Ｗ）ブロックとして示している。
そして、図９においては、実行のシーケンスを各ノード間の接続を含み示している。
【００４３】
次に、実行制御ファイルを参照して資源情報を収集してオブジェクトリンクを生成する処理について、図１０〜図１２に関連付けて説明する。
図１０は、実行制御ファイルを参照して資源情報を収集してオブジェクトリンクを生成する処理の概要を示すフローチャートである。
図１１は、ソフトウェアとハードウェアの協調処理を示すフローチャートである。
図１２は、実行ファイルのロードイメージを示す図である。
【００４４】
図１０および図１１に示すように、ステップＳＴ１０１，ＳＴ２０１において、プリプロセッサ１２３がユーザの実行制御ファイル（図２参照）１２８を参照する。
次に、ステップＳＴ１０２において、実行環境の資源情報を収集する。収集する資源情報は、たとえば図２の例を参照すると、ノード（コンピュータhost1）ＮＤ４ではＣＰＵ資源数は１、ノードＮＤ５（host2）、ノードＮＤ６（host3）ではＣＰＵ資源数は２、ノードＮＤ７（host4）ではCPU資源数は４である。
図１１の処理フローでは、ステップＳＴ２０２においてソフトウェアから資源情報収集要求がハードウェア側に送信され、ハードウェアからステップＳＴ２０７、ＳＴ２０８で資源情報収集した結果が返送される。ステップＳＴ２０３の資源情報を受信が行われる。
次に、ステップＳＴ１０３，ＳＴ２０４において、ユーザの実行制御ファイルと資源情報に基づく実行設定調整処理を。この場合、図２のラムホスト（lamhosts）ファイル１２７にステップＳＴ１０２で収集した資源情報を記入する。
【００４５】
lamhosts 例：
host1.domain.xxx.co.jp: 1
host2.domain.xxx.co.jp: 2
host3.domain.xxx.co.jp: 2
host4.domain.xxx.co.jp: 4
【００４６】
次に、ステップＳＴ１０４において、オブジェクトを選択する。またはモジュールを選択して、オブジェクトリンクを生成する。そして、ステップＳＴ１０５において、ローカルメモリにオブジェクトをロードする。
より具体的には、ステップＳＴ２０５において、ユーザの実行制御ファイルと資源情報に基づく実行プログラムの選択の判断を行う。
そして、ユーザの実行制御ファイル通りであると判断した場合には、ステップＳＴ２０６において、オブジェクトを選択してリンクし、ロードを実行し、ステップＳＴ２１１においてジョブを投入する。
一方、実行ブルグラムの再構成が必要であると判断すると、ハードウェア資源に相当するモジュールを選択し、リンク処理を行う。そして、ステップＳＴ２１０において、オブジェクトを選択し、ロードを実行し、ステップＳＴ２１１においてジョブを投入する。
【００４７】
コンパイル方法で生成した、プログラムオブジェクトから、システムコードに相当する部分は図１２における共通部にロードするため選択し、ノード毎のインプリメンテーションコードに相当する部分は図１２におけるプロセッサ０，１（process0, process1）にロードするために選択する。
次に，選択した各プログラムオブジェクトをローカルメモリにロードする（ステップＳＴ１０５）。
【００４８】
ここでローカルメモリは、図１２における共通部とprocess0, process1を収納するためのメモリを示し、図１２のSPEのローカルストア（local store）の部分が例として挙がられる。
図１２は、ノードＮＤ４、ノードＮＤ５などそれぞれのSPEのlocal storeに収納される様子の例を示している。
最後にロードしたプログラムを実行する。
【００４９】
次に、第２の機能に関連するコンパイル対象のソースコードやコンパイル例について説明する。
【００５０】
図１３および図１４は、一般的なＳｙｓｔｅｍＣによるLAM+MPIによる仕組みを示す図であって、図１３はソースコード例を示し、図１４は実行コード結果のイメージを示している。
【００５１】
コンパイル対象のソースコード（図１３）は、ＳｙｓｔｅｍＣによるロジックシミュレーションをLAM+MPIの環境で実行するための既存のコードである。ＳｙｓｔｅｍＣの記述の名称でいうシステムコード（シミュレーションベンチを含む実行環境のコード）、および各ブロックの記述であるインプリメンテーションコードの各ソースコードにおいてｉｆ文やＭＰＩ  Ｓｔａｔｕｓ等の部分のコードがLAM+MPIを利用するためのコード部分である。
図１４は図１３のソースコードがコンパイルされた後の実行ファイルをソースコード形式の言語で表現した図である。
ランク（rank）毎に実行を制御する部分に着目すると、rank=0,1,2,3の各rankのそれぞれのコードを含み、それぞれを条件判断して実行する仕組みで、実行部分と条件判断部分の全てが実行ファイルに含まれる。
【００５２】
図１５および図１６は、一般的なＳｙｓｔｅｍＣ、LAM+MPIに加え、本実施形態の特徴的な内容を加えたコンパイル方法の仕組みを説明するためのフローチャートであり、図１５が基本的なフローを示し、図１６が中心的な処理フローを示している。
【００５３】
図１５に示すように、コンパイルを開始すると、ステップＳＴ３０１においてソースコードの並列処理実行部のチェックを行い、ステップＳＴ３０２で並列処理実行部の検出を行う。
ステップＳＴ３０２において、並列処理実行部を検出したら、そのなかに並列処理用の予約語のマクロが含まれているかどうかをチェックする（ＳＴ３０３）。
次に、ステップＳＴ３０４において、マクロの処理を行い、その後コンパイルを行う（ＳＴ３０５）。
並列処理実行部が含まれない場合は、ステップＳＴ３０３，ＳＴ３０４の処理をスキップし、ステップＳＴ３０５でコンパイルを行う。
【００５４】
以下、図１６〜図２２を参照してより詳細な処理を説明する。
図１７および図１８は、本実施形態に係るコンパイル方法により生成された、ノードごとに短縮化されたコードのイメージを示す図であって、図１７がソースコード例を示し、図１８が実行コード結果のイメージを示している。
また、図１９はソースコードを示し、図２０および図２１は図１９のソースコードの場合に生成されたコンパイル可能なコードの例を示す図である。
また、図２２はヘッダ例を示す図である。
【００５５】
図１６のステップＳＴ４０１において、変数MPI_RANKのチェックを行う。図１９の０８行でMPI_RANKには変数myrankが定義されている。
図１６のステップＳＴ４０２において、変数MPI_RANK_MINのチェックを行う。図１９の０９行でMPI_RANK_MINには定数０がセットされている。
図１６のステップＳＴ４０３において、変数MPI_RANK_MAXのチェックを行う。図１９の１０行でMPI_RANK_MAXには定数３がセットされている。
図１６のステップＳＴ４０４〜ＳＴ４０９においては、定数MPI_RANK_MAX ― 定数MPI_RANK_MIN  の回数（対象とするノード数を示す）の値をループ（LOOP）とし、LOOPの値の回数だけステップＳＴ４０７、ＳＴ４０８の処理を反復する。
図１６のステップＳＴ４０７においては、マクロにより並列処理部分のコードの埋め込みを行うことを示す。図１９では１８行目が該当する。
図１６のステップＳＴ４０８においては、マクロを展開して実際のコンパイル可能なコードを生成することを示す。図１９では同じく１８行目が該当する。
該当するマクロを含むMPI_RANKによる条件判断部分を含み、実際にコンパイル可能なコードを生成する。
【００５６】
たとえば、LOOPが３の場合はノード数が４(LOOP+1)であることを示し、生成されるコードは４つになり、各生成されたコードは４つのノードのうち１つのノードでの処理部分を示すコードのみが生成される。
LOOPが０の場合はノード数が１(LOOP+1)であることを示し、生成されるコードは１つになり、各生成されたコードは１つのノードで０から３までの処理を行う内容のコードが生成される。
【００５７】
以上の処理により、図１９のソースコードの場合に生成されたコンパイル可能なコードが図２０に示されている。
図２０は、定数MPI_RANK_MAXが３、定数MPI_RANK_MINが０の場合でノードが４つの場合の生成されたコードを示す。
図２１は、定数MPI_RANK_MAXが０、定数MPI_RANK_MINが０の場合でノードが１つの場合の生成されたコードを示す。
【００５８】
以上説明したように、本実施形態によれば、あらかじめ設定された実行制御ファイルと、対象となる並列実行環境の情報を取得した、資源情報とに基づき、実行制御ファイルに記載された優先度に基づき、資源情報と、実行制御ファイルに記載された希望条件から実行設定記述ファイルを生成し、実行を制御するデーモンは実行設定記述ファイルに基づき、各ノードには、各ノードに必要なプログラムの共通部分と、各ノードのみに必要なコード部分を各ノード別にロードし、並列プログラムを実行する第１の機能と、並列プログラムのソースコードに、並列実行部分の単位をユニークに特定するランクを定義し、分散させる並列実行部分の単位数に基づいて、ランクを表現するランク最小値を定義し、ランクを表現するランク最大値を定義し、この定義した、ランク、ランク最小値、ランク最大値に基づいて、ひとつのプログラムとして複数のランクを対象とする実行プログラムを生成する第２の機能を有することから、以下の効果を得ることができる。
【００５９】
本実施形態によれば、大規模な並列処理プログラムを、限りのあるローカルメモリを搭載したコンピュータや、マルチコアのプロセッサ内の各プロセッサコアが持つローカルメモリに収まりきる可能性の高い並列実行プログラムを生成することができる。
その結果、ハードウェアのコスト削減や、ローカルメモリに収まることにより、メインメモリとローカルメモリの間のオーバーレイ処理の低減による速度向上、実行時の分岐判断の削減による速度向上の効果があり、並列処理プログラムのより有効利用を行うことができる。
【００６０】
ハードウェア的に再構成可能なリコンフィギャラブルハードウェアの場合の、再構成するストーリを追加する場合に適用可能である。
【００６１】
なお、本装置は、半導体開発設計環境において、プロセッサブロックを含むハードウェアと、ソフトウェアのシミュレーション、たとえばアナログ回路のスパイスシミュレーションを行う際に、動的なシミュレーション実行環境制御を行う柔軟な開発環境の提供し、開発効率を向上させることができる。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施形態に係る情報処理装置の基本概念を示すシステム構成図である。
【図２】本発明の実施形態に係る情報処理装置の要部の具体的なアーキテクチャを示す図である。
【図３】ソフトウェアブロックにおける実行ファイル生成の手順を示すフローチャートである。
【図４】ソフトウェアブロックにおける実行環境起動手順を示すフローチャートである。
【図５】ストレージ装置を除く各ブロックにおける第１ノードの構成例を示すブロック図である。
【図６】ストレージ装置における第２ノードの構成例を示すブロック図である。
【図７】作成された実行ファイルにより２つのノード(ハードウェア部)間でネットワークを介してデータ通信を行う例を示す図である。
【図８】作成された実行ファイルにより２つのノード(ハードウェア部)間で共有メモリを介してデータの授受を行う例を示す図である。
【図９】本実施形態のシステムにおける代表的なシーケンス例を示す図である。
【図１０】実行制御ファイルを参照して資源情報を収集してオブジェクトリンクを生成する処理の概要を示すフローチャートである。
【図１１】ソフトウェアとハードウェアの協調処理を示すフローチャートである。
【図１２】実行ファイルのロードイメージを示す図である。
【図１３】一般的なＳｙｓｔｅｍＣによるLAM+MPIによる仕組みを示す図であって、ソースコード例を示す図である。
【図１４】一般的なＳｙｓｔｅｍＣによるLAM+MPIによる仕組みを示す図であって、実行コード結果のイメージを示す図である。
【図１５】ＳｙｓｔｅｍＣ、LAM+MPIに加え、本実施形態の特徴的な内容を加えたコンパイル方法の仕組みを説明するためのフローチャートであって、基本的なフローを示す図である。
【図１６】ＳｙｓｔｅｍＣ、LAM+MPIに加え、本実施形態の特徴的な内容を加えたコンパイル方法の仕組みを説明するためのフローチャートであって、中心的な処理フローを示す図である。
【図１７】本実施形態に係るコンパイル方法により生成された、ノードごとに短縮化されたコードのイメージを示す図であって、ソースコード例を示す図である。図１８が実行コード結果イメージを示している。
【図１８】本実施形態に係るコンパイル方法により生成された、ノードごとに短縮化されたコードのイメージを示す図であって、実行コード結果のイメージを示す図である。
【図１９】ソースコードを示す図である。
【図２０】図１９のソースコードの場合に生成されたコンパイル可能なコードの一例を示す図である。
【図２１】図１９のソースコードの場合に生成されたコンパイル可能なコードの他例を示す図である。
【図２２】ヘッダ例を示す図である。
【符号の説明】
【００６３】
１０・・・情報処理装置、１１・・・ソフトウェアシミュレーション統合制御ブロック(統合制御ブロック)、１２・・・ソフトウェアブロック、１３・・・ストレージ装置、１４・・・ハードウェアブロック、１５・・・コンパイル装置および実行制御装置、１６・・・ネットワーク、１７・・・共有メモリ、ＮＤ１〜ＮＤ８・・・ノード。
【図１】
2008123315.tif 000003
【図２】
2008123315.tif 000004
【図３】
2008123315.tif 000005
【図４】
2008123315.tif 000006
【図５】
2008123315.tif 000007
【図６】
2008123315.tif 000008
【図７】
2008123315.tif 000009
【図８】
2008123315.tif 000010
【図９】
2008123315.tif 000011
【図１０】
2008123315.tif 000012
【図１１】
2008123315.tif 000013
【図１２】
2008123315.tif 000014
【図１３】
2008123315.tif 000015
【図１４】
2008123315.tif 000016
【図１５】
2008123315.tif 000017
【図１６】
2008123315.tif 000018
【図１７】
2008123315.tif 000019
【図１８】
2008123315.tif 000020
【図１９】
2008123315.tif 000021
【図２０】
2008123315.tif 000022
【図２１】
2008123315.tif 000023
【図２２】
2008123315.tif 000024