(57)【要約】【課題】正常性が確保された経路を介してデータの退避を行うことができる半導体集積回路を提供すること【解決手段】本発明にかかる半導体集積回路は、ＣＰＵコア１２と、ＣＰＵコア１２の演算結果と、第１のサンプルデータとを保持する通常メモリ１４と、第１のサンプルデータと同一の第２のサンプルデータを保持するサンプルデータ格納メモリ２４と、通常メモリ１４から出力された第１のサンプルデータと、第１のサンプルデータが出力された経路と重複しない経路を介してサンプルデータ格納メモリ２４から出力された第２のサンプルデータとを比較するデータ比較判定器２６と、を備えＣＰＵコア１２は、第１のサンプルデータと第２のサンプルデータとが一致する場合に、演算結果を、第１のサンプルデータがデータ比較判定器２６に出力された経路と同じ経路を介してＣＰＵコア１２から退避させるものである。【選択図】図１
2012243205.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサの演算結果と、第１のサンプルデータとを保持する第１のメモリと、
前記第１のサンプルデータと同一の第２のサンプルデータを保持する第２のメモリと、
前記第１のメモリから出力された前記第１のサンプルデータと、前記第１のサンプルデータが出力された経路と重複しない経路を介して前記第２のメモリから出力された前記第２のサンプルデータとを比較するデータ比較判定部と、を備え
前記プロセッサは、
前記第１のサンプルデータと前記第２のサンプルデータとが一致する場合に、前記演算結果を、前記第１のサンプルデータが前記データ比較判定部に出力された経路と同じ経路を介して前記第１のメモリから退避させる、半導体集積回路。
【請求項２】
前記プロセッサと異なる比較用プロセッサと、
前記プロセッサにおける演算結果と、前記比較用プロセッサにおける演算結果とを比較する演算結果比較部と、をさらに備え、
前記データ比較判定部は、
前記演算結果比較部において、前記プロセッサにおける演算結果と、前記比較用プロセッサにおける演算結果とが異なると判定された場合に、前記第１のサンプルデータと、前記第２のサンプルデータとを比較する、請求項１記載の半導体集積回路。
【請求項３】
前記演算結果比較部において、前記プロセッサが通常動作している場合に、前記プロセッサにおける演算結果と、前記比較用プロセッサにおける演算結果とが異なると判定された場合に、
前記プロセッサは、
前記第１のメモリから前記データ比較判定部に対して、前記第１のサンプルデータを出力させる、請求項２記載の半導体集積回路。
【請求項４】
前記プロセッサの動作を切り替える動作制御部をさらに備え、
前記動作制御部は、
前記演算結果比較部において、前記プロセッサが通常動作している場合に、前記プロセッサにおける演算結果と、前記比較用プロセッサにおける演算結果とが異なると判定されると、通常動作をしている前記プロセッサを、前記第１のメモリから前記データ比較判定部に対して、前記第１のサンプルデータを出力させる経路故障判定動作に切り替える、請求項３記載の半導体集積回路。
【請求項５】
前記動作制御部は、
前記データ比較判定部において、前記第１のサンプルデータと前記第２のサンプルデータとが一致すると判定されると、前記経路故障判定動作をしているプロセッサを、前記演算結果を前記第１のメモリから退避メモリへ退避させる退避動作へ切り替える、請求項４記載の半導体集積回路。
【請求項６】
前記退避メモリは、不揮発性メモリである請求項５に記載の半導体集積回路。
【請求項７】
プロセッサと、前記プロセッサの演算結果と、第１のサンプルデータとを保持する第１のメモリと、前記第１のサンプルデータと同一の第２のサンプルデータを保持する第２のメモリと、を備える半導体集積回路のデータ退避方法であって、
前記第１のメモリから出力された前記第１のサンプルデータと、前記第１のサンプルデータが出力された経路と重複しない経路を介して前記第２のメモリから出力された前記第２のサンプルデータとを比較し、
前記第１のサンプルデータと前記第２のサンプルデータとが一致する場合に、前記演算結果を、前記第１のサンプルデータが出力された経路と同じ経路を介して前記第１のメモリから退避させる、データ退避方法。
【請求項８】
前記プロセッサにおける演算結果と、前記プロセッサと同一処理を実行する比較用プロセッサにおける演算結果とを比較し、
前記プロセッサにおける演算結果と、前記比較用プロセッサにおける演算結果とが異なると判定された場合に、前記第１のサンプルデータと、前記第２のサンプルデータとを比較する、請求項７記載のデータ退避方法。
【請求項９】
前記プロセッサが通常動作している場合に、前記プロセッサにおける演算結果と、前記比較用プロセッサにおける演算結果とが異なると判定された場合に、
前記第１のメモリから前記第１のサンプルデータを出力させる、請求項８記載のデータ退避方法。
【請求項１０】
前記プロセッサが通常動作している場合に、前記プロセッサにおける演算結果と、前記比較用プロセッサにおける演算結果とが異なると判定されると、通常動作をしている前記プロセッサを、前記第１のメモリから前記第１のサンプルデータを出力させる経路故障判定動作に切り替える、請求項９記載のデータ退避方法。
【請求項１１】
前記第１のサンプルデータと前記第２のサンプルデータとが一致すると判定されると、前記経路故障判定動作をしているプロセッサを、前記演算結果を前記第１のメモリから退避メモリへ退避させる退避動作へ切り替える、請求項１０記載のデータ退避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路及びデータ退避方法に関し、特にデータの退避経路の正常性を判定する半導体集積回路及びデータ退避方法に関する。
【背景技術】
【０００２】
近年、車載製品等の半導体集積回路には高い安全性を確保することが必要なため、信頼性向上の必要性が高まっている。これにより、自己診断機能を搭載した半導体集積回路が普及してきた。２０００年に機能安全規格ＩＥＣ ６１５０８（電気・電子・プログラマブル電子安全関連システムの機能安全）が発行され、欧州は、自動車に搭載するＥＣＵ レベルの機能安全認証の取得を義務付けている。そのため、ＭＣＵ（Micro Control Unit）は、ＩＥＣ６１５０８ ＳＩＬ３ のサポートを要求されており、ＣＰＵ（Central Processing Unit）の冗長化や自己診断機能の採用によるシステムの信頼性向上が必要とされている。
【０００３】
上記規格を満足するための自己診断方法として、次のような方法が普及している。２つのＣＰＵを搭載している半導体集積回路において、一方のＣＰＵをマスタＣＰＵ、もう一方のＣＰＵをチェック用ＣＰＵとする。このような半導体集積回路において、２つの演算結果を比較して半導体集積回路の故障有無等を診断する。
【０００４】
前記の自己診断方法を搭載した半導体集積回路において、物理的な故障ではない外的要因、例えばノイズや宇宙線の影響で発生したエラーにより、それぞれのＣＰＵの演算結果に不一致が発生した場合、半導体集積回路は、リセットされエラー発生直前からの動作を再開する故障延命手段を用いることが検討されている。
【０００５】
車載製品等の半導体集積回路は、半導体集積回路を搭載した自動車の動作中に自己診断による再起動が発生する場合がある。この場合、動作中のリセットから半導体集積回路の動作を再開するまでの時間を短くする必要がある。そのため、それぞれのＣＰＵの演算結果に不一致が発生した後に、ＣＰＵは、不一致が発生する直前のデータを不揮発性メモリに退避し、動作再開時に不揮発性メモリに退避していたデータを読み出し、読み出したデータを動作状態の設定に利用する方法が検討されている。ＣＰＵの演算結果の不一致発生後にデータを不揮発性メモリに退避するためには、半導体集積回路のデータ退避に関わる部分に故障がないことを判定する必要がある。さらに、２つのＣＰＵにおいて、故障延命手段を確実に実行できる技術が求められている。
【０００６】
特許文献１を用いて、故障延命手段が用いられている半導体集積回路の構成について説明する。具体的に、図７及び８を用いて、特許文献１に開示されている半導体集積回路の構成について説明する。
【０００７】
半導体集積回路は、ＣＰＵ１１０からデータバス１９０、２１０、２３０を経由して主記憶１７０へデータを出力し、ＣＰＵ１２０からデータバス２００、２２０、２４０を経由して主記憶１８０へデータを出力する。
【０００８】
通常処理では、ＣＰＵ１１０から主記憶１７０へ出力されるデータは、データバス１９０、２１０、２３０を経由する。ＣＰＵ１２０から主記憶１８０へ出力されるデータは、データバス２００、２２０、２４０を経由する。通常処理においては、これらの経路が標準となる。ＣＰＵ１１０、１２０は、データバスへデータを出力する毎にＣＰＵに内蔵している退避レジスタ１３０、１４０にデータを退避する。
【０００９】
比較器１６０は、処理ブロック３２０に示すように、ＣＰＵ１１０からデータバス１９０及び２１０へ出力されたデータと、ＣＰＵ１２０からデータバス２００及び２２０へ出力されたデータを、比較器１６０に内蔵された退避レジスタ２５０及び２６０に出力し、データの比較を行う。
【００１０】
比較器１６０において比較された結果、ＣＰＵ１１０とＣＰＵ１２０から出力されたデータが等しい場合、処理ブロック３２５に示すように、処理を継続する。比較器１６０において比較された結果、ＣＰＵ１１０とＣＰＵ１２０から出力されたデータが不一致である場合、処理ブロック３３０に示すように、比較器１６０は、ＣＰＵ１１０、１２０に対して、不一致の発生を通知するために不一致検出信号２７０、２８０を出力する。処理ブロック３４０に示すように、ＣＰＵ１１０、１２０は不一致検出信号２７０、２８０を検出すると同時に割込みを発生し、不一致検出割込みハンドラに処理を移す。不一致検出割込みハンドラは、処理ブロック３５０に示すように、一方のデータバスの接続を切断し、処理ブロック３６０に示すようにＣＰＵ１１０の退避レジスタ１３０のデータを出力する。
【００１１】
処理ブロック３７０に示すように、比較器１６０は、比較器１６０の退避レジスタ２５０とＣＰＵ１１０から出力された退避レジスタ１３０の値を比較する。
【００１２】
続けて、接続していたデータバスを切断し、切断していたデータバスを接続し、処理ブロック３７０に示すように、比較器１６０は、比較器１６０の退避レジスタ２５０とＣＰＵ１１０から出力された退避レジスタ１３０の値を比較する。比較した結果、二つのデータバスの処理結果がともに一致した場合、処理ブロック３８０に示すようにもう一方のＣＰＵに対して、同様の処理を行う。比較した結果、両方とも不一致な場合、処理ブロック４００に示すようにＣＰＵを停止し、もう一方のＣＰＵに対して、同様の処理を行う。比較した結果、どちらか一方が不一致だった場合、処理ブロック３９０に示すように不一致を検出したデータバスを切断し、もう一方のＣＰＵに対して、同様の処理を行う。
【００１３】
つまり、特許文献１に開示されている半導体集積回路は、２個のＣＰＵで構成されるシステムにおいて、比較器内の退避レジスタの値とデータバスを介してＣＰＵから出力された退避レジスタの値を比較することによって、データバスのエラーを検出し、エラーの発生したデータバスを切断し、エラーが発生していないデータバスを使用して処理を継続する。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平９−２７４６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかし、特許文献１に開示されている半導体集積回路においては、データバス１９０または、データバス２００にエラーが発生した場合、エラー箇所が断定されず継続処理となる。そのため、ＣＰＵからデータバス１９０またはデータバス２００を経由してメモリへ退避されるデータは、破損し、誤ったデータがメモリに格納される。その結果、不一致発生後に半導体集積回路がメモリに格納されたデータを用いて不一致発生直前からの動作を再開できず、信頼性を確保した上での故障延命が実現できないという問題点がある。
【００１６】
具体的には、図７において、例えばデータバス１９０にエラーがあった場合、比較器１６０は、ＣＰＵ１１０からデータバス１９０、データバス２１０を経由した退避レジスタ１３０の値と、エラー発生時にＣＰＵ１１０からデータバス１９０、データバス２１０を経由した退避レジスタ１３０の値を格納した退避レジスタ２５０の値を比較する。しかし比較結果は一致し、比較器１６０は、データバス１９０にエラーがないと誤判定する。理由は、退避レジスタ２５０の値は常に書き換わるため、データバス１９０がエラーとなった時点で退避レジスタ２５０に誤った値が格納され、データバス１９０、データバス２１０を経由した退避レジスタ１３０と同じ値となるためである。データバス１９０にエラーがあるにも関わらず、エラーがないと誤判定して動作を継続し、故障したデータバス１９０経由で主記憶装置１７０にデータを退避するため、主記憶装置１７０には、誤ったデータが格納される。
【課題を解決するための手段】
【００１７】
本発明の第１の態様にかかる半導体集積回路は、プロセッサと、前記プロセッサの演算結果と、第１のサンプルデータとを保持する第１のメモリと、前記第１のサンプルデータと同一の第２のサンプルデータを保持する第２のメモリと、前記第１のメモリから出力された前記第１のサンプルデータと、前記第１のサンプルデータが出力された経路と重複しない経路を介して前記第２のメモリから出力された前記第２のサンプルデータとを比較するデータ比較判定部と、を備え前記プロセッサは、前記第１のサンプルデータと前記第２のサンプルデータとが一致する場合に、前記演算結果を、前記第１のサンプルデータが前記データ比較判定部に出力された経路と同じ経路を介して前記第１のメモリから退避させるものである。
【００１８】
このような半導体集積回路を用いることにより、第１のメモリに格納されている演算結果は、第１のサンプルデータが出力された経路と同じ経路を介して退避される。そのため、データ比較判定部によって、第１のサンプルデータが出力された経路の正常性が確認された場合、演算結果も正常性が確認された経路を介して退避されるため、退避された演算結果の信頼性が向上する。
【００１９】
本発明の第２の態様にかかるデータ退避方法は、プロセッサと、前記プロセッサの演算結果と、第１のサンプルデータとを保持する第１のメモリと、前記第１のサンプルデータと同一の第２のサンプルデータを保持する第２のメモリと、を備える半導体集積回路のデータ退避方法であって、前記第１のメモリから出力された前記第１のサンプルデータと、前記第１のサンプルデータが出力された経路と重複しない経路を介して前記第２のメモリから出力された前記第２のサンプルデータとを比較し、前記第１のサンプルデータと前記第２のサンプルデータとが一致する場合に、前記演算結果を、前記第１のサンプルデータが出力された経路と同じ経路を介して前記第１のメモリから退避させるものである。
【００２０】
このようなデータ退避方法を用いることにより、第１のメモリに格納されている演算結果は、第１のサンプルデータが出力された経路と同じ経路を介して退避される。そのため、第１及び第２のサンプルデータの比較結果により、第１のサンプルデータが出力された経路の正常性が確認された場合、演算結果も正常性が確認された経路を介して退避されるため、退避された演算結果の信頼性が向上する。
【発明の効果】
【００２１】
本発明により、正常性が確保された経路を介してデータの退避を行うことができる半導体集積回路及びデータ退避方法を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】実施の形態１にかかるＣＰＵ搭載回路の構成図である。
【図２】実施の形態１にかかるＣＰＵ動作判定回路の構成図である。
【図３】実施の形態１にかかる通常動作停止処理のフローチャートである。
【図４】実施の形態１にかかる半導体集積回路のリセット処理のフローチャートである。
【図５】実施の形態１にかかる半導体集積回路のリセット後通常動作を開始する処理のフローチャートである。
【図６】実施の形態２にかかる通常動作停止処理のフローチャートである。
【図７】特許文献１にかかる半導体集積回路の構成図である。
【図８】特許文献１にかかる半導体集積回路の正常性判定処理のフローチャートである。
【発明を実施するための形態】
【００２３】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。はじめに、図１を用いて、本発明の実施の形態１にかかる半導体集積回路に含まれるＣＰＵ搭載回路１０の構成例について説明する。ＣＰＵ搭載回路１０は、ＣＰＵコア１１と、ＣＰＵコア１２と、演算結果比較回路１３と、通常メモリ１４とを備えている。また、ＣＰＵコア１１と、ＣＰＵコア１２と、演算結果比較回路１３とは、それぞれＣＰＵ動作判定回路２０と接続されている。
【００２４】
ＣＰＵコア１１及びＣＰＵコア１２は、プロセッサに含まれ、ＲＡＭ（Random Access Memory）またはＲＯＭ（Read Only Memory）等に格納されているプログラムに基づいてプログラム処理を実行する。ＣＰＵコア１１及びＣＰＵコア１２は、同一の処理を実行し、冗長に構成されている。そのため、ＣＰＵコア１１及びＣＰＵコア１２に故障等が発生していない場合、ＣＰＵコア１１及びＣＰＵコア１２は、同一の演算結果を出力する。ＣＰＵコア１１及びＣＰＵコア１２は、演算結果を演算結果比較回路１３へ出力する。さらに、ＣＰＵコア１２は、演算結果を通常メモリ１４へ出力する。
【００２５】
演算結果比較回路１３は、ＣＰＵコア１１から出力された演算結果と、ＣＰＵコア１２から出力された演算結果とを比較する。演算結果比較回路１３は、それぞれの演算結果が一致する場合、ＣＰＵコア１１及びＣＰＵコア１２は正常に動作していると判定する。演算結果比較回路１３は、それぞれの演算結果が一致しない場合、ＣＰＵコア１１又はＣＰＵコア１２のいずれかに故障又はエラーが発生していると判定し、演算結果の比較結果を演算結果比較回路１３へ出力する。
【００２６】
通常メモリ１４は、ＣＰＵコア１２からＣＰＵコア１２の通常動作時の演算結果を受け取り格納する。ＣＰＵコア１２における通常動作とは、例えば半導体集積回路が車載用であれば、車載の機能を実現するために実行される動作である。通常メモリ１４は、ＣＰＵコア１２から演算結果の退避処理を実行する旨の通知を受けた場合、格納している演算結果をＣＰＵコア１２へ出力する。ＣＰＵコア１２は、通常メモリ１４から受け取った演算結果をＣＰＵ動作判定回路２０へ出力する。通常メモリ１４は、ＣＰＵ搭載回路１０に搭載されているＲＡＭ等のメモリであってもよく、ＣＰＵ搭載回路１０の外部に接続されているハードディスク装置等の記憶装置であってもよい。
【００２７】
また、通常メモリ１４は、演算結果比較回路１３において、ＣＰＵコア１１及びＣＰＵコア１２のそれぞれの演算結果が一致していないと判定された場合に、ＣＰＵコア１２に対してサンプルデータを出力する。サンプルデータは、通常メモリ１４に格納されている演算結果を退避させる際に、退避経路に障害が発生しているか否かを判定する際に用いられる。サンプルデータは、ＣＰＵコア１１及びＣＰＵコア１２が通常動作を開始する際に、後述するサンプルデータ格納メモリ２４から出力され、通常メモリ１４に格納される。もしくは、サンプルデータは、ＣＰＵ搭載回路１０の製造時等に、あらかじめ通常メモリ１４に格納されてもよい。
【００２８】
ここで、ＣＰＵコア１１及びＣＰＵコア１２の動作モードについて説明する。ＣＰＵコア１１及びＣＰＵコア１２は、通常動作と、故障判定動作と、退避動作とを切り替えて動作する。通常動作は、上述したように、例えば半導体集積回路が車載用であれば、車載の機能を実現するために実行される動作である。故障判定動作は、通常メモリ１４に格納されている演算結果を退避する際に、退避経路に故障や、障害が発生しているか否かを判定する動作である。退避動作は、ＣＰＵコア１２が、通常メモリ１４に格納されているデータを不揮発性メモリ等へ退避させる動作である。
【００２９】
ＣＰＵコア１１及びＣＰＵコア１２は、ＣＰＵ動作判定回路２０の制御によって、通常動作と故障判定動作と退避動作とを切り替えられる。
【００３０】
図１においては、ＣＰＵコアが２つ搭載された回路の構成例について説明したが、ＣＰＵ搭載回路１０は、ＣＰＵコアを３つ以上搭載してもよい。
【００３１】
続いて、図２を用いて本発明の実施の形態１にかかる半導体集積回路に含まれるＣＰＵ動作判定回路２０の構成例について説明する。ＣＰＵ動作判定回路２０は、コード切替回路２１と、故障判定コード格納メモリ２２と、データ退避コード格納メモリ２３と、サンプルデータ格納メモリ２４と、動作制御回路２５と、データ比較判定器２６と、不揮発性メモリ２７と、を備えている。また、コード切替回路２１は、通常コード格納メモリ３０と接続されている。通常コード格納メモリ３０は、図２のようにＣＰＵ動作判定回路２０の外部に設けられてもよく、もしくはＣＰＵ動作判定回路２０の内部に設けられてもよい。
【００３２】
コード切替回路２１は、通常コード格納メモリ３０から出力される通常コードと、故障判定コード格納メモリ２２から出力される故障判定コードと、データ退避コード格納メモリ２３から出力されるデータ退避コードとのいずれかを選択する。コード切替回路２１は、選択したコードをＣＰＵコア１１及びＣＰＵコア１２へ出力し、ＣＰＵコア１１及びＣＰＵコア１２の動作を制御する。
【００３３】
コード切替回路２１は、演算結果比較回路１３から出力された比較結果又はデータ比較判定器２６から出力された比較結果に応じて、ＣＰＵコア１１又はＣＰＵコア１２へ出力するコードを選択する。コード切替回路２１は、演算結果比較回路１３から、ＣＰＵコア１１及びＣＰＵコア１２の演算結果が一致しないとの比較結果を含む信号（以下、演算比較結果信号と称する）を受け取った場合、故障判定コードを選択し、ＣＰＵコア１１及びＣＰＵコア１２の動作を通常動作から動作判定動作へ切り替える。また、コード切替回路２１は、データ比較判定器２６から、通常メモリ１４に格納されている演算結果を退避させる際の退避経路に障害は発生していないとの情報を受け取った場合、データ退避コードを選択し、ＣＰＵコア１１及びＣＰＵコア１２の動作を、動作判定動作からデータ退避動作へ切り替える。
【００３４】
動作制御回路２５は、ＣＰＵコア１１及びＣＰＵコア１２に対して割り込み信号を出力し、通常動作コードと、故障判定コードと、データ退避コードとを切り替える制御を行う。また、動作制御回路２５は、ＣＰＵコア１１及びＣＰＵコア１２の動作を停止させる制御も行う。動作制御回路２５は、演算結果比較回路１３から、ＣＰＵコア１１及びＣＰＵコア１２の演算結果が一致しないとの演算比較結果信号を受け取った場合、及び、データ比較判定器２６から、通常メモリ１４に格納されている演算結果を退避させる際の退避経路に障害は発生していないとの情報を受け取った場合に、ＣＰＵコア１１及びＣＰＵコア１２に対して割り込み信号を出力する。
【００３５】
データ比較判定器２６は、ＣＰＵコア１２から出力されるサンプルデータと、サンプルデータ格納メモリ２４に格納されているサンプルデータとを比較する。データ比較判定器２６は、ＣＰＵコア１２から出力されるサンプルデータと、サンプルデータ格納メモリ２４に格納されているサンプルデータとを、それぞれ重複しない経路を介して受け取る。
【００３６】
ＣＰＵコア１２は、コード切替回路２１から故障判定コードを受け取ると、通常メモリ１４に格納されているサンプルデータを抽出し、データ比較判定器２６へ出力する。データ比較判定器２６は、ＣＰＵコア１２から出力されるサンプルデータと、サンプルデータ格納メモリ２４に格納されているサンプルデータとを比較し、一致しているか否かを判定する。データ比較判定器２６は、ＣＰＵコア１２から出力されるサンプルデータと、サンプルデータ格納メモリ２４に格納されているサンプルデータとが一致していると判定した場合、一致していることを示す情報を含む信号（以下、データ比較結果信号と称する）をコード切替回路２１及び動作制御回路２５へ出力する。また、データ比較判定器２６においてＣＰＵコア１２から出力されるサンプルデータと、サンプルデータ格納メモリ２４に格納されているサンプルデータとが一致していないと判定された場合、ＣＰＵ搭載回路１０及びＣＰＵ動作判定回路２０を含む半導体集積回路はリセットされる。
【００３７】
また、データ比較判定器２６は、一致していることを示す情報を含むデータ比較結果信号をコード切替回路２１及び動作制御回路２５へ出力した後に、通常メモリ１４から、ＣＰＵコア１２を介してＣＰＵコア１２における演算結果を受け取る。通常メモリ１４から出力される演算結果は、通常メモリ１４に格納されているサンプルデータがデータ比較判定器２６へ出力された経路と同じ経路を介して、データ比較判定器２６へ出力される。
【００３８】
データ比較判定器２６が受け取る演算結果は、半導体集積回路がリセットされた後に、故障又はエラー発生直前からの動作を再開するために用いられる。データ比較判定器２６は、受け取った演算結果を不揮発性メモリ２７へ出力する。これにより、ＣＰＵコア１２は、通常メモリ１４に格納されている演算結果を不揮発性メモリ２７へ退避することができる。不揮発性メモリ２７へ退避されたデータは、半導体集積回路がリセットされた場合においても削除等されない。
【００３９】
続いて、図３を用いて本発明の実施の形態１にかかる通常動作停止処理の流れについて説明する。はじめに、ＣＰＵコア１１及びＣＰＵコア１２は、通常動作を行う（Ｓ１）。ＣＰＵコア１１及びＣＰＵコア１２は、通常動作を行っている間、それぞれの演算結果を演算結果比較回路１３へ出力する。
【００４０】
次に、演算結果比較回路１３は、ＣＰＵコア１１及びＣＰＵコア１２の演算結果を比較する（Ｓ２）。演算結果比較回路１３によってＣＰＵコア１１及びＣＰＵコア１２の演算結果が一致していると判定された場合、ステップＳ１に戻り、ＣＰＵコア１１及びＣＰＵコア１２は、通常動作を繰り返す。演算結果比較回路１３によってＣＰＵコア１１及びＣＰＵコア１２の演算結果が一致していないと判定された場合、つまり不一致と判定された場合、演算結果比較回路１３は、ＣＰＵコアの演算結果が不一致であるとの情報を含む信号（以下、演算結果不一致信号と称する）をコード切替回路２１及び動作制御回路２５へ出力する。動作制御回路２５は、演算結果不一致信号を受け取ると、ＣＰＵコア１１及びＣＰＵコア１２の通常動作を停止させる（Ｓ３）。
【００４１】
続いて、図４を用いて本発明の実施の形態１にかかる半導体集積回路のリセット処理の流れについて説明する。半導体集積回路のリセット処理は、図３における通常動作停止処理の後に行われる。はじめに、コード切替回路２１は、演算結果不一致信号を受け取ると、故障判定コードを選択し、ＣＰＵコア１１及びＣＰＵコア１２へ選択した故障判定コードを出力する（Ｓ１１）。次に、ＣＰＵコア１２は、故障判定コードを受け取ると、通常メモリ１４に格納されているサンプルデータを読み出し、データ比較判定器２６へ出力する（Ｓ１２）。ここで、例えば、ＣＰＵコア１２は、故障判定コードを受け取ると、サンプルデータの読み出し以外に、簡単なＣＰＵコア１２における演算を含ませることにより、ＣＰＵコア１２の動作確認範囲を広げることもできる。たとえば、サンプルデータが１６ビットのＡＡＡＡＨという値だった場合、サンプルデータを２倍に乗算し、１を加算することにより、５５５５Ｈという値になるか否かを確認する。これにより、ＣＰＵコア１２に含まれる乗算器及び加算器（図示せず）についても故障有無を判定することができる。
【００４２】
次に、データ比較判定器２６は、ＣＰＵコア１２から受け取ったサンプルデータと、サンプルデータ格納メモリ２４に格納されているサンプルデータとを比較する（Ｓ１３）。データ比較判定器２６は、比較結果を含む信号（以下、サンプルデータ比較結果信号と称する）をＣＰＵコア１２へ出力する。ＣＰＵコア１２が、比較結果が不一致であるサンプルデータ比較結果信号を受け取った場合、半導体集積回路はリセットされる（Ｓ１６）。半導体集積回路のリセットは、ＣＰＵコア１２が半導体集積回路のリセットを制御する機能を有し、ＣＰＵコア１２の制御により行われてもよい。もしくは、ＣＰＵコア１２とは異なる回路等において、リセット制御回路が設けられ、リセット制御回路の制御により、半導体集積回路のリセットが行われてもよい。
【００４３】
ＣＰＵコア１２は、比較結果が一致するとのサンプルデータ比較結果信号を受け取った場合、通常メモリ１４に格納されている退避対象データを読み出し、データ比較判定器２６へ出力する。データ比較判定器２６は、受け取った退避対象データを不揮発性メモリ２７へ出力する（Ｓ１４）。これにより、通常メモリ１４に格納されている退避対象データが、不揮発性メモリ２７へ退避される。
【００４４】
ここで、退避対象データとは、半導体集積回路をリセットした後に、動作再開までの時間を短縮するために、ＣＰＵコア１１及びＣＰＵコア１２に設定される演算結果である。ＣＰＵコア１１及びＣＰＵコア１２は、半導体集積回路がリセットされた後に、ＣＰＵコア１１及びＣＰＵコア１２の演算結果の不一致が発生する前にＣＰＵコア１２から出力された演算結果（退避対象データ）を設定する。
【００４５】
次に、ＣＰＵコア１１及びＣＰＵコア１２は、ＣＰＵコア１１及びＣＰＵコア１２のレジスタ等に格納されている不揮発性メモリ使用フラグの値を１にセットする（Ｓ１５）。次に、ＣＰＵコア１２又は、リセット制御回路等は、半導体集積回路のリセットを行う（Ｓ１６）。
【００４６】
続いて、図５を用いて本発明の実施の形態１にかかる半導体集積回路のリセット後通常動作を開始するまでの処理の流れについて説明する。はじめに、半導体集積回路がリセットされた後、ＣＰＵコア１１及びＣＰＵコア１２が起動され、ＣＰＵコア１１及びＣＰＵコア１２の動作が開始される（Ｓ２１）。
【００４７】
次に、ＣＰＵコア１２は、通常メモリ１４に対して、サンプルデータ格納メモリ２４に格納されているサンプルデータと同一のサンプルデータを書き込む（Ｓ２２）。ＣＰＵコア１２は、通常動作を行う場合に、通常コードを実行する。ここで、通常コードの最初もしくは２番目等の順番が早い命令において、サンプルデータの読み出しを規定することにより、ＣＰＵコア１２は、通常コードの実行とともに、サンプルデータ格納メモリ２４からサンプルデータを読み出す。ＣＰＵコア１２は、読み出したサンプルデータを通常メモリ１４へ格納する。もしくは、サンプルデータは、ＣＰＵ搭載回路１０の製造時等に、通常メモリ１４に予め書込まれていてもよい。
【００４８】
例えば、サンプルデータは、退避対象データ、つまり、ＣＰＵコア１２の演算結果と同じビット幅をもったデータとする。また、全ビットにおける０及び１両方の設定状態を保証するために、例えば退避対象データが１６ビットの場合は、５５５５Ｈ及びＡＡＡＡＨ等のように、データの全ビットの０及び１それぞれの状態を確認できるデータ２つを使用する。また、通常メモリ１４においてサンプルデータが書込まれるアドレスについても、退避対象データが格納されているアドレスと同じビット幅のアドレスの全ビットが確認できる番地が用いられる。たとえば、退避対象データが書込まれるアドレスが１６ビットの場合は、５５５５Ｈ番地及びＡＡＡＡＨ番地等にサンプルデータが書込まれる。
【００４９】
次に、ＣＰＵコア１１及びＣＰＵコア１２は、不揮発性メモリ使用フラグを確認する（Ｓ２３）。不揮発性メモリ使用フラグは、不揮発性メモリ２７に演算結果が退避されているか否かを示している。不揮発性メモリ使用フラグは、例えば、ＣＰＵコア１１及びＣＰＵコア１２のそれぞれのレジスタ等に格納されてもよい。不揮発性メモリ使用フラグの値が１の場合、ＣＰＵコア１１及びＣＰＵコア１２は、不揮発性メモリ２７から退避対象データを読み込む（Ｓ２４）。これにより、ＣＰＵコア１１及びＣＰＵコア１２は、半導体集積回路の内部状態を、リセット前のＣＰＵコア１１及びＣＰＵコア１２の演算結果不一致直前の状態に設定する。また、ＣＰＵコア１１及びＣＰＵコア１２は、不揮発性メモリ２７から退避対象データの読み込みを完了した後に、不揮発性メモリ使用フラグを０に設定し、通常動作を行う（Ｓ２５）。ステップＳ２３において、不揮発性メモリ使用フラグの値が０の場合、ＣＰＵコア１１及びＣＰＵコア１２は、不揮発性メモリ２７へアクセスせずに、通常動作を開始する（Ｓ２５）。
【００５０】
以上説明したように、本発明の実施の形態１にかかる半導体集積回路を用いることにより、ＣＰＵコア１１及びＣＰＵコア１２の演算結果を用いた自己診断を行うことができる。ＣＰＵコア１１及びＣＰＵコア１２の演算結果に不一致が発生した場合、ＣＰＵコア１２は、通常メモリ１４に格納されており、不一致が発生する前の演算結果をＣＰＵコア１２へ退避させる。ここで、予め通常メモリ１４に格納されているサンプルデータと、サンプルデータ格納メモリ２４に格納されているサンプルデータとを比較することにより、ＣＰＵコア１２から不揮発性メモリ２７へ退避させるデータの経路の故障の有無を判断することができる。これにより、経路に故障が無いと判断された場合、ＣＰＵコア１２は、不揮発性メモリ２７へ正しい演算結果を退避させることができる。
【００５１】
また、半導体集積回路のリセット後に、ＣＰＵコア１１及びＣＰＵコア１２は、不揮発性メモリ２７に退避されている演算結果を用いて、ＣＰＵコア１１及びＣＰＵコア１２の演算結果不一致発生直前からの動作を再開することにより、通常動作開始までの時間を短縮することができる。
【００５２】
（実施の形態２）
続いて、図６を用いて本発明の実施の形態２における通常動作停止処理の流れについて説明する。ステップＳ３１及び３２は、図３におけるステップＳ１及び２と同様であるため、詳細な説明を省略する。演算結果比較回路１３においてＣＰＵコア１１及びＣＰＵコア１２から出力される演算比較結果が不一致であると判定された場合（Ｓ３２）、ＣＰＵコア１２は、通常メモリ１４に対して格納すべきデータ、つまり、退避対象データの演算比較結果に不一致があるか否かを判定する（Ｓ３３）。
【００５３】
退避対象データは、例えば、ＲＡＭ又はＲＯＭ等に格納されているプログラムを実行した際の演算結果や、演算結果を格納する通常メモリ１４の格納先アドレス、通常メモリ１４に対するｒｅａｄ  ｅｎａｂｌｅ信号、通常メモリ１４に対するｗｒｉｔｅ  ｅｎａｂｌｅ信号等である。また、リセット後の動作再開のためのデータに限らず、ユーザ固有の使用方法に合わせて最適化された設定情報や、使用環境データとして温度、電圧設定情報等も、後の解析等で参照するために退避対象データとされてもよい。
【００５４】
また、退避対象外となるデータは、例えば、ＣＰＵコア１１及びＣＰＵコア１２に対する割り込み信号や、通常メモリ１４以外のメモリへアクセスする際のメモリアクセス信号等である。
【００５５】
ＣＰＵコア１２は、演算結果比較回路１３から出力される演算比較結果に基づいて、退避対象データの比較結果に不一致が発生しているか否かを判定する。ＣＰＵコア１２によって、退避対象データの比較結果が一致していると判定された場合、退避対象データは破損していないと推定される。そのため、演算結果比較回路１３は、ＣＰＵコアの演算結果が不一致であるとの情報を含む演算結果不一致信号をコード切替回路２１及び動作制御回路２５へ出力する。動作制御回路２５は、演算結果不一致信号を受け取ると、ＣＰＵコア１１及びＣＰＵコア１２の通常動作を停止させる（Ｓ３４）。その後、ＣＰＵコア１２は、破損していない退避対象データを不揮発性メモリ２７へ退避させる。
【００５６】
ＣＰＵコア１２によって、退避対象データの比較結果に不一致が発生していると判定された場合、退避対象データに破損が生じている可能性があるために、半導体集積回路はリセットされる（Ｓ３５）。つまり、破損が生じている可能性がある退避対象データを、半導体集積回路をリセットした後にＣＰＵコア１１及びＣＰＵコア１２に設定した場合、ＣＰＵコア１１及びＣＰＵコア１２は、故障発生前の状態に設定されず、通常動作を継続することができない。そのため、このような場合、退避対象データを不揮発性メモリ２７に退避させることなく、半導体集積回路はリセットされる。
【００５７】
以上説明したように、本発明の実施の形態２にかかる通常動作停止処理を用いることにより、不揮発性メモリ２７に退避されたデータの信頼性を向上させることができる。
【００５８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００５９】
１０  ＣＰＵ搭載回路
１１  ＣＰＵコア
１２  ＣＰＵコア
１３  演算結果比較回路
１４  通常メモリ
２０  ＣＰＵ動作判定回路
２１  コード切替回路
２２  故障判定コード格納メモリ
２３  データ退避コード格納メモリ
２４  サンプルデータ格納メモリ
２５  動作制御回路
２６  データ比較判定器
２７  不揮発性メモリ
３０  通常コード格納メモリ
【図１】
2012243205.tif 000003
【図２】
2012243205.tif 000004
【図３】
2012243205.tif 000005
【図４】
2012243205.tif 000006
【図５】
2012243205.tif 000007
【図６】
2012243205.tif 000008
【図７】
2012243205.tif 000009
【図８】
2012243205.tif 000010