(57)【要約】【課題】冗長動作を継続させて信頼性の低下を抑制することが可能なマイクロコンピュータを提供すること。【解決手段】一実施の形態によれば、マイクロコンピュータ１は、通常動作モードでメインコア１１及びチェッカーコア１２のそれぞれの出力を比較する出力比較部１４と、不一致箇所特定モードでメインコア１１及びチェッカーコア１２のそれぞれのスキャンチェーンの出力を比較するシフト結果比較部１６と、複数のフリップフロップと複数の機能ブロックとの情報が格納されたテーブルを記憶するテーブル記憶部１７と、通常動作モードにて、出力比較部１４により不一致が検出された場合に不一致箇所特定モードにモードを切り替えるとともに、不一致箇所特定モードにて、シフト結果比較部１６の比較結果に基づき特定されたフリップフロップに対応する機能ブロックを前記テーブルの中から抽出し、当該機能ブロックの機能を停止させる制御部１５と、を備える。【選択図】図１
2014132384.tif 000002
【特許請求の範囲】
【請求項１】
スキャンチェーンを構成する複数のフリップフロップを有する第１ＣＰＵコアと、
前記第１ＣＰＵコアと冗長な構成を有する第２ＣＰＵコアと、
通常動作モードの場合に、前記第１及び前記第２ＣＰＵコアのそれぞれの出力を比較する第１比較部と、
不一致箇所特定モードの場合に、前記第１及び前記第２ＣＰＵコアのそれぞれのスキャンチェーンの出力を比較する第２比較部と、
前記複数のフリップフロップと、当該複数のフリップフロップに対応する複数の機能ブロックと、の情報が格納されたテーブルを記憶する記憶部と、
通常動作モードにおいて前記第１比較部により不一致が検出された場合に通常動作モードから不一致箇所特定モードにモードを切り替えるとともに、不一致箇所特定モードにおいて前記第２比較部の比較結果に基づき特定されたフリップフロップに対応する機能ブロックを前記テーブルの中から抽出し、当該機能ブロックの機能を停止させる制御部と、を備えたマイクロコンピュータ。
【請求項２】
前記制御部は、機能が停止している前記機能ブロックのみを対象としたパーシャルスキャンテストを行う、請求項１に記載のマイクロコンピュータ。
【請求項３】
前記制御部は、機能が停止している前記機能ブロックのみを対象としたパーシャルスキャンテストで故障が検出されなかった場合、当該機能ブロックの機能を復活させる、請求項２に記載のマイクロコンピュータ。
【請求項４】
前記制御部は、不一致箇所特定モードにおいて前記第２比較部により不一致が検出されなかった場合、前記第１及び前記第２ＣＰＵコアのフルスキャンテストを行う、請求項１に記載のマイクロコンピュータ。
【請求項５】
前記第２比較部の比較結果に基づき特定されたフリップフロップに対応する機能ブロックがキャッシュに関連する機能ブロックである場合、当該キャッシュの使用を禁止することで当該機能ブロックの機能を停止させる、請求項１に記載のマイクロコンピュータ。
【請求項６】
前記第２比較部の比較結果に基づき特定されたフリップフロップに対応する機能ブロックがキャッシュに関連する機能ブロックである場合、当該キャッシュを迂回して前記第１ＣＰＵコアからメモリに直接アクセスさせることで当該機能ブロックの機能を停止させる、請求項１に記載のマイクロコンピュータ。
【請求項７】
前記第２比較部の比較結果に基づき特定されたフリップフロップに対応する機能ブロックがペリフェラルバスへのアクセスに関連する機能ブロックである場合、当該機能ブロックからペリフェラルバスへの出力をマスクすることで当該機能ブロックの機能を停止させる、請求項１に記載のマイクロコンピュータ。
【請求項８】
前記第２比較部の比較結果に基づき特定されたフリップフロップに対応する機能ブロックがメモリへのアクセスに関連する機能ブロックである場合、当該機能ブロックからメモリへの出力をマスクすることで当該機能ブロックの機能を停止させる、請求項１に記載のマイクロコンピュータ。
【請求項９】
スキャンチェーンを構成する複数のフリップフロップを有する第１ＣＰＵコアと、
前記第１ＣＰＵコアと冗長な構成を有する第２ＣＰＵコアと、
通常動作モードの場合に、前記第１及び前記第２ＣＰＵコアのそれぞれの出力を比較する第１比較部と、
不一致箇所特定モードの場合に、前記第１及び前記第２ＣＰＵコアのそれぞれのスキャンチェーンの出力を比較する第２比較部と、
前記複数のフリップフロップと、当該複数のフリップフロップに対応する複数の機能ブロックと、の情報が格納されたテーブルを記憶する記憶部と、
制御部と、を備えたマイクロコンピュータの制御方法であって、
通常動作モードにおいて前記第１比較部により不一致が検出された場合に通常動作モードから不一致箇所特定モードにモードを切り替え、
不一致箇所特定モードにおいて前記第２比較部の比較結果に基づき前記複数のフリップフロップのうち何れかのフリップフロップを特定し、
特定されたフリップフロップに対応する機能ブロックを前記テーブルの中から抽出して当該機能ブロックの機能を停止させる、マイクロコンピュータの制御方法。
【請求項１０】
機能が停止している前記機能ブロックのみを対象としたパーシャルスキャンテストを行う、請求項９に記載のマイクロコンピュータの制御方法。
【請求項１１】
機能が停止している前記機能ブロックのみを対象としたパーシャルスキャンテストで故障が検出されなかった場合、当該機能ブロックの機能を復活させる、請求項１０に記載のマイクロコンピュータの制御方法。
【請求項１２】
不一致箇所特定モードにおいて前記第２比較部により不一致が検出されなかった場合、前記第１及び前記第２ＣＰＵコアのフルスキャンテストを行う、請求項９に記載のマイクロコンピュータの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロコンピュータ及びその制御方法に関する。
【背景技術】
【０００２】
ＣＰＵを搭載したマイクロコンピュータは信頼性の高い動作をすることが求められる。
【０００３】
例えば、特許文献１には、スキャンパスを有するＣＰＵを備えた情報処理装置が開示されている。この情報処理装置は、スキャンテストによりＣＰＵの故障を検出することで、信頼性の低下を抑制している。
【０００４】
また、特許文献２には、モジュールを冗長化した冗長システムが開示されている。この冗長システムは、冗長化された複数のモジュールの出力を比較して異常を検出することで信頼性の低下を抑制している。
【０００５】
さらに、特許文献３には、二重化された演算部のうち一方の演算部に障害が発生した場合に、障害が発生していない他方の演算部のみを動作させる二重化計算機システムが開示されている。それにより、この二重化計算機システムは、信頼性の低下を抑制している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−３１９７２６号公報
【特許文献２】特開平１０−１３３９００号公報
【特許文献３】特開平８−２２３９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献３に開示された関連技術の構成は、二重化された演算部のうち一方の演算部に障害が発生した場合に、障害が発生していない他方の演算部のみを単独で動作させている。それにより、この関連技術の構成は、一方の演算部に障害が発生した場合に冗長動作を継続させることができないため、信頼性の低下を抑制することができないという問題があった。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、マイクロコンピュータは、第１及び第２ＣＰＵコアと、通常動作モード時に前記第１及び前記第２ＣＰＵコアのそれぞれの出力を比較する第１比較部と、不一致箇所特定モードの場合に前記第１及び前記第２ＣＰＵコアのそれぞれのスキャンチェーンの出力を比較する第２比較部と、複数のフリップフロップと複数の機能ブロックとの情報が格納されたテーブルを記憶する記憶部と、通常動作モードにおいて前記第１比較部により不一致が検出された場合に通常動作モードから不一致箇所特定モードにモードを切り替えるとともに、不一致箇所特定モードにおいて前記第２比較部の比較結果に基づき特定されたフリップフロップに対応する機能ブロックを前記テーブルの中から抽出し、当該機能ブロックの機能を停止させる制御部と、を備える。
【０００９】
また、一実施の形態によれば、マイクロコンピュータの制御方法は、第１及び第２ＣＰＵコアと、通常動作モードの場合に前記第１及び前記第２ＣＰＵコアのそれぞれの出力を比較する第１比較部と、不一致箇所特定モードの場合に前記第１及び前記第２ＣＰＵコアのそれぞれのスキャンチェーンの出力を比較する第２比較部と、前記複数のフリップフロップと複数の機能ブロックとの情報が格納されたテーブルを記憶する記憶部と、制御部と、を備えたマイクロコンピュータの制御方法であって、通常動作モードにおいて前記第１比較部により不一致が検出された場合に通常動作モードから不一致箇所特定モードにモードを切り替え、不一致箇所特定モードにおいて前記第２比較部の比較結果に基づき前記複数のフリップフロップのうち何れかのフリップフロップを特定し、特定されたフリップフロップに対応する機能ブロックを前記テーブルの中から抽出して当該機能ブロックの機能を停止させる。
【発明の効果】
【００１０】
前記一実施の形態によれば、冗長動作を継続させることで信頼性の低下を抑制することが可能なマイクロコンピュータ及びその制御方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１にかかるマイクロコンピュータの構成例を示すブロック図である。
【図２】実施の形態１にかかるテーブル記憶部に記憶されたテーブルの一例を示す図である。
【図３】実施の形態１にかかるマイクロコンピュータの動作を示すフローチャートである。
【図４】実施の形態１にかかるＣＰＵコアの一部の構成例を示す概略ブロック図である。
【図５】図４に示すＣＰＵコアに対応するテーブルの一例を示す図である。
【図６】実施の形態２にかかるマイクロコンピュータの構成例を示すブロック図である。
【図７】実施の形態２にかかるＣＰＵコアの一部の構成例を示す概略ブロック図である。
【図８】実施の形態２にかかるマイクロコンピュータの動作を示すフローチャートである。
【図９】実施の形態３にかかるマイクロコンピュータの構成例を示すブロック図である。
【図１０】実施の形態３にかかるマイクロコンピュータの動作を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
【００１３】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１４】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１５】
＜実施の形態１＞
図１は、実施の形態１にかかるマイクロコンピュータの構成例を示すブロック図である。本実施の形態にかかるマイクロコンピュータは、第１及び第２ＣＰＵコアのそれぞれの処理結果が一致しない場合、第１及び第２ＣＰＵコアのそれぞれのスキャンチェーンの出力を比較することにより不一致箇所を特定して、不一致箇所に対応する機能ブロックの機能を停止させる。それにより、本実施の形態にかかるマイクロコンピュータは、一方のＣＰＵコアの一部が故障した場合でも冗長動作を継続させることができるため、信頼性の低下を抑制することができる。以下、具体的に説明する。
【００１６】
図１に示すマイクロコンピュータ１は、メインのＣＰＵコア（第１ＣＰＵコア；以下、メインコアと称す）１１と、サブのＣＰＵコア（第２ＣＰＵコア；以下、チェッカーコアと称す）１２と、出力制御部１３と、出力比較部（第１比較部）１４と、制御部１５と、シフト結果比較部（第２比較部）１６と、テーブル記憶部（記憶部）１７と、を備える。制御部１５は、故障箇所診断制御部１５１と、クロック切替部１５２と、カウンタ（ＣＮＴ）１５３と、を有する。
【００１７】
マイクロコンピュータ１は、メインコア１１とチェッカーコア１２とからなるロックステップデュアルコア構成を採用している。ここで、ロックステップデュアルコア構成とは、２つのＣＰＵコアに同じ処理を実行させてそれぞれの処理結果の差を比較することで不具合の有無を検出する構成のことである。
【００１８】
（メインコア１１）
メインコア１１は、命令メモリ（不図示）に格納された複数の命令（プログラム）を順次読み込み（フェッチし）、当該命令に従った処理を実行する。例えば、メインコア１１は、命令に従った処理を実行することにより生成されたデータをメモリ（不図示）に書き込んだり、命令に従った処理を実行することで必要になったデータをメモリから読み出したりする。あるいは、メインコア１１は、命令に従った処理の処理結果をペリフェラルバスを介して周辺回路に出力したりもする。
【００１９】
（チェッカーコア１２）
チェッカーコア１２は、メインコア１１と冗長な構成を有している。換言すると、チェッカーコア１２は、メインコア１１と同等の性能及び機能を有している。そして、チェッカーコア１２は、上記したように、メインコア１１とほぼ同時に同じ処理を実行する。
【００２０】
なお、チェッカーコア１２は、メインコア１１と全く同一の構成を有している必要はなく、メインコア１１と同等の性能及び機能を実現可能であればクロックタイミングや遅延量等を変更してもよい。以下では、説明の簡略化のため、チェッカーコア１２とメインコア１１とが同一の構成を有している場合を例に説明する。
【００２１】
図１に示すように、メインコア１１は、テスト用のスキャンチェーンを構成する複数のフリップフロップと、複数の組み合わせ回路（不図示）と、を備える。同じく、チェッカーコア１２は、テスト用のスキャンチェーンを構成する複数のフリップフロップと、複数の組み合わせ回路（不図示）と、を備える。なお、図１の例では、各ＣＰＵコアが２００個のフリップフロップＦＦ１〜ＦＦ２００を備えている。また、図１の例では、スキャンチェーンの経路のみが示されている。
【００２２】
（出力制御部１３）
出力制御部１３は、後述する制御部１５からの制御信号ＣＴＬ１に基づいて、メインコア１１及びチェッカーコア１２のそれぞれの処理結果（出力結果）を後段（出力比較部１４及び図示しない周辺回路）に出力するか否かを制御する部である。例えば、出力制御部１３は、通常動作モードでは、メインコア１１及びチェッカーコア１２のすべての処理結果を後段に出力し、セーフモードでは、制御信号ＣＴＬ１に基づき一部の処理結果をマスクして後段に出力する。
【００２３】
（出力比較部１４）
出力比較部１４は、通常動作モードの場合に、メインコア１１及びチェッカーコア１２のそれぞれの処理結果を比較する部である。例えば、出力比較部１４は、メインコア１１及びチェッカーコア１２のそれぞれの処理結果が一致する場合、Ｌレベルの比較結果Ｘ１を出力し、メインコア１１及びチェッカーコア１２のそれぞれの処理結果が不一致の場合、Ｈレベルの比較結果Ｘ１を出力する。
【００２４】
（シフト結果比較部１６）
シフト結果比較部１６は、故障箇所特定モードの場合に、メインコア１１及びチェッカーコア１２のそれぞれのスキャンチェーンの出力を比較する部である。例えば、シフト結果比較部１６は、メインコア１１及びチェッカーコア１２のそれぞれのスキャンチェーンの出力が一致する場合、Ｌレベルの比較結果Ｘ２を出力し、メインコア１１及びチェッカーコア１２のそれぞれのスキャンチェーンの出力が不一致の場合、Ｈレベルの比較結果Ｘ２を出力する。
【００２５】
（テーブル記憶部１７）
テーブル記憶部１７は、メインコア１１（又はチェッカーコア１２）に設けられた複数のフリップフロップＦＦ１〜ＦＦ２００と、それらに対応する複数の機能ブロックと、の情報が格納されたテーブルを記憶する。
【００２６】
図２は、テーブルの一例を示す図である。図２の例では、フリップフロップＦＦ１〜ＦＦ３と、それらに対応する機能ブロックとして、キャッシュに関連する機能ブロック（Cache control）と、がテーブルに格納されている。また、フリップフロップＦＦ４，ＦＦ５と、それらに対応する機能ブロックとして、ペリフェラルバスへのアクセスに関連する機能ブロック（peripheral bus bridge）と、がテーブルに格納されている。また、フリップフロップＦＦ１９５〜ＦＦ１９７と、それらに対応する機能ブロックとして、メモリへのデータアクセスに関連する機能ブロック（Load/Store Unit）と、がテーブルに格納されている。また、フリップフロップＦＦ１９８〜ＦＦ２００と、それらに対応する機能ブロックとして、メモリへのアドレスアクセスに関連する機能ブロック（Slave Address Transfer Unit）と、がテーブルに格納されている。
【００２７】
さらに、図２の例では、キャッシュに関連する機能ブロックが故障した場合の対処情報として、キャッシュの使用を禁止する（cache disable）ことで当該機能ブロックの機能を停止させる旨の対処情報がテーブルに格納されている。より詳細には、キャッシュに関連する機能ブロックが故障した場合の対処情報として、キャッシュを迂回してメインコア１１等からメモリ（不図示）に直接アクセスさせることで当該機能ブロックの機能を停止させる旨の対処情報がテーブルに格納されている。
【００２８】
また、ペリフェラルバスへのアクセスに関連する機能ブロックが故障した場合の対処情報として、当該機能ブロックからペリフェラルバスへの出力をマスクすることで当該機能ブロックの機能を停止させる旨の対処情報がテーブルに格納されている。
【００２９】
また、メモリへのデータアクセスに関連する機能ブロックが故障した場合の対処情報として、当該機能ブロックからメモリへのデータ出力をマスクすることで当該機能ブロックの機能を停止させる旨の対処情報がテーブルに格納されている。
【００３０】
また、メモリへのアドレスアクセスに関連する機能ブロックが故障した場合の対処情報として、当該機能ブロックからメモリへのアドレス出力をマスクすることで当該機能ブロックの機能を停止させる旨の対処情報がテーブルに格納されている。
【００３１】
（制御部１５）
制御部１５は、通常動作モードにおいて、出力比較部１４によりメインコア１１及びチェッカーコア１２のそれぞれの処理結果の不一致が検出された場合に、通常動作モードから故障箇所特定モードにモードを切り替える。そして、制御部１５は、故障箇所特定モードにおいて、シフト結果比較部１６の比較結果Ｘ２に基づいて複数のフリップフロップＦＦ１〜ＦＦ２００の中から出力不一致のフリップフロップ（メインコア１１とチェッカーコア１２とで出力が一致しないフリップフロップ）を特定する。そして、制御部１５は、特定されたフリップフロップに対応する機能ブロックをテーブルの中から抽出し、当該機能ブロックの機能を停止させる。以下、制御部１５について詳細に説明する。
【００３２】
（制御部１５の詳細）
故障箇所診断制御部１５１は、出力比較部１４の比較結果Ｘ１に応じた制御信号ＣＴＬ１，ＣＴＬ２、モード切替信号ＭＳ１、及び、クロック切替信号ＣＳ１を出力する。
【００３３】
例えば、出力比較部１４の比較結果Ｘ１がＬレベルの場合（即ち、メインコア１１及びチェッカーコア１２のそれぞれの処理結果が一致する場合）、故障箇所診断制御部１５１は、通常動作モードを維持するように、制御信号ＣＴＬ１，ＣＴＬ２、モード切替信号ＭＳ１、及び、クロック切替信号ＣＳ１を出力する。
【００３４】
それにより、クロック切替部１５２は、（クロック切替信号ＣＳ１に基づき）通常動作用のクロック信号ＣＬＫを出力する。メインコア１１及びチェッカーコア１２は、（制御信号ＣＴＬ２に基づき）すべての機能ブロックの機能をアクティブにした状態で、（モード切替信号ＭＳ１に基づき）通常動作の処理をクロック信号ＣＬＫに同期して行う。また、出力制御部１３は、（制御信号ＣＴＬ１に基づき）メインコア１１及びチェッカーコア１２のすべての処理結果を後段に出力する。
【００３５】
一方、出力比較部１４の比較結果Ｘ１がＨレベルの場合（即ち、メインコア１１及びチェッカーコア１２のそれぞれの処理結果が不一致の場合）、故障箇所診断制御部１５１は、通常動作モードから故障箇所検出モードにモードを切り替えるように、制御信号ＣＴＬ１，ＣＴＬ２、モード切替信号ＭＳ１、及び、クロック切替信号ＣＳ１を出力する。
【００３６】
それにより、クロック切替部１５２は、（クロック切替信号ＣＳ１に基づき）クロック信号ＣＬＫからスキャンシフト用のクロック信号ＴＣＬＫにクロック信号を切り替えて出力する。メインコア１１及びチェッカーコア１２は、（制御信号ＣＴＬ２に基づき）すべての機能ブロックの機能をアクティブにした状態で、（モード切替信号ＭＳ１に基づき）スキャンシフト動作の処理をクロック信号ＴＣＬＫに同期して行う。それにより、各ＣＰＵコアに設けられた複数のフリップフロップＦＦ１〜ＦＦ２００の出力値がスキャンチェーンを介して順にシフト結果比較部１６に出力される。また、カウンタ１５３は、クロック信号ＴＣＬＫに同期してカウントアップ動作を開始する。なお、出力制御部１３は、例えば、（制御信号ＣＴＬ１に基づき）メインコア１１及びチェッカーコア１２のすべての処理結果をマスクする。
【００３７】
その後、故障箇所診断制御部１５１は、シフト結果比較部１６により不一致が検出されたときのカウンタ１５３のカウント値により、出力不一致のフリップフロップを特定する。そして、故障箇所診断制御部１５１は、特定されたフリップフロップに対応する機能ブロックをテーブル記憶部１７に記憶されたテーブルの中から抽出し、制御信号ＣＴＬ１，ＣＴＬ２を用いて当該機能ブロックの機能を停止させる。その後、故障箇所診断制御部１５１は、故障箇所検出モードからセーフモードにモードを切り替えて動作を継続する。セーフモードは、制御信号ＣＴＬ１，ＣＴＬ２を用いて当該機能ブロックの機能を停止させる以外、通常動作モードの場合と同様である。つまり、一部の機能ブロックを停止させた状態で冗長動作が継続される。
【００３８】
（マイクロコンピュータ１の動作）
続いて、図３を参照して、マイクロコンピュータ１の動作を説明する。図３は、マイクロコンピュータ１の動作を示すフローチャートである。
【００３９】
まず、マイクロコンピュータ１は、通常動作モードにて動作を開始する（図３のステップＳ１０１）。具体的には、通常動作モードでは、クロック切替部１５２は、クロック信号ＣＬＫを出力する。メインコア１１及びチェッカーコア１２は、すべての機能ブロックの機能をアクティブにした状態で、通常動作の処理をクロック信号ＣＬＫに同期して行う。また、出力制御部１３は、メインコア１１及びチェッカーコア１２のすべての処理結果を後段に出力する。それにより、出力比較部１４は、メインコア１１及びチェッカーコア１２のそれぞれの処理結果を比較する（図３のステップＳ１０２）。
【００４０】
例えば、出力比較部１４は、メインコア１１及びチェッカーコア１２のそれぞれの処理結果が一致する場合（図３のステップＳ１０３のＮＯ）、Ｌレベルの比較結果Ｘ１を出力し、メインコア１１及びチェッカーコア１２のそれぞれの処理結果が不一致の場合（図３のステップＳ１０３のＹＥＳ）、Ｈレベルの比較結果Ｘ１を出力する。
【００４１】
例えば、出力比較部１４からＬレベルの比較結果Ｘ１が出力された場合（図３のステップＳ１０３のＮＯ）、通常動作モードは維持される。一方、出力比較部１４からＨレベルの比較結果Ｘ１が出力された場合（図３のステップＳ１０３のＹＥＳ）、通常動作モードから不一致箇所特定モードにモードが移行する（図３のステップＳ１０４）。
【００４２】
通常動作モードから不一致箇所特定モードにモードが切り替わると、クロック切替部１５２は、クロック信号ＣＬＫからスキャンシフト用のクロック信号ＴＣＬＫにクロック信号を切り替えて出力する（図３のステップＳ１０５）。メインコア１１及びチェッカーコア１２は、すべての機能ブロックの機能をアクティブに維持した状態で、スキャンシフト動作の処理をクロック信号ＴＣＬＫに同期して行う。それにより、各ＣＰＵコアに設けられた複数のフリップフロップＦＦ１〜ＦＦ２００の出力値がスキャンチェーンを介して順にシフト結果比較部１６に出力される（図３のステップＳ１０６）。また、カウンタ１５３は、クロック信号ＴＣＬＫに同期してカウントアップ動作を開始する（図３のステップＳ１０６）。なお、出力制御部１３は、例えば、メインコア１１及びチェッカーコア１２のすべての処理結果をマスクする。
【００４３】
その後、故障箇所診断制御部１５１は、カウンタ１５３のカウント値と、シフト結果比較部１６の比較結果Ｘ２と、に基づいて出力不一致のフリップフロップを複数のフリップフロップＦＦ１〜ＦＦ２００の中から特定する（図３のステップＳ１０７）。より具体的には、故障箇所診断制御部１５１は、シフト結果比較部１６により不一致が検出されたときのカウンタ１５３のカウント値により出力不一致のフリップフロップを特定する。
【００４４】
そして、故障箇所診断制御部１５１は、特定されたフリップフロップに対応する機能ブロックをテーブル記憶部１７に記憶されたテーブルの中から抽出し、制御信号ＣＴＬ１，ＣＴＬ２を用いて当該機能ブロックの機能を停止させる（図３のステップＳ１０８）。
【００４５】
例えば、故障箇所診断制御部１５１は、出力が一致しないフリップフロップとしてフリップフロップＦＦ１を特定した場合、テーブル記憶部１７に記憶されたテーブルの中からキャッシュに関連する機能ブロックを抽出して、当該機能ブロックの機能を停止させる。
【００４６】
その後、故障箇所検出モードからセーフモードにモードが移行する（図３のステップＳ１０９）。セーフモードは、制御信号ＣＴＬ１，ＣＴＬ２に基づき抽出された機能ブロックの機能を停止させる以外、通常動作モードの場合と同様である。つまり、マイクロコンピュータ１は、制御信号ＣＴＬ１，ＣＴＬ２を用いて一部の機能ブロックの機能を停止させた状態でメインコア１１及びチェッカーコア１２の冗長動作を継続させる。
【００４７】
このように、本実施の形態にかかるマイクロコンピュータ１は、メインコア１１及びチェッカーコア１２のそれぞれの処理結果が一致しない場合、メインコア１１及びチェッカーコア１２のそれぞれのスキャンチェーンの出力を比較することにより不一致箇所を特定して、当該不一致箇所に対応する機能ブロックの機能を停止させる。それにより、本実施の形態にかかるマイクロコンピュータ１は、メインコア１１及びチェッカーコア１２の一部が故障した場合でも冗長動作を継続させることができるため、信頼性の低下を抑制することができる。
【００４８】
（テーブルの詳細）
次に、図４及び図５を参照して、テーブルに格納されるフリップフロップ及びそれに対応する機能ブロックの関係を詳細に説明する。図４は、メインコア１１の一部の構成例を示す概略ブロック図である。図５は、図４に示すメインコア１１に対応するテーブルの一例を示す図である。なお、図４の例では、スキャンチェーンの経路のみが示されている。
【００４９】
図４に示すメインコア１１は、フリップフロップＦＦ１〜ＦＦ１１を有する。フリップフロップＦＦ１〜ＦＦ３は、機能ブロックＡ内に設けられている。フリップフロップＦＦ４〜ＦＦ９は、機能ブロックＢ内に設けられている。フリップフロップＦＦ１０〜ＦＦ１１は、機能ブロックＣ内に設けられている。
【００５０】
また、図４の例では、通常動作モードにおいて、機能ブロックＢ内に設けられたフリップフロップＦＦ４〜ＦＦ９のうちフリップフロップＦＦ７〜ＦＦ９が、機能ブロックＣの出力の影響を受けて動作し、フリップフロップＦＦ４〜ＦＦ６が、機能ブロックＣの出力の影響を受けずに動作するものとする。また、機能ブロックＡ，Ｃは他の機能ブロックの出力の影響を受けずに単独で動作するものとする。
【００５１】
本実施の形態にかかるマイクロコンピュータ１では、不一致箇所として特定されたフリップフロップと、実際の故障箇所と、が異なる場合がある。そこで、テーブルに格納されるフリップフロップ及びそれに対応する機能ブロックの関係は、以下のようにして決定される。
【００５２】
例えば、機能ブロックＡに設けられたフリップフロップＦＦ１〜ＦＦ３の何れかが不一致箇所として特定された場合、前述のように機能ブロックＡは他の機能ブロックの出力の影響を受けないことから、実際の故障箇所も機能ブロックＡ内に存在することになる。したがって、テーブルには、フリップフロップＦＦ１〜ＦＦ３に対応する機能ブロックとして「機能ブロックＡ」が格納される（図５参照）。
【００５３】
また、機能ブロックＢに設けられたフリップフロップＦＦ４〜ＦＦ６の何れかが不一致箇所として特定された場合、前述のようにフリップフロップＦＦ４〜ＦＦ６は他の機能ブロックの影響を受けないことから、実際の故障箇所も機能ブロックＢ内に存在することになる。したがって、テーブルには、フリップフロップＦＦ４〜ＦＦ６に対応する機能ブロックとして「機能ブロックＢ」が格納される（図５参照）。
【００５４】
また、機能ブロックＢに設けられたフリップフロップＦＦ７〜ＦＦ９の何れかが不一致箇所として特定された場合、前述のようにフリップフロップＦＦ７〜ＦＦ９は機能ブロックＣの影響を受けることから、実際の故障箇所は機能ブロックＢだけでなく機能ブロックＣ内にも存在する可能性がある。したがって、テーブルには、フリップフロップＦＦ７〜ＦＦ９に対応する機能ブロックとして「機能ブロックＢ，Ｃ」が格納される（図５参照）。
【００５５】
また、機能ブロックＣに設けられたフリップフロップＦＦ１０，ＦＦ１１の何れかが不一致箇所として特定された場合、機能ブロックＣは他の機能ブロックの出力の影響を受けないことから、実際の故障箇所も機能ブロックＣ内に存在することになる。したがって、テーブルには、フリップフロップＦＦ１０，ＦＦ１１に対応する機能ブロックとして「機能ブロックＣ」が格納される（図５参照）。
【００５６】
このようにして、テーブルに格納されるフリップフロップ及びそれに対応する機能ブロックの関係が決定される。
【００５７】
＜実施の形態２＞
図６は、実施の形態２にかかるマイクロコンピュータ２の構成例を示すブロック図である。図６に示すマイクロコンピュータ２は、図１に示すマイクロコンピュータ１と比較して、制御部１５内にエラー管理部１８をさらに備える。以下、具体的に説明する。
【００５８】
エラー管理部１８は、セーフモードにおいて、機能が停止している機能ブロックのみを対象としたパーシャルスキャンテストを行う機能を有する。
【００５９】
図７は、マイクロコンピュータ２に設けられたメインコア１１及びチェッカーコア１２の一部の構成例を示す概略ブロック図である。
【００６０】
図７に示すように、メインコア１１は、機能が停止している機能ブロックＡ１と、マルチプレクサＭＸ１と、デマルチプレクサＤＭＸ１と、少なくとも備える。チェッカーコア１２は、同じく、機能が停止している機能ブロックＡ２と、マルチプレクサＭＸ２と、デマルチプレクサＤＭＸ２と、を少なくとも備える。
【００６１】
また、マイクロコンピュータ２の内部又は外部には、パタン生成部３１及び故障検出部３２が設けられる。パタン生成部３１は、スキャンテスト用のテストパタンＴＩと、スキャンテストを行うか否かを制御するスキャンイネーブル信号ＴＥと、を生成する。故障検出部３２は、スキャンテストの出力結果ＴＯ１，ＴＯ２と、期待値と、を比較して故障箇所を検出する。
【００６２】
例えば、スキャンテストを行う場合、マルチプレクサＭＸ１，ＭＸ２は、何れもテストパタンＴＩを選択してそれぞれ機能ブロックＡ１，Ａ２に対して出力する。デマルチプレクサＤＭＸ１，ＤＭＸ２は、それぞれ機能ブロックＡ１，Ａ２の出力結果（スキャンテスト結果）ＴＯ１，ＴＯ２を故障検出部３２に対して供給する。なお、各機能ブロックＡ１，Ａ２では、一般的なスキャンテストの場合と同様に、スキャンシフト動作、キャプチャ動作、スキャンシフト動作、が順に行われる。
【００６３】
一方、スキャンテストを行わない場合、マルチプレクサＭＸ１，ＭＸ２は、何れも入力信号ＤＩＮを選択してそれぞれ機能ブロックＡ１，Ａ２に対して出力する。また、デマルチプレクサＤＭＸ１，ＤＭＸ２は、それぞれ機能ブロックＡ１，Ａ２の出力結果ＤＯ１，ＤＯ２を後段（周辺回路等）に出力する。
【００６４】
続いて、図８を参照して、マイクロコンピュータ２の動作を説明する。図８は、マイクロコンピュータ２の動作を示すフローチャートである。
【００６５】
セーフモードにおいて、マイクロコンピュータ２は、機能が停止している機能ブロックＡ１，Ａ２のみを対象としたパーシャルスキャンテストを実施する（図８のステップＳ２１０）。それにより、より高精度な故障検出がなされる。
【００６６】
例えば、パーシャルスキャンテストにより故障が検出された場合（図８のステップＳ２１１のＹＥＳ）、マイクロコンピュータ２は、機能ブロックＡ１，Ａ２の機能を停止させた状態で動作を継続する。つまり、セーフモードが維持される（図８のステップＳ２１２）。
【００６７】
一方、パーシャルスキャンテストにより故障が検出されなかった場合（図８のステップＳ２１１のＮＯ）、マイクロコンピュータ２は、機能ブロックＡ１，Ａ２の機能を復活させて動作を開始する。つまり、セーフモードから通常動作モードにモードが移行する（図８のステップＳ２１３）。
【００６８】
マイクロコンピュータ２のその他の動作については、マイクロコンピュータ１の場合と同様であるため、その説明を省略する。
【００６９】
本実施の形態にかかるマイクロコンピュータ２は、実施の形態１にかかるマイクロコンピュータ１と同等の効果を奏することができる。さらに、本実施の形態にかかるマイクロコンピュータ２は、セーフモードにおいて、機能が停止している機能ブロックのみを対象としたパーシャルスキャンテストを行う。それにより、本実施の形態にかかるマイクロコンピュータ２は、冗長動作を停止させることなく、機能が停止している機能ブロックのより精度の高い故障検出を行うことができる。
【００７０】
なお、本実施の形態では、機能が停止している機能ブロックのパーシャルスキャンテスト（ハードウェアテスト）を行う場合を例に説明したが、これに限られない。機能が停止している機能ブロックのソフトウェアテストを行ってもよい。
【００７１】
＜実施の形態３＞
図９は、実施の形態３にかかるマイクロコンピュータ３の構成例を示すブロック図である。図９に示すマイクロコンピュータ３は、図１に示すマイクロコンピュータ１と比較して、制御部１５内にエラー管理部１９をさらに備える。以下、具体的に説明する。
【００７２】
エラー管理部１９は、不一致箇所特定モードにおいてシフト結果比較部１６により不一致が検出されなかった場合、メインコア１１及びチェッカーコア１２のフルスキャンテストを行う機能を有する。エラー管理部１９は、マイクロコンピュータ３の内部又は外部に設けられたパタン生成部及び故障検出部（何れも不図示）を用いてメインコア１１及びチェッカーコア１２のフルスキャンテストを行う。
【００７３】
続いて、図１０を参照して、実施の形態３にかかるマイクロコンピュータ３の動作を説明する。図１０は、マイクロコンピュータ３の動作を示すフローチャートである。
【００７４】
不一致箇所特定モードにおいて、故障箇所診断制御部１５１は、シフト結果比較部１６により不一致が検出されたときのカウンタ１５３のカウント値により、出力不一致のフリップフロップを特定する（図１０のステップＳ１０７）。
【００７５】
ここで、出力不一致のフリップフロップが特定された場合（図１０のステップＳ１０７のＹＥＳ）、マイクロコンピュータ１の場合と同様の処理が実行される（図１０のステップＳ１０８，Ｓ１０９）。
【００７６】
一方、出力不一致のフリップフロップが特定されなかった場合（図１０のステップＳ１０７のＮＯ）、マイクロコンピュータ３は、不一致箇所特定モードにおいて、メインコア１１及びチェッカーコア１２のフルスキャンテストを実施する（図１０のステップＳ３０１）。それにより、より高精度な故障検出がなされる。
【００７７】
マイクロコンピュータ３のその他の動作については、マイクロコンピュータ１の場合と同様であるため、その説明を省略する。
【００７８】
本実施の形態にかかるマイクロコンピュータ３は、実施の形態１にかかるマイクロコンピュータ１と同等の効果を奏することができる。さらに、本実施の形態にかかるマイクロコンピュータ３は、出力比較部１４により不一致が検出されたにもかかわらずシフト結果比較部１６により不一致が検出されなかった場合には、メインコア１１及びチェッカーコア１２のフルスキャンテストを行う。それにより、本実施の形態にかかるマイクロコンピュータ３は、より精度の高い故障検出を行うことができる。
【００７９】
以上のように、上記実施の形態１〜３にかかるマイクロコンピュータは、メインコア１１及びチェッカーコア１２のそれぞれの処理結果が一致しない場合、メインコア１１及びチェッカーコア１２のそれぞれのスキャンチェーンの出力を比較することにより不一致箇所を特定して、当該不一致箇所に対応する機能ブロックの機能を停止させる。それにより、本実施の形態にかかるマイクロコンピュータ１は、メインコア１１及びチェッカーコア１２の一部が故障した場合でも冗長動作を継続させることができるため、信頼性の低下を抑制することができる。
【００８０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００８１】
１〜３  マイクロコンピュータ
１１  メインコア
１２  チェッカーコア
１３  出力制御部
１４  出力比較部
１５  制御部
１６  シフト結果比較部
１７  テーブル記憶部
１８，１９  エラー管理部
１５１  故障箇所診断制御部
１５２  クロック切替部
１５３  カウンタ
３１  パタン生成部
３２  故障検出部
ＭＸ１，ＭＸ２  マルチプレクサ
ＤＭＸ１，ＤＭＸ２  デマルチプレクサ
【図１】
2014132384.tif 000003
【図２】
2014132384.tif 000004
【図３】
2014132384.tif 000005
【図４】
2014132384.tif 000006
【図５】
2014132384.tif 000007
【図６】
2014132384.tif 000008
【図７】
2014132384.tif 000009
【図８】
2014132384.tif 000010
【図９】
2014132384.tif 000011
【図１０】
2014132384.tif 000012