(57)【要約】      （修正有）【課題】マルチコアプロセッサによるタスクの処理効率を向上させる。【解決手段】複数のプロセッサコアによるタスクの並列処理を実行する１つ以上のクライアント２１〜２Ｎと、クライアント２１〜２Ｎにて実行される並列処理を補助するサーバ１０とを備えたマルチコアプロセッサシステム１００において、サーバ１０が、タスクを処理するために最低限必要なプロセッサコアの数を示す必要最低コア数を含むタスク情報を記憶するタスク情報管理テーブル１１ａと、プロセッサコアの動作設定内容を示す動作設定情報を含むコア情報を記憶するコア情報管理テーブル１１ｂとを備え、タスク情報とコア情報とに応じて、複数のプロセッサコアにタスクを割り当てるか否かを判定し、判定結果に応じてコア情報管理テーブル１１ｂを更新し、クライアント２１〜２Ｎが、コア情報に応じて、複数のプロセッサコアによるタスクの並列処理を実行する。【選択図】図１
2011065645.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアによるタスクの並列処理を実行する１つ以上のクライアントと、該クライアントにて実行される並列処理を通信ネットワークを介して補助するサーバとを備えたマルチコアプロセッサシステムであって、
前記サーバは、
前記タスクを処理するために最低限必要な前記プロセッサコアの数を示す必要最低コア数を含むタスク情報を記憶するタスク情報記憶手段と、
前記プロセッサコアの動作設定内容を示す動作設定情報を含むコア情報を記憶するコア情報記憶手段と、
前記タスク情報と前記コア情報とに応じて、前記複数のプロセッサコアに前記タスクを割り当てるか否かを判定するタスク割当判定手段と、
該タスク割当判定手段による判定結果に応じて前記コア情報を更新するコア情報更新手段と、
前記コア情報更新手段によって更新されたコア情報を前記クライアントに送信するコア情報送信手段とを含み、
前記クライアントは、
前記サーバの前記コア情報送信手段によって送信されたコア情報を受信するコア情報受信手段と、
該コア情報受信手段によって受信したコア情報に応じて、前記複数のプロセッサコアによるタスクの並列処理を実行する並列処理実行手段とを含む
ことを特徴とするマルチコアプロセッサシステム。
【請求項２】
前記クライアントは、
前記タスクの処理要求を受け付ける処理要求受付手段と、
該処理要求受付手段により受け付けた要求タスクに関する情報を含む処理情報を、前記サーバに送信する処理情報送信手段とを含み、
前記サーバは、
前記クライアントの前記処理情報送信手段によって送信された処理情報を受信する処理情報受信手段と、
該処理情報受信手段によって受信した処理情報に応じて前記タスク情報を更新するタスク情報更新手段とを含み、
前記タスク割当判定手段は、前記タスク情報更新手段によって更新されたタスク情報に応じて、前記要求タスクを１つ以上のプロセッサコアに割り当てるか否かを判定する
請求項１記載のマルチコアプロセッサシステム。
【請求項３】
前記タスク情報は、タスク毎の処理優先度を示す優先度を含み、
前記タスク割当判定手段は、前記コア情報を参照して前記複数のプロセッサコアのそれぞれに割り当てられているタスクである処理中タスクを特定する処理中タスク特定手段を有し、該処理中タスク特定手段により特定された当該処理中タスクの優先度と前記要求タスクの優先度とを比較して優先度の高いタスクをプロセッサコアに割り当てるものと判定する
請求項２記載のマルチコアプロセッサシステム。
【請求項４】
前記タスク割当判定手段は、
前記処理中タスクの必要最低コア数と前記要求タスクの必要最低コア数とを加算することにより、必要コア数を算出する必要コア数算出手段と、
該必要コア数算出手段により算出された必要コア数が、前記クライアントが備えるプロセッサコアの総数以下であるか否かを判定する必要コア数判定手段とを有し、
該必要コア数判定手段が、前記必要コア数が前記クライアントが備えるプロセッサコアの総数以下であると判定した場合に、改めて前記処理中タスクと前記要求タスクとをプロセッサコアに割り当てるものと判定する
請求項３記載のマルチコアプロセッサシステム。
【請求項５】
前記処理中タスク特定手段は、前記必要コア数判定手段が、前記必要コア数が前記クライアントが備えるプロセッサコアの総数以下であると判定した場合に、前記処理中タスクのうち、対応する前記必要最低コア数よりも多い数のプロセッサコアに割り当てられている処理中タスクを特定し、
前記タスク割当判定手段は、前記処理中タスク特定手段により特定された処理中タスクを割り当てるコア数を前記特定された処理中タスクの前記必要最低コア数までの範囲内で減らすべき、または減らせるものと判定する
請求項４記載のマルチコアプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアによるタスクの並列処理を実行するクライアントと、このクライアントにて実行される並列処理を通信ネットワークを介して補助するサーバとを備えたマルチコアプロセッサシステムに関する。
【背景技術】
【０００２】
従来から、２つ以上のプロセッサコアで構成されるマルチコアプロセッサシステムが知られている。マルチコアプロセッサシステムは、各プロセッサコア（以下、適宜「コア」という。）間で処理を分担することにより処理性能を向上させることができる。
【０００３】
このようなマルチコアプロセッサシステムにおいては、例えば、優先度の高いタスクの処理を実行中のコアに異常が検出された場合に、マルチコアプロセッサシステムを構成する他のコアのいずれかに、異常が検出されたプロセッサコアに割り当てられていたタスクの処理を代替させるものがある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−３０５３１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
こうした従来のマルチコアプロセッサシステムでは、優先度の高いタスクが割り当てられることにより、それまで処理対象とされていたタスクの処理を中断することとなる。また、タスクの構成（すなわちプログラムの並列度）に応じて、並列処理に用いることができるコア数に上限が設けられる場合がある。
【０００６】
このような場合に、優先度の高いタスクの処理が終了するまでいくつかのコアが待機状態（すなわち、タスクの処理を行わない状態）となってしまい、全体的な処理効率が落ちてしまうという問題があった。すなわち、優先度の高いタスクを先に処理することにより、最終的に全てのタスクの処理を終えるのに要する時間が増大するという問題があった。
【０００７】
本発明は、上記の問題を解決すべく、マルチコアプロセッサによるタスクの処理効率を向上させることができるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明のマルチコアプロセッサシステムは、複数のプロセッサコアによるタスクの並列処理を実行する１つ以上のクライアントと、該クライアントにて実行される並列処理を通信ネットワークを介して補助するサーバとを備えたマルチコアプロセッサシステムであって、前記サーバは、前記タスクを処理するために最低限必要な前記プロセッサコアの数を示す必要最低コア数を含むタスク情報を記憶するタスク情報記憶手段と、前記プロセッサコアの動作設定内容を示す動作設定情報を含むコア情報を記憶するコア情報記憶手段と、前記タスク情報と前記コア情報とに応じて、前記複数のプロセッサコアに前記タスクを割り当てるか否かを判定するタスク割当判定手段と、該タスク割当判定手段による判定結果に応じて前記コア情報を更新するコア情報更新手段と、前記コア情報更新手段によって更新されたコア情報を前記クライアントに送信するコア情報送信手段とを含み、前記クライアントは、前記サーバの前記コア情報送信手段によって送信されたコア情報を受信するコア情報受信手段と、該コア情報受信手段によって受信したコア情報に応じて、前記複数のプロセッサコアによるタスクの並列処理を実行する並列処理実行手段とを含むことを特徴とする。
【０００９】
上記の構成としたことで、マルチコアプロセッサによるタスクの処理効率を向上させることができるようになる。
【００１０】
前記クライアントは、前記タスクの処理要求を受け付ける処理要求受付手段と、該処理要求受付手段により受け付けた要求タスクに関する情報を含む処理情報を、前記サーバに送信する処理情報送信手段とを含み、前記サーバは、前記クライアントの前記処理情報送信手段によって送信された処理情報を受信する処理情報受信手段と、該処理情報受信手段によって受信した処理情報に応じて前記タスク情報を更新するタスク情報更新手段とを含み、前記タスク割当判定手段は、前記タスク情報更新手段によって更新されたタスク情報に応じて、前記要求タスクを１つ以上のプロセッサコアに割り当てるか否かを判定する構成とされていてもよい。
【００１１】
前記タスク情報は、タスク毎の処理優先度を示す優先度を含み、前記タスク割当判定手段は、前記コア情報を参照して前記複数のプロセッサコアのそれぞれに割り当てられているタスクである処理中タスクを特定する処理中タスク特定手段を有し、該処理中タスク特定手段により特定された当該処理中タスクの優先度と前記要求タスクの優先度とを比較して優先度の高いタスクをプロセッサコアに割り当てるものと判定する構成とされていてもよい。
【００１２】
前記タスク割当判定手段は、前記処理中タスクの必要最低コア数と前記要求タスクの必要最低コア数とを加算することにより、必要コア数を算出する必要コア数算出手段と、該必要コア数算出手段により算出された必要コア数が、前記クライアントが備えるプロセッサコアの総数以下であるか判定する必要コア数判定手段とを有し、該必要コア数判定手段が、前記必要コア数が前記クライアントが備えるプロセッサコアの総数以下であると判定した場合に、改めて前記処理中タスクと前記要求タスクとをプロセッサコアに割り当てるものと判定する構成とされていてもよい。
【００１３】
前記処理中タスク特定手段は、前記必要コア数判定手段が、前記必要コア数が前記クライアントが備えるプロセッサコアの総数以下であると判定した場合に、前記処理中タスクのうち、対応する前記必要最低コア数よりも多い数のプロセッサコアに割り当てられている処理中タスクを特定し、前記タスク割当判定手段は、前記処理中タスク特定手段により特定された処理中タスクを割り当てるコア数を前記必要最低コア数の範囲内で減らすべき、または減らせるものと判定する構成とされていてもよい。
【発明の効果】
【００１４】
本発明によれば、マルチコアプロセッサによるタスクの処理効率を向上させることができるようになる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態におけるマルチコアプロセッサシステムの構成例を示すブロック図である。
【図２】タスク情報の格納状態の例を示す説明図である。
【図３】コア情報の格納状態の例を示す説明図である。
【図４】クライアントとコア情報との関係を説明するための説明図である。
【図５】コア情報利用処理の例を示すフローチャートである。
【図６】タスク割当処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施の形態の例について図面を参照して説明する。
【００１７】
図１は、本発明の一実施の形態を示すマルチコアプロセッサシステム１００の構成例を示すブロック図である。図１に示すように、マルチコアプロセッサシステム１００は、サーバ１０と、マルチコアプロセッサとして機能するクライアント２１〜２Ｎ（Ｎは任意の正の整数）とを含む。
【００１８】
本例においては、サーバ１０とクライアント２１〜２Ｎとは、インターネットなどの通信ネットワーク５０により接続されているものとする。
【００１９】
サーバ１０は、本システムのシステム管理者によって管理され、ＷＷＷサーバなどの情報処理装置によって構成される。このサーバ１０は、クライアント２１〜２Ｎそれぞれにおける各種情報処理を補助するための各種機能を有する。
【００２０】
本例において、サーバ１０は、記憶部１１と、制御部１２と、タスク割当判定部１３と、タスク情報更新部１４と、コア情報更新部１５と、必要コア数算出部１６と、通信処理部１７とを含む。
【００２１】
記憶部１１は、各種の情報を記憶する記憶媒体である。記憶部１１には、タスク情報管理テーブル１１ａと、コア情報管理テーブル１１ｂとが設けられている。
【００２２】
タスク情報管理テーブル１１ａは、クライアント２１〜２Ｎにて処理される各種タスクに関する情報であるタスク情報を記憶するテーブルである。ここで、タスクとは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から見た処理の実行単位を意味する。また、本例において「タスクを複数のコアに割り当てる」とは、タスクを構成する処理単位であるプロセスやスレッドを各コアに割り当てることを意味する。
【００２３】
図２は、タスク情報管理テーブル１１ａにおけるタスク情報の格納状態の例を示す説明図である。図２に示すように、タスク情報は、タスクを一意に特定するためのタスクＩＤと、優先度と、必要最低コア数とを含む。
【００２４】
ここで、「優先度」とは、各タスクの処理優先度を意味し、優先度が高い（本例においては、優先度を示す数値が低い）タスクほど、他のタスクよりも先に処理されることが要求されるタスクであることを意味する。また、「必要最低コア数」とは、各タスクを適切に処理するために必要な最低限のコアの数を意味する。本例においては、必要最低コア数はタスク毎に予め設定されているものとする。なお、タスク情報として、タスクを処理するのに使用できるコア数の上限（最大コア数）や、予め定められたコア数でのみ処理可能なタスクであることを示すもの（例えば、２つまたは４つのコアの組み合わせでのみ処理可能なタスクであることを示す情報）を含む構成としてもよい。
【００２５】
コア情報管理テーブル１１ｂは、クライアント２１〜２Ｎが有するコアに関する情報であるコア情報を記憶するテーブルである。本例においては、コア情報は、各クライアントが有するコアの動作設定内容（例えば、コアが処理しているタスクを特定するためのタスクＩＤや、コアが待機状態であることを示す情報など）を示す動作設定情報であるものとする。
【００２６】
図３は、コア情報管理テーブル１１ｂにおけるコア情報の格納状態の例を示す説明図である。図３に示すように、コア情報は、クライアントを一意に特定するためのクライアントＩＤと、中断タスクと、待機タスクと、各クライアントが備えるコアを特定するためのコアＩＤと、各コアの動作設定内容とを含む。なお、中断タスクおよび待機タスクは、コアに割り当てられていないタスクである。
【００２７】
ここで、「中断タスク」とは、クライアント２１〜２Ｎの有する各コアにて処理が実行されているときに、処理中のタスクよりも優先度の高いタスクの実行要求が受け付けられたことにより、処理が中断されたタスクである。また、「待機タスク」とは、クライアント２１〜２Ｎがタスクの実行要求を受け付けたときに割当可能なコアが無かったため、処理が開始されず待機状態となっているタスクである。なお、コアに割り当てられていないタスクは、各タスクの優先度に応じてコアに割り当てられるべき順番が対応付けされて管理される。なお、この場合、例えば中断タスクとして管理されるタスクに対しては所定の規則により優先度を高める構成としてもよい。中断タスクの処理が待機タスクよりも優先して実行されやすい構成とすることより、キャッシュに格納される情報が過大になることを防止することができる。
【００２８】
制御部１２は、中央処理装置や一時記憶装置によって構成される。制御部１２は、記憶部１１に格納された各種プログラムに従い、サーバ１０を構成する各部を統制制御し、コア情報利用処理やタスク割当処理を含む各種の処理を実行する機能を有する。
【００２９】
タスク割当判定部１３は、各クライアント２１〜２Ｎに対するコア情報を作成・更新するときに、処理中タスクや要求タスクを含む各種タスクを、コアに対してどのように割り当てるかを判定する機能を有する。タスクの割当法方法については、後述するタスク割当処理で詳しく説明する（図６参照）。ここで、「処理中タスク」とは、コア情報において既にコアに割り当てられているタスクを意味する。また、「要求タスク」とは、クライアント２１〜２Ｎにて実行要求を受け付けたタスクを意味する。
【００３０】
タスク情報更新部１４とコア情報更新部１５は、クライアント２１〜２Ｎから受信した情報などに応じてタスク情報管理テーブル１１ａとコア情報管理テーブル１１ｂとにそれぞれ格納されるタスク情報とコア情報とを更新するための機能を有する。
【００３１】
必要コア数算出部１６は、後述するタスク割当処理にて必要コア数を算出する機能を有する。ここで、「必要コア数」とは、処理中タスクの必要最低コア数と要求タスクの必要最低コア数との和を示す数値である。
【００３２】
通信処理部１７は、通信ネットワーク５０を介してクライアント２１〜２Ｎと通信を行うための機能を有する。
【００３３】
クライアント２１〜２Ｎは、それぞれユーザによって管理される情報処理装置であり、複数のプロセッサコア（コア）を有するマルチコアプロセッサを意味する。クライアント２１〜２Ｎは、各コアが情報を共有する機能（共有メモリ機能）など、複数のコアによる情報処理（並列処理）を実現するための各種機能を有する。
【００３４】
図４（Ａ）〜図４（Ｃ）は、クライアント２１〜２Ｎと、サーバ１０が備える記憶部１１に記憶されているコア情報管理テーブル１１ｂにて管理されるコア情報との関係を説明するための説明図である。ここでは、１つのクライアント２１に対するコア情報が変化していく様子について説明する。
【００３５】
管理対象となるクライアント２１がコアを４つ（コア０，１，２，３）備えている場合には、コア情報管理テーブル１１ｂでは、各コア毎にそれぞれ割り当てられるタスクを示すコア情報が設定される。ここでは、クライアントが有する４つのコア０，１，２，３の全てにタスクＢが割り当てられているとき（図４（Ａ）参照）からの時間経過によるコア情報の変化について説明する。
【００３６】
クライアント２１がタスクＢの処理中に他のタスクの実行要求を受け付けた場合、サーバ１０は、後述するタスク割当処理（図６参照）の結果に応じて、コア情報管理テーブル１１ｂに設定されているクライアント２１についてのコア情報を更新する。
【００３７】
すなわち、例えばクライアント２１が備える全てのコアにてタスクＢの処理が実行されている場合に、クライアント２１が、タスクＢよりも優先度が低く必要最低コア数が「１」であるタスクＣの処理要求を受け付けたとする。この場合、サーバ１０によるタスク割当処理により、図４（Ｂ）に示すように、両方のタスク（すなわち、タスクＢとタスクＣ）が、それぞれの必要最低コア数以上のコア数で処理されるようにコアに割り当てられる。本例においては、コア０，１，２がタスクＢを処理し、コア３がタスクＣを処理することとなる。
【００３８】
次いで、クライアント２１が、タスクＢとタスクＣの処理を継続しているときにタスクＢとタスクＣよりも優先度が高く必要最低コア数が「２」のタスクＡを受け付けた場合、サーバ１０によるタスク割当処理により、図４（Ｃ）に示すように、優先度が最も低いタスクＣが中断タスクとなり、タスクＡとタスクＢがそれぞれ必要最低コア数を満足する２つのコアに割り当てられる。本例においては、コア０，１がタスクＢを処理し、コア２，３がタスクＡを処理することとなる。
【００３９】
なお、図示しないが、以下の場合も想定される。すなわち、クライアント２１が備えるコア０，１，２，３にタスクＡとタスクＢとが割り当てられているときに、クライアント２１が、例えばタスクＡとタスクＢより優先度が低いタスクＤの処理要求を受け付けると、サーバ１０によるタスク割当処理により、タスクＤは待機タスクとして記憶されることとなる。
【００４０】
次に、本例のマルチコアプロセッサシステム１００の動作について図５および図６のフローチャートを参照して説明する。なお、本発明に特に関係しない動作や処理については、その内容を省略している場合がある。
【００４１】
図５は、マルチコアプロセッサシステム１００が実行するコア情報利用処理の例を示すフローチャートである。コア情報利用処理では、クライアント２１〜２Ｎとサーバ１０とが連携してタスクの並列処理を実現するための処理が実行される。本例においては、クライアント２１とサーバ１０の動作について説明する。
【００４２】
コア情報利用処理において、先ず、クライアント２１は、クライアント２１が有する記憶部に記憶されたコア情報（クライアントコア情報）に応じたタスクの処理を行う（ステップＳ１０１）。なお、クライアント２１が、サーバ１０から受信するコア情報を所定の規則に応じて変換することにより（例えば、データ形式の変換など。）クライアントコア情報を作成する構成としてもよいし、サーバ１０から受信したコア情報をそのままクライアントコア情報とする構成としてもよい。
【００４３】
次いで、クライアント２１は、タスクの実行要求を受け付けたか否か判定する（ステップＳ１０２）。ここで、タスクの実行要求を受け付けていないと判定した場合（ステップＳ１０２のＮ）、クライアント２１用の処理フローは、後述するステップＳ１０５に移行する。
【００４４】
一方、例えばユーザからの操作入力を受け付けたことにより、タスクの実行要求を受け付けたと判定すると（ステップＳ１０２のＹ）、クライアント２１は、受け付けた実行要求が示すタスク（要求タスク）を特定し、特定したタスクに応じたタスクＩＤと、タスクの優先度と、タスクの必要最低コア数とを含むタスク受付情報をサーバ１０に送信する（ステップＳ１０３）。なお、このときクライアント２１は、サーバ１０にて情報の送信元が特定できるように、例えば自己のクライアントＩＤを提示して、タスク受付情報をサーバ１０に送信する。
【００４５】
また、本例においては、クライアント２１は、クライアント２１にて処理可能なタスクを一意に特定するためのタスクＩＤと、各タスクＩＤに応じた優先度および必要最低コア数とを含むタスク管理情報を記憶する記憶部を有しているものとする。なお、クライアント２１は、ユーザからの操作入力に応じてタスクの優先度を変更可能な構成とされていてもよい。
【００４６】
なお、タスク優先度や必要最低コア数を示すタスク管理情報は、全てサーバ１０が有している構成としてもよい。この場合、クライアント２１〜２Ｎは、実行要求を受け付けたタスクを示すタスクＩＤだけをタスク受付情報としてサーバ１０に送信する構成とすればよい。
【００４７】
一方、コア情報利用処理において、サーバ１０は、タスク受付情報を受信したか否かを判定する（ステップＳ２０１）。タスク受付情報を受信していないと判定すると（ステップＳ２０１のＮ）、クライアント２１用の処理フローは後述するステップＳ２０５に移行する。そして、クライアント２１からのタスク受付情報を受信したと判定すると（ステップＳ２０１のＹ）、サーバ１０は、提示されたクライアントＩＤからクライアント２１を特定し、クライアント２１についてのコア情報を参照する（ステップＳ２０２）。
【００４８】
コア情報を参照すると、サーバ１０は、要求タスクをクライアント２１が備えるコアに割り当てるためのタスク割当処理を実行する（ステップＳ２０３）。
【００４９】
タスク割当処理を実行すると、サーバ１０は、タスク割当処理にて更新したコア情報をクライアント２１に送信する（ステップＳ２０４）。
【００５０】
コア情報を受信してクライアントコア情報を更新すると（ステップＳ１０４）、クライアント２１は、更新したクライアントコア情報に応じてタスクをコアに割り当てて、各コアによるタスクの処理を実行する。
【００５１】
クライアント２１のコア０，１，２，３に割り当てられたタスクの処理が終了すると、各コアは、新たにタスクの割当が可能な状態（フリーコア）となる。本例においては、クライアント２１が、タスクが終了したことに応じてクライアントコア情報を参照し、終了したタスクが割り当てられていたコアをフリーコアとする。
【００５２】
次に、クライアント２１は、コア０，１，２，３のうち、フリーコアがあるか否かを判定する（ステップＳ１０５）。ここで、フリーコアが無いと判定すると（ステップＳ１０５のＮ）、クライアント２１用の処理フローは、ステップＳ１０１に移行する。
【００５３】
一方、フリーコアが有ると判定すると（ステップＳ１０５のＹ）、クライアント２１は、処理が終了したタスクとフリーコアとを示す情報（終了コード）をサーバ１０に送信して（ステップＳ１０６）、実行要求を受け付けた全てのタスクが終了したか否かを判定する（ステップＳ１０７）。
【００５４】
ここで、全てのタスクが終了したと判定すると（ステップＳ１０７のＹ）、クライアント２１は、クライアントコア情報を初期化して（ステップＳ１０８）、ここでの処理を終了する。
【００５５】
一方、全てのタスクが終了していないと判定すると（ステップＳ１０７のＮ）、クライアント２１は、サーバ１０からコア情報が送信されるのを待ち、コア情報を受信してクライアントコア情報を更新する（ステップＳ１０９）。サーバ１０用の処理フローはステップＳ１０１に移行する。
【００５６】
一方、ステップＳ２０４の処理にて更新したコア情報を送信すると（または、ステップＳ２０１にてタスク受付情報を受信していないと判定すると）、サーバ１０は、終了コードを受信したか否かを判定する（ステップＳ２０５）。ここで、終了コードを受信していないと判定すると（ステップＳ２０５のＮ）、サーバ１０は、ステップＳ２０１の処理に移行する。
【００５７】
一方、クライアント２１により送信された終了コードを受信したと判定すると（ステップＳ２０５のＹ）、サーバ１０は、受信した終了コードからフリーコアを特定する（ステップＳ２０６）。
【００５８】
フリーコアを特定すると、サーバ１０は、コア情報を参照し、中断タスクまたは待機タスクが有るか判定する（ステップＳ２０７）。ここで、中断タスクまたは待機タスクが有ると判定すると（ステップＳ２０７のＹ）、サーバ１０は、各タスクの優先度に応じてタスクをコアに割り当てることによりコア情報を更新する（ステップＳ２０８）。コア情報を更新すると、サーバ１０は、更新したコア情報をクライアント２１に送信し（ステップＳ２０９）、サーバ１０用の処理フローはステップＳ２０１に移行する。
【００５９】
一方、中断タスクも待機タスクも無いと判定すると（ステップＳ２０７のＮ）、サーバ１０は、既にコアに割り当てられているタスク（処理中タスク）が有るか判定する（ステップＳ２１０）。ここで、処理中タスクが有ると判定すると（ステップＳ２１０のＹ）、サーバ１０用の処理フローはステップＳ２０８に移行して、サーバ１０は、処理中タスクを処理するコア数が増加するようにコア情報を更新する。
【００６０】
一方、処理中タスクが無いと判定すると（ステップＳ２１０のＮ）、サーバ１０は、ステップＳ２０１の処理に移行する。なお、サーバ１０は、例えばクライアント２１との通信が終了することによりコア情報利用処理を終了する。
【００６１】
次いで、サーバ１０が実行するタスク割当処理について説明する。
【００６２】
図６は、サーバ１０が実行するタスク割当処理の例を示すフローチャートである。タスク割当処理では、クライアント２１〜２Ｎが実際にタスクをコアに割り当てるために用いるコア情報を作成（または更新）するための処理が実行される。ここでは、クライアント２１に対するサーバ１０の動作について説明する。
【００６３】
タスク割当処理において、先ず、サーバ１０は、タスク情報とコア情報とを参照して、要求タスクの必要最低コア数がクライアント２１のフリーコア数よりも多いか否か判定する（ステップＳ３０１）。ここで、要求タスクの必要最低コア数がフリーコア数よりも多くないと判定すると（ステップＳ３０１のＮ）、サーバ１０用の処理フローは、後述するステップＳ３０６に移行する。
【００６４】
一方、要求タスクの必要最低コア数がフリーコア数よりも多いと判定すると（ステップＳ３０１のＹ）、サーバ１０は、コア情報を参照して、待機タスクや中断タスクとして記憶されたタスクの中に、要求タスクよりも優先度の高いタスクが有るか判定する（ステップＳ３０２）。ここで、待機タスクや中断タスクとして記憶されたタスクの中に要求タスクよりも優先度の高いタスクが有ると判定すると（ステップＳ３０２のＹ）、サーバ１０は、要求タスクを待機タスクとみなしてコア情報を更新して（ステップＳ３０７）、処理フローはコア情報利用処理におけるステップＳ２０４に移行する（図５参照）。
【００６５】
一方、待機タスクや中断タスクとして記憶されたタスクの中に要求タスクよりも優先度の高いタスクが無いと判定すると（ステップＳ３０２のＮ）、サーバ１０は、処理中タスクの必要最低コア数と要求タスクの必要最低コア数との和（必要コア数）を算出し、算出した必要コア数が、クライアント２１が備えるプロセッサコアの総数（全コア数）以下であるか否か判定する（ステップＳ３０３）。
【００６６】
算出した必要コア数がクライアント２１の全コア数以下であると判定すると（ステップＳ３０３のＹ）、サーバ１０は、処理中タスクと要求タスクとをプロセッサコアに割り当てるものと判定して、処理フローは後述するステップＳ３０６に移行する。
【００６７】
一方、算出した必要コア数がクライアント２１の全コア数以下でないと判定すると（ステップＳ３０３のＮ）、サーバ１０は、タスク情報を参照して、処理中タスクの優先度が要求タスクの優先度よりも低いか否か判定する（ステップＳ３０４）。
【００６８】
ここで、処理中タスクの優先度が要求タスクの優先度よりも低くないと判定すると（ステップＳ３０４のＮ）、サーバ１０は、要求タスクを待機タスクとみなしてコア情報を更新し（ステップＳ３０７）、処理フローはコア情報利用処理におけるステップＳ２０４に移行する。
【００６９】
一方、処理中タスクの優先度が要求タスクの優先度よりも低いと判定すると（ステップＳ３０４のＹ）、サーバ１０は、処理中タスクを中断タスクに変更する（ステップＳ３０５）。これにより、フリーコアが設けられる。
【００７０】
処理中タスクを中断タスクに変更すると、サーバ１０は、要求タスクをフリーコアに割り当てるものと判定し、コア情報を更新して（ステップＳ３０６）、処理フローはコア情報利用処理におけるステップＳ２０４に移行する。
【００７１】
なお、サーバ１０は、更新対象とするコア情報における動作設定内容を変更することによりコア情報を更新する。すなわち、サーバ１０は、先ず、フリーコア（すなわち、動作設定内容が空データであるコア）に要求タスクを割り当てる。そして、フリーコアだけでは要求タスクの必要最低コア数を満たさない場合に、処理中タスクが割り当てられているコアをフリーコアにして、要求タスクを割り当てる。なお、この場合、サーバ１０はステップＳ３０３にて全コア数が必要コア数以上であることを確認しているので、処理中タスクを割り当てるコアが処理中タスクの必要最低コア数を下回るようにしてしまうことを回避できる。
【００７２】
また、サーバ１０は、処理中タスクと要求タスクとを記憶し、一度全てのコアをフリーコアにしてから改めて処理中タスクと要求タスクとをフリーコアに割り当てる処理を実行する構成とされていてもよい。実際にタスクの処理を実行しているのはクライアント２１になるので、サーバ１０におけるクライアント２１のコア情報において全てのコアを一時的にフリーコアにしても、タスクの処理に大きな影響を与えてしまうことはない。
【００７３】
なお、処理中タスクと要求タスクとを割り当てるコア数の割合は、各必要最低コア数を満たす範囲であればどのように決めてもよく、例えば各タスクの優先度に応じてサーバ１０が決める構成とされていてもよいし、処理中タスクの処理を優先する構成とされていてもよい。
【００７４】
また、サーバ１０が、先ずフリーコアに要求タスクを割り当ててから必要に応じて処理中タスクが割り当てられているコアに改めて要求タスクを割り当てる構成とされていてもよい。このような構成とすることにより、クライアント２１にて処理中タスクの処理を実行するプロセッサコアが処理を停止して、新たに別のタスク（すなわち、要求タスク）の処理を開始することに要する処理の回数を抑えることができるようになり、その結果タスクの処理効率を向上させることができる。
【００７５】
また、サーバ１０は、基本的には所定数だけフリーコアを確保するように処理中タスクと要求タスクとをフリーコアに割り当てる構成とされていてもよい。すなわち、例えば処理中タスクと要求タスクとの各必要最低コア数の合計である必要コア数がクライアント２１の全コア数よりも１だけ小さく、かつ処理中タスクが必要最低コア数よりも１つ多くのコアを用いて処理可能なタスクである場合に、クライアント２１がフリーコアを１つ残しておくことを優先する構成とされていてもよい。このような構成とすることにより、例えばクライアント２１においてプロセッサコアが故障などして、タスクを他のプロセッサコアに割り当てる必要が生じた場合などに、サーバ１０にて改めてフリーコアを設ける必要がないため早急に対応することができるようになる。
【００７６】
以上に説明したように、上述した実施の形態では、複数のプロセッサコアによるタスクの並列処理を実行する１つ以上のクライアント２１〜２Ｎと、クライアント２１〜２Ｎにて実行される並列処理を通信ネットワーク５０を介して補助するサーバ１０とを備えたマルチコアプロセッサシステム１００において、サーバ１０が、タスク（例えば、タスクＡ〜Ｅ）を処理するために最低限必要なプロセッサコアの数を示す必要最低コア数を含むタスク情報を記憶するタスク情報管理テーブル１１ａと、プロセッサコアの動作設定内容を示す動作設定情報（例えば、コアが処理しているタスクを特定するためのタスクＩＤや、コアが待機状態であることを示す情報など）を含むコア情報を記憶するコア情報管理テーブル１１ｂとを備え、タスク情報とコア情報とに応じて、複数のプロセッサコア（例えば、コア０，１，２，３）にタスクを割り当てるか否かを判定し、判定結果に応じてコア情報を更新し、更新したコア情報をクライアント２１〜２Ｎに送信し、クライアント２１〜２Ｎが、サーバ１０によって送信されたコア情報を受信し、受信したコア情報に応じて、複数のプロセッサコア（例えば、コア０，１，２，３）によるタスクの並列処理を実行する構成としているので、マルチコアプロセッサによるタスクの処理効率を向上させることができるようになる。
【００７７】
すなわち、タスクに必要最低コア数を設けて、これに応じてコアを割り当てる構成とすることにより、優先度の高いタスクを単純に割り込ませるようなものと比べて、全体的な処理効率を向上させることができるようになる。
【００７８】
また、上述した実施の形態では、マルチコアプロセッサシステム１００において、クライアント２１〜２Ｎが、タスクの処理要求を受け付け、受け付けた要求タスクに関する情報を含む処理情報（例えば、タスク受付情報）を、サーバ１０に送信し、サーバ１０が、クライアント２１〜２Nによって送信された処理情報を受信し、受信した処理情報に応じてタスク情報を更新し、更新したタスク情報に応じて、要求タスクを１つ以上のプロセッサコア（例えば、コア０，１，２，３）に割り当てるか否かを判定する構成としているので、プロセッサコアの動作状況に応じてタスクを割り当てることができるようになるので、クライアントからの要求に応じて効率的にタスクをコアに割り当てることができるようになる。
【００７９】
また、上述した実施の形態では、マルチコアプロセッサシステム１００において、タスク情報は、タスク毎の処理優先度を示す優先度を含み、サーバ１０が、コア情報を参照して複数のプロセッサコア（例えば、コア０，１，２，３）のそれぞれに割り当てられているタスクである処理中タスクを特定し、特定した処理中タスクの優先度と要求タスクの優先度とを比較して優先度の高いタスクをプロセッサコアに割り当てるものと判定する構成としているので、処理優先度の高いタスクの処理を優先して行うことができるようになる。
【００８０】
また、上述した実施の形態では、マルチコアプロセッサシステム１００において、サーバ１０が、処理中タスクの必要最低コア数と要求タスクの必要最低コア数とを加算することにより、必要コア数を算出し、算出した必要コア数が、クライアント２１〜２Ｎが備えるプロセッサコア（例えば、クライアント２１が備えるコア０，１，２，３）の総数以下であるか否かを判定し、必要コア数がクライアント２１〜２Ｎが備えるプロセッサコアの総数以下であると判定した場合に、処理中タスクと要求タスクとをプロセッサコアに割り当てるものと判定する構成としているので、複数のタスクを並列処理にて処理する場合に、いくつかのプロセッサコアが他のプロセッサコアにおける処理の終了を待つ状態になる可能性を減少させることができるようになる。
【００８１】
すなわち、例えば４つのコアがタスクＢを分担して実行している状況において、クライアント２１がタスクＢよりも優先度の高いタスクＡの処理要求を受け付けたとする。このとき、従来のマルチコアプロセッサでは、先ず、４つ全てのコアがタスクＢの処理を中断し、処理要求を受け付けたタスクＡについてのタスク情報を参照する。そして、例えばタスクＡの処理が最大２つのコアで分担して実行可能なものであると判断した場合、２つのコアによりタスクＡの処理を開始し、残りのコアにおいてはタスクＢの処理を中断していた。そのため、優先度の高いタスクを先に処理しようとする場合、全体的な処理効率が低下してしまう場合があった。
【００８２】
一方で、上述した実施形態においては、タスクを処理するために必要な最低限度のコア数である必要最低コア数を考慮してコアにタスクを割り当てることができるので、あるタスクの処理中に優先度が高いタスクの処理が割り込んできた場合に、２つのタスクの必要最低コア数の和が、マルチコアプロセッサが含むコア数以下である場合には、２つのタスクを同時に処理することができるようになる。よって、タスクの処理優先度を考慮することにより全体的な処理効率を低下させてしまうような事態が生じるケースを減少させることができるようになる。
【００８３】
なお、上述した実施の形態では、複数のプロセッサコアによるタスクの並列処理を実行するクライアント２１〜２Ｎと、クライアント２１〜２Ｎにて実行される並列処理を通信ネットワーク５０を介して補助するサーバ１０とを備えたマルチコアプロセッサシステム１００を例にして説明を行なったが、本発明の適用対象はサーバ／クライアント形式のシステムに限らず、例えばサーバ１０の機能とクライアント２１の機能とを有するシステムであってもよい。すなわち、クライアント２１〜２Ｎの何れかにサーバ１０の複数のプロセッサコア管理に関する機能を備える構成としたようなものであってもよい。
【００８４】
なお、上述した実施の形態では特に言及していないが、サーバ１０が、必要コア数がクライアント２１が備えるプロセッサコアの総数以下であると判定した場合に、処理中タスクのうち、対応する必要最低コア数よりも多い数のプロセッサコアに割り当てられている処理中タスクを特定し、特定した処理中タスクを割り当てるコア数を必要最低コア数の範囲内で減らすべき、または減らせるものと判定する構成としてもよい。このような構成とすることにより、コア数を減らすべきでない処理中タスクのコア数を減らしてしまうことを防止できるようになる。
【００８５】
すなわち、例えば、サーバ１０が、タスク割当処理において全コア数が必要コア数以上であると判定した場合に（図６、ステップＳ３０３参照）、処理中タスクが割り当てられたコア数と要求タスクの必要最低コア数との和（合計コア数）を算出し、算出した合計コア数が、クライアント２１の全コア数を超えているか否かを判定する。合計コア数がクライアント２１の全コア数を超えていると判定した場合に、サーバ１０は、処理中タスクを割り当てるコア数を、処理中タスクの必要最低コア数よりも少なくならない範囲で減少させる必要があると判定し、処理中タスクと要求タスクとを改めてクライアント２１のプロセッサコアに割り当てる前にその旨をクライアント２１に報知して、クライアント２１からの割当指示を受け付けることによりコア情報を更新する構成としてもよい。
【００８６】
このような構成とすることにより、サーバ１０は要求タスクを実行することにより処理中タスクの処理が遅くなることをクライアント２１に報知することができるようになり、クライアント側で処理中タスクの処理を優先するか否かを判断できるようにすることができるようになる。
【産業上の利用可能性】
【００８７】
本発明によれば、マルチコアプロセッサシステムによる処理効率を向上させることができるので、産業上有用である。
【符号の説明】
【００８８】
１０              サーバ
１１ａ            タスク管理テーブル
１１ｂ            コア情報管理テーブル
２１〜２Ｎ        クライアント
５０              通信ネットワーク
１００            マルチコアプロセッサシステム
【図１】
2011065645.tif 000003
【図２】
2011065645.tif 000004
【図３】
2011065645.tif 000005
【図４】
2011065645.tif 000006
【図５】
2011065645.tif 000007
【図６】
2011065645.tif 000008