(57)【要約】【課題】複数のプロセッサ間におけるタスクの受け渡しによるオーバーヘッドの増大、及び、タスク間の相互干渉を防止しながら処理効率を向上させるマルチプロセッサシステムを提供すること。【解決手段】複数のプロセッサ１Ａ、１Ｂのそれぞれが有するリソースを相互に利用させながらタスクを実行させるマルチプロセッサシステム１００は、各プロセッサコア１０Ａ、１０Ｂが現在実行中のタスクに関するタスク実行情報を記憶するタスクレジスタ２Ａ、２Ｂと、各プロセッサコアが実行しようとするタスクとそのタスクに干渉する干渉タスクとに関するタスク干渉情報を記憶する干渉情報テーブル３と、タスク実行情報とタスク干渉情報とに基づいて第一のプロセッサコア１０Ａによる第二のプロセッサ１Ｂのリソースを用いた第二のプロセッサ１Ｂに属するタスクの実行を許可するか否かを判定する実行許否判定手段４とを備える。【選択図】図１
2008176646.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサのそれぞれが有するリソースを相互に利用させながら処理を実行させるマルチプロセッサシステムであって、
第一のプロセッサによる第二のプロセッサのリソースを用いた該第二のプロセッサに属する処理の実行を許可するか否かを判定する実行許否判定手段、
を備えることを特徴とするマルチプロセッサシステム。
【請求項２】
各プロセッサが現在実行しているタスクに関するタスク実行情報を記憶するタスクレジスタを更に備え、
前記実行許否判定手段は、前記タスクレジスタに記憶されたタスク実行情報に基づいて前記第一のプロセッサによる前記第二のプロセッサのリソースを用いた前記第二のプロセッサに属するタスクの実行を許可するか否かを判定する、
ことを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
各プロセッサが実行しようとするタスクと該タスクに干渉する干渉タスクとに関するタスク干渉情報を記憶する干渉情報テーブルを更に備え、
前記実行許否判定手段は、前記タスクレジスタに記憶されたタスク実行情報と前記干渉情報テーブルに記憶されたタスク干渉情報とに基づいて前記第一のプロセッサによる前記第二のプロセッサのリソースを用いた前記第二のプロセッサに属するタスクの実行を許可するか否かを判定する、
ことを特徴とする請求項１または２に記載のマルチプロセッサシステム。
【請求項４】
前記干渉タスクは、プロセッサが実行しようとするタスク自身を含む、
ことを特徴とする請求項３に記載のマルチプロセッサシステム。
【請求項５】
前記実行許否判定手段は、前記タスク実行情報及び前記干渉情報テーブルを参照して前記第二のプロセッサが実行しているタスクと前記第一のプロセッサが実行しようとする前記第二のプロセッサに属するタスクとが並列実行可能であるか否かを判定し、並列実行が可能である場合に限り、前記第一のプロセッサによる前記第二のプロセッサのリソースを用いた前記第二のプロセッサに属するタスクの実行を許可する、
ことを特徴とする請求項３又は４に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関し、特に、各プロセッサが現在実行しているタスクに関するタスク実行情報と各プロセッサがこれから実行しようとするタスクに干渉する干渉タスクに関するタスク干渉情報とに基づいて第一のプロセッサによる第二のプロセッサのリソースを用いた第二のプロセッサに属するタスクの実行を許可するか否かを判定するマルチプロセッサシステムに関する。
【背景技術】
【０００２】
従来、並列計算機における一のプロセッサ（以下、「自プロセッサ」とする。）でタスク生成要求が発生した場合、その自プロセッサ内でそのタスクを処理できるか否かを判定し、処理できないと判定したときに並列計算機における他のプロセッサ（以下、「他プロセッサ」とする。）にそのタスクの処理を依頼して自プロセッサに掛かる負荷を動的に分散する動的負荷分散方法が知られている（例えば、特許文献１参照。）。
【０００３】
また、この動的負荷分散方法は、要求されたタスクが自プロセッサで処理できないと判定した場合に限り他プロセッサにそのタスクの処理を依頼させるので、自プロセッサで生成要求が発生したタスクを無制限に他プロセッサに依頼して並列計算機全体の負荷を却って増大させてしまうのを防止する。
【０００４】
さらに、この動的負荷分散方法は、他プロセッサによるタスク処理の可否を自プロセッサに判定させるのではなく、他プロセッサのそれぞれにタスク処理の可否を判定させるので、タスク処理の可否を判定するために自プロセッサに多大な負荷が掛かってしまうのを防止する。
【特許文献１】特開平９−２３７２５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の並列計算機における動的負荷分散方法は、自プロセッサが処理できなかったタスクを他プロセッサで代わりに処理させるので、両プロセッサ上で動作する各ＯＳ(Operating  System)を経由させたり、他プロセッサで稼働中のタスクを中断させたりする必要があり、プロセッサ間のタスクの受け渡しによって生じるオーバーヘッドを増大させ、分散処理による効率化を図ることを目的としたタスクの細分化を困難にするという問題がある。
【０００６】
また、他プロセッサは、自プロセッサから依頼を受ける度に、自プロセッサから依頼されたタスクと他プロセッサで実行中のタスクとの間で優先順位を決定する必要があり、他プロセッサにおける処理負荷を増大させてしまうという問題がある。優先順位を決定しなければ、相互に干渉するタスクを同時期に実行させてしまう場合もあるからである。
【０００７】
上述の点に鑑み、本発明は、複数のプロセッサ間におけるタスクの受け渡しによるオーバーヘッドの増大、及び、タスク間の相互干渉を防止しながら処理効率を向上させるマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述の目的を達成するために、第一の発明に係るマルチプロセッサシステムは、複数のプロセッサのそれぞれが有するリソースを相互に利用させながらタスクを実行させるマルチプロセッサシステムであって、第一のプロセッサによる第二のプロセッサのリソースを用いた該第二のプロセッサに属するタスクの実行を許可するか否かを判定する実行許否判定手段を備えることを特徴とする。
【０００９】
また、第二の発明は、第一の発明に係るマルチプロセッサシステムであって、各プロセッサが現在実行しているタスクに関するタスク実行情報を記憶するタスクレジスタを更に備え、前記実行許否判定手段は、前記タスクレジスタに記憶されたタスク実行情報に基づいて前記第一のプロセッサによる前記第二のプロセッサのリソースを用いた前記第二のプロセッサに属するタスクの実行を許可するか否かを判定することを特徴とする。
【００１０】
また、第三の発明は、第一又は第二の発明に係るマルチプロセッサシステムであって、各プロセッサが実行しようとするタスクと該タスクに干渉する干渉タスクとに関するタスク干渉情報を記憶する干渉情報テーブルを更に備え、前記実行許否判定手段は、前記タスクレジスタに記憶されたタスク実行情報と前記干渉情報テーブルに記憶されたタスク干渉情報とに基づいて前記第一のプロセッサによる前記第二のプロセッサのリソースを用いた前記第二のプロセッサに属するタスクの実行を許可するか否かを判定することを特徴とする。
【００１１】
また、第四の発明は、第三の発明に係るマルチプロセッサシステムであって、前記干渉タスクは、プロセッサが実行しようとするタスク自身を含むことを特徴とする。
【００１２】
また、第五の発明は、第三又は第四の発明に係るマルチプロセッサシステムであって、前記実行許否判定手段は、前記タスク実行情報及び前記干渉情報テーブルを参照して前記第二のプロセッサが実行しているタスクと前記第一のプロセッサが実行しようとする前記第二のプロセッサに属するタスクとが並列実行可能であるか否かを判定し、並列実行が可能である場合に限り、前記第一のプロセッサによる前記第二のプロセッサのリソースを用いた前記第二のプロセッサに属するタスクの実行を許可することを特徴とする。
【発明の効果】
【００１３】
上述の手段により、本発明は、処理のオーバーヘッド増大、及び、タスク間の相互干渉を防止しながらシステム全体の処理効率を向上させるマルチプロセッサシステムを提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しつつ、本発明を実施するための最良の形態の説明を行う。
【実施例】
【００１５】
図１は、本発明に係るマルチプロセッサシステムの構成例を示す図であり、マルチプロセッサシステム１００は、第一演算回路１Ａ、第二演算回路１Ｂ、第一タスクレジスタ２Ａ、第二タスクレジスタ２Ｂ、干渉情報テーブル３、実行許否判定回路４、及び、設定レジスタ５０〜５５から構成される。
【００１６】
なお、各構成要素を結ぶ太線は、常時接続を意味し、各構成要素を結ぶ鎖線は、接続と非接続とがハードウェア的に切り替えられる接続を意味する。また、矢印は、情報が流れる向きを示す。
【００１７】
マルチプロセッサシステム１００は、二以上のプロセッサコアを一個のプロセッサパッケージに集積したマルチコアプロセッサをＬＳＩ(Large-Scale  Integrated  circuit)上に一個又は複数個備えたシステムであってもよく、一個のプロセッサコアを有するシングルコアプロセッサをＬＳＩ上に複数備えたシステムであってもよい。
【００１８】
また、マルチプロセッサシステム１００は、全てのプロセッサが対等となる対称型マルチプロセッサ構成であってもよく、プロセッサ毎に異なる処理内容が予め決定される非対称型マルチプロセッサ構成（機能分散型マルチプロセッサ構成ともいう。）であってもよい。
【００１９】
また、マルチプロセッサシステム１００は、ＲＯＭ（Read  Only  Memory）、ＲＡＭ(Random  Access  Memory)等の物理的に独立したローカルメモリを有する粗結合マルチプロセッサ構成を採用するが、物理的に一体であるメモリをレジスタの設定により区分することで擬似的なローカルメモリを構成する密結合マルチプロセッサ構成（分散共有型マルチプロセッサ構成ともいう。）であってもよい。
【００２０】
第一演算回路１Ａは、各種タスクを実行するための電子回路であり、プロセッサコア１０Ａ、ＲＯＭ１１Ａ、ＲＡＭ１２Ａ及びＩＯ(Input/Output)回路１３Ａから構成される。
【００２１】
第一演算回路１Ａは、ＲＯＭ１１Ａに記憶された、各タスクに対応するプログラムをＲＡＭ１２Ａにロードして各種タスクをプロセッサコア１０Ａに実行させ、ＩＯ回路１３Ａ及び各種入出力回路を介して各種制御装置（例えば、エンジン回転制御装置がある。）との間で制御信号を送受信し、各種制御装置を制御する。
【００２２】
第二演算回路１Ｂは、第一演算回路１Ａと同様に、プロセッサコア１０Ｂ、ＲＯＭ１１Ｂ、ＲＡＭ１２Ｂ及びＩＯ回路１３Ｂから構成され、各種制御装置との間で制御信号を送受信し、第一演算回路１Ａが制御する制御装置との間でも制御信号の送受信ができるようにする。
【００２３】
なお、第一演算回路１Ａ及び第二演算回路１Ｂは、それぞれ、実行許否判定回路４に接続される。
【００２４】
第一タスクレジスタ２Ａ及び第二タスクレジスタ２Ｂは、各演算回路が現在実行しているタスクを管理するためのレジスタであり、例えば、実行中のタスクを識別するためのタスクＩＤ（識別番号）を記憶する。なお、第一タスクレジスタ２Ａ及び第二タスクレジスタ２Ｂは、それぞれ、実行許否判定回路４に接続される。
【００２５】
本実施例において、第一タスクレジスタ２Ａは、第一演算回路１Ａのプロセッサコア１０Ａが現在実行しているタスクのタスクＩＤを記憶し、第二タスクレジスタ２Ｂは、第二演算回路１Ｂのプロセッサコア１０Ｂが現在実行しているタスクのタスクＩＤを記憶する。
【００２６】
なお、マルチプロセッサシステム１００は、共通のタスクレジスタが第一演算回路１Ａ及び第二演算回路１Ｂにおいて現在実行されているタスクのタスクＩＤを記憶するように構成されてもよい。
【００２７】
また、第一タスクレジスタ２Ａ及び第二タスクレジスタ２Ｂは、第一演算回路１Ａ及び第二演算回路１Ｂが現在実行しているタスクのタスクＩＤを記憶するが、第一演算回路１Ａ及び第二演算回路１Ｂが実行する予定であるタスクのタスクＩＤを記憶するようにしてもよい。
【００２８】
干渉情報テーブル３は、干渉タスクに関する情報を登録したテーブルであり、例えば、プロセッサコア１０Ａ及びプロセッサコア１０Ｂの少なくとも一方で同時期に重複して実行（以下、「並列実行」とする。）することができないタスクの組み合わせをタスク干渉情報として記憶する。なお、干渉情報テーブル３は、ＮＶＲＡＭやＲＯＭ等の不揮発性記憶媒体に格納され、実行許否判定回路４に接続される。
【００２９】
「干渉タスク」とは、共用する変数の値を書き換えるおそれがあったり、利用するＩＯ回路が重複したり、処理負荷が過大になってしまったりといった理由により、実行が予定されるタスク（以下、「実行予定タスク」という。）との並列実行が禁止されるタスクをいい、実行予定タスクに対し、その実行予定タスク自身が干渉タスクとなる場合もあり、或いは、実行予定タスクに対し、その実行予定タスクが属する演算回路とは異なる演算回路に属するタスク、又は、その実行予定タスクが属する演算回路と同じ演算回路に属するタスクが干渉タスクとなる場合もある。
【００３０】
図２は、干渉情報テーブル３の構成例を示す図であり、例えば、第一演算回路１Ａに属するタスク（第一演算回路１ＡのＲＯＭ１１Ａに対応プログラム（以下、「タスクプログラム」という。）が格納されたタスクをいう。）αは、タスクα自身、並びに、第一演算回路１Ａに属するタスクβ及びγが何れかの演算回路で実行されている間、並列実行できないことを示す。
【００３１】
また、図２の干渉情報テーブル３は、第一演算回路１Ａに属するタスクα及びβが何れかの演算回路で実行されている間、タスクβを並列実行できないことを示し、第一演算回路１Ａに属するタスクαが何れかの演算回路で実行されている間、タスクγを並列実行できないことを示す。この場合、何れかの演算回路でタスクγが実行されている場合であっても、タスクγ自身（別途生成されるタスクγをいう。）は、並列実行が可能である。
【００３２】
また、図２の干渉情報テーブル３は、第二演算回路１Ｂに属するタスクδは、干渉するタスクが存在せず、如何なる場合においても並列実行が可能であることを示す。
【００３３】
実行許否判定回路４は、一の演算回路におけるプロセッサコアによる、他の演算回路におけるリソースを用いた、他の演算回路に属するタスクの実行を許可するか否かを判定する回路である。
【００３４】
ここで、「リソース」とは、演算回路が稼動するために必要なハードウェア及びソフトウェアの環境をいい、例えば、ＲＯＭ、ＲＡＭ、ＩＯ回路、プログラム、専用演算回路（グラフィックアクセラレータ、ＤＳＰ(Digital  Signal  Processor)等がある。）等がある。
【００３５】
例えば、実行許否判定回路４は、第二タスクレジスタ２Ｂ及び干渉情報テーブル３を参照することによりプロセッサコア１０Ｂで実行中のタスクとそのタスクに干渉する干渉タスクとを認識し、第一演算回路１Ａのプロセッサコア１０Ａによる、第二演算回路１Ｂのリソース（ＲＯＭ１１Ｂ、ＲＡＭ１２Ｂ及びＩＯ回路１３Ｂ）を用いた、第二演算回路１ＢのＲＯＭ１１Ｂにタスクプログラムが格納されたタスクの実行を許可するか否かを判定する。
【００３６】
設定レジスタ５０〜５５は、実行許否判定回路４からの制御信号に基づいて、一の演算回路におけるプロセッサコアによる、他の演算回路におけるリソースへのアクセスを管理する（例えば、ハードウェアによりアクセス許可、又は、アクセス禁止を切り替えることをいう。）ハードウェアである。なお、各設定レジスタは、実行許否判定回路４に接続される。
【００３７】
図１において、設定レジスタ５０は、第一演算回路１Ａにおけるプロセッサコア１０Ａによる、第二演算回路１ＢにおけるＲＯＭ１１Ｂからのタスクプログラムの呼び出しを管理し、設定レジスタ５１は、プロセッサコア１０ＢによるＲＯＭ１１Ａからのタスクプログラムの呼び出しを管理する。
【００３８】
また、設定レジスタ５２は、プロセッサコア１０ＡによるＲＡＭ１２Ｂに対する読み書きを管理し、設定レジスタ５３は、プロセッサコア１０ＢによるＲＡＭ１２Ａに対する読み書きを管理する。
【００３９】
さらに、設定レジスタ５４は、プロセッサコア１０ＡによるＩＯ回路１３Ｂの利用を管理し、設定レジスタ５５は、プロセッサコア１０ＢによるＩＯ回路１３Ａの利用を管理する。
【００４０】
実行許否判定回路４は、第一演算回路１Ａにおいてタスクδの生成が要求された場合、図２に示す干渉情報テーブル３を参照することでタスクδの並列実行が禁止されていないと判定し、設定レジスタ５０、５２及び５４に制御信号を送信して、プロセッサコア１０ＡによるＲＯＭ１１Ｂからのタスクδに対応するタスクプログラムの呼び出しを許可し、プロセッサコア１０ＡによるＲＡＭ１２Ｂに対する読み書きを許可し、かつ、プロセッサコア１０ＡによるＩＯ回路１３Ｂの利用を許可する。
【００４１】
次に、図３を参照しながら、マルチプロセッサシステム１００が第一演算回路１Ａにおけるプロセッサコア１０Ａに第二演算回路１Ｂにおけるリソースをアクセスさせて第二演算回路１Ｂに属するタスクを実行させる処理について説明する。なお、図３は、上記処理の流れを示すフローチャートである。
【００４２】
最初に、実行許否判定回路４は、自コア（第一演算回路１Ａにおけるプロセッサコア１０Ａ）でタスクεの生成要求が発生したことを検知すると（ステップＳ１）、他コア（第二演算回路１Ｂにおけるプロセッサコア１０Ｂ）に対応するタスクレジスタ（第二タスクレジスタ２Ｂ）を参照して他コアで実行されているタスクを確認する（ステップＳ２）。
【００４３】
次に、実行許否判定回路４は、干渉情報テーブル３を参照してタスクεに対する干渉タスクを取得し（ステップＳ３）、他コア（プロセッサコア１０Ｂ）が干渉タスクを実行中であるか否かを判定する（ステップＳ４）。
【００４４】
他コア（プロセッサコア１０Ｂ）が干渉タスクを実行していると判定した場合（ステップＳ４のＹＥＳ）、実行許否判定回路４は、後述の待機処理を実行した後（ステップＳ５）、ステップＳ２乃至ステップＳ４を再度実行し、他コアが干渉タスクを実行していないと判定するまでこれら処理を繰り返す。
【００４５】
他コア（プロセッサコア１０Ｂ）が干渉タスクを実行していないと判定した場合（ステップＳ４のＮＯ）、実行許否判定回路４は、自コア（プロセッサコア１０Ａ）に対応するタスクレジスタ（第一タスクレジスタ２Ａ）にタスクεを識別するためのタスクＩＤを記憶する（ステップＳ６）。
【００４６】
その後、実行許否判定回路４は、干渉情報テーブル３を参照してタスクεが何れのプロセッサコアに属するかを判定する（ステップＳ７）。
【００４７】
タスクεが他コアに属する場合（第二演算回路１ＢにおけるＲＯＭ１１Ｂにタスクεに対応するタスクプログラムが格納されている場合をいう。）（ステップＳ７のＹＥＳ）、実行許否判定回路４は、他コアのリソース（第二演算回路１ＢにおけるＲＯＭ１１Ｂ、ＲＡＭ１２Ｂ及びＩＯ回路１３Ｂをいう。）を自コア（プロセッサコア１０Ａ）がアクセスできるよう、設定レジスタ（この場合、設定レジスタ５０、５２及び５４）に制御信号を送信し、他コアのリソースを自コアに開放する（ステップＳ８）。
【００４８】
その後、実行許否判定回路４は、自コア（プロセッサコア１０Ａ）に、他コア（プロセッサコア１０Ｂ）のリソースをアクセスさせ（ＲＯＭ１１Ｂからタスクεに対応するタスクプログラムを読み出させ、ＲＡＭ１２Ｂにそのタスクプログラムをロードさせることをいう。）、他コアに属するタスクεを実行させる（ステップＳ９）。
【００４９】
タスクεの実行を完了させると、実行許否判定回路４は、他コア（プロセッサコア１０Ｂ）のリソース（第二演算回路１ＢにおけるＲＯＭ１１Ｂ、ＲＡＭ１２Ｂ及びＩＯ回路１３Ｂをいう。）を自コア（プロセッサコア１０Ａ）がアクセスできないよう、設定レジスタ（設定レジスタ５０、５２及び５４）に再度制御信号を送信し、自コアに対する他コアのリソースの開放を中止して（ステップＳ１０）、処理を終了させる。
【００５０】
一方、タスクεが自コアに属する場合（第一演算回路１ＡにおけるＲＯＭ１１Ａにタスクεに対応するタスクプログラムが格納されている場合をいう。）（ステップＳ７のＮＯ）、実行許否判定回路４は、自コアに、自コアのリソースを利用させ（ＲＯＭ１１Ａからタスクεに対応するタスクプログラムを読み出させ、ＲＡＭ１２Ａにそのタスクプログラムをロードさせることをいう。）、自コアに属するタスクεを実行させて（ステップＳ１１）、処理を終了させる。
【００５１】
次に、図４を参照しながら、実行許否判定回路４による待機処理について説明する。なお、図４は、待機処理の流れを示すフローチャートである。
【００５２】
最初に、実行許否判定回路４は、干渉情報テーブル３を参照して、他コア（プロセッサコア１０Ｂ）が実行する干渉タスクが他コアに属するか否か（第二演算回路１ＢのＲＯＭ１１Ｂに干渉タスクに対応するタスクプログラムが格納されているか否か）を判定する（ステップＳ２０）。
【００５３】
他コア（プロセッサコア１０Ｂ）が実行する干渉タスクが他コアに属すると判定した場合（ステップＳ２０のＹＥＳ）、実行許否判定回路４は、自コア（プロセッサコア１０Ａ）を待機状態にし（ステップＳ２１）、他コアにおける干渉タスクが終了するまで自コアを待機させるようにして待機処理を終了させる。
【００５４】
なお、自コア（プロセッサコア１０Ａ）は、実行許否判定回路４により待機状態とされた場合であっても、優先度のより高いタスクの実行が要求された場合には、待機状態を解除し、そのタスクを優先的に実行するようにしてもよい。
【００５５】
一方、他コア（プロセッサコア１０Ｂ）が実行する干渉タスクが自コアに属する（第一演算回路１ＡのＲＯＭ１１Ａに干渉タスクに対応するタスクプログラムが格納されている）と判定した場合（ステップＳ２０のＮＯ）、実行許否判定回路４は、他コア（プロセッサコア１０Ｂ）における干渉タスクを中止（これまでの処理をキャンセルして即座に干渉タスクを終了させることをいう。）させた上で他コアを待機状態にし（ステップＳ２２）、自コアのリソース（第一演算回路１ＡにおけるＲＯＭ１１Ａ、ＲＡＭ１２Ａ及びＩＯ回路１３Ａをいう。）を他コアがアクセスできないよう、設定レジスタ（設定レジスタ５１、５３及び５５）に制御信号を送信し、他コアに対する自コアのリソースの開放を中止して（ステップＳ２３）、待機処理を終了させる。
【００５６】
なお、実行許否判定回路４は、他コア（プロセッサコア１０Ｂ）が実行する干渉タスクが自コア（プロセッサコア１０Ａ）に属すると判定した場合に、他コアにおける干渉タスクを中止させるのではなく、他コアにおける干渉タスクを中断（これまでの処理を保存して再開可能に干渉タスクを終了させることをいう。）させた上で他コアを待機状態にするようにしてもよい。
【００５７】
また、上述の実施例において、実行許否判定回路４は、干渉タスクが属するプロセッサコアを優先させるために、干渉タスクが属していないプロセッサコアにおける干渉タスクの実行を中止させたが、干渉タスクの種類に応じて優先させるプロセッサコアを決定するようにしてもよい。
【００５８】
以上の構成により、マルチプロセッサシステム１００は、従来ならば他プロセッサコアに代行を依頼していたタスクを、ＯＳを介することなく他プロセッサコアのリソースを利用しながら自プロセッサコアで実行できるようにするので、自プロセッサコアを無駄に待機させたり、他プロセッサコアの処理を中止又は中断させたり、或いは、ＯＳを介してプロセッサコア間でタスクを受け渡したりすることによるオーバーヘッドの増大を防止し、システム全体の処理効率を向上させることができる。
【００５９】
また、マルチプロセッサシステム１００は、第一タスクレジスタ２Ａ、第二タスクレジスタ２Ｂを参照して各演算回路が実行中のタスクを把握した上で、設定レジスタによりハードウェア的にタスク間の相互干渉を防止するので、変数の値が同時期に書き込まれてしまうことによりその値、ひいては、タスクの処理が破壊されてしまうのを確実に防止することができる。
【００６０】
また、マルチプロセッサシステム１００は、干渉情報テーブル３を参照して各演算回路で実行しようとするタスクとその干渉タスクを把握した上で、設定レジスタによりハードウェア的にタスク間の相互干渉を防止するので、同一タスクの並列実行による干渉だけでなく、変数を共用するような関連タスクの並列実行による干渉をも防止することができる。
【００６１】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなしに上述した実施例に種々の変形及び置換を加えることができる。
【００６２】
例えば、上述の実施例では、タスク単位での干渉を防止しながら複数のプロセッサのそれぞれが有するリソースを相互に利用させて処理の効率化を図るが、アプリケーションソフトウェア単位で干渉を防止しながら複数のプロセッサのそれぞれが有するリソースを相互に利用させて処理の効率化を図るようにしてもよい。
【００６３】
これにより、マルチプロセッサシステム１００は、タスク単位での管理に比べ、より簡易な構成により処理の効率化を図ることができる。
【００６４】
また、上述の実施例において、マルチプロセッサシステム１００は、２セットの演算回路を備えるが、３セット以上の演算回路を備え、一又は複数の実行許否判定回路４により、各演算回路のリソースを各演算回路のプロセッサコアに相互に利用させるようにしてもよい。
【図面の簡単な説明】
【００６５】
【図１】本発明に係るマルチプロセッサシステムの構成例を示す図である。
【図２】干渉情報テーブルの構成例を示す図である。
【図３】マルチプロセッサシステムが第一演算回路におけるプロセッサコアに第二演算回路におけるリソースをアクセスさせて第二演算回路に属するタスクを実行させる処理の流れを示すフローチャートである。
【図４】実行許否判定回路による待機処理の流れを示すフローチャートである。
【符号の説明】
【００６６】
１Ａ、１Ｂ  演算回路
２Ａ、２Ｂ  タスクレジスタ
３      干渉情報テーブル
４      実行許否判定回路
１０Ａ、１０Ｂ  プロセッサコア
１１Ａ、１１Ｂ  ＲＯＭ
１２Ａ、１２Ｂ  ＲＡＭ
１３Ａ、１３Ｂ  ＩＯ回路
５０〜５５  設定レジスタ
１００  マルチプロセッサシステム
【図１】
2008176646.tif 000003
【図２】
2008176646.tif 000004
【図３】
2008176646.tif 000005
【図４】
2008176646.tif 000006