(57)【要約】【課題】簡素、かつ、訂正可能な範囲が広く、リセットによるピーク電流が少ない、リトライ制御を用いた集積回路のエラー訂正技術を提供する。【解決手段】ＣＰＵ、リトライ制御部、周辺回路など、集積回路に含まれるモジュール内の任意のフリップフロップに発生するエラーを検出する回路から出力されるエラー検出信号をデコードする、高信頼化されたエラー判定リセット回路１１によって、各モジュールへのリセット信号および例外処理信号の出力方法を指定し、ピーク電流が少なく高速なリセット処理を行い、リトライ制御によってエラー発生前の命令から再実行することで、集積回路に発生したエラーを訂正する。【選択図】図１
2008146188.tif 000002
【特許請求の範囲】
【請求項１】
レジスタファイルを持ちパイプライン動作を行うＣＰＵと、周辺回路と、前記ＣＰＵおよび周辺回路内の任意のフリップフロップに発生したエラーを検出してエラー検出信号を出力するエラー検出回路を有する集積回路であって、
前記エラー検出信号をデコードして前記ＣＰＵに対して第１のリセット信号と第１の例外処理信号を出力し、前記周辺回路に対して第２のリセット信号と第２の例外処理信号を出力するエラー判定リセット回路を有することを特徴とする集積回路。
【請求項２】
請求項１に記載の集積回路において、
前記エラー判定リセット回路は多重構成により高信頼化されたことを特徴とする集積回路。
【請求項３】
請求項１または２に記載の集積回路において、
前記周辺回路として、前記ＣＰＵのエラーを検出すると命令を中止し、中止した前記命令のＮ（Ｎは整数）命令前のレジスタファイルの内容を保持する遅延レジスタファイルより前記レジスタファイルの内容を復帰させて前記ＣＰＵのリトライを行うリトライ制御部を有し、前記ＣＰＵでエラー発生時は前記エラー判定リセット回路から前記ＣＰＵに前記第１のリセット信号をアサートし、前記リトライ制御部に前記第２の例外処理信号をアサートし、前記リトライ制御部でエラー発生時は前記ＣＰＵに前記第１の例外処理信号をアサートし、前記リトライ制御部に前記第２のリセット信号をアサートすることを特徴とする集積回路。
【請求項４】
請求項１に記載の集積回路において、
前記エラー判定リセット回路には、前記ＣＰＵまたは前記周辺回路でエラー発生時に前記エラー判定リセット回路が前記ＣＰＵと前記周辺回路に出力する前記第１のリセット信号、前記第２のリセット信号、前記第１の例外処理信号、前記第２の例外処理信号のアサート条件を設定する制御レジスタを有することを特徴とする集積回路。
【請求項５】
請求項１に記載の集積回路において、
前記エラー判定リセット回路には、前記ＣＰＵまたは前記周辺回路でエラー発生時に前記エラー検出信号をデコードしたエラー情報として、前記集積回路の外部に出力するエラー情報ピンを有することを特徴とする集積回路。
【請求項６】
レジスタファイルを持ちパイプライン動作を行うＣＰＵや周辺回路の回路モジュールと、前記回路モジュール内の任意のフリップフロップに発生したエラーを検出してエラー検出信号を出力するエラー検出回路を有する集積回路であって、
前記エラー検出信号をデコードして前記回路モジュールに対してリセット信号を出力するエラー判定リセット回路と、前記集積回路の起動時にパワーオンリセット信号を出力するパワーオンリセット回路を有し、前記回路モジュール内の任意のフリップフロップは、パワーオンリセット時に初期化される第１のフリップフロップ群と、パワーオンリセット時に初期化されない第２のフリップフロップ群に分類され、前記回路モジュールに含まれる前記第１のフリップフロップ群には前記リセット信号と前記パワーオンリセット信号との論理和が第１のフリップフロップリセット信号として入力され、前記回路モジュールに含まれる前記第２のフリップフロップ群には前記第１のフリップフロップリセット信号と前記回路モジュールからのエラー検出信号との論理積が第２のフリップフロップリセット信号として入力されることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路のエラー訂正技術において、命令リトライによるＣＰＵのエラー訂正および集積回路のリセット方式に関するものである。
【背景技術】
【０００２】
自動車におけるエックス・バイ・ワイヤ（Ｘ−ｂｙ−Ｗｉｒｅ）技術や、より高速で安全な鉄道システムなど、電子機器による制御システムが必要不可欠な社会において、それらシステムの中核を成す集積回路に要求される事項の一つに、安全性を保障する高信頼化が挙げられる。このようなシステムに用いられる集積回路には中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、以下ＣＰＵと表記）が内蔵されることが多く、このＣＰＵはシステムの処理の中枢となるものであり、システムが正常かつ安全に動作するためには、ＣＰＵが誤動作なく確実に動作する必要がある。
【０００３】
しかしＣＰＵは宇宙線等の影響で、ＣＰＵに含まれるフリップフロップ（Ｆｌｉｐ−Ｆｌｏｐ、以下ＦＦと表記）等の記憶素子のビットデータが一時的に反転するエラーにより誤動作し、命令が正常に実行されないことがある。このエラーを訂正するために、ＣＰＵのバックアップ手段を備え、ＣＰＵにエラーが発生した時は集積回路をリセットさせ、バックアップ手段により命令をリトライして復帰させる手法が考案されている。更に、バックアップ手段に発生したエラーをも訂正する方式が検討されている。
【０００４】
例えば特許文献１では、ＣＰＵ内レジスタファイルの値を遅らせて保持するバックアップ用レジスタファイルを設け、バックアップ用レジスタファイルにエラーが発生した場合は、別の診断プロセッサがフラグ情報を使ってエラー箇所を判定して集積回路をリセットし、ＣＰＵ内レジスタファイルとバックアップ用レジスタファイルを復帰させる手法が提案されている。
【０００５】
また、動作中の集積回路にリセットをかけると、集積回路内に一度にピーク電流が流れることとなり電圧が不安定になって、エラーを訂正できずに誤作動に至る恐れもあるが、特許文献２では、集積回路内の各モジュールへのリセットタイミングをずらして順番にリセットさせ、ピーク電流を抑える手法が提案されている。
【特許文献１】特開平７−２１９７９６号公報
【特許文献２】特開２００５−１５７８８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、前記のようなエラー検出後のリトライによる訂正方法について、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００７】
特許文献１に開示されている技術では、バックアップ用の回路が故障したことを判定してＣＰＵ及びバックアップ部分を訂正するための診断プロセッサが別途必要になる。そのため、自動車など設置面積、コスト、消費電力などに制約のあるシステムへ適用することが困難である。また、集積回路内のＣＰＵとバックアップ用回路以外の故障については言及されておらず、様々な周辺回路をワンチップ上に組み込んだ集積回路全体のエラーをどのように訂正するかについては記載されていない。
【０００８】
また特許文献２に開示されている技術では、モジュール数の増大に比例してリセットが完了するまでの時間が延びるため、厳しいリアルタイム性が要求されるＸ−ｂｙ−Ｗｉｒｅ技術では、エラー訂正のために長いリセット期間を設けることが困難である。更に、通常のパワーオンリセットなどによるリセット手段では、リセットされるＦＦとリセットされないＦＦの２種類が存在することがあり、パワーオンリセットでリセットされないＦＦにエラーが発生した場合、そのエラーを検出してもパワーオンリセットではリセットされずにエラーが残り続ける可能性が考えられる。
【０００９】
そこで、本発明の目的は、上記課題を解決するために、簡素、かつ、訂正可能な範囲が広く、リセットによるピーク電流が少ない、リトライ制御を用いた集積回路のエラー訂正技術を提供することにある。
【００１０】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１２】
上記目的を達成するために、本発明では、レジスタファイルを持ちパイプライン動作を行うＣＰＵと、周辺回路と、前記ＣＰＵおよび周辺回路内の任意のフリップフロップに発生したエラーを検出してエラー検出信号を出力するエラー検出回路を有する集積回路であって、前記エラー検出信号をデコードして前記ＣＰＵに対して第１のリセット信号と第１の例外処理信号を出力し、前記周辺回路に対して第２のリセット信号と第２の例外処理信号を出力するエラー判定リセット回路を有すること、前記エラー判定リセット回路は多重構成などにより高信頼化されていること、また、周辺回路としてＣＰＵのエラーを検出すると命令を中止し、中止した前記命令のＮ（Ｎは整数）命令前のレジスタファイルの内容を保持する遅延レジスタファイルより前記レジスタファイルの内容を復帰させて前記ＣＰＵのリトライを行うリトライ制御部を有し、前記ＣＰＵでエラー発生時は前記エラー判定リセット回路から前記ＣＰＵに第１のリセット信号をアサートし、前記リトライ制御部に第２の例外処理信号をアサートし、前記リトライ制御部でエラー発生時は前記ＣＰＵに第１の例外処理信号をアサートし、前記リトライ制御部に第２のリセット信号をアサートすることによって、エラー訂正のためのリセット制御を行うこと、を特徴とするものである。
【００１３】
また更に、前記エラー判定リセット回路には、前記ＣＰＵまたは前記周辺回路でエラー発生時に前記エラー判定リセット回路が前記ＣＰＵと前記周辺回路に出力する前記第１のリセット信号、前記第２のリセット信号、前記第１の例外処理信号、前記第２の例外処理信号のアサート条件を設定する制御レジスタを有すること、前記ＣＰＵまたは前記周辺回路でエラー発生時に前記エラー検出信号をデコードしエラー情報として、集積回路の外部に出力するエラー情報ピンを有すること、を特徴とするものである。
【００１４】
また更に、レジスタファイルを持ちパイプライン動作を行うＣＰＵや周辺回路などの回路モジュールと、前記回路モジュール内の任意のフリップフロップに発生したエラーを検出してエラー検出信号を出力するエラー検出回路を有する集積回路であって、前記エラー検出信号をデコードして前記回路モジュールに対してリセット信号を出力するエラー判定リセット回路と、集積回路の起動時にパワーオンリセット信号を出力するパワーオンリセット回路を有し、前記回路モジュール内の任意のフリップフロップは、パワーオンリセット時に初期化される第１のフリップフロップ群と、パワーオンリセット時に初期化されない第２のフリップフロップ群に分類され、前記回路モジュールに含まれる前記第１のフリップフロップ群には前記リセット信号と前記パワーオンリセット信号との論理和が第１のフリップフロップリセット信号として入力され、前記回路モジュールに含まれる前記第２のフリップフロップ群には前記第１のフリップフロップリセット信号と前記回路モジュールからのエラー検出信号との論理積が第２のフリップフロップリセット信号として入力されることを特徴とするものである。
【００１５】
特に、前記エラー判定リセット回路と、レジスタファイルを持ちパイプライン動作を行うＣＰＵと、周辺回路と、前記ＣＰＵおよび周辺回路内の任意のフリップフロップに発生したエラーを検出するエラー検出回路と、前記エラー検出回路から出力されるエラー検出信号を、ワンチップの集積回路に収めたことを特徴とするものである。
【発明の効果】
【００１６】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１７】
本発明によれば、リトライ制御部エラー時はその後のエラーによる復帰ができなくなる可能性を無くし、周辺回路エラー時は周辺回路を正常な状態に初期化でき、集積回路のエラーに対する稼働率を向上させることができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には原則として同一の符号を付し、その繰り返しの説明は省略する。また以下では、特に断りの無い限り、信号値が“０”から“１”に変化することをアサート、“１”から“０”に変化することをネゲートと呼ぶ。
【００１９】
（実施の形態１）
図１は、本発明の実施の形態１における集積回路の一例を示したものである。
【００２０】
図１に示す集積回路には、パイプライン動作するＣＰＵ（１）、周辺回路（１２）、周辺回路（１３）、および多重化により高信頼化されたエラー判定リセット回路（１１）の各モジュールがある。ＣＰＵ（１）、周辺回路（１２）、周辺回路（１３）からは、宇宙線等の影響で内部の記憶素子のビットデータが反転したエラーを検出するＣＰＵエラー検出信号（３）、周辺エラー検出信号（５０）、（５３）が、それぞれ出力される。
【００２１】
エラー判定リセット回路（１１）は、ＣＰＵエラー検出信号（３）、周辺エラー検出信号（５０）、（５３）によりどのモジュールでエラーが発生したかを判断し、エラー発生箇所に応じて、エラー訂正を行うためのＣＰＵリセット信号（６１）、周辺リセット信号（６０）、（６３）、およびエラー例外信号（７７）、（７０）を制御して出力するものである。更に、エラー判定リセット回路（１１）内にエラーが発生した場合は自分自身で訂正ができるよう、三重化などによる多重化構造となっている。
【００２２】
図２に、この集積回路内にエラーが発生した時に、リセットと命令リトライにより集積回路の訂正を可能にする具体的な構成の例を示す。
【００２３】
ＣＰＵ（１）は、ＣＰＵバス（９）を介して命令のリード、およびデータのリード、ライトを行い、プログラムを実行する。なお、本実施の形態におけるＣＰＵ（１）は、命令を読み込むＩＦステージ、命令を解読するＤステージ、命令実行、およびＣＰＵバス上にアドレス出力を行うＥＸステージ、ＣＰＵバスへのライトデータ出力およびＣＰＵバスからのリードデータ入力を行うＭＡステージ、命令実行結果をレジスタへ書き戻すＷＢステージ、の５段パイプライン処理を行う。
【００２４】
リトライ制御部（２）は、集積回路を構成する周辺回路の一つであり、例えば、本発明者らが以前に出願した特願２００６−００６９２１号に記載されたエラー訂正方式によって実装できる。
【００２５】
リトライ制御部（２）は、ＩＦステージにある命令のアドレスを示すＰＣ（４）、ＩＦステージにある命令の命令コード（５）、ＷＢステージで書き戻し対象となるレジスタを指定するライト制御（６）、ＷＢステージでレジスタに書き戻すライトデータ（７）、リトライ例外ルーチンへの分岐を要求するためのリトライ例外信号（８）、ＣＰＵバス（９）、をＣＰＵ（１）から入出力し、リトライ制御を行う。
【００２６】
周辺回路（１３）は、ＣＰＵバス（９）を介してＣＰＵにより制御されるモジュールである。
【００２７】
ＣＰＵ（１）、リトライ制御部（２）、周辺回路（１３）にはそれぞれ、モジュール内で発生したエラーを検出するエラー検出回路（３０２５）、（３２）、（３３）が内蔵されており、モジュール内でエラーを検出した時にそれぞれＣＰＵエラー検出信号（３）、リトライ制御部エラー検出信号（５２）、周辺エラー検出信号（５３）の値を“１”にし、エラーが検出されずに正常動作している間は値を“０”にするものとする。これらのエラー検出回路は、例えば、本発明者らが以前に出願した特願２００６−０５１４７７号に記載された故障検出回路生成方法によって実装できる。
【００２８】
図３に、図２に示したエラー判定リセット回路（１１）の詳細な実装例を示す。
【００２９】
制御レジスタ（２１）、（２２）、（２３）は、それぞれ５ビットのレジスタであり、ＣＰＵで実行されるプログラムからアクセスして設定値を決めることができるものである。
【００３０】
エラー判定リセット回路（１１）に入力されたＣＰＵエラー検出信号（３）、リトライ制御部エラー検出信号（５２）、周辺エラー検出信号（５３）と、制御レジスタ（２１）、（２２）、（２３）から出力されたレジスタデータ（２４）、（２５）、（２６）は、それぞれＡＮＤゲート（４１）、（４２）、（４３）によって論理積がとられる。その結果、５ビットの制御信号（２７）、（２８）、（２９）が生成される。
【００３１】
制御信号（２７）は、ＣＰＵ（１）のＣＰＵエラー検出信号（３）とレジスタデータ（２４）の論理積であるため、ＣＰＵ（１）が正常動作中は５ビットとも“０”の値となり、ＣＰＵ（１）にエラーが発生してＣＰＵエラー検出信号（３）の値が“１”になるとレジスタデータ（２４）の値となる。
【００３２】
同様に、制御信号（２８）は、リトライ制御部（２）のリトライ制御部エラー検出信号（５２）とレジスタデータ（２５）の論理積であるため、リトライ制御部（２）が正常動作中は５ビットとも“０”の値となり、リトライ制御部（２）にエラーが発生してリトライ制御部エラー検出信号（５２）の値が“１”になるとレジスタデータ（２５）の値となる。更に制御信号（２９）は、周辺回路（１３）の周辺エラー検出信号（５３）とレジスタデータ（２６）の論理積であるため、周辺回路（１３）が正常動作中は５ビットとも“０”の値となり、周辺回路（１３）にエラーが発生して周辺エラー検出信号（５３）の値が“１”になるとレジスタデータ（２６）の値となる。
【００３３】
各制御信号（２７）、（２８）、（２９）の最下位ビット［０］同士をＯＲゲート（４４）にて論理和をとりＦＦ（８１）に入力し、ＣＰＵエラー例外信号（７２）として出力する。同様に図示したように、ビット［１］からビット［４］までをそれぞれＯＲゲートで論理和を取りＦＦに入力し、リトライ制御部エラー例外信号（７１）、周辺リセット信号（６３）、リトライ制御部リセット信号（６２）、ＣＰＵリセット信号（６１）を出力する。
【００３４】
ＯＲゲート（４９）は、ＣＰＵエラー検出信号（３）、リトライ制御部エラー検出信号（５２）、周辺エラー検出信号（５３）の論理和によりエラーが起こった時に“１”の値をエラー情報信号（７６）として出力し、集積回路外部の装置に知らせるものである。
【００３５】
図３ではエラー情報信号（７６）は１ビットとして示しているが、エラー検出信号をＯＲゲートでまとめずに別々に出力する構成としても良い。
【００３６】
図４の表に、図３で示した制御レジスタ（２１）、（２２）、（２３）の設定例を示す。
【００３７】
この設定では、エラーが無い場合と、ＣＰＵ（１）、リトライ制御部（２）、周辺回路（１３）のいずれかにエラーが発生した場合について記載している。
【００３８】
入力信号となるＣＰＵエラー検出信号（３）、リトライ制御部エラー検出信号（５２）、周辺エラー検出信号（５３）の値が全て“０”の時はエラー無しとなり、図３のＡＮＤゲート（４１）、（４２）、（４３）によって、出力信号の値は全て“０”となる。
【００３９】
エラーが起こった場合に、エラー判定リセット回路からの出力信号をどのように変化させるかは、集積回路の使用者が決定する。図４では、ＣＰＵ（１）にエラーが起こった場合は、ＣＰＵ（１）と周辺回路（１３）をリセットさせ、リトライ制御部（２）に例外処理をさせるため、５ビットの設定値“１０１０１”を制御レジスタ（２１）に設定する。リトライ制御部（２）にエラーが起こった場合は、リトライ制御部（２）をリセットさせ、ＣＰＵ（１）に例外処理を起こさせるため、５ビットの設定値“０１０１０”を制御レジスタ（２２）に設定する。周辺回路（１３）にエラーが起こった場合は、周辺回路（１３）をリセットさせるため、５ビットの設定値“００１００”を制御レジスタ（２３）に設定する。
【００４０】
つまり、図４の表のように制御レジスタの値を変えることで、各モジュールでエラーが発生した場合のリセット制御方法を柔軟に変更することができる。
【００４１】
なお、この例では集積回路に含まれるモジュールに与えるリセット信号と例外信号の数から制御レジスタを５ビットとして説明したが、リセット信号と例外信号の数に応じてビット数を増減させても良い。
【００４２】
図５は、リトライ制御部（２）の詳細な実装例である。
【００４３】
エラーマスク回路（２００１）は、ＰＣ（４）、命令コード（５）、ライト制御（６）、ライトデータ（７）のエラーをＣＰＵエラー例外信号（７２）を用いてマスクし、命令コード１（２０１０）、ＰＣ１（２０１１）、ライト制御１（２０１４）、ライトデータ１（２０１５）、にそれぞれ出力する。
【００４４】
命令キュー（２００３）は、命令コード１（２０１０）を遅延させ命令コード２（２０２２）を出力する。また命令キュー（２００３）は、ＰＣ１（２０１１）を遅延させＰＣ２（２０１３）を出力する。
【００４５】
ライトキュー（２００４）は、ライト制御１（２０１４）、ライトデータ１（２０１５）、を遅延させ、ライト制御２（２０１６）、ライトデータ２（２０１７）、にそれぞれ出力する。
【００４６】
遅延レジスタファイル（２００７）は、ＣＰＵの汎用レジスタや制御レジスタ、フラグレジスタ等を含むレジスタファイルのレプリカであり、リトライに備え過去のレジスタファイルの内容を保持する。遅延レジスタファイル（２００７）へは、ライト制御２（２０１６）が示すレジスタに、ライトデータ２（２０１７）のデータがライトされる。また、遅延レジスタファイル（２００７）からは、リード制御１（２０２０）が示すレジスタの内容がリードデータ１（２０２１）に、それぞれ読み出される。リトライ制御部リセット信号（６２）がアサートされると、遅延レジスタファイルは予め指定された値に初期化される。
【００４７】
リトライステートマシン（２００２）は、リトライ制御に必要なステートを保持し、各ステート間の遷移は、ＣＰＵエラー例外信号（７２）、命令コード２（２０２２）によって決定される。リトライ制御部リセット信号（６２）がアサートされた時は予め指定された初期状態に遷移する。また、リトライステートマシンのステートに対応して、リトライ例外信号（８）がアサートされる。
【００４８】
命令キュー（２００３）、遅延レジスタファイル（２００７）は、特定のアドレスにマッピングされ、ＣＰＵバス（９）とＣＰＵバスＩＦ（２００８）を介してＣＰＵからアクセスできる。命令キュー（２００３）からはＰＣ２（２０１３）を、遅延レジスタファイル（２００７）からは、任意のレジスタの内容を読み出すことができる。
【００４９】
エラー検出回路（３２）は、図５に破線で示した、各回路ブロックからのエラー検出信号（９１）、（９２）、（９３）、（９４）、（９５）、（９６）を論理和により集約したものをリトライ制御部エラー検出信号（５２）に出力するものである。この構成により、リトライ制御部エラー検出信号（５２）は、リトライ制御部（２）内に含まれる任意の回路ブロックのうちひとつでもエラーが発生した時に値が“１”となる。
【００５０】
図６は、ＣＰＵ（１）における、ＰＣ（４）、命令コード（５）、ライト制御（６）、ライトデータ（７）、ＣＰＵエラー検出信号（３）の出力部、およびエラーマスク回路（２００１）の詳細な実装例である。
【００５１】
ＦＦ（３００１）、ＦＦ（３００２）、ＦＦ（３００３）、ＦＦ（３００４）、からそれぞれ出力された信号１（３０１１）、信号２（３０１２）、信号３（３０１３）、信号４（３０１４）は、それぞれ組み合わせ回路ＣＬ１（３０２１）、ＣＬ２（３０２２）、ＣＬ３（３０２３）、ＣＬ４（３０２４）を経由してそれぞれ、ＰＣ（４）、命令コード（５）、ライト制御（６）、ライトデータ（７）、となる。
【００５２】
エラー検出回路（３０２５）は、ＦＦ（３００１）、ＦＦ（３００２）、ＦＦ（３００３）、ＦＦ（３００４）、およびＣＰＵ内の任意のＦＦ（３００５）の出力である、信号１（３０１１）、信号２（３０１２）、信号３（３０１３）、信号４（３０１４）、信号ｎ（３０１５）、をそれぞれ入力し、各信号のどれかひとつからでもエラーを検出したら、ＣＰＵエラー検出信号（３）の値が“１”になる。
【００５３】
例外処理ステートマシン（３５）は、リトライ制御部リセット信号（６２）とリトライ制御部エラー例外信号（７１）の値によって、予め決められた例外処理を行う回路である。
【００５４】
ＦＦ（３０３１）、ＦＦ（３０３２）、ＦＦ（３０３３）、ＦＦ（３０３４）は、それぞれＰＣ（４）、命令コード（５）、ライト制御（６）、ライトデータ（７）、を入力し、それぞれＰＣ０（３０４１）、命令コード０（３０４２）、ライト制御０（３０４３）、ライトデータ０（３０４４）を出力する。ＰＣ０（３０４１）、命令コード０（３０４２）、ライト制御０（３０４３）、ライトデータ０（３０４４）はそれぞれ、マスク論理Ｍ１（３０５１）、Ｍ２（３０５２）、Ｍ３（３０５３）、Ｍ４（３０５４）を経由して、ＰＣ１（２０１１）、命令コード１（２０１０）、ライト制御１（２０１４）、ライトデータ１（２０１５）となる。マスク論理Ｍ１（３０５１）、Ｍ２（３０５２）、Ｍ３（３０５３）、Ｍ４（３０５４）は、ＣＰＵエラー例外信号（７２）の値が“１”の時、ＰＣ１（２０１１）、命令コード１（２０１０）、ライト制御１（２０１４）、ライトデータ１（２０１５）をそれぞれ無効な値である“０”にする。例えば命令コード１（２０１０）は、ＣＰＵエラー例外信号（７２）の値が“１”の時、何も処理を行わないＮＯＰ（Ｎｏ  Ｏｐｅｒａｔｉｏｎ）命令に対応するコードに変換される。以上の構成にて、ＣＰＵからリトライ制御部へのエラー伝播を抑止し、リトライ制御部の誤動作を防止できる。
【００５５】
図７は、リトライステートマシン（２００２）のステート遷移図である。リトライステートマシン（２００２）は、初期化を示すＲＥＳＥＴステート（６０００）、ＣＰＵ（１）が通常の命令を実行中であること示すＮＯＲＭＡＬステート（６００１）、ＣＰＵ（１）がリトライ例外ルーチン処理中であることを示すＲＥＴＲＹステート（６００２）の３ステートからなる。リトライステートマシンの出力であるリトライ例外信号（８）の値は、ＲＥＳＥＴステート（６０００）とＮＯＲＭＡＬステート（６００１）では“０”、ＲＥＴＲＹステート（６００２）では“１”となる。
【００５６】
各ステート間の遷移条件として、まず、リトライ制御部リセット信号（６２）＝“１”の時は全てＲＥＳＥＴステート（６０００）へ遷移する。ＣＰＵエラー例外信号（７２）＝“１”の時、ＮＯＲＭＡＬステート（６００１）からＲＥＴＲＹステート（６００２）へ遷移し、命令コード２（２０２２）がＲＴＥ命令（例外ルーチンからの復帰命令）以外の時はＲＥＴＲＹステート（６００２）に留まり、ＲＴＥ命令の時はＮＯＲＭＡＬステート（６００１）へ遷移する。なお、リトライステートマシン（２００２）の初期ステートはＲＥＳＥＴステート（６０００）とする。
【００５７】
リトライステートマシン（２００２）がＲＥＴＲＹステート（６００２）の時、ＣＰＵ内の状態を正常に更新するためのリトライ例外ルーチンを実行する。
【００５８】
図８は、例外処理ステートマシン（３５）のステート遷移図である。例外処理ステートマシン（３５）は、初期化を示すＲＥＳＥＴステート（６１００）、リトライ制御部エラー例外処理が起こっていない状態を示すＮＯＲＭＡＬステート（６１０１）、リトライ制御部のリセット終了を待つＷＡＩＴステート（６１０２）、リトライ制御部（２）が復帰中であることを示すＲＥＣＯＶＥＲステート（６１０３）の、４ステートからなる。
【００５９】
各ステート間の遷移条件として、まず、ＣＰＵリセット信号（６１）＝“１”の時は全てＲＥＳＥＴステート（６１００）へ遷移する。ＮＯＲＭＡＬステート（６１０１）にて、リトライ制御部リセット信号（６２）＝“１”かつリトライ制御部エラー例外信号（７１）＝“１”の時、ＷＡＩＴステート（６１０２）へ遷移する。ＷＡＩＴステート（６１０２）にて、リトライ制御部リセット信号（６２）＝“１”のままである間はＷＡＩＴステート（６１０２）に留まるが、リトライ制御部リセット信号（６２）＝“０”になると、ＲＥＣＯＶＥＲステート（６１０３）へ遷移し、命令コード２（２０２２）がＲＴＥ命令以外の時はＲＥＣＯＶＥＲステート（６１０３）に留まり、ＲＴＥ命令の時はＮＯＲＭＡＬステート（６１０１）へ遷移する。なお、例外処理ステートマシン（３５）の初期ステートはＲＥＳＥＴステート（６１００）とする。
【００６０】
例外処理ステートマシン（３５）がＲＥＣＯＶＥＲステート（６１０２）の時、リトライ制御部内の状態を正常に更新するためのリトライ制御部エラー例外ルーチンを実行する。
【００６１】
図９は、命令キュー（２００３）の詳細図である。命令コード１（２０１０）は１段のＦＩＦＯ（７００２）によって遅延され、リトライステートマシン（２００２）のステート遷移用の命令コード２（２０２２）に出力される。また、ＰＣ１（２０１１）は４段のＦＩＦＯ（７００３）によって遅延され、ＰＣ２（２０１３）に出力される。ＦＩＦＯ（７００３）はリトライ例外信号（８）のアサートによって更新が抑止され、ネゲートによって全ての内容がクリアされる。
【００６２】
図１０は、ライトキュー（２００４）の詳細図である。ライト制御１（２０１４）、ライトデータ１（２０１５）、はそれぞれ１段のＦＩＦＯ（８００１）、（８００２）によって遅延され、ライト制御２（２０１６）、ライトデータ２（２０１７）、にそれぞれ出力される。ＦＩＦＯ（８００１）、（８００２）はリトライ例外信号（８）のアサートによって内容が無効化される。
【００６３】
図１１は、リトライ例外ルーチンのフローチャートである。最初に、ステップ（１００１）にて、ＰＣ２（２０１３）を読み出しスタックにプッシュする。次に、ステップ（１００２）にて遅延レジスタファイルの内容をＣＰＵ内レジスタファイルに転送する。最後に、ステップ（１００３）にてＲＴＥ命令にて例外処理から復帰する。ステップ（１００１）にて、ＰＣ２（２０１３）をスタックにプッシュしていることから、ＲＴＥ命令による戻り先はＰＣ２（２０１３）が示すアドレスとなる。
【００６４】
図１２は、リトライ制御部エラー例外ルーチンのフローチャートである。最初に、ステップ（１１０１）にて、現在のＰＣ（４）にある命令を実行する。次に、ステップ（１１０２）にてリトライ制御部リセット信号（６２）を監視し、ステップ（１１０３）にて、リトライ制御部のリセットが終了するまで待つ。リトライ制御部のリセット終了後、ステップ（１１０４）にて、現在実行した次の命令であるＰＣ＋４を読み出しスタックにプッシュする。次に、ステップ（１１０５）にてＣＰＵ内レジスタファイルの中身を遅延レジスタファイルに転送する。最後に、ステップ（１１０６）にてＲＴＥ命令にて例外処理から復帰する。ステップ（１１０４）にて、ＰＣ＋４をスタックにプッシュしていることから、ＲＴＥ命令による戻り先はリトライ制御部エラー例外ルーチンの実行前に最後に実行されたアドレスの次のアドレスとなる。
【００６５】
図１３は、以上説明した本発明の実施の形態１におけるリセットとリトライ動作例の一例を示す波形図であり、上段から順にＣＰＵのパイプライン動作、リトライ制御部状態、エラー判定リセット回路の入出力信号、ステートマシンの状態を示す。
【００６６】
まず、サイクル１〜６まで正常に命令が進み、命令コード、命令コード１、命令コード２、ＰＣ、ＰＣ１、ＰＣ２、ライト制御、ライト制御１、ライト制御２、ライトデータ、ライトデータ１、ライトデータ２、遅延レジスタファイル、の各内容が更新されていく。
【００６７】
なお、図１３中のこれらの信号、および状態の表記は、命令番号に対応させている。命令コード、命令コード１、命令コード２、では、“１”は命令１の命令コードを示している。また、ＰＣ、ＰＣ１、ＰＣ２、では、“１”は命令１に対応したＰＣ、すなわち命令１のアドレスを示している。また、ライト制御、ライト制御１、ライト制御２、では、“１”は命令１のライトバック対象のレジスタ番号を示している。また、ライトデータ、ライトデータ１、ライトデータ２、では、“１”は命令のレジスタへのライトバックデータを示す。また、遅延レジスタファイルでは、“１”は命令１の実行完了後のレジスタ内容が格納されていることを示す。
【００６８】
次に、サイクル７にて、ＣＰＵ内に含まれるあるＦＦにエラーが発生し、ＣＰＵエラー検出信号がアサートされる。ここで、エラーにより誤動作の可能性があるパイプラインステージをハッチングで示している。
【００６９】
次に、サイクル８にて、ＣＰＵリセット信号、周辺リセット信号、ＣＰＵエラー例外信号がアサートされる。同サイクルで、ＣＰＵエラー例外信号のアサートにより、リトライステートマシンがＮＯＲＭＡＬステートからＲＥＳＥＴステートに遷移し、リトライ例外信号がアサートされる。また同サイクルで、例外処理ステートマシンがＮＯＲＭＡＬステートからＲＥＳＥＴステートに遷移する。また、ＣＰＵはＣＰＵエラー例外信号のアサートを受け、命令７を中止し、リトライ例外ルーチンへと分岐する。なお、本実施の形態におけるＣＰＵは、リトライ例外がアサートされた時にパイプラインのＤステージにある命令を中止し、例外ルーチンに分岐する。さらに、リトライ例外は最優先例外とし、リトライ例外処理中は、リトライ例外を含むすべての例外を受け付けない。
【００７０】
次に、サイクルｍからリトライ例外ルーチンが開始され、図１１にて説明した処理を実行する。リトライ例外ルーチンでは、ＰＣ２から命令３のアドレスを読み出し、それをスタックにプッシュし、ＣＰＵ内レジスタファイルには、遅延レジスタファイルに格納されている命令２の実行完了状態の内容が転送される。
【００７１】
このＣＰＵのリセットとリトライ例外ルーチンにより、ＣＰＵ内に発生したエラーが取り除かれ、エラー発生前の状態に訂正されたことになる。
【００７２】
次に、サイクルｎにて、例外処理ルーチンから復帰する命令であるＲＴＥ命令が読み出される。サイクルｎ＋２にて命令コード２にＲＴＥの命令コードが出力され、リトライステートマシンがＲＥＴＲＹステートからＮＯＲＭＡＬステートに遷移する。
【００７３】
次に、ＲＴＥ命令の実行を受けたことにより、サイクルｏにて、命令３から命令を再実行する。
【００７４】
図１３に説明した通り、ＣＰＵにエラーが発生したことを検出してＣＰＵと周辺回路のみをリセットさせ、ＣＰＵレジスタの内容をエラーにより誤動作する可能性がある命令範囲より以前の命令実行完了状態に復帰させ、エラーにより誤動作した可能性がある命令範囲の先頭から命令をリトライし、集積回路のエラーを訂正することができる。
【００７５】
図１４は、リトライ制御部にエラーが発生した場合の動作の一例を示す波形図である。
【００７６】
図１３と同様に、まずサイクル１〜６まで正常に命令が進んでいく。
【００７７】
次に、サイクル７にて、リトライ制御部内に含まれるあるＦＦにエラーが発生し、リトライステートマシンが不正な状態となり、リトライ制御部エラー検出信号がアサートされる。ここで、エラーにより不正となったステートをハッチングで示している。
【００７８】
次に、サイクル８にて、リトライ制御部リセット信号、リトライ制御部エラー例外信号がアサートされる。同サイクルで、リトライ制御部リセット信号のアサートにより、リトライステートマシンがＮＯＲＭＡＬステートからＲＥＳＥＴステートに遷移し、遅延レジスタファイルもリセットされる。また同サイクルで、例外処理ステートマシンがＮＯＲＭＡＬステートからＷＡＩＴステートに遷移する。
【００７９】
サイクル９にて、リトライ制御部リセット信号のネゲートを受け、例外処理ステートマシンがＷＡＩＴステートからＲＥＣＯＶＥＲステートに遷移する。なお、本実施の形態におけるＣＰＵは、例外処理ステートマシンがＲＥＣＯＶＥＲステートに遷移したことにより、命令７の実行を待ってから、リトライ制御部エラー例外ルーチンへと分岐する。
【００８０】
次に、サイクルｘからリトライ制御部エラー例外ルーチンが開始され、図１２にて説明した処理を実行する。リトライ制御部エラー例外ルーチンでは、リトライ制御部のリセット終了後、ＣＰＵ内レジスタファイルの内容が遅延レジスタファイルに転送される。ここでは、リトライ制御部エラー例外ルーチンで実行されるサイクルｘからｙの間のＣＰＵ内レジスタファイルの値が遅延レジスタファイルに転送されることになる。
【００８１】
このリトライ制御部のリセットとリトライ制御部エラー例外ルーチンにより、リトライ制御部内に発生したエラーが取り除かれ、遅延レジスタファイルに正しいＣＰＵ内レジスタファイルの値が転送され、正常な状態に更新されたことになる。
【００８２】
次に、サイクルｙにて、例外処理ルーチンから復帰する命令であるＲＴＥ命令が読み出される。サイクルｙ＋２にて命令コード２にＲＴＥの命令コードが出力され、リトライステートマシンがＲＥＴＲＹステートからＮＯＲＭＡＬステートに遷移する。
【００８３】
次に、ＲＴＥ命令の実行を受けたことにより、サイクルｚにて、命令８から命令を実行する。
【００８４】
図１４に説明した通り、リトライ制御部にエラーが発生したことを検出してリトライ制御部のみをリセットさせ、遅延レジスタファイルの内容を正しい状態に更新させ、集積回路のエラーを訂正することができる。
【００８５】
図１５は、リトライ制御部以外の周辺回路にエラーが発生した場合の動作の一例を示す波形図である。
【００８６】
なお、この周辺回路は、内部に制御レジスタなどを特に持たず、エラー発生時にリセットを行えば正常な初期状態に戻る回路であり、エラーが発生してもＣＰＵやリトライ制御部に影響を与えず、集積回路が致命的な状態にならない回路を想定している。
【００８７】
図１３、図１４と同様に、まずサイクル１〜６まで正常に命令が進んでいく。
【００８８】
次に、サイクル７にて、周辺回路内に含まれるあるＦＦにエラーが発生し、周辺エラー検出信号がアサートされる。
【００８９】
次に、サイクル８にて、周辺リセット信号がアサートされる。これにより、周辺回路は正常な初期状態となり、エラーが訂正される。
【００９０】
次に、サイクル１０にて周辺回路のエラーが取り除かれたことを受け、周辺エラー検出信号がネゲートされ、続くサイクル１１にて周辺リセット信号がネゲートされる。
【００９１】
この周辺回路は、ＣＰＵやリトライ制御部とは異なり、エラーが発生してもＣＰＵやリトライ制御部に影響を与えないため、ＣＰＵは通常の命令を実行し続け、リトライ制御部のリトライステートマシンはＮＯＲＭＡＬステートのままである。
【００９２】
図１５に説明した通り、周辺回路にエラーが発生したことを検出して周辺回路のみをリセットさせ、集積回路のエラーを訂正することができる。
【００９３】
これらのことにより、集積回路に含まれるＣＰＵ、リトライ制御部、周辺回路の任意のエラーを検出し、ＣＰＵエラー時は誤動作する可能性がある命令範囲より以前の命令実行完了状態に復帰させ、エラーにより誤動作した可能性がある命令範囲の先頭から命令をリトライすることが可能となる。更にリトライ制御部エラー時はその後のＣＰＵエラーによる訂正が不可能となる可能性を無くすことができる。また更に周辺回路エラー時は周辺回路を正常な状態に訂正でき、集積回路のエラーに対する稼働率を向上させることができる。
【００９４】
更に、エラー判定リセット回路内の制御レジスタの値を変化させることで、エラー発生時に一度に全てのモジュールをリセットするのではなく、選択したモジュールのみリセットすることで、エラー訂正のためのリセットに要するピーク電流の削減と短いリセット期間の両立を可能とし、リトライ制御を素早く確実に行うことができる。
【００９５】
また更に、エラー判定リセット回路は、図示したように少数の制御レジスタ、ゲート、ＦＦで構成され非常に回路規模が小さいため、三重化などによる多重化構成によって高信頼性を確保しても非常に低コストで済み、エラー判定リセット回路に発生するエラーはエラー判定リセット回路自身で訂正が可能となる。
【００９６】
また更に、エラー判定リセット回路の高信頼化については、多重化による手法ではなく、パリティや誤り訂正符号などの故障検出、故障訂正手法を用いても良い。
【００９７】
また更に、エラー判定リセット回路に設けたエラー情報を出力するピンにより、エラーが起こった時にその情報を外部装置で受信することができるので、例えば、集積回路で動作しているプログラムが通常ルーチンとは異なる動作をした場合に、それがどの部位のエラーの影響によるものかどうかを容易に判定でき、システムのデバッグや保守の効率を向上させることができる。
【００９８】
（実施の形態２）
図１６は、本発明の実施の形態２における集積回路の一例を示したものである。
【００９９】
図１６に示す集積回路のＣＰＵ（１）には、ＣＰＵ動作を制御するＦＦ（１０１）、（１０２）、（１０３）、（１０４）があり、これらのＦＦに発生するエラーを検出するため、パリティ（２０１）、（２０２）、（２０３）、（２０４）がそれぞれのＦＦに付加されている。パリティによるエラー検出信号はＯＲゲート（２１１）によって論理和がとられ、ＣＰＵエラー検出信号（３）となる。
【０１００】
なお、このパリティによるエラー検出は、例えば、本発明者らが以前に出願した特願２００６−０５１４７７号に記載された故障検出回路生成方法によって実装できる。
【０１０１】
また、ＦＦのエラー検出にはパリティではなく、誤り訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ、以下ＥＣＣと表記）や巡回冗長検査（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ、以下ＣＲＣと表記）など別の符号化手法を用いたり、ＦＦを多重化して比較するなどの検出手法を用いたりしてもよい。
【０１０２】
ここで、ＦＦ（１０１）、ＦＦ（１０２）は集積回路起動時のパワーオンリセットにより初期化を行うＦＦであり、ＦＦ（１０３）、ＦＦ（１０４）は、パワーオンリセットによる初期化が不要なＦＦであることが集積回路の仕様として予め決まっているものとする。
【０１０３】
周辺回路（１３）には、周辺回路の動作を制御するＦＦ（１０５）、（１０６）があり、これらＦＦのエラーを検出するため、パリティ（２０５）、（２０６）がそれぞれのＦＦに付加されている。パリティによるエラー検出信号はＯＲゲート（２１３）によって論理和がとられ、周辺エラー検出信号（５３）となる。
【０１０４】
ここで、ＦＦ（１０５）は集積回路起動時のパワーオンリセットにより初期化を行うＦＦであり、ＦＦ（１０６）は、パワーオンリセットによる初期化が不要なＦＦであることが、集積回路の仕様として予め決まっているものとする。
【０１０５】
エラー判定リセット回路（１１）は、実施の形態１で説明したように、ＣＰＵエラー検出信号（３）と周辺エラー検出信号（５３）を入力とし、ＣＰＵリセット信号（６１）、周辺リセット信号（６３）を出力する。
【０１０６】
パワーオンリセット回路（１５）は、起動スイッチ（１６）からの起動信号（３０３）のアサートを受けてパワーオンリセット信号（６４）をアサートする回路である。
【０１０７】
ここで、ＯＲゲート（２１５）により、ＦＦリセット信号（６５）は、ＣＰＵ（１）にエラーが発生したことによってアサートされるＣＰＵリセット信号（６１）またはパワーオンリセット信号（６４）のいずれかがアサートされた時に値が“１”となる。更に、ＦＦリセット信号（３０１）は、ＡＮＤゲート（２１２）により、ＦＦリセット信号（６５）とＣＰＵエラー検出信号（３）の両方がアサートされた時に値が“１”となる。つまり、ＦＦ（１０１）とＦＦ（１０２）は、パワーオンリセット信号（６４）アサート時とＣＰＵエラーによるＣＰＵリセット信号（６１）アサート時のいずれの時もリセットが行われる。一方、ＦＦ（１０３）とＦＦ（１０４）は、ＣＰＵのエラーによるＣＰＵエラー検出信号（３）アサート時かつＣＰＵリセット信号（６１）アサート時しかリセットされない。
【０１０８】
同様にＯＲゲート（２１６）により、ＦＦリセット信号（６６）は、周辺回路（１３）にエラーが発生したことによってアサートされる周辺リセット信号（６３）またはパワーオンリセット信号（６４）のいずれかがアサートされた時に値が“１”となる。更に、ＦＦリセット信号（３０２）は、ＡＮＤゲート（２１４）により、ＦＦリセット信号（６６）と周辺エラー検出信号（５３）の両方がアサートされた時に値が“１”となる。つまり、ＦＦ（１０５）は、パワーオンリセット信号（６４）アサート時と周辺回路エラーによる周辺リセット信号（６３）アサート時のいずれの時もリセットが行われる。一方、ＦＦ（１０６）は、周辺回路のエラーによる周辺エラー検出信号（５３）アサート時かつ周辺リセット信号（６３）アサート時しかリセットされない。
【０１０９】
すなわち、図１６では、集積回路内でエラーが起こったモジュールおよび関連するモジュールをリセットする場合、各モジュールに含まれる全てのＦＦをリセットするのはエラーが起こったモジュールだけで良く、エラーの起こっていない他のモジュールはパワーオンリセットを流用し、設計者によって設計時に選択されたＦＦのみをリセットすれば良いことを示している。
【０１１０】
これらのことにより、エラーが起こったモジュールについてはモジュール内に含まれる全てのＦＦをリセットし、エラーが起こっていないモジュールについては選択されたＦＦのみリセットすることで、エラー訂正のためのリセットに要するピーク電流の削減が可能となり、集積回路の電圧が不安定となる可能性を無くし、ピーク電流の影響による誤作動を無くすことができる。
【０１１１】
（実施の形態３）
本発明における、低コスト、高信頼性を実現する集積回路は、様々なシステムへ組み込んで利用することが可能である。
【０１１２】
一例として、図１７に、本発明における低コスト、高信頼性を実現する集積回路を自動車システムに適用する場合の事例を説明する。
【０１１３】
図１７の自動車（５０１）は、前輪（５０２）、（５０３）、後輪（５０４）、（５０５）、アクセルペダル（５０６）、ブレーキペダル（５０７）、ハンドル（５０８）、エンジン（５１０）などの機器と、電子制御ユニット（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ、以下ＥＣＵと表記）として、エンジンＥＣＵ（５２１）、ブレーキＥＣＵ（５２２）、（５２３）、（５２４）、（５２５）、ステアＥＣＵ（５２６）、（５２７）、統合ＥＣＵ（５２８）を有しており、各ＥＣＵは車載ネットワーク（５０９）を介して相互に接続されている。
【０１１４】
この自動車（５０１）は、アクセルペダル（５０６）からのアクセル制御信号（５５１）によってエンジンＥＣＵ（５２１）を制御し、エンジン（５１０）を動作させ、前輪（５０２）、（５０３）を回転させることで走行する。このエンジンＥＣＵ（５２１）を制御するのは、内蔵された集積回路（５３１）である。
【０１１５】
また自動車（５０１）は、ハンドル（５０８）からのステア制御信号（５５３）によってステアＥＣＵ（５２６）、（５２７）を制御し、前輪（５０２）、（５０３）の角度を変化させることで進行方向が変わる。これらステアＥＣＵ（５２６）、（５２７）を制御するのは、内蔵された集積回路（５３６）、（５３７）である。
【０１１６】
また自動車（５０１）は、ブレーキペダル（５０７）からのブレーキ制御信号（５５２）によってブレーキＥＣＵ（５２２）、（５２３）、（５２４）、（５２５）を制御し、前輪（５０２）、（５０３）および後輪（５０４）、（５０５）の回転を止めることで、自動車（５０１）を停止する。これらブレーキＥＣＵ（５２２）、（５２３）、（５２４）、（５２５）を制御するのは、内蔵された集積回路（５３２）、（５３３）、（５３４）、（５３５）である。
【０１１７】
各ＥＣＵに内蔵された集積回路は、実施の形態１および実施の形態２で説明したように、集積回路内でエラーが発生しても訂正が可能なため、各ＥＣＵは高い稼働率をもって自動車（５０１）を正常に動作させ続けることができる。
【０１１８】
しかし、集積回路内に一時的なエラーではなく、恒久的な故障が発生した場合は、リトライ制御を行っても訂正ができない。
【０１１９】
そこで、統合ＥＣＵ（５２８）は、このような恒久的な集積回路の故障時でも、自動車（５０１）の安全性を確保するために使用される。統合ＥＣＵ（５２８）では、各ＥＣＵからのエラー情報信号（５４１）、（５４２）、（５４３）、（５４４）、（５４５）、（５４６）、（５４７）を受け取って集積回路（５３８）で処理し、その結果、非常ブレーキ信号を車載ネットワーク（５０９）に転送する。このとき、例えばステアＥＣＵ（５２６）に故障が発生した場合は、ブレーキＥＣＵ（５２２）、（５２３）、（５２４）、（５２５）に停止命令を送り、前輪（５０２）、（５０３）、後輪（５０４）、（５０５）の回転を止めて自動車（５０１）を緊急停止させることで、操舵不能などによる自動車事故を防ぐことができる。また別の例として、ブレーキＥＣＵ（５２４）に故障が発生した場合は、ブレーキＥＣＵ（５２４）に停止命令を送っても停止できない可能性があり、残り３つのブレーキＥＣＵ（５２５）、（５２２）、（５２３）だけ停止させようとすると、かえって自動車（５０１）が左に旋回するなど、操舵が乱れる可能性が考えられるため、この場合は車載ネットワーク（５０９）を介してステアＥＣＵ（５２６）、（５２７）に対し、右に旋回する命令を送ることで、自動車（５０１）の進行方向を保ったまま、安全に停止させることができる。
【０１２０】
このように、本発明における集積回路を用いることで、非常に高信頼な電子制御システムを低コストに実現することが可能になる。
【０１２１】
統合ＥＣＵ自体に故障が発生するのを防ぐには、多重化などの手法を用いて統合ＥＣＵの信頼性を高めても良い。
【０１２２】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【０１２３】
本発明は、実施の形態３で説明したような自動車システムや、鉄道システム、その他産業システムなど一般に広く利用される集積回路のエラー訂正に幅広く適用可能である。
【図面の簡単な説明】
【０１２４】
【図１】本発明の実施の形態１における集積回路の一例を示すブロック図である。
【図２】本発明の実施の形態１における集積回路の具体的な実装例の一例を示すブロック図である。
【図３】本発明の実施の形態１において、エラー判定リセット回路の詳細構成の一例を示すブロック図である。
【図４】本発明の実施の形態１において、エラー判定リセット回路の制御レジスタ設定の一例を示す表である。
【図５】本発明の実施の形態１において、リトライ制御部の詳細構成の一例を示すブロック図である。
【図６】本発明の実施の形態１において、ＣＰＵとエラーマスク回路の詳細構成の一例を示すブロック図である。
【図７】本発明の実施の形態１において、リトライステートマシンのステート遷移図の一例である。
【図８】本発明の実施の形態１において、例外処理ステートマシンのステート遷移図の一例である。
【図９】本発明の実施の形態１において、命令キューの詳細構成の一例を示すブロック図である。
【図１０】本発明の実施の形態１において、ライトキューの詳細構成の一例を示すブロック図である。
【図１１】本発明の実施の形態１において、リトライ例外ルーチンのフローチャートの一例である。
【図１２】本発明の実施の形態１において、リトライ制御部エラー例外ルーチンのフローチャートの一例である。
【図１３】本発明の実施の形態１において、ＣＰＵにエラーが発生した場合のリトライ動作の一例を示す波形図である。
【図１４】本発明の実施の形態１において、リトライ制御部にエラーが発生した場合の例外処理動作の一例を示す波形図である。
【図１５】本発明の実施の形態１において、周辺回路にエラーが発生した場合のリセット動作の一例を示す波形図である。
【図１６】本発明の実施の形態２における集積回路の一例を示すブロック図である。
【図１７】本発明の実施の形態３における、本発明の集積回路を応用した自動車システムの実装方法の一例を示す図である。
【符号の説明】
【０１２５】
１…ＣＰＵ、２…リトライ制御部、３…ＣＰＵエラー検出信号、４…ＰＣ、５…命令コード、６…ライト制御、７…ライトデータ、８…リトライ例外信号、９…ＣＰＵバス、１１…エラー判定リセット回路、１２、１３…周辺回路、１５…パワーオンリセット回路、１６…起動スイッチ、２１、２２、２３…制御レジスタ、３２、３３、３０２５…エラー検出回路、３５…例外処理ステートマシン、５０、５３…周辺エラー検出信号、５２…リトライ制御部エラー検出信号、６０、６３…周辺リセット信号、６１…ＣＰＵリセット信号、６２…リトライ制御部リセット信号、６４…パワーオンリセット信号、６５、６６、３０１、３０２…リセット信号、７０、７７…エラー例外信号、７１…リトライ制御部エラー例外信号、７２…ＣＰＵエラー例外信号、７６…エラー情報信号、３０３…起動信号、５０１…自動車、２００１…エラーマスク回路、２００２…リトライステートマシン、２００３…命令キュー、２００４…ライトキュー、２００７…遅延レジスタファイル、２００８…ＣＰＵバスＩＦ。
【図１】
2008146188.tif 000003
【図２】
2008146188.tif 000004
【図３】
2008146188.tif 000005
【図４】
2008146188.tif 000006
【図５】
2008146188.tif 000007
【図６】
2008146188.tif 000008
【図７】
2008146188.tif 000009
【図８】
2008146188.tif 000010
【図９】
2008146188.tif 000011
【図１０】
2008146188.tif 000012
【図１１】
2008146188.tif 000013
【図１２】
2008146188.tif 000014
【図１３】
2008146188.tif 000015
【図１４】
2008146188.tif 000016
【図１５】
2008146188.tif 000017
【図１６】
2008146188.tif 000018
【図１７】
2008146188.tif 000019