(57)【要約】  処理結果が監視される被監視プロセッサコアと、被監視プロセッサコアを監視するための処理を行うことが可能な二以上の監視プロセッサコアを含む監視プロセッサコア群と、監視プロセッサコア群の処理負荷を評価する評価手段と、評価手段により監視プロセッサコア群の処理負荷が低いと評価された場合に、被監視プロセッサコアを監視するための処理を監視プロセッサコア群で分散して行わせ、評価手段により監視プロセッサコア群の処理負荷が高いと評価された場合に、被監視プロセッサコアを監視するための処理を監視プロセッサコア群のうち相対的に優先度の低い処理を行っている監視プロセッサコアに行わせる制御手段と、を備えるマルチコア・プロセッサ。
2013088519.tif 000002
【特許請求の範囲】
【請求項１】
処理結果が監視される被監視プロセッサコアと、
前記被監視プロセッサコアを監視するための処理を行うことが可能な二以上の監視プロセッサコアを含む監視プロセッサコア群と、
前記監視プロセッサコア群の処理負荷を評価する評価手段と、
前記評価手段により前記監視プロセッサコア群の処理負荷が低いと評価された場合に、前記被監視プロセッサコアを監視するための処理を前記監視プロセッサコア群で分散して行わせ、前記評価手段により監視プロセッサコア群の処理負荷が高いと評価された場合に、前記被監視プロセッサコアを監視するための処理を前記監視プロセッサコア群のうち相対的に優先度の低い処理を行っている監視プロセッサコアに行わせる制御手段と、
を備えるマルチコア・プロセッサ。
【請求項２】
請求項１に記載のマルチコア・プロセッサであって、
前記制御手段は、前記評価手段により監視プロセッサコア群の処理負荷が高いと評価された場合に、前記被監視プロセッサコアを監視するための処理を前記監視プロセッサコア群のうち最も優先度の低い処理を行っている一の監視プロセッサコアに行わせる手段である、
マルチコア・プロセッサ。
【請求項３】
請求項１に記載のマルチコア・プロセッサであって、
前記評価手段は、前記監視プロセッサコア群におけるＣＰＵ使用率の平均値が基準値を超える場合に、前記監視プロセッサコア群の処理負荷が高いと評価する手段である、
マルチコア・プロセッサ。
【請求項４】
請求項１に記載のマルチコア・プロセッサであって、
前記被監視プロセッサコアを監視するための処理は、前記被監視プロセッサコアと同一の処理を行って、該処理の結果を前記被監視プロセッサコアの処理結果と比較する処理である、
マルチコア・プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアを有し、それぞれのプロセッサコアが独立した処理を実行可能なマルチコア・プロセッサに関する。
【背景技術】
【０００２】
従来、一パッケージ内に複数のプロセッサコア（ＣＰＵコア）を封入し、各プロセッサコアが並行・独立して処理を行うことが可能なマルチコア・プロセッサが知られている。マルチコア・プロセッサは、並行処理が可能であるために広く普及しつつあり、その多機能性から移動体等の制御装置として好適に用いられる。【０００３】
ところで、コンピュータが移動体等の制御装置として用いられる場合、その処理結果について、高いレベルでの信頼性が要求される。【０００４】
特許文献１には、複数のプロセッサコアを内蔵するマルチコア・プロセッサについて記載されている。このマルチコア・プロセッサでは、内蔵するプロセッサコア間で同じ演算を行い、処理結果を比較することにより、自らの正常性を判断する自己診断を行い、自己診断で正常と判断されているときに操舵制御を実行している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−０２９１７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記信頼性を向上させるための技術においては、比較のためにのみ同じ処理を行うという冗長な構成を有しているため、ＣＰＵリソースを多く消費し、コストに見合った性能をプロセッサが発揮できないという課題が存在する。【０００７】
本発明はこのような課題を解決するためのものであり、処理結果の信頼性を維持しつつ、各プロセッサコアが十分な性能を発揮することが可能なマルチコア・プロセッサを提供することを、主たる目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するための本発明の一態様は、
処理結果が監視される被監視プロセッサコアと、
前記被監視プロセッサコアを監視するための処理を行うことが可能な二以上の監視プロセッサコアを含む監視プロセッサコア群と、
前記監視プロセッサコア群の処理負荷を評価する評価手段と、
前記評価手段により前記監視プロセッサコア群の処理負荷が低いと評価された場合に、前記被監視プロセッサコアを監視するための処理を前記監視プロセッサコア群で分散して行わせ、前記評価手段により監視プロセッサコア群の処理負荷が高いと評価された場合に、前記被監視プロセッサコアを監視するための処理を前記監視プロセッサコア群のうち相対的に優先度の低い処理を行っている監視プロセッサコアに行わせる制御手段と、
を備えるマルチコア・プロセッサである。【０００９】
この本発明の一態様によれば、評価手段により監視プロセッサコア群の処理負荷が低いと評価された場合に、被監視プロセッサコアを監視するための処理を監視プロセッサコア群で分散して行わせ、評価手段により監視プロセッサコア群の処理負荷が高いと評価された場合に、被監視プロセッサコアを監視するための処理を監視プロセッサコア群のうち相対的に優先度の低い処理を行っている監視プロセッサコアに行わせるため、処理結果の信頼性を維持しつつ、各プロセッサコアが十分な性能を発揮することが可能なマルチコア・プロセッサを提供することができる。【００１０】
本発明の一態様において、
前記制御手段は、例えば、前記評価手段により監視プロセッサコア群の処理負荷が高いと評価された場合に、前記被監視プロセッサコアを監視するための処理を前記監視プロセッサコア群のうち最も優先度の低い処理を行っている一の監視プロセッサコアに行わせる手段である。【００１１】
また、本発明の一態様において、
前記評価手段は、例えば、前記監視プロセッサコア群におけるＣＰＵ使用率の平均値が基準値を超える場合に、前記監視プロセッサコア群の処理負荷が高いと評価する手段である。【００１２】
また、本発明の一態様において、
前記被監視プロセッサコアを監視するための処理は、例えば、前記被監視プロセッサコアと同一の処理を行って、該処理の結果を前記被監視プロセッサコアの処理結果と比較する処理である。
【発明の効果】
【００１３】
本発明によれば、処理結果の信頼性を維持しつつ、各プロセッサコアが十分な性能を発揮することが可能なマルチコア・プロセッサを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施例に係るマルチコア・プロセッサ１のシステム構成例である。
【図２】優先度テーブル３２Ａのデータ内容の一例である。
【図３】タスクスケジューラ１２Ａにより決定されたタスクスケジュールに従って、各プロセッサコアがタスクを実行する様子を示す図である。
【図４】タスクの優先度と、タスクスケジューラ１２Ａによる制御の対応表である。
【図５】タスクスケジューラ１２Ａにより実行される処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００１６】
以下、図面を参照し、本発明の一実施例に係るマルチコア・プロセッサ１について説明する。本実施例のマルチコア・プロセッサ１は、例えば車両等の移動体に搭載された制御装置に、好適に適用される。【００１７】
［構成］
図１は、本発明の第１実施例に係るマルチコア・プロセッサ１のシステム構成例である。マルチコア・プロセッサ１は、主要な構成として、プログラムメモリ１０と、プロセッサコア（ＣＰＵコア）２０＃１、２０＃２、２０＃３、２０＃４と、共有メモリ３０と、を備える。以下、必要に応じてプロセッサコア２０＃１、２０＃２、２０＃３、２０＃４を、「各プロセッサコア」と総称する。なお、本実施例ではプロセッサコアの個数を４個としたが、３以上の如何なる個数のプロセッサコアを備えてもよい。【００１８】
プログラムメモリ１０は、例えば、ＲＯＭ（Read  Only  Memory）、フラッシュＲＯＭ、ＥＥＰＲＯＭ（Electrically  Erasable  and  Programmable  Read  Only  Memory）、ＨＤＤ（Hard  Disk  Drive）等の不揮発性メモリである。プログラムメモリ１０は、各プロセッサコアが実行するプログラムを格納している。【００１９】
各プロセッサコアが実行するプログラムには、オペレーティングシステム１２と、アプリケーションプログラム１４が含まれる。プログラムメモリ１０は、各プロセッサコアから入力されるアドレスに格納された命令を、命令フェッチバス１５を介して各プロセッサコアに出力する。【００２０】
オペレーティングシステム１２は、タスクスケジューラ１２Ａと、処理負荷評価部１２Ｂと、を含む。オペレーティングシステム１２は、例えば各プロセッサコアのうち一のプロセッサコア（例えばプロセッサコア２０＃１）によって実行される。【００２１】
アプリケーションプログラム１４は、例えばタスクＡ、タスクＢ、タスクＣ、タスクＤと分類される。タスクとは、ある程度の機能的まとまりを有する命令群である。本実施例では、タスクＡをプロセッサコア２０＃１が実行し、タスクＢをプロセッサコア２０＃２が実行し、タスクＣをプロセッサコア２０＃３が実行し、タスクＤをプロセッサコア２０＃４が実行するように割り当てられる。【００２２】
タスクスケジューラ１２Ａは、上記のようなタスクの割当、及び処理スケジュールの決定を、各プロセッサコアについて実行する。【００２３】
処理負荷評価部１２Ｂは、後述するように、監視プロセッサコアに該当するプロセッサコア２０＃２〜２０＃４の処理負荷が高いか低いかを評価する。プロセッサコア２０＃２〜２０＃４の処理負荷は、種々の手法によって評価してよい。処理負荷評価部１２Ｂは、例えば、プロセッサコア２０＃２〜２０＃４のＣＰＵ使用率をそれぞれ算出し、その平均値が基準値（例えば８０［％］等）を超える場合にプロセッサコア２０＃２〜２０＃４の処理負荷が高いと評価し、基準値以下である場合にプロセッサコア２０＃２〜２０＃４の処理負荷が低いと評価する。ＣＰＵ使用率とは、ある規定時間内において、実行中のソフトウエアがプロセッサコアを占有している時間の割合である。なお、タスクＢ、タスクＣ、タスクＤは、通常時におけるＣＰＵ使用率が、上記基準値以下となるように、予め調整されていると好適である。この結果、通常時には、後述する「分散監視モード」が採用され、処理負荷が高くなった場合にのみ「集中監視モード」が採用されることになる。【００２４】
タスクＡ〜Ｄには、本実施例のマルチコア・プロセッサが車両に搭載された場合、例えばエンジンの点火時期制御のための処理、スロットル開度制御のための処理、スタータモータ制御のための処理、ブレーキ制御のための処理、ステアリング制御のための処理、ナビゲーション制御のための処理、その他種々の処理が該当する。【００２５】
各プロセッサコアは、例えば、命令フェッチユニット、ＡＬＵ（Arithmetic Logic Unit）、ＭＵＬ（乗算器）、ＤＩＶ（除算器）、ＬＳＵ（Load Store Unit）その他を含む演算ユニット、レジスタやキャッシュメモリ等の内部メモリ、プログラムカウンタ、ローカル割り込みコントローラ等を有するプロセッサコアである。【００２６】
なお、マルチコア・プロセッサ１は、各プロセッサコアが同等の性能を有するＳＭＰ（Symmetry  Multi-core  Processor）であることが望ましい。後述する「集中監視モード」では、被監視プロセッサコアと一の監視プロセッサコアが並行して同一の演算を行う場面が生じるからである。【００２７】
メモリ３０は、例えばＲＡＭ（Random Access Memory）であり、データバス３５を介して各プロセッサコアとの間でデータの送受信を行うことができる。【００２８】
メモリ３０には、オペレーティングシステム１２によって使用されるＯＳ使用領域３２と、アプリケーションプログラム１４によって使用されるアプリ使用領域３４が設定されている。ＯＳ使用領域３２には、タスクの優先度が規定された優先度テーブル３２Ａ等が格納される。優先度テーブル３２Ａは、例えばマルチコア・プロセッサ１の起動時にＲＯＭ等から読み出され、メモリ３０の所定領域に書き込まれて使用される。【００２９】
図２は、優先度テーブル３２Ａのデータ内容の一例である。本実施例では、タスクＡが最も優先度の高い「高」に、タスクＢ、Ｃが中間程度の優先度である「中」に、タスクＤが最も優先度の低い「低」に、それぞれ設定されている。【００３０】
アプリ使用領域３４には、タスク別使用領域３４Ａ〜３４Ｄが設けられており、これらはタスクＡ、タスクＢ、タスクＣ、タスクＤによって使用される。【００３１】
［監視機能］
本実施例のマルチコア・プロセッサ１では、最も優先度の高い「高」が設定されているタスクについて、当該タスクを実行しているプロセッサコアが正常に作動しているかどうかを監視するための処理を、他のプロセッサコアによって行う。本実施例では上記のようにタスクＡを実行しているプロセッサコア２０＃１が監視対象である被監視プロセッサコアに該当し、他のプロセッサコア２０＃２〜２０＃４が監視のための処理を行う監視プロセッサコアに該当する。【００３２】
具体的には、プロセッサコア２０＃２〜２０＃４が、プロセッサコア２０＃１と同一の処理を行って、自己の処理結果をプロセッサコア２０＃１の処理結果と比較することにより、プロセッサコア２０＃１が正常に作動しているかどうかを監視する。以下、このような処理を「監視処理」と称する。【００３３】
監視処理を行うためには、プロセッサコア２０＃１が処理対象とするオペランドの共有と、プロセッサコア２０＃１の処理結果を取得することが必要となる。本実施例では、プロセッサコア２０＃１が演算対象とするオペランド、及びプロセッサコア２０＃１の処理結果は、タスク別使用領域３４Ａに書き込まれる。そして、プロセッサコア２０＃２〜２０＃４は、タスク別使用領域３４Ａからのデータ読み込みを（一時的に、或いは定常的に）許可される。【００３４】
監視処理を行うための指示は、タスクスケジューラ１２Ａにより行われる。タスクスケジューラ１２Ａは、プロセッサコア２０＃２〜２０＃４が本来実行すべきタスクＢ〜Ｄとの調整を行いつつ、監視処理を実行するように、プロセッサコア２０＃２〜２０＃４の実行タスクを決定する。【００３５】
図３は、タスクスケジューラ１２Ａにより決定されたタスクスケジュールに従って、各プロセッサコアがタスクを実行する様子を示す図である。図中、左側部分は、処理負荷評価部１２Ｂにより評価されたプロセッサコア２０＃２〜２０＃４の処理負荷が低い場合（負荷低下時）のタスク処理例であり、右側部分は、処理負荷が高い場合（負荷上昇時）のタスク処理例である。【００３６】
図示するように、プロセッサコア２０＃２〜２０＃４の処理負荷が低い場合には、プロセッサコア２０＃２〜２０＃４は、それぞれに割り当てられたタスクＢ、Ｃ、Ｄに係る処理Ｂ、Ｃ、Ｄの合間に、「タスクＡに含まれる処理Ａ−１、Ａ−２、Ａ−３と同一の処理（以下、「ミラー処理」と称する）を行うと共に自己の処理結果をプロセッサコア２０＃１による処理結果と比較する比較処理を行う」監視処理を行うように、タスクスケジューラ１２Ａによって指示される。すなわち、タスクスケジューラ１２Ａは、プロセッサコア２０＃２〜２０＃４の処理負荷が低い場合には、監視処理をプロセッサコア２０＃２〜２０＃４で分散して行わせる。以下、係る状態を「分散監視モード」と称する。【００３７】
係る比較処理の結果は、オペレーティングシステム１２に返される。オペレーティングシステム１２は、プロセッサコア２０＃１による処理結果と、プロセッサコア２０＃２〜２０＃４による処理結果が異なる旨の情報を受け取った場合には、（１）プロセッサコア２０＃１に再度の処理を行わせる、（２）タスクＡをリセットして初期状態から開始する、（３）他のプロセッサコアにタスクＡの代替処理を行わせる、等のエラー処理を実行する。エラー処理の内容については、上記処理結果が異なる旨の情報を受け取った回数等に応じて、段階的に変更すると好適である。【００３８】
なお、「比較処理」については、プロセッサコア２０＃２〜２０＃４がそれぞれ実行するのではなく、オペレーティングシステム１２が一括して行ってもよい。この場合、「監視処理」は、「比較処理」を含まない。【００３９】
ここで、マルチコア・プロセッサ１が、前述のように、車両等の移動体に搭載された制御装置に適用された場合、タスクＡ〜Ｄは、順序性の制約が厳しく、分散処理が有効でない処理であることが多い。すなわち、各プロセッサコアによるタスク処理は、連続して同一のプロセッサコアにより実行される必要があるため、家庭用のパーソナルコンピュータ等と比較すると、まとまったアイドル時間が生じやすい。従って、プロセッサコア２０＃２〜２０＃４が、タスクＢ、Ｃ、Ｄに係る処理Ｂ、Ｃ、Ｄの合間に監視処理を行うことによる性能低下（本来実行すべきタスクＢ、Ｃ、Ｄの処理遅延）は、大きいものとはならない。【００４０】
一方、プロセッサコア２０＃２〜２０＃４の処理負荷が高い場合には、タスクスケジューラ１２Ａは、相対的に優先度の低いタスクを実行しているプロセッサコアが、集中的にミラー処理及び比較処理を行うように指示する。以下、係る状態を「集中監視モード」と称する。【００４１】
ここで、「集中的に」とは、分散監視モードと比較してミラー処理及び比較処理の配分が偏った状態をいう。例えば、ミラー処理及び比較処理を行うプロセッサコアの数が分散監視モードよりも少なくなった状態をいうものであってもよいし、プロセッサコア２０＃２＃２、２０＃３、２０＃４が、ある期間内にミラー処理をそれぞれ［５タスク、５タスク分、５タスク分］と均等に近い状態で配分されて行っていたのを、［２タスク分、２タスク分、１１タスク分］のように配分変更することをいうものであってもよい。後者の場合、配分が増加するプロセッサコアは、相対的に優先度の低いタスクを実行しているプロセッサコアとする。【００４２】
集中監視モードの一例としては、例えば、最も優先度の低いタスクＤを実行しているプロセッサコア２０＃４が、「タスクＡに含まれる処理Ａ−１、Ａ−２、Ａ−３と同一の処理を集中的に（この場合、一括して）行い、自己の処理結果をプロセッサコア２０＃１による処理結果と比較する」処理を行うように、タスクスケジューラ１２Ａによって指示される。この場合、タスクＤに係る処理Ｄの実行は停止させてもよいし、ミラー処理及び比較処理に係る処理負荷が小さい場合には、プロセッサコア２０＃１を監視するための処理の合間に実行させてもよい。【００４３】
なお、集中監視モードにおいても、「比較処理」はプロセッサコア２０＃４が実行するのではなく、オペレーティングシステム１２が実行してもよい。また、上記のように、集中監視モードにおいて、監視処理を行うプロセッサコアは一個に限らず、相対的に優先度の低いタスクを実行している複数のプロセッサコアが監視処理を行ってもよい。例えば、プロセッサコア２０＃３、＃４が相対的に優先度の低いタスクを実行している場合、プロセッサコア２０＃２、２０＃３、２０＃４がある期間内にミラー処理をそれぞれ［５タスク、５タスク分、５タスク分］と配分されて行っていたのを、［０タスク分、７タスク分、８タスク分］のように配分変更してもよい。【００４４】
逆に、優先度の最も低いタスクを実行しているプロセッサコアが複数存在し、集中監視モードにおける監視処理を行うプロセッサコアを一個と定める場合、コアＩＤ等に従って任意に監視処理を行うプロセッサコアを選択してよい。【００４５】
係る制御によって、プロセッサコア２０＃１の処理結果に対する信頼性を維持しつつ、プロセッサコア２０＃２〜２０＃４が十分な性能を発揮することができる。【００４６】
すなわち、プロセッサコア２０＃２〜２０＃４の処理負荷が低い場合には、監視処理をプロセッサコア２０＃２〜２０＃４で分散して行わせるため、監視処理を行うことによる性能低下は、大きいものとはならない。【００４７】
また、プロセッサコア２０＃２〜２０＃４の処理負荷が高い場合には、最も優先度の低いタスクＤを実行しているプロセッサコア２０＃４に、監視処理を集中的に行わせるため、他の優先度が高いタスクに対しては、プロセッサコア２０＃１を監視するための処理負担が影響を及ぼさない。更に、プロセッサコア２０＃４を原則として監視処理の専用プロセッサにすることによって、監視処理の信頼性を高く維持することができる。【００４８】
従って、いずれの場合にも、プロセッサコア２０＃１の処理結果に対する信頼性を維持しつつ、監視処理に起因した処理負担の増大を小さく留めることができる。【００４９】
図４は、上記説明したタスクの優先度と、タスクスケジューラ１２Ａによる制御の対応表である。タスクスケジューラ１２Ａは、図示するような規則に従い、監視処理の割当を決定する。【００５０】
［処理フロー］
図５は、タスクスケジューラ１２Ａにより実行される処理の流れを示すフローチャートである。本フローは、例えば所定時間毎に繰り返し実行される。【００５１】
まず、タスクスケジューラ１２Ａは、処理負荷評価部１２Ｂによる直近の評価を取得する（Ｓ１００）。【００５２】
次に、タスクスケジューラ１２Ａは、処理負荷評価部１２Ｂによりプロセッサコア２０＃２〜２０＃４の処理負荷が低いと評価されたか否かを判定する（Ｓ１０２）。【００５３】
処理負荷評価部１２Ｂによりプロセッサコア２０＃２〜２０＃４の処理負荷が低いと評価された場合は、現在の監視モードが分散監視モードであるか否かを判定する（Ｓ１０４）。現在の監視モードが分散監視モードであると判定した場合は、何も処理を行わず、本フローを終了する。【００５４】
一方、タスクスケジューラ１２Ａは、Ｓ１０４において現在の監視モードが集中監視モードであると判定した場合は、集中監視モードから分散監視モードに切替え、タスクスケジュールの再編成を行う（Ｓ１０６）。【００５５】
また、タスクスケジューラ１２Ａは、処理負荷評価部１２Ｂによりプロセッサコア２０＃２〜２０＃４の処理負荷が高いと評価された場合は、現在の監視モードが集中監視モードであるか否かを判定する（Ｓ１０８）。現在の監視モードが集中監視モードであると判定した場合は、何も処理を行わず、本フローを終了する。【００５６】
一方、タスクスケジューラ１２Ａは、Ｓ１０６において現在の監視モードが分散監視モードであると判定した場合は、分散監視モードから集中監視モードに切替え、タスクスケジュールの再編成を行う（Ｓ１１０）。【００５７】
［まとめ］
以上説明した本実施例のマルチコア・プロセッサによれば、プロセッサコア２０＃１の処理結果に対する信頼性を維持しつつ、プロセッサコア２０＃２〜２０＃４が十分な性能を発揮することができる。【００５８】
［変形等］
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。【００５９】
例えば、監視処理において、プロセッサコア２０＃２〜２０＃４が、プロセッサコア２０＃１と同一の演算を行ってプロセッサコア２０＃１の処理結果と比較するものとしたが、これに限らず、より簡易な手法、例えば処理結果のうち下位の数ビットのみチェックするための演算を行う、或いは符号のみチェックする等、如何なる手法を用いて監視処理を行ってもよい。【００６０】
また、被監視プロセッサコアの監視処理を、複数のプロセッサコアによって冗長的に行うことを前提としてもよい。例えば、プロセッサコアの本来のタスクとして、プロセッサコア２０＃１が優先度「高」のタスクＡ−１、Ａ−２、Ａ−３を実行し、プロセッサコア２０＃２〜２０＃６がそれぞれ優先度「中」のタスクＢ、Ｃ、Ｄ、Ｅ、Ｆを実行し、プロセッサコア２０＃７、２０＃８が優先度「低」のタスクＧ、Ｈを実行するようにスケジューリングされたとする。ここで、タスクＡ−１、Ａ−２、Ａ−３のうちタスクＡ−１が最も処理時間を要するものである場合、各プロセッサコアの処理負荷が低い場合の分散監視モードでは、例えば、プロセッサコア２０＃７、２０＃８がタスクＡ−１のミラー処理及び比較処理を独自に行い、プロセッサコア２０＃５、２０＃６がタスクＡ−２のミラー処理及び比較処理を独自に行い、プロセッサコア２０＃３、２０＃４がタスクＡ−３のミラー処理及び比較処理を独自に行うように監視処理を割り当てる。そして、各プロセッサコアの処理負荷が上昇したことにより集中監視モードに移行すると、例えば、プロセッサコア２０＃７、２０＃８がタスクＧ、Ｈの実行を停止すると共に、それぞれが独自にタスクＡ−１、Ａ−２、Ａ−３のミラー処理及び比較処理を行うようにスケジューリングする。これによって、被監視プロセッサコア２０＃１が実行するタスクについては、分散監視モードか集中監視モードかに拘わらず、他の二以上のプロセッサコアにより監視処理が行われることになり、被監視プロセッサコア２０＃１の処理結果に対する信頼性を更に向上させることができる。【００６１】
また、最も優先度の高い「高」が設定されているタスクを実行しているプロセッサコアを被監視プロセッサコアとしたが、これに代えて、「特定のプロセッサコア」を被監視プロセッサコアとしても構わない。優先度の高いタスクを特定のプロセッサコアが常時実行している場合は、被監視プロセッサコアを固定しても問題は生じないからである。なお、被監視プロセッサコアは複数であってもよい。【００６２】
また、処理負荷評価部１２Ｂは、プロセッサコア２０＃２〜２０＃４のＣＰＵ使用率の平均値が基準値を超える場合にプロセッサコア２０＃２〜２０＃４の処理負荷が高いと評価し、基準値以下である場合にプロセッサコア２０＃２〜２０＃４の処理負荷が低いと評価するものとしたが、これに限定されない。例えば、ＣＰＵ使用率の加重平均（優先度の高いタスクを実行しているプロセッサコアの重み係数を大きくする）、幾何平均等を基準値と比較して処理負荷を評価してもよいし、ＣＰＵ使用率以外の指標を用いて処理負荷を評価してもよい。【００６３】
また、共有メモリ３０に設定される領域は、各プロセッサコアが内蔵するレジスタやキャッシュメモリ上に設定されても構わない。
【産業上の利用可能性】
【００６４】
本発明は、コンピュータ産業、自動車部品製造産業、その他種々の製造業に利用することができる。
【符号の説明】
【００６５】
１      マルチコア・プロセッサ
１０    プログラムメモリ
１２    オペレーティングシステム
１２Ａ  タスクスケジューラ
１２Ｂ  処理負荷評価部
１４    アプリケーションプログラム
１５    命令フェッチバス
２０＃１、２０＃２、２０＃３、２０＃４  プロセッサコア
３０    共有メモリ
３２    ＯＳ使用領域
３２Ａ  優先度テーブル
３４    アプリ使用領域
３４Ａ〜３４〜Ｄ  タスク別使用領域
３５    データバス
【図１】
2013088519.tif 000003
【図２】
2013088519.tif 000004
【図３】
2013088519.tif 000005
【図４】
2013088519.tif 000006
【図５】
2013088519.tif 000007
【国際調査報告】
2013088519.tif 000008
2013088519.tif 000009