(57)【要約】【課題】特定用途に用いられる並列処理の効率性を向上すること。【解決手段】本発明にかかるマルチコアシステムは、メインプロセッサコアと、複数のプロセッサコアと、メモリと、を備える。メインプロセッサコアは、複数のスレッドを、複数のプロセッサコアのそれぞれに割り当てて生成する管理部と、タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成し、メモリへ格納させるタスク生成部と、を備える。複数のプロセッサコアのそれぞれは、自己が割り当てられたスレッドを実行する。実行されたスレッドのそれぞれは、メモリに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクをメモリから読み出し、当該タスクを処理する。【選択図】図１
2016126426.tif 000002
【特許請求の範囲】
【請求項１】
メインプロセッサコアと、
複数のプロセッサコアと、
メモリと、
を備え、
前記メインプロセッサコアは、
複数のスレッドを、前記複数のプロセッサコアのそれぞれに割り当てて生成する管理部と、
タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成し、前記メモリへ格納させるタスク生成部と、を備え、
前記複数のプロセッサコアのそれぞれは、自己が割り当てられたスレッドを実行し、
前記実行されたスレッドのそれぞれは、前記メモリに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクを前記メモリから読み出し、当該タスクを処理する
マルチコアシステム。
【請求項２】
前記管理部は、
前記複数のプロセッサコアのコア数を取得し、
前記取得したコア数に対応する数のスレッドを生成し、かつ、当該スレッドごとに、当該スレッドを実行させるプロセッサコアを割り当てる
請求項１に記載のマルチコアシステム。
【請求項３】
前記メインプロセッサコアは、
前記複数のスレッド以外のスレッドを前記タスク生成部として実行する
請求項１又は２に記載のマルチコアシステム。
【請求項４】
前記メモリは、前記複数のタスクと、前記複数のスレッドとの対応関係を定義した定義情報を予め記憶し、
前記タスク生成部は、各タスクの生成時に、前記定義情報に基づいて各タスクに前記指定情報を付加する
請求項１乃至３のいずれか１項に記載のマルチコアシステム。
【請求項５】
前記指定情報は、当該指定情報が付加されるタスクの処理に要する見込時間、当該タスクの処理の開始時間、又は、当該タスクと他のタスクとの依存関係を示す情報の少なくもいずれかを含む、
請求項１乃至４のいずれか１項に記載のマルチコアシステム。
【請求項６】
前記複数のスレッドのそれぞれは、
前記メモリに格納された各タスクに付加された指定情報を参照し、自己が指定された複数のタスクの実行順序を決定する
請求項５に記載のマルチコアシステム。
【請求項７】
前記複数のスレッドのそれぞれは、
前記メモリに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクの実行タイミングを決定する
請求項５又は６に記載のマルチコアシステム。
【請求項８】
メインプロセッサコアと、
複数のプロセッサコアと、を備え、
前記メインプロセッサコアは、
複数のスレッドを、前記複数のプロセッサコアのそれぞれに割り当てて生成する管理部と、
タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成し、各タスクを前記管理部へ通知するタスク生成部と、を備え、
前記管理部は、前記通知されたタスクを、外部のメモリに格納し、
前記複数のプロセッサコアのそれぞれは、自己が割り当てられたスレッドを実行し、
前記実行されたスレッドのそれぞれは、前記メモリに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクを前記メモリから読み出し、当該タスクを処理する
マルチコアプロセッサ。
【請求項９】
メインプロセッサコアにおいて、
複数のスレッドを、前記複数のプロセッサコアのそれぞれに割り当てて生成し、
タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成し、
前記生成した複数のタスクをメモリに格納し、
前記複数のプロセッサコアのそれぞれにおいて、自己が割り当てられたスレッドを実行し、
前記実行されたスレッドのそれぞれにおいて、前記メモリに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクを前記メモリから読み出し、当該タスクを処理する
並列処理方法。
【請求項１０】
複数のスレッドを、前記複数のプロセッサコアのそれぞれに割り当てて生成する処理と、
タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成する処理と、
前記生成した複数のタスクをメモリに格納する処理と、
をコンピュータに実行させる並列処理制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアシステム、マルチコアプロセッサ、並列処理方法及び並列処理制御プログラムに関する。
【背景技術】
【０００２】
スマートフォン等の携帯端末機に搭載されているＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）は、近年、複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）コアを持つＭｕｌｔｉ−Ｃｏｒｅ構成が主流となっている。このＭｕｌｔｉ−Ｃｏｒｅ構成を有効に活用するためには、並列処理が可能な様々なプログラム（タスク）を各コアにおいて並列に動作させることが必要である。ここで、複数のタスクを複数のコアのいずれへ割り当てるかは、通常、Ａｎｄｒｏｉｄ（登録商標）やＬｉｎｕｘ（登録商標）などのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）がスケジューリングして決定する。
【０００３】
特許文献１には、並列プロセッサのためのタスクマネージャに関する技術が開示されている。特許文献１では、複数のＳＰＵ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）のそれぞれが、一つのタスクキューに格納された複数のタスクの中から優先度の高いタスクを選択して実行するものである。
【０００４】
特許文献２には、マルチコアプロセッサシステムに関する技術が開示されている。特許文献２では、複数のクライアントのそれぞれが複数のコアを有しており、各クライアントはネットワークを介してサーバと接続されている。サーバは、複数のタスクのそれぞれに、処理の優先度を示す情報を設定する。各クライアントは、サーバから受信したタスクに設定された優先度に応じてタスクを処理する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許４７１２８７７号
【特許文献２】特開２０１１−０６５６４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したようなＯＳのスケジューリングでは、組み込みシステムのような特定用途に用いられる並列処理の効率性の向上に限界があるという問題点がある。例えば、ＯＳによるスケジューリングでは、通常、ユーザプログラムから自身の開発した並列処理可能なプログラムを各論理コアに割り当てることができない。そのため、一つのコアに複数のタスクやスレッドが割り当てられてしまう場合、結果的にマルチコアの処理性能を享受できない。または、待機モードなどの消費電力を抑えたい場合には、敢えて並列処理を抑制することが有効な場合もある。
【０００７】
尚、一部のＯＳのシステムコールには論理コアを明示的に割り当てるため命令が存在している。しかし、そのシステムコールは非常に重い処理であるため性能面で不利になる。そのためプログラム全体として見ると性能が落ちていることになる。
【０００８】
さらに、上述した特許文献１又は２のようにタスクへの優先度指定だけでは、どのコアで実行するかの指定まではできない。
【０００９】
本発明は、このような問題を解決するためになされたものであり、特定用途に用いられる並列処理の効率性を向上するためのマルチコアシステム、マルチコアプロセッサ、並列処理方法及び並列処理制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の第１の態様にかかるマルチコアシステムは、
メインプロセッサコアと、
複数のプロセッサコアと、
メモリと、
を備え、
前記メインプロセッサコアは、
複数のスレッドを、前記複数のプロセッサコアのそれぞれに割り当てて生成する管理部と、
タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成し、前記メモリへ格納させるタスク生成部と、を備え、
前記複数のプロセッサコアのそれぞれは、自己が割り当てられたスレッドを実行し、
前記実行されたスレッドのそれぞれは、前記メモリに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクを前記メモリから読み出し、当該タスクを処理する。
【００１１】
本発明の第２の態様にかかるマルチコアプロセッサは、
メインプロセッサコアと、
複数のプロセッサコアと、を備え、
前記メインプロセッサコアは、
複数のスレッドを、前記複数のプロセッサコアのそれぞれに割り当てて生成する管理部と、
タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成し、各タスクを前記管理部へ通知するタスク生成部と、を備え、
前記管理部は、前記通知されたタスクを、外部のメモリに格納し、
前記複数のプロセッサコアのそれぞれは、自己が割り当てられたスレッドを実行し、
前記実行されたスレッドのそれぞれは、前記メモリに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクを前記メモリから読み出し、当該タスクを処理する。
【００１２】
本発明の第３の態様にかかる並列処理方法は、
メインプロセッサコアにおいて、
複数のスレッドを、前記複数のプロセッサコアのそれぞれに割り当てて生成し、
タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成し、
前記生成した複数のタスクをメモリに格納し、
前記複数のプロセッサコアのそれぞれにおいて、自己が割り当てられたスレッドを実行し、
前記実行されたスレッドのそれぞれにおいて、前記メモリに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクを前記メモリから読み出し、当該タスクを処理する。
【００１３】
本発明の第４の態様にかかる並列処理制御プログラムは、
複数のスレッドを、前記複数のプロセッサコアのそれぞれに割り当てて生成する処理と、
タスクを処理させるスレッドを指定した指定情報をそれぞれに付加した複数のタスクを生成する処理と、
前記生成した複数のタスクをメモリに格納する処理と、
をコンピュータに実行させる。
【発明の効果】
【００１４】
本発明により、特定用途に用いられる並列処理の効率性を向上するためのマルチコアシステム、マルチコアプロセッサ、並列処理方法及び並列処理制御プログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１にかかるマルチコアシステムの全体構成を示すブロック図である。
【図２】本発明の実施の形態１にかかるワーカスレッド生成処理の流れを示すフローチャートである。
【図３】本発明の実施の形態１にかかるタスク並列実行処理の流れを説明するためのシーケンス図である。
【図４】本発明の実施の形態１にかかるタスク生成処理の流れを示すフローチャートである。
【図５】本発明の実施の形態１にかかるマルチコアシステムのハードウェア構成の例を示すブロック図である。
【図６】本発明の実施の形態２にかかるタスクスケジューリング処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１７】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかるマルチコアシステム１００の全体構成を示すブロック図である。マルチコアシステム１００は、メインプロセッサコア１１０と、プロセッサコア１１１、１１２、・・・１１ｎと、メモリ１４０とを備える。メインプロセッサコア１１０並びにプロセッサコア１１１〜１１ｎのそれぞれは、ＣＰＵ等のプロセッサ回路の中核部分であり、キャッシュメモリを除く回路部分である。そのため、メインプロセッサコア１１０並びにプロセッサコア１１１〜１１ｎは、並列動作が可能である。尚、プロセッサコアの数は、少なくとも２以上であればよい。また、メインプロセッサコア１１０とプロセッサコア１１１等とは、同等の性能であるか否かは問わない。
【００１８】
メモリ１４０は、主記憶装置である。メモリ１４０は、タスクキュー１４１と、定義情報１５０とを記憶する。タスクキュー１４１は、後述するメインスレッド１２０により生成された複数のタスク１６１〜１６４及び各タスクに付加された指定情報１７１〜１７４をＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）で格納及び出力する記憶領域である。尚、タスクキュー１４１は、ＦＩＦＯの制御を行う処理を含むものである。但し、タスクキュー１４１は、格納順によらず、後述するワーカスレッド１２１〜１２ｎにより、指定情報１７１〜１７４に基づいて適宜、読み出され得る。定義情報１５０は、複数のタスク１６１〜１６４と、後述する複数のスレッドとの対応関係を定義した情報である。
【００１９】
メインプロセッサコア１１０は、メインスレッド１２０と、タスクマネージャ１３０とを実行する。
【００２０】
タスクマネージャ１３０は、管理部の一例であり、初期化時に、ワーカスレッド１２１、１２２、・・・１２ｎを、プロセッサコア１１１、１１２、・・・１１ｎのそれぞれに割り当てて生成する。特に、タスクマネージャ１３０は、プロセッサコア１１１〜１１ｎのコア数を取得し、取得したコア数に対応する数のワーカスレッドを生成し、かつ、ワーカスレッドごとに、各ワーカスレッドを実行させるプロセッサコアを割り当てる。尚、タスクマネージャ１３０は、メインスレッド１２０を生成してもよい。または、タスクマネージャ１３０は、ワーカスレッド１２１〜１２ｎを生成し、ワーカスレッド数と一致するように、ワーカスレッドにプロセッサコアを割り当ててもよい。
【００２１】
メインスレッド１２０は、タスク生成部の一例であり、指定情報１７１〜１７４をそれぞれに付加した複数のタスク１６１〜１６４を生成し、メモリ１４０へ格納させる。ここで、指定情報とは、タスクを処理させるワーカスレッドを指定した情報である。尚、メインスレッド１２０は、複数のタスクの並列処理を行うワーカスレッド１２１〜１２ｎ以外のスレッドといえる。そして、メインスレッド１２０は、各タスクの生成時に、定義情報１５０に基づいて各タスクに指定情報を付加する。
【００２２】
複数のプロセッサコア１１１〜１１ｎのそれぞれは、自己が割り当てられたワーカスレッドを実行する。ここでは、プロセッサコア１１１はワーカスレッド１２１、プロセッサコア１１２はワーカスレッド１２２、・・・プロセッサコア１１ｎはワーカスレッド１２ｎをそれぞれ実行する。
【００２３】
各プロセッサコア１１１〜１１ｎにより実行されたワーカスレッド１２１〜１２ｎのそれぞれは、タスクキュー１４１に格納された各タスク１６１〜１６４に付加された指定情報１７１〜１７４を参照し、自己が指定されたタスクをタスクキュー１４１から読み出し、当該タスクを処理する（実行を開始する）。尚、タスクキュー１４１にタスクが格納されていない場合、ワーカスレッドは、スリープ状態となる。
【００２４】
図２は、本発明の実施の形態１にかかるワーカスレッド生成処理の流れを示すフローチャートである。まず、タスクマネージャ１３０は、プロセッサコア１１１〜１１ｎのコア数を取得する（Ｓ１１）。例えば、タスクマネージャ１３０は、デバイス情報等から、マルチコアシステム１００が搭載する全コア数のうちメインプロセッサコア１１０の数を除いた分をコア数として取得してもよい。
【００２５】
次に、タスクマネージャ１３０は、コア数に対応する数のワーカスレッドを生成する（Ｓ１２）。例えば、コア数がｎの場合、タスクマネージャ１３０はワーカスレッドをｎ個生成する。または、タスクマネージャ１３０は、コア数ｎの整数倍のワーカスレッドを生成してもよい。
【００２６】
そして、タスクマネージャ１３０は、ワーカスレッドを、プロセッサコアに割り当てる（Ｓ１３）。例えば、タスクマネージャ１３０は、図１に示すように各ワーカスレッドを各プロセッサコアに一対一に割り当てる。尚、生成するスレッド数に応じて、適宜、一対他で割り当てても良い。
【００２７】
ワーカスレッド生成処理の後、プロセッサコア１１１〜１１ｎのそれぞれは、自己に割り当てられたワーカスレッド１２１〜１２ｎを実行する。
【００２８】
図３は、本発明の実施の形態１にかかるタスク並列実行処理の流れを説明するためのシーケンス図である。前提として、図２のワーカスレッド生成処理の終了後であるものとする。尚、図３では、ワーカスレッド１２ｎは省略している。
【００２９】
まず、メインスレッド１２０は、タスク生成処理を実行する（Ｓ２１）。ここで、図４は、本発明の実施の形態１にかかるタスク生成処理の流れを示すフローチャートである。尚、メインスレッド１２０は、マルチコアシステム１００における全体の処理状況に応じて適宜、タスクを生成する。つまり、メインスレッド１２０は複数のタスクを生成する際には、当該タスク生成処理を繰り返し実行する。
【００３０】
まず、メインスレッド１２０は、タスクを生成する（Ｓ３１）。次に、メインスレッド１２０は、定義情報１５０に基づき、生成したタスクにワーカスレッドを指定する（Ｓ３２）。すなわち、メインスレッド１２０は、定義情報１５０に基づき、生成したタスクに指定情報を付加する。例えば、定義情報１５０にタスク１６１とワーカスレッド１２１との対応付けが定義されていた場合には、メインスレッド１２０は、タスク１６１に、ワーカスレッド１２１を指定した指定情報１７１を付加する。そして、メインスレッド１２０は、生成したタスクをタスクマネージャ１３０に通知する（Ｓ３３、図３のＳ２２）。すなわち、メインスレッド１２０は、生成したタスクをメモリ１４０へ格納させるためにタスクマネージャ１３０へ通知する。
【００３１】
図３に戻り説明を続ける。タスクマネージャ１３０は、通知されたタスクを、メモリ１４０のタスクキュー１４１に格納する（Ｓ２３）。このとき、タスクマネージャ１３０は、通知される度に、通知されたタスクをタスクキュー１４１へ格納する。つまり、タスクマネージャ１３０は、受け付けたタスクを受け付けた順にタスクキュー１４１へ格納する。尚、通知されたタスクには指定情報が付加されているため、タスクと共に指定情報も併せてタスクキュー１４１へ格納される。
【００３２】
その後、ワーカスレッド１２１は、タスクキュー１４１へアクセスし、各タスクに付加された指定情報を参照し、自己が指定されたタスクをタスクキュー１４１から読み出す（Ｓ２４）。そして、ワーカスレッド１２１は、読み出したタスクを処理する（Ｓ２５）。また、ワーカスレッド１２２も同様に、ステップＳ２６及びＳ２７を実行する。さらに、ワーカスレッド１２ｎ等も同様である。尚、ワーカスレッド１２１〜１２ｎの処理順序は、厳密に同時である必要はなく、各スレッドにおけるタスク処理がいずれかのタイミングで並列となっていればよい。
【００３３】
図５は、本発明の実施の形態１にかかるマルチコアシステム１００のハードウェア構成の例を示すブロック図である。マルチコアシステム１００は、マルチコアプロセッサ１１００と、記憶装置１８０と、メインメモリ１９０とを備える。マルチコアプロセッサ１１００は、メインプロセッサコア１１０と、プロセッサコア１１１〜１１ｎとを含む。記憶装置１８０は、例えば、不揮発性記憶装置であるが、これに限定されない。記憶装置１８０は、ＯＳ１８１と、並列処理制御プログラム１８２と、タスク１８３と、定義情報１８４とを記憶する。ＯＳ１８１は、マルチコアシステム１００における処理全体を制御するオペレーティングシステムである。尚、ＯＳ１８１は公知のものを用いることができるため、詳細な説明を省略する。
【００３４】
並列処理制御プログラム１８２は、タスクマネージャモジュール１８２１と、メインスレッドモジュール１８２２と、ワーカスレッドモジュール１８２３とを含むコンピュータプログラムである。タスクマネージャモジュール１８２１は、上述したタスクマネージャ１３０の処理が実装されたコンピュータプログラムの一モジュールである。尚、タスクマネージャモジュール１８２１には、例えば、並列処理プログラムで使用されるBoss-Worker Multi-Threading Program等を用いても良い。メインスレッドモジュール１８２２は、上述したメインスレッド１２０の処理が実装されたコンピュータプログラムの一モジュールである。ワーカスレッドモジュール１８２３は、上述したワーカスレッド１２１等の処理が実装されたコンピュータプログラムの一モジュールである。尚、タスクマネージャモジュール１８２１、メインスレッドモジュール１８２２及びワーカスレッドモジュール１８２３のそれぞれは、例えば、クラスファイル等であってもよい。
【００３５】
タスク１８３は、上述したタスク１６１〜１６４のそれぞれの処理が実装されたコンピュータプログラムである。尚、タスク１８３は処理に応じて複数存在するものとする。定義情報１８４は、上述した定義情報１５０に対応する情報である。
【００３６】
メインメモリ１９０は、上述したメモリ１４０に対応する主記憶装置である。
【００３７】
マルチコアプロセッサ１１００は、記憶装置１８０からメインメモリ１９０へＯＳ１８１、タスクマネージャモジュール１８２１、メインスレッドモジュール１８２２及びワーカスレッドモジュール１８２３を読み込み、実行することで、本発明の実施の形態にかかる並列処理を行うマルチコアシステム１００として動作する。
【００３８】
このように、本発明の実施の形態により、ＯＳによらず、タスクマネージャ１３０により各プロセッサコアにワーカスレッドを予め割り当てることができる。そして、メインスレッド１２０が各タスクに対して実行させるワーカスレッドを指定する。これにより、例えば、ユーザプログラムからタスクマネージャ１３０における割り当ての指示及び定義情報１５０の事前の設定を行うことで、結果的に、各タスクを実行させるプロセッサコアを自由に指定することができる。そのため、柔軟な割り当てが可能となり、特定用途に用いられる並列処理の効率性を向上することができる。
【００３９】
本発明の実施の形態は、例えば、物理エンジンなどの計算量が非常に多い重い処理を実行する場合、並列処理及び分散処理を使用して、マルチコアに静的に割り当てることで、処理時間短縮を実現したい場合に有効である。
【００４０】
ここで、従来における並列処理動作のスレッドやプロセスは、ＯＳが優先度から起動や終了をスケジューリングする。そのため、非常に長い時間動作するようなスレッドやプロセスがその時間帯に存在している場合、ＯＳによるスケジューリングのため同時に並列動作させたい複数の論理コアの割り当てることができないことがある。そのため、結果として期待している時間帯内に並列動作するスレッド群やプロセス群を終了させることができない場合がある。
【００４１】
これに対して本発明の実施の形態では、タスクマネージャによるワーカスレッドとプロセッサコアの割り当て及びメインスレッドによるタスクへのワーカスレッドの指定を行うことにより、期待している時間帯に全ての並列動作を完了させることができる。そのため、全ての並列動作のスケジューリングをＯＳの介在なしにアプリケーションが動作させる前に予測することができる。よって、事前に全ての動作時間を予め計算して効率よく動作させることができる。
【００４２】
＜発明の実施の形態２＞
本発明の実施の形態２は、上述した実施の形態１を改良したものである。具体的には、本発明の実施の形態２における指定情報は、当該指定情報が付加されるタスクの処理に要する見込時間、当該タスクの処理の開始時間、又は、当該タスクと他のタスクとの依存関係を示す情報の少なくもいずれかを含むものである。
【００４３】
ここで、見込時間とは、タスク処理のロード時間（処理時間）の情報であり、例えば、当該タスクの過去の処理時間の平均値等の統計情報を用いても良い。また、開始時間は、タスク処理がいつ実行するべきかの時間情報である。また、依存関係とは、対象のタスク処理の前に実行が完了すべきタスク処理や、後に実行すべきタスク処理等を示す情報である。
【００４４】
そして、複数のワーカスレッドのそれぞれは、タスクキューに格納された各タスクに付加された指定情報を参照し、自己が指定された複数のタスクの実行順序を決定するとよい。これに代えて、又は、これに加えて、複数のスレッドのそれぞれは、タスクキューに格納された各タスクに付加された指定情報を参照し、自己が指定されたタスクの実行タイミングを決定するようにしてもよい。
【００４５】
図６は、本発明の実施の形態２にかかるタスクスケジューリング処理の流れを示すフローチャートである。前提として、指定情報には、上述した見込時間、開始時間、又は、依存関係等の少なくともいずれかを含むものとする。
【００４６】
まず、各ワーカスレッドは、タスクキュー１４１へアクセスし、各タスクに付加された指定情報を参照する（Ｓ４１）。次に、各ワーカスレッドは、指定情報に含まれる見込時間、開始時間、又は、依存関係等に基づいて、自己が指定されたタスクの実行スケジュールを決定する（Ｓ４２）。このとき、自己が指定されたタスクが複数存在する場合には、それらのタスク間の実行順序を決定する。また、指定情報に開始時間が含まれる場合には、当該タスクの実行タイミングを決定する。
【００４７】
その後、各ワーカスレッドは、決定したスケジュールに従ってタスクを実行する（Ｓ４３）。
【００４８】
このように本実施の形態では、各ワーカスレッドが指定情報を用いて、実行可能な時間帯や順序でタスクを処理することで並列処理の効率化を図ることができる。
【００４９】
例えば、従来よりも短い時間帯で動作させることが可能となるため、従来動作していた時間帯の余った時間をアイドリングや休止の時間に取ることができるため、温度上昇を抑え、バッテリ駆動時間を延命する効果がある。
【００５０】
＜その他の実施の形態＞
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更及び組み合わせすることが可能である。
【符号の説明】
【００５１】
１００  マルチコアシステム
１１０  メインプロセッサコア
１１１  プロセッサコア
１１２  プロセッサコア
１１ｎ  プロセッサコア
１２０  メインスレッド
１２１  ワーカスレッド
１２２  ワーカスレッド
１２ｎ  ワーカスレッド
１３０  タスクマネージャ
１４０  メモリ
１４１  タスクキュー
１５０  定義情報
１６１  タスク
１６２  タスク
１６３  タスク
１６４  タスク
１７１  指定情報
１７２  指定情報
１７３  指定情報
１７４  指定情報
１１００  マルチコアプロセッサ
１８０  記憶装置
１８１  ＯＳ
１８２  並列処理制御プログラム
１８２１  タスクマネージャモジュール
１８２２  メインスレッドモジュール
１８２３  ワーカスレッドモジュール
１８３  タスク
１８４  定義情報
１９０  メインメモリ
【図１】
2016126426.tif 000003
【図２】
2016126426.tif 000004
【図３】
2016126426.tif 000005
【図４】
2016126426.tif 000006
【図５】
2016126426.tif 000007
【図６】
2016126426.tif 000008