(57)【要約】【課題】複数の処理部のうちの１つにエラーが発生した場合であっても、システム全体として継続して処理を実行することができる。【解決手段】半導体装置１は、第一処理部１０−１及び第二処理部１０−２と、書込部１２と、記憶部１４と、処理制御部２０とを有する。書込部１２は、第一処理部１０−１及び第二処理部１０−２それぞれの処理に関する第１の情報を記憶部１４に書き込む。処理制御部２０は、第一処理部１０−１及び第二処理部１０−２の動作を制御する。処理制御部２０は、第一処理部１０−１にエラーが発生した場合に第一処理部１０−１を停止するように制御を行う。記憶部１４に記憶された第１の情報を用いて、エラーが発生していない第二処理部１０−２が第１の処理を継続することが可能であると判定された場合、第二処理部１０−２は、第１の処理を継続する。【選択図】図１
2018025983.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理部と、
前記処理部の動作を制御する処理制御部と、
記憶部と、
前記複数の処理部それぞれの処理に関する第１の情報を、前記記憶部に書き込む書込部と
を有し、
前記複数の処理部のうちの第１の処理部にエラーが発生した場合に、前記処理制御部は、前記第１の処理部を停止するように制御を行い、
前記第１の処理部にエラーが発生した場合に、前記記憶部に記憶された情報に基づいて、前記複数の処理部のうちの第２の処理部が継続して第１の処理を実行することが可能であると判定されたときに、前記第２の処理部は、前記第１の処理を継続して実行する
半導体装置。
【請求項２】
前記第２の処理部が前記第１の処理を継続して実行することが可能でないと判定されたときに、前記処理制御部は、前記半導体装置における予め定められた範囲の動作をリセットするように制御を行う
請求項１に記載の半導体装置。
【請求項３】
前記記憶部に記憶された情報を用いて、前記第１の処理部にエラーが発生したことによる影響がないと判定された場合に、前記第２の処理部は、前記第１の処理を継続して実行する
請求項１に記載の半導体装置。
【請求項４】
前記第１の処理は、前記第１の処理部にエラーが発生したときに前記第２の処理部が行っていた処理であり、
前記第１の処理部にエラーが発生したときに前記記憶部に書き込まれた前記第１の情報を用いて、前記第１の情報に対応する処理に関するアドレスが、前記第２の処理部によって使用され得る記憶領域のアドレスの範囲内にないと判定された場合に、前記第２の処理部は、前記第１の処理を継続して実行する
請求項３に記載の半導体装置。
【請求項５】
前記第１の処理は、前記第１の処理部にエラーが発生したときに前記第１の処理部が行っていた処理であり、
前記第１の処理部にエラーが発生したときに前記記憶部に書き込まれた前記第１の情報を用いて、前記第１の情報に対応する処理に関するアドレスが、前記第１の処理部によって使用され得る記憶領域のアドレスの範囲内にないと判定された場合に、前記第２の処理部は、前記第１の処理を継続して実行する
請求項３に記載の半導体装置。
【請求項６】
前記書込部は、前記第１の処理部にエラーが発生している場合に、前記第１の処理部にエラーが発生したことを示すエラーフラグを含む前記第１の情報を、前記記憶部に書き込み、
前記エラーフラグを含む前記第１の情報を用いて、前記第２の処理部が継続して第１の処理を実行することが可能か否かの判定が行われる
請求項１に記載の半導体装置。
【請求項７】
前記書込部は、前記処理制御部によって前記第１の処理部が停止した場合に、前記第１の処理部が停止したことを示す停止フラグを含む前記第１の情報を、前記記憶部に書き込み、
前記第１の処理部にエラーが発生したタイミングで書き込まれた前記第１の情報から、前記停止フラグを含む前記第１の情報までの間の前記エラーフラグを含む前記第１の情報について、前記第２の処理部が継続して第１の処理を実行することが可能か否かの判定が行われる
請求項６に記載の半導体装置。
【請求項８】
前記第２の処理部は、前記第２の処理部が前記第１の処理を継続して実行することが可能であるか否かを判定する
請求項１に記載の半導体装置。
【請求項９】
前記第２の処理部が継続して第１の処理を実行することが可能であるか否かの判定が終了した後、前記処理制御部は、前記第１の処理部を再実行するように制御を行う
請求項１に記載の半導体装置。
【請求項１０】
前記処理制御部は、前記第１の処理部で発生したエラーの回数及びエラーの頻度の少なくとも一方に応じて、前記第１の処理部を再実行するか否かを制御する
請求項９に記載の半導体装置。
【請求項１１】
前記第２の処理部が前記第１の処理を継続して実行することが可能であるか否かを判定するデコード部
をさらに有する請求項１に記載の半導体装置。
【請求項１２】
前記デコード部は、前記複数の処理部それぞれについて設けられており、
前記第１の処理部にエラーが発生した場合、前記第１の処理部について設けられた前記デコード部が、前記第２の処理部が前記第１の処理を継続して実行することが可能であるか否かを判定する
請求項１１に記載の半導体装置。
【請求項１３】
複数の処理部と、
前記処理部の動作を制御する処理制御部と、
前記複数の処理部のそれぞれに接続されたバスから、前記複数の処理部のうちの第１の処理部でなされた処理に関する第２の情報を取得して、前記第２の情報について処理を行うデコード部と
を有し、
前記第１の処理部にエラーが発生した場合に、前記処理制御部は、前記第１の処理部を停止するように制御を行い、
前記デコード部は、前記第１の処理部にエラーが発生した場合に、前記第１の処理部に接続されたバスから取得された前記第２の情報に基づいて、前記複数の処理部のうちの第２の処理部が継続して第１の処理を実行することが可能であるか否かを判定し、
前記第２の処理部が継続して前記第１の処理を実行することが可能であると判定された場合に、前記第２の処理部は、前記第１の処理を継続して実行する
半導体装置。
【請求項１４】
前記デコード部は、
前記第２の情報を用いて前記第２の処理部が前記第１の処理を継続して実行することが可能であるか否かを判定する複数の判定部と、
前記第２の情報が更新されるごとに、前記第２の情報を出力する前記複数の判定部を切り替える
請求項１３に記載の半導体装置。
【請求項１５】
複数の処理部それぞれの処理に関する第１の情報を、記憶部に書き込み、
前記複数の処理部のうちの第１の処理部にエラーが発生した場合に、前記第１の処理部を停止するように制御を行い、
前記第１の処理部にエラーが発生した場合に、前記記憶部に記憶された情報に基づいて、前記複数の処理部のうちの第２の処理部が継続して第１の処理を実行することが可能であるか否かを判定し、
前記第２の処理部が継続して第１の処理を実行することが可能であると判定されたときに、前記第２の処理部は、前記第１の処理を継続して実行する
半導体装置の制御方法。
【請求項１６】
前記第２の処理部が前記第１の処理を継続して実行することが可能でないと判定されたときに、前記半導体装置における予め定められた範囲の動作をリセットするように制御を行う
請求項１５に記載の半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びその制御方法に関し、例えば複数の処理部を有する半導体装置及びその制御方法に関する。
【背景技術】
【０００２】
１つのマイクロコンピュータ等の半導体装置に、複数のプロセッサ等の処理部が設けられることが多くなっている。そして、このような複数の処理部を持つ機構で、ある処理部にエラーが発生した（ある処理部が故障した）とき、エラーが発生した処理部（故障した処理部）で実行していたタスクを正常な処理部が引き継ぐ機構が提案されている。
【０００３】
例えば、特許文献１は、複数の処理部のうち１つが動作不能になったとしても、その処理部の処理が他の処理部により実行されることができる処理装置を開示する。特許文献１にかかる処理装置は、複数の処理部の異常を検出して異常検出信号を生成する複数の異常検出回路と、正常状態にある少なくとも１つの正常処理部を、異常救済処理を実行するように制御する異常監視制御部とを具備する。さらに、特許文献１にかかる処理装置は、正常処理部から、リセット命令が設定され、異常処理部をリセットするために設定されたリセット命令を異常処理部に出力するレジスタを具備する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１１４２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示された技術では、異常処理部が異常となってから異常処理部がリセットされるまでの間に異常処理部が読み込み又は書き込みを行った場合に、正常処理部によって参照されるべきデータが異常なデータで上書きされ、又はそのデータが消失してしまうといった問題が生じるおそれがある。つまり、異常処理部の処理によって、正常処理部の処理に影響があるおそれがある。このような場合に、特許文献１に開示された技術では、上記問題を検知することができない。このことは、異常処理部が異常となってから、正常処理部が、自身が行っていた処理を継続する場合においても同様である。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、複数の処理部と、前記処理部の動作を制御する処理制御部と、記憶部と、前記複数の処理部それぞれの処理に関する第１の情報を、前記記憶部に書き込む書込部とを有し、前記複数の処理部のうちの第１の処理部にエラーが発生した場合に、前記処理制御部は、前記第１の処理部を停止するように制御を行い、前記第１の処理部にエラーが発生した場合に、前記記憶部に記憶された情報に基づいて、前記複数の処理部のうちの第２の処理部が継続して第１の処理を実行することが可能であると判定されたときに、前記第２の処理部は、前記第１の処理を継続して実行する半導体装置である。
【０００８】
また、一実施の形態によれば、複数の処理部と、前記処理部の動作を制御する処理制御部と、前記複数の処理部のそれぞれに接続されたバスから、前記複数の処理部のうちの第１の処理部でなされた処理に関する第２の情報を取得して、前記第２の情報について処理を行うデコード部とを有し、前記第１の処理部にエラーが発生した場合に、前記処理制御部は、前記第１の処理部を停止するように制御を行い、前記デコード部は、前記第１の処理部にエラーが発生した場合に、前記第１の処理部に接続されたバスから取得された前記第２の情報に基づいて、前記複数の処理部のうちの第２の処理部が継続して第１の処理を実行することが可能であるか否かを判定し、前記第２の処理部が継続して前記第１の処理を実行することが可能であると判定された場合に、前記第２の処理部は、前記第１の処理を継続して実行する半導体装置である。
【０００９】
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本態様としては有効である。
【発明の効果】
【００１０】
前記一実施の形態によれば、複数の処理部のうちの１つにエラーが発生した場合であっても、システム全体として継続して処理を実行することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態にかかる半導体装置の概要を示す図である。
【図２】本実施の形態にかかる半導体装置の制御方法の概要を示す図である。
【図３】実施の形態１にかかる半導体装置の構成を示す図である。
【図４】実施の形態１にかかるトレースＲＡＭに格納されるパケット情報を例示する図である。
【図５】実施の形態１にかかる各処理部の専用領域及び共有領域のアドレス情報を例示する図である。
【図６】実施の形態１にかかるデータ書込部のパケット情報に関する処理フローを示す図である。
【図７】実施の形態１にかかる処理制御部によって行われる、処理部にエラーが発生した場合の処理を示すフローチャートである。
【図８】実施の形態１にかかる、正常な処理部によって行われる処理を示す図である。
【図９】実施の形態１にかかる、正常な処理部によって行われる処理を示す図である。
【図１０】実施の形態１にかかる処理制御部によって実行される、継続動作不可信号の受信後の動作を示すフローチャートである。
【図１１】実施の形態１にかかる処理制御部によって実行される、引継ぎ影響有無信号の受信後の動作を示すフローチャートである。
【図１２】実施の形態１にかかる動作例を示すタイミングチャートである。
【図１３】図１２の動作例に処理部によって発行されるステータス信号が追加されたタイミングチャートである。
【図１４】実施の形態１の変形例１にかかる、図７に示した処理に引継ぎ処理対象の処理部の故障判断が追加された処理のフローチャートである。
【図１５】実施の形態１の変形例２にかかる半導体装置の構成を示す図である。
【図１６】実施の形態１の変形例２にかかる再実行処理を示すフローチャートである。
【図１７】実施の形態２にかかる半導体装置の構成を示す図である。
【図１８】実施の形態２にかかる処理制御部によって実行される再実行制御処理を示すフローチャートである。
【図１９】実施の形態２にかかる処理制御部によって実行される再実行制御処理の変形例を示すフローチャートである。
【図２０】実施の形態３にかかる半導体装置の構成を示す図である。
【図２１】実施の形態３にかかるデコード部の詳細を示す図である。
【図２２】実施の形態３にかかるデコード部の処理を示すフローチャートである。
【図２３】実施の形態３にかかるデコード部の処理を示すフローチャートである。
【図２４】実施の形態３にかかる処理制御部によって実行される、処理部影響有無信号が通知された場合の処理を示すフローチャートである。
【図２５】実施の形態３にかかる処理制御部によって実行される、影響判定完了信号が通知された場合の処理を示すフローチャートである。
【図２６】実施の形態３の変形例１にかかる半導体装置の構成を示す図である。
【図２７】実施の形態３の変形例１にかかるデコード部の処理を示すフローチャートである。
【図２８】実施の形態３の変形例１にかかるデコード部の処理を示すフローチャートである。
【図２９】実施の形態３の変形例１にかかる、書き込み／読み込みサイクル完了信号を受信した処理制御部の処理を示すフローチャートである。
【図３０】実施の形態３の変形例２にかかるデコード部の構成を示す図である。
【図３１】実施の形態３の変形例２にかかるパケット情報切替部の切り替え処理を示すフローチャートである。
【図３２】本実施の形態の変形例にかかる、バスマスタを有する半導体装置を示す図である。
【発明を実施するための形態】
【００１２】
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１３】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１４】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１５】
また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００１６】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１７】
（実施の形態の概要）
本実施の形態の説明に先立って、本実施の形態の概要について説明する。
図１は、本実施の形態にかかる半導体装置１の概要を示す図である。半導体装置１は、例えばマイクロコントローラである。半導体装置１は、複数の処理部である第一処理部１０−１及び第二処理部１０−２と、書込部１２と、記憶部１４と、処理制御部２０とを有する。なお、図１には、書込部１２（書込部１２−１，１２−２）及び記憶部１４（記憶部１４−１，１４−２）がそれぞれ複数示されているが、それぞれ単一であってもよい。
【００１８】
第一処理部１０−１及び第二処理部１０−２は、例えばＣＰＵ等のプロセッサである。第一処理部１０−１及び第二処理部１０−２は、書き込み又は読み込み等の予め定められた情報処理を行う。また、処理部の数は、２つに限られず、３つ以上であってもよい。
【００１９】
記憶部１４は、例えばＲＡＭ等のメモリである。書込部１２は、第一処理部１０−１及び第二処理部１０−２それぞれの処理に関する情報（第１の情報）を、記憶部１４に書き込む。処理制御部２０は、第一処理部１０−１及び第二処理部１０−２の動作を制御する。なお、半導体装置１は、後述する判定処理を行うデコード部３０を有してもよい。以下、半導体装置１の動作について説明する。
【００２０】
図２は、本実施の形態にかかる半導体装置の制御方法の概要を示す図である。図２は、第一処理部１０−１にエラーが発生した場合について示しているが、第二処理部１０−２にエラーが発生した場合も同様である。
【００２１】
処理制御部２０は、第一処理部１０−１にエラーが発生したか否かを判定し（ステップＳ１）、第一処理部１０−１にエラーが発生した場合（Ｓ１のＹＥＳ）、処理制御部２０は、第一処理部１０−１を停止するように制御を行う（ステップＳ２）。第二処理部１０−２（又はデコード部３０）は、記憶部１４に記憶された第１の情報を用いて、エラーが発生していない第二処理部１０−２が第１の処理を継続することが可能であるか否かを判定する（ステップＳ３）。
【００２２】
第二処理部１０−２が第１の処理を継続することが可能であると判定された場合（Ｓ３のＹＥＳ）、第二処理部１０−２は、第１の処理を継続する（ステップＳ４）。一方、第二処理部１０−２が第１の処理を継続することが可能でないと判定された場合（Ｓ３のＮＯ）、処理制御部２０は、半導体装置１における予め定められた範囲の動作をリセットするための処理を行う（ステップＳ５）。例えば、処理制御部２０は、第二処理部１０−２の動作をリセットするための処理を行う。
【００２３】
ここで、「第１の処理」は、エラーが発生していない第二処理部１０−２が行っていた処理であってもよいし、エラーが発生した第一処理部１０−１が行っていた処理であってもよい。つまり、「第１の処理」が、第二処理部１０−２が行っていた処理である場合は、第二処理部１０−２は、自身が行っていた処理を継続する。一方、「第１の処理」が、第一処理部１０−１が行っていた処理である場合、第二処理部１０−２は、エラーが発生した第一処理部１０−１から、第１の処理を引き継ぐ。
【００２４】
上記のように、本実施の形態にかかる半導体装置１は、記憶部１４に記憶された情報を用いて、エラーが発生していない正常な処理部（第二処理部１０−２）が第１の処理を継続することが可能であるか否かを判定し、可能である場合に、その正常な処理部が第１の処理を継続するように構成されている。これにより、複数の処理部のうちの１つにエラーが発生した場合であっても、システム全体として継続して処理を実行することが可能となる。また、正常な処理部が第１の処理を継続することが可能でない場合は、半導体装置１における予め定められた範囲の動作（例えば第二処理部１０−２の動作）がリセットされるので、誤動作が発生することが抑制される。
【００２５】
（実施の形態１）
次に、実施の形態１について説明する。なお、以下に説明する実施の形態において、「処理部が故障する」とは、その処理部の回路が物理的に故障したためにエラーが発生した場合だけでなく、ノイズ等の一過性の要因によってエラーが発生した場合も含む。つまり、以下に説明する実施の形態において、「処理部が故障する」とは、処理部にエラーが発生することを意味する。同様に、「故障した処理部」とは、エラーが発生した処理部を意味する。
【００２６】
図３は、実施の形態１にかかる半導体装置１００の構成を示す図である。半導体装置１００は、例えばマイクロコントローラである（他の実施の形態においても同様）。半導体装置１００は、ＲＡＭ１０２と、フラッシュメモリ１０４と、周辺機能１０６と、システムバス１０８とを有する。また、半導体装置１００は、処理部１１０−１（処理部＃１）及び処理部１１０−２（処理部＃２）と、データ書込部１１２−１（データ書込部＃１）及びデータ書込部１１２−２（データ書込部＃２）と、トレースＲＡＭ１１４−１（トレースＲＡＭ＃１）及びトレースＲＡＭ１１４−２（トレースＲＡＭ＃２）とを有する。さらに、半導体装置１００は、処理制御部１２０を有する。なお、以下、処理部等の複数ある構成要素を区別しないで説明する場合に、処理部１１０などと総称する。
【００２７】
処理部１１０−１及び処理部１１０−２は、システムバス１０８を介して、ＲＡＭ１０２、フラッシュメモリ１０４、周辺機能１０６、トレースＲＡＭ１１４−１及びトレースＲＡＭ１１４−２と接続されている。処理部１１０−１からの信号は、データ書込部１１２−１及び処理制御部１２０に入力されている。処理部１１０−２からの信号は、データ書込部１１２−２及び処理制御部１２０に入力されている。処理制御部１２０からの信号は、処理部１１０−１、処理部１１０−２、データ書込部１１２−１、データ書込部１１２−２、及び周辺機能１０６に入力されている。データ書込部１１２−１及びデータ書込部１１２−２からの信号は、それぞれ、トレースＲＡＭ１１４−１及びトレースＲＡＭ１１４−２に入力されている。
【００２８】
なお、処理部１１０−１は、図１に記載の第一処理部１０−１に対応する場合もあるし、図１に記載の第二処理部１０−２に対応することもある。同様に、処理部１１０−２は、第二処理部１０−２に対応する場合もあるし、第一処理部１０−１に対応する場合もある。つまり、処理部１１０−１及び処理部１１０−２のうち、エラーが発生した処理部１１０が、第一処理部１０−１に対応し、エラーが発生していない処理部１１０が、第二処理部１０−２に対応する。
【００２９】
ＲＡＭ１０２は、処理部１１０−１及び処理部１１０−２に共有されており、処理部１１０−１及び処理部１１０−２それぞれの専用のメモリ領域と、各処理部１１０に共有されるメモリ領域とを有している。処理部１１０−１及び処理部１１０−２それぞれの専用のメモリ領域は、処理部１１０−１及び処理部１１０−２それぞれの専用のプログラムコード、プログラムで使用される変数及び定数値等を格納している。各処理部１１０に共有されるメモリ領域は、処理部１１０−１及び処理部１１０−２それぞれの処理ステータス伝達等のコミュニケーション等に使用される。なお、図３において、ＲＡＭ１０２は、処理部１１０−１及び処理部１１０−２で共有されているが、ＲＡＭは、処理部毎に設けられてもよい。
【００３０】
フラッシュメモリ１０４は、処理部１１０−１及び処理部１１０−２に共有されており、処理部１１０−１及び処理部１１０−２それぞれの専用のメモリ領域と、各処理部１１０に共有されるメモリ領域とを有している。処理部１１０−１及び処理部１１０−２それぞれの専用のメモリ領域は、処理部１１０−１及び処理部１１０−２それぞれの専用のプログラムコード、プログラムで使用される定数値等、及び、各処理部１１０の専用メモリ領域及び共有メモリ領域のアドレス情報を格納している。各処理部１１０に共有されるメモリ領域は、処理部１１０−１及び処理部１１０−２に共通のプログラムコード及び定数値等を格納している。なお、図３において、フラッシュメモリ１０４は、処理部１１０−１及び処理部１１０−２で共有されているが、フラッシュメモリは、処理部毎に設けられてもよい。
【００３１】
周辺機能１０６は、マイクロコントローラを使用したアプリケーションを実現するためのタイマ及びＡＤ変換機等から構成されている。周辺機能１０６は、周辺機能１０６の動作設定及びフラグを示すためのレジスタ等、及び、処理部１１０に対して割り込み通知を行う機能等を有する。周辺機能１０６のレジスタに対して処理部１１０−１及び処理部１１０−２から書き込み及び読み込み等の処理を行うことで、種々のアプリケーションが実現される。また、周辺機能１０６は、処理制御部１２０からリセット信号が通知される。周辺機能１０６には、処理部１１０−１及び処理部１１０−２それぞれの専用の周辺機能と、複数の処理部１１０に共有される周辺機能とがある。
【００３２】
処理部１１０−１及び処理部１１０−２は、例えばＣＰＵ等のプロセッサである。処理部１１０−１及び処理部１１０−２は、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ；論理演算ユニット）、制御装置、レジスタ、メモリ、及び、周辺機能１０６が有するレジスタに読み込み及び書き込みを行う機能等から構成される。各処理部１１０は、フラッシュメモリ１０４及びＲＡＭ１０２に格納されたプログラムコード等を用いてアプリケーション用の処理、継続処理又は引継ぎ処理等を実行する。
【００３３】
各処理部１１０は、各処理部１１０自身のエラーを検知する機構を有する。一例として、各処理部１１０は、マスターとなる処理部と、マスターの処理を監視する処理部とを有し、ロックステップ方式により各処理部１１０自身のエラーを検知する。処理部１１０−１で検知された処理部１１０−１のエラーは、データ書込部１１２−１及び処理制御部１２０に、エラー信号Ｓｅｒによって通知される。処理部１１０−２で検知された処理部１１０−２のエラーは、データ書込部１１２−２及び処理制御部１２０に、エラー信号Ｓｅｒによって通知される。各処理部１１０には、処理制御部１２０から、処理部停止完了信号Ｓｓｔ、停止完了処理部通知信号Ｓｎｓ及びリセット信号Ｓｒｓが通知される。各処理部１１０は、処理制御部１２０に対し、継続動作不可信号Ｓｕｃ及び引継ぎ影響有無信号Ｓｈｅを発行する。
【００３４】
トレースＲＡＭ１１４−１及びトレースＲＡＭ１１４−２（記憶部）は、それぞれ、データ書込部１１２−１及びデータ書込部１１２−２によって書き込まれるバス情報、処理部１１０のエラー情報、処理部停止完了情報等のトレース情報を格納するメモリ領域である。トレースＲＡＭ１１４は、ＲＡＭである必要はなく、ＦＦ（ｆｌｉｐ−ｆｌｏｐ；フリップフロップ）又はフラッシュメモリ等の記憶デバイスであればよい。なお、各処理部１１０について、上述した書き込まれる情報を記憶する記憶デバイス（トレースＲＡＭ１１４）が１つ設けられてもよいし、１つの記憶デバイスを複数の処理部１１０に共有させてもよい。
【００３５】
また、実施の形態１では、トレースＲＡＭ１１４とシステムバス１０８とが接続されているとしたが、データ書込部１１２が接続されないバスを用いてトレースＲＡＭ１１４と各処理部１１０とを接続してもよい。このような構成とすることで、他の処理部１１０によるシステムバス１０８を介したアクセスとの競合を回避することができる。また、処理部１１０が処理部１１０自身のトレースＲＡＭ１１４を読み込む際に、処理部１１０は、自身のトレースＲＡＭ１１４にトレース情報を記憶させずにアクセスすることができる。
【００３６】
データ書込部１１２−１及びデータ書込部１１２−２は、それぞれ、処理部１１０−１及び処理部１１０−２の書き込み／読み込み情報、エラー情報及び動作状態を、トレースＲＡＭ１１４−１及びトレースＲＡＭ１１４−２に、パケット情報として書き込む機構を有する。さらに、データ書込部１１２は、データ書込部１１２がトレースＲＡＭ１１４にパケット情報を書き込むアドレスを示す書き込みポインタ情報を有する。データ書込部１１２は、書き込み／読み込み情報等のバス情報を、各処理部１１０とシステムバス１０８との間のバス信号から取得する。各処理部１１０のエラー信号Ｓｅｒは、各処理部１１０からデータ書込部１１２に通知される。処理部１１０に関する処理部停止完了信号Ｓｓｔは、処理制御部１２０からデータ書込部１１２に通知される。
【００３７】
なお、実施の形態１では、データ書込部１１２が処理部１１０毎に設けられているが、１つのデータ書込部１１２を、各処理部１１０で共有させてもよい。また、トレースＲＡＭ１１４に書き込む情報の構成等の設定は、データ書込部１１２を予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値で格納され得る。なお、構成等の設定用のレジスタを追加したデータ書込部１１２を処理部１１０とバスを介して接続することで、処理部１１０から設定を変更することが可能なシステムを構成してもよい。
【００３８】
処理制御部１２０は、処理部１１０を停止させるためのリセット信号Ｓｒｓを発行する機能、時間をカウントするためのタイマ機能、システムの所定の範囲のみリセットする機構、各処理部１１０の正常／故障ステータスを保持する記憶領域、及び、引継ぎ対象処理部設定の記憶領域を有する。引継ぎ対象処理部設定とは、どの処理部１１０が故障した際にどの処理部１１０に引き継がせるかを示す。また、タイマ機能は、指定時間をカウントできるものとする。なお、指定時間の設定値及び引継ぎ対象処理部設定を記憶する領域は、処理制御部１２０を予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値で格納され得る。
【００３９】
処理制御部１２０には、処理部１１０から、エラー信号Ｓｅｒ、継続動作不可信号Ｓｕｃ、及び引継ぎ影響有無信号Ｓｈｅが入力される。また、処理制御部１２０は、処理部１１０に対して、処理部停止完了信号Ｓｓｔ、停止完了処理部通知信号Ｓｎｓ、及びリセット信号Ｓｒｓを出力する。また、処理制御部１２０は、データ書込部１１２に対して、処理部停止完了信号Ｓｓｔを出力する。また、処理制御部１２０は、周辺機能１０６に対して、リセット信号Ｓｒｓを出力する。
【００４０】
また、処理制御部１２０は、処理部１１０を停止させるためのリセット信号Ｓｒｓを出力する際に、各処理部１１０の専用の周辺機能１０６に対しても同様にリセット信号を出力する。周辺機能１０６に同様にリセット信号を入力するか否かの設定、及びシステムの所定の範囲のみリセットするための設定（どの範囲をリセットするか等）は、処理制御部１２０を予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値で格納され得る。また、設定用のレジスタを設けて処理制御部１２０をシステムバス１０８又は専用のバスで処理部１１０と接続することで、上記設定を処理部１１０から書き換え可能なシステムを構成してもよい。また、正常／故障ステータスを保持する記憶領域は、ＦＦで構成され得る。なお、実施の形態１においては、リセット信号Ｓｒｓを用いて処理部１１０を停止させるとしたが、処理部１１０を停止させるために供給クロックを停止する信号等を用いてもよい。
【００４１】
図４は、実施の形態１にかかるトレースＲＡＭ１１４に格納されるパケット情報Ｉｐｋを例示する図である。パケット情報Ｉｐｋは、処理部１１０ごとに設けられ得る。パケット情報Ｉｐｋは、アドレスと、そのアドレスに関するデータと、ｒ／ｗ情報（リード／ライト情報）Ｉｒｗと、エラーフラグＦｅと、処理部停止フラグＦｓを含み得る。
【００４２】
「アドレス」は、書き込み先アドレス又は読み込み先アドレスである。「データ」は、書き込み先アドレスに書き込まれる書き込みデータ、又は読み込み先アドレスから読み込まれる読み込みデータ、又は不定値である。ｒ／ｗ情報Ｉｒｗは、処理部１１０が読み込み処理を行った場合に「０」に設定され、処理部１１０が書き込み処理を行った場合に「１」に設定される。エラーフラグＦｅは、処理部１１０にエラーが発生していない場合に「０」に設定され、エラーが発生した場合に「１」に設定される。処理部停止フラグＦｓは、処理部１１０が停止していない場合に「０」に設定され、処理部１１０が停止した場合に「１」に設定される。
【００４３】
ここで、エラーフラグＦｅ及び処理部停止フラグＦｓがともに「１」に設定されているパケット情報Ｉｐｋを、「パケット情報ＥＳ」とする。また、エラーフラグＦｅが「１」に設定され処理部停止フラグＦｓが「０」に設定されているパケット情報Ｉｐｋを、「パケット情報Ｅ」とする。
【００４４】
なお、図４に示したパケット情報Ｉｐｋ内のデータの順序及び値等は、単なる例示であって、システム構成に応じて最適な構成に変更され得る。また、１つのトレースＲＡＭ１１４を複数の処理部１１０に共有させる場合は、各処理部１１０にユニークな識別情報がパケット情報に含まれていればよい。
【００４５】
図５は、実施の形態１にかかる各処理部１１０の専用領域及び共有領域のアドレス情報を例示する図である。実施の形態１において、図５に例示されるアドレス情報は、フラッシュメモリ１０４等に格納されている。図５に示すアドレス情報は、処理部１１０ごとに、専用領域の開始アドレス及び終了アドレスと、共有領域の開始アドレス及び終了アドレスとを含む。なお、図５には、処理部１１０−１（処理部＃１）及び処理部１１０−２（処理部＃２）についてのアドレス情報が示されているが、アドレス情報の数は、処理部１１０の数が３個以上である場合は、その数に応じて、適宜増加し得る。
【００４６】
図６は、実施の形態１にかかるデータ書込部１１２のパケット情報に関する処理フローを示す図である。図６は、データ書込部１１２の動作例として、データ書込部１１２がトレースＲＡＭ１１４に書き込むアドレスを示す書き込みポインタをｎとし、図４に例示したパケット情報を使用した場合の処理を示す。
【００４７】
まず、データ書込部１１２は、初期化シーケンスを実行する（ステップＳ１０）。具体的には、データ書込部１１２は、書き込みポインタｎを０に設定する。そして、以降の処理（Ｓ１２〜Ｓ３６）において、書き込みポインタｎについて各パケット情報を書き込む（パケット情報を更新する）ための処理が行われる。なお、Ｓ１０の処理は、以降の処理（Ｓ１２〜Ｓ３６）とは独立して行われてもよい。
【００４８】
データ書込部１１２は、パケット情報ＩｐｋのエラーフラグＦｅ、処理部停止フラグＦｓ及びｒ／ｗ情報Ｉｒｗを、それぞれ０に設定する（ステップＳ１２）。次に、データ書込部１１２は、処理部１１０とシステムバス１０８との間を伝送される信号が読み込み命令を示すか否かを判断する（ステップＳ１４）。この信号が読み込み命令を示していない場合（Ｓ１４のＮＯ）、データ書込部１１２は、処理部１１０とシステムバス１０８との間を伝送される信号が書き込み命令を示すか否かを判断する（ステップＳ１６）。この信号が書き込み命令を示していない場合（Ｓ１６のＮＯ）、データ書込部１１２は、処理部停止完了信号Ｓｓｔが発生したか否かを判断する（ステップＳ１８）。処理部停止完了信号Ｓｓｔが発生していない場合（Ｓ１８のＮＯ）、パケット情報（バス情報・エラー情報）が更新されていないとして、Ｓ１２の処理に戻る。
【００４９】
処理部１１０とシステムバス１０８との間を伝送される信号が書き込み命令を示す場合（Ｓ１６のＹＥＳ）、データ書込部１１２は、パケット情報Ｉｐｋのｒ／ｗ情報Ｉｒｗを「１」に設定し（ステップＳ２０）、処理はＳ２２の処理に進む。一方、処理部１１０とシステムバス１０８との間を伝送される信号が読み込み命令を示す場合（Ｓ１４のＹＥＳ）、データ書込部１１２は、ｒ／ｗ情報Ｉｒｗの設定を０としたまま、処理はＳ２２の処理に進む。
【００５０】
ステップＳ２２において、データ書込部１１２は、処理部１１０の読み込みアドレス又は書き込みアドレス、及び、このアドレスに関するデータを取得する。そして、処理はＳ２６の処理に進む。なお、Ｓ１４の処理でＹＥＳと判定された場合、上記アドレスは読み込みアドレスであり、上記データは不定値であるが、バスの読み込みサイクルの完了信号等を基に読込みデータが確定された時点でデータを取り込むことで読み込みデータであってもよい。一方、Ｓ１６の処理でＹＥＳと判定された場合、上記アドレスは書き込みアドレスであり、上記データは書き込みデータである。また、処理部停止完了信号Ｓｓｔが発生した場合（Ｓ１８のＹＥＳ）、データ書込部１１２は、パケット情報Ｉｐｋの処理部停止フラグＦｓを「１」に設定し（ステップＳ２４）、処理はＳ２６の処理に進む。
【００５１】
データ書込部１１２は、処理部１１０にエラーが発生したか否かを判断する（ステップＳ２６）。具体的には、データ書込部１１２は、処理部１１０からエラー信号Ｓｅｒを受信した場合に、処理部１１０にエラーが発生したと判断する。処理部１１０にエラーが発生した場合（Ｓ２６のＹＥＳ）、データ書込部１１２は、パケット情報ＩｐｋのエラーフラグＦｅを「１」に設定し（ステップＳ２８）、処理はＳ３０の処理に進む。一方、処理部１１０にエラーが発生していない場合（Ｓ２６のＮＯ）、データ書込部１１２は、Ｓ２８の処理を行わずに、処理はＳ３０の処理に進む。このように、エラーフラグＦｅを設定することで、図８及び図９の判定処理において、どのパケット情報においてエラーが発生したかを、容易にかつ確実に判定することが可能となる。
【００５２】
ステップＳ３０において、データ書込部１１２は、パケット情報Ｉｐｋを、トレースＲＡＭ１１４の書き込みポインタｎで示される領域に書き込む（ステップＳ３０）。このとき、パケット情報Ｉｐｋにおいて、ｒ／ｗ情報Ｉｒｗ、エラーフラグＦｅ及び処理部停止フラグＦｓは、それぞれ、Ｓ２０、Ｓ２４及びＳ２８の処理がなされたか否かによって定められる。なお、トレースＲＡＭ１１４に書き込まれるパケット情報Ｉｐｋのパケットサイズは、パケット情報Ｉｐｋのビット数によって決定される。
【００５３】
次に、データ書込部１１２は、書き込みポインタｎを更新（インクリメント）する（ステップＳ３２）。そして、データ書込部１１２は、ｎが書き込みポインタの最大値を超えたか否かを判断する（ステップＳ３４）。ｎが書き込みポインタの最大値を超えた場合（Ｓ３４のＹＥＳ）、データ書込部１１２は、書き込みポインタｎを初期化して（ステップＳ３６）、処理はＳ１２の処理に戻る。そして、ｎが書き込みポインタの最大値を超えていない場合（Ｓ３４のＮＯ）、データ書込部１１２は、書き込みポインタｎを初期化せずに、処理はＳ１２の処理に戻る。
【００５４】
なお、パケット情報ＩｐｋをトレースＲＡＭ１１４に書き込むタイミングは、パケット情報Ｉｐｋが更新されるごとであってもよいが、このような構成に限られない。データ書込部１１２は、故障した処理部１１０によって書き込み又は読み込みがなされたことが判定され得るタイミングで、パケット情報ＩｐｋをトレースＲＡＭ１１４に書き込むようにすればよい。
【００５５】
なお、パケット情報Ｉｐｋは、図４に例示した情報を全て含む必要はない。パケット情報Ｉｐｋを用いて、少なくとも、処理部１１０にエラーが発生した後（処理部１１０が故障した後）でなされた読み込み先アドレス又は書き込み先アドレスが判別できればよい。したがって、パケット情報Ｉｐｋは、書き込み／読み込みデータ、ｒ／ｗ情報Ｉｒｗ、エラーフラグＦｅ、及び処理部停止フラグＦｓを含まなくてもよい。この場合、データ書込部１１２は、例えば処理部１１０からエラー信号Ｓｅｒが発行されてからパケット情報Ｉｐｋを書き込むようにすることで、故障した処理部１１０による読み込み又は書き込みが、エラーの発生後に行われたか否かが判別され得る。また、ｒ／ｗ情報Ｉｒｗに関しては、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ，  Ｆｉｒｓｔ  Ｏｕｔ）のような機構又はリードクリア機能等を持つ機構等がなければ、故障した処理部１１０の読み込みによる影響を無視できる。したがって、この場合、読み込みデータをトレースＲＡＭ１１４に格納する必要はなく、ｒ／ｗ情報Ｉｒｗも不要となる。
【００５６】
図７は、実施の形態１にかかる処理制御部１２０によって行われる、処理部１１０にエラーが発生した場合の処理を示すフローチャートである。処理制御部１２０は、処理部１１０からエラー信号Ｓｅｒを受信すると（ステップＳ４０のＹＥＳ）、エラー信号Ｓｅｒを送信した処理部１１０（つまり故障した処理部１１０）に対して、リセット信号Ｓｒｓを発行する（ステップＳ４２）。これにより、処理制御部１２０は、故障した処理部１１０を停止するように制御する。
【００５７】
次に、処理制御部１２０は、リセット信号Ｓｒｓを発行してから期間Ｔｓｔｏｐが経過したか否かを判定する（ステップＳ４４）。期間Ｔｓｔｏｐが経過すると（ステップＳ４４のＹＥＳ）、処理制御部１２０は、正常な処理部１１０（つまり故障していない処理部１１０）に対して、処理部停止完了信号Ｓｓｔ及び停止完了処理部通知信号Ｓｎｓを発行する（ステップＳ４６）。このとき、処理制御部１２０は、故障した処理部１１０に関するデータ書込部１１２に対しても、処理部停止完了信号Ｓｓｔを送信する。
【００５８】
ここで、期間Ｔｓｔｏｐは、処理制御部１２０から故障した処理部１１０にリセット信号Ｓｒｓが発行されてから、処理部１１０全体が停止するまでに要する最大時間を示す。言い換えると、処理制御部１２０から故障した処理部１１０にリセット信号Ｓｒｓが発行されてから期間Ｔｓｔｏｐが経過すれば、故障した処理部１１０全体が停止している。処理制御部１２０は、故障した処理部１１０にリセット信号Ｓｒｓを発行したときに処理制御部１２０内のタイマを開始して、期間Ｔｓｔｏｐを計測する。なお、Ｔｓｔｏｐを計測するために予め定められた値が処理制御部１２０に格納されている。処理制御部１２０は、その値とタイマのカウント値とが一致すると、タイマのカウントを停止してカウント値を初期化する。そして、処理制御部１２０は、正常な処理部１１０に対して、故障した処理部１１０に関する停止完了処理部通知信号Ｓｎｓと、１パルスの処理部停止完了信号Ｓｓｔを、同時に発行する。
【００５９】
停止完了処理部通知信号Ｓｎｓは、どの処理部１１０の停止が完了したかを示す信号である。なお、どの処理部１１０の停止が完了したかを正常な処理部１１０が判定できれば、停止完了処理部通知信号Ｓｎｓは発行されなくてもよい。例えば、停止完了処理部通知信号Ｓｎｓの代わりに、処理制御部１２０内に判定用のレジスタを設け、処理部１１０をシステムバス１０８又は専用のバスに接続させ、処理制御部１２０は、正常な処理部１１０にそのレジスタにアクセスさせるようにしてもよい。又は、自身の処理部１１０を除く処理部１１０の数の処理部停止完了信号Ｓｓｔの信号線を処理制御部１２０と処理部１１０との間に設けてもよい。
【００６０】
図８及び図９は、実施の形態１にかかる、正常な処理部１１０によって行われる処理を示す図である。図８及び図９は、正常な処理部１１０が故障した処理部１１０に関する処理部停止完了信号Ｓｓｔを受信した後の継続動作判定及び引継ぎ処理判定を示している。ここで、「継続動作判定」とは、故障した処理部１１０がエラー信号Ｓｅｒを発行する前から正常な処理部１１０が行っていた処理を、正常な処理部１１０が継続することが可能か否かを判定することである。また、「引継ぎ処理判定」とは、エラー信号Ｓｅｒを発行する前に故障した処理部１１０が行っていた処理を、正常な処理部１１０が引き継いで行うことが可能か否かを判定することである。
【００６１】
正常な処理部１１０は、停止完了処理部通知信号Ｓｎｓを用いてどの処理部１１０が故障したかを判定する（ステップＳ５２）。正常な処理部１１０は、故障した処理部１１０のトレースＲＡＭ１１４から継続動作判定に必要なデータを取得し（Ｓ５４及びＳ５６）、そのデータを用いて、正常な処理部１１０の処理に影響がないか否かを判定する（Ｓ６０〜Ｓ６４）。そして、影響がある場合（Ｓ６２のＹＥＳ又はＳ６４のＹＥＳ）、正常な処理部１１０は、継続動作不可信号Ｓｕｃを１パルスで出力する（Ｓ６６）。
【００６２】
具体的には、正常な処理部１１０は、故障した処理部１１０に関するトレースＲＡＭ１１４から、パケット情報ＥＳの格納領域位置ｋを取得（検索）する（ステップＳ５４）。そして、正常な処理部１１０は、格納領域位置ｋのパケット情報Ｉｐｋを取得する（ステップＳ５６）。なお、最初のＳ５６の処理では、格納領域位置ｋのパケット情報Ｉｐｋは、パケット情報ＥＳであるが、２回目以降のＳ５６の処理では、格納領域位置ｋのパケット情報Ｉｐｋは、パケット情報ＥＳ以外のパケット情報Ｅ等である。
【００６３】
正常な処理部１１０は、格納領域位置ｋのパケット情報ＩｐｋのエラーフラグＦｅが１であるか否か、つまり格納領域位置ｋのパケット情報ＩｐｋにエラーフラグＦｅがあるか否かを判定する（ステップＳ６０）。格納領域位置ｋのパケット情報ＩｐｋにエラーフラグＦｅがない場合（Ｓ６０のＮＯ）、正常な処理部１１０は、処理を終了する。
【００６４】
格納領域位置ｋのパケット情報ＩｐｋにエラーフラグＦｅがある場合（Ｓ６０のＹＥＳ）、正常な処理部１１０は、図５に示したアドレス情報を参照して、パケット情報Ｉｐｋのアドレスが、正常な処理部１１０の処理部専用領域開始アドレスと処理部専用領域終了アドレスとの間にあるか否かを判定する（ステップＳ６２）。言い換えると、正常な処理部１１０は、トレースＲＡＭ１１４の領域に格納されたトレース情報が自身の処理部１１０の専用メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
【００６５】
トレースＲＡＭ１１４の領域に格納されたトレース情報が正常な処理部１１０の専用メモリ領域の開始・終了アドレス情報の範囲内にある場合（Ｓ６２のＹＥＳ）、処理はＳ６６の処理に進む。そうでない場合（Ｓ６２のＮＯ）、正常な処理部１１０は、図５に示したアドレス情報を参照して、パケット情報Ｉｐｋのアドレスが、正常な処理部１１０の処理部共有領域開始アドレスと処理部共有領域終了アドレスとの間にあるか否かを判定する（ステップＳ６４）。言い換えると、正常な処理部１１０は、トレースＲＡＭ１１４の領域に格納されたトレース情報が自身の処理部１１０の共有メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
【００６６】
トレースＲＡＭ１１４の領域に格納されたトレース情報が正常な処理部１１０の共有メモリ領域の開始・終了アドレス情報の範囲内にある場合（Ｓ６４のＹＥＳ）、処理はＳ６６の処理に進む。そうでない場合（Ｓ６４のＮＯ）、処理はＳ７０の処理に進む。Ｓ６６において、正常な処理部１１０は、継続動作不可信号Ｓｕｃを、処理制御部１２０に対して発行する。
【００６７】
Ｓ７０において、正常な処理部１１０は、故障した処理部１１０が行っていた処理を引き継ぐか否かを判定する。この引継ぎ処理判定は、故障した処理部１１０が行っていた処理の量及び重要度等に応じて、適宜行われ得る。つまり、例えば、故障した処理部１１０が行っていた処理の量が予め定められた量よりも多い場合、又は故障した処理部１１０が行っていた処理の重要度が予め定められた値よりも大きい場合に、正常な処理部１１０は、故障した処理部１１０が行っていた処理を引き継ぐと判定する。
【００６８】
故障した処理部１１０が行っていた処理を引き継がないと判定された場合（Ｓ７０のＮＯ）、処理はＳ８０の処理に進む。一方、故障した処理部１１０が行っていた処理を引き継ぐと判定された場合（Ｓ７０のＹＥＳ）、正常な処理部１１０は、故障した処理部１１０の処理に影響がないか否かを判定する（Ｓ７２〜Ｓ７４）。そして、影響がある場合（Ｓ７２のＹＥＳ又はＳ７４のＹＥＳ）、正常な処理部１１０は、引継ぎ影響有無信号Ｓｈｅを１パルスで出力する（Ｓ７６）。
【００６９】
具体的には、正常な処理部１１０は、図５に示したアドレス情報を参照して、パケット情報Ｉｐｋのアドレスが、故障した処理部１１０の処理部専用領域開始アドレスと処理部専用領域終了アドレスとの間にあるか否かを判定する（ステップＳ７２）。言い換えると、正常な処理部１１０は、トレースＲＡＭ１１４の領域に格納されたトレース情報が故障した処理部１１０の専用メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
【００７０】
トレースＲＡＭ１１４の領域に格納されたトレース情報が故障した処理部１１０の専用メモリ領域の開始・終了アドレス情報の範囲内にある場合（Ｓ７２のＹＥＳ）、処理はＳ７６の処理に進む。そうでない場合（Ｓ７２のＮＯ）、正常な処理部１１０は、図５に示したアドレス情報を参照して、パケット情報Ｉｐｋのアドレスが、故障した処理部１１０の処理部共有領域開始アドレスと処理部共有領域終了アドレスとの間にあるか否かを判定する（ステップＳ７４）。言い換えると、正常な処理部１１０は、トレースＲＡＭ１１４の領域に格納されたトレース情報が故障した処理部１１０の共有メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
【００７１】
トレースＲＡＭ１１４の領域に格納されたトレース情報が故障した処理部１１０の共有メモリ領域の開始・終了アドレス情報の範囲内にある場合（Ｓ７４のＹＥＳ）、処理はＳ７６の処理に進む。そうでない場合（Ｓ７４のＮＯ）、処理はＳ８０の処理に進む。Ｓ７６において、正常な処理部１１０は、引継ぎ影響有無信号Ｓｈｅを、処理制御部１２０に対して発行する。なお、Ｓ７２及びＳ７４の引継ぎの影響の有無確認は、故障した処理部１１０の専用領域及び共有領域全てを対象とするのではなく、引継ぎ処理に対応する領域のみなされればよい。
【００７２】
次に、正常な処理部１１０は、パケット情報Ｉｐｋの格納領域位置ｋの値をデクリメントする（ステップＳ８０）。そして、正常な処理部１１０は、ｋの値が−１であるか否かを判定し（ステップＳ８２）、ｋ＝−１でない場合（Ｓ８２のＮＯ）、処理はＳ５６の処理に戻る。一方、ｋ＝−１である場合（Ｓ８２のＹＥＳ）、正常な処理部１１０は、ｋの値をトレースＲＡＭ１１４の格納領域の最大値として（ステップＳ８４）、処理はＳ５６の処理に戻る。そして、格納領域位置ｋに格納されたパケット情報ＩｐｋにエラーフラグＦｅがなくなるまで、フローが繰り返される（Ｓ６０）。つまり、正常な処理部１１０は、パケット情報ＥＳが格納された格納領域位置ｋから遡って、エラーフラグＦｅを有するパケット情報について上記判定を行う。これにより、容易にエラーフラグＦｅを有する全てのパケット情報を検索できるので、より容易に上記判定を行うことが可能である。
【００７３】
図１０は、実施の形態１にかかる処理制御部１２０によって実行される、継続動作不可信号Ｓｕｃの受信後の動作を示すフローチャートである。処理制御部１２０は、正常な処理部１１０から継続動作不可信号Ｓｕｃが通知された場合（ステップＳ９０のＹＥＳ）、継続動作不可信号Ｓｕｃを通知した処理部１１０及びその処理部１１０の専用の周辺機能１０６に対してリセットを発行する（ステップＳ９２）。これにより、故障した処理部１１０の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、正常な処理部１１０の誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部１２０内の設定によって、適宜変更され得る。
【００７４】
図１１は、実施の形態１にかかる処理制御部１２０によって実行される、引継ぎ影響有無信号Ｓｈｅの受信後の動作を示すフローチャートである。処理制御部１２０は、正常な処理部１１０から引継ぎ影響有無信号Ｓｈｅが通知された場合（ステップＳ９４のＹＥＳ）、処理制御部１２０における設定値に対応したリセット範囲にリセットを発行する（ステップＳ９６）。これにより、故障した処理部１１０の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、故障した処理部１１０が行っていた処理を正常な処理部１１０が引き継いだことによる誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部１２０内の設定値によって、適宜変更され得る。
【００７５】
図１２は、実施の形態１にかかる動作例を示すタイミングチャートである。図１２は、処理部１１０−１（処理部＃１）にエラーが発生した場合に処理部１１０−２（処理部＃２）が継続動作判定を行う例を示す。つまり、図１２では、「故障した処理部１１０」は処理部１１０−１（処理部＃１）であり、「正常な処理部１１０」は処理部１１０−２（処理部＃２）である。
【００７６】
処理部１１０−１の処理内容は、処理部１１０−１がバス（システムバス１０８）に発行している書き込み／読み込み命令、及び処理部１１０−１自身の状態を示す。エラー信号Ｓｅｒは、初期状態ではエラーが発生していない状態（Ｌｏｗ）を示しており、ロックステップ機構等によりエラーを検知したタイミングでエラーが発生している状態（Ｈｉｇｈ）を示す信号である。データ書込部１１２−１（データ書込部＃１）の処理内容における「パケット処理」では、データ書込部１１２−１は、図６で示すようなパケット処理フローを実行する。書き込みポインタは、データ書込部１１２−１に関するトレースＲＡＭ１１４−１（トレースＲＡＭ＃１）に書き込みを行うためのアドレス情報に使用する値を示す。ここで、ｎは、ある時間のトレースＲＡＭ１１４における書き込みポインタが示す値であり、ｍは、処理部１１０−１が故障してからの処理部１１０−１の書き込み／読み込み回数を示す。
【００７７】
処理制御部１２０の処理内容において、「処理部＃１停止処理」では、処理制御部１２０は、例えば図７に示す動作を実行する。また、「Ｘ」では、処理制御部１２０は、他の任意の処理を実行しているか、又は停止していることを示す。
【００７８】
また、「トレースＲＡＭ＃１情報」は、トレースＲＡＭ１１４−１に格納されている情報（トレース情報）を示す。ここで、トレースＲＡＭ＃１情報において、「パケット情報」とは、エラーフラグＦｅが立っていない（つまりエラーフラグＦｅが「０」に設定されている）パケット情報Ｉｐｋである。また、上述したように、「パケット情報Ｅ」は、エラーフラグＦｅが立っており処理部停止フラグＦｓが立っていないパケット情報Ｉｐｋであり、「パケット情報ＥＳ」は、エラーフラグＦｅが立っており処理部停止フラグＦｓが立っているパケット情報Ｉｐｋである。また、トレースＲＡＭ＃１情報において、「Ｘ」は、任意のパケット情報が格納されていることを示す。
【００７９】
図１２の例では、書き込みポインタｎに対応するタイミングで、処理部１１０−１にエラーが発生している。したがって、矢印Ａで示すように、トレースＲＡＭ＃１情報における書き込みポインタｎに対応する領域には、「パケット情報Ｅ」が格納される。また、矢印Ｂで示すように、処理部１１０−１からエラー信号Ｓｅｒが発行されると、処理制御部１２０は、図７に示す処理部＃１停止処理を実行する。そして、矢印Ｃで示すように、故障した処理部１１０である処理部１１０−１にリセット信号Ｓｒｓを発行すると、処理部１１０−１は、すぐに停止するわけではなく、書き込みポインタｎ＋ｍのタイミングで停止する。一方、処理制御部１２０は、リセット信号Ｓｒｓを発行してから期間Ｔｓｔｏｐが経過すると、矢印Ｄで示すように、正常な処理部１１０である処理部１１０−２に対して処理部停止完了信号Ｓｓｔを発行する。このとき、矢印Ｅで示すように、トレースＲＡＭ＃１情報における書き込みポインタｎ＋ｍに対応する領域には、「パケット情報ＥＳ」が格納される。なお、トレースＲＡＭ＃１情報における書き込みポインタｎ＋１〜ｎ＋ｍ−１に対応する領域には、「パケット情報Ｅ」が格納される。
【００８０】
処理部１１０−２は、処理制御部１２０から処理部停止完了信号Ｓｓｔを通知されると、継続動作判定処理を実行する。処理部１１０−２は、継続動作判定処理において、トレースＲＡＭ＃１情報から、パケット情報Ｅ〜パケット情報ＥＳ間の情報を取得する（図８〜図９のＳ５４，Ｓ５６，Ｓ６０，Ｓ８０参照）。そして、処理部１１０−２は、これらの取得された情報が処理部１１０−１及び処理部１１０−２に共有されるメモリ領域及び処理部１１０−２の専用のメモリ領域に影響がないか否かを判断する（図８のＳ６２，Ｓ６４参照）。なお、図１２の例では、処理Ａについて継続動作可能である場合が示されており、処理部１１０−２は、継続動作判定後、継続動作判定前に実行していた処理Ａを再び実行する。
【００８１】
パケット情報Ｅ〜パケット情報ＥＳ間の情報を取得する方法について具体的に説明する。図１２の例では、書き込みポインタｎ＋ｍに対応する領域にパケット情報ＥＳが格納されているので、処理部１１０−２は、Ｓ５４の処理でｋ＝ｎ＋ｍとしてＳ５６の処理でパケット情報ＥＳを取得する。そして、処理部１１０−２は、Ｓ８０の処理でｋをデクリメントしていくことで、最初にパケット情報Ｅが格納された書き込みポインタｎに対応する領域までさかのぼって、パケット情報Ｅを取得する。なお、ｋ＝ｎ−１のときは、対応するパケット情報にはエラーフラグＦｅが立っていないので（Ｓ６０のＮＯ）、図８に示した処理は終了する。
【００８２】
なお、バスアーキテクチャによっては、書き込み／読み込み命令から書き込み／読み込み完了までに複数サイクルを要する場合に、このバスアクセス完了まで、故障した処理部１１０のアクセスを遮断しないよう制御する必要がある。このようなアーキテクチャの場合、故障した処理部１１０がエラー信号Ｓｅｒを発行した場合に故障した処理部１１０のアクセスを遮断するまでの管理を行うシーケンサと、処理制御部１２０と処理部１１０との間に処理部１１０の状態を示すステータス信号とが追加され得る。
【００８３】
図１３は、図１２の動作例に処理部１１０によって発行されるステータス信号が追加されたタイミングチャートである。図１３の例では、ステータス信号として、書き込み／読み込みサイクル完了信号が使用されている。書き込み／読み込みサイクル完了信号は、処理部１１０の書き込み／読み込みが完了したか、又は、処理部１１０が書き込み／読み込み中であるかを示す。
【００８４】
処理部１１０−１からエラー信号Ｓｅｒが発行された場合、矢印Ａで示すように、処理制御部１２０は、処理部１１０−１の書き込み／読み込みサイクル（図１３の例では書き込みサイクル）が完了するまで待機する。そして、処理部１１０−１の書き込み／読み込みサイクルが完了したときに、処理制御部１２０は、矢印Ｂで示すように、図７に示す処理部＃１停止処理を実行する。そして、矢印Ｃで示すように、故障した処理部１１０である処理部１１０−１にリセット信号Ｓｒｓを発行すると、処理部１１０−１は、すぐに停止するわけではないが、期間Ｔｓｔｏｐ以内に停止する。一方、処理制御部１２０は、リセット信号Ｓｒｓを発行してから期間Ｔｓｔｏｐが経過すると、矢印Ｄで示すように、正常な処理部１１０である処理部１１０−２に対して処理部停止完了信号Ｓｓｔを発行する。このとき、トレースＲＡＭ＃１情報における書き込みポインタｎ＋ｍに対応する領域には、「パケット情報ＥＳ」が格納される。なお、トレースＲＡＭ＃１情報における書き込みポインタｎ〜ｎ＋ｍ−１に対応する領域には、「パケット情報Ｅ」が格納される。処理部１１０−２の処理については、図１２の例と実質的に同様である。
【００８５】
＜実施の形態１の変形例１＞
なお、実施の形態１では、処理部１１０が２個である場合について説明したが、処理部１１０は３個以上であってもよい。この場合、複数の処理部１１０が故障することを考慮すると、引継ぎ処理対象の処理部１１０が故障している可能性がある。ここで、引継ぎ処理対象の処理部１１０は、故障した処理部１１０が実行していた処理を引き継ぐように予め設定された処理部１１０である。
【００８６】
図１４は、実施の形態１の変形例１にかかる、図７に示した処理に引継ぎ処理対象の処理部１１０の故障判断が追加された処理のフローチャートである。なお、図１４のステップＳ４０ａ〜Ｓ４４ａは、それぞれ、図７のＳ４０〜Ｓ４４と実質的に同様であるので、説明を省略する。
【００８７】
処理制御部１２０は、引継ぎ処理対象の処理部１１０が故障しているか否かを判定する（ステップＳ４５ａ）。具体的には、処理制御部１２０は、処理制御部１２０内の引継ぎ処理対象の設定から引継ぎ処理対象の処理部１１０を判定する。そして、処理制御部１２０は、引継ぎ処理対象の処理部１１０からエラー信号Ｓｅｒを受信していたか否かを判断し、エラー信号Ｓｅｒを受信していた場合に、引継ぎ処理対象の処理部１１０が故障していると判定する。さらに具体的には、処理制御部１２０は、引継ぎ処理対象の処理部１１０が故障しているか否かを、処理制御部１２０が有する、正常／故障ステータスを保持するＦＦの値で判断する。このＦＦの初期値はクリアされた状態である。このＦＦは、処理部１１０のエラーの通知の際にセットされ、故障した処理部１１０へのリセット信号Ｓｒｓを停止したときにクリアされる。
【００８８】
引継ぎ処理対象の処理部１１０が故障していないと判定された場合（Ｓ４５ａのＮＯ）、処理制御部１２０は、図７のＳ４６と同様にして、引継ぎ処理対象の処理部１１０に対して、処理部停止完了信号Ｓｓｔ及び停止完了処理部通知信号Ｓｎｓを発行する（ステップＳ４６ａ）。これにより、引継ぎ処理対象の処理部１１０は、引継ぎ処理を行うことができる。一方、引継ぎ処理対象の処理部１１０が故障していると判定された場合（Ｓ４５ａのＹＥＳ）、処理制御部１２０は、処理制御部１２０の設定値に対応したリセット範囲にリセットを発行する（ステップＳ４８ａ）。これにより、引継ぎ処理対象の処理部１１０が故障した場合であっても、システム全体として誤動作を防止することが可能となる。また、引継ぎ処理対象の処理部１１０が故障したか否かを判定することにより、故障した処理部１１０が行っていた処理を、エラーなく、システム全体として引き継ぐことが可能となる。
【００８９】
＜実施の形態１の変形例２＞
また、上述した実施の形態１では、処理部１１０が故障した後、処理制御部１２０が故障した処理部１１０にリセット信号Ｓｒｓを発行して故障した処理部１１０を停止させ続ける例について説明した。しかしながら、故障の原因が一過性のものである場合等では、故障した処理部１１０へのリセット信号Ｓｒｓの発行を停止して、故障した処理部１１０を再実行させてもよい。
【００９０】
図１５は、実施の形態１の変形例２にかかる半導体装置１００の構成を示す図である。図１５に示した半導体装置１００は、継続動作判定完了信号Ｓｄｃが追加され、トレースＲＡＭ１１４と処理部１１０とが専用のシステムバスで接続されている点で、図３に示した半導体装置１００と異なる。
【００９１】
各処理部１１０は、各処理部１１０が再実行に必要な情報を、予め、ＲＡＭ等の記憶デバイスの処理部１１０毎に指定されたメモリ領域に書き込んでおく。なお、再実行させるか否かを示す設定は、記憶デバイスを予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値として格納され得る。
【００９２】
図１６は、実施の形態１の変形例２にかかる再実行処理を示すフローチャートである。正常な処理部１１０は、継続動作判定処理の後、継続動作判定処理の実施が完了したことを通知するために、処理制御部１２０に対して、継続動作判定完了信号Ｓｄｃを１パルスで発行する（ステップＳ１００）。処理制御部１２０は、正常な処理部１１０の数と継続動作判定処理の完了した処理部１１０の数とを比較することで、全ての処理部１１０の継続動作判定が完了したか否かを判断する（ステップＳ１０２）。
【００９３】
全ての処理部１１０の継続動作判定が完了した後（Ｓ１０２のＹＥＳ）、処理制御部１２０は継続動作判定処理の完了数を初期化する（ステップＳ１０４）。Ｓ１０４の処理の後、処理制御部１２０は、故障した処理部１１０が再実行処理対象か否かを判断する（ステップＳ１０６）。この再実行処理対象か否かの判断は、例えば、各処理部１１０（又は処理部１１０が実行していた処理）が再実行処理対象か否かを示す設定を、処理制御部１２０がアクセス可能な記憶領域に予め記憶しておいて、その設定を用いることでなされ得る。故障した処理部１１０が再実行処理対象でない場合（Ｓ１０６のＮＯ）、処理は終了する。一方、故障した処理部１１０が再実行処理対象である場合（Ｓ１０６のＹＥＳ）、処理制御部１２０は、故障した処理部１１０へのリセット信号Ｓｒｓの発行を停止する（ステップＳ１０８）。これにより、処理制御部１２０は、故障した処理部１１０を再実行するように制御を行う。
【００９４】
故障した処理部１１０は、故障した処理部１１０が再実行する際に、故障中に実行した処理が故障した処理部１１０自身の処理に影響がないか否かを判定するために、図８のＳ５４〜Ｓ６６の処理と実質的に同様の処理を行う（Ｓ１１０〜Ｓ１１４）。つまり、故障した処理部１１０は、再実行処理に必要な情報を、故障した処理部１１０自身に関するトレースＲＡＭ１１４から取得する（ステップＳ１１０；Ｓ５４〜Ｓ５６に対応）。そして、故障した処理部１１０は、トレースＲＡＭ１１４に格納された情報は再実行処理に影響がないか否かを判定する（ステップＳ１１２；Ｓ６０〜Ｓ６４に対応）。
【００９５】
再実行処理に影響がある場合（Ｓ１１２のＮＯ）、故障した処理部１１０は、処理制御部１２０に対して継続動作不可信号Ｓｕｃを発行する（ステップＳ１１４；Ｓ６６に対応）。一方、再実行処理に影響がない場合（Ｓ１１２のＹＥＳ）、故障した処理部１１０は、再実行処理を行う（ステップＳ１１６）。継続動作不可信号Ｓｕｃを受信した処理制御部１２０は、処理制御部１２０における設定値に対応したリセット範囲にリセットを発行する（ステップＳ１１８）。この場合、処理制御部１２０は、継続動作不可信号Ｓｕｃを通知した処理部１１０とその処理部１１０の専用の周辺機能１０６にリセットを発行するようにしてもよい。また、リセットの範囲は処理制御部１２０内の設定により変更することも可能である。
【００９６】
このように、実施の形態１の変形例２においては、処理制御部１２０は、故障した処理部１１０を再実行するように制御を行う。これにより、故障した処理部１１０は再実行処理を行うことが可能であるので、システム全体として処理の効率化を図ることが可能となる。
【００９７】
なお、図１５は、トレースＲＡＭ１１４と処理部１１０とが専用のシステムバスで接続された例を示すが、このような構成に限られない。再実行判定処理の間にＲＡＭから再実行に必要な情報を読み込む際に、データ書込部１１２による上書きを防止するような構成であればよい。したがって、再実行判定処理であることを通知する信号を処理部１１０と処理制御部１２０との間に追加して、データ書込部１１２の書き込みを停止するようにしてもよい。または、処理部１１０からのアクセスがトレースＲＡＭ１１４へのアクセスでるか否かをデータ書込部１１２が判断するために、トレースＲＡＭ１１４領域の開始／終了アドレス等を記憶領域に格納して、処理部１１０のアクセスアドレスと比較することで、処理部１１０からのアクセスがトレースＲＡＭ１１４へのアクセスか否かを判断ようにしてもよい。
【００９８】
また、トレースＲＡＭ１１４領域の開始／終了アドレスを格納するとしたが、トレースＲＡＭ１１４の領域が判定可能な構成となっていればよい。例えば、設定用のレジスタを設けて、システムバス１０８又は専用のバスを介して処理制御部１２０を処理部１１０と接続することで、この設定を処理部１１０から書き換え可能なシステムとしてもよい。
【００９９】
上述したように、実施の形態１にかかる半導体装置１００は、処理制御部１２０、トレースＲＡＭ１１４及びデータ書込部１１２を有している。これにより、例えば処理部１１０−１（第１の処理部）でエラーが発生した場合に、処理部１１０−２（第２の処理部）は、処理部１１０−１に関するトレースＲＡＭ１１４−１に格納されたトレース情報を用いて、システム全体として継続動作が可能か否かの判定を行うことができる。したがって、実施の形態１にかかる半導体装置１００は、複数の処理部１１０のうちの１つにエラーが発生した場合であっても、システム全体として継続して処理を実行することができる。さらに、上記継続動作が可能であるとの判定は、処理部１１０−１にエラーが発生したことによる処理部１１０−２に対する影響がない場合になされる。これにより、より確実に、継続動作が可能であるか否かの判定を行うことが可能である。
【０１００】
また、実施の形態１においては、上述した図８のＳ６２及びＳ６４の処理のように、正常な処理部１１０は、エラーフラグＦｅのあるパケット情報のアドレスが、自身の処理部１１０によって使用され得る記憶領域のアドレスの範囲内にない場合に、自身が行っていた処理を継続して実行する。これにより、正常な処理部１１０は、自身が行っていた処理を、誤動作なく継続することが可能である。
【０１０１】
また、実施の形態１においては、上述した図９のＳ７２及びＳ７４の処理のように、正常な処理部１１０は、エラーフラグＦｅのあるパケット情報のアドレスが、故障した処理部１１０によって使用され得る記憶領域のアドレスの範囲内にない場合に、故障した処理部１１０が行っていた処理を引き継いで実行する。これにより、正常な処理部１１０は、故障した処理部１１０が行っていた処理を、誤動作なく引き継ぐことが可能である。
【０１０２】
また、故障した処理部が出力するデータを伝搬させない機構を採用した関連技術があるが、この技術では、この機構に起因して、処理部とメモリ（周辺機能等のレジスタ）との間の遅延が発生するおそれがある。また、この機構が故障した場合に正常な処理部からメモリにアクセスできないおそれがある。一方、実施の形態１にかかる半導体装置１００は、上記機構を採用していないので、上述の問題が発生することを防止することができる。
【０１０３】
（実施の形態２）
次に、実施の形態２について説明する。実施の形態２にかかる半導体装置は、所定の条件に応じて処理部の再実行処理を制御できる再実行制御機能が追加された点で、実施の形態１にかかる半導体装置１００（図１５）と異なる。
【０１０４】
図１７は、実施の形態２にかかる半導体装置２００の構成を示す図である。半導体装置２００は、ＲＡＭ１０２と、フラッシュメモリ１０４と、周辺機能１０６と、システムバス１０８とを有する。また、半導体装置２００は、処理部１１０−１（処理部＃１）及び処理部１１０−２（処理部＃２）と、データ書込部１１２−１（データ書込部＃１）及びデータ書込部１１２−２（データ書込部＃２）と、トレースＲＡＭ１１４−１（トレースＲＡＭ＃１）及びトレースＲＡＭ１１４−２（トレースＲＡＭ＃２）とを有する。さらに、半導体装置２００は、処理制御部２２０を有する。処理制御部２２０以外の構成要素については、実施の形態１にかかるものと実質的に同様であるので、説明を省略する。
【０１０５】
実施の形態２にかかる処理制御部２２０は、上述した処理制御部１２０が有する機能に加えて、再実行制御機能を有する。処理制御部２２０は、再実行制御機能用に、各処理部１１０から通知されるエラー回数をカウントする機構をさらに有する。なお、再実行制御機能の設定は、処理制御部２２０を予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値で格納され得る。なお、再実行制御機能の設定用のレジスタを追加した処理制御部２２０を処理部１１０とバスを介して接続することで、処理部１１０から設定変更可能なシステムを構成してもよい。
【０１０６】
図１８は、実施の形態２にかかる処理制御部２２０によって実行される再実行制御処理を示すフローチャートである。まず、処理制御部２２０は、初期化シーケンスを実行する（ステップＳ２０２）。具体的には、処理制御部２２０は、エラー回数ｅｒｒｃｎｔ＃ｈを０に設定する。ここで、ｈは、処理部１１０に対応した数値を示す。つまり、処理部１１０の数だけエラー回数を示すユニークな変数がある。例えば、処理部１１０−１のエラー回数はｅｒｒｃｎｔ＃１で示される。そして、以降の処理（Ｓ２１０〜Ｓ２２６）において、再実行制御処理が行われる。なお、Ｓ２０２の処理は、以降の処理（Ｓ２１０〜Ｓ２２６）とは独立して行われてもよい。
【０１０７】
処理制御部２２０は、処理部１１０からエラー信号Ｓｅｒを受信すると（ステップＳ２１０のＹＥＳ）、カウント機能によってエラー回数ｅｒｒｃｎｔ＃ｈをインクリメントする（ステップＳ２１２）。例えば、処理部１１０−１からエラー通知された場合は、ｅｒｒｃｎｔ＃１がインクリメントされる。そして、図７のＳ４２の処理と同様に、処理制御部２２０は、故障した処理部１１０に対して、リセット信号Ｓｒｓを発行する（ステップＳ２１４）。次に、図７のＳ４４〜Ｓ４６の処理と同様に、処理制御部２２０は、リセット信号Ｓｒｓを発行してから期間Ｔｓｔｏｐが経過すると（ステップＳ２１６のＹＥＳ）、正常な処理部１１０に対して、処理部停止完了信号Ｓｓｔ及び停止完了処理部通知信号Ｓｎｓを発行する（ステップＳ２１８）。
【０１０８】
次に、処理制御部２２０は、正常な処理部１１０からの継続動作判定完了信号Ｓｄｃを用いて、全ての継続動作判定が完了したか否かを判定する（ステップＳ２２０）。全ての継続動作判定が完了したと判定された場合（Ｓ２２０のＹＥＳ）、処理制御部２２０は、エラー回数ｅｒｒｃｎｔ＃ｈが規定回数を超えたか否かを判定する（ステップＳ２２２）。エラー回数ｅｒｒｃｎｔ＃ｈが規定回数を超えていない場合（Ｓ２２２のＮＯ）、処理制御部２２０は、故障した処理部１１０へのリセット信号Ｓｒｓの発行を停止する（ステップＳ２２６）。そして、処理はＳ２１０の処理に戻ってもよい。なお、この後、故障した処理部１１０は、図１６のＳ１１０〜Ｓ１１６の処理（再実行処理）を行ってもよい。一方、エラー回数ｅｒｒｃｎｔ＃ｈが規定回数を超えた場合（Ｓ２２２のＹＥＳ）、処理制御部２２０は、故障した処理部１１０へのリセット信号Ｓｒｓの発行を継続し（ステップＳ２２４）、Ｓ２１０の処理に戻る。この場合、故障した処理部１１０は、再実行を行わない。
【０１０９】
なお、エラー回数をカウントするタイミングは、故障した処理部１１０に対して処理部停止処理を実行してからでもよい。つまり、Ｓ２１２の処理は、Ｓ２１４の処理の後でもよい。また、エラー回数ｅｒｒｃｎｔ＃ｈは、処理部１１０ごとに独立な変数としてＲＡＭ１０２等の記憶デバイスに格納される。なお、この変数は、エラー内容に応じて区別され得る。また、エラー回数の規定回数（上限）等の設定値は、処理制御部２２０内に設定され得る。
【０１１０】
なお、上記では、エラー回数ｅｒｒｃｎｔ＃ｈはＲＡＭ１０２等の記憶デバイスに変数で格納されると説明したが、そのような構成に限られない。処理制御部２２０は、トレースＲＡＭ１１４内に記憶される処理部停止フラグＦｓを含むパケット情報をカウントすることによって、エラー回数ｅｒｒｃｎｔ＃ｈを求めてもよい。この場合、トレースＲＡＭ１１４と処理制御部２２０とをバスで接続すればよい。
【０１１１】
また、上記では、処理制御部２２０がカウント機能を有しているとしたが、このような構成に限られない。処理制御部２２０は、周辺機能１０６に設けられたタイマ等を使用して、ある時間内の処理部１１０ごとのエラー回数をカウントしてもよい。また、処理制御部２２０は、トレースＲＡＭ１１４に格納された、処理部停止フラグＦｓを含むパケット情報の数と処理部停止フラグＦｓを含まない（正常な）パケット情報の数との合計に対する、処理部停止フラグＦｓを含むパケット情報の数の比率を計算することで、エラーの頻度を算出してもよい。そして、処理制御部２２０は、そのエラー頻度に応じて故障した処理部１１０へのリセット信号の発行を停止するか、又は継続するかを選択してもよい。さらに、処理制御部２２０は、エラー回数及びエラー頻度の両方を用いて、故障した処理部１１０へのリセット信号の発行を停止するか否かを判定してもよい。この場合、処理制御部２２０は、エラー回数及びエラー頻度のどちらかを優先して、上記判定を行ってもよい。
【０１１２】
図１９は、実施の形態２にかかる処理制御部２２０によって実行される再実行制御処理の変形例を示すフローチャートである。なお、図１９の処理は、図１８のＳ２２２〜Ｓ２２６の代わりに実行され得る。
【０１１３】
処理制御部２２０は、上述した方法でエラー頻度を算出し（ステップＳ２３２）、算出されたエラー頻度が規定値を超えたか否かを判定する（ステップＳ２３４）。エラー頻度が規定値を超えた場合（Ｓ２３４のＹＥＳ）、処理制御部２２０は、故障した処理部１１０へのリセット信号Ｓｒｓの発行を継続し（ステップＳ２３６）、図１８のＳ２１０の処理に戻る。この場合、故障した処理部１１０は、再実行を行わない。
【０１１４】
一方、エラー頻度が規定値を超えていない場合（Ｓ２３４のＮＯ）、処理制御部２２０は、エラー回数を算出し（ステップＳ２３８）、エラー回数が規定値を超えたか否かを判定する（ステップＳ２４０）。エラー回数が規定値を超えた場合（Ｓ２４０のＹＥＳ）、処理制御部２２０は、故障した処理部１１０へのリセット信号Ｓｒｓの発行を継続する（ステップＳ２３６）。一方、エラー回数が規定値を超えていない場合（Ｓ２４０のＮＯ）、処理制御部２２０は、故障した処理部１１０へのリセット信号Ｓｒｓの発行を停止し（ステップＳ２４２）、図１８のＳ２１０の処理に戻る。これにより、故障した処理部１１０は、再実行処理を行い得る。
【０１１５】
これにより、エラー頻度が規定値以下である場合であっても、エラー回数が規定値より多い場合は、故障した処理部１１０へのリセット信号を継続することで、故障した処理部１１０を停止させておくシステム構成が可能となる。なお、上記規定値は、処理制御部２２０内に設定され得る。また、図１９の処理はあくまでも例示であって、システム構成に応じて最適な構成にすればよい。
【０１１６】
実施の形態１（変形例２）にかかる半導体装置１００は、処理部１１０にエラーが発生した場合等にエラーが発生した処理部１１０に対してリセットを発行することでその処理部１１０の処理を停止し、そのリセットの発行を解除することで、その処理部１１０を再実行することが可能である。しかしながら、リセットによって故障原因が排除されない場合では、リセット動作を繰り返してしまうおそれがある。一方、実施の形態２にかかる半導体装置２００は、上記のように、エラー回数又はエラー頻度に応じて、故障した処理部１１０を停止したままにしておくか又は再実行させるかを判定することができる。これにより、実施の形態２にかかる半導体装置２００は、上記のようなリセット動作を繰り返してしまうことを防止することが可能となる。言い換えると、実施の形態２にかかる半導体装置２００は、再実行すべきでない処理部１１０の再実行を抑制することが可能である。
【０１１７】
（実施の形態３）
次に、実施の形態３について説明する。実施の形態３にかかる半導体装置は、デコード部（判定部）を有する点で、他の実施の形態にかかる半導体装置と異なる。そして、実施の形態３においては、正常な処理部ではなく、デコード部が、故障した処理部の処理による影響の有無の判定（継続動作判定）を行う。
【０１１８】
図２０は、実施の形態３にかかる半導体装置３００の構成を示す図である。半導体装置３００は、ＲＡＭ１０２と、フラッシュメモリ１０４と、周辺機能１０６と、システムバス１０８とを有する。また、半導体装置３００は、処理部１１０−１（処理部＃１）及び処理部１１０−２（処理部＃２）と、データ書込部１１２−１（データ書込部＃１）及びデータ書込部１１２−２（データ書込部＃２）と、トレースＲＡＭ１１４−１（トレースＲＡＭ＃１）及びトレースＲＡＭ１１４−２（トレースＲＡＭ＃２）とを有する。さらに、半導体装置３００は、デコード部３１０−１及びデコード部３１０−２と処理制御部３２０とを有する。デコード部３１０及び処理制御部３２０以外の構成要素については、他の実施の形態にかかるものと実質的に同様であるので、説明を省略する。デコード部３１０−１及びデコード部３１０−２は、それぞれ、処理部１１０−１（処理部＃１）及び処理部１１０−２（処理部＃２）に関する。つまり、デコード部３１０は、複数の処理部１１０それぞれについて設けられている。
【０１１９】
他の実施の形態と同様に、処理制御部３２０は、故障した処理部１１０からエラー信号Ｓｅｒを受信すると、故障した処理部１１０にリセット信号Ｓｒｓを発行することで、故障した処理部１１０の動作を停止させる。そして、処理制御部３２０は、リセット信号Ｓｒｓを発行してから期間Ｔｓｔｏｐが経過すると、処理制御部１２０は、正常な処理部１１０ではなく、故障した処理部１１０に関するデコード部３１０に対して、処理部停止完了信号Ｓｓｔを発行する。
【０１２０】
デコード部３１０は、トレースＲＡＭ１１４とバスを介して接続されている。また、デコード部３１０は、処理部影響有無信号Ｓｐｅ、引継ぎ影響有無信号Ｓｈｅ、影響対象通知信号Ｓｎｅ、影響判定完了信号Ｓｄｅを、処理制御部３２０に対して出力する。また、デコード部３１０には、トレースＲＡＭ１１４から、パケット情報Ｉｐｋが入力される。デコード部３１０には、処理制御部３２０から、処理部停止完了信号Ｓｓｔ及びリセット信号Ｓｒｓが入力される。
【０１２１】
図２１は、実施の形態３にかかるデコード部３１０の詳細を示す図である。デコード部３１０は、パケット情報判定部３１２と、処理部専用・共有アドレス格納部３１４とを有する。処理部専用・共有アドレス格納部３１４は、図５に例示したような、各処理部１１０の専用領域及び共有領域のアドレス情報を、固定値として格納する。処理部専用・共有アドレス格納部３１４における値の設定は、レジスタを追加して処理部１１０とデコード部３１０とをバスを介して接続することで、処理部１１０によって変更可能としてもよい。パケット情報判定部３１２は、ハードウェアで実現されるが、処理部を追加してソフトウェアによって実現されてもよい。その場合、パケット情報判定部３１２の代わりに処理部と、プログラムコード及びプログラムに使用する定数値等を格納するメモリ領域とを設けることで、パケット情報判定部３１２と同等の処理が実行され得る。
【０１２２】
パケット情報判定部３１２は、トレースＲＡＭ１１４からパケット情報Ｉｐｋを取得する。また、パケット情報判定部３１２は、処理部影響有無信号Ｓｐｅ、引継ぎ影響有無信号Ｓｈｅ、影響対象通知信号Ｓｎｅ、影響判定完了信号Ｓｄｅを、処理制御部３２０に対して出力する。
【０１２３】
図２２及び図２３は、実施の形態３にかかるデコード部３１０の処理を示すフローチャートである。なお、この処理は、故障した処理部１１０に関するデコード部３１０によって行われ得る。例えば、処理部１１０−１が故障した場合は、この処理は、デコード部３１０−１によって行われ得る。まず、パケット情報判定部３１２は、引継ぎ影響有無信号Ｓｈｅを初期化する（ステップＳ３０２）。
【０１２４】
デコード部３１０が処理制御部３２０から処理部停止完了信号Ｓｓｔを受信すると（ステップＳ３１０のＹＥＳ）、パケット情報判定部３１２は、故障した処理部１１０に関するトレースＲＡＭ１１４からパケット情報ＥＳの格納領域位置ｋを取得（検索）する（ステップＳ３１２）。上記検索は、トレースＲＡＭ１１４のトレース情報をリードして行われてもよいし、データ書込部１１２から書き込み位置情報を取得する等、格納領域位置ｋが認識できるようになされればよい。そして、パケット情報判定部３１２は、検索された格納領域位置ｋのパケット情報Ｉｐｋを取得する（ステップＳ３１４）。なお、最初のＳ３１４の処理では、格納領域位置ｋのパケット情報Ｉｐｋは、パケット情報ＥＳであるが、２回目以降のＳ３１４の処理では、格納領域位置ｋのパケット情報Ｉｐｋは、パケット情報Ｅ等である。
【０１２５】
パケット情報判定部３１２は、格納領域位置ｋのパケット情報ＩｐｋのエラーフラグＦｅが１であるか否か、つまり格納領域位置ｋのパケット情報ＩｐｋにエラーフラグＦｅがあるか否かを判定する（ステップＳ３１６）。格納領域位置ｋのパケット情報ＩｐｋにエラーフラグＦｅがない場合（Ｓ３１６のＮＯ）、パケット情報判定部３１２は、影響判定完了信号Ｓｄｅを処理制御部３２０に１パルスで発行して（ステップＳ３１８）、処理を終了する。
【０１２６】
格納領域位置ｋのパケット情報ＩｐｋにエラーフラグＦｅがある場合（Ｓ３１６のＹＥＳ）、パケット情報判定部３１２は、故障した処理部１１０による処理の影響の有無を判定された処理部１１０を判断するための変数ｈを初期化する（ステップＳ３２０）。つまり、パケット情報判定部３１２は、ｈを１に設定する。パケット情報判定部３１２は、処理部専用・共有アドレス格納部３１４に格納されたアドレス情報を参照して、パケット情報Ｉｐｋのアドレスが、処理部＃ｈの処理部専用領域開始アドレスと処理部専用領域終了アドレスとの間にあるか否かを判定する（ステップＳ３２２）。言い換えると、パケット情報判定部３１２は、処理部＃ｈの専用メモリ領域の開始・終了アドレス情報を用いて、トレースＲＡＭ１１４の領域に格納されたトレース情報が処理部＃ｈの専用メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
【０１２７】
パケット情報Ｉｐｋのアドレスが処理部＃ｈの専用メモリ領域の開始・終了アドレス情報の範囲内にある場合（Ｓ３２２のＹＥＳ）、処理はＳ３２６の処理に進む。そうでない場合（Ｓ３２２のＮＯ）、パケット情報判定部３１２は、処理部専用・共有アドレス格納部３１４に格納されたアドレス情報を参照して、パケット情報Ｉｐｋのアドレスが、処理部＃ｈの処理部共有領域開始アドレスと処理部共有領域終了アドレスとの間にあるか否かを判定する（ステップＳ３２４）。言い換えると、パケット情報判定部３１２は、処理部＃ｈの共有メモリ領域の開始・終了アドレス情報を用いて、トレースＲＡＭ１１４の領域に格納されたトレース情報が処理部＃ｈの共有メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
【０１２８】
パケット情報Ｉｐｋのアドレスが処理部＃ｈの共有メモリ領域の開始・終了アドレス情報の範囲内にある場合（Ｓ３２４のＹＥＳ）、処理はＳ３２６の処理に進む。そうでない場合（Ｓ３２４のＮＯ）、処理はＳ３４０の処理に進む。
【０１２９】
ステップＳ３２６において、パケット情報判定部３１２は、処理部＃ｈが故障した処理部１１０であるか否かを判定する。この判定は、自身のデコード部３１０に関する処理部１１０（つまり故障した処理部１１０）と、変数ｈが示す処理部１１０とが一致するか否かを判定することでなされ得る。つまり、例えば処理部１１０−２（処理部＃２）が故障してデコード部３１０−２が図２２及び図２３に示す処理を行っている場合、デコード部３１０−２のパケット情報判定部３１２は、処理部＃ｈが処理部＃２であるか否か、つまりｈ＝２であるか否かを判定する。処理部＃ｈが故障した処理部１１０である場合（Ｓ３２６のＹＥＳ）、パケット情報判定部３１２は、引継ぎ影響有無信号Ｓｈｅを１にセットして（ステップＳ３２８）、処理はＳ３３２の処理に進む。一方、処理部＃ｈが故障した処理部１１０でない場合（Ｓ３２６のＮＯ）、パケット情報判定部３１２は、処理部影響有無信号Ｓｐｅを１パルスで発行して（ステップＳ３３０）、処理はＳ３３２の処理に進む。ステップＳ３３２において、パケット情報判定部３１２は、影響対象通知信号Ｓｎｅをｈにセットする。そして、処理はＳ３４０の処理に進み、判定動作のフローに戻る。
【０１３０】
ステップＳ３４０において、パケット情報判定部３１２は、変数ｈをインクリメントする。そして、パケット情報判定部３１２は、ｈが処理部１１０の数を超えたか否かを判定する（ステップＳ３４２）。ｈが処理部１１０の数を超えていない場合（Ｓ３４２のＮＯ）、処理はＳ３２２の処理（Ｓ３２０の後の処理）に戻る。一方、ｈが処理部１１０の数を超えた場合（Ｓ３４２のＹＥＳ）、格納領域位置ｋに格納されたパケット情報Ｉｐｋについて全ての処理部１１０についての判定が終了したこととなる。
【０１３１】
したがって、パケット情報判定部３１２は、パケット情報Ｉｐｋの格納領域位置ｋの値をデクリメントする（ステップＳ３４４）。そして、パケット情報判定部３１２は、ｋの値が−１であるか否かを判定し（ステップＳ３４６）、ｋ＝−１でない場合（Ｓ３４６のＮＯ）、処理はＳ３１４の処理に戻る。一方、ｋ＝−１である場合（Ｓ３４６のＹＥＳ）、パケット情報判定部３１２は、ｋの値をトレースＲＡＭ１１４の格納領域の最大値として（ステップＳ３４８）、処理はＳ３１４の処理に戻る。そして、格納領域位置ｋに格納されたパケット情報ＩｐｋにエラーフラグＦｅがなくなるまで、フローが繰り返される（Ｓ３１６）。
【０１３２】
なお、引継ぎ影響有無信号Ｓｈｅは、デコード部３１０にリセット信号Ｓｒｓが発行される際に初期化される。また、パケット情報判定部３１２が影響対象通知信号Ｓｎｅを出力すると記載したが、どの処理部１１０に対して影響があるかを示すことができれば、このような構成に限られない。例えば、デコード部３１０内に判断用のレジスタを設けてそのレジスタに処理制御部３２０がアクセス可能としてもよい。また、自身のデコード部３１０に関する処理部１１０を除く処理部１１０の数の処理部停止完了信号Ｓｓｔを処理制御部３２０とデコード部３１０との間に設けてもよい。例えば、処理制御部３２０とデコード部３１０−１との間に、処理部１１０−１以外の処理部１１０（例えば処理部１１０−２）についての処理部停止完了信号Ｓｓｔを設けてもよい。
【０１３３】
次に、図２４及び図２５を用いて、処理制御部３２０の処理について説明する。
図２４は、実施の形態３にかかる処理制御部３２０によって実行される、処理部影響有無信号Ｓｐｅが通知された場合の処理を示すフローチャートである。処理制御部３２０は、処理部影響有無信号Ｓｐｅを受信すると（ステップＳ３５０のＹＥＳ）、影響対象通知信号Ｓｎｅを用いて、故障した処理部１１０の処理がどの処理部１１０に影響したかを判定する（ステップＳ３５２）。そして、処理制御部３２０は、対象の処理部１１０（故障した処理部１１０の処理に影響を受けた処理部１１０）とその処理部１１０の専用の周辺機能１０６に対してリセットを発行する（ステップＳ３５４）。これにより、故障した処理部１１０の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、故障した処理部１１０の処理によって影響を受けた正常な処理部１１０の誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部３２０内の設定によって、適宜変更され得る。
【０１３４】
図２５は、実施の形態３にかかる処理制御部３２０によって実行される、影響判定完了信号Ｓｄｅが通知された場合の処理を示すフローチャートである。処理制御部３２０は、影響判定完了信号Ｓｄｅを受信すると（ステップＳ３６０のＹＥＳ）、引継ぎ影響有無信号Ｓｈｅを受信しているか否かを判定する（ステップＳ３６２）。引継ぎ影響有無信号Ｓｈｅが受信されている場合（Ｓ３６２のＹＥＳ）、故障した処理部１１０の処理を引き継ぐことはできない。したがって、処理制御部３２０は、処理制御部３２０の設定値に対応したリセット範囲にリセットを発行する（ステップＳ３６４）。これにより、故障した処理部１１０の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、故障した処理部１１０が行っていた処理を正常な処理部１１０が引き継いだことによる誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部１２０内の設定値によって、適宜変更され得る。
【０１３５】
一方、引継ぎ影響有無信号Ｓｈｅが受信されていない場合（Ｓ３６２のＮＯ）、処理制御部３２０は、故障した処理部１１０が行っていた処理が引き継ぎ処理の対象であるか否かを判定する（ステップＳ３６６）。具体的には、処理制御部３２０は、Ｓ７０の処理と同様に、故障した処理部１１０が行っていた処理の量及び重要度等に応じて、故障した処理部１１０が行っていた処理が引き継ぎ処理の対象であるか否かを判定してもよい。故障した処理部１１０が行っていた処理が引き継ぎ処理の対象であると判定された場合（Ｓ３６６のＹＥＳ）、処理制御部３２０は、引継ぎ処理対象の処理部１１０が故障しているか否かを判定する（ステップＳ３６８）。具体的には、Ｓ４５ａと同様に、処理制御部３２０は、処理制御部３２０内の引継ぎ処理対象の設定から引継ぎ処理対象の処理部１１０を判定する。そして、処理制御部３２０は、引継ぎ処理対象の処理部１１０からエラー信号Ｓｅｒを受信していたか否かを判断し、エラー信号Ｓｅｒを受信していた場合に、引継ぎ処理対象の処理部１１０が故障していると判定する。引継ぎ処理対象の処理部１１０が故障していないと判定された場合（Ｓ３６８のＮＯ）、処理制御部３２０は、引継ぎ処理対象の処理部１１０に対して、処理部停止完了信号Ｓｓｔ及び停止完了処理部通知信号Ｓｎｓを発行する（ステップＳ３７０）。これにより、引継ぎ処理対象の処理部１１０は、故障した処理部１１０が行っていた処理の引継ぎ処理を行うことができる。一方、引継ぎ処理対象の処理部１１０が故障していると判定された場合（Ｓ３６８のＹＥＳ）、処理制御部３２０は、処理制御部３２０の設定値に対応したリセット範囲にリセットを発行する（ステップＳ３６４）。これにより、引継ぎ処理対象の処理部１１０が故障した場合であっても、システム全体として誤動作を防止することが可能となる。また、引継ぎ処理対象の処理部１１０が故障したか否かを判定することにより、故障した処理部１１０が行っていた処理を、エラーなく、システム全体として引き継ぐことが可能となる。
【０１３６】
また、処理制御部３２０は、故障した処理部１１０が再実行処理対象か否かを判断する（ステップＳ３７２）。故障した処理部１１０が再実行処理対象でない場合（Ｓ３７２のＮＯ）、処理は終了する。一方、故障した処理部１１０が再実行処理対象である場合（Ｓ３７２のＹＥＳ）、処理制御部３２０は、図１６、図１８及び図１９に示したような、再実行処理を実行する（ステップＳ３７４）。これにより、故障した処理部１１０が再実行処理対象である場合に、故障した処理部１１０が再実行可能であれば故障した処理部１１０に再実行処理を行わせることができる。
【０１３７】
＜実施の形態３の変形例１＞
上述した実施の形態３にかかるデコード部３１０は、処理部１１０のバス情報（書き込み／読み込み情報等に対応）及びエラー情報（エラー信号Ｓｅｒに対応）を含むパケット情報Ｉｐｋを格納するトレースＲＡＭ１１４に接続されている。しかしながら、このような構成に限られない。デコード部３１０に処理部１１０のバス情報及びエラー情報が入力されれば、どのような構成であってもよい。例えば、デコード部３１０は、各処理部１１０のバスから、逐次的に、各処理部１１０のバス情報及びエラー情報を取得するようにしてもよい。
【０１３８】
図２６は、実施の形態３の変形例１にかかる半導体装置３００の構成を示す図である。図２６に示した半導体装置３００は、データ書込部１１２、トレースＲＡＭ１１４及びデコード部３１０の代わりに、デコード部３３０（デコード部３３０−１，３３０−２）を有する。デコード部３３０は、図２１に示すようなデコード部３１０の構成を有し得る。
【０１３９】
ここで、デコード部３３０は、各処理部１１０のバスから、逐次的に、各処理部１１０のバス情報及びエラー情報（第２の情報）を取得して、それらの情報からパケット情報を取得して処理を行う。したがって、実施の形態３の変形例１にかかる半導体装置３００は、各処理部１１０のバス情報及びエラー情報（パケット情報）を格納する必要がないので、データ書込部１１２及びトレースＲＡＭ１１４が不要である。また、デコード部３３０は逐次的に処理を行うので、処理制御部３２０からデコード部３３０へは処理部停止完了信号Ｓｓｔは送信されない。また、デコード部３３０は逐次的に処理を行うので、デコード部３３０から処理制御部３２０には、影響判定完了信号Ｓｄｅは送信されない。一方、処理部１１０は、書き込み／読み込みが完了した場合に、処理制御部３２０に対し、書き込み／読み込みサイクル完了信号Ｓｃｃを通知する。これにより、処理制御部３２０は、後述する図２９に示す処理を実行することができる。
【０１４０】
図２７及び図２８は、実施の形態３の変形例１にかかるデコード部３３０の処理を示すフローチャートである。上述したように、この処理は、デコード部３３０によって逐次的に行われる。デコード部３３０は、各処理部１１０のバス情報又はエラー情報（パケット情報）が更新されたか否かを判定し（ステップＳ３１０ａ）、更新があった場合に（Ｓ３１０ａのＹＥＳ）、バス情報及びエラー情報から、パケット情報Ｉｐｋを取得する（ステップＳ３１４ａ）。この処理は、デコード部３３０がバス情報及びエラー情報を用いて図４に例示するパケット情報Ｉｐｋを生成することで行われ得る。なお、ここで取得されるパケット情報Ｉｐｋは、図４に例示する情報を全て含む必要はない。
【０１４１】
デコード部３３０は、パケット情報ＩｐｋのエラーフラグＦｅが１であるか否か、つまり取得されたパケット情報ＩｐｋにエラーフラグＦｅがあるか否かを判定する（ステップＳ３１６ａ）。パケット情報ＩｐｋにエラーフラグＦｅがない場合（Ｓ３１６ａのＮＯ）、処理は終了する。
【０１４２】
パケット情報ＩｐｋにエラーフラグＦｅがある場合（Ｓ３１６ａのＹＥＳ）、デコード部３３０は、故障した処理部１１０による処理の影響の有無を判定された処理部１１０を判断するための変数ｈを初期化する（ステップＳ３２０ａ）。デコード部３３０は、図２２のＳ３２２と同様にして、図５に示すアドレス情報を参照して、パケット情報Ｉｐｋのアドレスが、処理部＃ｈの処理部専用領域開始アドレスと処理部専用領域終了アドレスとの間にあるか否かを判定する（ステップＳ３２２ａ）。つまり、デコード部３３０は、専用メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
【０１４３】
パケット情報Ｉｐｋのアドレスが処理部＃ｈの専用メモリ領域の開始・終了アドレス情報の範囲内にある場合（Ｓ３２２ａのＹＥＳ）、処理はＳ３２６ａの処理に進む。そうでない場合（Ｓ３２２ａのＮＯ）、デコード部３３０は、図２２のＳ３２２と同様にして、図５に示すアドレス情報を参照して、パケット情報Ｉｐｋのアドレスが、処理部＃ｈの処理部共有領域開始アドレスと処理部共有領域終了アドレスとの間にあるか否かを判定する（ステップＳ３２４ａ）。つまり、デコード部３３０は、処理部＃ｈの共有メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
【０１４４】
パケット情報Ｉｐｋのアドレスが処理部＃ｈの共有メモリ領域の開始・終了アドレス情報の範囲内にある場合（Ｓ３２４ａのＹＥＳ）、処理はＳ３２６ａの処理に進む。そうでない場合（Ｓ３２４ａのＮＯ）、処理はＳ３４０ａの処理に進む。
【０１４５】
ステップＳ３２６ａにおいて、デコード部３３０は、処理部＃ｈが故障した処理部１１０であるか否かを判定する。この判定は、自身のデコード部３３０に関する処理部１１０（つまり故障した処理部１１０）と、変数ｈが示す処理部１１０とが一致するか否かを判定することでなされ得る。つまり、例えば処理部１１０−２（処理部＃２）が故障してデコード部３３０−２が図２７及び図２８に示す処理を行っている場合、デコード部３３０−２は、処理部＃ｈが処理部＃２であるか否か、つまりｈ＝２であるか否かを判定する。処理部＃ｈが故障した処理部１１０である場合（Ｓ３２６ａのＹＥＳ）、デコード部３３０は、引継ぎ影響有無信号Ｓｈｅを１にセットして（ステップＳ３２８ａ）、処理はＳ３３２ａの処理に進む。一方、処理部＃ｈが故障した処理部１１０でない場合（Ｓ３２６ａのＮＯ）、デコード部３３０は、処理部影響有無信号Ｓｐｅを１パルスで発行して（ステップＳ３３０ａ）、処理はＳ３３２ａの処理に進む。ステップＳ３３２ａにおいて、デコード部３３０は、影響対象通知信号Ｓｎｅをｈにセットする。そして、処理はＳ３４０ａの処理に進み、判定動作のフローに戻る。なお、処理部影響有無信号Ｓｐｅを受信した処理制御部３２０は、図２４に示す処理を行う。また、引継ぎ影響有無信号Ｓｈｅを受信した処理制御部３２０は、図２９に示す処理を行う。
【０１４６】
ステップＳ３４０ａにおいて、デコード部３３０は、変数ｈをインクリメントする。そして、デコード部３３０は、ｈが処理部１１０の数を超えたか否かを判定する（ステップＳ３４２ａ）。ｈが処理部１１０の数を超えていない場合（Ｓ３４２のＮＯ）、処理はＳ３２２ａの処理（Ｓ３２０ａの後の処理）に戻る。一方、ｈが処理部１１０の数を超えた場合（Ｓ３４２ａのＹＥＳ）、処理は終了する。なお、引継ぎ影響有無信号Ｓｈｅは、デコード部３１０にリセット信号Ｓｒｓを発行する際に初期化される。
【０１４７】
図２９は、実施の形態３の変形例１にかかる、書き込み／読み込みサイクル完了信号Ｓｃｃを受信した処理制御部３２０の処理を示すフローチャートである。処理制御部３２０は、書き込み／読み込みサイクル完了信号Ｓｃｃを受信すると（ステップＳ３６０ａのＹＥＳ）、故障した処理部１１０から最終のパケット情報（バス情報等）が出力されてから期間Ｔｅｆｆが経過したか否かを判定する（ステップＳ３６１ａ）。つまり、処理制御部３２０は、最終のパケット情報が出力されてから、期間Ｔｅｆｆ待機する。
【０１４８】
ここで、期間Ｔｅｆｆは、デコード部３３０が１つのパケット情報を処理するのに要する最大時間である。また、故障した処理部１１０が書き込み／読み込みサイクル完了信号Ｓｃｃを処理制御部３２０に通知して次に処理されるパケット情報が、最終のパケット情報となる。したがって、処理制御部３２０は、書き込み／読み込みサイクル完了信号Ｓｃｃを受信したことをトリガとして、処理制御部３２０内のタイマを開始して、期間Ｔｅｆｆを計測する。なお、Ｔｅｆｆを計測するために予め定められた値が処理制御部３２０に格納されている。処理制御部３２０は、その値とタイマのカウント値とが一致すると、タイマのカウントを停止してカウント値を初期化する。
【０１４９】
期間Ｔｅｆｆが経過すると（Ｓ３６１ａのＹＥＳ）、処理制御部３２０は、図２８のＳ３２８ａの処理により引継ぎ影響有無信号Ｓｈｅを受信しているか否かを判定する（ステップＳ３６２ａ）。引継ぎ影響有無信号Ｓｈｅが受信されている場合（Ｓ３６２ａのＹＥＳ）、処理制御部３２０は、処理制御部３２０の設定値に対応したリセット範囲にリセットを発行する（ステップＳ３６４ａ）。これにより、故障した処理部１１０の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、故障した処理部１１０が行っていた処理を正常な処理部１１０が引き継いだことによる誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部１２０内の設定値によって、適宜変更され得る。一方、引継ぎ影響有無信号Ｓｈｅが受信されていない場合（Ｓ３６２ａのＮＯ）、処理制御部３２０は、上述した方法で、故障した処理部１１０が行っていた処理が引き継ぎ処理の対象であるか否かを判定する（ステップＳ３６６ａ）。故障した処理部１１０が行っていた処理が引き継ぎ処理の対象であると判定された場合（Ｓ３６６ａのＹＥＳ）、処理制御部３２０は、引継ぎ処理対象の処理部１１０が故障しているか否かを判定する（ステップＳ３６８ａ）。具体的には、Ｓ４５ａと同様に、処理制御部３２０は、処理制御部３２０内の引継ぎ処理対象の設定から引継ぎ処理対象の処理部１１０を判定する。そして、処理制御部３２０は、引継ぎ処理対象の処理部１１０からエラー信号Ｓｅｒを受信していたか否かを判断し、エラー信号Ｓｅｒを受信していた場合に、引継ぎ処理対象の処理部１１０が故障していると判定する。引継ぎ処理対象の処理部１１０が故障していないと判定された場合（Ｓ３６８ａのＮＯ）、処理制御部３２０は、引継ぎ処理対象の処理部１１０に対して、処理部停止完了信号Ｓｓｔ及び停止完了処理部通知信号Ｓｎｓを発行する（ステップＳ３７０ａ）。これにより、引継ぎ処理対象の処理部１１０は、故障した処理部１１０が行っていた処理の引継ぎ処理を行うことができる。一方、引継ぎ処理対象の処理部１１０が故障していると判定された場合（Ｓ３６８ａのＹＥＳ）、処理制御部３２０は、処理制御部３２０の設定値に対応したリセット範囲にリセットを発行する（ステップＳ３６４ａ）。これにより、引継ぎ処理対象の処理部１１０が故障した場合であっても、システム全体として誤動作を防止することが可能となる。また、引継ぎ処理対象の処理部１１０が故障したか否かを判定することにより、故障した処理部１１０が行っていた処理を、エラーなく、システム全体として引き継ぐことが可能となる。
【０１５０】
また、処理制御部３２０は、故障した処理部１１０が再実行処理対象か否かを判断する（ステップＳ３７２ａ）。故障した処理部１１０が再実行処理対象でない場合（Ｓ３７２ａのＮＯ）、処理は終了する。一方、故障した処理部１１０が再実行処理対象である場合（Ｓ３７２ａのＹＥＳ）、処理制御部３２０は、図１６、図１８及び図１９に示したような、再実行処理を実行する（ステップＳ３７４ａ）。これにより、故障した処理部１１０が再実行処理対象である場合に、故障した処理部１１０が再実行可能であれば故障した処理部１１０に再実行処理を行わせることができる。
【０１５１】
＜実施の形態３の変形例２＞
上述した実施の形態３の変形例１では、パケット情報（バス情報及びエラー情報）が更新されるごとに、デコード部３３０が図２７及び図２８に示す処理を行う。しかしながら、デコード部３３０がパケット情報判定部３１２を１つのみ有する場合、この処理時間がパケット情報の更新間隔を超えると、デコード部３３０は、パケット情報が更新されても処理を行えない可能性がある。このようなことを抑制するために、デコード部３３０は、複数のパケット情報判定部３１２を有してもよい。
【０１５２】
図３０は、実施の形態３の変形例２にかかるデコード部３３０の構成を示す図である。実施の形態３の変形例２にかかるデコード部３３０は、複数のパケット情報判定部３１２−１〜３１２−ｊと、処理部専用・共有アドレス格納部３１４と、パケット情報切替部３３６とを有する。なお、１つの処理部専用・共有アドレス格納部３１４を複数のパケット情報判定部３１２−１〜３１２−ｊが共有するようにしてもよいし、複数のパケット情報判定部３１２−１〜３１２−ｊそれぞれについて処理部専用・共有アドレス格納部３１４が別個に設けられてもよい。
【０１５３】
ここで、ｊは、パケット情報判定部３１２の数を示す、２以上の整数である。パケット情報切替部３３６は、パケット情報が更新されるごとに、更新されたパケット情報を処理するパケット情報判定部３１２−１〜３１２−ｊを切り替える。パケット情報切替部３３６は、各処理部１１０のバス情報を取得する。また、パケット情報切替部３３６には、処理部１１０からエラー信号Ｓｅｒ（エラー情報）が出力される。
【０１５４】
図３１は、実施の形態３の変形例２にかかるパケット情報切替部３３６の切り替え処理を示すフローチャートである。まず、パケット情報切替部３３６は、変数ｉを初期化する（ステップＳ３８０）。ここで、変数ｉは、パケット情報を処理させるパケット情報判定部３１２−１〜３１２−ｊのいずれかを示す整数である。つまり、変数ｉは、パケット情報切替部３３６がどのパケット情報判定部３１２にパケット情報を出力するかを示す。そして、パケット情報判定部３１２−ｉがパケット情報を処理する。
【０１５５】
パケット情報切替部３３６は、パケット情報が更新されたか否かを判定する（ステップＳ３８２）。パケット情報が更新された場合（Ｓ３８２のＹＥＳ）、パケット情報切替部３３６は、パケット情報判定部３１２−ｉ（パケット情報判定部＃ｉ）に更新されたパケット情報を出力して（ステップＳ３８４）、変数ｉをインクリメントする（ステップＳ３８６）。そして、ｉがｊを超えた場合に（ステップＳ３８８のＹＥＳ）、パケット情報切替部３３６は、変数ｉを１に設定する（ステップＳ３９０）。以後、Ｓ３８２〜Ｓ３９０の処理が繰り返される。このように、パケット情報判定部３１２が複数設けられ、パケット情報切替部３３６がパケット情報を処理するパケット情報判定部３１２を切り替えることで、１つのパケット情報判定部３１２の処理時間がパケット情報の更新間隔を超える場合であっても、逐次更新されたパケット情報の処理を行うことが可能である。
【０１５６】
上述したように、実施の形態３にかかる半導体装置３００では、デコード部が継続動作判定を行う。これにより、正常な処理部１１０が継続動作判定を行うことが不要となる。したがって、実施の形態３では、他の実施の形態における正常な処理部１１０の継続動作判定処理を削減できる。
【０１５７】
なお、上述した実施の形態３においては、処理部１１０それぞれについてデコード部が設けられているが、このような構成に限られない。例えば、１つのデコード部が、複数の処理部１１０について上述した処理を行ってもよい。つまり、デコード部の数は、処理部１１０の数と一致している必要はない。しかしながら、処理部１１０それぞれについてデコード部が設けられることによって、デコード部の処理及び半導体装置３００の回路構成が簡易化される。
【０１５８】
（変形例）
なお、本実施の形態は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述した複数の実施の形態のそれぞれは、互いに適用可能である。また、上述した実施の形態にかかるフローチャートにおいて、各処理の順序は、適宜、変更可能である。例えば、図８のＳ６２の処理及びＳ６４の処理の順序は、逆であってもよい。同様に、図９のＳ７２の処理及びＳ７４の処理の順序は、逆であってもよい。他の同様の処理についても同様である。
【０１５９】
また、図５は、各処理部１１０が、１つの専用メモリ領域及び１つの共有メモリ領域を有する例を示しているが、このような構成に限られない。各処理部１１０が２つ以上の専用メモリ領域及び共有メモリ領域を有してもよい。この場合は、図５に示すアドレス情報において、それぞれの領域を追加すればよい。また、各メモリ領域は、故障した処理部１１０のバスアクセスによって影響がないことがあり得る。その場合は、図５に示すアドレス情報においてそのメモリ領域は省略されてもよい。なお、影響がない場合とは、例えば、そのメモリ領域が、故障した処理部１１０によって異常なデータで上書きされることがない場合、又は、ＦＩＦＯのような機構又はリードクリア機能等を持たないフラッシュメモリの領域である場合等である。また、図５のアドレス情報には、各領域の開始アドレス及び終了アドレスが含まれるとしたが、各領域が判別され得る構成であればよい。
【０１６０】
また、上述した実施の形態は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）に対応したバスマスタに対しても適用可能である。バスマスタが追加される場合は、バスマスタが接続されるバスにデータ書込部１１２及びトレースＲＡＭ１１４を追加すればよい。
【０１６１】
図３２は、本実施の形態の変形例にかかる、バスマスタ４１０を有する半導体装置４００を示す図である。図３２は、図１７に示した実施の形態２にかかる半導体装置２００の変形例である半導体装置４００を示しているが、他の実施の形態にかかる半導体装置にも、バスマスタを追加することは可能である。
【０１６２】
バスマスタ４１０は、システムバス１０８に接続されている。バスマスタ４１０は、処理部１１０の機能と同様又は少なくともＤＭＡに対応した転送動作を行うための機能を有する。バスマスタ４１０は、少なくとも処理制御部２２０からリセット信号Ｓｒｓを受信し、処理制御部２２０及びデータ書込部１１２に対してバスマスタ４１０自身のエラー信号Ｓｅｒを出力するためのインタフェースを有する。そして、バスマスタ４１０の機能に応じて処理部１１０と同様の入出力インタフェースが追加され得る。バスマスタ４１０は、ＲＡＭ１０２、フラッシュメモリ１０４及び周辺機能１０６それぞれの間のデータの転送を制御する。つまり、ＲＡＭ１０２、フラッシュメモリ１０４及び周辺機能１０６は、バスマスタ４１０に対するスレーブである。例えば、バスマスタ４１０は、周辺機能１０６が有するレジスタのデータをＲＡＭ１０２に転送するように制御を行う。上述した実施の形態では、処理部１１０は、故障した処理部１１０のトレースＲＡＭ１１４に対して継続動作判定を実施している。一方、図３２に示した変形例は、処理部１１０又はバスマスタ４１０が、自身がアクセスする領域があるスレーブのトレースＲＡＭ１１４に対して継続動作判定を実施する点で、上述した実施の形態とは異なる。
【０１６３】
また、図３２に示した例は、各データ書込部１１２には全ての処理部１１０及びバスマスタ４１０からエラー信号Ｓｅｒが入力される点で、上述した実施の形態と異なる。処理部１１０及びバスマスタ４１０からのエラー信号Ｓｅｒをデータ書込部１１２に入力することで、データ書込部１１２は、処理部１１０又はバスマスタ４１０のエラー発生後、処理部１１０又はバスマスタ４１０のエラー情報を含むパケット情報Ｉｐｋを生成する。図３２に示した変形例では、データ書込部１１２はエラー情報を含むパケット情報ＩｐｋのみをトレースＲＡＭ１１４に書き込むことが望ましい。データ書込部１１２−１は、ＲＡＭ１０２に接続されている。また、データ書込部１１２−２は、周辺機能１０６に接続されている。つまり、図３２の例においては、データ書込部１１２は、スレーブ側に設けられている。ここで、フラッシュメモリ１０４は、故障した処理部１１０によって異常なデータで上書きされることがなく、ＦＩＦＯのような機構又はリードクリア機能等を持たない。したがって、フラッシュメモリ１０４は、故障した処理部１１０による影響はなく、フラッシュメモリ１０４に関するパケット情報については継続処理等を行う必要はないので、フラッシュメモリ１０４にデータ書込部１１２を設ける必要はない。
【０１６４】
なお、バスマスタ４１０においても情報の書き込み処理及び読み込み処理が行われるが、スレーブ側にデータ書込部１１２が設けられることでバスマスタ４１０における書き込み処理及び読み込み処理をトレースすることは可能である。したがって、バスマスタ４１０にデータ書込部１１２を設ける必要はない。このように構成することで、バスマスタ４１０の数が増加しても、データ書込部１１２及びトレースＲＡＭ１１４の数の増加を抑制できるので、半導体装置４００の回路規模の増大を抑制することが可能となる。
【０１６５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１６６】
１  半導体装置
１０−１  第一処理部
１０−２  第二処理部
１２  書込部
１４  記憶部
２０  処理制御部
３０  デコード部
１００  半導体装置
１０２  ＲＡＭ
１０４  フラッシュメモリ
１０６  周辺機能
１０８  システムバス
１１０  処理部
１１２  データ書込部
１１４  トレースＲＡＭ
１２０  処理制御部
２００  半導体装置
２２０  処理制御部
３００  半導体装置
３１０  デコード部
３１２  パケット情報判定部
３１４  処理部専用・共有アドレス格納部
３２０  処理制御部
３３０  デコード部
３３６  パケット情報切替部
【図１】
2018025983.tif 000003
【図２】
2018025983.tif 000004
【図３】
2018025983.tif 000005
【図４】
2018025983.tif 000006
【図５】
2018025983.tif 000007
【図６】
2018025983.tif 000008
【図７】
2018025983.tif 000009
【図８】
2018025983.tif 000010
【図９】
2018025983.tif 000011
【図１０】
2018025983.tif 000012
【図１１】
2018025983.tif 000013
【図１２】
2018025983.tif 000014
【図１３】
2018025983.tif 000015
【図１４】
2018025983.tif 000016
【図１５】
2018025983.tif 000017
【図１６】
2018025983.tif 000018
【図１７】
2018025983.tif 000019
【図１８】
2018025983.tif 000020
【図１９】
2018025983.tif 000021
【図２０】
2018025983.tif 000022
【図２１】
2018025983.tif 000023
【図２２】
2018025983.tif 000024
【図２３】
2018025983.tif 000025
【図２４】
2018025983.tif 000026
【図２５】
2018025983.tif 000027
【図２６】
2018025983.tif 000028
【図２７】
2018025983.tif 000029
【図２８】
2018025983.tif 000030
【図２９】
2018025983.tif 000031
【図３０】
2018025983.tif 000032
【図３１】
2018025983.tif 000033
【図３２】
2018025983.tif 000034