(57)【特許請求の範囲】
【請求項１】
主記憶装置における情報を復元可能な装置であって、
一又は二以上のレジスタを具備する処理装置と、
書き換え可能な第１の記憶装置と、
書き換え可能な第２の記憶装置と、
前記第１の記憶装置に保存されている情報である記憶装置情報と前記一又は二以上のレジスタに保存されている情報であるレジスタ情報とからなる情報である復元情報を取得し、当該復元情報を前記第２の記憶装置に保存させる記憶装置管理手段と、
前記処理装置をリセットする回路と、
を備え、
前記処理装置は、前記一又は二以上のレジスタに保存されている情報であるレジスタ情報を前記第１の記憶装置に退避した後、前記回路は、前記処理装置をリセットし、前記処理装置は、前記第１の記憶装置に退避されている前記レジスタ情報を前記一又は二以上のレジスタに復元し、
前記復元情報の取得、当該復元情報の前記第２の記憶装置への保存、前記レジスタ情報の前記第１の記憶装置への退避、前記処理装置のリセット、及び、前記レジスタ情報の前記第１の記憶装置から前記一又は二以上のレジスタへの復元は、周期的に繰り返し行われることを特徴とする装置。
【請求項２】
主記憶装置における情報を復元可能な装置において、
前記第１の記憶装置又は前記処理装置と前記第２の記憶装置との間に配置したキャッシュメモリであって、当該第１の記憶装置に保存されている情報が変更されたとき、当該変更された情報のみを保存するキャッシュメモリをさらに備え、
前記復元情報は、前記キャッシュメモリに保存されている情報に基づいて取得されることを特徴とする請求項１に記載の装置。
【請求項３】
主記憶装置における情報を復元可能な装置において、
前記記憶装置管理手段は、前記第２の記憶装置に保存されている前記復元情報内の前記記憶装置情報を用いて、前記第１の記憶装置の情報を復元するとともに、当該復元情報内の前記レジスタ情報を用いて、対応する前記一又は二以上のレジスタの情報を復元することを特徴とする請求項１又は２に記載の装置。
【請求項４】
主記憶装置における情報を復元可能な装置において、
前記記憶装置管理手段は、当該装置が誤動作したときに、前記第１の記憶装置の情報の復元、及び、前記一又は二以上のレジスタの情報の復元を行うことを特徴とする請求項３に記載の装置。
【請求項５】
主記憶装置における情報を復元可能な装置において、
装置が誤動作したときに、処理装置がリセットされることを特徴とする請求項４に記載の装置。
【請求項６】
主記憶装置における情報を復元可能な装置において、
記憶装置コントローラをさらに備え、
前記記憶装置情報の復元は、記憶装置コントローラが主記憶装置を前記第１の記憶装置から前記第２の記憶装置に切替えることによって行われることを特徴とする請求項３乃至５のいずれか一つに記載の装置。
【請求項７】
主記憶装置における情報を復元可能な装置において、
前記記憶装置管理手段は、前記復元情報を取得するとき、当該復元情報が復元時に利用可能である場合は有効を示す情報、そして、利用不可である場合は無効を示す情報である復元可否情報を有効として当該復元情報に付加し、そして、前記第１の記憶装置の情報の復元、及び、前記一又は二以上のレジスタの情報の復元が行われるとき、当該復元可否情報が有効を示している場合のみ、前記第２の記憶装置に保存されている前記復元情報内の前記記憶装置情報を用いて、前記第１の記憶装置の情報を復元するとともに、当該復元情報内の前記レジスタ情報を用いて、対応する前記一又は二以上のレジスタの情報を復元し、さらに、前記記憶装置管理手段は、前記第２の記憶装置に保存されている前記復元情報内の前記復元可否情報が無効を示すよう変更し、当該復元可否情報は、新たに復元情報が取得されない限り変更されないことを特徴とする請求項１乃至６のいずれか一つに記載の装置。
【請求項８】
主記憶装置における情報を復元可能な装置において、
書き換え可能な第３の記憶装置をさらに備え、
前記記憶装置管理手段は、前記第２の記憶装置に保存されている前記復元情報を前記第３の記憶装置に保存するとともに、新たな復元情報を取得し、当該新たな復元情報を前記第２の記憶装置に保存し、
さらに、前記記憶装置管理手段は、前記第１の記憶装置の情報の復元、及び、前記一又は二以上のレジスタの情報の復元を前記復元情報又は前記新たな復元情報に基づいて行うことを特徴とする請求項１乃至７のいずれか一つに記載の装置。
【請求項９】
主記憶装置における情報を復元可能な装置において、
前記復元情報及び新たな復元情報は、前記復元可否情報をともに含み、前記記憶装置管理手段は、前記復元可否情報が有効を示している前記復元情報又は前記新たな復元情報に基づいて、前記第１の記憶装置の情報の復元、及び、前記一又は二以上のレジスタの情報の復元を行い、さらに、前記記憶装置管理手段は、当該復元で用いられた前記復元情報又は前記新たな復元情報内の前記復元可否情報が無効を示すよう変更し、当該復元可否情報は、新たに復元情報が取得されない限り変更されないことを特徴とすることを特徴とする請求項８に記載の装置。
【請求項１０】
前記処理装置は、中央処理装置である、請求項１乃至９のいずれか一つに記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶装置における情報の復元に関する。より詳細には、主記憶装置以外の記憶装置に保存されている情報に基づいて主記憶装置の情報を復元する技術に関する。
【背景技術】
【０００２】
マイクロコンピュータは、電気的な外部ノイズ、静電気、振動、及び、熱などから常に影響を受ける。さらに、その外部ノイズなどに起因して、いわゆる中央処理装置の暴走などによるマイクロコンピュータの誤動作が発生する。そして、そのマイクロコンピュータの誤動作によって欠陥のある情報が主記憶装置に保存された場合や、外部ノイズによって主記憶装置の情報が変更され、破壊を受けた場合、主記憶装置に保存されている情報は、その後の処理において正常に用いることができない欠陥のある情報となる。【０００３】
従来技術において、マイクロコンピュータ上に定義されていない命令コードが用いられたことの検出、定義されていないメモリアドレス空間へのアクセスの検出、ウオッチドッグタイマによるプロセス監視、中央処理装置の周期的なリセットなどの技術を用いて、マイクロコンピュータの誤動作の検出、又は、マイクロコンピュータの誤動作の回避を実行することができた。しかしながら、マイクロコンピュータに誤動作が発生した後、主記憶装置に保存されている欠陥のある情報を正常な状態な情報に復元する技術は存在していない。したがって、従来技術において、主記憶装置に保存されている欠陥のある情報を正常な状態の情報に変更するための手段は、中央処理装置、主記憶装置、入出力インタフェースなどのマイクロコンピュータの装置全体をリセットし、実行中であったプログラムなどを最初から再実行することによって実現されていた。したがって、そのような従来技術を用いた場合、主記憶装置などに保存されていた重要な情報（例えば、人命や金銭などに関する情報）は消失する可能性がある。さらに、その手段を用いた場合、装置全体がリセットされることから、その手段の開始から終了までの時間は、電源投入時の初期化とほぼ同程度であり、非常に長い時間が必要となる。【０００４】
また、従来技術において、複数の中央処理装置を備えたマイクロコンピュータが互いに中央処理装置の誤動作を監視するシステムが存在する。また、各中央処理装置が専用の主記憶装置を備えるシステムが存在する。しかしながら、このようなシステムは同じ装置を複数用意しなければならないことから、非常にコストがかかるものとなる。さらに、そのシステムにおける誤動作の監視は、各中央処理装置のレジスタについての情報を互いに比較し、さらに、各主記憶装置に記憶されている情報を互いに比較することによって実現される。したがって、このシステムでは、マイクロコンピュータの本来の処理ではない誤動作を監視する処理を実行するために相当な処理時間が必要となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特願２００９−２３８７４２号
【特許文献２】特開平６−７１０２４号
【特許文献３】特開平９−３１９６０２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、マイクロコンピュータの誤動作が発生する前に主記憶装置に保存されていた情報を予め退避し、マイクロコンピュータに誤動作が生じた後、その退避した情報に基づいて復元する。その退避及び復元は、書き換え可能な記憶装置を用いて実現されることから、それらの処理は非常に短時間で実行することができる。これにより、マイクロコンピュータが誤動作することによって事故又は損害が発生するおそれがある分野であるメカトロニクス、ロボット、遊技機を含むゲーム機器、エンジンのコントロール、車両ブレーキのコントロール、エレベーターのコントロールなどにおいて、本発明を採用することによって事故又は損害の発生を大幅に削減することができる。特に、産業用の溶接ロボット等では、大きな溶接電流が用いられ、また、自動車の電気動力部分には、大電流及び高電圧が用いられ、さらに、遊技機が配置される環境では静電気が発生しやすい。そして、これらの大電流、高電圧、及び、静電気などは、マイクロコンピュータの誤動作の原因となる電気的なノイズを発生させる。したがって、マイクロコンピュータにおいて、静電気を含む電気的なノイズの影響に対する対策を行うことは重要である。【０００７】
また、本発明は、レジスタの情報を退避した時点で、あるプログラムの処理が実行中であった場合、レジスタの情報を復元することによって、そのレジスタの情報を退避した時点からプログラムの処理を再開することができる。これにより、主記憶装置の情報の復元だけではなく、マイクロコンピュータの動作自体を、情報を退避したその時点に遡って復元することができる。
【課題を解決するための手段】
【０００８】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、一又は二以上のレジスタを具備する中央処理装置と、書き換え可能な第１の記憶装置と、書き換え可能な第２の記憶装置と、第１の記憶装置に保存されている記憶装置情報と一又は二以上のレジスタに保存されているレジスタ情報とからなる情報である復元情報を取得し、復元情報を第２の記憶装置に保存させる記憶装置管理手段とを備えることができる。【０００９】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、復元情報の取得、及び、第２の記憶装置に対する復元情報の保存を繰り返し行うことができる。【００１０】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、繰り返しを周期的に行うことができる。【００１１】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、繰り返しのために割り込み処理を周期的に実行し、記憶装置管理手段によって、各割り込み処理毎に復元情報を取得し、復元情報を第２の記憶装置に保存することができる。【００１２】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、繰り返しをランダムな間隔で行うことができる。【００１３】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、繰り返しを所定の条件を満たしたときに行うことができる。【００１４】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、第１の記憶装置と第２の記憶装置との間に配置したキャッシュメモリであって、第１の記憶装置に保存されている情報が変更されたとき、記憶装置管理手段によって変更された情報を保存するキャッシュメモリをさらに備えることができる。【００１５】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、第２の記憶装置に保存されている復元情報内の記憶装置情報を用いて、第１の記憶装置の情報を復元するとともに、復元情報内のレジスタ情報を用いて、対応する一又は二以上のレジスタの情報を記憶装置管理手段によって復元することができる。【００１６】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、装置が誤動作したときに、第１の記憶装置の情報の復元、及び、一又は二以上のレジスタの情報の復元を記憶装置管理手段によって行うことができる。【００１７】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、記憶装置コントローラをさらに備え、記憶装置コントローラが主記憶装置を第１の記憶装置から第２の記憶装置に切替えることによって主記憶装置の情報の復元を行うことができる。【００１８】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、復元情報を取得するとき、復元情報が復元時に利用可能である場合は有効を示す情報、そして、利用不可である場合は無効を示す情報である復元可否情報を有効として復元情報に記憶装置管理手段によって付加し、そして、第１の記憶装置の情報の復元、及び、一又は二以上のレジスタの情報の復元が行われるとき、復元可否情報が有効を示している場合のみ、第２の記憶装置に保存されている復元情報内の記憶装置情報を用いて、第１の記憶装置を記憶装置管理手段によって復元するとともに、復元情報内のレジスタ情報を用いて、対応する一又は二以上のレジスタを復元し、さらに、第２の記憶装置に保存されている復元情報内の復元可否情報が無効を示すよう記憶装置管理手段によって変更し、新たに復元情報が取得されない限り復元可否情報は変更されないようにすることができる。【００１９】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、書き換え可能な第３の記憶装置をさらに備え、記憶装置管理手段によって、新たな復元情報を取得し、第２の記憶装置に保存されている復元情報を第３の記憶装置に保存し、そして、新たな復元情報を第２の記憶装置に保存し、さらに、記憶装置管理手段によって、第１の記憶装置の情報の復元、及び、一又は二以上のレジスタの情報の復元を復元情報又は新たな復元情報に基づいて行うことができる。【００２０】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、復元情報及び新たな復元情報に含まれている復元可否情報が有効を示している復元情報又は新たな復元情報に基づいて、記憶装置管理手段が、第１の記憶装置の情報の復元、及び、一又は二以上のレジスタの情報の復元を行い、さらに、復元で用いられた復元情報又は新たな復元情報内の復元可否情報が無効を示すよう変更し、新たに復元情報が取得されない限り復元可否情報は変更されないようにすることができる。【００２１】
本発明による主記憶装置における情報を復元するための主記憶装置における情報を復元可能なマイクロコンピュータは、書き換え可能な第１の記憶装置と、書き換え可能な第２の記憶装置と、第１の記憶装置に保存されている記憶装置情報を第２の記憶装置に保存させる記憶装置管理手段とを備えることができる。【００２２】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、第２の記憶装置に対する記憶装置情報の保存を繰り返し行うことができる。【００２３】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、繰り返しを周期的に行うことができる。【００２４】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、繰り返しをランダムな間隔で行うことができる。【００２５】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、繰り返しを所定の条件を満たしたときに行うことができる。【００２６】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、第２の記憶装置に保存されている記憶装置情報を用いて、第１の記憶装置の情報を記憶装置管理手段によって復元することができる。【００２７】
本発明による主記憶装置における情報を復元可能なマイクロコンピュータは、一又は二以上のレジスタを具備する中央処理装置をさらに備え、記憶装置情報に含まれている所定の時点における一又は二以上のレジスタの情報であるレジスタ情報を用いて、対応する一又は二以上のレジスタの情報を記憶装置管理手段によって復元することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施例による装置１００の概略を示したブロック図である。
【図２】ＣＰＵ１１５と第１のＲＡＭ１２０、第２のＲＡＭ１２５、及び、第３のＲＡＭ１３０との関係を示したブロック図である。
【図３】本発明の第１の実施例による記憶装置管理部の動作を示したフロー図である。
【図４】本発明の第２の実施例による記憶装置管理部の動作を示したフロー図である。
【図５】復元情報の取得及び保存を周期的に実行する実施例の処理フローを示す。
【図６】図５の処理フローで示されているステップ５０５乃至５４０における各処理と記憶装置に保存されている情報との関係を示したタイムチャートである。
【図７】図５の処理フローで示されているステップ５５０乃至５６０における各処理と記憶装置に保存されている情報との関係を示したタイムチャートである。
【図８】３つのＲＡＭを備えた装置１００において、復元情報の取得及び保存を周期的に実行する実施例の動作を示した処理フロー図である。
【図９】図８のフローで示されているステップ８０５乃至８４５における各処理と記憶装置に保存されている情報との関係を示したタイムチャートである。
【図１０】装置１００の図８の処理フローで示されている実施例についての使用例を示したタイムチャートである。
【図１１】本実施例を実現するためのＣＰＵとＲＡＭとの関係を示したブロック図である。
【図１２】図１１の記憶装置コントローラ１１０５による実施例の動作を示した処理フロー図である。
【図１３】メインメモリである第１のＲＡＭ１２０とメインメモリ以外の第２のＲＡＭ１２５との間にキャッシュメモリを用いた実施例を示すブロック図である。
【発明を実施するための形態】
【００２９】
図１は、本発明の実施例による装置１００の概略を示したブロック図である。装置１００は、補助回路１０５、ＲＯＭ（読み出し専用メモリ）１１０、ＣＰＵ（中央処理装置）１１５、第１のＲＡＭ（ランダムアクセスメモリ）１２０、第２のＲＡＭ１２５、第３のＲＡＭ１３０、ＣＰＵバス１３５、入出力インタフェース１４０、及び、ＤＭＡコントローラ（ダイレクトメモリアクセスコントローラ）１５０を備える。
【００３０】
ＣＰＵ１１５は補助回路１０５を有し、さらに、一又は二以上のレジスタ１４５を内蔵する。レジスタ１４５としては、アキュムレータ、アドレスレジスタ、インデックスレジスタ、スタックポインタ、ページレジスタ、セグメントレジスタ、プログラムカウンタ、ステータスレジスタ、コントロールレジスタ、及び、他の専用レジスタや汎用レジスタを用いることができる。補助回路１０５は、ＣＰＵ１１５が用いるクロックパルスの発生用の回路、ＣＰＵ１１５への電源供給を制御することによってＣＰＵ１１５をリセットする回路、定期的に実行される割り込み処理などのためのタイマー用回路などを含む。
【００３１】
ＲＯＭ１１０にはプログラムなどが格納される。第１、第２、及び第３のＲＡＭ１２０、１２５、及び１３０は、ＭＭＵ（メモリ管理ユニット）１５５を内蔵していてもよい。第１の書き換え可能な記憶装置１２０は、メインメモリ（主記憶装置、メインＲＡＭともいう）として機能し、ＣＰＵ１１５のレジスタ１４５に保存されている情報を保存することもできる。入出力インタフェース１４０は他の外部装置への入出力を行う。
【００３２】
図１は例示の目的で示しており、装置１００は少なくともＣＰＵ１１５、メインメモリ１２０、及び、それらを接続するためのバスを備えるコンピュータとすることができる。装置１００にはマイクロコンピュータなどが含まれる。さらに、マイクロコンピュータにはワンチップ式のマイクロコンピュータが含まれる。
【００３３】
複数のＲＡＭは一つの記憶装置内に実装することができる。また、複数のＲＡＭは物理的に複数の記憶装置として実装することもできる。さらに、電源は外部ノイズの影響を他の要素より受けやすいため、各ＲＡＭそれぞれは専用の電源を有していてもよい。
【００３４】
メインメモリ１２０の情報を復元するために必要な情報は、ある処理が実行されている間、動的に変化する情報である。装置１００において、その動的に変化する情報は、一又は二以上のレジスタ１４５に保存されているレジスタ情報、及び、メインメモリ１２０に保存されている記憶装置情報である。特に、レジスタ情報は、ＣＰＵ１１５が次に実行する命令や、次に実行する命令がどこにあるのかを示すアドレス、ある情報の主記憶上のアドレスなどを含むことから、何かしらの動作が行われるたびに変化する。
【００３５】
マイクロコンピュータにおいて、レジスタ情報は、メインメモリ１２０に送られ、ここに保存される。通常、レジスタ情報及び記憶装置情報は外部の補助記憶装置など（例えば、ハードディスク、シリコンディスク、ソリッドステートドライブなど）には保存されない。したがって、メインメモリ１２０に記憶されている所定の時点の情報を退避し、その所定の時点が経過した後、その退避した情報をメインメモリ１２０に再度記憶することによって、メインメモリ１２０に保存されている情報はその所定の時点の内容に復元される。
【００３６】
さらに、退避した情報のレジスタ情報を、対応するレジスタ１４５に保存することによって、実行中の処理も復元することができる。例えば、アプリケーションプログラムの実行中に、外部のノイズなどの影響によってメインメモリ１２０に保存されている情報が変更され回復が不可能となった場合であっても、ある時点のメインメモリ１２０及びレジスタ１４５の情報に基づいて、メインメモリ１２０及びレジスタ１４５の情報を復元することができる。これにより、アプリケーションプログラムは途中から再開される。そして、これら処理のオーバーヘッドは、第１のＲＡＭ１２０の情報を復元するために、他のＲＡＭ１２５又は１３０に保存されている情報を取得して、その情報を第１のＲＡＭ１２０に保存するためのわずかな時間だけである。
【００３７】
図２はＣＰＵ１１５と第１のＲＡＭ１２０、第２のＲＡＭ１２５、及び、第３のＲＡＭ１３０との関係をブロック図で示す。
【００３８】
ＣＰＵ１１５は、ＣＰＵ用バス１３５を介してメインメモリである第１のＲＡＭ１２０と接続されており、ＣＰＵ用バス１３５、読み出し専用バス２２５、及び、読み出し用データバス２１５を介して第２のＲＡＭ１２５に接続されており、さらに、ＣＰＵ用バス１３５、読み出し専用バス２２５、及び、読み出し用データバス２２０を介して第３のＲＡＭ１３０に接続されている。そして、ＣＰＵ用バス１３５は、書き込み及び読み出しのために用いられる。したがって、ＣＰＵ１１５は、データの書き込みを第２のＲＡＭ１２５及び第３のＲＡＭ１３０に行うことはできないが、第１のＲＡＭ１２０に行うことができる。
【００３９】
第１のＲＡＭ１２０は、ＣＰＵ用バス１３５を介してＣＰＵ１１５と接続されており、書き込み用データバス２０５を介して及び読み出し用データバス２１５を介して、並びに、ＣＰＵ用バス１３５、読み出し専用バス２２５、及び、読み出し用データバス２１５を介して第２のＲＡＭ１２５に接続されており、さらに、読み出し用データバス２２０を介して第３のＲＡＭ１３０に接続されている。したがって、第１のＲＡＭ１２０に保存されているデータを書き込むための情報は、第３のＲＡＭ１３０には送られないが、第２のＲＡＭ１２５には送られる。
【００４０】
第２のＲＡＭ１２５は、書き込み用データバス２０５を介して及び読み出し用データバス２１５を介して第１のＲＡＭ１２０と接続されており、書き込み用データバス２１０を介して第３のＲＡＭ１３０に接続されており、さらに、読み出し用データバス２１５、読み出し専用バス２２５、及び、ＣＰＵ用バス１３５を介してＣＰＵ１１５に接続されている。したがって、第２のＲＡＭ１２５に保存されているデータを書き込むための情報は、第１のＲＡＭ１２０には送られないが、第３のＲＡＭ１３０に送られる。そして、第２のＲＡＭ１２５に保存されているデータを読み出すための情報は、第３のＲＡＭ１３０には送られないが、第１のＲＡＭ１２０及びＣＰＵ１１５に送られる。
【００４１】
第３のＲＡＭ１３０は、書き込み用データバス２１０を介して第２のＲＡＭ１２５と接続されており、読み出し用データバス２２０を介して第１のＲＡＭ１２０と接続されており、さらに、読み出し用データバス２２０、読み出し専用バス２２５、及び、ＣＰＵ用バス１３５を介してＣＰＵ１１５に接続されている。したがって、第３のＲＡＭ１３０に保存されているデータを書き込むための情報は、どの装置にも送られない。そして、第３のＲＡＭ１３０に保存されているデータを読み出すための情報は、第２のＲＡＭ１２５には送られないが、第１のＲＡＭ１２０及びＣＰＵ１１５に送られる。
【００４２】
これら記憶装置間の管理は、記憶装置管理部によって実現される。記憶装置管理部は、ＣＰＵ１１５、各種データバス、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、メモリ管理ユニット（ＭＭＵ）など、又は、それら一以上のものの組み合わせからなる。本発明において、各ＲＡＭに保存されている情報の管理は、ＤＭＡコントローラやメモリ管理ユニットなどを用いることによって、ＣＰＵ１１５を用いることなく実現することができる。また、ＣＰＵ１１５は、読み出し専用のバスを介して、第２のＲＡＭ１２５及び第３のＲＡＭ１３０と接続されている。よって、ＣＰＵ１１５は、情報をそれらのＲＡＭに直接書き込むことはできない。これにより、ＣＰＵ１１５などが誤動作した場合（例えば、ＣＰＵ１１５の暴走など）でも、ＣＰＵ１１５は、第２のＲＡＭ１２５及び第３のＲＡＭ１３０に保存されている情報を書き換えることはない。
【００４３】
図３は本発明の第１の実施例による記憶装置管理部の動作を示したフロー図である。本発明の第１の実施例において、記憶装置管理部は、メインメモリである第１のＲＡＭ１２０の所定の時点において保存されている情報（復元情報）を取得する（ステップ３０１）。記憶装置管理部は、復元情報を第２のＲＡＭ１２５に保存する（ステップ３０５）。記憶装置管理部は、その所定の時点を経過した後、第２のＲＡＭ１２５に保存されている所定の時点の復元情報に基づいて、第１のＲＡＭ１２０の情報を復元することができる（ステップ３１０）。
【００４４】
さらに、記憶装置管理部は、第１のＲＡＭ１２０の情報を復元するとき、第２のＲＡＭ１２５に保存されている所定の時点の復元情報に基づいて、レジスタ１４５の情報を復元することができる。通常、レジスタ１４５の情報はメインメモリ１２０に含まれていることから、第２のＲＡＭ１２５に保存されている復元情報にはレジスタ情報が含まれている。なお、ＣＰＵ１１５及びメインメモリ１２０の実現方法に依存して、レジスタ情報がメインメモリ１２０に保存されていない場合がある。その場合、記憶装置管理部は、メインメモリである第１のＲＡＭ１２０から復元情報を取得するとき、レジスタ１４５に保存されているレジスタ情報も取得し、復元情報にレジスタ情報を付加する。これにより、レジスタ情報は復元情報に含まれる。以下では、レジスタ情報が変更される度に、そのレジスタ情報は、メインメモリ１２０に保存されるものとする。なお、復元情報は、第１のＲＡＭ１２０の所定の時点において保存されている全ての情報とすることができる。また、復元情報は、第１のＲＡＭ１２０の所定の時点において保存されている一部の情報であってもよい。
【００４５】
レジスタ情報の復元は、記憶装置管理部が第２のＲＡＭ１２５に保存されている復元情報からレジスタ１４５に情報を直接保存することによって実行されてもよい。または、第１のＲＡＭ１２０が復元された後、ＣＰＵ１１５が、その第１のＲＡＭ１２０からレジスタ情報を取得し、その取得した情報をレジスタ１４５に保存することによってレジスタ情報を復元することもできる。
【００４６】
ここで、ＲＡＭ１２０、１２５、及び、１３０には、復元するための記憶装置情報及びレジスタ情報や、現在処理を行うための記憶装置情報及びレジスタ情報などの複数種類の情報が保存されている。したがって、ＲＡＭそれぞれにおいて、各情報が所定の領域に保存されることを予め定めておくことによって、記憶装置管理部は、所定の領域の情報がどのような情報であるかを判別することができる。さらに、その領域は、全てのＲＡＭにおいて同じ領域とすることができる。
【００４７】
図４は本発明の第２の実施例による記憶装置管理部の動作を示したフロー図である。本実施例において、装置１００は、第３のＲＡＭ１３０を備えている。ここで、第２のＲＡＭ１２５は、所定の時点の第１の復元情報を既に保存しているものとする。
【００４８】
最初に、記憶装置管理部は、所定の時点を経過した後、第２のＲＡＭ１２５に保存されている第１の復元情報を取得し（ステップ４０１）、取得した情報を第３のＲＡＭ１３０に保存することができる（ステップ４０５）。さらに、記憶装置管理部は、第１のＲＡＭ１２０のその時点において保存されている情報（第２の復元情報）を取得し（ステップ４１０）、取得した情報を第２のＲＡＭ１２５に上書きして保存する（ステップ４１５）。
【００４９】
したがって、ステップ４２０及び４２５において、記憶装置管理部は、第２のＲＡＭ１２５に保存されている１世代前の情報である第２の復元情報に基づいて、第１のＲＡＭ１２０及び／又はレジスタ１４５の情報を復元することができる。さらに、記憶装置管理部は、第３のＲＡＭ１３０に保存されている２世代前の情報である第１の復元情報に基づいて、第１のＲＡＭ１２０及び／又はレジスタ１４５の情報を復元することもできる。
【００５０】
復元情報を取得し、その復元情報をメインメモリ以外のＲＡＭに保存する処理は、記憶装置管理部によって時間の進行にしたがい繰り返し実行することができる。その繰り返しは、一定の周期毎、ランダムな間隔毎、所定の条件を満たしたときに、又は、それらの一又は二以上を組み合わせて行われてもよい。一定の周期の例としては、２ｍ秒などの極めて短い周期で実行することもできる。また、この一定の周期は、装置１００を用いて実行されるアプリケーションプログラムに依存させて変化させてもよい。ランダムな間隔の例としては、ランダムな数を取得し、その数を時間間隔として用いることができる。さらに、所定の条件を満たしたときの例としては、所定のプログラムが実行された場合（例えば、スーパーバイザーコール等の処理が実行された場合（これにより、制御されるプログラムはアプリケーションプログラムからＯＳプログラムに変化する））や、装置１００が所定のエラー処理をおこなった場合、割込み処理が発生した場合、さらには、所定の情報がメインメモリ１２０に保存された場合などである。
【００５１】
本発明の第３の実施例を図５、図６、及び、図７を参照して説明する。図５は、復元情報の取得及び保存を周期的に実行する実施例の処理フローを示す。本実施例において、レジスタ１４５の情報は、明示的な処理を実行することによってＲＡＭに保存される。図６は、図５の処理フローで示されているステップ５０５乃至５４０における各処理と記憶装置に保存されている情報との関係を示したタイムチャートであり、図７は、図５の処理フローで示されているステップ５５０乃至５６０における各処理と記憶装置に保存されている情報との関係を示したタイムチャートである。
【００５２】
図６及び図７において、横軸の矢印は時間の経過を示しており、アプリケーションプログラムの実行状態６５０及び７５０、並びに、割り込み処理の実行状態６５５及び７５５の行における網掛け部分は、それぞれの処理が実行中である状態を示す。そして、レジスタに保存されている情報６６０及び７６０、第１のＲＡＭに保存されている情報６７０及び７７０、並びに、第２のＲＡＭに保存されている情報６７５及び７７５の行において、Ｒ０、Ｒ１・・・、Ｍ０、Ｍ１・・・、及び、ＭＭ０、ＭＭ１・・・などは、保存されている情報を示す。また、Ｒ０、Ｒ１・・・、Ｍ０、Ｍ１・・・、及び、ＭＭ０、ＭＭ１・・・などにおいて、記号が同じである場合、保存されている情報が同じであることを表す。なお、図６及び図７において、レジスタ情報及び記憶装置情報は同時に変化しているが、当業者であれば明らかなように、それらが同時に変化しないように実現することもできる。図６及び図７は例示の目的で示しており、時間的縮尺は必ずしも正しくない。したがって、割り込み処理の実行時間は、アプリケーションプログラムの実行時間に対して非常に小さい割合にすることもできる。
【００５３】
最初に、装置１００自体の電源が投入され、装置１００全体の初期化が行われる（ステップ５０１）。図６のｔ１に示す通り、Ｒ０、Ｍ０、及び、ＭＭ０は、それぞれ、レジスタ１４５、メインメモリ１２０、及び、第２のＲＡＭ１２５の情報が初期化された情報であることを示す。なお、初期化によって、第２のＲＡＭ１２５に保存されている情報は、メインメモリ１２０に保存されている情報と同期化されてもよい（この場合、第２のＲＡＭ１２５の情報はＭＭ０ではなくＭ０となり、情報Ｍ０は、復元情報として用いられる）。その後、初期化が完了した後、図６のｔ３における状態６０１が示す通り、アプリケーションプログラムの実行が開始される（ステップ５０２）。アプリケーションプログラムの進行にしたがって、レジスタ情報はＲ０からＲ１へ、そして、Ｒ１からＲ２へ変化する。さらに、記憶装置情報もＭ０からＭ１へ、そして、Ｍ１からＭ２へ変化する。
【００５４】
図６のｔ５乃至ｔ１０において、割り込み処理のステップ５０５乃至５４０の一連のステップが実行される。図６のｔ５において、補助回路１０５は、ＣＰＵ１１５へ割り込み信号を送信する（ステップ５０５）。割り込み信号は、補助回路１０５内のタイマーによって一定の周期ごと（例えば、図６中の６９０及び６９５）に生成され、ＣＰＵ１１５に送信される。ここで、割り込み信号は、ソフトウエアからは制御することができない信号であるＮＭＩ信号（Non-Maskable Interrupt信号）とすることがきる。そして、ＣＰＵ１１５は、割り込み信号を受信すると、割り込み処理を開始する（ステップ５１０）。図６のｔ５における状態６０１及び６０５に示す通り、アプリケーションプログラムは中断しており、割り込み処理が開始される。
【００５５】
割り込み処理を開始すると、最初に、装置１００において誤動作が発生していないか確認する（ステップ５２０）。誤動作が発生していない場合、処理フローはステップ５２５へ進む。誤動作が発生している場合、処理フローはステップ５５０へ進む。誤動作が発生しているか否かを決定する条件は後述する。
【００５６】
装置１００において誤動作が発生していないと判断された場合（ステップ５２０）、ＣＰＵ１１５は、アプリケーションプログラムを実行するために必要なレジスタ１４５に保存されている情報であるレジスタ情報をメインメモリ１２０に退避する（ステップ５２５）。割り込み処理が終了した後にアプリケーションプログラムを再開させるため、図６のｔ５の時点で示す通り、メインメモリ１２０には、退避したレジスタ情報Ｒ２を含む記憶装置情報Ｍ３が保存されている。この動作は、通常の割り込み処理の動作である。ここで、割り込み処理は、アプリケーションプログラムで用いられるメインメモリ１２０の情報を変更しない。したがって、記憶装置情報Ｍ３は、割り込み処理を開始する直前の記憶装置情報Ｍ２及びレジスタ情報Ｒ２を含むことができる。
【００５７】
その後、図６のｔ１０において、記憶装置管理部は、メインメモリである第１のＲＡＭ１２０において保存されている情報（復元情報）を取得し（ステップ５３０）、その復元情報を第２のＲＡＭ１２５に保存する（ステップ５３５）。図６のｔ１０において、記憶装置管理部は、第１のＲＡＭ１２０において保存されている情報Ｍ４から復元情報を取得する。ここで、復元情報は、割り込み処理が実行される直前の記憶装置情報Ｍ２及びレジスタ情報Ｒ２である。したがって、図６のｔ１０の前後において、第２のＲＡＭ１２５に保存されている情報はＭＭ０からＭＭ１（Ｒ２とＭ２とからなる情報）に変更される。さらに、他の実施例において、復元情報ＭＭ１の複製を第２のＲＡＭ１２５の他の領域に保存することによって、装置１００の冗長化性能を向上させることもできる。
【００５８】
続いて、ＣＰＵ１１５は、割り込み処理を終了する（ステップ５４０）。具体的には、ステップ５２５において退避していたレジスタ情報（図６のｔ１０における記憶装置情報Ｍ４に含まれるレジスタ情報Ｒ２）を第１のＲＡＭ１２０から取り出し、そのレジスタ情報を用いて、対応するレジスタの情報を復元する。この動作は、割り込み処理から復帰させるための通常の動作である。割り込み処理の終了後、レジスタ１４５を割り込み処理前のレジスタ情報に戻すことができ、図６のｔ１０乃至ｔ１５における状態６０１及び６１０に示すように、アプリケーションプログラムが再開される。なお、図６の時間ｔ１０の直前において、第１のＲＡＭ１２０は割り込み処理を開始する直前の記憶装置情報Ｍ２を含んでいることから、メインメモリに保存されている情報を変更することなく、レジスタ１４５におけるレジスタ情報を復元するのみでアプリケーションプログラムは再開される。しかし、割り込み処理を終了するときに、ＣＰＵ１１５の命令に基づいて、記憶装置情報Ｍ２以外の不要な情報を第１のＲＡＭ１２０から削除することもできる。
【００５９】
その後、処理フローは、ステップ５０２に戻る。以降、同様に、ステップ５０２乃至５４０の一連のステップが繰り返される。したがって、第２のＲＡＭ１２５に保存されている情報は、その一連のステップが実行される度に、メインメモリ１００に保存されている情報及びレジスタ１４５に保存されている情報で上書きされる。これにより、割り込み処理を実行する間隔である所定の周期が２ｍ秒である場合、装置１００は、最大で約２ｍ秒前のメインメモリ１００に保存されていた情報を常に有することができる。
【００６０】
一方、図７のｔ１０において誤動作が発生したものとする。その後、図７のｔ１５において、装置１００に誤動作が発生していると判断され（ステップ５２０）、図７のｔ１０における状態７２０のアプリケーションプログラムの処理は正しく実行されていない可能性がある。したがって、レジスタ情報Ｒ１０及びＲ１１、並びに、メインメモリの情報Ｍ１０及びＭ１１は欠陥のある情報を含んでいる可能性がある（つまり、それら情報が正しくない可能性がある）。
【００６１】
その後、マイクロコンピュータの動作を回復させるため、図７のｔ２０において、補助回路１０５は、ＣＰＵ１１５のみをリセットする（ステップ５５０）。リセットの例として、補助回路１０５がＣＰＵ１１５へリセット信号を送信することによって行われる。これにより、レジスタ情報が初期化される。図７においてｔ２０直後のレジスタ情報Ｒ０は、初期化されていることを示す。
【００６２】
また、アプリケーションプログラムの実行プロセス及び割込み処理には関係なく、ＣＰＵ１１５などの誤動作検出部は、装置１００における誤動作の発生を検出する（ステップ５０３）。誤動作検出部が装置１００の誤動作の発生を検出した場合、処理フローはステップ５５０へ進む。これにより、装置１００において、定義されていない命令が実行される、存在しないメモリ空間にアクセスされたなどの誤動作が解消される。
【００６３】
図７のｔ２０において、記憶装置管理部は、第２のＲＡＭ１２５に保存されている復元情報を取得し（ステップ５５５）、取得した復元情報に基づいて、第１のＲＡＭ１２０及び対応するレジスタ１４５の情報を復元する（ステップ５６０）。これにより、第２のＲＡＭ１２５に保存されている復元情報ＭＭ２におけるレジスタ情報Ｒ６及び記憶装置情報Ｍ６を用いて、レジスタ１４５及びメインメモリ１２０の情報が復元される。したがって、図７のｔ２５において、レジスタ１４５はＲ０からＲ６に変更され、メインメモリ１２０の記憶装置情報はＭ１２からＭ６に変更される。そして、図７のｔ２５乃至ｔ３０における状態７１０及び７２０に示す通り、アプリケーションプログラムが再開される。
【００６４】
他の実施例として、本発明は、ＣＰＵ１１５のリセット（ステップ５５０）を処理フローに加えないようにすることができる。また、ステップ５１０、５２５、及び、５４０において示した割り込み処理を開始及び終了するための処理は一例であって、他の方法によって実現することもできる。さらに、ＣＰＵ１１５のリセットは、ウオッチドッグタイマによる処理や、所定のエラー発生後に実行される任意のエラー回復処理などによって実行されてもよい。
【００６５】
図６の６９０及び６９５を示した通り、ステップ５０５における補助回路１０５による割り込み信号の送信は、所定の周期で繰り返し行われる。よって、割り込み信号の受信を受けてから実行されるステップ５１０乃至５４０の一連のステップは、所定の周期内で完了しなければならない。なぜならば、一連のステップの実行が所定の周期内で完了しない場合、その所定の周期内（例えば、１回目の周期６９０）で実行される一連のステップと次の所定の周期内（例えば、２回目の周期６９５）で実行される一連のステップとが同時に実行されるため、処理順序の整合性が保てなくなる可能性があるからである。つまり、所定の周期が２ｍ秒である場合、一連のステップは２ｍ秒より少ない時間で完了する必要がある。
【００６６】
また、一連のステップが所定の周期の時間内で完了しない場合、装置１００は正常に動作していないことから、装置１００が誤動作を行っていると判定することができる。したがって、処理フローにおいて、その判定についてのステップを割り込み処理の終了前に追加することができる。さらに、装置１００が誤動作を行っていると判定された後の処理フローにおいて、ＣＰＵ１１５のリセット、並びに、メインメモリ１２０及びレジスタの情報を復元するステップを追加することができる。
【００６７】
なお、本実施例において、割り込み処理の繰り返しの実行間隔は、所定の周期としたが、ステップ５１０乃至５４０の一連のステップが完了する時間内であればランダムな時間間隔とすることもできる。
【００６８】
他の実施例として、ステップ５１０乃至５４０において、ＣＰＵ１１５のみを周期的にリセットするステップを追加することができる。また、必要に応じて、ＣＰＵ１１５のみをランダムにリセットするステップを追加することもできる。これらにより、装置１００への電源投入後に、ＣＰＵ１１５がリセットされることから、ＣＰＵ１１５に起因する誤動作を削減することができる。
【００６９】
また、ＣＰＵ１１５のみをリセットするステップは、如何なる処理フロー中の部分にも追加することができる。ただし、ＣＰＵ１１５をのみリセットするステップは、リセットの前にレジスタ情報を退避し、リセット後にその退避したレジスタ情報を対応するレジスタ１４５に復元することによって実現される。このステップは、ＣＰＵ１１５のみをリセットし、レジスタ情報を復元するだけの処理であるから非常に短時間の内にＣＰＵ１１５を初期化することができる。好ましい実施例としては、そのステップは、割り込み処理を終了するステップ（５４０）又は復元情報を取得するステップ（ステップ５３０）の前又は後ろに追加することができる。
【００７０】
さらに他の実施例において、第１のＲＡＭ１２０の情報を復元した後（ステップ５６０の後）、装置１００が誤動作から復帰しない場合、装置１００全体をリセットすることができる。これにより、装置１００の誤動作の原因が、ＣＰＵ１１５の誤動作ではなく、さらに、メインメモリ１２０及びレジスタ１４５の情報に起因していない場合であっても、装置１００を誤動作から復帰させることができる。
【００７１】
誤動作が発生しているか否かの判定は、例として、以下のようにして行うことができる。
・所定スタックポインタの範囲を予め定めておき、判定する際にスタックポインタがその範囲内にないことを検出する。
・アクセスされたメモリ空間が存在しないことを検出する。
・定義されていない命令が検出される。
・ＣＰＵ１１５に組み込まれている異常検出機能によって異常が検出される（例えば、割り算の計算が行われるときに分母がゼロである場合など）。
その他、従来から知られている様々な技術を用いることができる。
【００７２】
本発明の第４の実施例を図８及び図９を参照して説明する。本実施例において、装置１００はＲＡＭを３つ備えている。図８は、３つのＲＡＭを備えた装置１００において、復元情報の取得及び保存を周期的に実行する実施例の動作についての処理フローを示す。本実施例において、レジスタ１４５の情報は、明示的な処理を実行することによってＲＡＭに保存される。図９は、図８のフローで示されているステップ８０５乃至８４５における各処理と記憶装置に保存されている情報との関係を示したタイムチャートである。
【００７３】
図９において、横軸の矢印は時間の経過を示しており、アプリケーションプログラムの実行状態９５０及び割り込み処理の実行状態９５５の行における網掛け部分は、それぞれの処理が実行中である状態を示す。そして、レジスタに保存されている情報９６０、第１のＲＡＭに保存されている情報９６５、第２のＲＡＭに保存されている情報９７０、及び、第３のＲＡＭに保存されている情報９７５において、Ｒ０、Ｒ１・・・、Ｍ０、Ｍ１・・・、ＭＭ０、ＭＭ１・・・、及び、ＭＭＭ０、ＭＭＭ１・・・などは保存されている情報を示す。また、Ｒ０、Ｒ１・・・、Ｍ０、Ｍ１・・・、ＭＭ０、ＭＭ１・・・、及び、ＭＭＭ０、ＭＭＭ１・・・などにおいて、記号が同じである場合、保存されている情報が同じであることを表す。なお、図９において、レジスタ情報及び記憶装置情報は同時に変化しているが、当業者であれば明らかなように、それらが同時に変化しないように実現することもできる。図９は例示の目的で示しており、時間的縮尺は必ずしも正しくない。したがって、割り込み処理の実行時間は、アプリケーションプログラムの実行時間に対して非常に小さい割合にすることもできる。
【００７４】
最初に、装置１００自体の電源が投入され装置１００全体の初期化が行われる（ステップ８０１）。図９のｔ１に示す通り、初期化が実行される。Ｒ０、Ｍ０、ＭＭ０、及び、ＭＭＭ０は、それぞれ、レジスタ１４５、メインメモリ１２０、第２のＲＡＭ１２５、及び、第３のＲＡＭ１３０の情報が初期化された情報であることを示す。そして、初期化が完了した後、図９のｔ３における状態９０１が示す通り、アプリケーションプログラムの実行が開始される（ステップ８０２）。アプリケーションプログラムの進行にしたがって、レジスタ情報はＲ０からＲ１へ、そして、Ｒ１からＲ２へ変化する。さらに、記憶装置情報もＭ０からＭ１へ、そして、Ｍ１からＭ２へ変化する。
【００７５】
図９のｔ５乃至ｔ１０において、割り込み処理のステップ８０５乃至８４５の一連のステップが実行される。図９のｔ５において、補助回路１０５は、ＣＰＵ１１５へ割り込み信号を送信する（ステップ８０５）。割り込み信号は、補助回路１０５内のタイマーによって一定の周期ごとに（例えば、図９中の９８０、９８５、及び、９９５）生成され、ＣＰＵ１１５に送信される。ＣＰＵ１１５は、割り込み信号を受信すると、割り込み処理を開始する（ステップ８１０）。図９のｔ５における状態９０１及び９０５に示す通り、アプリケーションプログラムは中断しており、割り込み処理が開始される。
【００７６】
割り込み処理が開始した後、最初に、装置１００において誤動作が発生していないか確認する（ステップ８１５）。誤動作が発生していない場合、処理フローはステップ８２０へ進む。誤動作が発生している場合、処理フローはステップ８５０へ進む。
【００７７】
装置１００において誤動作が発生していないと判断された場合（ステップ８１５）、ＣＰＵ１１５は、アプリケーションプログラムを実行するために必要なレジスタ１４５に保存されている情報であるレジスタ情報をメインメモリ１２０に退避する（ステップ８２０）。割り込み処理が終了した後にアプリケーションプログラムを再開させるため、図９のｔ５に示す通り、メインメモリ１２０には、退避したレジスタ情報Ｒ２を含む記憶装置情報Ｍ３が保存されている。この動作は、通常の割り込み処理の動作である。ここで、割り込み処理は、アプリケーションプログラムで用いられるメインメモリ１２０の情報を変更しない。したがって、記憶装置情報Ｍ３は、割り込み処理を開始する直前の記憶装置情報Ｍ２及びレジスタ情報Ｒ２を含んでいる。
【００７８】
そして、記憶装置管理部は、第２のＲＡＭ１２５に保存されている情報を第３のＲＡＭ１３０に保存する（ステップ８２５）。これにより、図９のｔ７において、第３のＲＡＭ１３０に保存されている情報がＭＭＭ０からＭＭ０に変更される。
【００７９】
その後、記憶装置管理部は、メインメモリである第１のＲＡＭ１２０において保存されている情報（復元情報）を取得し（ステップ８３０）、取得した復元情報がメインメモリ１２０の情報を復元するために用いることができることを示すために、記憶装置管理部は、その復元情報が有効であることを示す情報を復元情報に付加する（ステップ８３５）。具体的には、復元情報に１ビット以上の情報を付加し、メインメモリ１２０の情報を復元するために用いることができる否かを示す有効フラグとして、その情報を用いることができる。復元情報が有効であることを設定するステップは本ステップのみで行われる。したがって、第２のＲＡＭ１２５における初期化された情報を示すＭＭ０及び第３のＲＡＭ１３０における初期化された情報を示すＭＭＭ０は、本ステップによって保存された情報ではないため、ＭＭ０及びＭＭＭ０の有効フラグはオフとなっている。したがって、情報ＭＭ０及びＭＭＭ０は、無効な復元情報である。
【００８０】
さらに、記憶装置管理部は、取得した復元情報を第２のＲＡＭ１２５に保存する（ステップ８４０）。したがって、図９のｔ１０において、第２のＲＡＭ１２５に保存された復元情報はＭＭ０からＭＭ１に変更される。ここで、復元情報は、図９のｔ１０直後の第２のＲＡＭ１２５に保存されている情報ＭＭ１であり、復元情報ＭＭ１は、割り込み処理が実行される直前である図９のｔ５におけるレジスタ情報Ｒ２及び記憶装置情報Ｍ２である。
【００８１】
続いて、ＣＰＵ１１５は、割り込み処理を終了する（ステップ８４０）。その後、処理フローは、ステップ８０５に戻る。
【００８２】
ステップ８０５に戻った後に再度実行されるステップ８２５乃至８４０を説明する。装置１００において誤動作が発生していないと判断された後（ステップ８１５）、記憶装置管理部は、第２のＲＡＭ１２５に保存されている情報を第３のＲＡＭ１３０に保存する（ステップ８２５）。図９のｔ２０において、第３のＲＡＭ１３０に保存されている情報がＭＭ０からＭＭ１に変更される。
【００８３】
その後、記憶装置管理部は、メインメモリである第１のＲＡＭ１２０において保存されている情報（復元情報）を取得し、（ステップ８３０）、その復元情報に有効であることを示す情報を付加し（ステップ８３５）、第２のＲＡＭ１２５に保存する（ステップ８４０）。したがって、図９のｔ２５において、第２のＲＡＭ１２５に保存されている情報はＭＭ１からＭＭ２に変更される。
【００８４】
その後、割り込み処理が終了し（ステップ８４５）、処理フローはステップ８０５に戻る。以降、同様に、ステップ８０５乃至８４０の一連のステップが繰り返される。
【００８５】
一方、装置１００において誤動作が発生していると判断された場合（ステップ８１５）、補助回路１０５は、ＣＰＵ１１５のみをリセットする（ステップ８５０）。その後、記憶装置管理部は、第２のＲＡＭ１２５に保存されている復元情報を取得する（ステップ８５５）。さらに、記憶装置管理部は、第２のＲＡＭ１２５から取得した復元情報がメインメモリ１２０の情報を復元するために用いることができるか判定する（ステップ８６０）。
【００８６】
ステップ８６０において、第２のＲＡＭ１２５から取得した復元情報の有効フラグがオンであると判定された場合、記憶装置管理部は、取得したその復元情報に基づいて、第１のＲＡＭ１２０及び対応するレジスタ１４５の情報を復元し、第２のＲＡＭ１２５に保存されている復元情報の有効フラグをオフにする（ステップ８６５）。そして、処理フローは、ステップ８０５に進む。
【００８７】
ステップ８６０において、第２のＲＡＭ１２５から取得した復元情報の有効フラグがオフであると判定された場合、記憶装置管理部は、第３のＲＡＭ１３０に保存されている復元情報を取得する（ステップ８７５）。そして、記憶装置管理部は、第３のＲＡＭ１３０から取得した復元情報がメインメモリ１２０の情報を復元するために用いることができるか判定する（ステップ８８０）。
【００８８】
ステップ８８０において、第３のＲＡＭ１３０から取得した復元情報の有効フラグがオンであると判定された場合、取得したその復元情報に基づいて、第１のＲＡＭ１２０及び対応するレジスタ１４５の情報を復元し、第３のＲＡＭ１３０に保存されている復元情報の有効フラグをオフにする（ステップ８８５）。
【００８９】
ステップ８８０において、第３のＲＡＭ１３０から取得した有効フラグがオフの場合、処理フローは、ステップ８０１に進み、装置１００全体が初期化される（ステップ８０１）。
【００９０】
図１０は、装置１００の第４の実施例についての使用例を示すタイムチャートである。最初に、ｔ１において、第２のＲＡＭ１２５に保存されている情報は、メインメモリの復元に用いることが可能な（有効フラグがオンである）情報ＭＭ２であり、第３のＲＡＭ１３０に保存されている情報は、有効フラグがオンであるＭＭ１である。
【００９１】
ｔ５乃至ｔ１０において、図８のステップ８０５乃至８４５が実行される。これにより、第２のＲＡＭ１２５に保存されている情報は、情報ＭＭ２から有効フラグがオンであるＭＭ３に変更され、第３のＲＡＭ１３０に保存されている情報は、情報ＭＭ１から有効フラグがオンであるＭＭ２に変更される。さらに、ｔ１５からｔ２０において、図８のステップ８０５乃至８４５が再度実行される。これにより、第２のＲＡＭ１２５に保存されている情報は、有効フラグがオンであるＭＭ４になり、第３のＲＡＭ１３０に保存されている情報は、有効フラグがオンであるＭＭ３となる。
【００９２】
ここで、ｔ２５において、装置１００が誤動作したとする。その後、ｔ３０において、割り込み処理が開始され、（図８のステップ８１０）、誤動作が検出される（図８のステップ８１５）。すると、ｔ３５において、ＣＰＵ１００のみがリセットされ（ステップ８５０）、レジスタ情報が初期化される（レジスタ情報がＲ０となる）。
【００９３】
ｔ４０において、第２のＲＡＭ１２５に保存されている情報ＭＭ４は、有効フラグがオンであるので、情報ＭＭ４を用いて、メインメモリ１２０の情報が復元され、第２のＲＡＭ１２５に保存されている情報ＭＭ４の有効フラグはオフとなる（図８のステップ８５５乃至８６５）。したがって、レジスタ情報はＲ０からＲ６に変更され、記憶装置情報はＭ１２からＭ６に変更される。これにより、ｔ４０において、アプリケーションプログラムの動作はｔ１５の直前の状態１０５０に復元される。
【００９４】
ここで、ｔ４５において、装置１００が、ふたたび誤動作したとする。この場合の誤動作の原因は、ＣＰＵ１１５に起因するものではなく、メインメモリ１２０に保存されている情報（例えば、レジスタ情報Ｒ６及び主記憶情報Ｍ６、又は、レジスタ情報Ｒ９及び主記憶情報Ｍ９）に起因する可能性が高い。
【００９５】
その後、ｔ５０において、割り込み処理が開始され（図８のステップ８１０）、誤動作が検出される（図８のステップ８１５）。すると、ｔ５５において、ＣＰＵ１００のみがリセットされ（ステップ８５０）、レジスタ情報が初期化される（レジスタ情報がＲ０となる）。
【００９６】
ｔ６０において、第２のＲＡＭ１２５に保存されている情報ＭＭ４は、有効フラグがオフであるから、情報ＭＭ４を用いたメインメモリ１２０の情報の復元は実行されない（図８のステップ８５５及び８６０）。ここで、第３のＲＡＭ１３０に保存されている情報ＭＭ３は、有効フラグがオンであるので、情報ＭＭ３を用いて、メインメモリ１２０の情報が復元され、第３のＲＡＭ１３０に保存されている情報ＭＭ３の有効フラグはオフとなる（図８のステップ８７５乃至８８５）。したがって、レジスタ情報はＲ０からＲ２に変更され、記憶装置情報はＭ１２からＭ２に変更される。これにより、ｔ６０において、アプリケーションプログラムの動作はｔ５の直前の状態である１０４０に復元される。
【００９７】
この例から分かるように、装置１００がメインメモリ１２０以外に２つのＲＡＭを備えることによって、装置１００に誤動作が発生した場合、２世代前の復元情報を用いて、メインメモリ１２０の情報を復元することができる。これにより、装置１００の信頼性がさらに向上する。
【００９８】
さらに、ｔ６５において、装置１００が、さらに誤動作した場合、処理フローは図８のステップ８１５から８５０へ進む。ここで、第２のＲＡＭ１２５に保存されている情報ＭＭ４、及び、第３のＲＡＭ１３０に保存されている情報ＭＭ３はともに有効フラグがオフであるから、メインメモリ１２０は、第２又は第３のＲＡＭ１２５又は１３０に保存されている復元情報を用いて復元されることはない（図８の処理フローは、ステップ８６０及びステップ８８０においてともに「Ｎｏ」の矢印へ進む）。したがって、装置１００全体が初期化される（図８のステップ８０１）。装置１００全体が初期化された場合、アプリケーションプログラムは初めから再実行される。
【００９９】
また、アプリケーションプログラムの実行プロセス及び割込み処理には関係なく、ＣＰＵ１１５などの誤動作検出部は、装置１００における誤動作の発生を検出する（ステップ８０３）。誤動作検出部が装置１００の誤動作の発生を検出した場合、処理フローはステップ８５０へ進む。これにより、装置１００において、定義されていない命令が実行される、存在しないメモリ空間にアクセスされたなどの誤動作が解消される。
【０１００】
図１１は、本実施例を実現するためのＣＰＵとＲＡＭとの関係をブロック図で示す。記憶装置コントローラ１１０５は、ＣＰＵ用データバス１３５を介して中央処置装置１１５と接続され、さらに、記憶装置用バス１１１０を介して第１のＲＡＭ１２０及び第２の書き換え可能な記憶装置１２５と接続されている。
【０１０１】
図１２は、図１１の記憶装置コントローラ１１０５を用いた実施例の動作を示した処理フローである。さらに、図１２は、図５に示した実施例を一部変更した実施例である。図５のステップ５５０乃至５６０において、メインメモリ１２０は、第２のＲＡＭ１２５に保存されている復元情報を第１のＲＡＭ１２０に保存することによって復元される。本実施例は、復元についてのステップであるこれらのステップ５５５及び５６０を変更することによって実現される。
【０１０２】
図１２において、ステップ１２０１乃至１２３０、１２４０、及び、１２５０は、図５のステップ５０１乃至５３０、５４０、及び、５５０とそれぞれ同じである。したがって、本実施例特有の処理であるステップ１２３５、１２５５、及び、それらに関連するステップについてのみ説明する。
【０１０３】
記憶装置管理部は、メインメモリに保存されている情報（復元情報）を取得する（ステップ１２３０）。記憶装置管理部は、その復元情報をメインメモリ以外のＲＡＭに保存する（ステップ１２３５）。
【０１０４】
その後、マイクロコンピュータに誤動作が発生することによって、処理フローはステップ１１５０へ進む。ＣＰＵ１１５がリセットされる（ステップ１１５０）。そして、記憶装置コントローラ１１０５は、メインメモリ以外の記憶装置をメインメモリに切替える（ステップ１２５５）。本フローにおいて、メインメモリが第１のＲＡＭ１２０であるとすると、本ステップにおいて、メインメモリは第１のＲＡＭ１２０から第２のＲＡＭ１２５に切替えられる。さらに、記憶装置管理部は、メインメモリに保存されている第２のＲＡＭ１２５に保存されている復元情報に基づいて、対応するレジスタ１４５の情報を復元する（ステップ１２６０）。
【０１０５】
また、アプリケーションプログラムの実行プロセス及び割込み処理には関係なく、ＣＰＵ１１５などの誤動作検出部は、装置１００における誤動作の発生を検出する（ステップ１２０３）。誤動作検出部が装置１００の誤動作の発生を検出した場合、処理フローはステップ１２５０へ進む。これにより、装置１００において、定義されていない命令が実行される、存在しないメモリ空間にアクセスされたなどの誤動作が解消される。
【０１０６】
本実施例においても、ＣＰＵ１１５のみを周期的にリセットするステップを追加することができる。また、装置１００は、３つ以上のＲＡＭを備えることができ、その場合、上述の有効フラグを用いることもできる。
【０１０７】
本実施例は、メインメモリの復元をデータの移動では無く、記憶装置コントローラ１１０５がメインメモリを切替えることによって実現する。したがって、復元情報が非常に大量である場合、本実施事例を用いることによって、データ転送にかかる処理時間の削減が行える。すなわち、本実施例による復元のための処理時間は、データの移動を実行している他の実施例の処理時間より短くなる。
【０１０８】
図１３は、メインメモリである第１のＲＡＭ１２０とメインメモリ以外の第２のＲＡＭ１２５との間にキャッシュメモリを用いた実施例を示すブロック図である。図１３において、キャッシュメモリ１３０５は、書き込み用データバス１３５０を介してＣＰＵ用データバス１３５に接続され、さらに、書き込み用データバス１３５５を介して第２のＲＡＭ１２５に接続されている。
【０１０９】
ＣＰＵ１１５がメインメモリである第１のＲＡＭ１２０に保存されている情報を変更した場合、記憶装置管理部は、ライトバック方式やライトスルー方式などの技術を用いて、キャッシュメモリ１３０５に保存されている情報を同様に変更する。その後、第２のＲＡＭ１２５に復元情報を保存するとき、メインメモリ１２０に保存されている情報を用いることなく、キャッシュメモリ１３０５において変更された情報のみを第２のＲＡＭ１２５に保存する。
【０１１０】
キャッシュメモリ１３０１は、アドレス部１３１５、データ部１３１０、タグ部１３２０からなる。キャッシュメモリ１３０１は、メインメモリ１２０に保存されている情報を全て保存することができる。また、キャッシュメモリ１３０１は、メインメモリ１２０において変更があった情報のみを保存することもできる。
【０１１１】
メインメモリ１２０に書き込みが行われると、記憶装置管理部は、その書き込みが行われたアドレスをアドレス部１３１５に保存し、そして、その書き込まれた内容であるデータをデータ部１３１０に保存する。さらに、記憶装置管理部は、メインメモリ１２０に保存されている情報のアドレスを管理するための情報であるタグを変更し、該当するアドレスが変更されたことを示す情報をタグに付加する。
【０１１２】
同じアドレスの情報に変更があった場合、データ部は変更された情報を上書きする。したがって、データ部は、変更された情報の変更履歴は持たず、最新の情報のみを有する。
【０１１３】
キャッシュメモリ１３０５がメインメモリ１２０の情報全てを保存している場合、タグは、対応するアドレスの情報に変更があったことを示す情報を有する。また、キャッシュメモリ１３０５がメインメモリ１２０において変更があった情報のみを保存している場合、あるアドレスのタグが存在するとき、そのアドレスは変更が有ったことを示す。
【０１１４】
復元情報として用いられるキャッシュメモリ１３０５に保存されている情報はメインメモリ１２０において変更があった情報又は変更があったことを示す情報を含んでいるため、第２のＲＡＭ１２５に保存すべき記憶装置情報は、キャッシュメモリ１３０５を用いることによって、メインメモリ１２０において変更があった情報のみに限定することができる。したがって、メインメモリ１２０から第２のＲＡＭ１２５に転送するデータ容量が削減され、データの転送時間が大幅に削減される。
【０１１５】
キャッシュメモリ１３０５に保存されている情報は、所定の期間におけるメインメモリ１２０と第２のＲＡＭ１２５とに保存されている情報の差分を示す情報を含んでいることから、所定の期間の開始時点において、第１及び第２のＲＡＭ１２０及び１２５とキャッシュメモリ１３０５とに保存されている情報は同期化されている必要がある。つまり、装置１００が初期化された後や、メインメモリ１２０が復元された後などに、記憶装置管理部は、メインメモリ１２０に保存されている情報を用いて、第２のＲＡＭ１２５に保存されている情報を更新する必要があり、さらに、タグ部１３２０の情報をクリアする、又は、キャッシュメモリ１３０５の全ての情報をクリアする必要がある。
【０１１６】
上記の実施例において、２つ又は３つのＲＡＭを有する装置１００について説明した。しかしながら、装置１００は、さらに多くのＲＡＭを備えることができる（逆に、３つのＲＡＭを２つに置き換えることもできる）。これにより、より多くの世代を管理することができる。また、ＲＡＭを冗長化させて装置１００の信頼性を向上させることもできる。
【０１１７】
上記の実施例において示したＲＡＭは、特許請求の範囲に記載した「書き換え可能な記憶装置」の一例である。書き換え可能な記憶装置は、不揮発性メモリなどの記憶装置であって、書き換えが行える記憶装置全てを含む。特に、書き換え可能な記憶装置は、主記憶装置として用いることが可能な記憶装置である。
【０１１８】
上記の実施例において示したＣＰＵは、特許請求の範囲に記載した「中央処理装置」の一例である。中央処理装置は、所定の装置の機能を制御するための回路又は装置であるＣＰＵ、ＭＰＵ、プロセッサ、マイクロプロセッサなどを含む。
【図１】
0005579257.tif 000002
【図２】
0005579257.tif 000003
【図３】
0005579257.tif 000004
【図４】
0005579257.tif 000005
【図５】
0005579257.tif 000006
【図６】
0005579257.tif 000007
【図７】
0005579257.tif 000008
【図８】
0005579257.tif 000009
【図９】
0005579257.tif 000010
【図１０】
0005579257.tif 000011
【図１１】
0005579257.tif 000012
【図１２】
0005579257.tif 000013
【図１３】
0005579257.tif 000014