(57)【特許請求の範囲】
【請求項１】
複数のコアと前記コアの数よりも少ない数のロックステップコアとを有するマルチコアプロセッサに、エラーを許容できない第１エラーレベルのプログラムと所定のエラーを許容できる第２エラーレベルのプログラムとを少なくとも含む複数のプログラムのスレッドを並列処理させる情報処理装置であって、
プログラムのエラーレベルに基づいて、前記第１エラーレベルのプログラムのスレッドが前記ロックステップコアの数を超えて時間的に重複しないようにプログラムのスケジューリングを行うスケジュール管理手段と、
すべての前記コアそれぞれで同時期に実行されるスレッドのうちの何れかが前記第１エラーレベルのプログラムのスレッドであるときに、該第１エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させ、また、すべての前記コアそれぞれで同時期に実行されるスレッドのうちに含まれる前記第１エラーレベルのプログラムのスレッドの数が前記ロックステップコアの数に満たないときに、何れかの前記コアが実行する前記第２エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させる同期制御手段と、
前記コアでの命令実行結果と前記ロックステップコアでの命令実行結果との比較結果に基づいて該コアを監視するコア監視手段と、
を備え、
前記同期制御手段は、すべての前記コアそれぞれでの全監視対象の命令実行が行われたことを確認できるように、前記コアごとに所定順に、該コアが実行する前記第２エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させることを特徴とする情報処理装置。
【請求項２】
複数のコアと前記コアの数よりも少ない数のロックステップコアとを有するマルチコアプロセッサに、エラーを許容できない第１エラーレベルのプログラムと所定のエラーを許容できる第２エラーレベルのプログラムとを少なくとも含む複数のプログラムのスレッドを並列処理させる情報処理装置であって、
プログラムのエラーレベルに基づいて、前記第１エラーレベルのプログラムのスレッドが前記ロックステップコアの数を超えて時間的に重複しないようにプログラムのスケジューリングを行うスケジュール管理手段と、
すべての前記コアそれぞれで同時期に実行されるスレッドのうちの何れかが前記第１エラーレベルのプログラムのスレッドであるときに、該第１エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させ、また、すべての前記コアそれぞれで同時期に実行されるスレッドのうちに含まれる前記第１エラーレベルのプログラムのスレッドの数が前記ロックステップコアの数に満たないときに、何れかの前記コアが実行する前記第２エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させる同期制御手段と、
前記コアでの命令実行結果と前記ロックステップコアでの命令実行結果との比較結果に基づいて該コアを監視するコア監視手段と、
を備え、
前記同期制御手段は、同じスレッドを前記ロックステップコアが同期して実行する前記コアを切り替える切替手段を含み、
前記切替手段は、一の前記コアの全監視対象の命令実行が正しく行われたことが確認された場合に、該一の前記コアとは別の前記コアに、同じスレッドを前記ロックステップコアが同期して実行する前記コアを切り替えることを特徴とする情報処理装置。
【請求項３】
複数のコアと前記コアの数よりも少ない数のロックステップコアとを有するマルチコアプロセッサに、エラーを許容できない第１エラーレベルのプログラムと所定のエラーを許容できる第２エラーレベルのプログラムとを少なくとも含む複数のプログラムのスレッドを並列処理させる情報処理装置であって、
プログラムのエラーレベルに基づいて、前記第１エラーレベルのプログラムのスレッドが前記ロックステップコアの数を超えて時間的に重複しないようにプログラムのスケジューリングを行うスケジュール管理手段と、
すべての前記コアそれぞれで同時期に実行されるスレッドのうちの何れかが前記第１エラーレベルのプログラムのスレッドであるときに、該第１エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させ、また、すべての前記コアそれぞれで同時期に実行されるスレッドのうちに含まれる前記第１エラーレベルのプログラムのスレッドの数が前記ロックステップコアの数に満たないときに、何れかの前記コアが実行する前記第２エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させる同期制御手段と、
前記コアでの命令実行結果と前記ロックステップコアでの命令実行結果との比較結果に基づいて該コアを監視するコア監視手段と、
を備え、
前記同期制御手段は、同じスレッドを前記ロックステップコアが同期して実行する前記コアを切り替える切替手段を含み、
前記同期制御手段は、すべての前記コアそれぞれでの全監視対象の命令実行が行われたことを確認できるように、前記コアごとに所定順に、該コアが実行する前記第２エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。
【背景技術】
【０００２】
従来、ロックステップ式の情報処理装置が知られている（例えば、特許文献１参照）。この特許文献１記載の情報処理装置は、複数（例えば２つ）のコアを含むマルチコアプロセッサを備えている。この情報処理装置においては、複数のコアが同じプログラムのスレッドを実行すると共に、それらの各命令実行結果の比較結果に基づいて例えば中性子線などの影響によるソフトエラーが検出される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００９−５０１３６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、マルチコアプロセッサに監視対象のコアが複数ある場合、それらのコアごとに対応して監視用のロックステップコアを設けることが考えられる。かかる構造によれば、複数のコアが並列処理を行うとき、各コアそれぞれをそれぞれ独立したロックステップコアを用いて確実かつ適切に監視することができる。また、エラーを許容できないエラーレベルのプログラムが複数ある場合、それら複数のプログラムを複数のロックステップコアで同時期に実行させることができるので、そのエラー許容できないエラーレベルのプログラムをスケジュール管理することは不要である。
【０００５】
しかし、このように監視対象のコアごとにロックステップコアを設けるものとすると、ロックステップコアの数の増大に伴って、チップ面積が増大し或いはコストが上昇するなどの不都合が生ずる。一方、ロックステップコアの数を監視対象のコアの数よりも少なくできれば、上記の不都合を低減することはできる。しかし、かかる構成においては、エラー許容できないエラーレベルのプログラムが適切にスケジュール管理されていないと、コアがそのエラー許容できないエラーレベルのプログラムを実行するときに、そのプログラムをロックステップコアが同期して実行することができない事態が生じてしまう。
【０００６】
本発明は、上述の点に鑑みてなされたものであり、並列処理を行うコアごとに対応してロックステップコアを設けることなく、エラー許容できないエラーレベルのプログラムを適切にロックステップコアに同期して実行させつつ、各コアそれぞれを適切に監視することが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様は、複数のコアと前記コアの数よりも少ない数のロックステップコアとを有するマルチコアプロセッサに、エラーを許容できない第１エラーレベルのプログラムと所定のエラーを許容できる第２エラーレベルのプログラムとを少なくとも含む複数のプログラムのスレッドを並列処理させる情報処理装置であって、プログラムのエラーレベルに基づいて、前記第１エラーレベルのプログラムのスレッドが前記ロックステップコアの数を超えて時間的に重複しないようにプログラムのスケジューリングを行うスケジュール管理手段と、すべての前記コアそれぞれで同時期に実行されるスレッドのうちの何れかが前記第１エラーレベルのプログラムのスレッドであるときに、該第１エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させ、また、すべての前記コアそれぞれで同時期に実行されるスレッドのうちに含まれる前記第１エラーレベルのプログラムのスレッドの数が前記ロックステップコアの数に満たないときに、何れかの前記コアが実行する前記第２エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させる同期制御手段と、前記コアでの命令実行結果と前記ロックステップコアでの命令実行結果との比較結果に基づいて該コアを監視するコア監視手段と、を備え、前記同期制御手段は、すべての前記コアそれぞれでの全監視対象の命令実行が行われたことを確認できるように、前記コアごとに所定順に、該コアが実行する前記第２エラーレベルのプログラムのスレッドを前記ロックステップコアに同期して実行させる情報処理装置である。
【発明の効果】
【０００８】
本発明によれば、並列処理を行うコアごとに対応してロックステップコアを設けることなく、エラー許容できないエラーレベルのプログラムを適切にロックステップコアに同期して実行させつつ、各コアそれぞれを適切に監視することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施例である情報処理装置のハードウェア構成図である。
【図２】本実施例の情報処理装置における動作イメージ図である。
【図３】エラーレベルがエラーレベルＢであるプログラムの機能ごとの処理周期Ｔ１及び規定時間Ｔ２の一例を表した図である。
【図４】本実施例の情報処理装置においてロックステップコアが同期して実行する同期対象コアの切り替え手法を説明するための図である。
【図５】本実施例の情報処理装置においてエラーレベルＢのプログラム実行に対するコアを監視すべく実行される制御ルーチンの一例のフローチャートである。
【図６】本実施例の情報処理装置におけるエラー検出対象の命令セットの一例を表した図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて、本発明に係る情報処理装置の具体的な実施の形態について説明する。
【００１１】
図１は、本発明の一実施例である情報処理装置１０のハードウェア構成図を示す。また、図２は、本実施例の情報処理装置１０における動作イメージ図を示す。
【００１２】
本実施例の情報処理装置１０は、例えば車載制御を実行するうえで用いられるマイクロコンピュータ（マイコン）である。情報処理装置１０は、実行制御に対する信頼性を確保しながら、マルチコアプロセッサの性能を極大化するためにマルチスレッドの単位を細分化した並列プログラミングソフトを効率的に動作させるためのプロセッサ構造やソフトウェア制御構造に特徴を有する。
【００１３】
図１に示す如く、情報処理装置１０は、マルチコアプロセッサ１２を備えている。マルチコアプロセッサ１２は、並列処理を行う三以上のコア１４を含んでいる。以下、各コア１４をコア１４−１，１４−２，１４−３，・・・，１４−Ｎとする。尚、Ｎは、マルチコアプロセッサ１２が有するコア１４の数である（Ｎ≧３）。マルチコアプロセッサ１２の各コア１４はそれぞれ、互いに独立して動作実行することが可能である。
【００１４】
マルチコアプロセッサ１２を構成するすべてのコア１４には、クロック生成回路１６が接続されている。クロック生成回路１６は、所定周期のクロックを生成して各コア１４に出力することが可能である。各コア１４はそれぞれ、クロック生成回路１６からのクロックに従って、動作実行することが可能である。
【００１５】
マルチコアプロセッサ１２を構成するすべてのコア１４には、レジスタ・メモリ１８が接続されている。レジスタ・メモリ１８と各コア１４とは、アドレスバス２０を介して接続されていると共に、データバス２２を介して接続されている。アドレスバス２０は、レジスタ・メモリ１８と各コア１４との間でメモリアドレスを転送するための線である。データバス２２は、レジスタ・メモリ１８と各コア１４との間でデータを転送するための線である。
【００１６】
レジスタ・メモリ１８は、コア１４の動作に必要なデータを記憶する要素であり、各コア１４で共有される。レジスタ・メモリ１８には、各コア１４が実行可能な制御プログラムが複数格納されている。複数の制御プログラムはそれぞれ、コア１４の動作実行によって車載制御として予め定められた機能を実現させるものである。この機能としては、例えば、ブレーキ制御やアクセル制御，操舵制御，ダイアグノーシス制御，通信制御，記憶制御などである。各機能には、予め処理周期（割り込み周期）やエラー許容時間などが定められている。
【００１７】
コア１４には、他のコア１４の動作を監視するロックステップコア２４が含まれる。ロックステップコア２４は、マルチコアプロセッサ１２を構成する三以上のコア１４のうち唯一つである。以下、ロックステップコア２４を除くコア１４を通常コア２５と称す。すなわち、マルチコアプロセッサ１２は、コア１４として、複数の通常コア２５と、一つのロックステップコア２４と、を有する。ロックステップコア２４は、クロック生成回路１６から供給されるクロックに従って、すべての通常コア２５のうちの監視対象である一つの通常コア２５が実行するスレッドと同じスレッドを同期して実行する。
【００１８】
情報処理装置１０は、また、ＲＴＯＳ（リアルタイムオペレーティングシステム）２６と、切替器２８と、を備えている。ＲＴＯＳ２６は、各コア１４（具体的には、通常コア２５）にて動作させるスレッドを配分してスケジューリングする機能を有する。切替器２８は、すべての通常コア２５のうちで、同じスレッドをロックステップコア２４が同期して実行する同期対象の通常コア２５（以下、この通常コア２５を同期対象コア２５と称す。）を切り替える機能を有する。
【００１９】
各コア１４で実行可能な制御プログラムにはそれぞれ、エラーを許容できる或いはできない段階を示すエラーレベルが予め定められている。すなわち、制御プログラムごとにエラーレベルが定められている。エラーレベルは、例えば３段階ある。各制御プログラムは、レジスタ・メモリ１８に、プログラム範囲として開始アドレスと終了アドレスとが予め割り当てられて格納されている。制御プログラムとエラーレベルとの関係は、ＲＯＭに格納されたエラーレベルマップ３０に記憶されている。エラーレベルマップ３０に記憶される関係は、エラーレベルごとの各制御プログラムのプログラム範囲で定められる。
【００２０】
エラーレベルは、何れのエラーでも許容できるレベル（以下、エラーレベルＡとする。）と、ソフトエラーを許容できる一方でハードエラーを許容できないレベル（すなわち、エラーが規定時間以上継続しなければよいレベル或いは規定時間内のエラー継続を許容できるレベル；以下、エラーレベルＢとする。）と、ハードやソフトに関係なくエラーを許容できないレベル（以下、エラーレベルＣとする。）と、を含むものである。尚、エラーレベルは、少なくとも上記のエラーレベルＢ及び上記のエラーレベルＣを含むものであればよい。
【００２１】
例えば図２に示す如く、上記のエラーレベルＣのプログラムは、割り当てられたプログラム範囲が開始アドレス"００００"から終了アドレス"０１００"までであるプログラムと、割り当てられたプログラム範囲が開始アドレス"１１００"から終了アドレス"２０００"までであるプログラムと、である。上記のエラーレベルＢのプログラムは、割り当てられたプログラム範囲が開始アドレス"０２００"から終了アドレス"０３００"までであるプログラムと、割り当てられたプログラム範囲が開始アドレス"５０００"から終了アドレス"ＦＦＦＦ"までであるプログラムと、である。また、上記のエラーレベルＡのプログラムは、割り当てられたプログラム範囲が上記のエラーレベルＢのプログラム範囲と上記のエラーレベルＣのプログラム範囲とを除いた範囲であるプログラムである。
【００２２】
上記した切替器２８には、上記したエラーレベルマップ３０が接続されている。切替器２８は、エラーレベルマップ３０と各通常コア２５のプログラムカウンタ値（すなわち、次に実行すべき命令が格納されているメモリアドレス値）とを参照して、ロックステップコア２４にて監視する同期対象コア２５を切り替えることが可能である。
【００２３】
ＲＴＯＳ２６は、上記エラーレベルＣのプログラムのスレッドが二以上、時間的に重複しないようにすなわち互いに異なる通常コア２５で同時期に実行されないように、各プログラムのスレッドのスケジューリングを行う。すなわち、ＲＴＯＳ２６は、ロックステップコア２４が同期対象コア２５と同期して同じスレッドを実行する際にその同期対象コア２５とは別の通常コア２５にてエラーレベルＣのプログラムを実行しないように、各プログラムのスレッドのスケジューリングを行う。
【００２４】
例えば、上記エラーレベルＣのプログラムのスレッドが二以上の通常コア２５で同時期に実行されようとするときは、その実行前に、それらの通常コア２５のうち何れかの通常コア２５に対してそのエラーレベルＣのプログラムによる命令実行を待機させ或いは他スレッドを優先して命令実行させるスケジューリングが行われる。また、ロックステップコア２４にてエラーレベルＣのプログラムのスレッドが実行されているときは、そのエラーレベルＣのプログラムを命令実行する通常コア２５以外の通常コア２５に対してエラーレベルＣのプログラムによる命令実行を待機させ或いは他スレッドを優先して命令実行させるスケジューリングが行われる。
【００２５】
また、ＲＴＯＳ２６は、何れかの通常コア２５にエラーレベルＣのプログラムのスレッドを実行させないときは、エラーレベルＢ又はエラーレベルＣのプログラムのスレッドを各通常コア２５に実行させるようにスケジューリングを行う。
【００２６】
通常コア２５とロックステップコア２４とを有するマルチコアプロセッサ１２は、エラーレベルＡ〜Ｃのプログラムのスレッドを並列処理することが可能である。各通常コア２５はそれぞれ、ＲＴＯＳ２６のスケジューリングに従って割り当てられたスレッドを命令実行する。各通常コア２５はそれぞれ、命令実行して得られた結果（命令実行結果）を示すデータをデータバス２２を介してレジスタ・メモリ１８に転送する。レジスタ・メモリ１８に転送されたデータは、レジスタ・メモリ１８に記憶される。
【００２７】
切替器２８は、入力端子３２と、スイッチ３４と、出力端子３６と、を有している。入力端子３２は、通常コア２５の数と同数だけ設けられており、それらの通常コア２５とデータバス２２とを繋ぐ通信線３８に接続されている。各入力端子３２には、通常コア２５それぞれがデータバス２２を介してレジスタ・メモリ１８に向けて出力するデータが入力される。スイッチ３４は、出力端子３６に接続させる端子を何れか一の入力端子３２に切り替えるスイッチである。切替器２８は、出力端子３６に、同期対象コア２５として設定された通常コア２５に接続する入力端子３２が接続されるように、スイッチ３４をオンする。
【００２８】
情報処理装置１０は、また、比較・エラー検出器４０を備えている。比較・エラー検出器４０には、切替器２８の出力端子３６が接続されていると共に、ロックステップコア２４とデータバス２２とを繋ぐ通信線４２が接続されている。比較・エラー検出器４０には、同期対象コア２５から出力された命令実行結果を示すデータが切替器２８を介して供給されると共に、ロックステップコア２４から出力された命令実行結果を示すデータが供給される。比較・エラー検出器４０は、同期対象コア２５から出力された命令実行結果を示すデータと、ロックステップコア２４から出力された命令実行結果を示すデータと、を比較することにより、その同期対象コア２５において生ずるエラーを検出する監視を行う。
【００２９】
次に、図３〜図６を参照して、本実施例の情報処理装置１０において、通常コア２５である同期対象コア２５とロックステップコア２４とが互いに同じスレッドを実行するうえで、その同期対象コア２５を設定する手法について説明する。
【００３０】
本実施例の情報処理装置１０において、ＲＴＯＳ２６は、各コア１４（具体的には、通常コア２５）にて動作させるプログラムのスレッドを配分してスケジューリングする。このスケジューリングは、エラーレベルがエラーレベルＣであるプログラムのスレッドが互いに異なる通常コア２５で同時期に実行されないように、或いは、ロックステップコア２４が同期対象コア２５と同期して同じスレッドを実行する際にその同期対象コア２５とは別の通常コア２５にてエラーレベルＣのプログラムを実行しないように行われる。また、上記のスケジューリングは、エラーレベルがエラーレベルＣであるプログラムのスレッドの実行が何れかのコア１４で時間的に連続して行われることが無いように、すなわち、エラーレベルがエラーレベルＣであるプログラムのスレッドの実行が何れのコア１４でも行われていない期間が生じるように行われる。
【００３１】
切替器２８は、プログラムとエラー許容レベルとの関係を規定したエラーレベルマップ３０と、各コア１４のプログラムカウンタ値と、を参照して、ロックステップコア２４にて監視すべき同期対象コア２５を切り替える。
【００３２】
具体的には、切替器２８は、ＲＴＯＳ２６でのスケジューリングの結果、マルチコアプロセッサ１２を構成する複数の通常コア２５のうちに、エラーを許容できないエラーレベルＣのプログラムのスレッドを実行する通常コア２５があるときは、そのエラーレベルＣのプログラムを実行する通常コア２５を同期対象コア２５に設定して、その通常コア２５に同期対象コア２５を切り替える。この同期対象コア２５の切り替えは、その通常コア２５がエラーレベルＣのプログラムのスレッドの実行を開始するタイミングで行われる。
【００３３】
また、切替器２８は、ＲＴＯＳ２６でのスケジューリングの結果、マルチコアプロセッサ１２を構成する複数の通常コア２５のうちに、エラーレベルＣのプログラムのスレッドを実行する通常コア２５が無いときは、通常コア２５を一つずつ時間をずらしながら同期対象コア２５に設定して、同期対象コア２５を順次切り替える。具体的には、すべての通常コア２５それぞれでの全監視対象の命令実行が行われることを確認できるように、同期対象コア２５をそれらの通常コア２５のうちで所定順に切り替える。このすべての通常コア２５への同期対象コア２５の切り替えは、エラーレベルが規定時間内のエラー継続を許容できるエラーレベルＢであるすべてのプログラムのうち、その規定時間が最小であるプログラム（以下、最短プログラムと称す。）のその規定時間（以下、最短エラー許容時間と称す。）内にできるだけ収まるように行われる。
【００３４】
図３は、エラーレベルがエラーレベルＢであるプログラムごとの処理周期Ｔ１及び規定時間Ｔ２の一例を表した図を示す。
【００３５】
エラーレベルがエラーレベルＢであるプログラムは、例えば図３に示す如く、３つの機能Ｘ，Ｙ，Ｚを含むプログラムである。各機能Ｘ，Ｙ，Ｚはそれぞれ、演算処理周期（割り込み周期）Ｔ１が互いに異なると共に、規定時間Ｔ２が互いに異なるものである。この場合、全機能Ｘ，Ｙ，Ｚのうち規定時間Ｔ２が最小である機能（図３に示す例では、規定時間Ｔ２が２００ミリ秒である機能Ｘ）のプログラムが、上記の最短プログラムとして設定される。尚、エラーレベルＢのプログラムの規定時間Ｔ２は、機能ごとに、安全性や商品性などを確保できるエラー継続を許容できる時間（例えば、アクチュエータ応答性や人間工学などに基づく導出されてもよい。）に設定される。
【００３６】
エラーレベルがエラーレベルＢであるプログラムについては、その実行時にエラーが規定時間Ｔ２以上継続しなければよいので、エラーレベルがエラーレベルＢであるすべてのプログラムの規定時間Ｔ２のうち最短エラー許容時間Ｔ２内に、すべての通常コア２５それぞれの全監視対象の命令実行が正しく行われることを確認できれば、すべての通常コア２５に最短エラー許容時間Ｔ２以上継続するハードエラーが生じていないことを確認することが可能となる。
【００３７】
図４は、本実施例の情報処理装置１０においてロックステップコア２４が同期して実行する同期対象コア２５の切り替え手法を説明するための図を示す。図５は、本実施例の情報処理装置１０においてエラーレベルＢのプログラム実行に対する通常コア２５を監視すべく実行される制御ルーチンの一例のフローチャートを示す。また、図６は、本実施例の情報処理装置１０における監視対象（エラー検出対象）の命令セットの一例を表した図を示す。
【００３８】
本実施例において、情報処理装置１０は、上記の最短エラー許容時間Ｔ２内に、マルチコアプロセッサ１２内のすべての通常コア２５をロックステップコア２４に監視させる。すなわち、通常コア２５ごとに一つずつ全監視対象の命令実行に対する監視をロックステップコア２４に行わせる。
【００３９】
マルチコアプロセッサ１２の有する各通常コア２５は、予めコア番号ｎｏ．（＝０〜Ｎ−２）が定められている。上記の全監視対象の命令実行に対する監視は、例えばコア番号ｎｏ．の小さい方から順に行われる。切替器２８は、例えばコア番号ｎｏ．の小さい方から順に時間をずらしながら一の通常コア２５を同期対象コア２５に設定して、同期対象コア２５を順次切り替える（図４参照）。この切り替えは、一の通常コア２５の監視が完了するごとに行われる。
【００４０】
情報処理装置１０は、コア番号ｎｏ．がコアカウント値ｃｎｔ＿ｃｏｒｅに一致する通常コア２５について全監視対象の命令の監視が未完了である限り図５に示すループ１の処理を行う。尚、コアカウント値ｃｎｔ＿ｃｏｒｅは、監視が完了した通常コア２５の数を示す値であって、その初期値は"０"である。
【００４１】
ループ１の処理では、コア番号ｎｏ．がコアカウント値ｃｎｔ＿ｃｏｒｅに一致する通常コア２５が同期対象コア２５に設定されて、切替器２８がそのコア番号ｎｏ．の通常コア２５に同期対象コア２５を切り替えたうえで、その同期対象コア２５が実行するスレッドの命令に対する演算結果がロックステップコア２４にて監視される（ステップ１００）。そして、そのコア番号ｎｏ．の通常コア２５での命令実行結果とロックステップコア２４での命令実行結果とが一致するか否かが比較・エラー検出器４０にて判別される（ステップ１０２）。
【００４２】
上記ステップ１０２の処理結果、命令実行結果が一致しないと判別した場合は、そのコア番号ｎｏ．の通常コア２５にエラーが生じていると判定され、エラー通知などのフェールセーフ処理が行われ（ステップ１０４）、本ルーチンが終了される。一方、命令実行結果が一致すると判別した場合は、監視対象命令カウント値ｃｎｔ＿ｉｎｓｔがゼロにリセットされ（ステップ１０６）、その後、その監視対象命令カウント値ｃｎｔ＿ｉｎｓｔが監視対象命令セットにおける命令数Ｎ＿ｉｎｓｔ未満である限りループ２の処理が行われる。
【００４３】
尚、監視対象命令カウント値ｃｎｔ＿ｉｎｓｔは、図６に示す如く、監視対象としての通常コア２５が実行すべき命令（例えば、加算ＡＤＤ、引き算ＳＵＢ、・・・、比較ＣＭＰなど）ごとに割り当てられた命令番号のうち、その時点で監視すべき命令の命令番号を示すものである。また、監視対象命令セットにおける命令数Ｎ＿ｉｎｓｔは、通常コア２５ごとに実行すべき命令の総数のことであり、予め定められている。
【００４４】
ループ２の処理では、同期対象コア２５とロックステップコア２４とがそれぞれ実行した命令が、監視対象命令カウント値ｃｎｔ＿ｉｎｓｔに現に割り当てられている命令Ｉｎｓｔ［ｃｎｔ＿ｃｏｒｅ］［ｃｎｔ＿ｉｎｓｔ］に一致するか否かが判別される（ステップ１１０）。その結果、実行した命令が、監視対象命令カウント値ｃｎｔ＿ｉｎｓｔに対応した命令Ｉｎｓｔ［ｃｎｔ＿ｃｏｒｅ］［ｃｎｔ＿ｉｎｓｔ］に一致しないと判別した場合は、その監視対象命令カウント値ｃｎｔ＿ｉｎｓｔが"１"だけインクリメントされてループ２の処理が繰り返し行われる。
【００４５】
一方、上記ステップ１１０において、実行した命令が、監視対象命令カウント値ｃｎｔ＿ｉｎｓｔに対応した命令Ｉｎｓｔ［ｃｎｔ＿ｃｏｒｅ］［ｃｎｔ＿ｉｎｓｔ］に一致すると判別した場合は、その時点で同期対象コア２５として設定されている通常コア２５に対して、実行した命令に対する監視が完了したことを示す監視完了フラグ［ｃｎｔ＿ｃｏｒｅ］［ｃｎｔ＿ｉｎｓｔ］がオンされる（ステップ１１２）。かかる処理が行われると、ループ２の処理が中途終了され、ループ１の処理が終了される。この場合には、その終了時点で同期対象コア２５として設定されている、コア番号ｎｏ．がコアカウント値ｃｎｔ＿ｃｏｒｅである通常コア２５に対するロックステップコア２４による監視が終了される。
【００４６】
上記の如くコア番号ｎｏ．の通常コア２５に対するロックステップコア２４による監視が終了されると、次に、コアカウント値ｃｎｔ＿ｃｏｒｅが"１"だけインクリメントされ（ステップ１２０）。そして、そのインクリメント後のコアカウント値ｃｎｔ＿ｃｏｒｅがコア数Ｎ＿ｃｏｒｅ未満であるか否かが判別される（ステップ１２２）。尚、コア数Ｎ＿ｃｏｒｅは、マルチコアプロセッサ１２の有する通常コア２５の数のことである（Ｎ＿ｃｏｒｅ＝Ｎ−１）。
【００４７】
上記ステップ１２２において、インクリメント後のコアカウント値ｃｎｔ＿ｃｏｒｅがコア数Ｎ＿ｃｏｒｅ未満であると判別した場合は、すべての通常コア２５の監視が完了していないとして、以後、ループ１の処理が繰り返し行われる。具体的には、コア番号ｎｏ．がインクリメント後のコアカウント値ｃｎｔ＿ｃｏｒｅに一致する通常コア２５が同期対象コア２５に設定されて、切替器２８がそのコア番号ｎｏ．の通常コア２５に同期対象コア２５を切り替えたうえで、ロックステップコア２４による監視が行われる。
【００４８】
一方、上記ステップ１２２において、インクリメント後のコアカウント値ｃｎｔ＿ｃｏｒｅがコア数Ｎ＿ｃｏｒｅ未満でないと判別した場合は、すべての通常コア２５の監視が完了したとして、コアカウント値ｃｎｔ＿ｃｏｒｅがゼロにリセットされ（ステップ１２４）、以後、ループ１の処理が繰り返し行われる。
【００４９】
このように、本実施例の情報処理装置１０においては、マルチコアプロセッサ１２を構成するすべての通常コア２５のうちに、エラーを許容できないエラーレベルＣのプログラムのスレッドを実行する通常コア２５があるとき、すなわち、すべての通常コア２５で同時期に実行されるスレッドのうちの何れかがエラーレベルＣのプログラムのスレッドであるときは、その通常コア２５のそのスレッドの実行タイミングでその通常コア２５に同期対象コア２５を切り替えることで、ロックステップコア２４にその通常コア２５を監視させることができる。
【００５０】
また、すべての通常コア２５のうちに、エラーレベルＣのプログラムのスレッドを実行する通常コア２５が無いとき、すなわち、すべての通常コア２５で同時期に実行されるスレッドのうちに含まれるエラーレベルＣのプログラムのスレッドの数がロックステップコア２４の数（具体的には、一つ）に満たないときは、その通常コア２５が無いタイミング中に、すべての通常コア２５を一つずつ時間をずらしながら同期対象コア２５に設定して同期対象コア２５を順次切り替えることで、ロックステップコア２４に各通常コア２５を監視させることができる。尚、同期対象コア２５の切り替えを、具体的には、各通常コア２５の全監視対象の命令実行が正しく行われたことが確認される毎に行うことができる。
【００５１】
そして、ロックステップコア２４による監視の結果、同期対象コア２５での命令実行結果とロックステップコア２４での命令実行結果とを比較して、両命令実行結果が互いに異なる場合に、同期対象コア２５に設定されている通常コア２５にエラーが生じていると判定し、エラー通知などのフェールセーフ処理を行うことができる。
【００５２】
上記したシステムによれば、同じスレッドをロックステップコア２４が同期して実行する監視対象の同期対象コア２５を、複数の通常コア２５の間で切替器２８により切り替えることができる。そして、並列処理を行う複数の通常コア２５を一つのロックステップコア２４にて監視することができ、各通常コア２５のエラー検出を一つのロックステップコア２４を用いて実現することができる。このため、本実施例によれば、ロックステップコア２４を監視対象のコア１４ごとに対応して設けることは不要であり、情報処理装置１０内のロックステップコア２４が占めるチップ面積が増大するのを防止することができ、コスト上昇を抑えることができる。
【００５３】
また、上記したシステムにおいては、エラーを許容できないエラーレベルＣのプログラムのスレッドは、ＲＴＯＳ２６により、二以上のスレッドが時間的に重複しないようにすなわち互いに異なる通常コア２５で同時期に実行されないようにスケジューリングされている。そして、エラーレベルＣのプログラムのスレッドを実行する通常コア２５があるときは、その実行開始タイミングでその通常コア２５に同期対象コア２５を切り替えることができる。
【００５４】
一方、エラーレベルＣのプログラムのスレッドを実行する通常コア２５が無いときは、そのタイミングですべての通常コア２５を一つずつ時間をずらしながら同期対象コア２５に設定して同期対象コア２５を順次切り替えることができると共に、その同期対象コア２５の切り替えを、各通常コア２５それぞれの全監視対象の命令実行が正しく行われることが確認される毎に行うことができる。
【００５５】
かかるシステムによれば、マルチコアプロセッサ１２のすべての通常コア２５を一つのロックステップコア２４にて監視するうえで、エラーレベルＣのプログラムを確実かつ適切にロックステップコア２４に同期して実行させると共に、エラーレベルＣのプログラムを実行する通常コア２５が無いタイミングで各通常コア２５それぞれの監視を適切に行うことができる。従って、本実施例の情報処理装置１０によれば、通常コア２５ごとに一つずつ対応してロックステップコア２４を設けることなく、エラーレベルＣのプログラムを適切にロックステップコアに同期して実行させつつ、各通常コア２５それぞれを適切に監視することができる。
【００５６】
尚、上記の実施例においては、エラーレベルＣが特許請求の範囲に記載した「第１エラーレベル」に、エラーレベルＢが特許請求の範囲に記載した「第２エラーレベル」に、ＲＴＯＳ２６が特許請求の範囲に記載した「スケジュール管理手段」に、切替器２８が特許請求の範囲に記載した「同期制御手段」及び「切替手段」に、比較・エラー検出器４０が特許請求の範囲に記載した「コア監視手段」に、それぞれ相当している。
【００５７】
ところで、上記の実施例においては、すべての通常コア２５のうちにエラーレベルＣのプログラムのスレッドを実行する通常コア２５が無いタイミング中に、すべての通常コア２５を一つずつ時間をずらしながら同期対象コア２５に設定して同期対象コア２５を順次切り替えることで、ロックステップコア２４に各通常コア２５を監視させることとしている。かかる構成においては、実行プログラムにおける命令の分布上、すべての通常コア２５の全監視対象の命令実行が正しく行われることの確認が開始されてから完了するまでに要する時間（すなわち、ロックステップコア２４による最初のコア１４の監視開始から最後のコア１４の監視終了までの時間）が、エラーレベルＢの最短プログラムの最短エラー許容時間を超える可能性がある。そこで、かかる事態が生じるような場合に、明示的に残存した監視対象の命令を模擬したダミー命令をスケジュール実行し、その最短エラー許容時間内でのロックステップコア２４による通常コア２５の監視を確保することとしてもよい。
【００５８】
また、上記の実施例においては、マルチコアプロセッサ１２を構成するすべてのコア１４のうちロックステップコア２４を一つだけ設けることとする。そして、すべての通常コア２５のうちに、エラーを許容できないエラーレベルＣのプログラムのスレッドを実行する通常コア２５があるときに、ロックステップコア２４にその通常コア２５を監視させ、また、すべての通常コア２５のうちにエラーレベルＣのプログラムのスレッドを実行する通常コア２５が無いときに、同期対象コア２５を順次切り替えてロックステップコア２４に各通常コア２５を監視させることとしている。
【００５９】
しかし、本発明はこれに限定されるものではなく、ロックステップコア２４を通常コア２５の数よりも少ない数だけ設けたシステムに適用することが可能である。例えば、マルチコアプロセッサ１２が、２つのロックステップコア２４と、３つ以上の通常コア２５と、を有するものとしてもよい。
【００６０】
かかる変形例においては、すべての通常コア２５それぞれで同時期に実行されるスレッドのうちの何れかがエラーレベルＣのプログラムのスレッドであるときに、そのエラーレベルＣのプログラムのスレッドをロックステップコア２４に同期して実行させて、そのエラーレベルＣのプログラムのスレッドを実行する通常コア２５を監視させる。また、すべての通常コア２５それぞれで同時期に実行されるスレッドのうちに含まれるエラーレベルＣのプログラムのスレッドの数がロックステップコア２４の数に満たないときに、何れかの通常コア２５が実行するエラーレベルＢのプログラムのスレッドをロックステップコア２４に同期して実行させて、各通常コア２５を監視させることとすればよい。
【００６１】
また、上記の実施例においては、ソフトエラーを許容できる一方でハードエラーを許容できないエラーレベルＢを、そのエラーが規定時間以上継続しなければよいレベル或いは規定時間内のエラー継続を許容できるレベルとした。しかし、本発明はこれに限定されるものではなく、そのエラーレベルＢを、時間をかけてもエラー有無を検出できればよいレベルとしてもよい。
【符号の説明】
【００６２】
１０  情報処理装置
１２  マルチコアプロセッサ
１４  コア
１６  クロック生成回路
１８  レジスタ・メモリ
２４  ロックステップコア
２５  通常コア
２６  リアルタイムオペレーティングシステム（ＲＴＯＳ）
２８  切替器
３０  エラーレベルマップ
４０  比較・エラー検出器
【図１】
0006277971.tif 000002
【図２】
0006277971.tif 000003
【図３】
0006277971.tif 000004
【図４】
0006277971.tif 000005
【図５】
0006277971.tif 000006
【図６】
0006277971.tif 000007