(57)【要約】【課題】汎用レジスタの故障時にも、安定動作が要請される命令コード群を確実に実行する。【解決手段】マイクロコンピュータに内蔵された汎用レジスタの故障検出の結果、故障が検出された場合に、対象とする命令コード群に含まれる各命令コードが必要とする数以上の正常な汎用レジスタを確保する。次に、前記命令コード群が格納された第１の記憶装置から命令コードを読み出し、汎用レジスタを使用する命令コードを、前記必要数確保した汎用レジスタ群を使用するよう書き換えて、第２の記憶装置に再配置（展開）する。以後、前記第２の記憶装置から前記命令コードを読み出して実行する。【選択図】図３
2010108252.tif 000002
【特許請求の範囲】
【請求項１】
マイクロコンピュータに内蔵された汎用レジスタが故障した場合における前記汎用レジスタを用いる命令コードを含む命令コード群の実行方法であって、
故障が検出されなかった汎用レジスタを、前記命令コード群に含まれる各命令コードが必要とする数以上、確保し、
前記命令コード群が格納された第１の記憶装置から前記命令コードを読み出し、汎用レジスタを使用する命令コードを、前記必要数確保した汎用レジスタ群を使用するよう書き換えて、第２の記憶装置に再配置し、
以後、前記第２の記憶装置から前記命令コードを読み出して実行すること、
を特徴とする命令コード群の実行方法。
【請求項２】
前記マイクロコンピュータは、起動する度に、前記汎用レジスタの故障検出処理を行う請求項１に記載の命令コード群の実行方法。
【請求項３】
前記マイクロコンピュータに内蔵された汎用レジスタを、前記命令コード群に含まれる各命令コードが必要とする数以上の汎用レジスタを持つグループに分割しておき、
汎用レジスタを使用する命令コードを、前記故障が検出されなかったグループの汎用レジスタを使用するよう割り当てる、請求項１又は２に記載の命令コード群の実行方法。
【請求項４】
前記マイクロコンピュータは、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）型マイクロコンピュータであり、
前記命令コード群に含まれる命令コードのうち、汎用レジスタを使用する命令コードを比較用命令コードとして保持しておき、前記第１の記憶装置から読み出した命令コードの命令部が前記比較用命令コードの命令部と一致するか否かにより、命令コードが汎用レジスタを使用するものであるか否かを判別する請求項１乃至３いずれか一に記載の命令コード群の実行方法。
【請求項５】
前記命令コード群は、前記マイクロコンピュータにフェールセーフ機能を実現する命令コード群である請求項１乃至４いずれか一に記載の命令コード群の実行方法。
【請求項６】
汎用レジスタを使用する命令コードを含む命令コード群を格納する第１の記憶装置と、
前記命令コード群を再配置可能な領域を有する第２の記憶装置と、接続され、
内蔵された汎用レジスタの故障を検出し、故障が検出されなかった汎用レジスタを、前記命令コード群に含まれる各命令コードが必要とする数以上、確保する手段と、
汎用レジスタの故障が検出された場合に、前記第１の記憶装置から命令コードを読み出し、汎用レジスタを使用する命令コードを、前記必要数確保した汎用レジスタ群を使用するよう書き換えて、前記第２の記憶装置に再配置する手段と、を備え、
内蔵された汎用レジスタの故障が検出された場合に、前記第２の記憶装置から前記命令コードを読み出して実行すること、
を特徴とするマイクロコンピュータ。
【請求項７】
前記内蔵された汎用レジスタの故障を検出する手段は、マイクロコンピュータが起動される度に、前記汎用レジスタの故障検出処理を行う請求項６に記載のマイクロコンピュータ。
【請求項８】
前記内蔵された汎用レジスタを、前記命令コード群に含まれる各命令コードが必要とする数以上の汎用レジスタを持つグループに分割しておき、
汎用レジスタを使用する命令コードを、前記故障が検出されなかったグループの汎用レジスタを使用するよう割り当てる、請求項６又は７に記載のマイクロコンピュータ。
【請求項９】
ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）型マイクロコンピュータであり、
前記命令コード群に含まれる命令コードのうち、汎用レジスタを使用する命令コードを比較用命令コードとして保持しておき、前記第１の記憶装置から読み出した命令コードの命令部が前記比較用命令コードの命令部と一致するか否かにより、命令コードが汎用レジスタを使用するものであるか否かを判別する請求項６乃至８いずれか一に記載のマイクロコンピュータ。
【請求項１０】
前記命令コード群は、フェールセーフ機能を実現する命令コード群である請求項６乃至９いずれか一に記載のマイクロコンピュータ。
【請求項１１】
所定のレジスタをベースレジスタとして用い、汎用レジスタを用いずに前後空間へのオフセットアクセスが可能なロード命令及びストア命令を持ち、かつ、
汎用レジスタを用いずにロード時及びストア時のアドレッシングが可能なアドレス空間内に前記第１、第２の記憶装置の前記命令コード群の格納領域を持ち、前記第１、第２の記憶装置に格納された命令コード群を実行する請求項６乃至１０いずれか一に記載のマイクロコンピュータ。
【請求項１２】
請求項６乃至１１いずれか一に記載のマイクロコンピュータを搭載した情報処理システム。
【請求項１３】
汎用レジスタを使用する命令コードを含む命令コード群を格納する第１の記憶装置と、前記命令コード群を再配置可能な領域を有する第２の記憶装置と、を接続され、前記第１の記憶装置に格納された命令コードを実行するマイクロコンピュータの制御プログラムであって、
前記マイクロコンピュータに内蔵された汎用レジスタの故障を検出し、故障が検出されなかった汎用レジスタを、前記命令コード群に含まれる各命令コードが必要とする数以上、確保する処理と、
前記マイクロコンピュータに内蔵された汎用レジスタの故障が検出された場合に、前記第１の記憶装置から命令コードを読み出し、汎用レジスタを使用する命令コードを、前記必要数確保した汎用レジスタ群を使用するよう書き換えて、前記第２の記憶装置に再配置する処理と、を前記マイクロコンピュータに実行させ、
前記汎用レジスタの故障検出後、前記第２の記憶装置から前記命令コードを読み出して実行する制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令コード群の実行方法、マイクロコンピュータ及びプログラムに関し、特に、フェールセーフ思想に基づいた命令コード群の実行方法、マイクロコンピュータ及びプログラムに関する。
【背景技術】
【０００２】
特許文献１に、書き換えのできないＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）に格納されたインストラクション（コード；命令コード）に、事後的に生じた不具合に対応できるようにしたＣＰＵシステムが開示されている。
【０００３】
より具体的には、特許文献１のＣＰＵシステムのＣＰＵ部は、規定された命令以外の命令を検出する機能を有し、規定された命令以外の命令を検出した場合、ＲＯＭ部の故障情報を第２のＲＡＭに記憶し、故障箇所の代替処理を第２のＲＯＭから第２のＲＡＭに展開し、第２のＲＡＭ部が代替処理を実行するように構成されている。
【０００４】
【特許文献１】特開平９−６２５０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記した特許文献１のＣＰＵシステムでは、ＣＰＵ自体に含まれる汎用レジスタが故障するような問題が発生した場合、命令コードが使用する汎用レジスタを変更できないため、正常に命令実行ができない現象が発生する。
【０００６】
その理由は、読み出し元のインストラクションに代えて、前記第２のＲＡＭに展開した代替ルーチンを実行するものであるため、故障している汎用レジスタを使用してしまうことの問題回避とならないためである。
【０００７】
このような現象は、特に、組み込みシステムの分野で問題点となりうる。例えば、車載制御ユニット（以降、ＥＣＵと称する）に搭載されるマイクロコンピュータには、故障発生時の安全対策としてフェールセーフ処理（安全処置を行う処理）が組み込まれている。
【０００８】
車両へ搭載（車への組み付け）した後のＥＣＵの上記汎用レジスタの故障対応やバグフィックスを行う場合、ＣＰＵ外部のＲＯＭを交換するか、書き換え可能なメモリ（フラッシュＲＯＭ）を搭載したＣＰＵにて該当部分を書き換える必要がある。
【０００９】
一方、ＥＣＵの機密保持や不法改造を防ぐという観点から、多くの自動車メーカーが、購買元（ディーラー）や修理工場の特定機器による書き換えやＣＰＵ交換で対応しており、車両への組み付け後に発生した不具合に早急に対応することが困難な状況にある。
【００１０】
また、特許文献１の方法では、ＣＰＵの命令やレジスタ故障に対するフェールセーフ処理を実施するためには、新たにＤＭＡ転送器や第２のＲＯＭ及び第２のＲＡＭ等の故障時動作のための回路が必要であり、チップ面積が増大してしまうという問題点がある。
【課題を解決するための手段】
【００１１】
本発明の第１の視点によれば、マイクロコンピュータに内蔵された汎用レジスタが故障した場合における前記汎用レジスタを用いる命令コードを含む命令コード群の実行方法であって、故障が検出されなかった汎用レジスタ（正常な汎用レジスタ）を、前記命令コード群に含まれる各命令コードが必要とする数以上、確保し、前記命令コード群が格納された第１の記憶装置から前記命令コードを読み出し、汎用レジスタを使用する命令コードを、前記必要数確保した汎用レジスタ群を使用するよう書き換えて、第２の記憶装置に再配置（展開）し、以後、前記第２の記憶装置から前記命令コードを読み出して実行する命令コード群の実行方法が提供される。
【００１２】
本発明の第２の視点によれば、汎用レジスタを使用する命令コードを含む命令コード群を格納する第１の記憶装置と、前記命令コード群を再配置可能な領域を有する第２の記憶装置と、接続され、内蔵された汎用レジスタの故障を検出し、故障が検出されなかった汎用レジスタ（正常な汎用レジスタ）を、前記命令コード群に含まれる各命令コードが必要とする数以上、確保する手段と、汎用レジスタの故障が検出された場合に、前記第１の記憶装置から命令コードを読み出し、汎用レジスタを使用する命令コードを、前記必要数確保した汎用レジスタ群を使用するよう書き換えて、前記第２の記憶装置に再配置（展開）する手段と、を備え、内蔵された汎用レジスタの故障が検出された場合に、前記第２の記憶装置から前記命令コードを読み出して実行するマイクロコンピュータ及び該マイクロコンピュータを搭載した情報処理装置が提供される。
【００１３】
本発明の第３の視点によれば、汎用レジスタを使用する命令コードを含む命令コード群を格納する第１の記憶装置と、前記命令コード群を再配置可能な領域を有する第２の記憶装置と、を接続され、前記第１の記憶装置に格納された命令コードを実行するマイクロコンピュータの制御プログラムであって、前記マイクロコンピュータに内蔵された汎用レジスタの故障を検出し、故障が検出されなかった汎用レジスタ（正常な汎用レジスタ）を、前記命令コード群に含まれる各命令コードが必要とする数以上、確保する処理と、前記マイクロコンピュータに内蔵された汎用レジスタの故障が検出された場合に、前記第１の記憶装置から命令コードを読み出し、汎用レジスタを使用する命令コードを、前記必要数確保した汎用レジスタ群を使用するよう書き換えて、前記第２の記憶装置に再配置（展開）する処理と、を前記マイクロコンピュータに実行させ、前記汎用レジスタの故障検出後、前記第２の記憶装置から前記命令コードを読み出して実行する制御プログラムが提供される。
【発明の効果】
【００１４】
本発明によれば、汎用レジスタの故障時にも、対象とする命令コード群を確実に実行することが可能になる。その理由は、汎用レジスタの故障を検出するとともに、汎用レジスタの故障が検出された場合に、故障していない汎用レジスタを用いる命令コードに書き換えるよう構成したことにある。
【発明を実施するための最良の形態】
【００１５】
［発明の概要］
始めに本発明の概要について説明する。本発明は、ＣＰＵ起動後、故障レジスタの検出処理を実行する（図３のステップ４０１）。前記検出処理の結果、故障した汎用レジスタが検出された場合、対象とする命令コード群を、故障レジスタ検出処理で故障が検出されなかった汎用レジスタ群を使用するよう、対象とする命令コードを書き換える命令変換処理を実行する（図３のステップ４０５）。
【００１６】
上記書き換え対象の命令コードとしては、例えば、フェールセーフの観点から正常に実行されるべき各種処理が挙げられる。以上により、ＣＰＵに内蔵された汎用レジスタが故障した場合においても、確実に必要な命令コードを実行することが可能となる。
【００１７】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施形態に係るマイクロコンピュータが搭載される情報処理システムの構成を模式的に示したブロック図である。以下の実施形態では、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）型のマイクロコンピュータであるものとする。命令長は固定長であり命令部を容易に特定可能であり、命令コードの読み出しや書き込みアドレスに命令コード長を加算することで、一連の命令コードの読み出しや書き込みを行うことができるものとする。
【００１８】
図１を参照すると、ｎ個の汎用レジスタ２０２＿１〜２０２＿ｎを有し、命令コードを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ２０３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０４とを備えた構成が示されている。
【００１９】
ＲＯＭ２０３には、後記する汎用レジスタ故障検出プログラム２０５と、命令変換処理プログラム２０６と、比較用命令コード・テーブル２０６ａと、書き換え対象となる命令コード群２０７、が格納される。比較用命令コード・テーブル２０６ａは、汎用レジスタを使用する命令コードを集めたものであり、命令変換処理プログラム２０６が命令コードを変換するか否かを判断する際に参照される。
【００２０】
ＲＡＭ２０４は、ＣＰＵによる命令コードの実行時に使用されるほか、後記のように書き換えた命令コード群の再配置（展開）先（修正済み命令コード群再配置領域２０８）として用いられる。
【００２１】
命令コードのオペランドに指定される汎用レジスタ２０２＿１〜２０２＿ｎは、実行可能なロードモジュールへのコンパイル時点で決定される。各命令コードのオペランドは即値との論理和演算命令若しくは命令のオペランド部分のみを書き換え可能な命令フォーマットを持っている。
【００２２】
また、ＣＰＵ２０１は、特定のレジスタをベースアドレスとし、他の汎用レジスタをアドレッシングに使用せずに前後空間へのオフセットアクセスが可能なロード命令、および、ストア命令を持つものとする。このように、ＣＰＵ２０１は、汎用レジスタを使用せずにロード時およびストア時のアドレッシングが可能なアドレス空間内にＲＯＭ領域およびＲＡＭ領域を有することで、ＲＯＭ２０３およびＲＡＭ２０４上に配置された命令を実行可能であるものとする。
【００２３】
ＣＰＵ２０１に備えられた汎用レジスタ２０２＿１〜２０２＿ｎは、Ｘ個のグループにグループ分けされる。各グループは、少なくとも命令コード群２０７が必要とする個数以上の汎用レジスタを持つ。
【００２４】
図２は、本実施形態における汎用レジスタのグループ分け（分割）を説明するための図である。一つのグループに属する汎用レジスタの個数Ａは、予め図１の命令コード群２０７で使用される汎用レジスタを検出しておくことによって求められる。ソフトウエア開発では、処理毎にプログラムをオブジェクト化することができるため、対象のプログラムのうち、図１の命令コード群２０７の部分をオブジェクト化することによっても上記レジスタ数Ａを求めることができる。
【００２５】
以上により、ＣＰＵの持つｎ個のレジスタから、Ａ個のレジスタを持つＸ個のグループが作成される。このグループは、故障レジスタの検出や、故障レジスタの検出時における命令コードの書き換えを行う際のレジスタの取り扱い単位となる。
【００２６】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図３は、本発明の第１の実施形態の全体動作を表したフローチャートである。これらの処理は、ＣＰＵ２０１にて実行される制御プログラム及び該制御プログラムから、図４〜図６に例示した各種プログラムやサブルーチンを呼び出すことによって実現される。
【００２７】
図３を参照すると、ＣＰＵ２０１の起動後、ＣＰＵ２０１は、故障レジスタ検出処理を実行する（ステップ４０１）。この故障レジスタ検出処理については、後に図４、図５を参照して詳説する。
【００２８】
故障レジスタ検出処理の結果、汎用レジスタに異常が無かった場合（正常；ステップ４０２のＹｅｓ）、ＣＰＵ２０１は、通常処理に遷移する（ステップ４０３）。即ち、後記する命令コードの書き換えやＲＡＭ２０４への展開は行わずに、ＲＯＭ２０３から命令コード群２０７が読み出されて実行される。
【００２９】
一方、前記故障レジスタ検出処理の結果、汎用レジスタに異常が認められた場合（ステップ４０２のＮｏ）、ＣＰＵ２０１は、故障している汎用レジスタがないグループがあるか否かに基づいて、後記する命令コードの変換により、汎用レジスタの故障を回避可能であるか否かを確認する（ステップ４０４）。
【００３０】
例えば、すべての汎用レジスタのグループで故障が検出され、正常な汎用レジスタを必要数確保できない等、命令コードの変換により、汎用レジスタの故障を回避できないと判断した場合、ＣＰＵ２０１は、エラー処理に遷移する（ステップ４０７）。エラー処理としては、自コードへのジャンプ命令等により無限ループ処理等が挙げられる。
【００３１】
一方、命令コードの変換により、汎用レジスタの故障を回避可能と判断した場合、ＣＰＵ２０１は、命令コード変換処理を実行する（ステップ４０５）。この命令コード変換処理については、後に図６を参照して詳説する。
【００３２】
以上の処理が完了すると、ＣＰＵ２０１は、上記命令コード変換処理により、ＲＡＭ２０４上に再配置された命令コード群（修正済み命令コード群再配置領域２０８の命令コード群）を実行する（ＲＡＭ遷移処理）。
【００３３】
［故障レジスタ検出処理］
図４は、図３に示す故障レジスタ検出処理（図３のステップ４０１）の一例を示したフローチャートである。故障レジスタ検出処理は、故障検出対象のすべての汎用レジスタ２０２＿１〜２０２＿ｎを順番に検査していくことによって行われる（ステップ５１０〜ステップ５ｎ１）。図４の例では、汎用レジスタの動作テストを行い故障の有無を検出する汎用レジスタ動作テストをｎ回繰り返している。それぞれの判定処理で異常があった場合は「故障レジスタあり」となり、当該レジスタを持つグループは命令コードの書き換え先の対象外となる。
【００３４】
一方、汎用レジスタに一つも故障が検出されなかったグループは、命令コードの書き換え先処理に使用され、また、命令コードの書き換え先の汎用レジスタとして使用される。
【００３５】
［汎用レジスタ動作テスト］
図５は、図４の個々の汎用レジスタを対象に行う動作テストの一例である。図５を参照すると、まず、対象の汎用レジスタにテストパターン（例えば、固定値０ｘ５５５５５５５５；汎用レジスタのビット数を３２とした場合）を代入するテストパターン代入処理が行われる（ステップ６０１）。
【００３６】
次に、左シフト処理が行われる（ステップ６１１）。ＣＰＵの持つシフト命令により、テストする汎用レジスタのデータを左シフトすることにより、ＣＹ（キャリービット）に汎用レジスタの最上位ビットが代入される。
【００３７】
次に、ＣＹビットを期待値と比較するＣＹビット判定処理が行われる（ステップ６１２）。０ｘ５５５５５５５５をテストパターンとした場合、期待値は０→１→０・・・と交互に変化する。ＣＹビットがこの期待値と異なる値である場合、異常判定となる（ステップ６１２の「異常」。ステップ６２２、・・・、６ｍ２も同様。）。
【００３８】
以上の処理を汎用レジスタ２０２＿１〜２０２＿ｎのビット数（ｍ）と同一回数だけ繰り返す。全ビットが期待値と一致した場合、当該汎用レジスタは正常であると判断される（ステップ６１２、６２２、・・・、６ｍ２で「正常」）。
【００３９】
［命令コード変換処理］
以下の命令コード変換処理では、レジスタｒ１〜ｒ５の５つのレジスタを用いる。図４の故障レジスタ検出処理にて異常と判定された汎用レジスタのないレジスタグループの汎用レジスタを用いることとすれば、命令コード変換処理自体を確実に実行することが可能となる。
【００４０】
図６は、図３の命令コード変換処理（図３のステップ４０５）の一例を説明するためのフローチャートである。まず、ＣＰＵ２０１は、初期処理として、命令コードの書き換えを行う対象の命令コード群２０７の先頭アドレスをレジスタｒ１に設定する（ステップ７０１）。
【００４１】
次に、ＣＰＵ２０１は、ＲＡＭ２０４上の修正済み命令コード群再配置領域２０８の先頭アドレスをレジスタｒ２に設定する（ステップ７０２）。
【００４２】
次に、ＣＰＵ２０１は、比較用命令コード・テーブル２０６ａの先頭アドレスをレジスタｒ３に設定する（ステップ７０３）。
【００４３】
次に、ＣＰＵ２０１は、レジスタｒ１が示すアドレスの命令コードをレジスタｒ４に格納する（ステップ７０４）。
【００４４】
次に、ＣＰＵ２０１は、レジスタｒ３が示す比較用命令コードをレジスタｒ５に格納する（ステップ７０５）。
【００４５】
次に、ＣＰＵ２０１は、レジスタｒ４とレジスタｒ５の命令コードのオペコード（命令部）とを比較、汎用レジスタを使用するコードであるか否かを判別する（ステップ７０６）。上述したように、ＲＩＳＣ型マイクロコンピュータの場合、命令長は固定長であるため、このように簡単に判定することができる。
【００４６】
両者のオペコード（命令部）が一致しておらず、かつ、未比較の比較用命令コードが残っている場合（ステップ７０７の「未了」）、ＣＰＵ２０１は、レジスタｒ３を更新し（ステップ７０８）、次の比較用命令コードとの比較を繰り返す（ステップ７０５へ）。
【００４７】
一方、両者のオペコード（命令部）が一致している場合、ＣＰＵ２０１は、汎用レジスタを使用する命令コードと判断し、レジスタｒ４のオペランドを、先の故障レジスタ検出処理にて異常と判定された汎用レジスタのないレジスタグループに属する汎用レジスタの番号に修正する（書き換える）（ステップ７０９；命令コード変換）。
【００４８】
次にＣＰＵ２０１は、レジスタｒ４の内容をレジスタｒ２が示すＲＡＭアドレスに転送する（再配置する）（ステップ７１０）。
【００４９】
次にＣＰＵ２０１は、次の命令コードを読み出し、かつ、命令コードの再配置先を変更するため、レジスタｒ１、ｒ２を命令コード長分を加算し、それぞれ更新する（ステップ７１１、７１２）。
【００５０】
最後にＣＰＵ２０１は、レジスタｒ１が命令コード群２０７の最終アドレスに達したか否かを確認し、終了していない場合には、ステップ７０３に戻り、次の命令コードの処理を継続する。すべての命令コードの変換が終了することにより、命令コード変換処理が完了する。
【００５１】
以上のように、本発明によれば、上記のようにＲＯＭ、ＲＡＭのみで汎用レジスタの故障検出を可能とし、故障検出時には、故障していない汎用レジスタ群（上記第１の実施形態の汎用レジスタの「グループ」に相当。）を確保して、安定動作が必要な命令コード群が安全に動作するように、命令コードを書き換え、ＲＡＭに再配置（展開）させた後に、ＲＡＭから当該命令コード群を実行することが可能となる。
【００５２】
上記命令コード群として、所謂フェールセーフ機構として動作する一連の処理で使用される汎用レジスタを動的に書き換えることとすれば、フェールセーフ処理はもちろん情報処理システム自体の信頼性が向上される。
【００５３】
また本発明は、上記した実施形態からも明らかなように、専用のハードウエアを追加する必要がない。このため、チップ面積の増加を抑えることができる。これらは、本発明が、冒頭に述べたＥＣＵ等に搭載されるマイクロコンピュータに好適に適用できることを意味する。例えば、特許文献１のＣＰＵシステムでは、新たにＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送器や第２のＲＯＭ及び第２のＲＡＭ等の故障時動作のための回路が必要であるが、本発明は一般的なマイクロコンピュータが有している回路のみで実現可能であるため追加回路は不要となる。
【００５４】
更に、本発明は、運用開始後の汎用レジスタの故障に対応することが可能になる。例えば、特許文献１のＣＰＵシステムでは、一度運用して既知となった故障、運用開始前に既知の問題にしか対応できないが、本発明では運用開始後に発生する故障のうち、汎用レジスタ故障への対応が可能となる。
【００５５】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態では、図３〜図６のフローチャートを示して説明したが、これらは、あくまで、好適かつ判りやすいように簡単化したものであり、「故障している汎用レジスタの検出」、「汎用レジスタの動作テスト」、「命令コードのオペランド部の書き換え」等といった各目的に即して、当業者であれば採用しうる方法に置き換えることが可能である。
【図面の簡単な説明】
【００５６】
【図１】本発明の第１の実施形態に係るマイクロコンピュータが搭載される情報処理システムの構成を模式的に示したブロック図である。
【図２】本発明の第１の実施形態における汎用レジスタのグループを説明するための図である。
【図３】本発明の第１の実施形態の全体動作を表したフローチャートである。
【図４】図３の故障レジスタ検出処理の一例を説明するためのフローチャートである。
【図５】図４の故障レジスタ動作テストの一例を説明するためのフローチャートである。
【図６】図３の命令コード変換処理の一例を説明するためのフローチャートである。
【符号の説明】
【００５７】
２０１  ＣＰＵ
２０２、２０２＿１〜２０２＿ｎ  汎用レジスタ
２０３  ＲＯＭ
２０４  ＲＡＭ
２０５  汎用レジスタ故障検出プログラム
２０６  命令変換処理プログラム
２０６ａ  比較用命令コード・テーブル
２０７  命令コード群
２０８  修正済み命令コード群再配置領域
【図１】
2010108252.tif 000003
【図２】
2010108252.tif 000004
【図３】
2010108252.tif 000005
【図４】
2010108252.tif 000006
【図５】
2010108252.tif 000007
【図６】
2010108252.tif 000008