(57)【要約】【課題】本発明は、複数のコアの中で任意のコアに異常が発生した場合でもその異常コアに割り当てられた処理を他のコアで正常に継続させることができるマルチプロセッサシステムを提供することを課題とする。【解決手段】コア１１，２１，３１と当該コアに付随するＲＡＭ１２，２２，３２を含み、コア１１，２１，３１には異なる処理がそれぞれ割り当てられ、コア１１，２１，３１がＲＡＭ１２，２２，３２に記憶されている情報に基づいて割り当てられている処理を実行する複数のＣＰＵ１０，２０，３０と、コア１１，２１，３１の異常を検出する異常検出手段１０，２０，３０を備え、異常検出手段１０，２０，３０で任意のコアの異常を検出した場合、異常が検出されたコア以外のコアが、異常が検出されたコアに付随するＲＡＭに記憶されている情報に基づいて、異常が検出されたコアに割り当てられている処理を実行することを特徴とする。【選択図】図１
2011065528.tif 000002
【特許請求の範囲】
【請求項１】
コアと当該コアに付随するＲＡＭを含み、前記コアには異なる処理がそれぞれ割り当てられ、前記コアが前記ＲＡＭに記憶されている情報に基づいて割り当てられている処理を実行する複数のＣＰＵと、
前記コアの異常を検出する異常検出手段
を備え、
前記異常検出手段で任意のコアの異常を検出した場合、前記異常が検出されたコア以外のコアが、前記異常が検出されたコアに付随するＲＡＭに記憶されている情報に基づいて、前記異常が検出されたコアに割り当てられている処理を実行することを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関する。
【背景技術】
【０００２】
マルチプロセッサシステムは、複数のＣＰＵ（プロセッサ）を備えており、各ＣＰＵ[CentralProcessing Unit]がＣＰＵコアを有している。この複数のＣＰＵ（ＣＰＵコア）には、それぞれ異なる制御が割り当てられている。特許文献１に記載のマルチプロセッサシステムでは、複数のプロセッサコアを備えており、監視プロセッサによって複数のコアのうちの特定のコアの異常を検出した場合、その異常コア以外のコアが異常コアに割り当てられている制御を代替して実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−３０５３１７号公報
【特許文献２】特開２００９−３７４０３号公報
【特許文献３】特開２００７−３１７１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
マルチプロセッサシステムの各ＣＰＵは、ＣＰＵコアが各制御を実行するときに使用するＲＡＭ[Random Access Memory]も有しており、そのＲＡＭにはＣＰＵコアで実行している制御に関する情報（ＣＰＵコアの演算結果など）が記憶される。しかし、上記したマルチプロセッサシステムの場合、異常コアの制御を代替して実行する他のコアは、異常コアの制御を引き継ぐが、その異常コアに付随するＲＡＭに記憶されている情報を引き継がない（つまり、異常コアで制御を実行していたときの制御状況を引き継がない）。その結果、その引き継がれた制御が一時的に不安定になる虞がある。
【０００５】
そこで、本発明は、複数のコアの中で任意のコアに異常が発生した場合でもその異常コアに割り当てられた処理を他のコアで正常に継続させることができるマルチプロセッサシステムを提供することを課題とする。
【課題を解決するための手段】
【０００６】
本発明に係るマルチプロセッサシステムは、コアと当該コアに付随するＲＡＭを含み、コアには異なる処理がそれぞれ割り当てられ、コアがＲＡＭに記憶されている情報に基づいて割り当てられている処理を実行する複数のＣＰＵと、コアの異常を検出する異常検出手段を備え、異常検出手段で任意のコアの異常を検出した場合、異常が検出されたコア以外のコアが、異常が検出されたコアに付随するＲＡＭに記憶されている情報に基づいて、異常が検出されたコアに割り当てられている処理を実行することを特徴とする。
【０００７】
このマルチプロセッサシステムは、複数のＣＰＵ（プロセッサ）を備えている。各ＣＰＵは、少なくともコアとそのコアに付随するＲＡＭを有している。各ＲＡＭには、コアで実行される処理に関する情報が記憶される。各コアは、他のコアとは異なる処理がそれぞれ割り当てられており、通常、割り当てられている処理をＲＡＭに記憶されている情報に基づいて実行する。また、マルチプロセッサシステムは、異常検出手段を備えており、異常検出手段でコアの異常検出を行う。マルチプロセッサシステムでは、異常検出手段で複数のコアのうちのいずれかのコアの異常を検出すると、その異常コア以外のコアが異常コアのＲＡＭに記憶されている情報に基づいて異常コアに割り当てられている処理を実行する。したがって、異常コアの処理を代替して実行するコアでは、異常コアが処理を実行していたときの処理に関する情報（処理結果など）を引き継いで、異常コアの処理を継続して実行する。このように、マルチプロセッサシステムでは、複数のコアの中で任意のコアに異常が発生した場合でも、その異常コアに割り当てられた処理を他のコアで正常に継続させることができる。
【発明の効果】
【０００８】
本発明は、複数のコアの中で任意のコアに異常が発生した場合でも、他のコアで処理に関する情報を引き継いで異常コアの処理を実行するので、異常コアに割り当てられた処理を他のコアで正常に継続させることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態に係るマルチコアマイコンの構成図である。
【図２】図１の第２ＣＰＵで第１ＣＰＵを監視する場合の流れを示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明に係るマルチプロセッサシステムの実施の形態を説明する。なお、各図において同一又は相当する要素については同一の符号を付し、重複する説明を省略する。
【００１１】
本実施の形態では、本発明に係るマルチプロセッサシステムを、車両に搭載され、車両の各種制御（例えば、エンジン制御、ブレーキ制御、操舵制御などの車両制御、通信制御、ナビゲーション制御）を行うためのＥＣＵ[Electronic Control Unit]のマルチコアマイコンに適用する。本実施の形態に係るマルチコアマイコンは、３個のＣＰＵを備えており、各ＣＰＵがＣＰＵコアとローカルＲＡＭを有している。
【００１２】
図１を参照して、本実施の形態に係るマルチコアマイコン１について説明する。図１は、本実施の形態に係るマルチコアマイコンの構成図である。
【００１３】
マルチコアマイコン１は、３個のＣＰＵ（第１ＣＰＵ１０、第２ＣＰＵ２０、第３ＣＰＵ３０）を備えており、この３個のＣＰＵによってＯＳ[Operating System]やアプリケーションなどのプログラムを実行する。マルチコアマイコン１では、通常、各ＣＰＵ１０，２０，３０が割り当てられているアプリケーションを実行する。特に、マルチコアマイコン１では、ＣＰＵ１０，２０，３０間で相互に監視しており、あるＣＰＵのＣＰＵコアの異常を検出した場合にはその異常のＣＰＵコアでのアプリケーションの実行を停止させ、異常のＣＰＵコア以外のＣＰＵコアで代替してアプリケーションを継続させる。なお、本実施の形態では、第１ＣＰＵ１０、第２ＣＰＵ２０、第３ＣＰＵ３０が特許請求の範囲に記載する複数のＣＰＵ及び異常検出手段に相当する。
【００１４】
ＯＳは、ＥＣＵ全体を管理する基本ソフトウェアである。アプリケーションは、ＥＣＵでの各制御を行うためのソフトウェアである。例えば、ＥＣＵがエンジン制御ＥＣＵの場合、アプリケーションとしては、スロットル制御、燃料噴射制御、空燃比制御、点火制御などがある。
【００１５】
各ＣＰＵ１０，２０，３０は、少なくともＣＰＵコア（第１ＣＰＵコア１１、第２ＣＰＵコア２１、第３ＣＰＵコア３１）とそのＣＰＵコアにそれぞれ付随するローカルＲＡＭ（第１ローカルＲＡＭ１２、第２ローカルＲＡＭ２２、第３ローカルＲＡＭ３２）を備えている。各ローカルＲＡＭ１２，２２，３２には、通常、同じＣＰＵ内のＣＰＵコアがアクセスするが、他のＣＰＵのＣＰＵコアからのアクセスも可能である。なお、本実施の形態では、第１ＣＰＵコア１１、第２ＣＰＵコア２１、第３ＣＰＵコア３１が特許請求の範囲に記載するコアに相当し、第１ローカルＲＡＭ１２、第２ローカルＲＡＭ２２、第３ローカルＲＡＭ３２が特許請求の範囲に記載するＲＡＭに相当する。
【００１６】
各ＣＰＵ１０，２０，３０は、ＯＳやアプリケーションを実行する機能を有しており、ＥＣＵで行われる全てのアプリケーションの中から異なるアプリケーションがそれぞれ割り当てられる。したがって、各ＣＰＵコア１１，２１，３１では、通常、同じＣＰＵ内のローカルＲＡＭを使用し、割り当てられているアプリケーションを実行する。また、各ローカルＲＡＭ１２，２２，３２には、通常、同じＣＰＵ内のＣＰＵコアがアプリケーションを実行しているときの各種演算結果、そのアプリケーションを実行するために必要な各種データ（例えば、センサの検出値）などが記憶される。なお、各ＣＰＵ１０，２０，３０には、１つのアプリケーションが割り当てられる場合もあるし、複数のアプリケーションが割り当てられる場合もある。
【００１７】
各ＣＰＵ１０，２０，３０は、定期的に他のＣＰＵを監視する相互監視機能を有している。第１ＣＰＵ１０では第２ＣＰＵ２０及び第３ＣＰＵ３０を監視し、第２ＣＰＵ２０では第１ＣＰＵ１０及び第３ＣＰＵ３０を監視し、第３ＣＰＵ３０では第１ＣＰＵ１０及び第２ＣＰＵ２０を監視する。なお、上記のように全てのＣＰＵにおいて他の２個のＣＰＵを監視するのではなく、他の組み合わせで相互監視してもよく、例えば、第１ＣＰＵ１０では第２ＣＰＵ２０を監視し、第２ＣＰＵ２０では第３ＣＰＵ３０を監視し、第３ＣＰＵ３０では第１ＣＰＵ１０を監視する。
【００１８】
この監視では、ＣＰＵが動作を停止（ＣＰＵコアの全ての機能が異常）しているか否か、ＣＰＵコアの一部の演算（機能）が異常か否か、ローカルＲＡＭが異常か否かの異常判定を行う。ＣＰＵが動作を停止しているかの判定としては、例えば、ＣＰＵコアでの全ての演算が不能（全ての機能が異常）であるかで判定する。ＣＰＵコアの全ての機能が異常の場合、そのＣＰＵコアに付随するローカルＲＡＭに記憶されているデータについても信用性が低いので、そのデータについては使用しないほうがよい。ここでは、ローカルＲＡＭに正常にアクセスが可能か否かも判定してもよい。また、ＣＰＵコアでの一部の演算の異常判定としては、例えば、演算結果の判っている所定の演算処理をＣＰＵコアに実行させ、ＣＰＵコアの演算結果を判定することにより異常判定を行う。また、ローカルＲＡＭの異常判定としては、例えば、ローカルＲＡＭの所定のエリアに特定のデータを書き込み、そのエリアからデータを読み出して、書き込んだ特定のデータと読み出したデータを比較することによって異常判定を行う。
【００１９】
各ＣＰＵ１０，２０，３０は、ＣＰＵコアでの一部の演算の異常が判定された場合、その異常のＣＰＵコアの動作（すなわち、そのＣＰＵコアでのアプリケーションの実行）を停止させる停止機能を有している。
【００２０】
各ＣＰＵ１０，２０，３０は、ＣＰＵコアでの一部の演算の異常が判定された場合、その異常のＣＰＵコアのＣＰＵに割り当てられているアプリケーションを他のＣＰＵに移行させるシステムオペレーション機能を有している。この場合のアプリケーションの移行では、その移行される他のＣＰＵでは、ＣＰＵ内の正常のＣＰＵコアが、異常のＣＰＵコアに付随するローカルＲＡＭを使用して、その異常のＣＰＵコアで実行することになっていたアプリケーションを実行する。この際、その異常のＣＰＵコアに付随するローカルＲＡＭについて正常なエリアを判定し、正常なエリアだけを使用可能とする。ちなみに、ＣＰＵコアでの異常が部分的な機能に限定される場合には、ＣＰＵコアにおける正常な機能で正常なデータがローカルＲＡＭに記憶されているので、そのローカルＲＡＭに記憶されている正常なデータを利用でき、移行直前の制御状況を引き継ぐことができる。
【００２１】
各ＣＰＵ１０，２０，３０は、ローカルＲＡＭの異常が判定された場合、その異常のローカルＲＡＭと同じＣＰＵ内のＣＰＵコアに他のＣＰＵのローカルＲＡＭを使用させてアプリケーションの実行を継続させるシステムオペレーション機能を有している。ここでは、ローカルＲＡＭの一部のエリアだけが異常と判定した場合、そのローカルＲＡＭの正常なエリアについては使用を許可してもよい。
【００２２】
各ＣＰＵ１０，２０，３０は、ＣＰＵの動作停止が判定された場合、その動作停止したＣＰＵに割り当てられているアプリケーションを他のＣＰＵに移行させるシステムオペレーション機能を有している。この場合のアプリケーションの移行では、その移行される他のＣＰＵでは、ＣＰＵ内の正常のＣＰＵコアが、ＣＰＵ内のローカルＲＡＭを使用して、その異常のＣＰＵコアで実行することになっていたアプリケーションを実行する。
【００２３】
なお、停止機能やシステムオペレーション機能については、３個のＣＰＵ１０，２０，３０全てが行えるようにしてもよいし、あるいは、３個のＣＰＵ１０，２０，３０のうちの特定のＣＰＵだけが行えるようにしてもよい。
【００２４】
図１を参照して、マルチコアマイコン１のＣＰＵ間の相互監視の動作について説明する。ここでは、第２ＣＰＵ２０で第１ＣＰＵ１０を監視する場合の動作を図２のフローチャートに沿って説明する。図２は、図１の第２ＣＰＵで第１ＣＰＵを監視する場合の流れを示すフローチャートである。
【００２５】
第２ＣＰＵ２０では、定期的に、第１ＣＰＵ１０（第１ＣＰＵコア１１、第１ローカルＲＡＭ１２）を監視し、異常判定を行う（Ｓ１）。
【００２６】
第２ＣＰＵ２０では、第１ＣＰＵの動作が停止（特に、第１ＣＰＵコア１１の全ての機能が異常）しているか否かを判定する（Ｓ２）。Ｓ２にて第１ＣＰＵ１０の動作が停止していると判定した場合、第２ＣＰＵ２０では、第２ＣＰＵコア２１に、第２ローカルＲＡＭ２２を使用して、第１ＣＰＵ１０に割り当てられているアプリケーションを実行させる（Ｓ３）。
【００２７】
Ｓ２にて第１ＣＰＵ１０が動作していると判定した場合、第２ＣＰＵ２０では、第１ＣＰＵコア１１での一部の演算（機能）に異常があるか否かを判定する（Ｓ４）。Ｓ４にて第１ＣＰＵコア１１での一部の演算に異常があると判定した場合、第２ＣＰＵ２０では、第１ＣＰＵコア１１の動作を停止させる（Ｓ５）。そして、第２ＣＰＵ２０では、第２ＣＰＵコア２１に、第１ローカルＲＡＭ１２を使用して、第１ＣＰＵ１０に割り当てられているアプリケーションを実行させる（Ｓ６）。この際、第２ＣＰＵコア２１で第１ローカルＲＡＭ１２を使用する場合、第１ローカルＲＡＭ１２に記憶されている第１ＣＰＵコア１１がアプリケーションを実行していたときの演算結果やそのアプリケーションの実行に必要なデータなどを読み出すことが重要となる。これによって、第１ＣＰＵコア１１で実行していたアプリケーション（制御）が、その制御に関する情報も含めて、第２ＣＰＵコア２１に引き継がれることになる。なお、第２ＣＰＵコア２１による書き込みについては、第１ローカルＲＡＭ１２に行ってもよいし、あるいは、第２ローカルＲＡＭ２２に行ってもよい。
【００２８】
Ｓ４にて第１ＣＰＵコア１１に異常がないと判定した場合、第２ＣＰＵ２０では、第１ローカルＲＡＭ１２に異常があるか否かを判定する（Ｓ７）。Ｓ７にて第１ローカルＲＡＭ１２に異常があると判定した場合、第２ＣＰＵ２０では、第１ＣＰＵコア１１に、第２ローカルＲＡＭ２２を使用して、第１ＣＰＵコア１１に割り当てられているアプリケーションを継続して実行させる（Ｓ８）。
【００２９】
Ｓ７にて第１ローカルＲＡＭ１２に異常がないと判定した場合、第２ＣＰＵ２０では、今回の監視を終了する。
【００３０】
なお、第２ＣＰＵ２０で第３ＣＰＵ３０を監視する場合、第３ＣＰＵ３０で第１ＣＰＵ１０を監視する場合、第３ＣＰＵ３０で第２ＣＰＵ２０を監視する場合、第１ＣＰＵ１０で第２ＣＰＵ２０を監視する場合、第１ＣＰＵ１０で第３ＣＰＵ３０を監視する場合についても、上記と同様の動作を行っている。
【００３１】
このマルチコアマイコン１によれば、ＣＰＵコア１１，２１，３１のうちの任意のＣＰＵコアに異常が発生した場合でも、他のＣＰＵコアで異常のＣＰＵコアに付随するローカルＲＡＭを使用して（ひいては、異常のＣＰＵコアが実行していたときのアプリケーションに関する情報（制御状況）を引き継いで）異常のＣＰＵコアのアプリケーションを代替して実行するので、異常のＣＰＵコアに割り当てられたアプリケーション（制御）を他のＣＰＵコアで正常に継続させることができる。その結果、車両制御の安定性を維持でき、より安全なフェイルセーフを行うことができる。ちなみに、車両の制御の場合、制御状況が時々刻々と変化するので、制御状況を引き継ぐことは非常に重要となる。
【００３２】
また、マルチコアマイコン１によれば、ローカルＲＡＭ１２，２２，３２のうちの任意のローカルＲＡＭに異常が発生した場合でも、異常なローカルＲＡＭと同じＣＰＵ内のＣＰＵコアで正常な他のローカルＲＡＭを使用してアプリケーションを継続して実行するので、他のＣＰＵコアの処理負荷を高めることなく、アプリケーション（制御）を継続させることができる。
【００３３】
また、マルチコアマイコン１によれば、ＣＰＵ１０，２０，３０間で相互監視を行うので、監視専用のＣＰＵ（プロセッサ）を必要とせず、コストを低減できる。この相互監視では、各ＣＰＵで他の２個のＣＰＵをそれぞれ監視しているので、監視の精度も高い。
【００３４】
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
【００３５】
例えば、本実施の形態では車両に搭載され、車両の各種制御を行うためのマルチコアマイコンに適用したが、飛行機などの他の移動体、産業機械、電気製品などの様々な分野で使われているマルチプロセッサシステムに適用可能である。
【００３６】
また、本実施の形態ではエンジン制御などのＥＣＵのマルチコアマイコンに適用し、ＥＣＵでの各制御を行うためのアプリケーションを３個のＣＰＵに割り当てる構成としたが、車両における各種車両制御（エンジン制御、ブレーキ制御、操舵制御など）、通信制御、ナビゲーション制御、マルチメディア制御などを統括して行うマルチプロセッサシステムに適用し、各種車両制御、通信制御、ナビゲーション制御、マルチメディア制御などのアプリケーションをマルチプロセッサシステムの複数のＣＰＵに割り当てる構成としてもよい。
【００３７】
また、本実施の形態では各制御が割り当てられているＣＰＵ同士が相互監視する構成としたが、監視などを行う専用のＣＰＵ（プロセッサ）を備える構成としてもよい。このような、専用の監視手段を備える場合、常時、監視を行うことができる。
【００３８】
また、本実施の形態ではあるＣＰＵで他のＣＰＵのＣＰＵコアの異常を検出した場合にはその異常を検出したＣＰＵ自身のＣＰＵコアで異常のＣＰＵコアのアプリケーションを実行する構成としたが、その異常を検出したＣＰＵ自身のＣＰＵコアではなく、正常に動作しているその他のＣＰＵコアで異常のＣＰＵコアのアプリケーションを実行するようにしてもよい。
【００３９】
また、本実施の形態ではあるＣＰＵで他のＣＰＵのローカルＲＡＭの異常を検出した場合にはその異常を検出したＣＰＵ自身のローカルＲＡＭを使用させる構成としたが、その異常を検出したＣＰＵ自身のローカルＲＡＭではなく、正常なその他のローカルＲＡＭを使用させるようにしてもよい。
【００４０】
また、本実施の形態ではＣＰＵコアに加えてローカルＲＡＭも監視する構成としたが、ＣＰＵコアだけを監視する構成としてもよい。
【００４１】
また、本実施の形態では３個のＣＰＵ（ＣＰＵコア）を備える構成としたが、２個のＣＰＵあるいは４個以上のＣＰＵを備える構成としてもよい。
【００４２】
また、ＣＰＵの監視を行う場合にＣＰＵコアを内部機能単位やローカルＲＡＭをエリア毎に細かく異常判定することにより、ＣＰＵコアの所定の内部機能単位で異常と判定した場合あるいはローカルＲＡＭの所定のエリアで異常と判定した場合にはその異常に関係する最低限必要な処理（アプリケーション）だけを他のＣＰＵコアに移動させるように細分化してもよい。これによって、他のＣＰＵコアの処理負荷が高くなるのを抑制できる。
【符号の説明】
【００４３】
１…マルチコアマイコン、１０…第１ＣＰＵ、１１…第１ＣＰＵコア、１２…第１ローカルＲＡＭ、２０…第２ＣＰＵ、２１…第２ＣＰＵコア、２２…第２ローカルＲＡＭ、３０…第３ＣＰＵ、３１…第３ＣＰＵコア、３２…第３ローカルＲＡＭ
【図１】
2011065528.tif 000003
【図２】
2011065528.tif 000004