JP2018025983A - 半導体装置及びその制御方法 - Google Patents

半導体装置及びその制御方法 Download PDF

Info

Publication number
JP2018025983A
JP2018025983A JP2016157656A JP2016157656A JP2018025983A JP 2018025983 A JP2018025983 A JP 2018025983A JP 2016157656 A JP2016157656 A JP 2016157656A JP 2016157656 A JP2016157656 A JP 2016157656A JP 2018025983 A JP2018025983 A JP 2018025983A
Authority
JP
Japan
Prior art keywords
processing
processing unit
unit
information
semiconductor device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016157656A
Other languages
English (en)
Inventor
駿佑 仲野
Shunsuke Nakano
駿佑 仲野
良孝 多木
Yoshitaka Taki
良孝 多木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2016157656A priority Critical patent/JP2018025983A/ja
Priority to US15/612,277 priority patent/US10579487B2/en
Priority to CN201710610987.2A priority patent/CN107729189A/zh
Publication of JP2018025983A publication Critical patent/JP2018025983A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Bus Control (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】複数の処理部のうちの1つにエラーが発生した場合であっても、システム全体として継続して処理を実行することができる。
【解決手段】半導体装置1は、第一処理部10−1及び第二処理部10−2と、書込部12と、記憶部14と、処理制御部20とを有する。書込部12は、第一処理部10−1及び第二処理部10−2それぞれの処理に関する第1の情報を記憶部14に書き込む。処理制御部20は、第一処理部10−1及び第二処理部10−2の動作を制御する。処理制御部20は、第一処理部10−1にエラーが発生した場合に第一処理部10−1を停止するように制御を行う。記憶部14に記憶された第1の情報を用いて、エラーが発生していない第二処理部10−2が第1の処理を継続することが可能であると判定された場合、第二処理部10−2は、第1の処理を継続する。
【選択図】図1

Description

本発明は半導体装置及びその制御方法に関し、例えば複数の処理部を有する半導体装置及びその制御方法に関する。
1つのマイクロコンピュータ等の半導体装置に、複数のプロセッサ等の処理部が設けられることが多くなっている。そして、このような複数の処理部を持つ機構で、ある処理部にエラーが発生した(ある処理部が故障した)とき、エラーが発生した処理部(故障した処理部)で実行していたタスクを正常な処理部が引き継ぐ機構が提案されている。
例えば、特許文献1は、複数の処理部のうち1つが動作不能になったとしても、その処理部の処理が他の処理部により実行されることができる処理装置を開示する。特許文献1にかかる処理装置は、複数の処理部の異常を検出して異常検出信号を生成する複数の異常検出回路と、正常状態にある少なくとも1つの正常処理部を、異常救済処理を実行するように制御する異常監視制御部とを具備する。さらに、特許文献1にかかる処理装置は、正常処理部から、リセット命令が設定され、異常処理部をリセットするために設定されたリセット命令を異常処理部に出力するレジスタを具備する。
特開2007−11426号公報
特許文献1に開示された技術では、異常処理部が異常となってから異常処理部がリセットされるまでの間に異常処理部が読み込み又は書き込みを行った場合に、正常処理部によって参照されるべきデータが異常なデータで上書きされ、又はそのデータが消失してしまうといった問題が生じるおそれがある。つまり、異常処理部の処理によって、正常処理部の処理に影響があるおそれがある。このような場合に、特許文献1に開示された技術では、上記問題を検知することができない。このことは、異常処理部が異常となってから、正常処理部が、自身が行っていた処理を継続する場合においても同様である。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、半導体装置は、複数の処理部と、前記処理部の動作を制御する処理制御部と、記憶部と、前記複数の処理部それぞれの処理に関する第1の情報を、前記記憶部に書き込む書込部とを有し、前記複数の処理部のうちの第1の処理部にエラーが発生した場合に、前記処理制御部は、前記第1の処理部を停止するように制御を行い、前記第1の処理部にエラーが発生した場合に、前記記憶部に記憶された情報に基づいて、前記複数の処理部のうちの第2の処理部が継続して第1の処理を実行することが可能であると判定されたときに、前記第2の処理部は、前記第1の処理を継続して実行する半導体装置である。
また、一実施の形態によれば、複数の処理部と、前記処理部の動作を制御する処理制御部と、前記複数の処理部のそれぞれに接続されたバスから、前記複数の処理部のうちの第1の処理部でなされた処理に関する第2の情報を取得して、前記第2の情報について処理を行うデコード部とを有し、前記第1の処理部にエラーが発生した場合に、前記処理制御部は、前記第1の処理部を停止するように制御を行い、前記デコード部は、前記第1の処理部にエラーが発生した場合に、前記第1の処理部に接続されたバスから取得された前記第2の情報に基づいて、前記複数の処理部のうちの第2の処理部が継続して第1の処理を実行することが可能であるか否かを判定し、前記第2の処理部が継続して前記第1の処理を実行することが可能であると判定された場合に、前記第2の処理部は、前記第1の処理を継続して実行する半導体装置である。
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本態様としては有効である。
前記一実施の形態によれば、複数の処理部のうちの1つにエラーが発生した場合であっても、システム全体として継続して処理を実行することができる。
本実施の形態にかかる半導体装置の概要を示す図である。 本実施の形態にかかる半導体装置の制御方法の概要を示す図である。 実施の形態1にかかる半導体装置の構成を示す図である。 実施の形態1にかかるトレースRAMに格納されるパケット情報を例示する図である。 実施の形態1にかかる各処理部の専用領域及び共有領域のアドレス情報を例示する図である。 実施の形態1にかかるデータ書込部のパケット情報に関する処理フローを示す図である。 実施の形態1にかかる処理制御部によって行われる、処理部にエラーが発生した場合の処理を示すフローチャートである。 実施の形態1にかかる、正常な処理部によって行われる処理を示す図である。 実施の形態1にかかる、正常な処理部によって行われる処理を示す図である。 実施の形態1にかかる処理制御部によって実行される、継続動作不可信号の受信後の動作を示すフローチャートである。 実施の形態1にかかる処理制御部によって実行される、引継ぎ影響有無信号の受信後の動作を示すフローチャートである。 実施の形態1にかかる動作例を示すタイミングチャートである。 図12の動作例に処理部によって発行されるステータス信号が追加されたタイミングチャートである。 実施の形態1の変形例1にかかる、図7に示した処理に引継ぎ処理対象の処理部の故障判断が追加された処理のフローチャートである。 実施の形態1の変形例2にかかる半導体装置の構成を示す図である。 実施の形態1の変形例2にかかる再実行処理を示すフローチャートである。 実施の形態2にかかる半導体装置の構成を示す図である。 実施の形態2にかかる処理制御部によって実行される再実行制御処理を示すフローチャートである。 実施の形態2にかかる処理制御部によって実行される再実行制御処理の変形例を示すフローチャートである。 実施の形態3にかかる半導体装置の構成を示す図である。 実施の形態3にかかるデコード部の詳細を示す図である。 実施の形態3にかかるデコード部の処理を示すフローチャートである。 実施の形態3にかかるデコード部の処理を示すフローチャートである。 実施の形態3にかかる処理制御部によって実行される、処理部影響有無信号が通知された場合の処理を示すフローチャートである。 実施の形態3にかかる処理制御部によって実行される、影響判定完了信号が通知された場合の処理を示すフローチャートである。 実施の形態3の変形例1にかかる半導体装置の構成を示す図である。 実施の形態3の変形例1にかかるデコード部の処理を示すフローチャートである。 実施の形態3の変形例1にかかるデコード部の処理を示すフローチャートである。 実施の形態3の変形例1にかかる、書き込み/読み込みサイクル完了信号を受信した処理制御部の処理を示すフローチャートである。 実施の形態3の変形例2にかかるデコード部の構成を示す図である。 実施の形態3の変形例2にかかるパケット情報切替部の切り替え処理を示すフローチャートである。 本実施の形態の変形例にかかる、バスマスタを有する半導体装置を示す図である。
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
(実施の形態の概要)
本実施の形態の説明に先立って、本実施の形態の概要について説明する。
図1は、本実施の形態にかかる半導体装置1の概要を示す図である。半導体装置1は、例えばマイクロコントローラである。半導体装置1は、複数の処理部である第一処理部10−1及び第二処理部10−2と、書込部12と、記憶部14と、処理制御部20とを有する。なお、図1には、書込部12(書込部12−1,12−2)及び記憶部14(記憶部14−1,14−2)がそれぞれ複数示されているが、それぞれ単一であってもよい。
第一処理部10−1及び第二処理部10−2は、例えばCPU等のプロセッサである。第一処理部10−1及び第二処理部10−2は、書き込み又は読み込み等の予め定められた情報処理を行う。また、処理部の数は、2つに限られず、3つ以上であってもよい。
記憶部14は、例えばRAM等のメモリである。書込部12は、第一処理部10−1及び第二処理部10−2それぞれの処理に関する情報(第1の情報)を、記憶部14に書き込む。処理制御部20は、第一処理部10−1及び第二処理部10−2の動作を制御する。なお、半導体装置1は、後述する判定処理を行うデコード部30を有してもよい。以下、半導体装置1の動作について説明する。
図2は、本実施の形態にかかる半導体装置の制御方法の概要を示す図である。図2は、第一処理部10−1にエラーが発生した場合について示しているが、第二処理部10−2にエラーが発生した場合も同様である。
処理制御部20は、第一処理部10−1にエラーが発生したか否かを判定し(ステップS1)、第一処理部10−1にエラーが発生した場合(S1のYES)、処理制御部20は、第一処理部10−1を停止するように制御を行う(ステップS2)。第二処理部10−2(又はデコード部30)は、記憶部14に記憶された第1の情報を用いて、エラーが発生していない第二処理部10−2が第1の処理を継続することが可能であるか否かを判定する(ステップS3)。
第二処理部10−2が第1の処理を継続することが可能であると判定された場合(S3のYES)、第二処理部10−2は、第1の処理を継続する(ステップS4)。一方、第二処理部10−2が第1の処理を継続することが可能でないと判定された場合(S3のNO)、処理制御部20は、半導体装置1における予め定められた範囲の動作をリセットするための処理を行う(ステップS5)。例えば、処理制御部20は、第二処理部10−2の動作をリセットするための処理を行う。
ここで、「第1の処理」は、エラーが発生していない第二処理部10−2が行っていた処理であってもよいし、エラーが発生した第一処理部10−1が行っていた処理であってもよい。つまり、「第1の処理」が、第二処理部10−2が行っていた処理である場合は、第二処理部10−2は、自身が行っていた処理を継続する。一方、「第1の処理」が、第一処理部10−1が行っていた処理である場合、第二処理部10−2は、エラーが発生した第一処理部10−1から、第1の処理を引き継ぐ。
上記のように、本実施の形態にかかる半導体装置1は、記憶部14に記憶された情報を用いて、エラーが発生していない正常な処理部(第二処理部10−2)が第1の処理を継続することが可能であるか否かを判定し、可能である場合に、その正常な処理部が第1の処理を継続するように構成されている。これにより、複数の処理部のうちの1つにエラーが発生した場合であっても、システム全体として継続して処理を実行することが可能となる。また、正常な処理部が第1の処理を継続することが可能でない場合は、半導体装置1における予め定められた範囲の動作(例えば第二処理部10−2の動作)がリセットされるので、誤動作が発生することが抑制される。
(実施の形態1)
次に、実施の形態1について説明する。なお、以下に説明する実施の形態において、「処理部が故障する」とは、その処理部の回路が物理的に故障したためにエラーが発生した場合だけでなく、ノイズ等の一過性の要因によってエラーが発生した場合も含む。つまり、以下に説明する実施の形態において、「処理部が故障する」とは、処理部にエラーが発生することを意味する。同様に、「故障した処理部」とは、エラーが発生した処理部を意味する。
図3は、実施の形態1にかかる半導体装置100の構成を示す図である。半導体装置100は、例えばマイクロコントローラである(他の実施の形態においても同様)。半導体装置100は、RAM102と、フラッシュメモリ104と、周辺機能106と、システムバス108とを有する。また、半導体装置100は、処理部110−1(処理部#1)及び処理部110−2(処理部#2)と、データ書込部112−1(データ書込部#1)及びデータ書込部112−2(データ書込部#2)と、トレースRAM114−1(トレースRAM#1)及びトレースRAM114−2(トレースRAM#2)とを有する。さらに、半導体装置100は、処理制御部120を有する。なお、以下、処理部等の複数ある構成要素を区別しないで説明する場合に、処理部110などと総称する。
処理部110−1及び処理部110−2は、システムバス108を介して、RAM102、フラッシュメモリ104、周辺機能106、トレースRAM114−1及びトレースRAM114−2と接続されている。処理部110−1からの信号は、データ書込部112−1及び処理制御部120に入力されている。処理部110−2からの信号は、データ書込部112−2及び処理制御部120に入力されている。処理制御部120からの信号は、処理部110−1、処理部110−2、データ書込部112−1、データ書込部112−2、及び周辺機能106に入力されている。データ書込部112−1及びデータ書込部112−2からの信号は、それぞれ、トレースRAM114−1及びトレースRAM114−2に入力されている。
なお、処理部110−1は、図1に記載の第一処理部10−1に対応する場合もあるし、図1に記載の第二処理部10−2に対応することもある。同様に、処理部110−2は、第二処理部10−2に対応する場合もあるし、第一処理部10−1に対応する場合もある。つまり、処理部110−1及び処理部110−2のうち、エラーが発生した処理部110が、第一処理部10−1に対応し、エラーが発生していない処理部110が、第二処理部10−2に対応する。
RAM102は、処理部110−1及び処理部110−2に共有されており、処理部110−1及び処理部110−2それぞれの専用のメモリ領域と、各処理部110に共有されるメモリ領域とを有している。処理部110−1及び処理部110−2それぞれの専用のメモリ領域は、処理部110−1及び処理部110−2それぞれの専用のプログラムコード、プログラムで使用される変数及び定数値等を格納している。各処理部110に共有されるメモリ領域は、処理部110−1及び処理部110−2それぞれの処理ステータス伝達等のコミュニケーション等に使用される。なお、図3において、RAM102は、処理部110−1及び処理部110−2で共有されているが、RAMは、処理部毎に設けられてもよい。
フラッシュメモリ104は、処理部110−1及び処理部110−2に共有されており、処理部110−1及び処理部110−2それぞれの専用のメモリ領域と、各処理部110に共有されるメモリ領域とを有している。処理部110−1及び処理部110−2それぞれの専用のメモリ領域は、処理部110−1及び処理部110−2それぞれの専用のプログラムコード、プログラムで使用される定数値等、及び、各処理部110の専用メモリ領域及び共有メモリ領域のアドレス情報を格納している。各処理部110に共有されるメモリ領域は、処理部110−1及び処理部110−2に共通のプログラムコード及び定数値等を格納している。なお、図3において、フラッシュメモリ104は、処理部110−1及び処理部110−2で共有されているが、フラッシュメモリは、処理部毎に設けられてもよい。
周辺機能106は、マイクロコントローラを使用したアプリケーションを実現するためのタイマ及びAD変換機等から構成されている。周辺機能106は、周辺機能106の動作設定及びフラグを示すためのレジスタ等、及び、処理部110に対して割り込み通知を行う機能等を有する。周辺機能106のレジスタに対して処理部110−1及び処理部110−2から書き込み及び読み込み等の処理を行うことで、種々のアプリケーションが実現される。また、周辺機能106は、処理制御部120からリセット信号が通知される。周辺機能106には、処理部110−1及び処理部110−2それぞれの専用の周辺機能と、複数の処理部110に共有される周辺機能とがある。
処理部110−1及び処理部110−2は、例えばCPU等のプロセッサである。処理部110−1及び処理部110−2は、ALU(Arithmetic Logic Unit;論理演算ユニット)、制御装置、レジスタ、メモリ、及び、周辺機能106が有するレジスタに読み込み及び書き込みを行う機能等から構成される。各処理部110は、フラッシュメモリ104及びRAM102に格納されたプログラムコード等を用いてアプリケーション用の処理、継続処理又は引継ぎ処理等を実行する。
各処理部110は、各処理部110自身のエラーを検知する機構を有する。一例として、各処理部110は、マスターとなる処理部と、マスターの処理を監視する処理部とを有し、ロックステップ方式により各処理部110自身のエラーを検知する。処理部110−1で検知された処理部110−1のエラーは、データ書込部112−1及び処理制御部120に、エラー信号Serによって通知される。処理部110−2で検知された処理部110−2のエラーは、データ書込部112−2及び処理制御部120に、エラー信号Serによって通知される。各処理部110には、処理制御部120から、処理部停止完了信号Sst、停止完了処理部通知信号Sns及びリセット信号Srsが通知される。各処理部110は、処理制御部120に対し、継続動作不可信号Suc及び引継ぎ影響有無信号Sheを発行する。
トレースRAM114−1及びトレースRAM114−2(記憶部)は、それぞれ、データ書込部112−1及びデータ書込部112−2によって書き込まれるバス情報、処理部110のエラー情報、処理部停止完了情報等のトレース情報を格納するメモリ領域である。トレースRAM114は、RAMである必要はなく、FF(flip−flop;フリップフロップ)又はフラッシュメモリ等の記憶デバイスであればよい。なお、各処理部110について、上述した書き込まれる情報を記憶する記憶デバイス(トレースRAM114)が1つ設けられてもよいし、1つの記憶デバイスを複数の処理部110に共有させてもよい。
また、実施の形態1では、トレースRAM114とシステムバス108とが接続されているとしたが、データ書込部112が接続されないバスを用いてトレースRAM114と各処理部110とを接続してもよい。このような構成とすることで、他の処理部110によるシステムバス108を介したアクセスとの競合を回避することができる。また、処理部110が処理部110自身のトレースRAM114を読み込む際に、処理部110は、自身のトレースRAM114にトレース情報を記憶させずにアクセスすることができる。
データ書込部112−1及びデータ書込部112−2は、それぞれ、処理部110−1及び処理部110−2の書き込み/読み込み情報、エラー情報及び動作状態を、トレースRAM114−1及びトレースRAM114−2に、パケット情報として書き込む機構を有する。さらに、データ書込部112は、データ書込部112がトレースRAM114にパケット情報を書き込むアドレスを示す書き込みポインタ情報を有する。データ書込部112は、書き込み/読み込み情報等のバス情報を、各処理部110とシステムバス108との間のバス信号から取得する。各処理部110のエラー信号Serは、各処理部110からデータ書込部112に通知される。処理部110に関する処理部停止完了信号Sstは、処理制御部120からデータ書込部112に通知される。
なお、実施の形態1では、データ書込部112が処理部110毎に設けられているが、1つのデータ書込部112を、各処理部110で共有させてもよい。また、トレースRAM114に書き込む情報の構成等の設定は、データ書込部112を予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値で格納され得る。なお、構成等の設定用のレジスタを追加したデータ書込部112を処理部110とバスを介して接続することで、処理部110から設定を変更することが可能なシステムを構成してもよい。
処理制御部120は、処理部110を停止させるためのリセット信号Srsを発行する機能、時間をカウントするためのタイマ機能、システムの所定の範囲のみリセットする機構、各処理部110の正常/故障ステータスを保持する記憶領域、及び、引継ぎ対象処理部設定の記憶領域を有する。引継ぎ対象処理部設定とは、どの処理部110が故障した際にどの処理部110に引き継がせるかを示す。また、タイマ機能は、指定時間をカウントできるものとする。なお、指定時間の設定値及び引継ぎ対象処理部設定を記憶する領域は、処理制御部120を予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値で格納され得る。
処理制御部120には、処理部110から、エラー信号Ser、継続動作不可信号Suc、及び引継ぎ影響有無信号Sheが入力される。また、処理制御部120は、処理部110に対して、処理部停止完了信号Sst、停止完了処理部通知信号Sns、及びリセット信号Srsを出力する。また、処理制御部120は、データ書込部112に対して、処理部停止完了信号Sstを出力する。また、処理制御部120は、周辺機能106に対して、リセット信号Srsを出力する。
また、処理制御部120は、処理部110を停止させるためのリセット信号Srsを出力する際に、各処理部110の専用の周辺機能106に対しても同様にリセット信号を出力する。周辺機能106に同様にリセット信号を入力するか否かの設定、及びシステムの所定の範囲のみリセットするための設定(どの範囲をリセットするか等)は、処理制御部120を予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値で格納され得る。また、設定用のレジスタを設けて処理制御部120をシステムバス108又は専用のバスで処理部110と接続することで、上記設定を処理部110から書き換え可能なシステムを構成してもよい。また、正常/故障ステータスを保持する記憶領域は、FFで構成され得る。なお、実施の形態1においては、リセット信号Srsを用いて処理部110を停止させるとしたが、処理部110を停止させるために供給クロックを停止する信号等を用いてもよい。
図4は、実施の形態1にかかるトレースRAM114に格納されるパケット情報Ipkを例示する図である。パケット情報Ipkは、処理部110ごとに設けられ得る。パケット情報Ipkは、アドレスと、そのアドレスに関するデータと、r/w情報(リード/ライト情報)Irwと、エラーフラグFeと、処理部停止フラグFsを含み得る。
「アドレス」は、書き込み先アドレス又は読み込み先アドレスである。「データ」は、書き込み先アドレスに書き込まれる書き込みデータ、又は読み込み先アドレスから読み込まれる読み込みデータ、又は不定値である。r/w情報Irwは、処理部110が読み込み処理を行った場合に「0」に設定され、処理部110が書き込み処理を行った場合に「1」に設定される。エラーフラグFeは、処理部110にエラーが発生していない場合に「0」に設定され、エラーが発生した場合に「1」に設定される。処理部停止フラグFsは、処理部110が停止していない場合に「0」に設定され、処理部110が停止した場合に「1」に設定される。
ここで、エラーフラグFe及び処理部停止フラグFsがともに「1」に設定されているパケット情報Ipkを、「パケット情報ES」とする。また、エラーフラグFeが「1」に設定され処理部停止フラグFsが「0」に設定されているパケット情報Ipkを、「パケット情報E」とする。
なお、図4に示したパケット情報Ipk内のデータの順序及び値等は、単なる例示であって、システム構成に応じて最適な構成に変更され得る。また、1つのトレースRAM114を複数の処理部110に共有させる場合は、各処理部110にユニークな識別情報がパケット情報に含まれていればよい。
図5は、実施の形態1にかかる各処理部110の専用領域及び共有領域のアドレス情報を例示する図である。実施の形態1において、図5に例示されるアドレス情報は、フラッシュメモリ104等に格納されている。図5に示すアドレス情報は、処理部110ごとに、専用領域の開始アドレス及び終了アドレスと、共有領域の開始アドレス及び終了アドレスとを含む。なお、図5には、処理部110−1(処理部#1)及び処理部110−2(処理部#2)についてのアドレス情報が示されているが、アドレス情報の数は、処理部110の数が3個以上である場合は、その数に応じて、適宜増加し得る。
図6は、実施の形態1にかかるデータ書込部112のパケット情報に関する処理フローを示す図である。図6は、データ書込部112の動作例として、データ書込部112がトレースRAM114に書き込むアドレスを示す書き込みポインタをnとし、図4に例示したパケット情報を使用した場合の処理を示す。
まず、データ書込部112は、初期化シーケンスを実行する(ステップS10)。具体的には、データ書込部112は、書き込みポインタnを0に設定する。そして、以降の処理(S12〜S36)において、書き込みポインタnについて各パケット情報を書き込む(パケット情報を更新する)ための処理が行われる。なお、S10の処理は、以降の処理(S12〜S36)とは独立して行われてもよい。
データ書込部112は、パケット情報IpkのエラーフラグFe、処理部停止フラグFs及びr/w情報Irwを、それぞれ0に設定する(ステップS12)。次に、データ書込部112は、処理部110とシステムバス108との間を伝送される信号が読み込み命令を示すか否かを判断する(ステップS14)。この信号が読み込み命令を示していない場合(S14のNO)、データ書込部112は、処理部110とシステムバス108との間を伝送される信号が書き込み命令を示すか否かを判断する(ステップS16)。この信号が書き込み命令を示していない場合(S16のNO)、データ書込部112は、処理部停止完了信号Sstが発生したか否かを判断する(ステップS18)。処理部停止完了信号Sstが発生していない場合(S18のNO)、パケット情報(バス情報・エラー情報)が更新されていないとして、S12の処理に戻る。
処理部110とシステムバス108との間を伝送される信号が書き込み命令を示す場合(S16のYES)、データ書込部112は、パケット情報Ipkのr/w情報Irwを「1」に設定し(ステップS20)、処理はS22の処理に進む。一方、処理部110とシステムバス108との間を伝送される信号が読み込み命令を示す場合(S14のYES)、データ書込部112は、r/w情報Irwの設定を0としたまま、処理はS22の処理に進む。
ステップS22において、データ書込部112は、処理部110の読み込みアドレス又は書き込みアドレス、及び、このアドレスに関するデータを取得する。そして、処理はS26の処理に進む。なお、S14の処理でYESと判定された場合、上記アドレスは読み込みアドレスであり、上記データは不定値であるが、バスの読み込みサイクルの完了信号等を基に読込みデータが確定された時点でデータを取り込むことで読み込みデータであってもよい。一方、S16の処理でYESと判定された場合、上記アドレスは書き込みアドレスであり、上記データは書き込みデータである。また、処理部停止完了信号Sstが発生した場合(S18のYES)、データ書込部112は、パケット情報Ipkの処理部停止フラグFsを「1」に設定し(ステップS24)、処理はS26の処理に進む。
データ書込部112は、処理部110にエラーが発生したか否かを判断する(ステップS26)。具体的には、データ書込部112は、処理部110からエラー信号Serを受信した場合に、処理部110にエラーが発生したと判断する。処理部110にエラーが発生した場合(S26のYES)、データ書込部112は、パケット情報IpkのエラーフラグFeを「1」に設定し(ステップS28)、処理はS30の処理に進む。一方、処理部110にエラーが発生していない場合(S26のNO)、データ書込部112は、S28の処理を行わずに、処理はS30の処理に進む。このように、エラーフラグFeを設定することで、図8及び図9の判定処理において、どのパケット情報においてエラーが発生したかを、容易にかつ確実に判定することが可能となる。
ステップS30において、データ書込部112は、パケット情報Ipkを、トレースRAM114の書き込みポインタnで示される領域に書き込む(ステップS30)。このとき、パケット情報Ipkにおいて、r/w情報Irw、エラーフラグFe及び処理部停止フラグFsは、それぞれ、S20、S24及びS28の処理がなされたか否かによって定められる。なお、トレースRAM114に書き込まれるパケット情報Ipkのパケットサイズは、パケット情報Ipkのビット数によって決定される。
次に、データ書込部112は、書き込みポインタnを更新(インクリメント)する(ステップS32)。そして、データ書込部112は、nが書き込みポインタの最大値を超えたか否かを判断する(ステップS34)。nが書き込みポインタの最大値を超えた場合(S34のYES)、データ書込部112は、書き込みポインタnを初期化して(ステップS36)、処理はS12の処理に戻る。そして、nが書き込みポインタの最大値を超えていない場合(S34のNO)、データ書込部112は、書き込みポインタnを初期化せずに、処理はS12の処理に戻る。
なお、パケット情報IpkをトレースRAM114に書き込むタイミングは、パケット情報Ipkが更新されるごとであってもよいが、このような構成に限られない。データ書込部112は、故障した処理部110によって書き込み又は読み込みがなされたことが判定され得るタイミングで、パケット情報IpkをトレースRAM114に書き込むようにすればよい。
なお、パケット情報Ipkは、図4に例示した情報を全て含む必要はない。パケット情報Ipkを用いて、少なくとも、処理部110にエラーが発生した後(処理部110が故障した後)でなされた読み込み先アドレス又は書き込み先アドレスが判別できればよい。したがって、パケット情報Ipkは、書き込み/読み込みデータ、r/w情報Irw、エラーフラグFe、及び処理部停止フラグFsを含まなくてもよい。この場合、データ書込部112は、例えば処理部110からエラー信号Serが発行されてからパケット情報Ipkを書き込むようにすることで、故障した処理部110による読み込み又は書き込みが、エラーの発生後に行われたか否かが判別され得る。また、r/w情報Irwに関しては、FIFO(First In, First Out)のような機構又はリードクリア機能等を持つ機構等がなければ、故障した処理部110の読み込みによる影響を無視できる。したがって、この場合、読み込みデータをトレースRAM114に格納する必要はなく、r/w情報Irwも不要となる。
図7は、実施の形態1にかかる処理制御部120によって行われる、処理部110にエラーが発生した場合の処理を示すフローチャートである。処理制御部120は、処理部110からエラー信号Serを受信すると(ステップS40のYES)、エラー信号Serを送信した処理部110(つまり故障した処理部110)に対して、リセット信号Srsを発行する(ステップS42)。これにより、処理制御部120は、故障した処理部110を停止するように制御する。
次に、処理制御部120は、リセット信号Srsを発行してから期間Tstopが経過したか否かを判定する(ステップS44)。期間Tstopが経過すると(ステップS44のYES)、処理制御部120は、正常な処理部110(つまり故障していない処理部110)に対して、処理部停止完了信号Sst及び停止完了処理部通知信号Snsを発行する(ステップS46)。このとき、処理制御部120は、故障した処理部110に関するデータ書込部112に対しても、処理部停止完了信号Sstを送信する。
ここで、期間Tstopは、処理制御部120から故障した処理部110にリセット信号Srsが発行されてから、処理部110全体が停止するまでに要する最大時間を示す。言い換えると、処理制御部120から故障した処理部110にリセット信号Srsが発行されてから期間Tstopが経過すれば、故障した処理部110全体が停止している。処理制御部120は、故障した処理部110にリセット信号Srsを発行したときに処理制御部120内のタイマを開始して、期間Tstopを計測する。なお、Tstopを計測するために予め定められた値が処理制御部120に格納されている。処理制御部120は、その値とタイマのカウント値とが一致すると、タイマのカウントを停止してカウント値を初期化する。そして、処理制御部120は、正常な処理部110に対して、故障した処理部110に関する停止完了処理部通知信号Snsと、1パルスの処理部停止完了信号Sstを、同時に発行する。
停止完了処理部通知信号Snsは、どの処理部110の停止が完了したかを示す信号である。なお、どの処理部110の停止が完了したかを正常な処理部110が判定できれば、停止完了処理部通知信号Snsは発行されなくてもよい。例えば、停止完了処理部通知信号Snsの代わりに、処理制御部120内に判定用のレジスタを設け、処理部110をシステムバス108又は専用のバスに接続させ、処理制御部120は、正常な処理部110にそのレジスタにアクセスさせるようにしてもよい。又は、自身の処理部110を除く処理部110の数の処理部停止完了信号Sstの信号線を処理制御部120と処理部110との間に設けてもよい。
図8及び図9は、実施の形態1にかかる、正常な処理部110によって行われる処理を示す図である。図8及び図9は、正常な処理部110が故障した処理部110に関する処理部停止完了信号Sstを受信した後の継続動作判定及び引継ぎ処理判定を示している。ここで、「継続動作判定」とは、故障した処理部110がエラー信号Serを発行する前から正常な処理部110が行っていた処理を、正常な処理部110が継続することが可能か否かを判定することである。また、「引継ぎ処理判定」とは、エラー信号Serを発行する前に故障した処理部110が行っていた処理を、正常な処理部110が引き継いで行うことが可能か否かを判定することである。
正常な処理部110は、停止完了処理部通知信号Snsを用いてどの処理部110が故障したかを判定する(ステップS52)。正常な処理部110は、故障した処理部110のトレースRAM114から継続動作判定に必要なデータを取得し(S54及びS56)、そのデータを用いて、正常な処理部110の処理に影響がないか否かを判定する(S60〜S64)。そして、影響がある場合(S62のYES又はS64のYES)、正常な処理部110は、継続動作不可信号Sucを1パルスで出力する(S66)。
具体的には、正常な処理部110は、故障した処理部110に関するトレースRAM114から、パケット情報ESの格納領域位置kを取得(検索)する(ステップS54)。そして、正常な処理部110は、格納領域位置kのパケット情報Ipkを取得する(ステップS56)。なお、最初のS56の処理では、格納領域位置kのパケット情報Ipkは、パケット情報ESであるが、2回目以降のS56の処理では、格納領域位置kのパケット情報Ipkは、パケット情報ES以外のパケット情報E等である。
正常な処理部110は、格納領域位置kのパケット情報IpkのエラーフラグFeが1であるか否か、つまり格納領域位置kのパケット情報IpkにエラーフラグFeがあるか否かを判定する(ステップS60)。格納領域位置kのパケット情報IpkにエラーフラグFeがない場合(S60のNO)、正常な処理部110は、処理を終了する。
格納領域位置kのパケット情報IpkにエラーフラグFeがある場合(S60のYES)、正常な処理部110は、図5に示したアドレス情報を参照して、パケット情報Ipkのアドレスが、正常な処理部110の処理部専用領域開始アドレスと処理部専用領域終了アドレスとの間にあるか否かを判定する(ステップS62)。言い換えると、正常な処理部110は、トレースRAM114の領域に格納されたトレース情報が自身の処理部110の専用メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
トレースRAM114の領域に格納されたトレース情報が正常な処理部110の専用メモリ領域の開始・終了アドレス情報の範囲内にある場合(S62のYES)、処理はS66の処理に進む。そうでない場合(S62のNO)、正常な処理部110は、図5に示したアドレス情報を参照して、パケット情報Ipkのアドレスが、正常な処理部110の処理部共有領域開始アドレスと処理部共有領域終了アドレスとの間にあるか否かを判定する(ステップS64)。言い換えると、正常な処理部110は、トレースRAM114の領域に格納されたトレース情報が自身の処理部110の共有メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
トレースRAM114の領域に格納されたトレース情報が正常な処理部110の共有メモリ領域の開始・終了アドレス情報の範囲内にある場合(S64のYES)、処理はS66の処理に進む。そうでない場合(S64のNO)、処理はS70の処理に進む。S66において、正常な処理部110は、継続動作不可信号Sucを、処理制御部120に対して発行する。
S70において、正常な処理部110は、故障した処理部110が行っていた処理を引き継ぐか否かを判定する。この引継ぎ処理判定は、故障した処理部110が行っていた処理の量及び重要度等に応じて、適宜行われ得る。つまり、例えば、故障した処理部110が行っていた処理の量が予め定められた量よりも多い場合、又は故障した処理部110が行っていた処理の重要度が予め定められた値よりも大きい場合に、正常な処理部110は、故障した処理部110が行っていた処理を引き継ぐと判定する。
故障した処理部110が行っていた処理を引き継がないと判定された場合(S70のNO)、処理はS80の処理に進む。一方、故障した処理部110が行っていた処理を引き継ぐと判定された場合(S70のYES)、正常な処理部110は、故障した処理部110の処理に影響がないか否かを判定する(S72〜S74)。そして、影響がある場合(S72のYES又はS74のYES)、正常な処理部110は、引継ぎ影響有無信号Sheを1パルスで出力する(S76)。
具体的には、正常な処理部110は、図5に示したアドレス情報を参照して、パケット情報Ipkのアドレスが、故障した処理部110の処理部専用領域開始アドレスと処理部専用領域終了アドレスとの間にあるか否かを判定する(ステップS72)。言い換えると、正常な処理部110は、トレースRAM114の領域に格納されたトレース情報が故障した処理部110の専用メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
トレースRAM114の領域に格納されたトレース情報が故障した処理部110の専用メモリ領域の開始・終了アドレス情報の範囲内にある場合(S72のYES)、処理はS76の処理に進む。そうでない場合(S72のNO)、正常な処理部110は、図5に示したアドレス情報を参照して、パケット情報Ipkのアドレスが、故障した処理部110の処理部共有領域開始アドレスと処理部共有領域終了アドレスとの間にあるか否かを判定する(ステップS74)。言い換えると、正常な処理部110は、トレースRAM114の領域に格納されたトレース情報が故障した処理部110の共有メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
トレースRAM114の領域に格納されたトレース情報が故障した処理部110の共有メモリ領域の開始・終了アドレス情報の範囲内にある場合(S74のYES)、処理はS76の処理に進む。そうでない場合(S74のNO)、処理はS80の処理に進む。S76において、正常な処理部110は、引継ぎ影響有無信号Sheを、処理制御部120に対して発行する。なお、S72及びS74の引継ぎの影響の有無確認は、故障した処理部110の専用領域及び共有領域全てを対象とするのではなく、引継ぎ処理に対応する領域のみなされればよい。
次に、正常な処理部110は、パケット情報Ipkの格納領域位置kの値をデクリメントする(ステップS80)。そして、正常な処理部110は、kの値が−1であるか否かを判定し(ステップS82)、k=−1でない場合(S82のNO)、処理はS56の処理に戻る。一方、k=−1である場合(S82のYES)、正常な処理部110は、kの値をトレースRAM114の格納領域の最大値として(ステップS84)、処理はS56の処理に戻る。そして、格納領域位置kに格納されたパケット情報IpkにエラーフラグFeがなくなるまで、フローが繰り返される(S60)。つまり、正常な処理部110は、パケット情報ESが格納された格納領域位置kから遡って、エラーフラグFeを有するパケット情報について上記判定を行う。これにより、容易にエラーフラグFeを有する全てのパケット情報を検索できるので、より容易に上記判定を行うことが可能である。
図10は、実施の形態1にかかる処理制御部120によって実行される、継続動作不可信号Sucの受信後の動作を示すフローチャートである。処理制御部120は、正常な処理部110から継続動作不可信号Sucが通知された場合(ステップS90のYES)、継続動作不可信号Sucを通知した処理部110及びその処理部110の専用の周辺機能106に対してリセットを発行する(ステップS92)。これにより、故障した処理部110の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、正常な処理部110の誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部120内の設定によって、適宜変更され得る。
図11は、実施の形態1にかかる処理制御部120によって実行される、引継ぎ影響有無信号Sheの受信後の動作を示すフローチャートである。処理制御部120は、正常な処理部110から引継ぎ影響有無信号Sheが通知された場合(ステップS94のYES)、処理制御部120における設定値に対応したリセット範囲にリセットを発行する(ステップS96)。これにより、故障した処理部110の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、故障した処理部110が行っていた処理を正常な処理部110が引き継いだことによる誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部120内の設定値によって、適宜変更され得る。
図12は、実施の形態1にかかる動作例を示すタイミングチャートである。図12は、処理部110−1(処理部#1)にエラーが発生した場合に処理部110−2(処理部#2)が継続動作判定を行う例を示す。つまり、図12では、「故障した処理部110」は処理部110−1(処理部#1)であり、「正常な処理部110」は処理部110−2(処理部#2)である。
処理部110−1の処理内容は、処理部110−1がバス(システムバス108)に発行している書き込み/読み込み命令、及び処理部110−1自身の状態を示す。エラー信号Serは、初期状態ではエラーが発生していない状態(Low)を示しており、ロックステップ機構等によりエラーを検知したタイミングでエラーが発生している状態(High)を示す信号である。データ書込部112−1(データ書込部#1)の処理内容における「パケット処理」では、データ書込部112−1は、図6で示すようなパケット処理フローを実行する。書き込みポインタは、データ書込部112−1に関するトレースRAM114−1(トレースRAM#1)に書き込みを行うためのアドレス情報に使用する値を示す。ここで、nは、ある時間のトレースRAM114における書き込みポインタが示す値であり、mは、処理部110−1が故障してからの処理部110−1の書き込み/読み込み回数を示す。
処理制御部120の処理内容において、「処理部#1停止処理」では、処理制御部120は、例えば図7に示す動作を実行する。また、「X」では、処理制御部120は、他の任意の処理を実行しているか、又は停止していることを示す。
また、「トレースRAM#1情報」は、トレースRAM114−1に格納されている情報(トレース情報)を示す。ここで、トレースRAM#1情報において、「パケット情報」とは、エラーフラグFeが立っていない(つまりエラーフラグFeが「0」に設定されている)パケット情報Ipkである。また、上述したように、「パケット情報E」は、エラーフラグFeが立っており処理部停止フラグFsが立っていないパケット情報Ipkであり、「パケット情報ES」は、エラーフラグFeが立っており処理部停止フラグFsが立っているパケット情報Ipkである。また、トレースRAM#1情報において、「X」は、任意のパケット情報が格納されていることを示す。
図12の例では、書き込みポインタnに対応するタイミングで、処理部110−1にエラーが発生している。したがって、矢印Aで示すように、トレースRAM#1情報における書き込みポインタnに対応する領域には、「パケット情報E」が格納される。また、矢印Bで示すように、処理部110−1からエラー信号Serが発行されると、処理制御部120は、図7に示す処理部#1停止処理を実行する。そして、矢印Cで示すように、故障した処理部110である処理部110−1にリセット信号Srsを発行すると、処理部110−1は、すぐに停止するわけではなく、書き込みポインタn+mのタイミングで停止する。一方、処理制御部120は、リセット信号Srsを発行してから期間Tstopが経過すると、矢印Dで示すように、正常な処理部110である処理部110−2に対して処理部停止完了信号Sstを発行する。このとき、矢印Eで示すように、トレースRAM#1情報における書き込みポインタn+mに対応する領域には、「パケット情報ES」が格納される。なお、トレースRAM#1情報における書き込みポインタn+1〜n+m−1に対応する領域には、「パケット情報E」が格納される。
処理部110−2は、処理制御部120から処理部停止完了信号Sstを通知されると、継続動作判定処理を実行する。処理部110−2は、継続動作判定処理において、トレースRAM#1情報から、パケット情報E〜パケット情報ES間の情報を取得する(図8〜図9のS54,S56,S60,S80参照)。そして、処理部110−2は、これらの取得された情報が処理部110−1及び処理部110−2に共有されるメモリ領域及び処理部110−2の専用のメモリ領域に影響がないか否かを判断する(図8のS62,S64参照)。なお、図12の例では、処理Aについて継続動作可能である場合が示されており、処理部110−2は、継続動作判定後、継続動作判定前に実行していた処理Aを再び実行する。
パケット情報E〜パケット情報ES間の情報を取得する方法について具体的に説明する。図12の例では、書き込みポインタn+mに対応する領域にパケット情報ESが格納されているので、処理部110−2は、S54の処理でk=n+mとしてS56の処理でパケット情報ESを取得する。そして、処理部110−2は、S80の処理でkをデクリメントしていくことで、最初にパケット情報Eが格納された書き込みポインタnに対応する領域までさかのぼって、パケット情報Eを取得する。なお、k=n−1のときは、対応するパケット情報にはエラーフラグFeが立っていないので(S60のNO)、図8に示した処理は終了する。
なお、バスアーキテクチャによっては、書き込み/読み込み命令から書き込み/読み込み完了までに複数サイクルを要する場合に、このバスアクセス完了まで、故障した処理部110のアクセスを遮断しないよう制御する必要がある。このようなアーキテクチャの場合、故障した処理部110がエラー信号Serを発行した場合に故障した処理部110のアクセスを遮断するまでの管理を行うシーケンサと、処理制御部120と処理部110との間に処理部110の状態を示すステータス信号とが追加され得る。
図13は、図12の動作例に処理部110によって発行されるステータス信号が追加されたタイミングチャートである。図13の例では、ステータス信号として、書き込み/読み込みサイクル完了信号が使用されている。書き込み/読み込みサイクル完了信号は、処理部110の書き込み/読み込みが完了したか、又は、処理部110が書き込み/読み込み中であるかを示す。
処理部110−1からエラー信号Serが発行された場合、矢印Aで示すように、処理制御部120は、処理部110−1の書き込み/読み込みサイクル(図13の例では書き込みサイクル)が完了するまで待機する。そして、処理部110−1の書き込み/読み込みサイクルが完了したときに、処理制御部120は、矢印Bで示すように、図7に示す処理部#1停止処理を実行する。そして、矢印Cで示すように、故障した処理部110である処理部110−1にリセット信号Srsを発行すると、処理部110−1は、すぐに停止するわけではないが、期間Tstop以内に停止する。一方、処理制御部120は、リセット信号Srsを発行してから期間Tstopが経過すると、矢印Dで示すように、正常な処理部110である処理部110−2に対して処理部停止完了信号Sstを発行する。このとき、トレースRAM#1情報における書き込みポインタn+mに対応する領域には、「パケット情報ES」が格納される。なお、トレースRAM#1情報における書き込みポインタn〜n+m−1に対応する領域には、「パケット情報E」が格納される。処理部110−2の処理については、図12の例と実質的に同様である。
<実施の形態1の変形例1>
なお、実施の形態1では、処理部110が2個である場合について説明したが、処理部110は3個以上であってもよい。この場合、複数の処理部110が故障することを考慮すると、引継ぎ処理対象の処理部110が故障している可能性がある。ここで、引継ぎ処理対象の処理部110は、故障した処理部110が実行していた処理を引き継ぐように予め設定された処理部110である。
図14は、実施の形態1の変形例1にかかる、図7に示した処理に引継ぎ処理対象の処理部110の故障判断が追加された処理のフローチャートである。なお、図14のステップS40a〜S44aは、それぞれ、図7のS40〜S44と実質的に同様であるので、説明を省略する。
処理制御部120は、引継ぎ処理対象の処理部110が故障しているか否かを判定する(ステップS45a)。具体的には、処理制御部120は、処理制御部120内の引継ぎ処理対象の設定から引継ぎ処理対象の処理部110を判定する。そして、処理制御部120は、引継ぎ処理対象の処理部110からエラー信号Serを受信していたか否かを判断し、エラー信号Serを受信していた場合に、引継ぎ処理対象の処理部110が故障していると判定する。さらに具体的には、処理制御部120は、引継ぎ処理対象の処理部110が故障しているか否かを、処理制御部120が有する、正常/故障ステータスを保持するFFの値で判断する。このFFの初期値はクリアされた状態である。このFFは、処理部110のエラーの通知の際にセットされ、故障した処理部110へのリセット信号Srsを停止したときにクリアされる。
引継ぎ処理対象の処理部110が故障していないと判定された場合(S45aのNO)、処理制御部120は、図7のS46と同様にして、引継ぎ処理対象の処理部110に対して、処理部停止完了信号Sst及び停止完了処理部通知信号Snsを発行する(ステップS46a)。これにより、引継ぎ処理対象の処理部110は、引継ぎ処理を行うことができる。一方、引継ぎ処理対象の処理部110が故障していると判定された場合(S45aのYES)、処理制御部120は、処理制御部120の設定値に対応したリセット範囲にリセットを発行する(ステップS48a)。これにより、引継ぎ処理対象の処理部110が故障した場合であっても、システム全体として誤動作を防止することが可能となる。また、引継ぎ処理対象の処理部110が故障したか否かを判定することにより、故障した処理部110が行っていた処理を、エラーなく、システム全体として引き継ぐことが可能となる。
<実施の形態1の変形例2>
また、上述した実施の形態1では、処理部110が故障した後、処理制御部120が故障した処理部110にリセット信号Srsを発行して故障した処理部110を停止させ続ける例について説明した。しかしながら、故障の原因が一過性のものである場合等では、故障した処理部110へのリセット信号Srsの発行を停止して、故障した処理部110を再実行させてもよい。
図15は、実施の形態1の変形例2にかかる半導体装置100の構成を示す図である。図15に示した半導体装置100は、継続動作判定完了信号Sdcが追加され、トレースRAM114と処理部110とが専用のシステムバスで接続されている点で、図3に示した半導体装置100と異なる。
各処理部110は、各処理部110が再実行に必要な情報を、予め、RAM等の記憶デバイスの処理部110毎に指定されたメモリ領域に書き込んでおく。なお、再実行させるか否かを示す設定は、記憶デバイスを予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値として格納され得る。
図16は、実施の形態1の変形例2にかかる再実行処理を示すフローチャートである。正常な処理部110は、継続動作判定処理の後、継続動作判定処理の実施が完了したことを通知するために、処理制御部120に対して、継続動作判定完了信号Sdcを1パルスで発行する(ステップS100)。処理制御部120は、正常な処理部110の数と継続動作判定処理の完了した処理部110の数とを比較することで、全ての処理部110の継続動作判定が完了したか否かを判断する(ステップS102)。
全ての処理部110の継続動作判定が完了した後(S102のYES)、処理制御部120は継続動作判定処理の完了数を初期化する(ステップS104)。S104の処理の後、処理制御部120は、故障した処理部110が再実行処理対象か否かを判断する(ステップS106)。この再実行処理対象か否かの判断は、例えば、各処理部110(又は処理部110が実行していた処理)が再実行処理対象か否かを示す設定を、処理制御部120がアクセス可能な記憶領域に予め記憶しておいて、その設定を用いることでなされ得る。故障した処理部110が再実行処理対象でない場合(S106のNO)、処理は終了する。一方、故障した処理部110が再実行処理対象である場合(S106のYES)、処理制御部120は、故障した処理部110へのリセット信号Srsの発行を停止する(ステップS108)。これにより、処理制御部120は、故障した処理部110を再実行するように制御を行う。
故障した処理部110は、故障した処理部110が再実行する際に、故障中に実行した処理が故障した処理部110自身の処理に影響がないか否かを判定するために、図8のS54〜S66の処理と実質的に同様の処理を行う(S110〜S114)。つまり、故障した処理部110は、再実行処理に必要な情報を、故障した処理部110自身に関するトレースRAM114から取得する(ステップS110;S54〜S56に対応)。そして、故障した処理部110は、トレースRAM114に格納された情報は再実行処理に影響がないか否かを判定する(ステップS112;S60〜S64に対応)。
再実行処理に影響がある場合(S112のNO)、故障した処理部110は、処理制御部120に対して継続動作不可信号Sucを発行する(ステップS114;S66に対応)。一方、再実行処理に影響がない場合(S112のYES)、故障した処理部110は、再実行処理を行う(ステップS116)。継続動作不可信号Sucを受信した処理制御部120は、処理制御部120における設定値に対応したリセット範囲にリセットを発行する(ステップS118)。この場合、処理制御部120は、継続動作不可信号Sucを通知した処理部110とその処理部110の専用の周辺機能106にリセットを発行するようにしてもよい。また、リセットの範囲は処理制御部120内の設定により変更することも可能である。
このように、実施の形態1の変形例2においては、処理制御部120は、故障した処理部110を再実行するように制御を行う。これにより、故障した処理部110は再実行処理を行うことが可能であるので、システム全体として処理の効率化を図ることが可能となる。
なお、図15は、トレースRAM114と処理部110とが専用のシステムバスで接続された例を示すが、このような構成に限られない。再実行判定処理の間にRAMから再実行に必要な情報を読み込む際に、データ書込部112による上書きを防止するような構成であればよい。したがって、再実行判定処理であることを通知する信号を処理部110と処理制御部120との間に追加して、データ書込部112の書き込みを停止するようにしてもよい。または、処理部110からのアクセスがトレースRAM114へのアクセスでるか否かをデータ書込部112が判断するために、トレースRAM114領域の開始/終了アドレス等を記憶領域に格納して、処理部110のアクセスアドレスと比較することで、処理部110からのアクセスがトレースRAM114へのアクセスか否かを判断ようにしてもよい。
また、トレースRAM114領域の開始/終了アドレスを格納するとしたが、トレースRAM114の領域が判定可能な構成となっていればよい。例えば、設定用のレジスタを設けて、システムバス108又は専用のバスを介して処理制御部120を処理部110と接続することで、この設定を処理部110から書き換え可能なシステムとしてもよい。
上述したように、実施の形態1にかかる半導体装置100は、処理制御部120、トレースRAM114及びデータ書込部112を有している。これにより、例えば処理部110−1(第1の処理部)でエラーが発生した場合に、処理部110−2(第2の処理部)は、処理部110−1に関するトレースRAM114−1に格納されたトレース情報を用いて、システム全体として継続動作が可能か否かの判定を行うことができる。したがって、実施の形態1にかかる半導体装置100は、複数の処理部110のうちの1つにエラーが発生した場合であっても、システム全体として継続して処理を実行することができる。さらに、上記継続動作が可能であるとの判定は、処理部110−1にエラーが発生したことによる処理部110−2に対する影響がない場合になされる。これにより、より確実に、継続動作が可能であるか否かの判定を行うことが可能である。
また、実施の形態1においては、上述した図8のS62及びS64の処理のように、正常な処理部110は、エラーフラグFeのあるパケット情報のアドレスが、自身の処理部110によって使用され得る記憶領域のアドレスの範囲内にない場合に、自身が行っていた処理を継続して実行する。これにより、正常な処理部110は、自身が行っていた処理を、誤動作なく継続することが可能である。
また、実施の形態1においては、上述した図9のS72及びS74の処理のように、正常な処理部110は、エラーフラグFeのあるパケット情報のアドレスが、故障した処理部110によって使用され得る記憶領域のアドレスの範囲内にない場合に、故障した処理部110が行っていた処理を引き継いで実行する。これにより、正常な処理部110は、故障した処理部110が行っていた処理を、誤動作なく引き継ぐことが可能である。
また、故障した処理部が出力するデータを伝搬させない機構を採用した関連技術があるが、この技術では、この機構に起因して、処理部とメモリ(周辺機能等のレジスタ)との間の遅延が発生するおそれがある。また、この機構が故障した場合に正常な処理部からメモリにアクセスできないおそれがある。一方、実施の形態1にかかる半導体装置100は、上記機構を採用していないので、上述の問題が発生することを防止することができる。
(実施の形態2)
次に、実施の形態2について説明する。実施の形態2にかかる半導体装置は、所定の条件に応じて処理部の再実行処理を制御できる再実行制御機能が追加された点で、実施の形態1にかかる半導体装置100(図15)と異なる。
図17は、実施の形態2にかかる半導体装置200の構成を示す図である。半導体装置200は、RAM102と、フラッシュメモリ104と、周辺機能106と、システムバス108とを有する。また、半導体装置200は、処理部110−1(処理部#1)及び処理部110−2(処理部#2)と、データ書込部112−1(データ書込部#1)及びデータ書込部112−2(データ書込部#2)と、トレースRAM114−1(トレースRAM#1)及びトレースRAM114−2(トレースRAM#2)とを有する。さらに、半導体装置200は、処理制御部220を有する。処理制御部220以外の構成要素については、実施の形態1にかかるものと実質的に同様であるので、説明を省略する。
実施の形態2にかかる処理制御部220は、上述した処理制御部120が有する機能に加えて、再実行制御機能を有する。処理制御部220は、再実行制御機能用に、各処理部110から通知されるエラー回数をカウントする機構をさらに有する。なお、再実行制御機能の設定は、処理制御部220を予めグランド又は電源等に接続し、あるいは論理的に固定値となる信号と接続して、固定値で格納され得る。なお、再実行制御機能の設定用のレジスタを追加した処理制御部220を処理部110とバスを介して接続することで、処理部110から設定変更可能なシステムを構成してもよい。
図18は、実施の形態2にかかる処理制御部220によって実行される再実行制御処理を示すフローチャートである。まず、処理制御部220は、初期化シーケンスを実行する(ステップS202)。具体的には、処理制御部220は、エラー回数errcnt#hを0に設定する。ここで、hは、処理部110に対応した数値を示す。つまり、処理部110の数だけエラー回数を示すユニークな変数がある。例えば、処理部110−1のエラー回数はerrcnt#1で示される。そして、以降の処理(S210〜S226)において、再実行制御処理が行われる。なお、S202の処理は、以降の処理(S210〜S226)とは独立して行われてもよい。
処理制御部220は、処理部110からエラー信号Serを受信すると(ステップS210のYES)、カウント機能によってエラー回数errcnt#hをインクリメントする(ステップS212)。例えば、処理部110−1からエラー通知された場合は、errcnt#1がインクリメントされる。そして、図7のS42の処理と同様に、処理制御部220は、故障した処理部110に対して、リセット信号Srsを発行する(ステップS214)。次に、図7のS44〜S46の処理と同様に、処理制御部220は、リセット信号Srsを発行してから期間Tstopが経過すると(ステップS216のYES)、正常な処理部110に対して、処理部停止完了信号Sst及び停止完了処理部通知信号Snsを発行する(ステップS218)。
次に、処理制御部220は、正常な処理部110からの継続動作判定完了信号Sdcを用いて、全ての継続動作判定が完了したか否かを判定する(ステップS220)。全ての継続動作判定が完了したと判定された場合(S220のYES)、処理制御部220は、エラー回数errcnt#hが規定回数を超えたか否かを判定する(ステップS222)。エラー回数errcnt#hが規定回数を超えていない場合(S222のNO)、処理制御部220は、故障した処理部110へのリセット信号Srsの発行を停止する(ステップS226)。そして、処理はS210の処理に戻ってもよい。なお、この後、故障した処理部110は、図16のS110〜S116の処理(再実行処理)を行ってもよい。一方、エラー回数errcnt#hが規定回数を超えた場合(S222のYES)、処理制御部220は、故障した処理部110へのリセット信号Srsの発行を継続し(ステップS224)、S210の処理に戻る。この場合、故障した処理部110は、再実行を行わない。
なお、エラー回数をカウントするタイミングは、故障した処理部110に対して処理部停止処理を実行してからでもよい。つまり、S212の処理は、S214の処理の後でもよい。また、エラー回数errcnt#hは、処理部110ごとに独立な変数としてRAM102等の記憶デバイスに格納される。なお、この変数は、エラー内容に応じて区別され得る。また、エラー回数の規定回数(上限)等の設定値は、処理制御部220内に設定され得る。
なお、上記では、エラー回数errcnt#hはRAM102等の記憶デバイスに変数で格納されると説明したが、そのような構成に限られない。処理制御部220は、トレースRAM114内に記憶される処理部停止フラグFsを含むパケット情報をカウントすることによって、エラー回数errcnt#hを求めてもよい。この場合、トレースRAM114と処理制御部220とをバスで接続すればよい。
また、上記では、処理制御部220がカウント機能を有しているとしたが、このような構成に限られない。処理制御部220は、周辺機能106に設けられたタイマ等を使用して、ある時間内の処理部110ごとのエラー回数をカウントしてもよい。また、処理制御部220は、トレースRAM114に格納された、処理部停止フラグFsを含むパケット情報の数と処理部停止フラグFsを含まない(正常な)パケット情報の数との合計に対する、処理部停止フラグFsを含むパケット情報の数の比率を計算することで、エラーの頻度を算出してもよい。そして、処理制御部220は、そのエラー頻度に応じて故障した処理部110へのリセット信号の発行を停止するか、又は継続するかを選択してもよい。さらに、処理制御部220は、エラー回数及びエラー頻度の両方を用いて、故障した処理部110へのリセット信号の発行を停止するか否かを判定してもよい。この場合、処理制御部220は、エラー回数及びエラー頻度のどちらかを優先して、上記判定を行ってもよい。
図19は、実施の形態2にかかる処理制御部220によって実行される再実行制御処理の変形例を示すフローチャートである。なお、図19の処理は、図18のS222〜S226の代わりに実行され得る。
処理制御部220は、上述した方法でエラー頻度を算出し(ステップS232)、算出されたエラー頻度が規定値を超えたか否かを判定する(ステップS234)。エラー頻度が規定値を超えた場合(S234のYES)、処理制御部220は、故障した処理部110へのリセット信号Srsの発行を継続し(ステップS236)、図18のS210の処理に戻る。この場合、故障した処理部110は、再実行を行わない。
一方、エラー頻度が規定値を超えていない場合(S234のNO)、処理制御部220は、エラー回数を算出し(ステップS238)、エラー回数が規定値を超えたか否かを判定する(ステップS240)。エラー回数が規定値を超えた場合(S240のYES)、処理制御部220は、故障した処理部110へのリセット信号Srsの発行を継続する(ステップS236)。一方、エラー回数が規定値を超えていない場合(S240のNO)、処理制御部220は、故障した処理部110へのリセット信号Srsの発行を停止し(ステップS242)、図18のS210の処理に戻る。これにより、故障した処理部110は、再実行処理を行い得る。
これにより、エラー頻度が規定値以下である場合であっても、エラー回数が規定値より多い場合は、故障した処理部110へのリセット信号を継続することで、故障した処理部110を停止させておくシステム構成が可能となる。なお、上記規定値は、処理制御部220内に設定され得る。また、図19の処理はあくまでも例示であって、システム構成に応じて最適な構成にすればよい。
実施の形態1(変形例2)にかかる半導体装置100は、処理部110にエラーが発生した場合等にエラーが発生した処理部110に対してリセットを発行することでその処理部110の処理を停止し、そのリセットの発行を解除することで、その処理部110を再実行することが可能である。しかしながら、リセットによって故障原因が排除されない場合では、リセット動作を繰り返してしまうおそれがある。一方、実施の形態2にかかる半導体装置200は、上記のように、エラー回数又はエラー頻度に応じて、故障した処理部110を停止したままにしておくか又は再実行させるかを判定することができる。これにより、実施の形態2にかかる半導体装置200は、上記のようなリセット動作を繰り返してしまうことを防止することが可能となる。言い換えると、実施の形態2にかかる半導体装置200は、再実行すべきでない処理部110の再実行を抑制することが可能である。
(実施の形態3)
次に、実施の形態3について説明する。実施の形態3にかかる半導体装置は、デコード部(判定部)を有する点で、他の実施の形態にかかる半導体装置と異なる。そして、実施の形態3においては、正常な処理部ではなく、デコード部が、故障した処理部の処理による影響の有無の判定(継続動作判定)を行う。
図20は、実施の形態3にかかる半導体装置300の構成を示す図である。半導体装置300は、RAM102と、フラッシュメモリ104と、周辺機能106と、システムバス108とを有する。また、半導体装置300は、処理部110−1(処理部#1)及び処理部110−2(処理部#2)と、データ書込部112−1(データ書込部#1)及びデータ書込部112−2(データ書込部#2)と、トレースRAM114−1(トレースRAM#1)及びトレースRAM114−2(トレースRAM#2)とを有する。さらに、半導体装置300は、デコード部310−1及びデコード部310−2と処理制御部320とを有する。デコード部310及び処理制御部320以外の構成要素については、他の実施の形態にかかるものと実質的に同様であるので、説明を省略する。デコード部310−1及びデコード部310−2は、それぞれ、処理部110−1(処理部#1)及び処理部110−2(処理部#2)に関する。つまり、デコード部310は、複数の処理部110それぞれについて設けられている。
他の実施の形態と同様に、処理制御部320は、故障した処理部110からエラー信号Serを受信すると、故障した処理部110にリセット信号Srsを発行することで、故障した処理部110の動作を停止させる。そして、処理制御部320は、リセット信号Srsを発行してから期間Tstopが経過すると、処理制御部120は、正常な処理部110ではなく、故障した処理部110に関するデコード部310に対して、処理部停止完了信号Sstを発行する。
デコード部310は、トレースRAM114とバスを介して接続されている。また、デコード部310は、処理部影響有無信号Spe、引継ぎ影響有無信号She、影響対象通知信号Sne、影響判定完了信号Sdeを、処理制御部320に対して出力する。また、デコード部310には、トレースRAM114から、パケット情報Ipkが入力される。デコード部310には、処理制御部320から、処理部停止完了信号Sst及びリセット信号Srsが入力される。
図21は、実施の形態3にかかるデコード部310の詳細を示す図である。デコード部310は、パケット情報判定部312と、処理部専用・共有アドレス格納部314とを有する。処理部専用・共有アドレス格納部314は、図5に例示したような、各処理部110の専用領域及び共有領域のアドレス情報を、固定値として格納する。処理部専用・共有アドレス格納部314における値の設定は、レジスタを追加して処理部110とデコード部310とをバスを介して接続することで、処理部110によって変更可能としてもよい。パケット情報判定部312は、ハードウェアで実現されるが、処理部を追加してソフトウェアによって実現されてもよい。その場合、パケット情報判定部312の代わりに処理部と、プログラムコード及びプログラムに使用する定数値等を格納するメモリ領域とを設けることで、パケット情報判定部312と同等の処理が実行され得る。
パケット情報判定部312は、トレースRAM114からパケット情報Ipkを取得する。また、パケット情報判定部312は、処理部影響有無信号Spe、引継ぎ影響有無信号She、影響対象通知信号Sne、影響判定完了信号Sdeを、処理制御部320に対して出力する。
図22及び図23は、実施の形態3にかかるデコード部310の処理を示すフローチャートである。なお、この処理は、故障した処理部110に関するデコード部310によって行われ得る。例えば、処理部110−1が故障した場合は、この処理は、デコード部310−1によって行われ得る。まず、パケット情報判定部312は、引継ぎ影響有無信号Sheを初期化する(ステップS302)。
デコード部310が処理制御部320から処理部停止完了信号Sstを受信すると(ステップS310のYES)、パケット情報判定部312は、故障した処理部110に関するトレースRAM114からパケット情報ESの格納領域位置kを取得(検索)する(ステップS312)。上記検索は、トレースRAM114のトレース情報をリードして行われてもよいし、データ書込部112から書き込み位置情報を取得する等、格納領域位置kが認識できるようになされればよい。そして、パケット情報判定部312は、検索された格納領域位置kのパケット情報Ipkを取得する(ステップS314)。なお、最初のS314の処理では、格納領域位置kのパケット情報Ipkは、パケット情報ESであるが、2回目以降のS314の処理では、格納領域位置kのパケット情報Ipkは、パケット情報E等である。
パケット情報判定部312は、格納領域位置kのパケット情報IpkのエラーフラグFeが1であるか否か、つまり格納領域位置kのパケット情報IpkにエラーフラグFeがあるか否かを判定する(ステップS316)。格納領域位置kのパケット情報IpkにエラーフラグFeがない場合(S316のNO)、パケット情報判定部312は、影響判定完了信号Sdeを処理制御部320に1パルスで発行して(ステップS318)、処理を終了する。
格納領域位置kのパケット情報IpkにエラーフラグFeがある場合(S316のYES)、パケット情報判定部312は、故障した処理部110による処理の影響の有無を判定された処理部110を判断するための変数hを初期化する(ステップS320)。つまり、パケット情報判定部312は、hを1に設定する。パケット情報判定部312は、処理部専用・共有アドレス格納部314に格納されたアドレス情報を参照して、パケット情報Ipkのアドレスが、処理部#hの処理部専用領域開始アドレスと処理部専用領域終了アドレスとの間にあるか否かを判定する(ステップS322)。言い換えると、パケット情報判定部312は、処理部#hの専用メモリ領域の開始・終了アドレス情報を用いて、トレースRAM114の領域に格納されたトレース情報が処理部#hの専用メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
パケット情報Ipkのアドレスが処理部#hの専用メモリ領域の開始・終了アドレス情報の範囲内にある場合(S322のYES)、処理はS326の処理に進む。そうでない場合(S322のNO)、パケット情報判定部312は、処理部専用・共有アドレス格納部314に格納されたアドレス情報を参照して、パケット情報Ipkのアドレスが、処理部#hの処理部共有領域開始アドレスと処理部共有領域終了アドレスとの間にあるか否かを判定する(ステップS324)。言い換えると、パケット情報判定部312は、処理部#hの共有メモリ領域の開始・終了アドレス情報を用いて、トレースRAM114の領域に格納されたトレース情報が処理部#hの共有メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
パケット情報Ipkのアドレスが処理部#hの共有メモリ領域の開始・終了アドレス情報の範囲内にある場合(S324のYES)、処理はS326の処理に進む。そうでない場合(S324のNO)、処理はS340の処理に進む。
ステップS326において、パケット情報判定部312は、処理部#hが故障した処理部110であるか否かを判定する。この判定は、自身のデコード部310に関する処理部110(つまり故障した処理部110)と、変数hが示す処理部110とが一致するか否かを判定することでなされ得る。つまり、例えば処理部110−2(処理部#2)が故障してデコード部310−2が図22及び図23に示す処理を行っている場合、デコード部310−2のパケット情報判定部312は、処理部#hが処理部#2であるか否か、つまりh=2であるか否かを判定する。処理部#hが故障した処理部110である場合(S326のYES)、パケット情報判定部312は、引継ぎ影響有無信号Sheを1にセットして(ステップS328)、処理はS332の処理に進む。一方、処理部#hが故障した処理部110でない場合(S326のNO)、パケット情報判定部312は、処理部影響有無信号Speを1パルスで発行して(ステップS330)、処理はS332の処理に進む。ステップS332において、パケット情報判定部312は、影響対象通知信号Sneをhにセットする。そして、処理はS340の処理に進み、判定動作のフローに戻る。
ステップS340において、パケット情報判定部312は、変数hをインクリメントする。そして、パケット情報判定部312は、hが処理部110の数を超えたか否かを判定する(ステップS342)。hが処理部110の数を超えていない場合(S342のNO)、処理はS322の処理(S320の後の処理)に戻る。一方、hが処理部110の数を超えた場合(S342のYES)、格納領域位置kに格納されたパケット情報Ipkについて全ての処理部110についての判定が終了したこととなる。
したがって、パケット情報判定部312は、パケット情報Ipkの格納領域位置kの値をデクリメントする(ステップS344)。そして、パケット情報判定部312は、kの値が−1であるか否かを判定し(ステップS346)、k=−1でない場合(S346のNO)、処理はS314の処理に戻る。一方、k=−1である場合(S346のYES)、パケット情報判定部312は、kの値をトレースRAM114の格納領域の最大値として(ステップS348)、処理はS314の処理に戻る。そして、格納領域位置kに格納されたパケット情報IpkにエラーフラグFeがなくなるまで、フローが繰り返される(S316)。
なお、引継ぎ影響有無信号Sheは、デコード部310にリセット信号Srsが発行される際に初期化される。また、パケット情報判定部312が影響対象通知信号Sneを出力すると記載したが、どの処理部110に対して影響があるかを示すことができれば、このような構成に限られない。例えば、デコード部310内に判断用のレジスタを設けてそのレジスタに処理制御部320がアクセス可能としてもよい。また、自身のデコード部310に関する処理部110を除く処理部110の数の処理部停止完了信号Sstを処理制御部320とデコード部310との間に設けてもよい。例えば、処理制御部320とデコード部310−1との間に、処理部110−1以外の処理部110(例えば処理部110−2)についての処理部停止完了信号Sstを設けてもよい。
次に、図24及び図25を用いて、処理制御部320の処理について説明する。
図24は、実施の形態3にかかる処理制御部320によって実行される、処理部影響有無信号Speが通知された場合の処理を示すフローチャートである。処理制御部320は、処理部影響有無信号Speを受信すると(ステップS350のYES)、影響対象通知信号Sneを用いて、故障した処理部110の処理がどの処理部110に影響したかを判定する(ステップS352)。そして、処理制御部320は、対象の処理部110(故障した処理部110の処理に影響を受けた処理部110)とその処理部110の専用の周辺機能106に対してリセットを発行する(ステップS354)。これにより、故障した処理部110の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、故障した処理部110の処理によって影響を受けた正常な処理部110の誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部320内の設定によって、適宜変更され得る。
図25は、実施の形態3にかかる処理制御部320によって実行される、影響判定完了信号Sdeが通知された場合の処理を示すフローチャートである。処理制御部320は、影響判定完了信号Sdeを受信すると(ステップS360のYES)、引継ぎ影響有無信号Sheを受信しているか否かを判定する(ステップS362)。引継ぎ影響有無信号Sheが受信されている場合(S362のYES)、故障した処理部110の処理を引き継ぐことはできない。したがって、処理制御部320は、処理制御部320の設定値に対応したリセット範囲にリセットを発行する(ステップS364)。これにより、故障した処理部110の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、故障した処理部110が行っていた処理を正常な処理部110が引き継いだことによる誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部120内の設定値によって、適宜変更され得る。
一方、引継ぎ影響有無信号Sheが受信されていない場合(S362のNO)、処理制御部320は、故障した処理部110が行っていた処理が引き継ぎ処理の対象であるか否かを判定する(ステップS366)。具体的には、処理制御部320は、S70の処理と同様に、故障した処理部110が行っていた処理の量及び重要度等に応じて、故障した処理部110が行っていた処理が引き継ぎ処理の対象であるか否かを判定してもよい。故障した処理部110が行っていた処理が引き継ぎ処理の対象であると判定された場合(S366のYES)、処理制御部320は、引継ぎ処理対象の処理部110が故障しているか否かを判定する(ステップS368)。具体的には、S45aと同様に、処理制御部320は、処理制御部320内の引継ぎ処理対象の設定から引継ぎ処理対象の処理部110を判定する。そして、処理制御部320は、引継ぎ処理対象の処理部110からエラー信号Serを受信していたか否かを判断し、エラー信号Serを受信していた場合に、引継ぎ処理対象の処理部110が故障していると判定する。引継ぎ処理対象の処理部110が故障していないと判定された場合(S368のNO)、処理制御部320は、引継ぎ処理対象の処理部110に対して、処理部停止完了信号Sst及び停止完了処理部通知信号Snsを発行する(ステップS370)。これにより、引継ぎ処理対象の処理部110は、故障した処理部110が行っていた処理の引継ぎ処理を行うことができる。一方、引継ぎ処理対象の処理部110が故障していると判定された場合(S368のYES)、処理制御部320は、処理制御部320の設定値に対応したリセット範囲にリセットを発行する(ステップS364)。これにより、引継ぎ処理対象の処理部110が故障した場合であっても、システム全体として誤動作を防止することが可能となる。また、引継ぎ処理対象の処理部110が故障したか否かを判定することにより、故障した処理部110が行っていた処理を、エラーなく、システム全体として引き継ぐことが可能となる。
また、処理制御部320は、故障した処理部110が再実行処理対象か否かを判断する(ステップS372)。故障した処理部110が再実行処理対象でない場合(S372のNO)、処理は終了する。一方、故障した処理部110が再実行処理対象である場合(S372のYES)、処理制御部320は、図16、図18及び図19に示したような、再実行処理を実行する(ステップS374)。これにより、故障した処理部110が再実行処理対象である場合に、故障した処理部110が再実行可能であれば故障した処理部110に再実行処理を行わせることができる。
<実施の形態3の変形例1>
上述した実施の形態3にかかるデコード部310は、処理部110のバス情報(書き込み/読み込み情報等に対応)及びエラー情報(エラー信号Serに対応)を含むパケット情報Ipkを格納するトレースRAM114に接続されている。しかしながら、このような構成に限られない。デコード部310に処理部110のバス情報及びエラー情報が入力されれば、どのような構成であってもよい。例えば、デコード部310は、各処理部110のバスから、逐次的に、各処理部110のバス情報及びエラー情報を取得するようにしてもよい。
図26は、実施の形態3の変形例1にかかる半導体装置300の構成を示す図である。図26に示した半導体装置300は、データ書込部112、トレースRAM114及びデコード部310の代わりに、デコード部330(デコード部330−1,330−2)を有する。デコード部330は、図21に示すようなデコード部310の構成を有し得る。
ここで、デコード部330は、各処理部110のバスから、逐次的に、各処理部110のバス情報及びエラー情報(第2の情報)を取得して、それらの情報からパケット情報を取得して処理を行う。したがって、実施の形態3の変形例1にかかる半導体装置300は、各処理部110のバス情報及びエラー情報(パケット情報)を格納する必要がないので、データ書込部112及びトレースRAM114が不要である。また、デコード部330は逐次的に処理を行うので、処理制御部320からデコード部330へは処理部停止完了信号Sstは送信されない。また、デコード部330は逐次的に処理を行うので、デコード部330から処理制御部320には、影響判定完了信号Sdeは送信されない。一方、処理部110は、書き込み/読み込みが完了した場合に、処理制御部320に対し、書き込み/読み込みサイクル完了信号Sccを通知する。これにより、処理制御部320は、後述する図29に示す処理を実行することができる。
図27及び図28は、実施の形態3の変形例1にかかるデコード部330の処理を示すフローチャートである。上述したように、この処理は、デコード部330によって逐次的に行われる。デコード部330は、各処理部110のバス情報又はエラー情報(パケット情報)が更新されたか否かを判定し(ステップS310a)、更新があった場合に(S310aのYES)、バス情報及びエラー情報から、パケット情報Ipkを取得する(ステップS314a)。この処理は、デコード部330がバス情報及びエラー情報を用いて図4に例示するパケット情報Ipkを生成することで行われ得る。なお、ここで取得されるパケット情報Ipkは、図4に例示する情報を全て含む必要はない。
デコード部330は、パケット情報IpkのエラーフラグFeが1であるか否か、つまり取得されたパケット情報IpkにエラーフラグFeがあるか否かを判定する(ステップS316a)。パケット情報IpkにエラーフラグFeがない場合(S316aのNO)、処理は終了する。
パケット情報IpkにエラーフラグFeがある場合(S316aのYES)、デコード部330は、故障した処理部110による処理の影響の有無を判定された処理部110を判断するための変数hを初期化する(ステップS320a)。デコード部330は、図22のS322と同様にして、図5に示すアドレス情報を参照して、パケット情報Ipkのアドレスが、処理部#hの処理部専用領域開始アドレスと処理部専用領域終了アドレスとの間にあるか否かを判定する(ステップS322a)。つまり、デコード部330は、専用メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
パケット情報Ipkのアドレスが処理部#hの専用メモリ領域の開始・終了アドレス情報の範囲内にある場合(S322aのYES)、処理はS326aの処理に進む。そうでない場合(S322aのNO)、デコード部330は、図22のS322と同様にして、図5に示すアドレス情報を参照して、パケット情報Ipkのアドレスが、処理部#hの処理部共有領域開始アドレスと処理部共有領域終了アドレスとの間にあるか否かを判定する(ステップS324a)。つまり、デコード部330は、処理部#hの共有メモリ領域の開始・終了アドレス情報の範囲内にあるか否かを判定する。
パケット情報Ipkのアドレスが処理部#hの共有メモリ領域の開始・終了アドレス情報の範囲内にある場合(S324aのYES)、処理はS326aの処理に進む。そうでない場合(S324aのNO)、処理はS340aの処理に進む。
ステップS326aにおいて、デコード部330は、処理部#hが故障した処理部110であるか否かを判定する。この判定は、自身のデコード部330に関する処理部110(つまり故障した処理部110)と、変数hが示す処理部110とが一致するか否かを判定することでなされ得る。つまり、例えば処理部110−2(処理部#2)が故障してデコード部330−2が図27及び図28に示す処理を行っている場合、デコード部330−2は、処理部#hが処理部#2であるか否か、つまりh=2であるか否かを判定する。処理部#hが故障した処理部110である場合(S326aのYES)、デコード部330は、引継ぎ影響有無信号Sheを1にセットして(ステップS328a)、処理はS332aの処理に進む。一方、処理部#hが故障した処理部110でない場合(S326aのNO)、デコード部330は、処理部影響有無信号Speを1パルスで発行して(ステップS330a)、処理はS332aの処理に進む。ステップS332aにおいて、デコード部330は、影響対象通知信号Sneをhにセットする。そして、処理はS340aの処理に進み、判定動作のフローに戻る。なお、処理部影響有無信号Speを受信した処理制御部320は、図24に示す処理を行う。また、引継ぎ影響有無信号Sheを受信した処理制御部320は、図29に示す処理を行う。
ステップS340aにおいて、デコード部330は、変数hをインクリメントする。そして、デコード部330は、hが処理部110の数を超えたか否かを判定する(ステップS342a)。hが処理部110の数を超えていない場合(S342のNO)、処理はS322aの処理(S320aの後の処理)に戻る。一方、hが処理部110の数を超えた場合(S342aのYES)、処理は終了する。なお、引継ぎ影響有無信号Sheは、デコード部310にリセット信号Srsを発行する際に初期化される。
図29は、実施の形態3の変形例1にかかる、書き込み/読み込みサイクル完了信号Sccを受信した処理制御部320の処理を示すフローチャートである。処理制御部320は、書き込み/読み込みサイクル完了信号Sccを受信すると(ステップS360aのYES)、故障した処理部110から最終のパケット情報(バス情報等)が出力されてから期間Teffが経過したか否かを判定する(ステップS361a)。つまり、処理制御部320は、最終のパケット情報が出力されてから、期間Teff待機する。
ここで、期間Teffは、デコード部330が1つのパケット情報を処理するのに要する最大時間である。また、故障した処理部110が書き込み/読み込みサイクル完了信号Sccを処理制御部320に通知して次に処理されるパケット情報が、最終のパケット情報となる。したがって、処理制御部320は、書き込み/読み込みサイクル完了信号Sccを受信したことをトリガとして、処理制御部320内のタイマを開始して、期間Teffを計測する。なお、Teffを計測するために予め定められた値が処理制御部320に格納されている。処理制御部320は、その値とタイマのカウント値とが一致すると、タイマのカウントを停止してカウント値を初期化する。
期間Teffが経過すると(S361aのYES)、処理制御部320は、図28のS328aの処理により引継ぎ影響有無信号Sheを受信しているか否かを判定する(ステップS362a)。引継ぎ影響有無信号Sheが受信されている場合(S362aのYES)、処理制御部320は、処理制御部320の設定値に対応したリセット範囲にリセットを発行する(ステップS364a)。これにより、故障した処理部110の動作によって影響を及ぼされた可能性のある処理を行うことが回避されるので、故障した処理部110が行っていた処理を正常な処理部110が引き継いだことによる誤動作を防止することが可能となる。なお、リセットを発行する範囲は、処理制御部120内の設定値によって、適宜変更され得る。一方、引継ぎ影響有無信号Sheが受信されていない場合(S362aのNO)、処理制御部320は、上述した方法で、故障した処理部110が行っていた処理が引き継ぎ処理の対象であるか否かを判定する(ステップS366a)。故障した処理部110が行っていた処理が引き継ぎ処理の対象であると判定された場合(S366aのYES)、処理制御部320は、引継ぎ処理対象の処理部110が故障しているか否かを判定する(ステップS368a)。具体的には、S45aと同様に、処理制御部320は、処理制御部320内の引継ぎ処理対象の設定から引継ぎ処理対象の処理部110を判定する。そして、処理制御部320は、引継ぎ処理対象の処理部110からエラー信号Serを受信していたか否かを判断し、エラー信号Serを受信していた場合に、引継ぎ処理対象の処理部110が故障していると判定する。引継ぎ処理対象の処理部110が故障していないと判定された場合(S368aのNO)、処理制御部320は、引継ぎ処理対象の処理部110に対して、処理部停止完了信号Sst及び停止完了処理部通知信号Snsを発行する(ステップS370a)。これにより、引継ぎ処理対象の処理部110は、故障した処理部110が行っていた処理の引継ぎ処理を行うことができる。一方、引継ぎ処理対象の処理部110が故障していると判定された場合(S368aのYES)、処理制御部320は、処理制御部320の設定値に対応したリセット範囲にリセットを発行する(ステップS364a)。これにより、引継ぎ処理対象の処理部110が故障した場合であっても、システム全体として誤動作を防止することが可能となる。また、引継ぎ処理対象の処理部110が故障したか否かを判定することにより、故障した処理部110が行っていた処理を、エラーなく、システム全体として引き継ぐことが可能となる。
また、処理制御部320は、故障した処理部110が再実行処理対象か否かを判断する(ステップS372a)。故障した処理部110が再実行処理対象でない場合(S372aのNO)、処理は終了する。一方、故障した処理部110が再実行処理対象である場合(S372aのYES)、処理制御部320は、図16、図18及び図19に示したような、再実行処理を実行する(ステップS374a)。これにより、故障した処理部110が再実行処理対象である場合に、故障した処理部110が再実行可能であれば故障した処理部110に再実行処理を行わせることができる。
<実施の形態3の変形例2>
上述した実施の形態3の変形例1では、パケット情報(バス情報及びエラー情報)が更新されるごとに、デコード部330が図27及び図28に示す処理を行う。しかしながら、デコード部330がパケット情報判定部312を1つのみ有する場合、この処理時間がパケット情報の更新間隔を超えると、デコード部330は、パケット情報が更新されても処理を行えない可能性がある。このようなことを抑制するために、デコード部330は、複数のパケット情報判定部312を有してもよい。
図30は、実施の形態3の変形例2にかかるデコード部330の構成を示す図である。実施の形態3の変形例2にかかるデコード部330は、複数のパケット情報判定部312−1〜312−jと、処理部専用・共有アドレス格納部314と、パケット情報切替部336とを有する。なお、1つの処理部専用・共有アドレス格納部314を複数のパケット情報判定部312−1〜312−jが共有するようにしてもよいし、複数のパケット情報判定部312−1〜312−jそれぞれについて処理部専用・共有アドレス格納部314が別個に設けられてもよい。
ここで、jは、パケット情報判定部312の数を示す、2以上の整数である。パケット情報切替部336は、パケット情報が更新されるごとに、更新されたパケット情報を処理するパケット情報判定部312−1〜312−jを切り替える。パケット情報切替部336は、各処理部110のバス情報を取得する。また、パケット情報切替部336には、処理部110からエラー信号Ser(エラー情報)が出力される。
図31は、実施の形態3の変形例2にかかるパケット情報切替部336の切り替え処理を示すフローチャートである。まず、パケット情報切替部336は、変数iを初期化する(ステップS380)。ここで、変数iは、パケット情報を処理させるパケット情報判定部312−1〜312−jのいずれかを示す整数である。つまり、変数iは、パケット情報切替部336がどのパケット情報判定部312にパケット情報を出力するかを示す。そして、パケット情報判定部312−iがパケット情報を処理する。
パケット情報切替部336は、パケット情報が更新されたか否かを判定する(ステップS382)。パケット情報が更新された場合(S382のYES)、パケット情報切替部336は、パケット情報判定部312−i(パケット情報判定部#i)に更新されたパケット情報を出力して(ステップS384)、変数iをインクリメントする(ステップS386)。そして、iがjを超えた場合に(ステップS388のYES)、パケット情報切替部336は、変数iを1に設定する(ステップS390)。以後、S382〜S390の処理が繰り返される。このように、パケット情報判定部312が複数設けられ、パケット情報切替部336がパケット情報を処理するパケット情報判定部312を切り替えることで、1つのパケット情報判定部312の処理時間がパケット情報の更新間隔を超える場合であっても、逐次更新されたパケット情報の処理を行うことが可能である。
上述したように、実施の形態3にかかる半導体装置300では、デコード部が継続動作判定を行う。これにより、正常な処理部110が継続動作判定を行うことが不要となる。したがって、実施の形態3では、他の実施の形態における正常な処理部110の継続動作判定処理を削減できる。
なお、上述した実施の形態3においては、処理部110それぞれについてデコード部が設けられているが、このような構成に限られない。例えば、1つのデコード部が、複数の処理部110について上述した処理を行ってもよい。つまり、デコード部の数は、処理部110の数と一致している必要はない。しかしながら、処理部110それぞれについてデコード部が設けられることによって、デコード部の処理及び半導体装置300の回路構成が簡易化される。
(変形例)
なお、本実施の形態は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述した複数の実施の形態のそれぞれは、互いに適用可能である。また、上述した実施の形態にかかるフローチャートにおいて、各処理の順序は、適宜、変更可能である。例えば、図8のS62の処理及びS64の処理の順序は、逆であってもよい。同様に、図9のS72の処理及びS74の処理の順序は、逆であってもよい。他の同様の処理についても同様である。
また、図5は、各処理部110が、1つの専用メモリ領域及び1つの共有メモリ領域を有する例を示しているが、このような構成に限られない。各処理部110が2つ以上の専用メモリ領域及び共有メモリ領域を有してもよい。この場合は、図5に示すアドレス情報において、それぞれの領域を追加すればよい。また、各メモリ領域は、故障した処理部110のバスアクセスによって影響がないことがあり得る。その場合は、図5に示すアドレス情報においてそのメモリ領域は省略されてもよい。なお、影響がない場合とは、例えば、そのメモリ領域が、故障した処理部110によって異常なデータで上書きされることがない場合、又は、FIFOのような機構又はリードクリア機能等を持たないフラッシュメモリの領域である場合等である。また、図5のアドレス情報には、各領域の開始アドレス及び終了アドレスが含まれるとしたが、各領域が判別され得る構成であればよい。
また、上述した実施の形態は、DMA(Direct Memory Access)に対応したバスマスタに対しても適用可能である。バスマスタが追加される場合は、バスマスタが接続されるバスにデータ書込部112及びトレースRAM114を追加すればよい。
図32は、本実施の形態の変形例にかかる、バスマスタ410を有する半導体装置400を示す図である。図32は、図17に示した実施の形態2にかかる半導体装置200の変形例である半導体装置400を示しているが、他の実施の形態にかかる半導体装置にも、バスマスタを追加することは可能である。
バスマスタ410は、システムバス108に接続されている。バスマスタ410は、処理部110の機能と同様又は少なくともDMAに対応した転送動作を行うための機能を有する。バスマスタ410は、少なくとも処理制御部220からリセット信号Srsを受信し、処理制御部220及びデータ書込部112に対してバスマスタ410自身のエラー信号Serを出力するためのインタフェースを有する。そして、バスマスタ410の機能に応じて処理部110と同様の入出力インタフェースが追加され得る。バスマスタ410は、RAM102、フラッシュメモリ104及び周辺機能106それぞれの間のデータの転送を制御する。つまり、RAM102、フラッシュメモリ104及び周辺機能106は、バスマスタ410に対するスレーブである。例えば、バスマスタ410は、周辺機能106が有するレジスタのデータをRAM102に転送するように制御を行う。上述した実施の形態では、処理部110は、故障した処理部110のトレースRAM114に対して継続動作判定を実施している。一方、図32に示した変形例は、処理部110又はバスマスタ410が、自身がアクセスする領域があるスレーブのトレースRAM114に対して継続動作判定を実施する点で、上述した実施の形態とは異なる。
また、図32に示した例は、各データ書込部112には全ての処理部110及びバスマスタ410からエラー信号Serが入力される点で、上述した実施の形態と異なる。処理部110及びバスマスタ410からのエラー信号Serをデータ書込部112に入力することで、データ書込部112は、処理部110又はバスマスタ410のエラー発生後、処理部110又はバスマスタ410のエラー情報を含むパケット情報Ipkを生成する。図32に示した変形例では、データ書込部112はエラー情報を含むパケット情報IpkのみをトレースRAM114に書き込むことが望ましい。データ書込部112−1は、RAM102に接続されている。また、データ書込部112−2は、周辺機能106に接続されている。つまり、図32の例においては、データ書込部112は、スレーブ側に設けられている。ここで、フラッシュメモリ104は、故障した処理部110によって異常なデータで上書きされることがなく、FIFOのような機構又はリードクリア機能等を持たない。したがって、フラッシュメモリ104は、故障した処理部110による影響はなく、フラッシュメモリ104に関するパケット情報については継続処理等を行う必要はないので、フラッシュメモリ104にデータ書込部112を設ける必要はない。
なお、バスマスタ410においても情報の書き込み処理及び読み込み処理が行われるが、スレーブ側にデータ書込部112が設けられることでバスマスタ410における書き込み処理及び読み込み処理をトレースすることは可能である。したがって、バスマスタ410にデータ書込部112を設ける必要はない。このように構成することで、バスマスタ410の数が増加しても、データ書込部112及びトレースRAM114の数の増加を抑制できるので、半導体装置400の回路規模の増大を抑制することが可能となる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
1 半導体装置
10−1 第一処理部
10−2 第二処理部
12 書込部
14 記憶部
20 処理制御部
30 デコード部
100 半導体装置
102 RAM
104 フラッシュメモリ
106 周辺機能
108 システムバス
110 処理部
112 データ書込部
114 トレースRAM
120 処理制御部
200 半導体装置
220 処理制御部
300 半導体装置
310 デコード部
312 パケット情報判定部
314 処理部専用・共有アドレス格納部
320 処理制御部
330 デコード部
336 パケット情報切替部

Claims (16)

  1. 複数の処理部と、
    前記処理部の動作を制御する処理制御部と、
    記憶部と、
    前記複数の処理部それぞれの処理に関する第1の情報を、前記記憶部に書き込む書込部と
    を有し、
    前記複数の処理部のうちの第1の処理部にエラーが発生した場合に、前記処理制御部は、前記第1の処理部を停止するように制御を行い、
    前記第1の処理部にエラーが発生した場合に、前記記憶部に記憶された情報に基づいて、前記複数の処理部のうちの第2の処理部が継続して第1の処理を実行することが可能であると判定されたときに、前記第2の処理部は、前記第1の処理を継続して実行する
    半導体装置。
  2. 前記第2の処理部が前記第1の処理を継続して実行することが可能でないと判定されたときに、前記処理制御部は、前記半導体装置における予め定められた範囲の動作をリセットするように制御を行う
    請求項1に記載の半導体装置。
  3. 前記記憶部に記憶された情報を用いて、前記第1の処理部にエラーが発生したことによる影響がないと判定された場合に、前記第2の処理部は、前記第1の処理を継続して実行する
    請求項1に記載の半導体装置。
  4. 前記第1の処理は、前記第1の処理部にエラーが発生したときに前記第2の処理部が行っていた処理であり、
    前記第1の処理部にエラーが発生したときに前記記憶部に書き込まれた前記第1の情報を用いて、前記第1の情報に対応する処理に関するアドレスが、前記第2の処理部によって使用され得る記憶領域のアドレスの範囲内にないと判定された場合に、前記第2の処理部は、前記第1の処理を継続して実行する
    請求項3に記載の半導体装置。
  5. 前記第1の処理は、前記第1の処理部にエラーが発生したときに前記第1の処理部が行っていた処理であり、
    前記第1の処理部にエラーが発生したときに前記記憶部に書き込まれた前記第1の情報を用いて、前記第1の情報に対応する処理に関するアドレスが、前記第1の処理部によって使用され得る記憶領域のアドレスの範囲内にないと判定された場合に、前記第2の処理部は、前記第1の処理を継続して実行する
    請求項3に記載の半導体装置。
  6. 前記書込部は、前記第1の処理部にエラーが発生している場合に、前記第1の処理部にエラーが発生したことを示すエラーフラグを含む前記第1の情報を、前記記憶部に書き込み、
    前記エラーフラグを含む前記第1の情報を用いて、前記第2の処理部が継続して第1の処理を実行することが可能か否かの判定が行われる
    請求項1に記載の半導体装置。
  7. 前記書込部は、前記処理制御部によって前記第1の処理部が停止した場合に、前記第1の処理部が停止したことを示す停止フラグを含む前記第1の情報を、前記記憶部に書き込み、
    前記第1の処理部にエラーが発生したタイミングで書き込まれた前記第1の情報から、前記停止フラグを含む前記第1の情報までの間の前記エラーフラグを含む前記第1の情報について、前記第2の処理部が継続して第1の処理を実行することが可能か否かの判定が行われる
    請求項6に記載の半導体装置。
  8. 前記第2の処理部は、前記第2の処理部が前記第1の処理を継続して実行することが可能であるか否かを判定する
    請求項1に記載の半導体装置。
  9. 前記第2の処理部が継続して第1の処理を実行することが可能であるか否かの判定が終了した後、前記処理制御部は、前記第1の処理部を再実行するように制御を行う
    請求項1に記載の半導体装置。
  10. 前記処理制御部は、前記第1の処理部で発生したエラーの回数及びエラーの頻度の少なくとも一方に応じて、前記第1の処理部を再実行するか否かを制御する
    請求項9に記載の半導体装置。
  11. 前記第2の処理部が前記第1の処理を継続して実行することが可能であるか否かを判定するデコード部
    をさらに有する請求項1に記載の半導体装置。
  12. 前記デコード部は、前記複数の処理部それぞれについて設けられており、
    前記第1の処理部にエラーが発生した場合、前記第1の処理部について設けられた前記デコード部が、前記第2の処理部が前記第1の処理を継続して実行することが可能であるか否かを判定する
    請求項11に記載の半導体装置。
  13. 複数の処理部と、
    前記処理部の動作を制御する処理制御部と、
    前記複数の処理部のそれぞれに接続されたバスから、前記複数の処理部のうちの第1の処理部でなされた処理に関する第2の情報を取得して、前記第2の情報について処理を行うデコード部と
    を有し、
    前記第1の処理部にエラーが発生した場合に、前記処理制御部は、前記第1の処理部を停止するように制御を行い、
    前記デコード部は、前記第1の処理部にエラーが発生した場合に、前記第1の処理部に接続されたバスから取得された前記第2の情報に基づいて、前記複数の処理部のうちの第2の処理部が継続して第1の処理を実行することが可能であるか否かを判定し、
    前記第2の処理部が継続して前記第1の処理を実行することが可能であると判定された場合に、前記第2の処理部は、前記第1の処理を継続して実行する
    半導体装置。
  14. 前記デコード部は、
    前記第2の情報を用いて前記第2の処理部が前記第1の処理を継続して実行することが可能であるか否かを判定する複数の判定部と、
    前記第2の情報が更新されるごとに、前記第2の情報を出力する前記複数の判定部を切り替える
    請求項13に記載の半導体装置。
  15. 複数の処理部それぞれの処理に関する第1の情報を、記憶部に書き込み、
    前記複数の処理部のうちの第1の処理部にエラーが発生した場合に、前記第1の処理部を停止するように制御を行い、
    前記第1の処理部にエラーが発生した場合に、前記記憶部に記憶された情報に基づいて、前記複数の処理部のうちの第2の処理部が継続して第1の処理を実行することが可能であるか否かを判定し、
    前記第2の処理部が継続して第1の処理を実行することが可能であると判定されたときに、前記第2の処理部は、前記第1の処理を継続して実行する
    半導体装置の制御方法。
  16. 前記第2の処理部が前記第1の処理を継続して実行することが可能でないと判定されたときに、前記半導体装置における予め定められた範囲の動作をリセットするように制御を行う
    請求項15に記載の半導体装置の制御方法。
JP2016157656A 2016-08-10 2016-08-10 半導体装置及びその制御方法 Pending JP2018025983A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016157656A JP2018025983A (ja) 2016-08-10 2016-08-10 半導体装置及びその制御方法
US15/612,277 US10579487B2 (en) 2016-08-10 2017-06-02 Semiconductor device and control method thereof including a plurality of processing units
CN201710610987.2A CN107729189A (zh) 2016-08-10 2017-07-25 半导体器件及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016157656A JP2018025983A (ja) 2016-08-10 2016-08-10 半導体装置及びその制御方法

Publications (1)

Publication Number Publication Date
JP2018025983A true JP2018025983A (ja) 2018-02-15

Family

ID=61159118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016157656A Pending JP2018025983A (ja) 2016-08-10 2016-08-10 半導体装置及びその制御方法

Country Status (3)

Country Link
US (1) US10579487B2 (ja)
JP (1) JP2018025983A (ja)
CN (1) CN107729189A (ja)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US7275180B2 (en) * 2003-04-17 2007-09-25 International Business Machines Corporation Transparent replacement of a failing processor
US20140149783A1 (en) * 2004-06-01 2014-05-29 Ivan I. Georgiev Methods and apparatus facilitating access to storage among multiple computers
JP4831599B2 (ja) * 2005-06-28 2011-12-07 ルネサスエレクトロニクス株式会社 処理装置
US9342348B2 (en) * 2012-01-23 2016-05-17 Brocade Communications Systems, Inc. Transparent high availability for stateful services
JP2013225208A (ja) * 2012-04-20 2013-10-31 Toyota Motor Corp 情報処理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
CN107729189A (zh) 2018-02-23
US10579487B2 (en) 2020-03-03
US20180046557A1 (en) 2018-02-15

Similar Documents

Publication Publication Date Title
US8700835B2 (en) Computer system and abnormality detection circuit
JPH05197582A (ja) 動的再構成が可能な多数決システムを有するフォールト・トレラント処理装置
JPH0651802A (ja) バックアップ機能を有するプログラマブル・コントローラ
US10001999B2 (en) System and method for configuring a plurality of registers with soft error detection and low wiring complexity
JP2012113466A (ja) メモリコントローラ及び情報処理システム
JP2012038305A (ja) 周辺装置の設定情報のエラー検出を有するデータ処理システム
JP6312550B2 (ja) 半導体装置
JP6853162B2 (ja) 半導体装置
US20150286544A1 (en) Fault tolerance in a multi-core circuit
CN106708431B (zh) 一种存储数据的方法、装置、主机设备和存储设备
US20150277531A1 (en) Apparatus and method for controlling power consumption of devices performing communications between a processor and i/o devices
CN112667483B (zh) 用于服务器主板的内存信息读取装置、方法及服务器
JP6352627B2 (ja) コンピュータシステム及びその動作方法
CN103294638A (zh) 确定性高整体性多处理器片上系统
JP2018025983A (ja) 半導体装置及びその制御方法
US10228882B2 (en) Semiconductor device and memory access control method
US10324777B2 (en) Register-based communications interface
JP2016206891A (ja) アクセス遮断回路、半導体集積回路およびアクセス遮断方法
JP5987723B2 (ja) 通信用スレーブ
JP4322606B2 (ja) ウォッチドッグタイマ
JPWO2013168258A1 (ja) 待機冗長二重化装置
US20170269969A1 (en) Memory access control device, information processing system, memory access control method, and recording medium stored with program
KR102376396B1 (ko) 멀티 코어 프로세서 및 그것의 캐시 관리 방법
JP2000347758A (ja) 情報処理装置
JP7543574B2 (ja) 独立冗長タイマを使用したシステムオンチップタイマの故障検出および回復