(57)【要約】  複数のステートから構成される、マルチコアを搭載した開発対象のシステムにおいて、特定のステートにおいて著しく性能が悪化しないタスクのコア配置を行う、タスク配置最適化システムを提供する。本発明のタスク配置最適化システムは、ステートごとに、そのステートで動作するタスクセットを用いてコア配置の良さを表すステート評価関数値を算出し、さらにこのステート評価関数値を評価対象の全ステートについて統合することでシステムの動作全体としての統合評価関数値を算出して最適化を行う。
2013094156.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の動作ステートの一覧及び前記動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、前記複数のプロセッサ・コアへの前記タスクの割り当てであるタスク配置を行う際の参照情報となる前記タスクセットを構成する前記タスクの特性を示すタスクセットパラメータと、に基づいて、前記動作ステートごとの、前記タスク配置の良好度を示す評価値であるステート評価関数値を生成するステート評価関数値生成手段と、
前記動作ステートにおける前記ステート評価関数値を統合した評価対象の前記タスクセット全体の良好度を示す評価値である統合評価関数値を生成する統合評価関数値生成手段と、
前記統合評価関数値の前記良好度を最大化する前記タスク配置を探索することにより、前記タスク配置を行う最適配置探索手段と、
を備えるタスク配置最適化システム。
【請求項２】
前記ステート評価関数値生成手段は、前記最適配置探索手段によって割り当てられた前記タスクを前記複数のプロセッサ・コアの各々が実行するときの実行時間を前記複数のプロセッサ・コアごとに合計して合計値を求め、前記複数のプロセッサ・コアの各々に対応する前記合計値の差の絶対値又は自乗を前記ステート評価関数値とする
請求項１に記載のタスク配置最適化システム。
【請求項３】
前記システムはＮ個（Ｎは３以上の整数）の前記プロセッサ・コアを有し、
前記ステート評価関数値生成手段は、前記最適配置探索手段によって割り当てられた前記タスクを前記Ｎ個の前記プロセッサ・コアの各々が実行するときの実行時間を前記Ｎ個の前記プロセッサ・コアごとに合計して合計値を求め、前記Ｎ個の前記プロセッサ・コアのうちの２個の前記コア・プロセッサからなる組み合わせの全部又は一部について前記プロセッサ・コアの各々に対応する前記実行時間の合計値の差の絶対値又は自乗を、前記組み合わせの全部又は一部のそれぞれに対応する暫定ステート評価関数値として生成し、前記暫定ステート評価関数値を統合し前記ステート評価関数値を生成する
請求項１に記載のタスク配置最適化システム。
【請求項４】
前記ステート評価関数値生成手段は、前記暫定ステート評価関数値の総和又は相乗を前記ステート評価関数値として生成する
ことを特徴とする請求項３に記載のタスク配置最適化システム。
【請求項５】
前記統合評価関数値生成手段は、前記ステート評価関数値の総和又は相乗を前記統合評価関数値として生成する
ことを特徴とする請求項１乃至４のいずれかに記載のタスク配置最適化システム。
【請求項６】
前記ステート評価関数値生成手段は、前記複数のプロセッサ・コアのそれぞれの間の依存数を前記ステート評価関数値として生成する
請求項１に記載のタスク配置最適化システム。
【請求項７】
前記ステート評価関数値生成手段は、前記動作ステートにおいて、配置された前記タスクを実行するのに要する前記複数のプロセッサ・コアの内のコアの個数を前記ステート評価関数値として生成する
請求項１に記載のタスク配置最適化システム。
【請求項８】
前記統合評価関数値生成手段は、前記統合評価関数値生成手段が前記ステート評価関数値を統合して前記統合評価関数値を生成する際に、前記ステート評価関数値が前記統合評価関数値に与える影響度を変化させる係数であるステート重要度を前記動作ステートごとに指定したステート重要度リストを参照し、前記ステートごとの前記ステート評価関数値を前記ステート重要度に応じて変化させた重要度反映済みステート評価関数値を生成し、前記重要度反映済みステート評価関数値を統合して前記統合評価関数値として生成する
請求項１乃至７のいずれか１項に記載のタスク配置最適化システム。
【請求項９】
複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の動作ステートの一覧及び前記動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、前記複数のプロセッサ・コアへの前記タスクの割り当てであるタスク配置を行う際の参照情報となる前記タスクセットを構成する前記タスクの特性を示すタスクセットパラメータと、に基づいて、前記動作ステートごとの、前記タスク配置の良好度を示す評価値であるステート評価関数値を生成し、前記動作ステートにおける前記ステート評価関数値を統合した評価対象の前記タスクセット全体の良好度を示す評価値である統合評価関数値を生成し、前記統合評価関数値の前記良好度を最大化する前記タスク配置を探索することにより、前記タスク配置を行うタスク配置最適化方法。
【請求項１０】
コンピュータを、複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の前記動作ステートの一覧及び動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、前記複数のプロセッサ・コアへの前記タスクの割り当てであるタスク配置を行う際の参照情報となる前記タスクセットを構成する前記タスクの特性を示すタスクセットパラメータと、に基づいて、前記動作ステートごとの、前記タスク配置の良好度を示す評価値であるステート評価関数値を生成するステート評価関数値生成手段と、前記動作ステートにおける前記ステート評価関数値を統合した評価対象の前記タスクセット全体の良好度を示す評価値である統合評価関数値を生成する統合評価関数値生成手段と、前記統合評価関数値の前記良好度を最大化する前記タスク配置を探索することにより、前記タスク配置を行う最適配置探索手段と、として機能させるタスク配置最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチコアシステムを対象としたタスク配置最適化システム、タスク配置最適化方法、及びタスク配置最適化プログラムに関する。
【背景技術】
【０００２】
近年のデジタル機器の高性能化及び低消費電力化要求の高まりをうけ、ＬＳＩ（Large Scale Integration）に複数のプロセッサ・コア（以下、単に「コア」とも記載する。）を搭載するマルチコア構成が注目を集めている。このＬＳＩのマルチコア化は、システム制御を目的とするリアルタイムシステム等においても重要な技術となってきている。【０００３】
マルチコアシステムは、主にＳＭＰ（Symmetric Multi Processing）方式とＡＭＰ（Asymmetric Multi Processing）方式に大別される。【０００４】
ＳＭＰ方式では、コアの空き状況、現在実行中のタスクの優先度等に応じてタスク切り替えが行われ、それぞれのタスクはいずれのコア上でも実行され得る。このため、自動的に負荷分散を行うことが可能となり、システム全体の性能は向上する。しかし、自動的な負荷分散はリアルタイム性能の予測を困難とするため、ＳＭＰ方式をリアルタイムシステムに適応することは困難である。【０００５】
一方、ＡＭＰ方式は、各タスクが特定のコア上でのみ実行される機能分散型の構成である。このため、ＡＭＰ方式は、システムの挙動を予測できることが重要なリアルタイムシステムや特定のハードウェアが接続されたコアが限定される組み込みシステム等に好適である。【０００６】
このようなＡＭＰ方式のマルチコアシステムでは、タスクをどのコアに配置するかにより性能が異なってくる。このため、ＡＭＰ方式のマルチコアシステムでは、最適な実行状態となるように様々なタスク配置を探索し、最適配置を決定する必要がある。【０００７】
以上、ＡＭＰ方式のマルチコアシステムを例として説明した。上記の説明は、ＡＭＰ方式以外の方式であっても、マルチコアシステム内の各コアに固定的にタスクを配置する機能分散型方式のマルチコアシステムに、一般に当てはまるものである。【０００８】
特開２００７−２６４７３４（以降、「特許文献１」という。）には、複数のコアを備えたマルチコアプロセッサ向けのソフトウェアチューニングを効率的に行うチューニング支援装置に関する技術が開示されている。図２１は特許文献１に記載のチューニング支援装置の構成を示す。【０００９】
当該チューニング支援装置では、はじめに粒度情報取得部２０１が、各コアに割り当てられた粒度に関する情報（以降、「粒度情報」という。）を取得する。ここで「粒度」とは、例えばプロセッサが行う処理の単位であって、タスク、関数、さらには関数を構成する処理の規模を表す総称である。【００１０】
構造情報生成部２０４は、取得された粒度情報に基づいて、タスクごとあるいはタスクが有する関数ごとに出現回数を算出し、算出された出現回数に関する情報（以降、「構造情報」という。）を生成する。【００１１】
依存情報生成部２０６は、取得された粒度情報に基づいて、タスクごとあるいはタスクが有する関数ごとの、他タスクあるいは関数への依存に関する情報（以降、「依存情報」という。）を生成する。出力部２０３がこれらの各情報を出力する。【００１２】
この構成により、チューニング支援装置は、負荷分散のための構造情報を効率的に解析、及び管理することができる。この解析情報を用いることにより、マルチプロセッサに対して、処理性能が高くなるように、タスクがコアに配置される。 
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、特許文献１に記載のチューニング支援装置によるタスク配置には、ある動作ステートにおいては最適なタスク配置とはならないという問題が生じ得る。当該問題について以下に述べる。【００１４】
一般的なシステム上では、常にすべてのタスクが動作しているわけではなく、システムが動作しているときの動作ステートに応じて、動作するタスクの組み合わせが異なる。上述のチューニング支援装置では、すべてのタスクを用いてタスク配置を最適化すること、及び特定の動作ステートでのみ動作するタスクセットを用いてタスク配置を最適化することが想定されている。これにより、すべてのタスク又は考察対象の動作ステートで動作するタスクセットに関するタスク配置が最適化され、負荷のバランスを均等にすることができる。しかし、当該チューニング支援装置において考慮されていない動作ステートでは、負荷のバランスが偏るなど、著しく性能が悪化するケースが生じ得る。
（発明の目的）
本発明は、上述の問題を解決するために主になされたものであり、特定の動作ステートにおいて性能劣化が生じることがないマルチプロセッサシステムのタスク配置を実現するタスク配置最適化システム、タスク配置最適化方法、タスク配置最適化プログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【００１５】
本発明のタスク配置最適化システムは、複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の動作ステートの一覧及び動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、複数のプロセッサ・コアへのタスクの割り当てであるタスク配置を行う際の参照情報となるタスクセットを構成するタスクの特性を示すタスクセットパラメータと、に基づいて、動作ステートごとの、タスク配置の良好度を示す評価値であるステート評価関数値を生成するステート評価関数値生成手段と、動作ステートにおけるステート評価関数値を統合した評価対象のタスクセット全体の良好度を示す評価値である統合評価関数値を生成する統合評価関数値生成手段と、統合評価関数値の良好度を最大化するタスク配置を探索することにより、タスク配置を行う最適配置探索手段と、を備える。【００１６】
本発明のタスク配置最適化方法では、複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の動作ステートの一覧及び動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、複数のプロセッサ・コアへのタスクの割り当てであるタスク配置を行う際の参照情報となるタスクセットを構成するタスクの特性を示すタスクセットパラメータと、に基づいて、動作ステートごとの、タスク配置の良好度を示す評価値であるステート評価関数値を生成し、動作ステートにおけるステート評価関数値を統合した評価対象のタスクセット全体の良好度を示す評価値である統合評価関数値を生成し、統合評価関数値の良好度を最大化するタスク配置を探索することにより、タスク配置を行う。【００１７】
本発明のタスク配置最適化プログラムは、コンピュータを、複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の動作ステートの一覧及び動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、複数のプロセッサ・コアへのタスクの割り当てであるタスク配置を行う際の参照情報となるタスクセットを構成するタスクの特性を示すタスクセットパラメータと、に基づいて、動作ステートごとの、タスク配置の良好度を示す評価値であるステート評価関数値を生成するステート評価関数値生成手段と、動作ステートにおけるステート評価関数値を統合した評価対象のタスクセット全体の良好度を示す評価値である統合評価関数値を生成する統合評価関数値生成手段と、統合評価関数値の良好度を最大化するタスク配置を探索することにより、タスク配置を行う最適配置探索手段と、として機能させる。
【発明の効果】
【００１８】
本発明によれば、特定の動作ステートにおいて性能劣化が生じることがないマルチプロセッサシステムのタスク配置を実現するタスク配置最適化システム、タスク配置最適化方法、タスク配置最適化プログラムを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】第１の実施の形態にかかるタスク配置最適化システムの構成を示すブロック図
【図２】第１の実施の形態にかかるタスク配置最適化システムの処理の流れを示すフローチャート
【図３】第２の実施の形態にかかるタスク配置最適化システムの構成を示すブロック図
【図４】第３の実施の形態にかかるステート・タスクセット対応表の具体例を示す図
【図５】第３の実施の形態にかかるタスクセットパラメータの具体例を示す図
【図６】第３の実施の形態にかかるステート・タスクセット対応表と、タスクパラメータセットと、の統合表
【図７】特許文献１にかかるチューニング支援装置の最適化の動作を示すステート・タスクセット対応表
【図８】第３の実施の形態にかかるタスク配置最適化システムの最適化の動作を示すステート・タスクセット対応表
【図９】第６の実施の形態にかかるタスクパラメータを示す図
【図１０】図９に示されるタスクセットパラメータに記述された依存関係を示す図
【図１１】第６の実施の形態にかかるステート・タスクセット対応表を示す図
【図１２】第６の実施の形態にかかる、各動作ステートにおいて動作するタスク、及び有効なコア間依存を示す図
【図１３】第７の実施の形態にかかるタスク配置最適化システムの、図８と同様の配置をとった場合の最適化の動作を示すステート・タスクセット対応表
【図１４】第７の実施の形態にかかるタスク配置最適化システムの最適化の動作を示すステート・タスクセット対応表
【図１５】第８の実施の形態にかかるタスク配置最適化システムの構成を示すブロック図
【図１６】第８の実施の形態にかかるステート重要度リストを示す図
【図１７】第６の実施の形態にかかるタスク配置最適化システムと同様の最適化の動作及び第８の実施の形態にかかるタスク配置最適化システムの最適化の動作を示すステート・タスクセット対応表
【図１８】第８の実施の形態にかかる、各動作ステートにおいて動作するタスク、及び有効なコア間依存を示す図
【図１９】第９の実施の形態にかかるタスク配置最適化システムの構成を示すブロック図
【図２０】第１の実施の形態にかかるタスク配置最適化システムの最小構成を示すブロック図
【図２１】特許文献１にかかるチューニング支援装置の構成を示すブロック図
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明の実施の形態について説明する。ＡＭＰ方式のマルチコアシステムにおいては、タスクをどのコアに配置するかによって性能が異なる。本実施の形態にかかるタスク配置最適化システムは、各タスクが特定のコアで実行される「機能分散型」の構成をとるＡＭＰ方式等のマルチコアシステムを設計・実装する際に、性能のよいタスクの配置となるよう最適化を行うことを目的とする。以下の説明では、本実施の形態にかかるタスク配置最適化システムによる最適化対象のＡＭＰ方式のマルチコアシステムを、単にマルチコアシステムと表記する。
（第１の実施の形態）
図１は、本実施の形態にかかる第１の実施の形態の、タスク配置最適化システムの全体構成を示すブロック図である。タスク配置最適化システム１は、タスクセットパラメータ保持部１１と、ステート・タスクセット対応表保持部１２と、最適化部１３と、を備える。
【００２１】
タスクセットパラメータ保持部１１は、外部から入力されるタスクセットパラメータを保持する。「タスクセットパラメータ」とは、タスクセット（マルチコアシステムに配置される複数のタスクの集合）を構成する各タスクの特性を表す情報であり、タスク配置の際の参照情報となる。タスクセットパラメータの具体例として、起動周期、他のタスクとの依存関係、実行時間、必要メモリサイズ等が挙げられ、これらがタスクごとに記載される。
【００２２】
ステート・タスクセット対応表保持部１２は、動作ステートの一覧及びステート・タスクセット対応表を保持する。動作ステートは、マルチコアシステムの動作状況に応じて変化する、個々の状態を表す。ステート・タスクセット対応表は、動作ステートと動作ステートごとに動作するタスクセットとの対応を示す。
【００２３】
マルチコアシステムを含む一般的なシステムは、動作状況に応じてその動作ステートを変化させながら動作する。システムの動作ステートが変化することにより、そのシステムの動作は様々に変化する。このため、一般的に特定の動作ステートの際に動作するタスクは、全タスクのうち一部のタスクとなる。ステート・タスクセット対応表は、システムの動作ステートの一覧と、動作ステートごとに動作するタスクセットの対応と、を表す。
【００２４】
最適化部１３は、ステート評価関数値生成部１３１と、統合評価関数値生成部１３２と、最適配置探索部１３３と、を備える。
【００２５】
ステート評価関数値生成部１３１は、特定動作ステートに対応したタスクセットを対象として、ステート評価関数値を生成する。詳細には、ステート評価関数値生成部１３１は、タスクセットパラメータ保持部１１からタスクセットパラメータを読み出し、ステート・タスクセット対応表保持部１２からステート・タスクセット対応表を読み出す。そして、ステート評価関数値生成部１３１は、これらの情報を基に特定動作ステートに対応したタスクセットを対象として、ステート評価関数値を生成する。一般的に、検証対象の全動作ステートに対してそれぞれステート評価関数値が生成される。「ステート評価関数値」は、動作ステートごとの、タスク配置の良好度を示す評価値である。
【００２６】
統合評価関数値生成部１３２は、検討対象の全動作ステートについてのステート評価関数値を統合し、統合評価関数値を生成する。「統合評価関数値」は、評価対象のタスクセット全体での、タスク配置の良好度を示す評価値である。
【００２７】
最適配置探索部１３３は、統合評価関数値生成部１３２が出力する統合評価関数値の良好度を最大化するタスク配置を探索する。最も単純な探索手法として全探索が挙げられる。全探索では、すべての配置候補を順に生成し、その中で最も統合評価関数値が良好な配置を探索結果として表示画面等に出力する。しかしながら、効率的な探索を実現するため、枝限定法、グリーディー法、遺伝的アルゴリズム等の一般に知られる高速化手法を用いることが望ましい。
【００２８】
なお、タスクセットパラメータ、ステート・タスクセット対応表、ステート評価関数値、及び統合評価関数値の具体例は、後述する第３の実施の形態等として説明する。
【００２９】
次に、図２のフローチャートを参照して、本実施の形態にかかるタスク配置最適化システム１の動作について説明する。
【００３０】
初めに、タスクセットパラメータ保持部１１は、外部から入力されたタスクセットパラメータを保持する（ステップＳ１０１）。次に、ステート・タスクセット対応表保持部１２は、外部から入力されたステート・タスクセット対応表を保持する（ステップＳ１０２）。
【００３１】
なお、上述のステップＳ１０１及びＳ１０２は順不同の処理であり、ステップＳ１０２を先に実行することや、ステップＳ１０１及びステップＳ１０２を同時に実行することも可能である。
【００３２】
最適配置探索部１３３は、タスク配置候補（どのタスクをどのコアに配置するかの候補データ）を生成する（Ｓ１０３）。そして、ステート評価関数値生成部１３１は、生成したタスク配置候補について、各動作ステートのステート評価関数値を生成する（Ｓ１０４）。
【００３３】
統合評価関数値生成部１３２は、ステート評価関数値生成部１３１が生成したステート評価関数値を統合した統合評価関数値を生成する（Ｓ１０５）。
【００３４】
最適配置探索部１３３は、統合評価関数値を考慮し、タスク配置の探索終了条件を満たすか否かを判定する（Ｓ１０６）。タスク配置の探索終了条件を満たさない場合（Ｓ１０６：Ｎｏ）、再度Ｓ１０３から処理を繰り返す。一方、タスク配置の探索終了条件を満たす場合（Ｓ１０６：Ｙｅｓ）、最適配置探索部１３３は、タスク配置の最適化結果を出力して処理を終了する。
【００３５】
ここで、タスク配置の探索終了条件は、どのような最適化アルゴリズムを最適配置探索部１３３が採用するかにより異なる。最適化アルゴリズムとして単純な全探索を用いる場合、探索終了条件は、全タスク配置候補の生成が終了することとなる。この場合、最適配置探索部１３３は、最適な統合評価関数値を持つタスク配置候補を最適化結果として出力する。一方、他の一般的な最適化アルゴリズムを採用する場合は、統合評価関数値がこれ以上良くなることがないと判定された場合や、タスク配置候補の生成を一定回数繰り返しても統合評価関数値が改善しない場合等、を考慮して探索終了条件が定められる。
【００３６】
続いて、本実施の形態にかかるタスク配置最適化システムの効果について説明する。上述のように、ステート評価関数値生成部１３１は、ステート・タスクセット対応表と、タスクセットパラメータと、に基づいて、動作ステートごとにタスク配置の良好度を示すステート評価関数値を算出する。統合評価関数値生成部１３２は、このステート評価関数値を評価対象の全動作ステートについて統合し、評価対象のタスクセット全体での、タスク配置の良好度を示す評価値である統合評価関数値を算出する。この統合評価関数値を用いてタスク配置の最適化を行うことにより、それぞれの動作ステートにおける処理性能を考慮することが可能になる。これにより、特定動作ステートにおいて著しく性能劣化が起こる問題を回避することができる。
【００３７】
特許文献１に記載のチューニング装置のように全タスクを用いてタスク配置の最適化を行う場合、実際には性能が充足されるマルチコアシステムにおいても、性能が足りない（例えばリアルタイムシステムの場合、デッドラインを充足しない等）と誤判定される場合がある。これは、前述の通り、一般的なシステムにおいてはすべてのタスクが常に動作しているわけではないことに起因する。例えば、ある２つのタスクは、マルチコアシステム内の動作ステートに応じてどちらか一方しか動作しない等のケースがあり、すべてのタスクをまとめて扱うことが不適切なケースがある。
【００３８】
本実施の形態にかかるタスク配置最適化システムは、動作ステートごとのステート評価関数値を算出し、それを統合して最適化を行うことにより、実際には同時に動作しないタスクを考慮した最適化を行うことが可能になる。これにより、本実施の形態にかかるタスク配置最適化システムは、全タスクを用いてタスク配置の最適化を行う場合には性能が足りないと判定されるようなマルチコアシステムを対象とした場合でも、適切に性能を充足する最適なタスク配置を出力することができる。
（第２の実施の形態）
次に、本発明の第２の実施の形態にかかるタスク配置最適化システムを、図面を参照して詳細に説明する。図３は、本実施の形態にかかるタスク配置最適化システムの全体構成を示すブロック図である。本実施の形態にかかるタスク配置最適化システムでは、第１の実施の形態において説明した処理がコンピュータ５によりプログラムとして実行されることを特徴とする。プログラムとして実行される各処理は、第１の実施の形態における処理とほぼ同一である。
【００３９】
コンピュータ５は、プロセッサ５１と、記憶装置５２と、を備える。記憶装置５２には、例えばハードディスク等が該当する。プロセッサ５１がプログラムを実行することにより、タスク配置最適化システムとして動作する。
【００４０】
タスクセットは、タスクセット定義ファイル６２上に表現される。ステート・タスクセット対応表は、ステート・タスクセット対応表定義ファイル６３上に表現される。タスクセット定義ファイル６２及びステート・タスクセット対応表定義ファイル６３は、タスク配置最適化プログラム６１が実行される際にプロセッサ５１から読み出される。プロセッサ５１は、タスク配置最適化プログラム６１を実行することにより、タスク配置の最適化を行う。プロセッサ５１は、タスク配置の最適化結果をタスク最適配置定義ファイル６４として記憶装置５２上に出力する。 
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）、ＣＤ−Ｒ／Ｗ（ReWritable）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００４１】
上述のように、ハードウェアによる処理のみでなく、コンピュータによって処理されるプログラムの形式であっても、ＡＭＰ方式を含む機能分散型のマルチプロセッサシステムのタスク配置の最適化を実現することができる。
（第３の実施の形態）
次に、具体的な実施例を用いて、第３の実施の形態にかかるタスク配置最適化システムの動作を説明する。以下の第３乃至第６の実施の形態では、タスク配置最適化システム１が対象とするマルチコアシステムは、コア０及びコア１を備える。
【００４２】
本実施の形態では、ステート評価関数値生成部１３１は、コア０に配置されたタスクをコア０が実行するときの実行時間の合計値と、コア１に配置されたタスクをコア１が実行するときの実行時間の合計値と、の差の絶対値をステート評価関数値として生成する。統合評価関数値生成部１３２は、各動作ステートにおけるステート評価関数値の総和を統合評価関数値として生成する。最適配置探索部１３３は、統合評価関数値が最小となる配置を探索する最適化を行う。以上のように、本実施の形態のタスク配置最適化方式は、各コアの実行時間の合計値がなるべく均等になるよう、負荷バランスが調整された配置を得るものである。
【００４３】
図４は、ステート・タスクセット対応表の具体例を示す図である。このように、マルチコアシステムが取り得る全動作ステートと、当該動作ステートにて実行されるタスクの関係が示される。図４の例では、マルチコアシステムは、動作ステートとしてＳ１、Ｓ２、Ｓ３、Ｓ４の４つを取り得る。さらに、ステートＳ１では、タスクＡ及びタスクＢが実行され、ステートＳ２では、タスクＣ、タスクＥ、タスクＦが実行される。同様に、ステートＳ３では、タスクＣ〜Ｇが実行され、ステートＳ４では、タスクＥ、タスクＦ、タスクＧが実行される。
【００４４】
図５は、タスクセットパラメータの例を示す図である。本実施の形態では、各タスクの実行に必要な実行時間がパラメータとして表記されている。図６は、図４のステート・タスクセット対応表の具体例と、図５のタスクセットパラメータの具体例と、を統合した表である。
【００４５】
以下に、図４のステート・タスクセット対応表、図５のタスクセットパラメータが入力された場合の、タスク配置最適化システムによるタスク配置の最適化について説明する。最適化は、各コアに割り当てられたタスクの実行時間を平均化させる観点により行われる。
【００４６】
ここで、ステートＳ１に注目した最適化は独立して行われる。ステートＳ２〜Ｓ４の最適化においては、特許文献１に記載された最適化手法を用いて行った最適化と、第１の実施の形態に記載された最適化手法とが比較される。
【００４７】
特許文献１に記載された最適化手法において、最も多くのタスクが動作するステートＳ３に着目した最適化を行った場合について説明する。図７は、当該最適化の様子を示す、ステート・タスクセット対応表である。
【００４８】
図７において、各タスク行には、そのタスクが該当動作ステートにて実行される場合に図５にて示した実行時間が表記されている。このうち、破線に囲まれたタスク（タスクＡ、Ｃ、Ｄ）はコア０に、それ以外のタスクはコア１に配置される。図７において、コア０、コア１の行には、それぞれのステート（Ｓ１〜Ｓ４）における各コアに割り当てられたタスクの実行時間の合計が示されている。
【００４９】
ここで、図７の例では、ステートＳ３に着目した最適化が行われる。すなわち、ステートＳ３において、コア０における実行時間と、コア１における実行時間が完全にバランス（すなわち同じ３２という値となる）している。一方、このタスク配置の場合、ステートＳ４ではコア１でのみタスクが実行され、コア０ではまったくタスクが実行されていない。すなわち、ステートＳ４では、タスク配置がアンバランスな状態となってしまっている。
【００５０】
このときのステート評価関数値、すなわち、コア０の実行時間の合計値とコア１の実行時間の合計値との差の絶対値は、ステートＳ１では｜１０−８｜＝２、ステートＳ２では｜１８−２３｜＝５、ステートＳ３では｜３２−３２｜＝０、ステートＳ４では｜０−３２｜＝３２である。
【００５１】
続いて、第１の実施の形態にかかるタスク配置最適化システムによる最適化結果について例示する。上述の図７のタスク配置での統合評価関数値、すなわち、各動作ステートにおけるステート評価関数値の総和は、２＋５＋０＋３２＝３９である。しかしながら、実際には統合評価関数値がさらに小さいタスク配置が存在する。本例のタスク配置最適化システム１は、統合評価関数値が最小となる配置を最適配置とする。最適配置探索部１３３には、様々な既存技術の最適化アルゴリズムが応用可能である。最適配置探索部１３３が算出した最適配置の一例を図８に示す。
【００５２】
図８の配置におけるステート評価関数値は、ステートＳ１では｜１０−８｜＝２、ステートＳ２では｜２５−１６｜＝９、ステートＳ３では｜３４−３０｜＝４、ステートＳ４では｜１６−１６｜＝０である。
【００５３】
従って、図８の配置における統合評価関数値は、２＋９＋４＋０＝１５となり、図７に示した統合評価関数値よりも小さくなっている。図７と比較して、図８の配置は、各ステートでの実行時間のバランスが取れている配置となっている。
【００５４】
次に、３個以上のコアからなるシステムにおける例について説明する。前述のように、本実施例のタスク配置最適化方式は、各コアの実行時間の合計値がなるべく均等になるよう、負荷バランスが調整された配置を得るものである。
【００５５】
そこで、ｎ個（ｎは３以上の整数）のコアからなるシステムでは、まずｎ個のコアにタスクを配置し、各々のコアに配置されたタスクをそれぞれのコアが実行するときの実行時間の合計値を求める。そして、ｎ個のコアのうちの２つのコアを選択して、上述の２個のコアの場合と同様に、実行時間の合計値の差の絶対値を暫定ステート評価関数値として生成する。この処理を、ｎ個のコアの内から選択された２つのコアの組み合わせの、複数組について実施し、複数個の暫定ステート評価関数値を生成する。そして、２個のコアからなるシステムの場合と同様の、あるステートにおけるシステム全体としてのステート評価関数値は、各動作ステートに対応する、複数の暫定ステート評価関数によって構成される。一般的には、２つのコアからなる組み合わせのすべてについて、暫定ステート評価関数値を生成する。ステート評価関数値は、すべての組み合わせに対応する暫定ステート評価関数値から構成される。このように、３個以上のコアからなるシステムでは、一旦、コアの組み合わせごとに、各ステートの暫定ステート評価関数値を求め、暫定ステート評価関数値を統合して、各ステートのステート評価関数値を求める。ステート評価関数値を求めるための、暫定ステート評価関数値の統合方法は特に限定されない。統合方法は、総和、相乗等、システムに求められる特性等の必要条件や要求条件に従って、適切な演算方法を用いることができる。
【００５６】
具体的に、コア０、コア１及びコア２の３コアからなるシステムについて説明する。このシステムにおいて、あるステートの暫定ステート評価関数値は、各コアに配置されたタスクの実行時間の合計値の、差の絶対値とする。例えば、コア０に配置されたタスクの実行時間の合計値と、コア１に配置されたタスクの実行時間の合計値と、の差の絶対値を暫定ステート評価関数値０１とする。同様に、コア０の実行時間の合計値とコア２の実行時間の合計値の差の絶対値を暫定ステート評価関数値０２とする。コア１とコア２の場合についても、実行時間の合計値の差の絶対値を暫定ステート評価関数値１２とする。このように、ステート評価関数値は、暫定ステート評価関数値０１、暫定ステート評価関数値０２及び暫定ステート評価関数値１２の、３つの暫定ステート評価関数値により構成される。
【００５７】
この場合、統合評価関数値生成手段１３２は、各動作ステートにおける複数の暫定ステート評価関数値の総和をとり、ステート評価関数値を生成する。そして、統合評価関数値生成手段１３２は、２個のコアの場合と同様に、評価対象のすべての動作ステートについてステート評価関数値の総和をとり、例えば１つの評価値からなる統合評価関数値を生成する。
【００５８】
なお、上記の説明では、暫定ステート評価関数値、ステート評価関数値は総和がとられ、それぞれステート評価関数値、統合評価関数値として生成されたが、上述のように、演算方法は総和には限定されない。
【００５９】
具体的に、コア０、コア１及びコア２の３コアからなるシステムについて、ステート評価関数値を絶対値の総和として統合する例を説明する。このシステムにおいて、あるステートの暫定ステート評価関数値は、各コアに配置されたタスクの実行時間の合計値の、差の絶対値とする。例えば、コア０に配置されたタスクの実行時間の合計値と、コア１に配置されたタスクの実行時間の合計値と、の差の絶対値を暫定ステート評価関数値０１とする。同様に、コア０とコア２の場合の絶対値を暫定ステート評価関数値０２、コア１とコア２の場合の絶対値を暫定ステート評価関数値１２とする。このとき、ステート評価関数値は、暫定ステート評価関数値０１＋暫定ステート評価関数値０２＋暫定ステート評価関数値１２として生成することができる。
【００６０】
このように、３個以上のコアからなるシステムにおいてステート評価関数値を１つの評価値として構成する手法では、まず、ステート評価関数値の構成要素となる複数の暫定ステート評価関数値を統合して１つの評価値からなるステート評価関数値を生成する演算を行う。そして次に、統合評価関数値生成手段１３２が、複数のステート評価関数値を統合して統合評価関数値を生成する演算を行う。その結果、種々のタスク配置に対応した、異なる複数の統合評価関数値が求まる。従って、適切な統合評価関数値を採用することによって、様々な特性を持ったタスク配置を行うことが可能となる。
【００６１】
これらの方式をとることで、コア０、コア１、コア２のそれぞれに配置されたタスクの実行時間の合計値が均等になったときに、ステート評価関数値が最小となる。従って、２コアの場合と同様に、実行時間の合計値がなるべく均等になるよう、負荷バランスが調整されたタスク配置を得ることができる。
【００６２】
以上の３コアの場合の実施の形態は、４コア以上の場合においても同様に拡張することができる。
（第４の実施の形態）
第４の実施の形態では、第３の実施の形態のタスク配置最適化システム１の応用例として、各コアに配置されたタスクを各コアが実行するときの実行時間の合計値の差の自乗をステート評価関数値とするものである。すなわち、ステート評価関数値生成部１３１が、コア０に配置されたタスクの実行時間の合計値とコア１に配置されたタスクの実行時間の合計値との差を求め、求めた差の自乗をステート評価関数値として生成する。統合評価関数値生成部１３２は、各動作ステートにおけるステート評価関数値の総和を統合評価関数値として生成する。以上のように、本実施の形態のタスク配置最適化方式は、第３の実施の形態と同様に、各コアの実行時間の合計値の均等化に注目している。
【００６３】
以下の説明では、第３の実施の形態のタスク配置最適化システム１によっては、統合評価関数値が同一となる２つの配置例について述べる。一つ目の配置Ａは、ステートＳ１、Ｓ２、Ｓ３、Ｓ４におけるステート評価関数値が夫々１、１、１、５となる。二つ目の配置Ｂは、ステートＳ１、Ｓ２、Ｓ３、Ｓ４におけるステート評価関数値が夫々２、２、２、２となる。第３の実施の形態のタスク配置最適化システム１によりこれらの配置の統合評価関数値を生成すると、配置Ａは１＋１＋１＋５＝８、配置Ｂは２＋２＋２＋２＝８となり同一値となる。
【００６４】
第４の実施の形態のタスク配置最適化システム１では、ステート評価値関数値は実行時間の差の自乗であり、統合評価関数値は配置Ａでは１＋１＋１＋２５＝２８、配置Ｂでは４＋４＋４＋４＝１６となる。ここで、最適配置探索部１３３は、統合評価関数値が最も小さい配置を最適配置とするため、配置Ｂが適切な配置と判断する。
【００６５】
このように、第４の実施の形態では、タスク配置のバランスのずれ（ステート評価関数値のずれ）が大きい動作ステートが統合評価関数値に与える影響が大きくなる。「ステート評価関数値のずれが大きい動作ステート」とは、その動作ステートのステート評価関数値が、他の動作ステートのステート評価関数値から離れていることを意味する。そのため、極端にバランスが悪い動作ステートが生じることを極力避けたい場合に、本例のようにステート評価関数値を実行時間の差の自乗とすることが有効である。
【００６６】
次に、３個以上のコアからなるシステムにおける例について説明する。前述のように、本実施例のタスク配置最適化方式は、第３の実施の形態と同様に、各コアの実行時間の合計値の均等化に注目している。
【００６７】
そこで、ｎ個（ｎは３以上の整数）のコアからなるシステムでは、まずｎ個のコアにタスクを配置し、各々のコアに配置されたタスクをそれぞれのコアが実行するときの実行時間の合計値を求める。そして、ｎ個のコアのうちの２つのコアを選択して、上述の２個のコアの場合と同様に、実行時間の合計値の差の自乗を暫定ステート評価関数値として生成する。この処理を、ｎ個のコアの内から選択された２つのコアの組み合わせの、複数組について実施し、複数個の暫定ステート評価関数値を生成する。そして、２個のコアからなるシステムの場合と同様の、あるステートにおけるシステム全体としてのステート評価関数値は、各動作ステートに対応する、複数の暫定ステート評価関数によって構成される。一般的には、２つのコアからなる組み合わせのすべてについて、暫定ステート評価関数値を生成する。ステート評価関数値は、すべての組み合わせに対応する暫定ステート評価関数値から、ステート評価関数値が構成される。このように、３個以上のコアからなるシステムでは、一旦、コアの組み合わせごとに、各ステートの暫定ステート評価関数値を求め、暫定ステート評価関数値を統合して、各ステートのステート評価関数値を求める。ステート評価関数値を求めるための、暫定ステート評価関数値の統合方法は特に限定されない。統合方法は、総和、相乗等、システムに求められる特性等の必要条件や要求条件に従って、適切な演算方法を用いることができる。
【００６８】
具体的に、コア０、コア１及びコア２の３コアからなるシステムについて説明する。このシステムにおいて、あるステートの暫定ステート評価関数値は、各コアに配置されたタスクの実行時間の合計値の、差の自乗とする。例えば、コア０に配置されたタスクの実行時間の合計値と、コア１に配置されたタスクの実行時間の合計値と、の差の自乗を暫定ステート評価関数値０１とする。同様に、コア０の実行時間の合計値とコア２の実行時間の合計値の差の自乗を暫定ステート評価関数値０２とする。コア１とコア２の場合についても、実行時間の合計値の差の自乗を暫定ステート評価関数値１２とする。このようにとき、ステート評価関数値は暫定ステート評価関数値０１、暫定ステート評価関数値０２及び暫定ステート評価関数値１２の、３つの暫定ステート評価関数値により構成される。
【００６９】
この場合、統合評価関数値生成手段１３２は、各動作ステートにおける複数の暫定ステート評価関数値の総和をとり、ステート評価関数値を生成する。そして、統合評価関数値生成手段１３２は、２個のコアの場合と同様に、評価対象のすべての動作ステートについてステート評価関数値の総和をとり、例えば１つの評価値からなる統合評価関数値として生成する。
【００７０】
なお、上記の説明では、暫定ステート評価関数値、ステート評価関数値は総和がとられ、それぞれステート評価関数値、統合評価関数値として生成されたが、上述のように、演算方法は総和には限定されない。
【００７１】
具体的に、コア０、コア１及びコア２の３コアからなるシステムについて、ステート評価関数値を自乗の総和として統合する例を説明する。このシステムにおいて、あるステートの暫定ステート評価関数値は、各コアに配置されたタスクの実行時間の合計値の、差の自乗とする。例えば、コア０に配置されたタスクの実行時間の合計値と、コア１に配置されたタスクの実行時間の合計値と、の差の自乗を暫定ステート評価関数値０１とする。同様に、コア０とコア２の場合の自乗を暫定ステート評価関数値０２、コア１とコア２の場合の自乗を暫定ステート評価関数値１２とする。このとき、ステート評価関数値は、暫定ステート評価関数値０１＋暫定ステート評価関数値０２＋暫定ステート評価関数値１２として生成することができる。
【００７２】
このように、３個以上のコアからなるシステムにおいてステート評価関数値を１つの評価値として構成する手法では、まず、ステート評価関数値の構成要素となる複数の暫定ステート評価関数値を統合して１つの評価値からなるステート評価関数値を生成する演算を行う。そして次に、統合評価関数値生成手段１３２が、複数のステート評価関数値を統合して統合評価関数値を生成する演算を行う。その結果、種々のタスク配置に対応した、異なる複数の統合評価関数値が求まる。従って、適切な統合評価関数値を採用することによって、様々な特性を持ったタスク配置を行うことが可能となる。
【００７３】
これらの方式をとることで、コア０、コア１、コア２のそれぞれに配置されたタスクの実行時間の合計値が均等になったときに、ステート評価関数値が最小となる。従って、２コアの場合と同様に、実行時間の合計値がなるべく均等になるよう、負荷バランスが調整されたタスク配置を得ることができる。
【００７４】
以上の３コアの場合の実施の形態は、４コア以上の場合においても同様に拡張することができる。
（第５の実施の形態）
第５の実施の形態では、第３の実施の形態のタスク配置最適化システム１の変形例として、統合評価関数値をステート評価関数値の相乗とする。すなわち、ステート評価関数値生成部１３１は、コア０の実行時間とコア１の実行時間との差を求め、求めた差の絶対値をステート評価関数値として生成する。統合評価関数値生成部１３２は、各動作ステートにおけるステート評価関数値の相乗を統合評価関数値として生成する。本実施の形態のタスク配置最適化方式でも、第３、第４の実施の形態と同様に、各コアの実行時間の合計値の均等化に注目している。
【００７５】
本実施の形態の処理内容を、第４の実施の形態と同様の配置Ａ及び配置Ｂを用いて説明する。この場合、統合評価関数値は、配置Ａでは１×１×１×５＝５、配置Ｂでは２×２×２×２＝１６となる。ここで、最適配置探索部１３３は、統合評価関数値が最も小さい配置を最適配置とするため、配置Ａが適切な配置と判断する。
【００７６】
このように、第５の実施の形態では、タスク配置のバランスのずれが小さい動作ステート（ステート評価関数値の差の小さい動作ステート）が数多くある場合に、総合評価関数値が小さくなる。「ステート評価関数値の差の小さい動作ステート」とは、その動作ステートのステート評価関数値が、他の動作ステートのステート評価関数値とほぼ等しいことを意味する。このような性質を持つため、多少負荷バランスが悪い動作ステート（ステート評価関数値の差の大きい動作ステート）が存在する場合であっても、なるべく多くの動作ステートの負荷バランスを小さくしたい場合に第５の実施の形態の方式（統合評価関数値をステート評価関数値の相乗とする方式）が有効である。
【００７７】
ただし、統合評価関数値をステート評価関数値の乗算とする場合、ステート評価関数値が一つでも０であると他の動作ステートのステート評価関数値に関わらず統合評価関数値が０となる。このため、ステート評価関数値の算出方法を定める際に、値が０とならないように、適当なオフセット値を加える等の注意が必要である。
（第６の実施の形態）
第６の実施の形態のタスク配置最適化システム１として、タスク間の依存が記載されたタスクパラメータセットが入力される例を示す。ステート評価関数値生成部１３１は、異なるコアに配置されている複数タスク間の依存の大きさを示す「コア間依存数」を動作ステートごとに求め、ステート評価関数値として出力する。「タスク間の依存」とは、ある２つのタスク間において、一方のタスクの処理結果を他方が使用するために、処理の順序に条件があることを意味する。
【００７８】
そして、「コア間依存」とは、依存関係がある複数のタスクが存在するとき、それぞれのタスクが異なるコアに配置されている状態をいう。一例として、タスクＡと、タスクＡに依存するタスクＢという２つのタスクのみを考える。タスクＡとタスクＢが異なるコアに配置された場合、コア間依存数は１である。タスクＡとタスクＢが同じコアに配置された場合、コア間依存数は０である。
【００７９】
一般的に、コア間でデータ転送をする場合には一定の時間を必要とすることから、コア間依存数は極力少ないことが望ましい。
【００８０】
ここで、本実施の形態では、全動作ステートにおいて、各コアに割り当てるタスク数が同一又は１つのみ異なることを条件に、コア間依存数を最小化する最適化の例を示す。
【００８１】
タスクセットパラメータの例を図９に示す。図９において、依存関係の列には、そのタスクに依存しているタスクの情報が記述されている。例えば、タスクＡの行には、タスクＢ、タスクＣ、及びタスクＧと記載されている。このことより、タスクＢ、タスクＣ、及びタスクＧは、タスクＡに依存することを示す。すなわち、タスクＢ、タスクＣ、及びタスクＧは、タスクＡの処理結果を利用して、それぞれの処理を行う。
【００８２】
図１０は、図９に示されるタスクセットパラメータに記述された依存関係を図示したものである。
【００８３】
図１１は、システムの動作ステートの一覧、及びその動作ステートごとに動作するタスクのセットの対応を表す、ステート・タスクセット対応表を示す。図１１の例では、システムの動作ステートとしてＳ５、Ｓ６、Ｓ７の３つがある。ステートＳ５においては、タスクＡ、タスクＢ、タスクＣ、タスクＤ、タスクＦが動作する。ステートＳ６においては、タスクＡ、タスクＣ、タスクＥ、タスクＦ、タスクＧが動作する。同様に、ステートＳ７においては、タスクＡ、タスクＣ、タスクＦが動作する。
【００８４】
まず、特許文献１に記載の最適化手法による最適配置の決定について説明する。当該手法では、動作ステートごとにどのタスクが動作するかは考慮されない。そのため、タスクセット全体の依存度を考えた場合に、最も依存数が少ないタスク間でタスク配置を分割する配置候補が出力される。図１０の例では、分割位置２１でタスク配置が分割される。すなわち、タスクＡ、タスクＢ、タスクＧがコア０に、タスクＣ、タスクＤ、タスクＥ、タスクＦがコア１（もしくはその逆）に配置される配置がタスク配置候補として出力される。このように、「タスク配置の分割」とは、複数のタスクを異なるコアに配置することを意味する。
【００８５】
ここで、当該手法によるタスク配置候補（図１０における分割位置２１で分割したタスク配置）におけるコア間依存数を以下に示す。図１２は、各動作ステートにおいて動作するタスク、及び有効なコア間依存のみを太線により示したものである。図１２より明らかなように、特許文献１に記載の最適化手法ではすべての動作ステートにおいてコア間依存が１つ存在する。
【００８６】
次に、本実施の形態のタスク配置最適化システム１による最適化について説明する。上述のように、ステート評価関数値生成部１３１は、動作ステートごとのコア間依存数をステート評価関数値として出力する。統合評価関数値生成部１３２は、このステート評価関数値を統合した統合評価関数値を算出する。最適配置探索部１３３は、この統合評価関数値を用いて最適化を行う。これにより、図１０及び図１２における分割位置２１以外の分割位置が候補となり得る。
【００８７】
ここで、図１０及び図１２における分割位置２２をタスク配置候補とする場合、タスクＣとタスクＤとの間、及びタスクＣとタスクＥとの間で、タスク配置が分割される。ステートＳ５、Ｓ６、Ｓ７のそれぞれにおいて動作するタスクを考慮すると、ステート評価関数値は、それぞれのステートにおいて夫々１、１、０となり、統合評価関数値は１＋１＋０＝２となる。
【００８８】
一方、特許文献１の手法における配置例では、最も依存数が少ないタスク間として、分割位置２１でタスク配置が分割されるため、統合評価関数値は１＋１＋１＝３となる。
【００８９】
以上のように、本実施の形態のタスク配置最適化システム１は、よりよい評価値を持つ配置、すなわち、タスクＡ、タスクＢ、タスクＣ、タスクＧがコア０に、タスクＤ、タスクＥ、タスクＦがコア１（もしくはその逆）に配置する最適化結果を出力することが可能になる。
【００９０】
このように、本実施の形態のタスク配置最適化システム１は、動作ステートが遷移するとき、動作ステートの全体として、コア間依存数が最も小さくなるようなタスク配置を選択することができる。すなわち、タスク依存度が最も小さくなるようなタスク配置を選択することができる。従って、本実施の形態のタスク配置最適化システム１は、より性能のよいタスク配置を算出することができる。
【００９１】
特に、ステートＳ７においては、コア間依存数が０となる配置を出力することが可能となり、最も性能のよいタスク配置を算出することが可能となる。
【００９２】
なお、本実施例において、コア間依存数はシステムを構成するコア数が増加しても同様に計測可能であり、３コア以上のシステムについても容易に拡張できる。
（第７の実施の形態）
第７の実施の形態は、第３の実施の形態のタスク配置最適化システム１の応用例として、あるステートにおける、タスクが配置されたコアの数をステート評価関数値とするものである。すなわち、ｎ個（ｎは２以上の整数）のコアから構成されるシステムを対象とした場合に、あるステートで動作する、タスクが割り当てられたコア数がｍ個のとき、このｍをそのステートにおけるステート評価関数値として生成する。（ｎ−ｍ）個のコアにはこのステートで動作するタスクが存在しない。統合評価関数値生成部１３２は、例えば各動作ステートにおけるステート評価関数値の総和を統合評価関数値として生成してもよい。
【００９３】
以上のように、本実施の形態のタスク配置最適化方式は、第３、第４の実施の形態等とは異なり、各ステートにおいて動作するコアの数の最小化に注目している。動作するコアの数を最小化することにより、動作に必要のないコアの電源を落として低消費電力化する等の応用が可能となる。
【００９４】
次に、第３の実施の形態と同様のタスクセットを用いて、第７の実施の形態のタスク配置最適化システム１の詳細を説明する。ここでは、各コアについて、配置されたタスクの実行時間の合計が３５を超えてはならないという制約がある例を用いて説明する。つまり、すべてのステートにおいて、コアごとにタスクの実行時間の合計に上限があり、ある特定のコアにタスクを配置することによって、動作するコア数を最小化する、といった単純なタスク配置方法を用いることはできないケースを想定する。すべてのステートにおいて、タスクの実行時間の合計が、あるコアの実行時間の上限までに収まる場合は、動作するコア数は常に１であり、タスク配置の決定は容易である。
【００９５】
図１３は、図８と同様の配置をとった場合の、第７の実施の形態におけるステート評価関数値を表に示したものである。すなわち、破線に囲まれたタスク（タスクＡ、Ｃ、Ｅ、Ｇ）はコア０に、それ以外のタスクはコア１に配置される。この配置では、各コアに配置されたタスクの実行時間の合計は３５以下であり、上記の上限を満たしている。
【００９６】
一方で、この配置では、いずれのステートでも双方のコアでいずれかのタスクが実行されるため、ステート評価関数値はすべてのステートにおいて２である。このため、統合評価関数値生成部１３２が各動作ステートにおけるステート評価関数値の総和を統合評価関数値とする場合には、統合評価関数値は８となる。この配置においては、いずれかのコアの電源を落として低消費電力化することはできない。低消費電力化するためには、各コアの実行時間の合計値の上限を満足しながら、いずれかのコアの電源を落とすことができるようなタスク配置が望ましい。
【００９７】
図１４は、第７の実施の形態のタスク配置最適化システム１において、タスクのコア配置の最適化を行った場合の一例を示している。図１４に示す配置では、破線に囲まれたタスクＡ、Ｂ、Ｃ、Ｄがコア０に、それ以外がコア１に配置される。この配置では、ステートＳ１ではコア０のみ、ステートＳ４ではコア１のみでの動作が可能であり、これらのステートの評価関数値はそれぞれ１となる。ステートＳ２、ステートＳ３のステート評価関数値はそれぞれ２である。このため、統合評価関数値生成部１３２が各動作ステートにおけるステート評価関数値の総和を統合評価関数値とする場合には、統合評価関数値は６となり、図１３よりも値が小さい。
【００９８】
この配置では、ステートＳ１ではコア０のみ、ステートＳ４ではコア１のみでの動作が可能であることから、ステートＳ１ではコア１の電源を、ステートＳ４ではコア０の電源を落とすことで低消費電力化することが可能である。
【００９９】
このように、本実施例においては、ステート評価関数値を各ステートにおいて動作するコアの数とし、それらを統合した統合評価関数値を最小化する配置を探索する。そして、特定のステートにおいて、いずれのタスクも実行しないコアの数を最大化する。従って、動作しないコアの電源を落とすことにより、低消費電力化を図る応用などが実現可能である。
【０１００】
なお、本実施例において、動作するコアの数は、システムを構成するコアの数が増加しても同様に計測可能であり、３コア以上のシステムについても容易に拡張できる。すなわち、各コアに配置されるタスクを各コアが処理するときの、実行時間の合計値の上限を守りながら、タスクを配置するコアの数を最小化すればよい。従って、コア数がいくつであっても、コアごとの上限値が与えられれば、容易にタスク配置を決定することができる。
（第８の実施の形態）
第８の実施の形態のタスク配置最適化システム１の構成を、図１５に示す。本実施例の構成では、実施例１〜５のタスク配置最適化システム１の構成に加え、さらにステート重要度リスト保持部１４を備える。
【０１０１】
ステート重要度リスト保持部１４は、ステートごとのステート重要度を指定するステート重要度リストを保持する。「ステート重要度」は、統合評価関数値生成手段１３２がステート評価関数値を統合して統合評価関数値を生成する際に、各ステートのステート評価関数値が統合評価関数値に与える影響度を変化させる係数である。
【０１０２】
統合評価関数値生成手段１３２は、各ステートのステート評価関数値をステート重要度リストに指定されたステート重要度に応じて変化させた重要度反映済みステート評価関数値を生成する。そして、統合評価関数値生成手段１３２は、生成された重要度反映済みステート評価関数値を統合した統合評価関数値を生成する。
【０１０３】
応用例として、タスク配置を行う際に特定のステートにおけるタスク配置を特に重視したい場合がある。例えば、実行時間に余裕がないステート、空きメモリ容量に余裕がないステートなど、そのステートにおけるタスク配置が悪い場合にシステムに深刻な影響が出る場合などがこれに該当する。第８の実施の形態のタスク配置最適化システム１は、このようなシステムを対象とした場合に、特定のステートの配置の良否を他のステートより重視したタスク配置を可能とすることを目的とする。
【０１０４】
次に、第６の実施の形態と同様の図９及び図１０に示すタスクセットパラメータを備えるタスクセットを用いて第６の実施の形態の手法との比較を行いながら、本実施の形態の詳細について説明する。
【０１０５】
図１６は、第８の実施の形態のタスクセットにおけるステート重要度リストの具体例である。図１６の例では、数値が大きい場合に重要度が高いものとしており、ステートＳ５、ステートＳ６のステート重要度は１、ステートＳ７の重要度が２である。また、統合評価関数値生成手段１３２は、例えば各ステートのステート評価関数値にステート重要度を乗じた値を算出し、評価対象のすべてのステートについて総和をとるものとしてもよい。以下はこの方式を用いた例を示す。
【０１０６】
ステート評価関数値生成手段１３１は、第６の実施の形態と同様に、コア間依存数をステート評価関数値として生成する。図１７は、第６の実施の形態にかかるタスク配置最適化システムと同様の最適化の動作、及び第８の実施の形態にかかるタスク配置最適化システムの最適化の動作を示すステート・タスクセット対応表である。
【０１０７】
分割位置についても、図１８に示すように、図１２に示された第６の実施の形態と同様例を用いるが、図１２での分割位置２１、２２は、図１８ではそれぞれ分割位置２３、２４である。なお、図１７及び図１８に示すように、第８の実施の形態では、ステートＳ５における動作タスクは第６の実施の形態とは異なる例を用いて説明する。第８の実施の形態の例は、ステート７の影響度が大きいことから、ステート７では極力コア間依存が存在しない配置を得ることが望ましい例である。
【０１０８】
まず、図１７、図１８に示すように、第６の実施の形態の手法を用いた場合には、分割位置２３、２４のいずれの場合にも統合評価関数値は３である。具体的には、分割位置２３ではいずれのステートのステート評価関数値も１であり、それらの総和である統合評価関数値は３である。また、分割位置２４でのステート評価関数値は、ステートＳ５では２、ステートＳ６、Ｓ７ではそれぞれ１、０であることから、統合評価関数値は２＋１＋０＝３となる。すなわち、いずれの分割点でも統合評価関数値は同一であり、必ずしもステート７で極力コア間依存が存在しない配置が得られるとは限らない。
【０１０９】
一方、第８の実施の形態の手法を用いた場合、分割位置２３における統合評価関数値は、１×１＋１×１＋２×１＝４である。分割位置２４における統合評価関数値は１×２＋１×１＋２×０＝３となる。従って、統合評価関数値が小さくなる分割位置、すなわち、分割位置２４での分割が採用される。このように、ステート７でのコア間依存がない配置を得ることが可能となる。以上のように、本実施例の方式を用いた場合には、ステート重要度による重み付けが行われた統合評価関数値を最小化するよう最適化を行う。従って、重要度の高いステートにおいて分割が少なくなるようなタスク配置、すなわち、コア間依存が少ないタスク配置を得ることが可能となる。
【０１１０】
このように、本実施例においては、各ステートのステート評価関数値が統合評価関数値に与える影響度を変化させる係数であるステート重要度が用いられる。そしてステートごとにステート重要度を指定したステート重要度リストを用いて統合評価関数値が生成される。従って、特定のステートの配置の良否を、他のステートより重視したタスク配置を得ることが可能となる。
【０１１１】
なお、上記の実施例では、ステート重要度は、統合評価関数値生成部１３２にて反映される。ステート重要度は、ステート評価関数値生成部１３１にてステート評価関数値を生成する際にあらかじめ反映され、統合評価関数値生成部１３２はステート重要度を参照せずにステート評価関数値を統合してもよい。
【０１１２】
他に、ステート重要度リストをステート・タスクセット対応表と統合した応用も考えられる。すなわち、ステート・タスクセット対応表が、マルチコアシステムが取り得る全動作ステートと各動作ステートにて実行されるタスクを示すのみでなく、各動作ステートの重要度も示すようにしてもよい。
【０１１３】
また、本実施の形態は、ステート重要度を考慮したタスク配置を行うが、ステート重要度はコアの個数には無関係である。従って、本実施の形態は、３コア以上のシステムについても容易に拡張できる。
【０１１４】
さらに、ステート重要度が直接ステート評価関数値生成部１３１又は統合評価関数値生成部１３２に供給されることで、ステート重要度リスト保持部１４が省略されてもよい。
（第９の実施の形態）
図１９に示すように、第９の実施の形態のタスク配置最適化システム１は、第８の実施の形態の構成に加え、さらにステート重要度生成部１５を備える。
【０１１５】
ステート重要度生成部１５は、ステート重要度リストを生成する。このとき、ステート重要度生成部１５は、配置の善し悪しの影響が大きいステートの重要度と、影響が小さいステートの重要度に差をつけ、影響が大きいステートの重要度を相対的に大きくする。
【０１１６】
各ステートの重要度の生成方法の具体例としては、例えば、タスクセットパラメータ及びステート・タスクセット対応表を参照し、実行時間に余裕がないステート、空きメモリ容量に余裕がないステートなどの重要度を大きく方法がある。あるいは、それら以外のステートについて、重要度を小さくすることも可能である。このように重要度を設定することにより、各ステートにおけるタスク配置の善し悪しの影響度を考慮して、タスク配置を行うことができる。
【０１１７】
なお、第９の実施の形態の動作は、ステート重要度リストがステート重要度生成部１５によって生成されることを除いて、第８の実施の形態と同様の手法を用いることが可能である。
【０１１８】
上記のように、本実施例では、タスクセットパラメータ及びステート・タスクセット対応表の入力から自動的にステート重要度リストが生成され、配置の善し悪しの影響が大きいステートを重視したタスク配置が行われる。従って、より効果的な配置を容易に得ることが可能となる。
【０１１９】
また、本実施例においても、コアの個数は処理内容に影響を与えないので、３コア以上のシステムについても容易に拡張できる。
【０１２０】
さらに、ステート重要度が直接ステート評価関数値生成部１３１又は統合評価関数値生成部１３２に供給されることで、ステート重要度リスト保持部１４が省略されてもよい。
【０１２１】
なお、本発明は上記の第１乃至第９の実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の最適化部１３の内部の各処理部による処理は、それぞれ異なるハードウェアで分散して実行されてもよい。また、以上の実施の形態は、各々他の実施の形態と組み合わせることができる。
【０１２２】
第１の実施の形態にかかるタスク配置最適化システム１の最小構成を図２０に示す。本構成は、タスクセットパラメータ及びステート・タスクセット対応表が直接ステート評価関数値生成部１３１に供給される点を除いて、図１の構成と同様である。  
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の動作ステートの一覧及び前記動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、前記複数のプロセッサ・コアへの前記タスクの割り当てであるタスク配置を行う際の参照情報となる前記タスクセットを構成する前記タスクの特性を示すタスクセットパラメータと、に基づいて、前記動作ステートごとの、前記タスク配置の良好度を示す評価値であるステート評価関数値を生成するステート評価関数値生成手段と、
前記動作ステートにおける前記ステート評価関数値を統合した評価対象の前記タスクセット全体の良好度を示す評価値である統合評価関数値を生成する統合評価関数値生成手段と、
前記統合評価関数値の前記良好度を最大化する前記タスク配置を探索することにより、前記タスク配置を行う最適配置探索手段と、
を備えるタスク配置最適化システム。
（付記２）
前記ステート評価関数値生成手段は、前記最適配置探索手段によって割り当てられた前記タスクを前記複数のプロセッサ・コアの各々が実行するときの実行時間を前記複数のプロセッサ・コアごとに合計して合計値を求め、前記複数のプロセッサ・コアの各々に対応する前記合計値の差の絶対値又は自乗を前記ステート評価関数値とする
付記１に記載のタスク配置最適化システム。
（付記３）
前記システムはＮ個（Ｎは３以上の整数）の前記プロセッサ・コアを有し、
前記ステート評価関数値生成手段は、前記最適配置探索手段によって割り当てられた前記タスクを前記Ｎ個の前記プロセッサ・コアの各々が実行するときの実行時間を前記Ｎ個の前記プロセッサ・コアごとに合計して合計値を求め、前記Ｎ個の前記プロセッサ・コアのうちの２個の前記コア・プロセッサからなる組み合わせの全部又は一部について前記プロセッサ・コアの各々に対応する前記実行時間の合計値の差の絶対値又は自乗を、前記組み合わせの全部又は一部のそれぞれに対応する暫定ステート評価関数値として生成し、前記暫定ステート評価関数値を統合し前記ステート評価関数値を生成する
付記１に記載のタスク配置最適化システム。
（付記４）
前記ステート評価関数値生成手段は、前記暫定ステート評価関数値の総和又は相乗を前記ステート評価関数値として生成する
ことを特徴とする付記３に記載のタスク配置最適化システム。
（付記５）
前記統合評価関数値生成手段は、前記ステート評価関数値の総和又は相乗を前記統合評価関数値として生成する
ことを特徴とする付記１乃至４のいずれかに記載のタスク配置最適化システム。
（付記６）
前記ステート評価関数値生成手段は、前記複数のプロセッサ・コアのそれぞれの間の依存数を前記ステート評価関数値として生成する
付記１に記載のタスク配置最適化システム。
（付記７）
前記ステート評価関数値生成手段は、前記動作ステートにおいて、配置された前記タスクを実行するのに要する前記複数のプロセッサ・コアの内のコアの個数を前記ステート評価関数値として生成する
付記１に記載のタスク配置最適化システム。
（付記８）
前記統合評価関数値生成手段は、前記統合評価関数値生成手段が前記ステート評価関数値を統合して前記統合評価関数値を生成する際に、前記ステート評価関数値が前記統合評価関数値に与える影響度を変化させる係数であるステート重要度を前記動作ステートごとに指定したステート重要度リストを参照し、前記ステートごとの前記ステート評価関数値を前記ステート重要度に応じて変化させた重要度反映済みステート評価関数値を生成し、前記重要度反映済みステート評価関数値を統合して前記統合評価関数値として生成する
付記１乃至付記７のいずれか１項に記載のタスク配置最適化システム。
（付記９）
前記動作ステートごとに、前記良好度への影響度に従ってステート重要度を設定し、前記ステート重要度リストを生成する、ステート重要度リスト生成手段をさらに備える
付記７に記載のタスク配置最適化システム。
（付記１０）
外部から入力される前記ステート・タスクセット対応表を保持するステート・タスクセット対応表保持手段と、
外部から入力される前記タスクセットパラメータを保持するタスクセットパラメータ保持手段と、をさらに備える
付記１乃至付記９のいずれか１項に記載のタスク配置最適化システム。
（付記１１）
前記他最適配置探索手段は、前記統合評価関数値が小さいタスクの配置候補を、優先的に最適配置として選択する
付記１乃至付記１０のいずれか１項に記載のタスク配置最適化システム。
（付記１２）
複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の動作ステートの一覧及び動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、複数のプロセッサ・コアへのタスクの割り当てであるタスク配置を行う際の参照情報となるタスクセットを構成するタスクの特性を示すタスクセットパラメータと、に基づいて、動作ステートごとの、タスク配置の良好度を示す評価値であるステート評価関数値を生成し、動作ステートにおけるステート評価関数値を統合した評価対象のタスクセット全体の良好度を示す評価値である統合評価関数値を生成し、統合評価関数値の良好度を最大化するタスク配置を探索することにより、タスク配置を行うタスク配置最適化方法。
【０１２３】
（付記１３）
コンピュータを、複数のプロセッサ・コアを有するシステムの動作状況に応じて変化する複数の動作ステートの一覧及び動作ステートごとに動作するタスクの集合であるタスクセットの対応を示すステート・タスクセット対応表と、複数のプロセッサ・コアへのタスクの割り当てであるタスク配置を行う際の参照情報となるタスクセットを構成するタスクの特性を示すタスクセットパラメータと、に基づいて、動作ステートごとの、タスク配置の良好度を示す評価値であるステート評価関数値を生成するステート評価関数値生成手段と、動作ステートにおけるステート評価関数値を統合した評価対象のタスクセット全体の良好度を示す評価値である統合評価関数値を生成する統合評価関数値生成手段と、統合評価関数値の良好度を最大化するタスク配置を探索することにより、タスク配置を行う最適配置探索手段と、として機能させるタスク配置最適化プログラム。
【０１２４】
（付記１４）
付記１３記載のタスク配置最適化プログラムを記憶した、非一時的なコンピュータ読み取り可能な記憶媒体。
【０１２５】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１２６】
この出願は、２０１１年１１月１７日に出願された日本出願特願２０１１−２７７２６７を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１２７】
本発明のタスク配置最適化システムは、例えば、マルチプロセッサシステムのタスク配置を支援する各種システムに応用可能である。本システムの具体的な実現手段としては、特殊なハードウェアは要求されない。従って、本システムは、一般的なコンピュータに組み込まれ、実現され得る。
【符号の説明】
【０１２８】
１  タスク配置最適化システム
１１  タスクセットパラメータ保持部
１２  ステート・タスクセット対応表保持部
１３  最適化部
１３１  ステート評価関数値生成部
１３２  統合評価関数値生成部
１３３  最適配置探索部
１４  ステート重要度リスト保持部
１５  ステート重要度リスト生成部
２１、２２、２３、２４  分割位置
５  コンピュータ
５１  プロセッサ
５２  記憶装置
６１  タスク配置最適化プログラム
６２  タスクセット定義ファイル
６３  ステート・タスクセット対応表定義ファイル
６４  タスク最適配置定義ファイル
２０１  粒度情報取得部
２０２  粒度情報登録部
２０３  出力部
２０４  構造情報生成部
２０５  構造情報登録部
２０６  依存情報生成部
２０７  依存情報登録部
２０８  性能情報登録部
【図１】
2013094156.tif 000003
【図２】
2013094156.tif 000004
【図３】
2013094156.tif 000005
【図４】
2013094156.tif 000006
【図５】
2013094156.tif 000007
【図６】
2013094156.tif 000008
【図７】
2013094156.tif 000009
【図８】
2013094156.tif 000010
【図９】
2013094156.tif 000011
【図１０】
2013094156.tif 000012
【図１１】
2013094156.tif 000013
【図１２】
2013094156.tif 000014
【図１３】
2013094156.tif 000015
【図１４】
2013094156.tif 000016
【図１５】
2013094156.tif 000017
【図１６】
2013094156.tif 000018
【図１７】
2013094156.tif 000019
【図１８】
2013094156.tif 000020
【図１９】
2013094156.tif 000021
【図２０】
2013094156.tif 000022
【図２１】
2013094156.tif 000023
【国際調査報告】
2013094156.tif 000024
2013094156.tif 000025
2013094156.tif 000026
2013094156.tif 000027