(57)【要約】【課題】複数のプログラムが同時に動作するシステムにおいて、当該複数のプログラムへの資源の割り付けを行う。【解決手段】本発明に係る資源割付装置１は、システム上で同時に動作するプログラム群を示すプログラム輻輳パターン情報とを取得するシステム情報取得部１０１と、前記プログラム輻輳パターン情報に示される前記プログラム群に含まれる複数のプログラムに前記資源を割り付ける複数の資源割付パターンを生成し、生成した複数の資源割付パターンで前記資源を前記プログラム群に含まれる複数のプログラムに割り付けた際の、当該複数のプログラムを実行するのに必要な処理量の合計を算出し、算出した処理量の合計に基づいて、生成した前記複数の資源割付パターンのうち最適な資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する資源割付パターン決定部１０２とを備える。【選択図】図１
2010113482.tif 000002
【特許請求の範囲】
【請求項１】
資源を分割又は共有して複数のプログラムが動作するシステムにおける、前記複数のプログラムに割り付ける前記資源の割付量を示す資源割付パターンを決定する資源割付方法であって、
前記資源の総量と、当該資源の割付単位と、前記システム上で同時に動作するプログラム群を示すプログラム輻輳パターン情報とを取得する取得ステップと、
前記資源の総量と前記割付単位とを用いて、前記プログラム輻輳パターン情報に示される前記プログラム群に含まれる複数のプログラムに前記資源を割り付ける複数の資源割付パターンを生成し、生成した複数の資源割付パターンで前記資源を前記プログラム群に含まれる複数のプログラムに割り付けた際の、当該複数のプログラムを実行するのに必要な処理量の合計を算出し、算出した処理量の合計に基づいて、生成した前記複数の資源割付パターンのうち最適な資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する資源割付決定ステップとを含む
資源割付方法。
【請求項２】
前記資源割付決定ステップでは、前記生成した複数の資源割付パターンのうち、前記プログラム群に含まれる複数のプログラムの実行に必要な処理量の合計が、最も少ない資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する
請求項１記載の資源割付方法。
【請求項３】
前記資源割付決定ステップは、
前記プログラム群に含まれる複数のプログラムのそれぞれに対して、複数の異なる割付量で前記資源を割り付けた際の、当該プログラムの実行に必要な処理量を算出する処理量算出ステップと、
前記資源の総量と前記割付単位とを用いて、前記複数の資源割付パターンを生成し、生成した複数の資源割付パターンのそれぞれに対して、当該資源割付パターンで示される複数のプログラムと割付量との組に対応する、前記処理量算出ステップで算出された処理量を加算することで、当該資源割付パターンで前記プログラム群に含まれる複数のプログラムを実行する場合に必要となる処理量の合計である合計処理量を算出し、算出した合計処理量が最も少ない資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する資源割付ステップとを含む
請求項２記載の資源割付方法。
【請求項４】
前記複数のプログラムは、前記システムに含まれる複数のプロセッサコアのうちいずれかに割り付けて実行可能であり、
前記資源割付決定ステップは、
当該資源割付決定ステップで決定された資源割付パターンで示される割付量の資源を前記複数のプログラムに割り付けた際の、各プログラムを実行するために必要な処理量を用いて、前記複数のプロセッサコアのそれぞれに対して、当該プロセッサコアに割り付けられた１以上のプログラムを実行するために必要な処理量の合計が、当該プロセッサコアの処理能力内になるように、前記プログラム群に含まれる複数のプログラムのそれぞれを、前記複数のプロセッサコアのいずれに割り付けるプロセッサコア割付パターンを決定するプロセッサコア割付ステップを含む
請求項１記載の資源割付方法。
【請求項５】
前記プログラム輻輳パターン情報は、前記プログラム群を含む複数のプログラム群を示し、
前記複数のプログラム群には、同一のプログラムが含まれ、
前記資源割付決定ステップでは、前記複数のプログラム群ごとに、前記資源割付パターンに決定し、
前記プロセッサコア割付ステップは、
前記複数のプログラム群ごとに、当該プログラム群に含まれる複数のプログラムのそれぞれを、前記複数のプロセッサコアに割り付ける複数のプロセッサコア割付パターンを生成するステップと、
前記複数のプログラム群ごとに、前記資源割付決定ステップで決定された、当該プログラム群に対応する資源割付パターンで示される割付量の資源を前記複数のプログラムに割り付けた際の、各プログラムを実行するために必要な処理量を用いて、前記生成された、当該プログラム群に対する複数のプロセッサコア割付パターンのうち、前記複数のプロセッサコアのそれぞれに割り付けるプログラムを実行するために必要な処理量の合計が、当該プロセッサコアの処理能力内になる１個以上のプロセッサコア割付パターンを抽出するステップと、
前記複数のプログラム群ごとの、前記抽出された１個以上のプロセッサコア割付パターンのうち、前記同一のプログラムが同一のプロセッサコアに割り付けられたプロセッサコア割付パターンを、前記複数のプログラム群に含まれる複数のプログラムを前記複数のプロセッサコアのいずれに割り付けるプロセッサコア割付パターンとして決定するステップとを含む
請求項４記載の資源割付方法。
【請求項６】
前記資源は、複数のプロセッサコアのそれぞれに対応し、対応するプロセッサコアで用いられる第１資源と、前記複数のプロセッサコアで共有される第２資源とを含み、
前記取得ステップでは、前記第１資源の総量と、前記第２資源の総量と、前記第１資源の割付単位と、前記第２資源の割付単位と、前記プログラム輻輳パターン情報とを取得し、
前記資源割付決定ステップは、
前記第１資源の総量及び前記第１資源の割付単位を用いて、前記プログラム群に含まれる複数のプログラムに前記第１資源を割り付ける複数の第１資源割付パターンを生成し、生成した複数の第１資源割付パターンのうち、前記プログラム群に含まれる複数のプログラムの実行に必要な処理量の合計が最も少なくなる第１資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する第１資源割付パターンに決定する第１資源割付決定ステップと、
前記第２資源の総量及び前記第２資源の割付単位を用いて、前記プログラム群に含まれる複数のプログラムに前記第２資源を割り付ける複数の第２資源割付パターンを生成し、生成した複数の第２資源割付パターンのうち、前記プログラム群に含まれる複数のプログラムの実行に必要な処理量の合計が最も少なくなる第２資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する第２資源割付パターンに決定する第２資源割付決定ステップとを含む
請求項２記載の資源割付方法。
【請求項７】
資源を分割又は共有して複数のプログラムが動作するシステムにおける、前記複数のプログラムに割り付ける前記資源の割付量を示す資源割付パターンを決定する資源割付方法のプログラムであって、
前記資源の総量と、当該資源の割付単位と、前記システム上で同時に動作するプログラム群を示すプログラム輻輳パターン情報とを取得する取得ステップと、
前記資源の総量と前記割付単位とを用いて、前記プログラム輻輳パターン情報に示される前記プログラム群に含まれる複数のプログラムに前記資源を割り付ける複数の資源割付パターンを生成し、生成した複数の資源割付パターンで前記資源を前記プログラム群に含まれる複数のプログラムに割り付けた際の、当該複数のプログラムを実行するのに必要な処理量の合計を算出し、算出した処理量の合計に基づいて、生成した前記複数の資源割付パターンのうち最適な資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する資源割付決定ステップとをコンピュータに実行させる
プログラム。
【請求項８】
資源を分割又は共有して複数のプログラムが動作するシステムにおける、前記複数のプログラムに割り付ける前記資源の割付量を示す資源割付パターンを決定する資源割付装置であって、
前記資源の総量と、当該資源の割付単位と、前記システム上で同時に動作するプログラム群を示すプログラム輻輳パターン情報とを取得する取得部と、
前記資源の総量と前記割付単位とを用いて、前記プログラム輻輳パターン情報に示される前記プログラム群に含まれる複数のプログラムに前記資源を割り付ける複数の資源割付パターンを生成し、生成した複数の資源割付パターンで前記資源を前記プログラム群に含まれる複数のプログラムに割り付けた際の、当該複数のプログラムを実行するのに必要な処理量の合計を算出し、算出した処理量の合計に基づいて、生成した前記複数の資源割付パターンのうち最適な資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する資源割付決定部とを備える
資源割付装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、資源割付方法、プログラム、及び資源割付装置に関し、特に、資源を分割又は共有して複数のプログラムが動作するシステムにおける、前記複数のプログラムに割り付ける前記資源の割付量を示す資源割付パターンを決定する資源割付方法、プログラム、及び資源割付装置に関する。
【背景技術】
【０００２】
システム上で動作するプログラム（ソフトウェア）の開発時等には、メモリ等の資源を、当該プログラムに割り付ける割付量を最適に決定する必要がある。また、近年における、プロセッサコア数の増加、及びプログラム数の増加により、人手による資源の割り付けは限界に近く、これを自動化する必要がある。
【０００３】
このような資源の割付量を決定する従来の資源割付方法として、例えば、特許文献１記載の技術が知られている。特許文献１記載の技術では、プログラムの実行時の動作をシミュレーションすることにより、当該プログラムの実行時のメモリアクセス記録を生成する。特許文献１記載の技術では、生成したメモリアクセス記録を用いて、当該プログラムが使用する複数の領域を高速なメモリに割り付けるか、低速なメモリに割り付けるかを決定する。
【特許文献１】特開２００４−７０８６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の資源割付方法は、資源割付の対象となるプログラムが単一の場合しか使用できず、マルチプログラミングが可能なシステム上で、複数のプログラムに資源割付を行う場合には使用できないという課題があった。
【０００５】
そこで本発明は、複数のプログラムが同時に動作するシステムにおいて、当該複数のプログラムへの資源の割り付けを行える資源割付方法、プログラム及び資源割付装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明に係る資源割付方法は、資源を分割又は共有して複数のプログラムが動作するシステムにおける、前記複数のプログラムに割り付ける前記資源の割付量を示す資源割付パターンを決定する資源割付方法であって、前記資源の総量と、当該資源の割付単位と、前記システム上で同時に動作するプログラム群を示すプログラム輻輳パターン情報とを取得する取得ステップと、前記資源の総量と前記割付単位とを用いて、前記プログラム輻輳パターン情報に示される前記プログラム群に含まれる複数のプログラムに前記資源を割り付ける複数の資源割付パターンを生成し、生成した複数の資源割付パターンで前記資源を前記プログラム群に含まれる複数のプログラムに割り付けた際の、当該複数のプログラムを実行するのに必要な処理量の合計を算出し、算出した処理量の合計に基づいて、生成した前記複数の資源割付パターンのうち最適な資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する資源割付決定ステップとを含む。
【０００７】
これによれば、本発明に係る資源割付方法は、複数のプログラムが同時に動作するシステムにおいて、当該複数のプログラムへの最適な資源の割り付けを行える。
【０００８】
また、前記資源割付決定ステップでは、前記生成した複数の資源割付パターンのうち、前記プログラム群に含まれる複数のプログラムの実行に必要な処理量の合計が、最も少ない資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定してもよい。
【０００９】
これによれば、本発明に係る資源割付方法は、最も処理量が小さくなる、最適な資源の割り付けを行える。
【００１０】
また、前記資源割付決定ステップは、前記プログラム群に含まれる複数のプログラムのそれぞれに対して、複数の異なる割付量で前記資源を割り付けた際の、当該プログラムの実行に必要な処理量を算出する処理量算出ステップと、前記資源の総量と前記割付単位とを用いて、前記複数の資源割付パターンを生成し、生成した複数の資源割付パターンのそれぞれに対して、当該資源割付パターンで示される複数のプログラムと割付量との組に対応する、前記処理量算出ステップで算出された処理量を加算することで、当該資源割付パターンで前記プログラム群に含まれる複数のプログラムを実行する場合に必要となる処理量の合計である合計処理量を算出し、算出した合計処理量が最も少ない資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する資源割付ステップとを含んでもよい。
【００１１】
また、前記複数のプログラムは、前記システムに含まれる複数のプロセッサコアのうちいずれかに割り付けて実行可能であり、前記資源割付決定ステップは、当該資源割付決定ステップで決定された資源割付パターンで示される割付量の資源を前記複数のプログラムに割り付けた際の、各プログラムを実行するために必要な処理量を用いて、前記複数のプロセッサコアのそれぞれに対して、当該プロセッサコアに割り付けられた１以上のプログラムを実行するために必要な処理量の合計が、当該プロセッサコアの処理能力内になるように、前記プログラム群に含まれる複数のプログラムのそれぞれを、前記複数のプロセッサコアのいずれに割り付けるプロセッサコア割付パターンを決定するプロセッサコア割付ステップを含んでもよい。
【００１２】
これによれば、本発明に係る資源割付方法は、複数のプログラムを複数のプロセッサコアに割り付けて実行するシステムにおいて、複数のプロセッサコアに対するプログラムの割付及び資源の割り付けを最適に決定できる。
【００１３】
また、前記プログラム輻輳パターン情報は、前記プログラム群を含む複数のプログラム群を示し、前記複数のプログラム群には、同一のプログラムが含まれ、前記資源割付決定ステップでは、前記複数のプログラム群ごとに、前記資源割付パターンに決定し、前記プロセッサコア割付ステップは、前記複数のプログラム群ごとに、当該プログラム群に含まれる複数のプログラムのそれぞれを、前記複数のプロセッサコアに割り付ける複数のプロセッサコア割付パターンを生成するステップと、前記複数のプログラム群ごとに、前記資源割付決定ステップで決定された、当該プログラム群に対応する資源割付パターンで示される割付量の資源を前記複数のプログラムに割り付けた際の、各プログラムを実行するために必要な処理量を用いて、前記生成された、当該プログラム群に対する複数のプロセッサコア割付パターンのうち、前記複数のプロセッサコアのそれぞれに割り付けるプログラムを実行するために必要な処理量の合計が、当該プロセッサコアの処理能力内になる１個以上のプロセッサコア割付パターンを抽出するステップと、前記複数のプログラム群ごとの、前記抽出された１個以上のプロセッサコア割付パターンのうち、前記同一のプログラムが同一のプロセッサコアに割り付けられたプロセッサコア割付パターンを、前記複数のプログラム群に含まれる複数のプログラムを前記複数のプロセッサコアのいずれに割り付けるプロセッサコア割付パターンとして決定するステップとを含んでもよい。
【００１４】
これによれば、本発明に係る資源割付方法は、複数の同時に動作するプログラム群に含まれる同一のプログラムを同じプロセッサコアに割り当てることができる。
【００１５】
また、前記資源は、複数のプロセッサコアのそれぞれに対応し、対応するプロセッサコアで用いられる第１資源と、前記複数のプロセッサコアで共有される第２資源とを含み、前記取得ステップでは、前記第１資源の総量と、前記第２資源の総量と、前記第１資源の割付単位と、前記第２資源の割付単位と、前記プログラム輻輳パターン情報とを取得し、前記資源割付決定ステップは、前記第１資源の総量及び前記第１資源の割付単位を用いて、前記プログラム群に含まれる複数のプログラムに前記第１資源を割り付ける複数の第１資源割付パターンを生成し、生成した複数の第１資源割付パターンのうち、前記プログラム群に含まれる複数のプログラムの実行に必要な処理量の合計が最も少なくなる第１資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する第１資源割付パターンに決定する第１資源割付決定ステップと、前記第２資源の総量及び前記第２資源の割付単位を用いて、前記プログラム群に含まれる複数のプログラムに前記第２資源を割り付ける複数の第２資源割付パターンを生成し、生成した複数の第２資源割付パターンのうち、前記プログラム群に含まれる複数のプログラムの実行に必要な処理量の合計が最も少なくなる第２資源割付パターンを、前記プログラム群に含まれる複数のプログラムに対する第２資源割付パターンに決定する第２資源割付決定ステップとを含んでもよい。
【００１６】
これによれば、本発明に係る資源割付方法は、プロセッサコアの各々が有するレベル１キャッシュ等の第１資源と、複数のプロセッサコアで共通に用いられるレベル２キャッシュ等の第２資源とを有するシステムにおいて、複数のプログラムに、第１資源と、第２資源とを最適に割り付けることができる。
【００１７】
なお、本発明は、このような資源割付方法として実現できるだけでなく、資源割付方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現したり、そのような特徴的なステップを手段とする資源割付装置として実現したり、そのような資源割付装置の機能の一部又は全てを有する集積回路（ＬＳＩ）として実現したりできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
【発明の効果】
【００１８】
以上より、本発明は、複数のプログラムが同時に動作するシステムにおいて、当該複数のプログラムへの資源の割り付けを行える資源割付方法、プログラム及び資源割付装置を提供できる。
【発明を実施するための最良の形態】
【００１９】
以下、資源割付装置及び資源割付方法の実施の形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００２０】
（実施の形態１）
本発明の実施の形態１に係る資源割付装置及び資源割付方法は、システム上で動作する複数のプログラム情報を取得し、取得したプログラムの情報を用いて、資源をプログラムに割り付けた場合の処理量をシミュレーションし、当該シミュレーション結果に基づきプログラム毎の資源の割付量を決定する。また、本発明の実施の形態１では、資源が、一つのプロセッサコアにより実行される複数のプログラム間で分割又は共有して使用可能なキャッシュメモリの場合を例に説明する。
【００２１】
まず、本発明の実施の形態１に係る資源割付装置１の構成を説明する。
【００２２】
図１は、本発明の実施の形態１に係る資源割付装置１のブロック図である。
【００２３】
例えば、資源割付装置１は、システム上で動作するソフトウェア（プログラム）を開発するためのソフトウェア開発装置であり、複数のプログラムに割り付ける資源の割付量を示す資源割付パターンを決定する。ここで、資源とは、例えば、プロセッサがプログラムの実行時に使用するメモリ資源であり、特に、低速なメインメモリと、高速なキャッシュメモリとを備えるシステムにおけるキャッシュメモリである。この資源割付装置１は、システム情報取得部１０１と、資源割付パターン決定部１０２と、処理量算出シミュレーション部１０３と、資源割付シミュレーション部１０４とを備える。
【００２４】
システム情報取得部１０１は、外部から入力されたシステム情報を取得する。このシステム情報は、システム上で動作する複数のプログラムを示す情報であるプログラム情報と、システムに搭載されている割付対象とする資源の総量を示す資源総量情報と、資源の割付単位を示す割付単位情報と、システム上で同時に動作するプログラム群を示すプログラム輻輳パターン情報とを含む。
【００２５】
資源割付パターン決定部１０２は、プログラム輻輳パターン情報で示される同時に動作する複数のプログラム群（以下、輻輳パターン）に対して資源の割付量（以下、資源割付量）を最適に決定する。
【００２６】
具体的には、資源割付パターン決定部１０２は、システム情報取得部１０１により取得された資源の総量と割付単位とを用いて、輻輳パターンごとに、資源割付パターンを生成する。ここで、資源割付パターンとは、プログラム輻輳パターン情報に示される輻輳パターンに含まれる複数のプログラムに、資源を割り付けたパターンである。
【００２７】
また、資源割付パターン決定部１０２は、生成した複数の資源割付パターンで資源を輻輳パターンに含まれる複数のプログラムに割り付けた際の、当該複数のプログラムを実行するのに必要な処理量の合計（以下、合計処理量）を算出する。
【００２８】
また、資源割付パターン決定部１０２は、算出した処理量の合計に基づいて、生成した複数の資源割付パターンのうち最適な資源割付パターンを、輻輳パターンに含まれる複数のプログラムに対する資源割付パターンに決定する。具体的には、資源割付パターン決定部１０２は、算出した合計処理量が、システムに所望される目標の処理量よりも小さく、かつ、合計処理量が最も小さい資源割付パターンを、輻輳パターンに含まれる複数のプログラムに対する資源割付パターンに決定する。ここで、処理量とは、プロセッサコアがプログラムの実行に必要な処理量であり、具体的には、プロセッサコアがプログラムの実行に用いる、単位時間あたりのクロック数である。
【００２９】
また、資源割付パターン決定部１０２は、生成した複数の資源割付パターンのうち、合計処理量が最も少ない資源割付パターンを、輻輳パターンに対する資源割付パターンに決定する。
【００３０】
この資源割付パターン決定部１０２は、処理量算出シミュレーション部１０３と、資源割付シミュレーション部１０４とを備える。
【００３１】
処理量算出シミュレーション部１０３は、複数の輻輳パターンに含まれる複数のプログラムのそれぞれに対して、複数の異なる割付量で資源を割り付けた際の、当該プログラムの実行に必要な処理量を算出する。
【００３２】
資源割付シミュレーション部１０４は、複数の輻輳パターンごとに、資源の総量と前記割付単位とを用いて、複数の資源割付パターンを生成する。また、資源割付シミュレーション部１０４は、複数の輻輳パターンごとに、生成した複数の資源割付パターンのそれぞれに対して、当該資源割付パターンでの合計処理量を算出する。具体的には、資源割付シミュレーション部１０４は、当該資源割付パターンで示される複数のプログラムと割付量との組に対応する、処理量算出シミュレーション部１０３により算出された処理量を加算することで、合計処理量を算出する。また、資源割付シミュレーション部１０４は、算出した合計処理量が最も少ない資源割付パターンを、プログラム群に含まれる複数のプログラムに対する資源割付パターンに決定する。
【００３３】
情報格納部１０５は、資源割付パターン決定部１０２により算出された、処理途中のデータを格納する。具体的には、情報格納部１０５は、処理量算出シミュレーション部１０３により算出されたプログラムごとの処理量、資源割付シミュレーション部１０４により算出された資源割付パターンごとの合計処理量等を格納する。
【００３４】
なお、システム情報取得部１０１、処理量算出シミュレーション部１０３、及び資源割付シミュレーション部１０４は、通常、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びメモリ等により実現される。また、システム情報取得部１０１、処理量算出シミュレーション部１０３、及び資源割付シミュレーション部１０４の機能は、通常、ＭＰＵがソフトウェア（プログラム）を実行することにより実現される。また、当該ソフトウェアはＲＯＭ等の記録媒体（メモリ）に記録されている。なお、システム情報取得部１０１、処理量算出シミュレーション部１０３、及び資源割付シミュレーション部１０４の機能のうち全て又は一部を、ハードウェア（専用回路）で実現してもよい。
【００３５】
また、情報格納部１０５は、ＲＡＭ等のメモリにより実現される。
【００３６】
次に、資源割付装置１により実行される資源割付方法について説明する。
【００３７】
図２は、資源割付装置１により実行される資源割付方法の流れの概略を示すフローチャートである。
【００３８】
（ステップＳ０１）
ステップＳ０１で、まず、システム情報取得部１０１は、外部から入力された、当該資源割付方法で用いられるシステム情報を取得する。ここで、システム情報取得部１０１が取得するシステム情報は、システム上で動作する複数のプログラムを示すプログラム情報と、システムに搭載されている割付対象とする資源の総量を示す資源総量情報と、当該資源の割付単位を示す割付単位情報と、システム上で同時に動作するプログラムの組を示すプログラム輻輳パターン情報とを含む。
【００３９】
（ステップＳ０２）
ステップＳ０２で、処理量算出シミュレーション部１０３は、各プログラムに対して資源を異なる量割り付けたそれぞれの場合の、当該プログラムの処理量を算出する。
【００４０】
（ステップＳ０３）
ステップＳ０３で、資源割付シミュレーション部１０４は、輻輳パターンごとに、プログラムの合計処理量が最小となるように、複数のプログラムに対する資源割付パターンを決定する。
【００４１】
次に、ステップＳ０２の詳細な動作を説明する。
【００４２】
図３は、ステップＳ０２の動作の流れを示すフローチャートである。
【００４３】
（ステップＳ０２０１）
ステップＳ０２０１で、処理量算出シミュレーション部１０３は、システム情報取得部１０１により取得されたプログラム情報で示される各プログラムに対して、処理量算出のための準備を行う。すなわち、処理量算出シミュレーション部１０３は、シミュレータ上で各プログラムに含まれる処理量算出対象区間のプログラムを実行させることにより、当該プログラムのメインメモリへのメモリアクセスパターンを取得する。
【００４４】
図４は、処理量算出シミュレーション部１０３により取得されるメモリアクセスパターン５００の例を示す図である。図４に示すように、メモリアクセスパターン５００は、各アクセスに対応する、当該プログラムがアクセスしたアドレス５０１と、アクセスしたデータのサイズ５０２と、当該アクセスがリードアクセスであるかライトアクセスであるかを示す情報５０３とを含む。
【００４５】
（ステップＳ０２０２）
ステップＳ０２０２で、処理量算出シミュレーション部１０３は、ステップＳ０２０１で取得した、各プログラムのメモリアクセスパターン５００を用いて、各プログラムに資源を割り付けた量ごとに、当該プログラムの処理量を算出する。具体的には、処理量算出シミュレーション部１０３は、メモリアクセスパターン５００でメインメモリにアクセスした場合の、キャッシュメモリへのヒット又はミスをシミュレーションし、当該シミュレーション結果に基づき、処理量を算出する。つまり、処理量算出シミュレーション部１０３は、ミス時のアクセスレイテンシが、ヒット時のアクセスレイテンシより大きくなるようにシミュレーションを行う。言い換えると、処理量算出シミュレーション部１０３は、ミス時の実行時間（処理量）が、ヒット時の実行時間（処理量）より大きくなるようにシミュレーションを行う。
【００４６】
以上の動作により、処理量算出シミュレーション部１０３は、資源割付量ごとの各プログラムの処理量を算出できる。
【００４７】
次に、ステップＳ０３の詳細な動作を説明する。
【００４８】
図５は、ステップＳ０３の詳細な動作の流れを示すフローチャートである。
【００４９】
（ステップＳ０３０１）
ステップＳ０３０１で、資源割付シミュレーション部１０４は、システム情報取得部１０１により取得されたプログラム輻輳パターン情報で示される複数の輻輳パターンから一つの輻輳パターンを選択する。また、このステップＳ０３０１から後述のステップＳ０３１０までの処理は、ループを形成し、ステップＳ０３０１で全ての輻輳パターンが順次選択される。
【００５０】
（ステップＳ０３０２）
ステップＳ０３０２で、資源割付シミュレーション部１０４は、ステップＳ０３０１で選択した輻輳パターンに対する、複数の資源割付パターンを生成する。また、資源割付シミュレーション部１０４は、生成した資源割付パターンのうち一つの資源割付パターンを選択する。ここで資源割付シミュレーション部１０４により生成される資源割付パターンの数は、輻輳パターンに含まれるプログラムの数と、資源の総量と、資源の割付単位とによって決まる。また、このステップＳ０３０２から後述のステップＳ０３０５までの処理は、ループを形成し、ステップＳ０３０２で全ての資源割付パターンが順次選択される。
【００５１】
（ステップＳ０３０３）
ステップＳ０３０３で、資源割付シミュレーション部１０４は、ステップＳ０３０２で選択した資源割付パターンに従って、ステップＳ０３０１で選択した輻輳パターンに含まれる各プログラムの合計処理量を算出する。具体的には、資源割付シミュレーション部１０４は、当該資源割付パターンにおける各プログラムに割り付けられた資源の割付量に対応する、ステップＳ０２で算出した処理量を合計する。
【００５２】
（ステップＳ０３０４）
ステップＳ０３０４で、資源割付シミュレーション部１０４は、ステップＳ０３０３で算出した合計処理を、ステップＳ０３０１で選択された輻輳パターン、及びステップＳ０３０２で選択された資源割付パターンと関連付けて情報格納部１０５に格納する。
【００５３】
（ステップＳ０３０５）
ステップＳ０３０５で、資源割付シミュレーション部１０４は、ステップＳ０３０２で選択すべき資源割付パターンが全て選択されたか否かを判断する。資源割付シミュレーション部１０４は、まだ選択していない資源割付パターンが存在する場合には、ステップＳ０３０２で新たな資源割付パターンを選択したのち、ステップＳ０３０３以降の処理を行い、全てのパターンを選択している場合には、次に、ステップＳ０３０６の処理を行う。
【００５４】
（ステップＳ０３０６）
ステップＳ０３０６で、資源割付シミュレーション部１０４は、情報格納部１０５に格納されている、現在選択されている輻輳パターンに対する資源割付パターンの中から、合計処理量が最も小さい資源割付パターンを選択する。
【００５５】
（ステップＳ０３０７）
ステップＳ０３０７で、資源割付シミュレーション部１０４は、ステップＳ０３０６で選択した資源割付パターンの合計処理量が目標とする処理量以内か否かを判定する。ここで、目標とする処理量は、プロセッサコアの周波数の値、又は当該値にマージンを持たせた値である。また、資源割付シミュレーション部１０４は、処理量が目標とする値以内でないときには、次に、ステップＳ０３０８の処理を行い、処理量が目標とする値以内であるときには、次に、ステップＳ０３０９の処理を行う。
【００５６】
（ステップＳ０３０８）
ステップＳ０３０８で、資源割付シミュレーション部１０４は、ステップＳ０３０７までで目標とする処理量を満たす資源割付パターンが見つからなかったので、「解なし」を外部に出力したうえで、割付処理を終了する。
【００５７】
（ステップＳ０３０９）
ステップＳ０３０９で、資源割付シミュレーション部１０４は、ステップＳ０３０６で選択した資源割付パターンを、現在選択されている輻輳パターンに対する資源割付パターンとして外部に出力する。
【００５８】
（ステップＳ０３１０）
ステップＳ０３１０で、資源割付シミュレーション部１０４は、ステップＳ０３０１で選択するプログラム輻輳パターン情報に含まれる全ての輻輳パターンの選択がステップＳ０３０１で行われたか否かを判定する。資源割付シミュレーション部１０４は、まだ選択していない輻輳パターンが存在するときには、次に、ステップＳ０３０１で新たな輻輳パターンを選択し、選択した輻輳パターンに対してステップＳ０３０２以降の処理を行う。また、資源割付シミュレーション部１０４は、全ての輻輳パターンをステップＳ０３０１で選択し終わっている場合には、割付処理を終了する。
【００５９】
以上の処理により、プログラム輻輳パターン情報に含まれる全ての輻輳パターンに対して、資源割付パターンが決定される。
【００６０】
以下、本発明の実施の形態１に係る資源割付方法の具体的な動作例を説明する。
【００６１】
ステップＳ０１では、システム情報取得部１０１は、外部から入力された、当該資源割付方法で用いるシステム情報を取得する。ここでは、システム情報に含まれるプログラム情報に、システム上でｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ、ｐｒｏｇＤ、及びｐｒｏｇＥの５つのプログラムが動作することが示されており、資源総量情報に、割付対象の資源が１６ＫＢのキャッシュメモリであることが示されており、割付単位情報に、割付単位が４ＫＢであることが示されており、プログラム輻輳パターン情報に、プログラムの輻輳パターンとして、（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）、（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＤ）及び（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＥ）の３つが示されているとする。
【００６２】
ステップＳ０２では、処理量算出シミュレーション部１０３は、プログラム情報に示される５つのプログラム（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ、ｐｒｏｇＤ、及びｐｒｏｇＥ）のそれぞれに対して、キャッシュメモリの割付量を順次変えながら処理量を算出する。
【００６３】
図６Ａは、処理量算出シミュレーション部１０３により算出された、各プログラムに対する処理量の例を示す図である。図６Ａに示すように、処理量算出シミュレーション部１０３は、ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ、ｐｒｏｇＤ、及びｐｒｏｇＥのそれぞれについて、複数の割付量ごとに処理量（単位時間あたりの所要クロック数）を算出する。具体的には、複数の割付量は、キャッシュメモリの容量を割り付けない場合（０ＫＢ）から、キャッシュメモリの全ての容量（１６ＫＢ）を割り付ける場合まで、割付単位である４ＫＢごと変化させた割付量（０ＫＭ、４ＫＢ、８ＫＢ、１２ＫＢ及び１６ＫＢ）である。また、図６Ａに示すように、割付量を増加させるほど、一般に、プログラムの処理量は減少する。
【００６４】
ステップＳ０３では、資源割付シミュレーション部１０４は、各プログラムに対するキャッシュの割付量を算出する。
【００６５】
具体的には、ステップＳ０３０１で、資源割付シミュレーション部１０４は、プログラムの輻輳パターン（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）を、まず選択する。
【００６６】
次に、ステップＳ０３０２で、資源割付シミュレーション部１０４は、輻輳パターン（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）に対する、複数の資源割付パターンを生成し、生成した複数の資源割付パターンのうちいずれか一つを選択する。
【００６７】
図６Ｂは、輻輳パターン（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）に対する、資源割付パターンと、当該資源割付パターンを用いた場合の合計処理量との一例を示す図である。
【００６８】
図６Ｂに示すように、資源割付シミュレーション部１０４は、輻輳パターン（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）に対する、１５個の資源割付パターン（Ｎｏ．１〜Ｎｏ．１５）を生成する。具体的には、資源割付シミュレーション部１０４は、資源の総量である１６ＫＢを、割付単位である４ＫＢごとに、３つのプログラム（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）に割り付けることで生成される全ての資源割付パターンを生成する。
【００６９】
また、ここでは、ステップＳ０３０２で、資源割付シミュレーション部１０４は、Ｎｏ．１の資源割付パターン（０ＫＢ、０ＫＢ、１６ＫＢ）を選択する。
【００７０】
ステップＳ０３０３で、資源割付シミュレーション部１０４は、資源割付パターン（０ＫＢ、０ＫＢ、１６ＫＢ）で示される割付量における各プログラムの処理量を図６Ａに示す表から取得し、取得した処理量の合計を算出する。具体的には、割付量が０ＫＢ時のｐｒｏｇＡの処理量は「８７」であり、割付量が０ＫＢ時のｐｒｏｇＢの処理量は「７１」であり、割付量が１６ＫＢ時のｐｒｏｇＣの処理量は「４０」であるので、Ｎｏ．１の資源割付パターンの合計処理量は「１９８」となる。
【００７１】
ステップＳ０３０４で、資源割付シミュレーション部１０４は、ステップＳ０３０３で算出した合計処理量と資源割付パターンとを対応付けて情報格納部１０５に格納する。
【００７２】
また、資源割付シミュレーション部１０４は、ステップＳ０３０２〜Ｓ０３０４の処理を、全ての資源割付パターン（Ｎｏ．１〜Ｎｏ．１５）に対して行う。その結果、図６Ｂに示す表に対応するデータが情報格納部１０５に格納される。
【００７３】
次に、ステップＳ０３０６で、資源割付シミュレーション部１０４は、図６Ｂに示す表に含まれる資源割付パターン（Ｎｏ．１〜Ｎｏ．１５）の中から、合計処理量が最も小さい資源割付パターンを選択する。この場合、Ｎｏ．８の資源割付パターンの合計処理量が最も小さいので、資源割付シミュレーション部１０４は、当該Ｎｏ．８の資源割付パターンを選択する。
【００７４】
次に、ステップＳ０３０７で、資源割付シミュレーション部１０４は、ステップＳ０３０６で選択したＮｏ．８の資源割付パターンの合計処理量である「１８２」が、目標とする処理量以内かどうかを判定する。例えば、目標とする処理量が「２００」であるとすると、資源割付シミュレーション部１０４は、合計処理量が目標以内であると判定する。
【００７５】
ステップＳ０３０９で、資源割付シミュレーション部１０４は、ステップＳ０３０６で選択したＮｏ．８の資源割付パターンを、輻輳パターン（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）に対する資源割付パターンとして出力する。
【００７６】
また、資源割付シミュレーション部１０４は、ステップＳ０３０１〜Ｓ０３０９の処理を、全ての輻輳パターン（（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）、（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＤ）及び（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＥ））に対して行うことにより、全ての輻輳パターンに対する資源割付パターンを出力する。
【００７７】
図６Ｃは、資源割付装置１により出力される、全ての輻輳パターンに対する資源割付パターンと合計処理量とを示す図である。図６Ｃに示すように、資源割付シミュレーション部１０４は、全ての輻輳パターンに対する資源割付パターンを決定できる。
【００７８】
以上より、本発明の実施の形態１に係る資源割付装置１及び資源割付方法によれば、複数のプログラムが同時に動作するシステムを対象として、キャッシュメモリなどの資源の割り付けを、資源割付量ごとの処理量に基づいて行うことにより、システムの動作性能を保証する最適な資源の割付を行うことができる。
【００７９】
（実施の形態２）
本発明の実施の形態２では、複数のプロセッサコアを有するシステムにおける、資源の割り付けについて説明する。本発明の実施の形態２に係る資源割付装置２は、実施の形態１に係る資源割付装置１の処理に加え、さらに、各プログラムを複数のプロセッサコアのうちいずれかに割り付ける処理を行う。
【００８０】
また、実施の形態２において、資源はキャッシュメモリであり、当該キャッシュメモリは、複数のプロセッサコア間で共有される。また、システム上で動作する複数のプログラムは、複数のプロセッサコアのうちいずれかに割り付けて実行可能である。また、当該キャッシュメモリは、複数のプログラム間で分割又は共有して使用される。
【００８１】
図７は、本発明の実施の形態２に係る資源割付装置２のブロック図である。
【００８２】
図７に示す資源割付装置２は、システム情報取得部１０１と、資源割付パターン決定部１０２と、処理量算出シミュレーション部１０３と、資源割付シミュレーション部２０１と、プロセッサコア割付部２０２とを備える。
【００８３】
資源割付装置２は、実施の形態１に係る資源割付装置１の構成に加え、さらに、プロセッサコア割付部２０２を備える。また、資源割付装置２は、実施の形態１に係る資源割付装置１に対して、資源割付シミュレーション部２０１の構成が異なる。
【００８４】
なお、図７において、図１と同様の要素には同一の符号を付しており、重複する説明は省略する。
【００８５】
資源割付シミュレーション部２０１は、輻輳パターンごとに、資源割付パターンと、当該資源割付パターンにおける合計処理量とを算出する。また、資源割付シミュレーション部２０１は、輻輳パターンごとに、当該輻輳パターンに含まれるプログラムを複数のプロセッサコアに割り付けて実行可能な、資源割付パターンとプロセッサコア割付パターンとの組を抽出する。ここで、プロセッサコア割付パターンとは、各プログラムをどのプロセッサコアで動作させるかを示す情報であり、プログラムの輻輳パターンに依らない割付である。
【００８６】
プロセッサコア割付部２０２は、プロセッサコア割付部２０２は、前記資源割付シミュレーション部２０１で抽出された、複数の輻輳パターンに対する資源割付パターンとプロセッサコア割付パターンの組から、最適な資源割付パターン及びプロセッサコア割付パターンを決定する。
【００８７】
なお、資源割付シミュレーション部２０１及びプロセッサコア割付部２０２は、通常、ＭＰＵ及びメモリ等から実現される。また、資源割付シミュレーション部２０１及びプロセッサコア割付部２０２の機能は、通常、ＭＰＵがソフトウェア（プログラム）を実行することにより実現される。また、当該ソフトウェアはＲＯＭ等の記録媒体（メモリ）に記録されている。但し、資源割付シミュレーション部２０１及びプロセッサコア割付部２０２の機能のうち全て又は一部を、ハードウェア（専用回路）で実現してもよい。
【００８８】
次に、資源割付装置２により実行される資源割付方法の動作について説明する。
【００８９】
図８は、資源割付装置２により実行される資源割付方法の流れの概略を示すフローチャートである。なお、図８に示すステップＳ０４及びＳ０５の処理は、図２示すステップＳ０１及びＳ０２の処理と同様であり、詳細な説明は省略する。
【００９０】
（ステップＳ０４）
ステップＳ０４で、まず、システム情報取得部１０１は、外部から入力された、当該資源割付方法で用いられるシステム情報を取得する。ここで、システム情報取得部１０１が取得するシステム情報は、システム上で動作する複数のプログラムを示すプログラム情報と、システムに搭載されている割付対象とする資源の総量を示す資源総量情報と、当該資源の割付単位を示す割付単位情報と、システム上で同時に動作するプログラムの組を示すプログラム輻輳パターン情報とを含む。
【００９１】
（ステップＳ０５）
ステップＳ０５で、処理量算出シミュレーション部１０３は、各プログラムに対して資源を異なる量割り付けたそれぞれの場合の、当該プログラムの処理量を算出する。
【００９２】
（ステップＳ０６）
ステップＳ０６で、資源割付シミュレーション部２０１は、輻輳パターンごとに、各プログラムに対する資源の割付量を算出する。また、資源割付シミュレーション部２０１は、輻輳パターンごとに、当該輻輳パターンに含まれるプログラムを複数のプロセッサコアに割り付けて実行可能な、資源割付パターンとプロセッサコア割付パターンとの組を抽出する。
【００９３】
具体的には、資源割付シミュレーション部２０１は、合計処理量が、目標の処理量よりも小さい資源割付パターンで示される割付量の資源を、複数のプログラムに割り付けた際の、各プログラムの処理量を用いて、複数のプロセッサコアのそれぞれに対して、当該プロセッサコアに割り付けられた１以上のプログラムを実行するために必要な合計処理量が、当該プロセッサコアの処理能力内になる資源割付パターンとプロセッサコア割付パターンとの組を抽出する。
【００９４】
（ステップＳ０７）
ステップＳ０７で、プロセッサコア割付部２０２は、前記資源割付シミュレーション部２０１で抽出された、複数の輻輳パターンに対する資源割付パターンとプロセッサコア割付パターンの組から、最適な資源割付パターン及びプロセッサコア割付パターンを決定する。
【００９５】
次に、ステップＳ０６の詳細な動作を説明する。
【００９６】
図９は、ステップＳ０６の詳細な動作の流れを示すフローチャートである。なお、図９に示すステップＳ０６０１〜Ｓ０６０６の処理は、図５に示すステップＳ０３０１〜Ｓ０３０６の処理と同様である。
【００９７】
（ステップＳ０６０１）
ステップＳ０６０１で、資源割付シミュレーション部２０１は、システム情報取得部１０１により取得されたプログラム輻輳パターン情報で示される複数の輻輳パターンから一つの輻輳パターンを選択する。また、このステップＳ０６０１から後述のステップＳ０６１４までの処理は、ループを形成し、ステップＳ０６０１で全ての輻輳パターンが順次選択される。
【００９８】
（ステップＳ０６０２）
ステップＳ０６０２で、資源割付シミュレーション部２０１は、ステップＳ０６０１で選択した輻輳パターンに対する、複数の資源割付パターンを生成する。また、資源割付シミュレーション部２０１は、生成した資源割付パターンのうち一つの資源割付パターンを選択する。ここで資源割付シミュレーション部２０１により生成される資源割付パターンの数は、輻輳パターンに含まれるプログラムの数と、資源の総量と、資源の割付単位とによって決まる。また、このステップＳ０６０２から後述のステップＳ０６０５までの処理は、ループを形成し、ステップＳ０６０２で全ての資源割付パターンが順次選択される。
【００９９】
（ステップＳ０６０３）
ステップＳ０６０３で、資源割付シミュレーション部２０１は、ステップＳ０６０２で選択した資源割付パターンに従って、ステップＳ０６０１で選択した輻輳パターンに含まれる各プログラムの合計処理量を算出する。具体的には、資源割付シミュレーション部２０１は、当該資源割付パターンにおける各プログラムに割り付けられた資源の割付量に対応する、ステップＳ０５で算出した処理量を合計する。
【０１００】
（ステップＳ０６０４）
ステップＳ０６０４で、資源割付シミュレーション部２０１は、ステップＳ０６０３で算出した合計処理を、ステップＳ０６０１で選択された輻輳パターン、及びステップＳ０６０２で選択された資源割付パターンと関連付けて情報格納部１０５に格納する。
【０１０１】
（ステップＳ０６０５）
ステップＳ０６０５で、資源割付シミュレーション部２０１は、ステップＳ０６０２で選択すべき資源割付パターンが全て選択されたか否かを判断する。資源割付シミュレーション部２０１は、まだ選択していない資源割付パターンが存在する場合には、ステップＳ０６０２で新たな資源割付パターンを選択したのち、ステップＳ０６０３以降の処理を行い、全てのパターンを選択している場合には、次に、ステップＳ０６０６の処理を行う。
【０１０２】
（ステップＳ０６０６）
ステップＳ０６０６で、資源割付シミュレーション部２０１は、情報格納部１０５に格納されている、現在選択されている輻輳パターンに対する資源割付パターンの中から、合計処理量が最も小さい資源割付パターンを選択する。
【０１０３】
（ステップＳ０６０７）
ステップＳ０６０７で、資源割付シミュレーション部２０１は、ステップＳ０６０６で選択された資源割付パターンの合計処理量が、複数のプロセッサコア（ＰＥ）の処理能力（動作周波数）の合計（ＰＥ周波数合計）よりも小さいか否か（すなわち、輻輳する複数のプログラムを、当該資源割付パターンで複数のプロセッサコアに割り付けて実行可能か）を判定する。また、資源割付シミュレーション部２０１は、合計処理量がプロセッサコアの周波数合計より小さい場合、次にステップＳ０６０８の処理を行い、合計処理量がプロセッサコアの周波数合計より大きい場合、次にステップＳ０６１４の処理を行う。
【０１０４】
（ステップＳ０６０８）
ステップＳ０６０８で、資源割付シミュレーション部２０１は、ステップＳ０６０１で選択した輻輳パターンで動作する複数のプログラムを複数のプロセッサコアへの割り付ける複数のプロセッサコア割付パターンを生成し、生成した複数のプロセッサコア割付パターンのうち一つを選択する。なお、複数のプロセッサコア割付パターンの数は、プロセッサコアの数、輻輳パターンに含まれるプログラムの数によって決まる。具体的には、プロセッサコアの数をＮ、プログラムの数をＭとすると、プロセッサコア割付パターンの数は、ＮMとなる。また、このステップＳ０６０８から後述のステップＳ０６１１までの処理は、ループを形成し、ステップＳ０６０８で全てのプロセッサコア割付パターンが順次選択される。
【０１０５】
図１０は、プロセッサ割付パターン、及び各プロセッサの合計処理量を示す図である。例えば、プロセッサコアの数が２個（プロセッサコアＡ及びプロセッサコアＢ）であり、かつ、ステップＳ０６０１で、輻輳パターンとして、（ｐｒｏｇＡ、ｐｒｏｇＢ、ｐｒｏｇＣ）が選択されている場合には、資源割付シミュレーション部２０１は、図１０に示す８個のプロセッサコア割付パターンを生成する。
【０１０６】
（ステップＳ０６０９）
ステップＳ０６０９で、資源割付シミュレーション部２０１は、ステップＳ０６０８で選択したプロセッサコア割付パターンに、ステップＳ０６０６（又は後述のステップＳ０６１３）で選択した資源割付パターンを適用した場合の、各プロセッサコアに割り付けられたプログラムの合計処理量を算出する。
【０１０７】
また、資源割付シミュレーション部２０１は、算出した各プロセッサコアに割り付けられたプログラムの合計処理量の全てが、当該プロセッサコアの処理能力以内（動作周波数以下）であるか否かを判定する。資源割付シミュレーション部２０１は、各プロセッサコアに割り付けられたプログラムの合計処理量の全てがプロセッサコアの動作周波数以下の場合、次に、ステップＳ０６１０の処理を行い、各プロセッサコアでのプログラムの合計処理量のうち少なくとも一つが当該プロセッサコアの動作周波数以上の場合、次に、ステップＳ０６１１の処理を行う。
【０１０８】
例えば、ステップＳ０６０６で図６Ｂに示すＮｏ．８の資源割付パターンが選択された場合、資源割付シミュレーション部２０１は、図１０に示す、各プロセッサコア（プロセッサコアＡ及びプロセッサコアＢ）の合計処理量を算出する。また、プロセッサコアＡ及びプロセッサコアＢの動作周波数が、共に、１５０サイクルに相当する場合、図１０に示すＮｏ．１のプロセッサコア割付パターンでは、プロセッサコアＡの合計処理数が１８２サイクルなので、資源割付シミュレーション部２０１は、各プロセッサコアの合計処理量が当該プロセッサコアの動作周波数以下であると判定する。また、図１０に示すＮｏ．２のプロセッサコア割付パターンでは、プロセッサコアＡの合計処理数が１２６サイクルであり、プロセッサコアＢの合計処理数が５６なので、資源割付シミュレーション部２０１は、各プロセッサコアの合計処理量が当該プロセッサコアの動作周波数以上であると判定する。
【０１０９】
（ステップＳ０６１０）
ステップＳ０６１０で、資源割付シミュレーション部２０１は、現在選択しているプロセッサコア割付パターンと、資源割付パターンと、輻輳パターンとを関連付けて情報格納部１０５に格納する。
【０１１０】
（ステップＳ０６１１）
ステップＳ０６１１で、資源割付シミュレーション部２０１は、ステップＳ０６０８で全てのプロセッサコア割付パターンの選択が既に行われたか否かを判定する。資源割付シミュレーション部２０１は、まだ選択していないプロセッサコア割付パターンが存在する場合、次にステップＳ０６０８で、まだ選択されていないプロセッサコア割付パターンを選択したうえで、ステップＳ０６０９以降の処理を行う。また、全てのプロセッサコア割付パターンが選択されている場合、次に、資源割付シミュレーション部２０１は、ステップＳ０６１２の処理を行う。
【０１１１】
（ステップＳ０６１２）
ステップＳ０６１２で、資源割付シミュレーション部２０１は、ステップＳ０６０６又は後述するステップＳ０６１３で全ての資源割付パターンの選択が既に行われたか否かを判断する。資源割付シミュレーション部２０１は、まだ選択していない資源割付パターンが存在する場合、次に、ステップＳ０６１３の処理を行い、全ての資源割付パターンが選択されている場合、次に、ステップＳ０６１４の処理を行う。
【０１１２】
（ステップＳ０６１３）
ステップＳ０６１３で、資源割付シミュレーション部２０１は、現在選択されている輻輳パターンに対する資源割付パターンの中で、現在選択されている資源割付パターンの次に合計処理量が小さい資源割付パターンを選択し、選択した資源割付パターンに対して、ステップＳ０６０７以降の処理を行う。
【０１１３】
（ステップＳ０６１４）
ステップＳ０６１４で、資源割付シミュレーション部２０１は、ステップＳ０６０１で、全ての輻輳パターンが既に選択されたか否かを判断する。資源割付シミュレーション部２０１は、まだ選択していない輻輳パターンが存在する場合には、ステップＳ０６０１で新たな輻輳パターンを選択した、新たに選択した輻輳パターンに対してステップＳ６０２以降の処理を行う。また、全ての輻輳パターンが選択されていた場合、資源割付シミュレーション部２０１は、ステップＳ０６の処理を終了する。
【０１１４】
以上の処理により、資源割付シミュレーション部２０１は、各輻輳パターンに含まれるプログラムを複数のプロセッサコアに割り付けて実行可能な、資源割付パターンとプロセッサコア割付パターンとの組を抽出し、抽出した当該組の情報を情報格納部１０５に格納できる。
【０１１５】
具体的には、資源割付シミュレーション部２０１は、輻輳パターンに含まれる全てのプログラムの合計処理量が、全てのプロセッサコアの合計処理能力より小さく、かつ、各プロセッサコアに割り付けられるプログラムの合計処理量が、当該プロセッサコアの処理能力より小さくなる、資源割付パターンとプロセッサコア割付パターンとの組を抽出できる。
【０１１６】
なお、上記説明では、合計処理量がプロセッサコアの動作周波数の合計より小さい資源割付パターンの全てに対して、ステップＳ０６０８〜Ｓ０６１０の処理を行っているが、最も合計処理量が少ない資源割付パターンに対してのみ、ステップＳ０６０８〜Ｓ０６１０の処理を行ってもよい。つまり、資源割付シミュレーション部２０１は、最も合計処理量が少ない資源割付パターンとプロセッサコア割付パターンとの組を抽出してもよい。
【０１１７】
次に、ステップＳ０７の詳細な動作を説明する。
【０１１８】
図１１は、ステップＳ０７の処理の流れを示すフローチャートである。
【０１１９】
（ステップＳ０７０１）
ステップＳ０７０１で、プロセッサコア割付部２０２は、各プログラムのプロセッサコアへの割付を決定するため、ステップＳ０６１０で格納された、各輻輳パターンに対する、プロセッサコア割付パターンと資源割付パターンとの組のうち、複数の輻輳パターンにおいて、各プログラムのプロセッサコアへの割付が同一となるプロセッサコア割付パターンと資源割付パターンとの組を抽出する。
【０１２０】
図１２は、情報格納部１０５に格納されている輻輳パターンと資源割付パターンとプロセッサコア割付パターンとの組の一例を示す図である。なお、ここでは、説明の簡略化のため、一つの輻輳パターンに対して、一つの資源割付パターン及び当該一つの割付パターンに対応するプロセッサコア割付パターンの組が格納されているが、一つの輻輳パターンに複数の資源割付パターン及び当該複数の資源割付パターンに対応するプロセッサコア割付パターンの組が格納されてもよい。
【０１２１】
例えば、図１２に示す例の場合、プロセッサコア割付部２０２は、５つの組（Ｎｏ．１〜Ｎｏ．５）から、３つの輻輳パターンのいずれにも含まれるプログラム（ｐｒｏｇＡ及びｐｒｏｇＢ）が、同じプロセッサに割り付けられるプロセッサ割付パターンを含む組を抽出する。具体的には、プログラムＡがコアＡに割り付けられ、かつ、プログラムＢがコアＢに割り付けられるプロセッサコア割付パターンを含む組（Ｎｏ．１、２、４）が、３つの輻輳パターンの全てに存在するので、プロセッサコア割付部２０２は、当該組（Ｎｏ．１、２、４）を抽出する。
【０１２２】
（ステップＳ０７０２）
ステップＳ０７０２で、プロセッサコア割付部２０２は、ステップＳ０７０１で抽出した組（Ｎｏ．１、２、４）に含まれるプロセッサコア割付パターンを、プロセッサコアの割付結果として出力する。具体的には、図１２に示す例では、プロセッサコア割付部２０２は、ｐｒｏｇＡがプロセッサコアＡに割り付けられ、ｐｒｏｇＢ〜ｐｒｏｇＥがプロセッサコアＢに割り付けられたプロセッサコア割付パターンを出力する。
【０１２３】
（ステップＳ０７０３）
ステップＳ０７０３で、プロセッサコア割付部２０２は、ステップＳ０７０１で抽出した組（Ｎｏ．１、２、４）に含まれる、輻輳パターン毎の資源割付パターンを資源割付結果として出力する。具体的には、プロセッサコア割付部２０２は、図６Ｃと同様の資源割付結果を出力する。
【０１２４】
なお、ステップＳ０７０１において、各輻輳パターンに対して複数の組が抽出された場合、プロセッサコア割付部２０２は、抽出された全ての組に含まれる、プロセッサコア割付パターン及び資源割付パターンを割付結果として出力してもよいし、抽出された複数の組のうちいずれか一つに含まれる、プロセッサコア割付パターン及び資源割付パターンを割付結果として出力してもよい。例えば、プロセッサコア割付部２０２は、複数の組に含まれる資源割付パターンのうち、合計処理量が最も少ない資源割付パターンと、対応するプロセッサコア割付パターンとを出力してもよい。
【０１２５】
以上より、本発明の実施の形態２に係る資源割付装置２及び資源割付方法は、複数のプロセッサコアを有するシステムを対象として、システムの動作性能を保証できる最適なプロセッサコア割付パターン及び資源割付パターンを決定できる。
【０１２６】
（実施の形態３）
本発明の実施の形態３では、資源は、複数のプロセッサコアのそれぞれに対応し、対応するプロセッサコアで専用に用いられるキャッシュメモリ（１次キャッシュ、レベル１キャッシュ）と、複数のプロセッサコア間で共有されるキャッシュメモリ（２次キャッシュ、レベル２キャッシュ）とである。
【０１２７】
図１３は、本発明の実施の形態３に係る資源割付装置３のブロック図である。
【０１２８】
図１３に示す資源割付装置３は、システム情報取得部１０１と、資源割付パターン決定部１０２と、処理量算出シミュレーション部１０３と、資源割付シミュレーション部３０１と、プロセッサコア割付部３０２と、第１資源割付パターン決定部３０３と、第２資源割付パターン決定部３０４とを備える。
【０１２９】
資源割付装置３は、実施の形態１に係る資源割付装置１の構成に加え、さらに、プロセッサコア割付部３０２と、第１資源割付パターン決定部３０３と、第２資源割付パターン決定部３０４とを備える。また、資源割付装置３は、実施の形態１に係る資源割付装置１に対して、資源割付シミュレーション部３０１の構成が異なる。
【０１３０】
なお、図１３において、図１と同様の要素には同一の符号を付しており、重複する説明は省略する。
【０１３１】
資源割付シミュレーション部３０１は、プロセッサコア割付パターンと第１資源割付パターンとの組ごとの合計処理量を算出する。ここで、第１資源割付パターンとは、輻輳パターンに含まれる複数のプログラムに第１資源を割り付けたパターンである。また、後述する第２資源割付パターンとは、輻輳パターンに含まれる複数のプログラムに第２資源を割り付けたパターンである。
【０１３２】
プロセッサコア割付部３０２は、複数のプロセッサコアを有し、かつ当該複数のプロセッサコアの各々で使用可能な第１資源を有し、かつ当該複数のプロセッサコアで共有する第２資源を有するシステム上で動作するプログラムを、どのプロセッサコアで動作させるかを示すプロセッサコア割付パターンを決定する。具体的には、プロセッサコア割付部３０２は、資源割付シミュレーション部３０１により算出された合計処理量を用いて、プロセッサコア割付パターンを決定する。
【０１３３】
ここで、第１資源とは、レベル１キャッシュであり、第２資源とは、レベル２キャッシュである。
【０１３４】
第１資源割付パターン決定部３０３は、資源割付シミュレーション部３０１により算出された合計処理量を用いて、輻輳パターンごとに第１資源割付パターンを決定する。
【０１３５】
第２資源割付パターン決定部３０４は、輻輳パターンごとに第２資源割付パターンを決定する。
【０１３６】
なお、資源割付シミュレーション部３０１、プロセッサコア割付部３０２、第１資源割付パターン決定部３０３及び第２資源割付パターン決定部３０４は、通常、ＭＰＵ及びメモリ等から実現される。また、資源割付シミュレーション部３０１、プロセッサコア割付部３０２、第１資源割付パターン決定部３０３及び第２資源割付パターン決定部３０４の機能は、通常、ＭＰＵがソフトウェア（プログラム）を実行することにより実現される。また、当該ソフトウェアはＲＯＭ等の記録媒体（メモリ）に記録されている。但し、資源割付シミュレーション部３０１、プロセッサコア割付部３０２、第１資源割付パターン決定部３０３及び第２資源割付パターン決定部３０４の機能のうち全て又は一部を、ハードウェア（専用回路）で実現してもよい。
【０１３７】
次に、資源割付装置３により実行される資源割付方法の動作について説明する。
【０１３８】
図１４は、資源割付装置３により実行される資源割付方法の流れの概略を示すフローチャートである。なお、図１４に示すステップＳ０８及びＳ０９の処理は、図２示すステップＳ０１及びＳ０２の処理と同様であり、詳細な説明は省略する。
【０１３９】
（ステップＳ０８）
ステップＳ０８で、まず、システム情報取得部１０１は、外部から入力された、当該資源割付方法で用いられるシステム情報を取得する。ここで、システム情報取得部１０１が取得するシステム情報は、システム上で動作する複数のプログラムを示すプログラム情報と、システムに搭載されている割付対象とする第１資源の総量と第２資源の総量とを示す資源総量情報と、当該第１資源及び第２資源の割付単位を示す割付単位情報と、システム上で同時に動作するプログラムの組を示すプログラム輻輳パターン情報とを含む。
【０１４０】
（ステップＳ０９）
ステップＳ０９で、処理量算出シミュレーション部１０３は、各プログラムに対して資源を異なる量割り付けたそれぞれの場合の、当該プログラムの処理量を算出する。
【０１４１】
（ステップＳ１０）
ステップＳ１０で、資源割付シミュレーション部３０１は、輻輳パターンごとに、プロセッサコア割付パターンと第１資源割付パターンとの組ごとの合計処理量を算出する。具体的には、資源割付シミュレーション部３０１は、第１資源の総量及び第１資源の割付単位を用いて、複数の第１資源割付パターンを生成し、生成した複数の第１資源割付パターンの合計処理量を算出する。
【０１４２】
（ステップＳ１１）
ステップＳ１１で、プロセッサコア割付部３０２は、ステップＳ１０で算出された合計処理量を用いて、各プログラムをどのプロセッサコアで動作させるか（プログラムの輻輳パターンに依らない割付）を決定する。
【０１４３】
（ステップＳ１２）
ステップＳ１２で、第１資源割付パターン決定部３０３は、ステップＳ１０で算出された合計処理量を用いて最適な第１資源割付パターンを決定する。具体的には、第１資源割付パターン決定部３０３は、合計処理量が最も少なくない第１資源割付パターンを、最適な第１資源割付パターンと決定する。
【０１４４】
（ステップＳ１３）
ステップＳ１３で、第２資源割付パターン決定部３０４は、第２資源の総量及び第２資源の割付単位を用いて、輻輳パターンに含まれる複数のプログラムに第２資源を割り付ける複数の第２資源割付パターンを生成する。また、第２資源割付パターン決定部３０４は、ステップＳ１０及びステップＳ１１で決定された、プロセッサコア割付パターンと第１資源割付パターンを用いた場合の、第２資源割付パターンごとの合計処理量を算出する。さらに、第２資源割付パターン決定部３０４は、輻輳パターンごとに、合計処理量が最小となる第２資源割付パターンを最適な第２資源割付パターンに決定する。
【０１４５】
次に、ステップＳ１０の詳細な動作を説明する。
【０１４６】
図１５は、ステップＳ１０の動作の流れを示すフローチャートである。
【０１４７】
（ステップＳ１００１）
ステップＳ１００１で、資源割付シミュレーション部３０１は、システム情報取得部１０１が取得したプログラム輻輳パターン情報に示される複数の輻輳パターンから一つの輻輳パターンを選択する。また、このステップＳ１００１から後述のステップＳ１００６までの処理は、ループを形成し、ステップＳ１００１で全ての輻輳パターンが順次選択される。
【０１４８】
（ステップＳ１００２）
ステップＳ１００２で、資源割付シミュレーション部３０１は、ステップＳ１００１で選択した輻輳パターンに含まれるプログラムを、複数のプロセッサコアに割り付ける複数のプロセッサコア割付パターンを生成する。また、資源割付シミュレーション部３０１は、生成したプロセッサコア割付パターンのうち一つのプロセッサコア割付パターンを選択する。また、このステップＳ１００２から後述のステップＳ１００５までの処理は、ループを形成し、ステップＳ１００２で全てのプロセッサコア割付パターンが順次選択される。
【０１４９】
（ステップＳ１００３）
ステップＳ１００３で、資源割付シミュレーション部３０１は、ステップＳ１００２で選択したプロセッサコア割付パターンにおいて各プロセッサコアに割り付けたプログラムに、当該プロセッサコアが有する第１資源を割り付けた複数の第１資源割付パターンを生成する。また、資源割付シミュレーション部３０１は、生成した複数の第１資源割付パターンごとのプログラムの合計処理量を算出する。資源割付シミュレーション部３０１は、合計処理量が最小の第１資源割付パターンを選択する。
【０１５０】
図１６は、ステップＳ１００３で算出される、複数の第１資源割付パターンごとのプログラムの合計処理量の一例を示す図である。また、図１６は、ｐｒｏｇＡ及びｐｒｏｇＢがプロセッサコアＡに割り付けられ、ｐｒｏｇＣがプロセッサコアＢに割り付けられるプロセッサコア割付パターンが、ステップＳ１００２で選択された場合の例である。また、プロセッサコアＡ及びプロセッサコアＢが有する第１資源の総量は、それぞれ８ＫＢであり、その割付単位は４ＫＢであるとする。
【０１５１】
図１６に示すように、例えば、ステップＳ１００３で、資源割付シミュレーション部３０１は、プロセッサコアＡに割り付けられたｐｒｏｇＡ及びｐｒｏｇＢに、当該プロセッサコアＡの第１資源を割り付け、かつプロセッサコアＢに割り付けられたｐｒｏｇＣに当該プロセッサコアＢの資源を割り付けた、３個の第１資源割付パターン（Ｎｏ．１〜Ｎｏ３）を生成する。また、資源割付シミュレーション部３０１は、合計処理量が最小のＮｏ．１の第１資源割付パターンを選択する。
【０１５２】
（ステップＳ１００４）
ステップＳ１００４で、資源割付シミュレーション部３０１は、ステップＳ１００３で選択した、第１資源割付パターンを、プロセッサコア割付パターンと合計処理量とに関連付けて情報格納部１０５に記録する。
【０１５３】
（ステップＳ１００５）
ステップＳ１００５で、資源割付シミュレーション部３０１は、ステップＳ１００２で生成した全てのプロセッサ割付パターンを既に選択したか否かを判断する。資源割付シミュレーション部３０１は、まだ選択していないプロセッサ割付パターンが存在する場合には、ステップＳ１００２で新たなプロセッサ割付パターンを選択したうえで、新たに選択したプロセッサ割付パターンに対してステップＳ１００３以降の処理を行う。また、資源割付シミュレーション部３０１は、全てのプロセッサ割付パターンを選択している場合には、次に、ステップＳ１００６の処理を行う。
【０１５４】
（ステップＳ１００６）
ステップＳ１００６で、資源割付シミュレーション部３０１は、ステップＳ１００１で全ての輻輳パターンを既に選択したか否かを判断する。資源割付シミュレーション部３０１は、まだ選択していない輻輳パターンが存在する場合には、ステップＳ１００１で新たな輻輳パターンを選択したうえで、新たに選択した輻輳パターンに対してステップＳ１００２以降の処理を行う。また、全ての輻輳パターンが選択されている場合、資源割付シミュレーション部３０１は、ステップＳ１０の処理を終了する。
【０１５５】
以上の動作により、全ての輻輳パターンにおける全てのプロセッサコア割付パターンのそれぞれに対して、最も合計処理量が小さい第１資源割付パターンが選択され、選択された第１資源割付パターンの情報が、情報格納部１０５に格納される。
【０１５６】
また、ステップＳ１１で、プロセッサコア割付部３０２は、ステップＳ１０で算出された合計処理量を用いて、最適なプロセッサコア割付パターンを決定する。具体的には、プロセッサコア割付部３０２は、上述したステップＳ０７０１及びＳ０７０２と同様の処理を行うことによりプロセッサコア割付パターンを決定する。または、プロセッサコア割付部３０２は、最も合計処理量が小さいプロセッサコア割付パターンのうちいずれかを最適なプロセッサコア割付パターンとして決定してもよい。
【０１５７】
また、ステップＳ１２で、第１資源割付パターン決定部３０３は、ステップＳ１０で算出された合計処理量を用いて最適な第１資源割付パターンを決定する。具体的には、第１資源割付パターン決定部３０３は、上述したステップＳ０７０３と同様の処理を行うことにより第１資源割付パターンを決定する。または、第１資源割付パターン決定部３０３は、合計処理量が最も少なくない第１資源割付パターンを、最適な第１資源割付パターンと決定する。
【０１５８】
次に、ステップＳ１３の詳細な動作を説明する。
【０１５９】
図１７は、ステップＳ１３の流れを示すフローチャートである。
【０１６０】
（ステップＳ１３０１）
ステップＳ１３０１で、第２資源割付パターン決定部３０４は、各プログラムに対して第２資源を異なる量割り付けたそれぞれの場合の処理量を算出する。例えば、ステップＳ１３０１の詳細な処理は、ステップＳ０２において資源を第２資源に置き換えた処理と同様である。
【０１６１】
（ステップＳ１３０２）
ステップＳ１３０２で、第２資源割付パターン決定部３０４は、複数のプログラムに第２資源を割り付ける複数の第２資源割付パターンを生成する。なお、第２資源割付パターン決定部３０４が生成する複数の第２資源割付パターンは、複数の輻輳パターンに含まれる全てのプログラム（上記例におけるｐｒｏｇＡ〜ｐｒｏｇＥ）に、第２資源を割り付けた複数のパターンである。次に、第２資源割付パターン決定部３０４は、生成した複数の第２資源割付パターンのうち一つを選択する。また、このステップＳ１３０２から後述のステップＳ１３０５までの処理は、ループを形成し、ステップＳ１３０２で全ての第２資源割付パターンが順次選択される。
【０１６２】
（ステップＳ１３０３）
ステップＳ１３０３で、第２資源割付パターン決定部３０４は、ステップＳ１３０２で選択した第２資源割付パターンでの、複数のプログラムの合計処理量を算出する。
【０１６３】
（ステップＳ１３０４）
ステップＳ１３０４で、第２資源割付パターン決定部３０４は、ステップＳ１３０２で選択した第２資源割付パターンと、ステップＳ１３０３で算出した合計処理量とを関連付けて情報格納部１０５に記録する。
【０１６４】
（ステップＳ１３０５）
ステップＳ１３０５で、第２資源割付パターン決定部３０４は、ステップＳ１３０２で、全ての第２資源割付パターンが選択されたか否かを判断する。第２資源割付パターン決定部３０４は、全ての第２資源割付パターンが選択されている場合、次に、ステップＳ１３０６の処理を行い、全ての第２資源割付パターンが選択されていない場合、次に、ステップＳ１３０２で新たな第２資源割付パターンを選択し、選択した新たな第２資源割付パターンに対してステップＳ１３０３以降の処理を行う。
【０１６５】
（ステップＳ１３０６）
ステップＳ１３０６で、第２資源割付パターン決定部３０４は、情報格納部１０５に記録されている第２資源割付パターンのうち、最も合計処理量が小さい第２資源割付パターンを選択する。
【０１６６】
（ステップＳ１３０７）
ステップＳ１３０７で、第２資源割付パターン決定部３０４は、ステップＳ１３０６で選択した第２資源割付パターンを第２資源の割付結果として出力する。
【０１６７】
なお、第２資源割付パターン決定部３０４は、複数の輻輳パターンのそれぞれに対して、ステップＳ１３０１〜Ｓ１３０７の処理を行ってもよい。
【０１６８】
以上より、本発明の実施の形態３に係る資源割付装置３及び資源割付方法によれば、複数のプログラムが同時に動作し、かつ複数のプロセッサコアを有し、かつ複数段のキャッシュメモリなどの資源を有するシステムを対象として、システムの動作性能を保証する最適なプロセッサコア割付パターン及び資源割付パターンを決定できる。
【０１６９】
なお、本発明の実施の形態１〜３に係る資源割付装置１〜３は、上記システム上で動作するソフトウェアを開発するためのソフトウェア開発装置として実現できる。また、本発明は、上述した資源割付方法を、コンピュータに実行させる、システム上で動作するソフトウェアを開発するためのソフトウェア開発プログラムとして実現できる。そして、このソフトウェア開発プログラムをソフトウェアダウンロード等により配布してもよい。また、このプログラムをＣＤ−ＲＯＭなどの記録媒体に記録して流布してもよい。
【０１７０】
また、本発明の実施の形態１〜３に係る資源割付装置１〜３は、上記システムに含まれ、上記システム上で動作するソフトウェアの制御を行うソフトウェア制御装置として実現できる。また、本発明は、上述した資源割付方法を、上記システムに含まれるコンピュータに実行させる、上記システム上で動作するソフトウェアの制御を行うソフトウェア制御プログラムとして実現できる。
【０１７１】
また、本発明の実施の形態１〜３に係る資源割付装置１〜３の機能の一部を、上記ソフトウェア開発装置として実現し、他を上記ソフトウェア制御装置として実現してもよい。同様に、本発明の実施の形態１〜３に係る資源割付方法をコンピュータに実行させるプログラムの一部を、上記ソフトウェア開発プログラムとして実現し、他を上記ソフトウェア制御プログラムとして実現してもよい。例えば、処理量算出シミュレーション部１０３の機能をソフトウェア開発装置として実現し、他の処理部をソフトウェア制御装置として実現してもよい。
【０１７２】
また、上記プログラムは、コンピュータに、上述した実施の形態１〜３の資源割付装置の機能を実行させるオペレーティングシステム（ＯＳ）、又はサードパーティープログラム等を必ずしも含まなくてもよい。また、上記プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。なお、コンピュータシステムがどのように動作するかは周知であり、詳細な説明は省略する。
【０１７３】
また、情報を送信する送信ステップ、又は情報を受信する受信ステップなどにおける、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデム又はインターフェースカードなどで行われる処理（ハードウェアでしか行われない処理）は、上記プログラムには含まれない。
【０１７４】
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、分散処理を行ってもよい。
【０１７５】
また、上記実施の形態１〜３において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、複数の装置によって分散処理されることによって実現されてもよい。
【０１７６】
また、上記実施の形態１〜３に係る資源割付装置１〜３と、他の実施の形態１〜３に係る資源割付装置１〜３の機能のうち少なくとも一部とを組み合わせてもよい。
【０１７７】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０１７８】
以上のように、本発明に係る資源割付装置及び資源割付方法は、システムが要求性能を満たすようにするための、複数のプログラムに対する資源割付パターンを最適に求めることが可能であるという効果を有するので、資源割付装置を実装した、システム上で動作するソフトウェア又はハードウェアに適用できる。また、本発明に係る資源割付装置及び資源割付方法は、プログラム開発ツール等に適用できる。
【図面の簡単な説明】
【０１７９】
【図１】本発明の実施の形態１に係る資源割付装置のブロック図である。
【図２】本発明の実施の形態１に係る資源割付方法の流れを示すフローチャートである。
【図３】本発明の実施の形態１に係る、処理量計測シミュレーション部による動作の流れを示すフローチャートである。
【図４】本発明の実施の形態１に係る、処理量計測シミュレーション部により取得されるメモリアクセスパターンの一例を示す図である。
【図５】本発明の実施の形態１に係る、資源割付シミュレーション部による動作の流れを示すフローチャートである。
【図６Ａ】本発明の実施の形態１に係る資源割付装置により算出された、各プログラムの資源割付量と、処理量とを示す図である。
【図６Ｂ】本発明の実施の形態１に係る資源割付装置により算出された、資源割付パターンと、合計処理量とを示す図である。
【図６Ｃ】本発明の実施の形態１に係る資源割付装置により算出された、輻輳パターンに対する資源割付パターンを示す図である。
【図７】本発明の実施の形態２に係る資源割付装置のブロック図である。
【図８】本発明の実施の形態２に係る資源割付方法の流れを示すフローチャートである。
【図９】本発明の実施の形態２に係る、資源割付シミュレーション部による動作の流れを示すフローチャートである。
【図１０】本発明の実施の形態２に係る資源割付装置により算出された、プロセッサコア割付パターンと、合計処理量とを示す図である。
【図１１】本発明の実施の形態２に係る、プロセッサコア割付部２０２による動作の流れを示すフローチャートである。
【図１２】本発明の実施の形態２に係る資源割付装置により算出された、輻輳パターンと、資源割付パターンと、プロセッサコア割付パターンとを示す図である。
【図１３】本発明の実施の形態３に係る資源割付装置のブロック図である。
【図１４】本発明の実施の形態３に係る資源割付方法の動作の流れを示すフローチャートである。
【図１５】本発明の実施の形態３に係る、資源割付シミュレーション部による動作の流れを示すフローチャートである。
【図１６】本発明の実施の形態３に係る資源割付装置により算出された、第１資源割付パターンと、合計処理量とを示す図である。
【図１７】本発明の実施の形態３に係る、第２資源割付パターン決定部による動作の流れを示すフローチャートである。
【符号の説明】
【０１８０】
１、２、３  資源割付装置
１０１  システム情報取得部
１０２  資源割付パターン決定部
１０３  処理量算出シミュレーション部
１０４、２０１、３０１  資源割付シミュレーション部
１０５  情報格納部
２０２、３０２  プロセッサコア割付部
３０３  第１資源割付パターン決定部
３０４  第２資源割付パターン決定部
【図１】
2010113482.tif 000003
【図２】
2010113482.tif 000004
【図３】
2010113482.tif 000005
【図４】
2010113482.tif 000006
【図５】
2010113482.tif 000007
【図６Ａ】
2010113482.tif 000008
【図６Ｂ】
2010113482.tif 000009
【図６Ｃ】
2010113482.tif 000010
【図７】
2010113482.tif 000011
【図８】
2010113482.tif 000012
【図９】
2010113482.tif 000013
【図１０】
2010113482.tif 000014
【図１１】
2010113482.tif 000015
【図１２】
2010113482.tif 000016
【図１３】
2010113482.tif 000017
【図１４】
2010113482.tif 000018
【図１５】
2010113482.tif 000019
【図１６】
2010113482.tif 000020
【図１７】
2010113482.tif 000021