(57)【要約】【課題】制御手段による計算・演算の途中から処理を再開することができる仕組みを提供する。【解決手段】情報処理装置１を起動するときに、ＣＰＵ１１は、メモリ１２に記憶されているレジスタ１１０の複製を、そのレジスタ１１０に記憶させる。次に、ＣＰＵ１１は、処理要求がある場合にはその要求された処理を実行する。処理要求がない場合には、ＣＰＵ１１は、情報処理装置１が所定の終了条件を満たしていれば、処理状態の退避を行いつつ電源を遮断する終了処理を行う。また、ＣＰＵ１１は、情報処理装置１が所定の退避条件を満たしていれば、レジスタ１１０に記憶されている記憶内容の複製を計算実行領域に記憶させてから、この計算実行領域を退避領域として特定するとともに、当該退避領域以外の領域を主領域として特定する退避処理を行う。【選択図】図１
2010020748.tif 000002
【特許請求の範囲】
【請求項１】
情報を記憶する揮発性のレジスタと、
情報を記憶する不揮発性のメモリと、
前記メモリと前記レジスタとを用いて処理を実行する処理手段と、
前記処理手段による或る処理の時点で前記レジスタに記憶されている記憶内容の複製を、当該時点にて前記メモリに記憶されている記憶内容と対応付けて、前記メモリに記憶させる退避手段と、
自装置を起動するときに、前記メモリに記憶されている前記複製を前記レジスタに記憶させる起動手段とを備え、
自装置が起動されたのち、前記処理手段は、前記レジスタに記憶されている記憶内容と、当該記憶内容の複製と対応付けられている前記メモリの記憶内容とを用いて、処理を実行する
ことを特徴とする記憶制御装置。
【請求項２】
前記処理手段は、前記メモリにおいて主領域として特定した記憶領域と、前記レジスタとを用いて処理を実行し、
前記退避手段は、前記レジスタに記憶されている記憶内容の複製を前記主領域に記憶させてから、当該主領域の記憶領域を退避領域として特定するとともに、当該退避領域以外の領域を主領域として特定し、
前記起動手段は、自装置を起動するときに、前記退避手段により特定された退避領域を主領域として特定する一方、前記退避手段により特定された主領域を退避領域として特定し、
自装置が起動されたのち、前記処理手段は、前記レジスタに記憶されている記憶内容と、前記起動手段により特定された主領域に記憶されている記憶内容とを用いて処理を実行する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項３】
前記処理手段は、前記メモリにおいて主領域として特定した記憶領域と、前記レジスタとを用いて処理を実行し、
前記退避手段は、前記レジスタに記憶されている記憶内容の複製を前記主領域に記憶させてから、当該主領域の記憶領域を退避領域として特定するとともに、当該退避領域以外の領域を主領域として特定し、
前記起動手段は、自装置を起動するときに、前記退避手段により特定された退避領域に記憶されている前記レジスタの記憶内容の複製を前記レジスタに記憶させる一方、当該退避領域に記憶されている前記主領域の記憶内容の複製を、前記退避手段により特定された主領域に記憶させ、
自装置が起動されたのち、前記処理手段は、前記レジスタに記憶されている記憶内容と、前記退避手段により特定された主領域に記憶されている記憶内容とを用いて、処理を実行する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項４】
前記処理手段は、前記メモリにおいて主領域として特定した記憶領域と、前記レジスタとを用いて処理を実行し、
前記退避手段は、前記メモリにおいて前記主領域とは異なる退避領域として特定した記憶領域に、前記主領域と前記レジスタのそれぞれに記憶されている記憶内容の複製を対応付けて記憶させ、
前記起動手段は、自装置を起動するときに、前記退避領域に記憶されている前記レジスタの記憶内容の複製を前記レジスタに記憶させる一方、当該退避領域において前記主領域の記憶内容の複製が記憶されている記憶領域を、前記主領域として特定し、
自装置が起動されたのち、前記処理手段は、前記レジスタに記憶されている記憶内容と、前記起動手段により特定された前記主領域に記憶されている記憶内容とを用いて、処理を実行する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項５】
前記処理手段は、前記メモリにおいて主領域として特定した記憶領域と、前記レジスタとを用いて処理を実行し、
前記退避手段は、前記メモリにおいて前記主領域とは異なる退避領域として特定した記憶領域に、前記主領域と前記レジスタのそれぞれに記憶されている記憶内容の複製を対応付けて記憶させ、
前記起動手段は、自装置を起動するときに、前記退避領域に記憶されている前記レジスタの記憶内容の複製を前記レジスタに記憶させる一方、当該退避領域に記憶されている前記主領域の記憶内容の複製を、前記主領域に記憶させ、
自装置が起動されたのち、前記処理手段は、前記レジスタに記憶されている記憶内容と、前記メモリの主領域に記憶されている記憶内容とを用いて、処理を実行する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項６】
前記退避手段は、前記或る処理の時点における前記メモリの記憶内容が記憶されている領域を識別する退避領域識別情報を、前記レジスタに記憶されている記憶内容の複製と対応付けて前記メモリに記憶させる
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項７】
前記退避手段は、電源を遮断する旨の制御命令を受け取ると、電源が遮断されるまでの間に、前記レジスタに記憶されている記憶内容の複製を、前記メモリの記憶内容が記憶されている領域を識別する退避領域識別情報と対応付けて前記メモリに記憶させる
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項８】
前記処理手段は、前記メモリの記憶領域において主領域として特定した記憶領域と、前記レジスタとを用いて処理を実行し、
前記メモリは、前記主領域を複数に区分けしたメモリ領域毎に、当該メモリ領域に記憶されている記憶内容が前記メモリにて退避領域として特定された記憶領域に記憶されている退避済の状態であるか否かを記憶し、
前記退避手段は、
前記処理手段が前記処理を実行するときに、前記メモリ領域に記憶されている記憶内容の複製を、特定した退避領域に記憶させて、該メモリ領域の記憶内容が退避済の状態であることを前記メモリに記憶させ、前記レジスタに記憶されている記憶内容の複製を、前記メモリにおいて前記レジスタに対応する退避領域に記憶させ、
前記起動手段は、
自装置を起動する場合において、前記メモリ領域毎に退避済の状態であるか否かを判定し、退避済の状態である場合は退避領域のデータを用いて処理を再開し、退避済の状態でない場合は、主領域のデータを用いて処理を再開する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項９】
請求項１から８のいずれかに記載の記憶制御装置と、
前記処理手段が実行した処理の結果を出力する出力手段と
を具備することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び情報処理装置に関する。
【背景技術】
【０００２】
近年では、不揮発性記憶装置に対するアクセス速度が向上したため、主記憶装置として、不揮発性の記憶装置を利用した情報処理装置が開発されている。特許文献１には、揮発性メモリと不揮発性メモリを主記憶メモリとして用いた技術が開示されている。また、特許文献２には、不揮発性のバッファを用いることで、急な電源遮断に対して処理単位で復元可能なシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３６２４２６号公報
【特許文献２】特開２００５−３５２７６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＣＰＵの処理結果は主記憶メモリとレジスタに随時書き込まれる。よって、主記憶メモリとレジスタに記憶されている記憶内容を退避させてから電源断（又はＣＰＵに電力供給しない省電力モード）をすれば、再び電源が投入された後に（又は省電力モードから通常の動作モードに復帰した後に）、既に処理した結果から計算・演算を開始することができる。
【０００５】
しかしながら、システムが予期しないタイミングで電源断が起こった場合、レジスタの保存ができず再び電源が投入された後に処理の継続ができない。このとき、電源断が起こる前の時点でのＣＰＵのレジスタと主記憶メモリの記憶内容があれば、ＣＰＵの計算・演算の途中から処理を再開することが可能となる。そこで、本発明は、制御手段による計算・演算の途中から処理を再開することができる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、情報を記憶する揮発性のレジスタと、情報を記憶する不揮発性のメモリと、前記メモリと前記レジスタとを用いて処理を実行する処理手段と、前記処理手段による或る処理の時点で前記レジスタに記憶されている記憶内容の複製を、当該時点にて前記メモリに記憶されている記憶内容と対応付けて、前記メモリに記憶させる退避手段と、自装置を起動するときに、前記メモリに記憶されている前記複製を前記レジスタに記憶させる起動手段とを備え、自装置が起動されたのち、前記処理手段は、前記レジスタに記憶されている記憶内容と、当該記憶内容の複製と対応付けられている前記メモリの記憶内容とを用いて、処理を実行することを特徴とする記憶制御装置である。
【発明の効果】
【０００７】
本発明に係る記憶制御装置によれば、制御手段による計算・演算の途中から処理を再開することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る情報処理装置の全体構成を示すブロック図である。
【図２】情報処理装置のメモリの構成を示す概略図である。
【図３】情報処理装置の全体処理の動作を説明するフロー図である。
【図４】情報処理装置の起動処理の動作を説明するフロー図である。
【図５】起動処理の動作の一例において、記憶媒体の状態遷移を示した図である。
【図６】情報処理装置の退避処理の動作を説明するフロー図である。
【図７】退避処理の動作の一例において、記憶媒体の状態遷移を示した図である。
【図８】情報処理装置の終了処理の動作を説明するフロー図である。
【図９】終了処理の動作の一例において、記憶媒体の状態遷移を示した図である。
【図１０】処理開始前に退避処理を行う起動処理の動作を説明するフロー図である。
【図１１】起動処理の動作の一例において、記憶媒体の状態遷移を示した図である。
【図１２】領域を交換しない退避処理の動作を説明するフロー図である。
【図１３】退避処理の動作の一例において、記憶媒体の状態遷移を示した図である。
【図１４】割り当て関係を保持する情報処理装置の動作を説明するフロー図である。
【図１５】変形例の動作の一例において、記憶媒体の状態遷移を示した図である。
【図１６】変形例における起動処理の動作を説明する図である。
【図１７】ＭＭＵを備えた情報処理装置の全体構成を示すブロック図である。
【図１８】メモリとアドレス表の構成を示す図である。
【図１９】変形例における情報処理装置の全体処理の動作を説明するフロー図である。
【図２０】変形例における起動処理の動作を説明するフロー図である。
【図２１】変形例におけるデータ退避処理の動作を説明するフロー図である。
【図２２】変形例におけるレジスタ退避処理の動作を説明するフロー図である。
【図２３】変形例における記憶媒体の状態遷移の一例を示した図である。
【図２４】変形例における情報処理装置の全体構成を示すブロック図である。
【図２５】変形例におけるメモリの構成を示す概略図である。
【図２６】変形例における起動処理の動作を説明するためのフロー図である。
【図２７】変形例におけるデータ退避処理の動作を説明するためのフロー図である。
【図２８】変形例におけるレジスタ退避処理の動作を説明するためのフロー図である。
【図２９】変形例における記憶媒体の状態遷移の一例を示した図である。
【図３０】変形例における情報処理装置の全体構成を示すブロック図である。
【図３１】変形例におけるメモリの構成を示す概略図である。
【図３２】変形例における情報処理装置の全体処理の動作を説明するフロー図である。
【図３３】変形例における起動処理の動作を説明するためのフロー図である。
【図３４】変形例におけるデータ退避処理の動作を説明するためのフロー図である。
【図３５】変形例におけるリフレッシュ処理の動作を説明するためのフロー図である。
【図３６】変形例における記憶媒体の状態遷移の一例を示した図である。
【図３７】変形例における記憶媒体の状態遷移の一例を示した図である。
【図３８】変形例における記憶媒体の状態遷移の一例を示した図である。
【図３９】変形例における記憶媒体の状態遷移の一例を示した図である。
【発明を実施するための形態】
【０００９】
本発明を実施するための最良の形態について説明する。
（Ａ：構成）
図１は、実施形態に係る情報処理装置１の全体構成を示すブロック図である。ＣＰＵ１１は、記憶部１４に記憶されているコンピュータプログラムを読み出して実行することにより情報処理装置１の各部を制御する。ＣＰＵ１１は、情報を記憶する揮発性のレジスタ１１０を備えており、処理を実行する際にこのレジスタ１１０を使用する。メモリ１２は、情報を記憶する不揮発性のメモリであり、例えばフラッシュメモリなどである。このメモリ１２には、ＣＰＵ１１がプログラムを実行する際に利用される領域として、領域Ａ１２１と領域Ｂ１２２の２つの領域が備えられている。つまり、ＣＰＵ１１は、メモリ１２とレジスタ１１０とを用いて処理を実行する処理手段である。また、メモリ１２には、レジスタ１１０の記憶内容を最も直近に退避した領域を示すレジスタフラグ１２０が記憶される。メモリ置換ユニット１３は、システムバス１９の置換回路であり、ＣＰＵ１１とメモリ１２の間に設置され、ＣＰＵ１１からの操作でメモリ１２の領域Ａ１２１と領域Ｂ１２２との置換を行う。これにより、ＣＰＵ１１が計算実行領域として扱うアドレスが、実際のメモリ１２の領域Ａ１２１と領域Ｂ１２２のいずれかに割り当てられる。なお、本実施形態において、この割り当て関係は電源遮断とともに失われる。また、ＣＰＵ１１は、メモリ置換ユニット１３に対して要請することにより、その時点でいずれの領域を計算実行領域に割り当てているかについての情報を得ることができるように構成されている。
記憶部１４はハードディスクドライブなどの大容量の記憶手段であり、ＣＰＵ１１に読み込まれるプログラムを記憶するほか、このプログラムで使用される種々のデータを記憶する。操作部１５は各種の指示を入力するための方向ボタンやスイッチなどを備えており、利用者による操作を受け付けてその操作内容に応じた信号をＣＰＵ１１に供給する。出力部１６は、例えばディスプレイ装置などの出力装置であり、ＣＰＵ１１から与えられるデータに基づいてＣＰＵ１１が実行した処理の結果等、各種の情報を出力する。これらの各部はシステムバス１９に接続されている。
【００１０】
図２は、情報処理装置１のメモリ１２の構成を示す概略図である。メモリ１２のレジスタフラグ１２０は、少なくとも「領域Ａ」「領域Ｂ」「領域Ａおよび領域Ｂのいずれにも特定されない領域（以下、領域Ｘという）」の３つの状態を示すことができるデータであり、例えば、２ビットの記憶容量を有する記憶素子である。ここで、レジスタフラグ１２０は、「０」「１」「２」「３」の４つの整数を表すことができるものとし、レジスタフラグ１２０が「１」のときは「領域Ａ」が、「２」のときは「領域Ｂ」が、それ以外のときは「領域Ｘ」が、それぞれ示されている。メモリ１２の領域Ａ１２１は、さらにレジスタ記憶領域Ａ１２１０とデータ記憶領域Ａ１２１１とを有する。レジスタ記憶領域Ａ１２１０は、ＣＰＵ１１のレジスタ１１０の記憶内容をＣＰＵ１１の指示に応じて記憶する領域である。データ記憶領域Ａ１２１１は、ＣＰＵ１１がプログラムを実行する際に利用される領域である。メモリ１２の領域Ｂ１２２は、レジスタ記憶領域Ｂ１２２０とデータ記憶領域Ｂ１２２１とを有するが、それぞれ領域Ａ１２１のレジスタ記憶領域Ａ１２１０とデータ記憶領域Ａ１２１１と同様の機能を有しているものであるので、説明を省略する。
【００１１】
（Ｂ：動作）
（Ｂ−１：全体処理の動作）
次に、実施形態に係る情報処理装置１の動作を説明する。図３は、情報処理装置１の全体処理の動作を説明するためのフロー図である。まず、情報処理装置１に電力が供給されると、情報処理装置１のＣＰＵ１１は、起動処理を行う（ステップＳＡ１００）。次に、ＣＰＵ１１は、処理要求があるか否かを判断し（ステップＳＡ００１）、処理要求があると判断すると（ステップＳＡ００１；ＹＥＳ）、その要求された処理を実行する（ステップＳＡ００２）。処理要求がないと判断すると（ステップＳＡ００１；ＮＯ）、ＣＰＵ１１は、所定の終了条件を満たしているか否かを判断する（ステップＳＡ００３）。この所定の終了条件としては様々なものが適用し得るが、本実施形態においては、ＣＰＵ１１が、操作部１５を介して利用者から終了指示を受けたことを「所定の終了条件」とする。この終了条件を満たしていると判断すると（ステップＳＡ００３；ＹＥＳ）、ＣＰＵ１１は、終了処理を行い（ステップＳＡ３００）、処理を終了する。
【００１２】
一方、終了条件を満たしていないと判断すると（ステップＳＡ００３；ＮＯ）、ＣＰＵ１１は、所定の退避条件を満たしているか否かを判断する（ステップＳＡ００４）。この所定の退避条件としては様々なものが適用し得るが、例えば、ＣＰＵ１１の計算負荷が一定時間に亘ってある水準以下になったこと、すなわち、いわゆる一定時間以上のアイドル時間を検知したことを「所定の退避条件」としてもよいし、操作部１５を介して利用者から退避処理を行う旨の指示を受けたことを「所定の退避条件」としてもよい。この退避条件を満たしていると判断すると（ステップＳＡ００４；ＹＥＳ）、ＣＰＵ１１は、退避処理を行い（ステップＳＡ２００）、その退避条件をクリアした後に（ステップＳＡ００５）、処理をステップＳＡ００１に戻す。一方、退避条件を満たしていないと判断すると（ステップＳＡ００４；ＮＯ）、ＣＰＵ１１は、直接、処理をステップＳＡ００１に戻す。以下、上述の起動処理、退避処理および終了処理の動作の詳細をそれぞれ説明する。なお、これらの処理の最中には、メモリ１２とレジスタ１１０は他の割込み処理などを受け付けない。したがって例えば、並列処理を行う装置構成の場合には、これらの処理は、メモリ１２とレジスタ１１０をロックした状態で実行される。
【００１３】
（Ｂ−２：起動処理の動作）
まず起動処理について説明する。起動処理とは、おおよそ、情報処理装置１を起動するときに、メモリ１２に記憶されているレジスタ１１０の複製を、そのレジスタ１１０に記憶させる、つまり書き戻す処理である。この起動処理はＣＰＵ１１によって行われるから、ＣＰＵ１１は、起動処理を行う起動手段である。
図４は、情報処理装置１の起動処理の動作を説明するためのフロー図である。ＣＰＵ１１は、メモリ１２のレジスタフラグ１２０を参照し、レジスタフラグ１２０が「１」であるか否かを判断する（ステップＳＡ１０１）。そして、レジスタフラグ１２０が「１」であると判断した場合には（ステップＳＡ１０１；ＹＥＳ）、ＣＰＵ１１は、領域Ａ１２１のレジスタ記憶領域Ａ１２１０から記憶内容を読み出してＣＰＵ１１のレジスタ１１０に複製することにより、レジスタ１１０を復元し（ステップＳＡ１０２）、レジスタフラグ１２０に「０」を設定し（ステップＳＡ１０３）、メモリ置換ユニット１３により、計算実行領域を領域Ａ１２１に設定する（ステップＳＡ１０４）。
【００１４】
一方、レジスタフラグ１２０が「１」でないと判断した場合には（ステップＳＡ１０１；ＮＯ）、ＣＰＵ１１は、レジスタフラグ１２０が「２」であるか否かを判断する（ステップＳＡ１０５）。そして、レジスタフラグ１２０が「２」であると判断した場合には（ステップＳＡ１０５；ＹＥＳ）、ＣＰＵ１１は、領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０から記憶内容を読み出してＣＰＵ１１のレジスタ１１０に複製することにより、レジスタ１１０を復元し（ステップＳＡ１０６）、レジスタフラグ１２０に「０」を設定し（ステップＳＡ１０７）、メモリ置換ユニット１３により、計算実行領域を領域Ｂ１２２に設定する（ステップＳＡ１０８）。
【００１５】
ステップＳＡ１０５において、レジスタフラグ１２０が「２」でないと判断した場合には（ステップＳＡ１０５；ＮＯ）、ＣＰＵ１１は、プログラムによって予め定められた態様でレジスタ１１０を初期化し（ステップＳＡ１０９）、プログラムによって指定されるレジスタ１１０に記憶された記憶内容と対応付けるように領域Ｘを初期化し（ステップＳＡ１１０）、メモリ置換ユニット１３により、計算実行領域をステップＳＡ１１０で初期化された領域Ｘに設定する（ステップＳＡ１１１）。なお、上述した、プログラムによって指定される領域Ｘは、領域Ａ１２１または領域Ｂ１２２であるが、これらのいずれかがプログラムによって予め定められていてもよいし、ステップＳＡ１０５の判断を行った時点での計算実行領域に基づいて決定してもよい。
【００１６】
以上の動作により、情報処理装置１は起動される。この起動処理によって、レジスタフラグ１２０が示す領域が主領域として特定され、レジスタフラグ１２０が示す領域でない領域が退避領域として特定される。そして、その後、ＣＰＵ１１は、レジスタ１１０に記憶されている記憶内容と、その記憶内容の複製と対応付けられている領域Ａ１２１または領域Ｂ１２２の記憶内容とを用いて、処理を実行する。図５は、この起動処理の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。まず、ステップＳＡ１０１において、ＣＰＵ１１の揮発性の記憶装置であるレジスタ１１０は、電源が投入された直後であるから、不特定の値（以下「Ｘ」で表す）を示している。同様に、メモリ置換ユニット１３が計算実行領域として指定する領域も「Ｘ」である。一方、メモリ１２は不揮発性の記憶装置であるため、電源遮断中にもその記憶内容を保持している。メモリ１２のレジスタフラグ１２０は「１」であるため、ステップＳＡ１０１の判断の結果、ＣＰＵ１１はステップＳＡ１０２へ処理を進める。そして、ステップＳＡ１０２において、ＣＰＵ１１は、メモリ１２の領域Ａ１２１のレジスタ記憶領域Ａ１２１０から、その記憶内容である「Ｒ１」を読み出し、レジスタ１１０の値をこの「Ｒ１」で上書きする。次に、ＣＰＵ１１は、ステップＳＡ１０３において、レジスタフラグ１２０を「０」に設定し、ステップＳＡ１０４において、メモリ置換ユニット１３を制御し、計算実行領域としてメモリ１２の領域Ａ１２１を割り当てる（以下図において、この「計算実行領域として領域Ａ１２１を割り当てた状態」を「Ａ」と示す。同様に「計算実行領域として領域Ｂ１２２を割り当てた状態」を「Ｂ」と示す。）。
【００１７】
例えば、電源が投入されてからステップＳＡ１０３において、レジスタフラグ１２０に「０」が設定されるまでの間に、予期せぬ原因により電源が遮断されると、電源を再投入したときにはレジスタフラグ１２０は「１」であるから、上述と同様の処理（ステップＳＡ１０１；ＹＥＳ→ステップＳＡ１０２→ステップＳＡ１０３→ステップＳＡ１０４）が繰り返される。一方、ステップＳＡ１０３においてレジスタフラグ１２０に「０」が設定された後に、予期せぬ原因により電源が遮断されると、電源を再投入したときにはレジスタフラグ１２０は「０」であるから、ＣＰＵ１１による処理は、「ステップＳＡ１０１；ＮＯ→ステップＳＡ１０５；ＮＯ→ステップＳＡ１０９→ステップＳＡ１１０→ステップＳＡ１１１→ステップＳＡ１１２」の順に行われる。この処理が行われることにより、情報処理装置１は、各記憶装置を初期状態に設定することとなる。
【００１８】
（Ｂ−３：退避処理の動作）
次に、退避処理の動作を説明する。ここでいう、退避処理とは、ＣＰＵ１１による或る処理の時点でレジスタ１１０記憶されている記憶内容の複製を、当該時点にてメモリ１２に記憶されている記憶内容と対応付けて、そのメモリ１２に記憶させる処理のことを言う。この退避処理はＣＰＵ１１によって行われるから、ＣＰＵ１１は、退避処理を行う退避手段である。
【００１９】
図６は、情報処理装置１の退避処理の動作を説明するためのフロー図である。
図６において、ＣＰＵ１１は、メモリ置換ユニット１３に要請して計算実行領域が領域Ａ１２１であるか否かを判断する（ステップＳＡ２０１）。計算実行領域が領域Ａ１２１であると判断した場合には（ステップＳＡ２０１；ＹＥＳ）、ＣＰＵ１１は、レジスタ１１０の記憶内容を領域Ａ１２１のレジスタ記憶領域Ａ１２１０に記憶させて（ステップＳＡ２０２）、レジスタフラグ１２０に「１」を設定する（ステップＳＡ２０３）。そして、領域Ｂ１２２のデータ記憶領域Ｂ１２２１を、領域Ａ１２１のデータ記憶領域Ａ１２１１で上書きし（ステップＳＡ２０４）、メモリ置換ユニット１３を制御し、計算実行領域としてメモリ１２の領域Ｂ１２２を割り当てる（ステップＳＡ２０５）。
【００２０】
一方、計算実行領域が領域Ａ１２１でないと判断した場合には（ステップＳＡ２０１；ＮＯ）、ＣＰＵ１１は、計算実行領域が領域Ｂ１２２であると判断し、レジスタ１１０の記憶内容を領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０に記憶させて（ステップＳＡ２０６）、レジスタフラグ１２０に「２」を設定する（ステップＳＡ２０７）。そして、領域Ａ１２１のデータ記憶領域Ａ１２１１を、領域Ｂ１２２のデータ記憶領域Ｂ１２２１で上書きし（ステップＳＡ２０８）、メモリ置換ユニット１３を制御し、計算実行領域としてメモリ１２の領域Ａ１２１を割り当てる（ステップＳＡ２０９）。
【００２１】
以上の動作により、情報処理装置１は、ある時点での計算実行領域とレジスタ１１０の記憶内容を計算実行領域に複製し、計算実行領域のデータを退避領域に複製した上で、計算実行領域と退避領域を置換することで、情報処理装置１の状態のバックアップ（退避）を行う。すなわち、ＣＰＵ１１は、レジスタ１１０に記憶されている記憶内容の複製を計算実行領域に記憶させてから、この計算実行領域を退避領域として特定するとともに、当該退避領域以外の領域を主領域として特定する退避手段である。図７は、この退避処理の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。上述したステップＳＡ１０４の後、ステップＳＡ２０１が行われるまでにステップＳＡ００１の処理要求があった場合には、ＣＰＵ１１は、ステップＳＡ００２の処理を実行する。すなわち、ＣＰＵ１１は、レジスタ１１０と計算実行領域である領域Ａ１２１のデータ記憶領域Ａ１２１１を用いて処理を行うため、レジスタ１１０とデータ記憶領域Ａ１２１１は処理内容に応じて変化する。ここでは、レジスタ１１０は「Ｒ１」から「Ｒ３」へ、データ記憶領域Ａ１２１１は「Ｍ１」から「Ｍ３」へ、それぞれ変化したとする。次に、情報処理装置１が所定の退避条件を満たしたとき、ＣＰＵ１１は、処理をステップＳＡ２０１に進め、退避処理を開始する。ステップＳＡ２０１において、計算実行領域は「Ａ」であるため、ＣＰＵ１１は、処理をステップＳＡ２０２に進め、レジスタ１１０の記憶内容「Ｒ３」を領域Ａ１２１のレジスタ記憶領域Ａ１２１０に記憶させ、ステップＳＡ２０３において、レジスタフラグ１２０に「１」を設定する。そして、ＣＰＵ１１は、ステップＳＡ２０４において、領域Ａ１２１のデータ記憶領域Ａ１２１１の記憶内容「Ｍ３」を領域Ｂ１２２のデータ記憶領域Ｂ１２２１に記憶させ、ステップＳＡ２０５において、メモリ置換ユニット１３を制御し、計算実行領域としてメモリ１２の領域Ｂ１２２を割り当てる。
【００２２】
例えば、ステップＳＡ２０３において、レジスタフラグ１２０に「１」が設定されるまでの間に、予期せぬ原因により電源が遮断されると、電源を再投入したときにはレジスタフラグ１２０は「０」であるから、各記憶装置には上述した初期状態が設定されることとなる。一方、ステップＳＡ２０３において、レジスタフラグ１２０に「１」が設定された後に、予期せぬ原因により電源が遮断されると、電源を再投入したときにはレジスタフラグ１２０は「１」であるから、ＣＰＵ１１による処理は、図４に示す「ステップＳＡ１０１；ＹＥＳ→ステップＳＡ１０２→ステップＳＡ１０３→ステップＳＡ１０４」の順に行われる。この処理が行われることにより、情報処理装置１は、領域Ａ１２１の記憶内容を復元することとなる。
【００２３】
（Ｂ−４：終了処理の動作）
次に、終了処理の動作を説明する。図８は、情報処理装置１の終了処理の動作を説明するためのフロー図である。ＣＰＵ１１は、メモリ置換ユニット１３に要請して計算実行領域が領域Ａ１２１であるか否かを判断する（ステップＳＡ３０１）。計算実行領域が領域Ａ１２１であると判断した場合には（ステップＳＡ３０１；ＹＥＳ）、レジスタ１１０の記憶内容を領域Ａ１２１のレジスタ記憶領域Ａ１２１０に記憶させて（ステップＳＡ３０２）、レジスタフラグ１２０に「１」を設定する（ステップＳＡ３０３）。そして、ＣＰＵ１１は、電源を遮断する（ステップＳＡ３０４）。
一方、計算実行領域が領域Ａ１２１でないと判断した場合には（ステップＳＡ３０１；ＮＯ）、ＣＰＵ１１は、計算実行領域が領域Ｂ１２２であると判断し、レジスタ１１０の記憶内容を領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０に記憶させて（ステップＳＡ３０５）、レジスタフラグ１２０に「２」を設定する（ステップＳＡ３０６）。そして、ＣＰＵ１１は、電源を遮断する（ステップＳＡ３０４）。
【００２４】
以上の動作により、情報処理装置１は、制御可能な電源遮断の条件として利用者から終了指示を受け取った場合に、処理状態の退避を行いつつ電源を遮断する。図９は、この終了処理の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。上述したステップＳＡ２０５の後、ステップＳＡ００３の終了条件が満たされる前に、ステップＳＡ００１の処理要求があった場合には、ＣＰＵ１１は、ステップＳＡ００２の処理を実行する。すなわち、ＣＰＵ１１は、レジスタ１１０と計算実行領域である領域Ｂ１２２のデータ記憶領域Ｂ１２２１を用いて処理を行う。その結果、レジスタ１１０は「Ｒ３」から「Ｒ４」へ、データ記憶領域Ｂ１２２１は「Ｍ３」から「Ｍ４」へ、それぞれ変化したとする。次に、利用者から終了指示がなされると、ＣＰＵ１１は、処理をステップＳＡ３０１に進め、終了処理を開始する。ステップＳＡ３０１において、計算実行領域は「Ｂ」であるため、ＣＰＵ１１は、処理をステップＳＡ３０５に進め、レジスタ１１０の記憶内容「Ｒ４」を領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０に記憶させ、ステップＳＡ３０６において、レジスタフラグ１２０に「２」を設定する。そして、ＣＰＵ１１は、ステップＳＡ３０４において、電源を遮断するため、レジスタフラグ１２０の記憶内容は保持されず、電源が再投入された時点において不特定となる。また、どちらが計算実行領域であるかを示す情報も保持されず、不特定となる。
【００２５】
例えば、ステップＳＡ３０６において、レジスタフラグ１２０に「２」が設定されるまでの間に、予期せぬ原因により電源が遮断されると、電源を再投入したときにはレジスタフラグ１２０は「１」であるから、ＣＰＵ１１による処理は、図４に示す「ステップＳＡ１０１；ＹＥＳ→ステップＳＡ１０２→ステップＳＡ１０３→ステップＳＡ１０４」の順に行われる。この処理が行われることにより、情報処理装置１は、領域Ａ１２１の記憶内容を復元することとなる。すなわち、レジスタ１１０には、レジスタ記憶領域Ａ１２１０から「Ｒ３」が復元され、計算実行領域として領域Ａ１２１が選ばれるため、ＣＰＵ１１は、データ記憶領域Ａ１２１１の「Ｍ３」を用いて処理を開始する。
一方、ステップＳＡ３０６において、レジスタフラグ１２０に「２」が設定された後に、電源が遮断されると、電源を再投入したときにはレジスタフラグ１２０は「２」であるから、ＣＰＵ１１による処理は、図４に示す「ステップＳＡ１０１；ＮＯ→ステップＳＡ１０５；ＹＥＳ→ステップＳＡ１０６→ステップＳＡ１０７→ステップＳＡ１０８」の順に行われる。この処理が行われることにより、情報処理装置１は、領域Ｂ１２２の記憶内容を復元することとなる。すなわち、上述の例においては、レジスタ１１０には、レジスタ記憶領域Ｂ１２２０から「Ｒ４」が復元され、計算実行領域として領域Ｂ１２２が選ばれるため、ＣＰＵ１１は、データ記憶領域Ｂ１２２１の「Ｍ４」を用いて処理を開始する。
【００２６】
（Ｃ：変形例）
上述の実施形態を以下のように変形してもよい。また、以下のように変形した態様と上述の実施形態とを適宜組み合わせてもよい。
（Ｃ−１：変形例１）
上述の実施形態においては、起動処理においてレジスタフラグが示す領域からレジスタを復元した後、その領域をそのまま計算実行領域として処理を開始していたが、処理の開始の前に退避処理を行ってもよい。図１０は、処理開始前に退避処理を行う起動処理の動作の流れを説明するためのフロー図である。この起動処理の動作は以下の通りである。ＣＰＵ１１は、メモリ１２のレジスタフラグ１２０を参照し、レジスタフラグ１２０が「１」であるか否かを判断する（ステップＳＢ１０１）。そして、レジスタフラグ１２０が「１」であると判断した場合には（ステップＳＢ１０１；ＹＥＳ）、ＣＰＵ１１は、領域Ａ１２１の退避処理を行う。すなわち、ＣＰＵ１１は、領域Ｂ１２２のデータ記憶領域Ｂ１２２１を領域Ａ１２１のデータ記憶領域Ａ１２１１で上書きし（ステップＳＢ１０２）、領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０を領域Ａ１２１のレジスタ記憶領域Ａ１２１０で上書きし（ステップＳＢ１０３）、レジスタフラグ１２０に「２」を設定する（ステップＳＢ１０４）。これにより、領域Ｂ１２２の記憶内容は、領域Ａ１２１の記憶内容で上書きされ、レジスタフラグが示す退避領域は、領域Ｂ１２２となる。次に、ＣＰＵ１１は、領域Ａ１２１のレジスタ記憶領域Ａ１２１０からレジスタ１１０を復元し（ステップＳＢ１０５）、メモリ置換ユニット１３により、計算実行領域を領域Ａ１２１に設定する（ステップＳＢ１０６）。
【００２７】
一方、レジスタフラグ１２０が「１」でないと判断した場合には（ステップＳＢ１０１；ＮＯ）、ＣＰＵ１１は、レジスタフラグ１２０が「２」であるか否かを判断する（ステップＳＢ１０７）。そして、レジスタフラグ１２０が「２」であると判断した場合には（ステップＳＢ１０７；ＹＥＳ）、ＣＰＵ１１は、領域Ｂ１２２の退避処理を行う。すなわち、ＣＰＵ１１は、領域Ａ１２１のデータ記憶領域Ａ１２１１を領域Ｂ１２２のデータ記憶領域Ｂ１２２１で上書きし（ステップＳＢ１０８）、領域Ａ１２１のレジスタ記憶領域Ａ１２１０を領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０で上書きし（ステップＳＢ１０９）、レジスタフラグ１２０に「１」を設定する（ステップＳＢ１１０）。これにより、領域Ａ１２１の記憶内容は、領域Ｂ１２２の記憶内容で上書きされ、レジスタフラグが示す退避領域は、領域Ａ１２１となる。次に、ＣＰＵ１１は、領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０からレジスタ１１０を復元し（ステップＳＢ１１１）、メモリ置換ユニット１３により、計算実行領域を領域Ｂ１２２に設定する（ステップＳＢ１１２）。
ステップＳＢ１０７において、レジスタフラグ１２０が「２」でないと判断した場合には（ステップＳＢ１０７；ＮＯ）、ＣＰＵ１１は、プログラムによって予め定められた態様でレジスタ１１０を初期化し（ステップＳＢ１１３）、プログラムによって指定される領域Ｘを初期化し（ステップＳＢ１１４）、メモリ置換ユニット１３により、計算実行領域をステップＳＢ１１４で初期化された領域Ｘに設定する（ステップＳＢ１１５）。
【００２８】
以上の動作により、情報処理装置１は、退避処理を行ってから処理を開始する。図１１は、この起動処理の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。図５と同様の初期状態から起動処理が開始されると、まずＣＰＵ１１は、メモリ１２のレジスタフラグ１２０が「１」であるため、ステップＳＢ１０１の判断の結果、処理をステップＳＢ１０２に進める。ステップＳＢ１０２において、ＣＰＵ１１は、領域Ａ１２１のデータ記憶領域Ａ１２１１から、その記憶内容である「Ｍ１」を読み出し、領域Ｂ１２２のデータ記憶領域Ｂ１２２１をこの「Ｍ１」で上書きする。同様にステップＳＢ１０３において、ＣＰＵ１１は、領域Ａ１２１のレジスタ記憶領域Ａ１２１０の記憶内容「Ｒ１」で領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０を上書きする。次に、ＣＰＵ１１は、ステップＳＢ１０４において、レジスタフラグ１２０を「２」に設定し、ステップＳＢ１０５において、レジスタ１１０を上述の「Ｒ１」に設定する。そして、ＣＰＵ１１は、ステップＳＢ１０６において、メモリ置換ユニット１３を制御し、計算実行領域としてメモリ１２の領域Ｂ１２２を割り当てて処理を開始する。
【００２９】
上述の実施形態においては、退避領域からレジスタを復元した後、その退避領域をそのまま計算実行領域として処理を開始するので、計算実行領域のデータの復元にかかる時間を省き迅速に起動できる反面、起動直後に予期せぬ原因により電源が遮断されると、退避領域が消失しているため、再起動すると記憶内容を初期状態にする必要があった。一方、上述の変形例においては、処理が開始される前に退避処理が行われるため、起動直後に予期せぬ電源遮断があっても、退避領域の記憶内容から再起動することができる。
【００３０】
（Ｃ−２：変形例２）
上述の実施形態においては、退避処理が行われる度に計算実行領域と退避領域が交換されていたが、計算実行領域と退避領域を交換せずに退避処理を行ってもよい。図１２は、計算実行領域と退避領域を交換しない退避処理の動作を説明するためのフロー図である。まず、ＣＰＵ１１は、メモリ置換ユニット１３に要請して計算実行領域が領域Ａ１２１であるか否かを判断する（ステップＳＢ２０１）。計算実行領域が領域Ａ１２１であると判断した場合には（ステップＳＢ２０１；ＹＥＳ）、ＣＰＵ１１は、領域Ｂ１２２のデータ記憶領域Ｂ１２２１を領域Ａ１２１のデータ記憶領域Ａ１２１１の記憶内容で上書きし、（ステップＳＢ２０２）、レジスタ１１０の記憶内容を領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０に記憶させて（ステップＳＢ２０３）、レジスタフラグ１２０に「２」を設定する（ステップＳＢ１０４）。
【００３１】
一方、計算実行領域が領域Ａ１２１でないと判断した場合には（ステップＳＢ２０１；ＮＯ）、ＣＰＵ１１は、計算実行領域が領域Ｂ１２２であると判断し、領域Ａ１２１のデータ記憶領域Ａ１２１１を領域Ｂ１２２のデータ記憶領域Ｂ１２２１の記憶内容で上書きし、（ステップＳＢ２０５）、レジスタ１１０の記憶内容を領域Ａ１２１のレジスタ記憶領域Ａ１２１０に記憶させて（ステップＳＢ２０６）、レジスタフラグ１２０に「１」を設定する（ステップＳＢ２０７）。
【００３２】
以上の動作により、情報処理装置１は、ある時点での計算実行領域とレジスタ１１０の記憶内容を、計算実行領域でない他の領域に複製し、どの領域に複製したかをレジスタフラグに記憶させることで、情報処理装置１の状態のバックアップ（退避）を行う。すなわち、ＣＰＵ１１は、計算実行領域とは異なる記憶領域に、計算実行領域とレジスタ１１０のそれぞれに記憶されている記憶内容の複製を対応付けて記憶させる。図１３は、この退避処理の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。上述したステップＳＡ１０４の後、ステップＳＢ２０１が行われるまでにステップＳＡ００１の処理要求があった場合には、ＣＰＵ１１は、ステップＳＡ００２の処理を実行する。すなわち、ＣＰＵ１１は、レジスタ１１０と計算実行領域である領域Ａ１２１のデータ記憶領域Ａ１２１１を用いて処理を行うため、レジスタ１１０とデータ記憶領域Ａ１２１１は処理内容に応じて変化する。ここでは、レジスタ１１０は「Ｒ１」から「Ｒ３」へ、データ記憶領域Ａ１２１１は「Ｍ１」から「Ｍ３」へ、それぞれ変化したとする。次に、情報処理装置１が所定の退避条件を満たしたとき、ＣＰＵ１１は、処理をステップＳＢ２０１に進め、退避処理を開始する。ステップＳＢ２０１において、計算実行領域は「Ａ」であるため、ＣＰＵ１１は、処理をステップＳＢ２０２に進め、領域Ａ１２１のデータ記憶領域Ａ１２１１の記憶内容「Ｍ３」を領域Ｂ１２２のデータ記憶領域Ｂ１２２１に記憶させる。そして、ステップＳＢ２０３において、ＣＰＵ１１は、レジスタ１１０の記憶内容「Ｒ３」を領域Ｂ１２２のレジスタ記憶領域Ｂ１２２０に記憶させ、ステップＳＢ２０４において、レジスタフラグ１２０に「２」を設定する。
【００３３】
例えば、ステップＳＢ２０４において、レジスタフラグ１２０に「２」が設定されるまでの間に、予期せぬ原因により電源が遮断されると、電源を再投入したときにはレジスタフラグ１２０は「０」であるから、各記憶装置には上述した初期状態が設定されることとなる。一方、ステップＳＢ２０４において、レジスタフラグ１２０に「２」が設定された後に、予期せぬ原因により電源が遮断されると、電源を再投入したときにはレジスタフラグ１２０は「２」であるから、ＣＰＵ１１による処理は、図４に示す「ステップＳＡ１０１；ＮＯ→ステップＳＡ１０５；ＹＥＳ→ステップＳＡ１０６→ステップＳＡ１０７→ステップＳＡ１０８」の順に行われる。この処理が行われることにより、情報処理装置１は、領域Ｂ１２２の記憶内容を復元することとなる。
【００３４】
（Ｃ−３：変形例３）
上述の実施形態において、メモリ置換ユニット１３によって割り当てられる計算実行領域とメモリ１２との割り当て関係は、電源が遮断とともに消失するものであったが、メモリ置換ユニット１３は、電源遮断によってもこの割り当て関係を保持するように構成されていてもよい。図１４は、電源が遮断されても割り当て関係が保持される情報処理装置１の処理の流れを説明するためのフロー図である。図１４（ａ）は、起動処理を、図１４（ｂ）は、退避処理を、図１４（ｃ）は、終了処理をそれぞれ示している。起動処理、退避処理および終了処理は、それぞれ図３に示した全体処理によって呼び出される。以下、これらの処理について説明する。
【００３５】
この変形例においてメモリ置換ユニット１３は、メモリ１２のいずれか一方の領域を計算実行領域に割り当て、他方の領域を退避領域に割り当てているため、ＣＰＵ１１はメモリ１２の領域Ａ１２１と領域Ｂ１２２を識別する必要がない。起動処理では、ＣＰＵ１１は、退避領域のレジスタ記憶領域の記憶内容によりレジスタ１１０を復元し（ステップＳＣ１０１）、メモリ置換ユニット１３に領域交換を行わせる（ステップＳＣ１０２）。ここで領域交換とは、メモリ置換ユニット１３が、今まで計算実行領域として割り当てられていた領域を退避領域に割り当て、逆に今まで退避領域として割り当てられていた領域を計算実行領域に割り当てることをいい、各領域の記憶内容が上書きされるのではなく、それぞれのアドレスの割り当てが交換されることをいう。退避処理では、ＣＰＵ１１は、レジスタ１１０の記憶内容を計算実行領域のレジスタ記憶領域へ複製し（ステップＳＣ２０１）、メモリ置換ユニット１３に領域交換を行わせ（ステップＳＣ２０２）、計算実行領域のデータを退避領域のデータで上書きする（ステップＳＣ２０３）。終了処理では、ＣＰＵ１１は、ステップＳＣ２０１と同様に、レジスタ１１０の記憶内容を計算実行領域のレジスタ記憶領域へ複製し（ステップＳＣ３０１）、ステップＳＣ２０２と同様に、メモリ置換ユニット１３に領域交換を行わせ（ステップＳＣ３０２）、電源を遮断する（ステップＳＣ３０３）。
【００３６】
図１５は、この変形例の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。起動処理が開始する状態にあって、メモリの計算実行領域には、レジスタ記憶領域に「Ｒ１」が、データ記憶領域に「Ｍ１」が記憶されており、メモリの退避領域には、レジスタ記憶領域に「Ｒ２」が、データ記憶領域に「Ｍ２」が記憶されている。ステップＳＣ１０１において、ＣＰＵ１１は、退避領域に記憶された「Ｒ２」でレジスタ１１０を復元し、ステップＳＣ１０２において、メモリ置換ユニット１３を制御して領域交換させる。そのため、処理が開始される時点において、レジスタ１１０は「Ｒ２」に、計算実行領域はレジスタ記憶領域が「Ｒ２」、データ記憶領域が「Ｍ２」になっている。このように、起動処理において復元されるのはレジスタ１１０のみであり、データ記憶領域の復元にかかる時間を省いているため、迅速な起動が可能となる。
【００３７】
起動処理が完了し、ステップＳＡ００２において処理が行われることにより、レジスタ１１０は「Ｒ２」から「Ｒ３」に変化し、計算実行領域のデータ記憶領域は「Ｍ２」から「Ｍ３」に変化する。ここで、退避処理が行われると、ステップＳＣ２０１において、レジスタ１１０の記憶内容で計算実行領域のレジスタ記憶領域が上書きされ、続いてステップＳＣ２０２において領域交換が行われる。そして、計算実行領域のデータ記憶領域は退避領域のデータ記憶領域の記憶内容で上書きされるため、レジスタ１１０は「Ｒ３」に、計算実行領域のデータ記憶領域は「Ｍ３」になるとともに、退避領域のレジスタ記憶領域には「Ｒ３」が、データ記憶領域には「Ｍ３」がそれぞれ記憶される。すなわち、最新の処理状況が退避されることとなる。処理が開始されると、レジスタ１１０は「Ｒ３」から「Ｒ４」に変化し、計算実行領域のデータ記憶領域は「Ｍ３」から「Ｍ４」に変化する。そして、終了処理が行われると、ＣＰＵ１１は、ステップＳＣ３０１において、計算実行領域のレジスタ記憶領域をレジスタ１１０の記憶内容「Ｒ４」で上書きし、ステップＳＣ３０２において、領域交換が行われる。その結果、電源遮断の際には、最新の処理状況としてレジスタ記憶領域に「Ｒ４」が、データ記憶領域に「Ｍ４」がそれぞれ記憶されることとなる。
【００３８】
（Ｃ−４：変形例４）
上述の変形例３の起動処理は、領域交換をした後、そのまま処理を開始していたが、領域交換をせずにデータの復元を行うようにしてもよい。図１６は、この変形例における起動処理の動作を説明するための図である。この変形例の起動処理において、ＣＰＵ１１は、図１６（ａ）に示すように、退避領域のレジスタ記憶領域の記憶内容によりレジスタ１１０を復元した後（ステップＳＤ１０１）、退避領域のデータ記憶領域に記憶された記憶内容で、計算実行領域のデータ記憶領域を上書きする（ステップＳＤ１０２）。図１６（ｂ）は、この起動処理の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。図に示すように、ステップＳＤ１０１において、ＣＰＵ１１は、退避領域のレジスタ記憶領域に記憶された「Ｒ２」でレジスタ１１０を復元した後、領域交換を行わずに、退避領域のデータ記憶領域に記憶された「Ｍ２」で、計算実行領域のデータ記憶領域を復元する。すなわち、ＣＰＵ１１は、情報処理装置１を起動するときに、退避領域に記憶されているレジスタの記憶内容の複製をレジスタ１１０に記憶させ、退避領域のデータ記憶領域に記憶されている記憶内容の複製を、計算実行領域のデータ記憶領域に記憶させている。したがって、起動処理によって退避領域の記憶内容が変動しないので、起動処理が完了するまでの間に予期せぬ電源遮断があったとしても、再起動において退避領域の記憶内容を利用して復元することができる。
【００３９】
（Ｃ−５：変形例５）
上述の実施形態および変形例１〜４において、システムバス１９の置換回路であるメモリ置換ユニット１３が、ＣＰＵ１１とメモリ１２の間に設置され、ＣＰＵ１１からの操作でメモリ１２の領域Ａ１２１と領域Ｂ１２２との置換を行っていたが、ＣＰＵ１１は、他の態様でメモリ１２を制御してもよい。
例えば、ＣＰＵ１１は、メモリ管理ユニット（Memory Management Unit；以下、ＭＭＵという）を介してメモリ１２を制御してもよい。以下に、この変形例の詳細を説明する。
【００４０】
（Ｃ−５−１：変形例５の全体構成）
図１７は、ＭＭＵ１７を備えた情報処理装置１の全体構成を示すブロック図である。図に示すように、システムバス１９にはＭＭＵ１７が接続され、ＭＭＵ１７には、メモリ１２が接続されている。ＭＭＵ１７は、ＣＰＵ１１の要求するメモリアクセスを管理するメモリ管理ユニットであり、ＣＰＵ１１から指示される仮想アドレスをメモリ１２の実際のアドレスである物理アドレスに割り当てる。メモリ１２は、「主領域」と「副領域」の２つの状態を示すことができるレジスタフラグ１２０のほか、ＣＰＵ１１のレジスタ１１０の内容を記憶するためのレジスタ記憶領域１２３と、ＣＰＵ１１が処理を実行する際に主記憶領域として利用されるデータ記憶領域１２４を備えている。すなわち、ＣＰＵ１１は、メモリ１２の記憶領域において主記憶領域として特定したデータ記憶領域１２４と、レジスタ１１０とを用いて処理を実行する処理手段である。ＭＭＵ１７には、不揮発性の記憶媒体を有しており、この記憶媒体には仮想アドレスと物理アドレス、およびバックアップ先アドレスを対応付けるためのアドレス表１７０が記憶されている。このような構成により、ＣＰＵ１１は、ＭＭＵ１７を介してメモリ１２にアクセスする。なお、ＭＭＵ１７およびメモリ１２以外の構成は図１と同様であるため、説明を省略する。
【００４１】
（Ｃ−５−２：変形例５の記憶媒体の構成）
図１８は、メモリ１２とアドレス表１７０の構成を示す図である。メモリ１２は、図１８（ａ）に示すように構成され、レジスタフラグ１２０のほか、レジスタ記憶領域１２３とデータ記憶領域１２４を備えている。レジスタ記憶領域１２３は、主領域１２３１と副領域１２３２に区分されており、それぞれがＣＰＵ１１のレジスタ１１０の記憶内容を記憶可能な容量を有している。データ記憶領域１２４は、それぞれが同一の記憶容量を有する複数の領域に区分されている。この同一の記憶容量を有する領域のことをページという。ここでは、データ記憶領域１２４は、領域ａ〜ｆの６つの領域に区分されているものとする。この各領域は物理アドレスによってアクセスされ、例えば領域ａは物理アドレス「ａ」によってアクセスされる。図１８（ｂ）はアドレス表１７０の構成を示している。ＣＰＵ１１は、メモリ１２の記憶内容のうち、上述したデータ記憶領域１２４については、上述のページ単位で要求し、この要求は、各領域の仮想アドレスを指示することによって行われる。また、ＣＰＵ１１は、同時に２ページ以上に亘る記憶内容の書き換えは行わないようになっている。例えば、図１８（ｂ）に示す例では、ＣＰＵ１１が処理に用いるメモリ１２の記憶内容は、領域α，β，γ，δの４つのページで構成されている。アドレス表１７０によって、この領域α，β，γ，δの仮想アドレスに対応する物理アドレスは、それぞれａ，ｂ，ｃ，ｄに割り当てられ、各仮想アドレスに対応するバックアップ先アドレスとして、アドレスが存在しないことを示す特別な値（以下、未設定アドレス「−」で表す）が記憶されている。
【００４２】
なお、ＣＰＵ１１は、メモリ１２の記憶内容のうち、上述したデータ記憶領域１２４以外、すなわち、レジスタフラグ１２０とレジスタ記憶領域１２３についても、ＭＭＵ１７を介してアクセスするが、これらの仮想アドレスと対応する物理アドレスとの対応関係は固定されたものであるため、ＣＰＵ１１はこれらの記憶内容にアクセスする際にＭＭＵ１７から全く制約を受けない。したがって、ＭＭＵ１７においてこれらの対応関係を示したアドレス表は省略する。
【００４３】
（Ｃ−５−３：変形例５の全体処理の動作）
図１９は、この変形例における情報処理装置１の全体処理の動作を説明するためのフロー図である。情報処理装置１に電力が供給されると、情報処理装置１のＣＰＵ１１は、ＭＭＵ１７に起動処理を行わせる（ステップＳＥ１００）。次に、ＣＰＵ１１は、データアクセスがあるか否かを判断し（ステップＳＥ００１）、データアクセスがあると判断すると（ステップＳＥ００１；ＹＥＳ）、ＭＭＵ１７にデータ退避処理を行わせた後（ステップＳＥ２００）、その要求された処理を実行する（ステップＳＥ００２）。データアクセスがないと判断すると（ステップＳＥ００１；ＮＯ）、ＣＰＵ１１は、所定の終了条件を満たしているか否かを判断する（ステップＳＥ００３）。この所定の終了条件としては様々なものが適用し得るが、この変形例においては実施形態と同様、ＣＰＵ１１が、操作部１５を介して利用者から終了指示を受けたことを「所定の終了条件」とする。この終了条件を満たしていると判断すると（ステップＳＥ００３；ＹＥＳ）、ＣＰＵ１１は、ＭＭＵ１７にレジスタ退避処理を行わせ（ステップＳＥ３００）、処理を終了する。
【００４４】
一方、終了条件を満たしていないと判断すると（ステップＳＥ００３；ＮＯ）、ＣＰＵ１１は、所定の退避条件を満たしているか否かを判断する（ステップＳＥ００４）。この所定の退避条件は、実施形態と同様、様々なものが適用し得る。この退避条件を満たしていると判断すると（ステップＳＥ００４；ＹＥＳ）、ＣＰＵ１１は、ＭＭＵ１７にレジスタ退避処理を行わせ（ステップＳＥ３００）、その退避条件をクリアした後に（ステップＳＥ００５）、処理をステップＳＥ００１に戻す。一方、退避条件を満たしていないと判断すると（ステップＳＥ００４；ＮＯ）、ＣＰＵ１１は、直接、処理をステップＳＥ００１に戻す。
【００４５】
（Ｃ−５−４：変形例５の起動処理の動作）
図２０は、この変形例における起動処理の動作を説明するためのフロー図である。ＭＭＵ１７は、メモリ１２のレジスタフラグ１２０を参照し、レジスタフラグ１２０が「１」であるか否かを判断する（ステップＳＥ１０１）。そして、レジスタフラグ１２０が「１」であると判断した場合には（ステップＳＥ１０１；ＹＥＳ）、ＭＭＵ１７は、レジスタ記憶領域１２３の主領域１２３１から記憶内容を読み出してＣＰＵ１１のレジスタ１１０に複製することにより、レジスタ１１０を復元する（ステップＳＥ１０２）。次に、ＭＭＵ１７は、アドレス表１７０の全ての仮想アドレスに対応するバックアップ先アドレスを参照し、未設定アドレス「−」であるか否かを判断する（ステップＳＥ１０３）。未設定アドレス「−」でないバックアップ先アドレスが見つかった場合（ステップＳＥ１０３；ＮＯ）、そのバックアップ先アドレスで、これに対応する物理アドレスを上書きした後（ステップＳＥ１０４）、未設定アドレス「−」で、そのバックアップ先アドレスを上書きする（ステップＳＥ１０５）。バックアップ先アドレスが未設定アドレス「−」のものに対しては（ステップＳＥ１０３；ＹＥＳ）、何も行わずに起動処理を終了する。
【００４６】
一方、ステップＳＥ１０１において、レジスタフラグ１２０が「１」でないと判断した場合には（ステップＳＥ１０１；ＮＯ）、ＭＭＵ１７は、ＣＰＵ１１のレジスタ１１０をレジスタ記憶領域１２３の副領域１２３２から復元し（ステップＳＥ１０６）、アドレス表１７０の全バックアップ先アドレスを未設定アドレス「−」で上書きする（ステップＳＥ１０７）。そして、ＭＭＵ１７は、レジスタ１１０の記憶内容を主領域１２３１に記憶させ（ステップＳＥ１０８）、メモリ１２のレジスタフラグ１２０に「１」を設定する（ステップＳＥ１０９）。
【００４７】
（Ｃ−５−５：変形例５のデータ退避処理の動作）
図２１は、この変形例におけるデータ退避処理の動作を説明するためのフロー図である。上述したように、このデータ退避処理は、データアクセスがあった場合に（ステップＳＥ００１；ＹＥＳ）、ＭＭＵ１７により実行される。ここで、データアクセスとは、ＣＰＵ１１により、メモリ１２のデータ記憶領域のいずれかの領域（ページ）に対するアクセスの要求をいう。
【００４８】
ＭＭＵ１７は、アクセス要求されたデータのバックアップ先アドレスが未設定アドレス「−」であるか否かを判断する（ステップＳＥ２０１）。アクセス要求されたデータのバックアップ先アドレスが未設定アドレス「−」であると判断した場合（ステップＳＥ２０１；ＹＥＳ）、ＭＭＵ１７は、メモリ１２のデータ記憶領域１２４のうち使用されていない領域（以下、空領域という）を特定する。ここで、ＭＭＵ１７は、データ記憶領域１２４の領域が使用されていないことを、その物理アドレスが、アドレス表１７０（バックアップ先アドレスを含む）において記憶されていないことにより判断する。例えば、図１８（ｂ）のアドレス表にあっては、物理アドレスとして「ａ」，「ｂ」，「ｃ」，「ｄ」が記憶されている。そこで、ＭＭＵ１７は、メモリ１２のデータ記憶領域１２４のうち、領域ｅを空領域として特定する。空領域を特定すると、ＭＭＵ１７は、その特定した空領域をアクセス要求された領域の記憶内容で上書きし（ステップＳＥ２０３）、アドレス表１７０に、アクセス要求された領域に対応するバックアップ先アドレスとして、上述した空領域の物理アドレスを書き込む（ステップＳＥ２０４）。
すなわち、ＭＭＵ１７は、ＣＰＵ１１が処理を実行するときに、ＣＰＵ１１が主記憶領域として利用するデータ記憶領域１２４のうちアクセス要求されたデータの記憶内容の複製を、データ記憶領域１２４の使用されていない領域として特定した空領域に記憶させる。そしてＭＭＵ１７は、アドレス表１７０に、アクセス要求されたデータに対応するバックアップ先アドレスとして、その空領域の物理アドレスを書き込むことによって、そのアクセス要求されたデータが退避済の状態であることを、ＭＭＵ１７の不揮発性の記憶媒体に記憶させる。
【００４９】
（Ｃ−５−６：変形例５のレジスタ退避処理の動作）
図２２は、この変形例におけるレジスタ退避処理の動作を説明するためのフロー図である。ＭＭＵ１７は、ＣＰＵ１１のレジスタ１１０の記憶内容を、レジスタ記憶領域１２３の副領域１２３２に記憶し、（ステップＳＥ３０１）、レジスタフラグ１２０に「２」を設定する（ステップＳＥ３０２）。次に、ＭＭＵ１７は、アドレス表１７０の全てのバックアップ先アドレスを未設定アドレス「−」で上書きする（ステップＳＥ３０３）。そして、ＭＭＵ１７は、レジスタ１１０の記憶内容を、レジスタ記憶領域１２３の主領域１２３１に記憶し、（ステップＳＥ３０４）、レジスタフラグ１２０に「１」を設定する（ステップＳＥ３０５）。
すなわち、ＭＭＵ１７は、レジスタ１１０に記憶されている記憶内容の複製を、メモリ１２においてレジスタ１１０に対応する退避領域として特定したレジスタ記憶領域１２３の副領域１２３２に記憶させ、アドレス表１７０の全てのバックアップ先アドレスを未設定アドレス「−」で上書きすることにより、メモリ１２のデータ記憶領域１２４のうち使用されている全領域が退避済の状態でないことを、ＭＭＵ１７の不揮発性の記憶媒体に記憶させる。そして、その後に、レジスタ１１０に記憶されている記憶内容の複製をレジスタ１１０に対応する退避領域として特定したレジスタ記憶領域１２３の主領域１２３１に記憶させる。ここで、レジスタ１１０の記憶内容は、まずステップＳＥ３０１において、副領域１２３２に記憶され、ステップＳＥ３０４において、主領域１２３１に記憶されている。このように、レジスタ退避処理において、２度に亘りレジスタ１１０の記憶内容を記憶されている。以下に、その理由を説明する。
【００５０】
レジスタ１１０の記憶内容をレジスタ記憶領域１２３に記憶するということは、処理に用いている最新のレジスタおよびデータの記憶内容が不揮発性記憶媒体であるメモリ１２に記憶されたことを意味する。したがって、レジスタ１１０がレジスタ記憶領域１２３に記憶されれば、各領域のバックアップ先アドレスが示す領域に退避された記憶内容は、レジスタ記憶領域１２３に記憶された記憶内容に比べて古いものであるから、不要である。したがって、ＭＭＵ１７は、全バックアップ先アドレスを未設定アドレス「−」で上書きすることで、バックアップ先アドレスが示す領域を開放する。この領域開放の途中で予期せぬ電源遮断があったとすると、再起動の際に、アドレス表１７０には、既に不要となったバックアップ先アドレスが書き込まれたままになっている場合がある。この様な場合に、アドレス表１７０のみから、バックアップ先アドレスが不要であるか否かを判断することはできない。そこで、レジスタフラグ１２０の状態によって、これを判断している。すなわち、レジスタフラグに「２」が設定されている場合には、最新のレジスタ１１０の記憶内容を記憶しているのは副領域１２３２であり、全てのバックアップ先アドレスの未設定アドレス「−」による上書きはまだ終了していないことを示している。したがって、起動時においては、図２０に示すように、レジスタフラグが「２」である場合には（ステップＳＥ１０１；ＮＯ）、レジスタ１１０を副領域１２３２から復元するとともに（ステップＳＥ１０６）、上述のステップＳＥ３０３、ＳＥ３０４、ＳＥ３０５と同じ処理（ステップＳＥ１０７、ＳＥ１０８、ＳＥ１０９）を行うことで、アドレス表１７０に書き込まれたバックアップ先アドレスが示す領域を開放する。一方、レジスタフラグが「１」である場合には、バックアップ先アドレスがある場合には、これが示す退避領域の記憶内容で処理を開始する必要があるため、これらの処理は行わない。すなわち、退避領域の開放前に異常終了したか否かを判断するために、レジスタ１１０の退避先を利用しているのである。
【００５１】
（Ｃ−５−７：変形例５の動作例）
図２３は、この変形例における情報処理装置１の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。電源投入時において、ＣＰＵ１１のレジスタ１１０は、電源遮断前の状態を保持していないので、その記憶内容は不特定の値「Ｘ」である。一方、メモリ１２とアドレス表１７０は、電源遮断前の状態を保持している。まず、レジスタフラグ１２０は「１」であるため、ステップＳＥ１０１の判断の結果、ＭＭＵ１７は、ステップＳＥ１０２へ処理を進める。そして、ステップＳＥ１０２において、ＭＭＵ１７は、メモリ１２のレジスタ記憶領域１２３の主領域１２３１から、その記憶内容である「Ｒ０」を読み出し、レジスタ１１０をこの「Ｒ０」で上書きする。次に、ＭＭＵ１７は、ステップＳＥ１０３において、アドレス表１７０に書き込まれたバックアップ先アドレスのうち、未設定アドレス「−」でないものを検出する。ここでは、アドレス表１７０は、図１８（ｂ）に示す状態を保持しているとする。したがって、全てのバックアップ先アドレスは未設定アドレス「−」となっているため、起動処理が完了する。
次に、データアクセスが発生し、データ退避処理が呼び出される。ここでは、ＣＰＵ１１によって、仮想アドレスである領域γに対してアクセス要求されたとする。領域γに対応する物理アドレスは「ｃ」であり、領域γに対応するバックアップ先アドレスは「−」であるため、ＭＭＵ１７は、ステップＳＥ２０２において、空領域を特定する。ここでは、空領域として、物理アドレス「ｅ」で示される領域ｅが特定されたとする。ＭＭＵ１７は、ステップＳＥ２０３において、特定した空領域である領域ｅの記憶内容を、アクセス要求された領域γ、すなわち領域ｃの記憶内容である「Ｃ０」によって上書きする。そして、ＭＭＵ１７は、ステップＳＥ２０４において、アドレス表１７０に、アクセス要求された領域γに対応するバックアップ先アドレスとして「ｅ」を書き込む。
【００５２】
次に、ステップＳＥ００２において、ＣＰＵ１１により、要求された処理が実行されるため、レジスタ１１０と領域ｃの記憶内容が処理に伴って変化する。ここでは、レジスタ１１０は「Ｒ０」から「Ｒ１」へ、領域ｃの記憶内容は「Ｃ０」から「Ｃ１」へそれぞれ変化したとする。ここで、情報処理装置１が所定の終了条件を満たしたため、レジスタ退避処理が呼び出されたとすると、ステップＳＥ３０１において、ＭＭＵ１７は、レジスタ１１０の記憶内容である「Ｒ１」を副領域１２３２に記憶し、ステップＳＥ３０２において、レジスタフラグ１２０を「２」に設定する。そして、ステップＳＥ３０３において、ＭＭＵ１７は、領域γに対応するバックアップ先アドレスを「ｅ」から未設定アドレス「−」に変更することで、領域ｅを開放する。その後、ＭＭＵ１７は、ステップＳＥ３０４において、レジスタ１１０の記憶内容「Ｒ１」を主領域１２３１に記憶し、ステップＳＥ３０５において、レジスタフラグ１２０を「１」に設定すると、ＣＰＵ１１は、情報処理装置１の電源を遮断して、処理を終了する。
【００５３】
例えば、上述のステップＳＥ３０１が完了した時点で、予期せぬ電源遮断があったとすると、電源を再投入した場合、起動処理において、「ステップＳＥ１０１；ＹＥＳ→ステップＳＥ１０２→ステップＳＥ１０３→ステップＳＥ１０４→ステップＳＥ１０５」という処理が行われる。すなわち、レジスタ１１０には主領域１２３１が記憶している「Ｒ０」が書き込まれ、領域γに対応するバックアップ先アドレスが未設定アドレス「−」でないため、領域γに対応する物理アドレスは「ｅ」に変わり、バックアップ先アドレスは未設定アドレス「−」に変わる。したがって、ＣＰＵ１１は、領域γに対応する記憶内容として、領域ｅが記憶している「Ｃ０」を用いることとなる。
【００５４】
一方、上述のステップＳＥ３０２が完了した時点で、予期せぬ電源遮断があったとすると、電源を再投入した場合、起動処理において、「ステップＳＥ１０１；ＮＯ→ステップＳＥ１０６→ステップＳＥ１０７→ステップＳＥ１０８→ステップＳＥ１０９」という処理が行われる。すなわち、レジスタ１１０には副領域１２３２が記憶している「Ｒ１」が書き込まれ、領域γに対応するバックアップ先アドレスは未設定アドレス「−」で上書きされ、主領域１２３１には、レジスタ１１０の記憶内容である「Ｒ１」が書き込まれた後、レジスタフラグ１２０は「１」に設定される。したがって、ＣＰＵ１１は、領域γに対応する記憶内容として、領域ｃが記憶している「Ｃ１」を用いることとなる。
【００５５】
なお、システムバス１９にメモリ置換ユニット１３やＭＭＵ１７を設けず、ＣＰＵ１１が、計算実行領域として扱うアドレスを演算し、実際のメモリ１２の各領域と対応づけるように管理してもよい。例えば、上述したＭＭＵ１７の機能を、ＣＰＵ１１が読み込んで実行するプログラムで実現してもよい。この場合、アドレス表１７０に相当する構成をメモリ１２に記憶させるようにしてもよい。また、データ記憶領域１２４は６つの領域に区分され、ＣＰＵ１１が処理に用いるメモリ１２の記憶内容は４つのページで構成されていたが、これらの領域の数はこれに限られることなく、様々な数に設定することができる。
【００５６】
（Ｃ−６：変形例６）
上述の変形例５では、データ記憶領域１２４はページ毎に区分けされており、ＭＭＵ１７のアドレス表１７０によって、各ページの物理アドレスとそのバックアップ先アドレスとが対応付けられていたが、データ記憶領域１２４によって、各ページの記憶内容とそれぞれのバックアップ先アドレスとを対応付けてもよい。
また、上述の変形例５では、データ記憶領域１２４において、使用しているページの記憶内容を使用していないページによってバックアップしていたが、メモリ１２の中にデータ記憶領域１２４とは別のバックアップ領域を設け、データ記憶領域１２４の各ページには「そのページがバックアップされているか否かを示すフラグ」を対応付けてもよい。以下、メモリ１２の中にバックアップ領域を設けてバックアップ処理を行う態様について、詳細に説明する。
【００５７】
（Ｃ−６−１：変形例６の構成）
図２４は、メモリ１２にバックアップ領域を設けた情報処理装置１の全体構成を示すブロック図である。この構成は上述した変形例５と大部分で共通しているため、異なる構成について記載し、共通する構成については説明を省略する。この情報処理装置１のＭＭＵ１７は、アドレス表１７０を備えていない。そして、メモリ１２は、バックアップ領域１２５を備えている。図２５は、この変形例におけるメモリ１２の構成を示す概略図である。メモリ１２は、図２５（ａ）に示すように構成され、レジスタフラグ１２０、レジスタ記憶領域１２３、およびデータ記憶領域１２４のほか、バックアップ領域１２５を備えている。データ記憶領域１２４は、変形例５で示したページ単位の記憶領域として領域ａ〜ｄの４つの領域を有しており、各領域には「その領域がバックアップ済みか否かを示す」フラグａ〜ｄが対応付けられている。このフラグは「０」と「１」の少なくとも２つの状態を示すことができるデータであり、例えば、１ビットの記憶容量を有する記憶素子である。ここで「０」は「バックアップ済みでない」ことを示し、「１」は「バックアップ済みである」ことを示す。図２５（ｂ）は、このデータ記憶領域１２４の一例を示す図である。例えば、領域ａとフラグａは物理アドレス「ａ」によってアクセスされ、図２５（ｂ）に示す一例において、領域ａのデータは「Ａ０」であり、フラグａは「０」である。
【００５８】
バックアップ領域１２５は、ページ単位の記憶領域として領域α〜δの４つの領域を有しており、各領域にはデータ記憶領域１２４のうち、バックアップ元である領域の物理アドレスを格納する記憶領域としてアドレスα〜δが対応付けられている。図２５（ｃ）は、このバックアップ領域１２５の一例を示す図である。例えば、図２５（ｃ）に示す一例において、領域αのデータは不特定の値を示す「Ｘ」であり、アドレスαは未設定アドレス「−」である。
【００５９】
（Ｃ−６−２：変形例６の動作）
次に、この変形例における情報処理装置１の動作を説明する。全体動作は、変形例５と共通であり、図１９に示す起動処理（ステップＳＥ１００）、データ退避処理（ステップＳＥ２００）およびレジスタ退避処理（ステップＳＥ３００）に替えてそれぞれ、起動処理（ステップＳＦ１００）、データ退避処理（ステップＳＦ２００）およびレジスタ退避処理（ステップＳＦ３００）を用いる点が異なっている。以下、この３つの処理について説明する。
【００６０】
（Ｃ−６−３：変形例６の起動処理の動作）
図２６は、この変形例における起動処理の動作を説明するためのフロー図である。ステップＳＦ１０１〜ＳＦ１０９は、それぞれ変形例５（図２０）のステップＳＥ１０１〜ＳＥ１０９に対応している。このうち、ステップＳＦ１０３〜ＳＦ１０５、およびステップＳＦ１０７のみが、変形例５と異なっており、他は共通している。以下、変形例５と異なるステップについて説明する。
ステップＳＦ１０３では、ＭＭＵ１７は、ステップＳＥ１０３に替えて、メモリ１２のデータ記憶領域１２４を参照し、全ての領域に対応するフラグが「０」であるか否かを判断する。対応するフラグが「０」でない領域が見つかった場合、ＭＭＵ１７は、バックアップ領域を検索して、その領域の物理アドレスが書き込まれているアドレスを見つけると、これに対応する領域の記憶内容を上述のデータ記憶領域１２４に上書きすることでデータ復帰を行う（ステップＳＦ１０４）。そして、ＭＭＵ１７は、上述のフラグを「０」で上書きする（ステップＳＦ１０５）。
一方、ステップＳＦ１０７では、ＭＭＵ１７は、ステップＳＥ１０７に替えて、メモリ１２のデータ記憶領域１２４の全領域に対応するフラグを「０」で上書きする。
以上により、変形例５と同様、ＭＭＵ１７は、主領域からレジスタを復元する場合には、バックアップ領域からデータの復元を行い、副領域からレジスタを復元する場合には、バックアップ領域の開放を行う。
【００６１】
（Ｃ−６−４：変形例６のデータ退避処理の動作）
図２７は、この変形例におけるデータ退避処理の動作を説明するためのフロー図である。ＭＭＵ１７は、アクセス要求された領域に対応するフラグが「０」であるか否かを判断する（ステップＳＦ２０１）。アクセス要求された領域に対応するフラグが「０」である場合（ステップＳＦ２０１；ＹＥＳ）、バックアップ領域１２５に空領域を特定する（ステップＳＦ２０２）。この空領域の特定の方法は種々考えられるが、ここでは、バックアップ領域１２５のアドレスα〜δを、アドレスδ→アドレスγ→アドレスβ→アドレスαの順に検査し、はじめにアクセス要求された領域の物理アドレスか、又は未設定アドレス「−」が見つかったところを空領域として特定する。次に、ＭＭＵ１７は、特定した空領域をアクセス要求された領域の記憶内容で上書きし（ステップＳＦ２０３）、上書きした空領域に対応するアドレスに、アクセス要求された領域の物理アドレスを書き込む（ステップＳＦ２０４）。そして、ＭＭＵ１７は、アクセス要求された領域に対応するフラグに「１」を上書きする（ステップＳＦ２０５）。
以上により、変形例５と同様、ＭＭＵ１７は、アクセス要求がされたときに、バックアップ済みでない領域については、バックアップ領域１２５にバックアップ先を確保してバックアップを行う。
【００６２】
（Ｃ−６−５：変形例６のレジスタ退避処理の動作）
図２８は、この変形例におけるレジスタ退避処理の動作を説明するためのフロー図である。ステップＳＦ３０１〜ＳＦ３０５は、それぞれ変形例５（図２２）のステップＳＥ３０１〜ＳＥ３０５に対応している。このうち、ステップＳＦ３０３のみが、変形例５と異なっており、他は共通している。以下、変形例５と異なるステップＳＦ３０３について説明する。
ステップＳＦ３０３において、ＭＭＵ１７は、ステップＳＥ３０３に替えて、メモリ１２のデータ記憶領域１２４の全領域に対応するフラグを「０」で上書きする。これにより、ＭＭＵ１７は、バックアップ領域１２５の全ての領域を開放する。
【００６３】
（Ｃ−６−６：変形例６の動作例）
図２９は、この変形例における情報処理装置１の動作の一例において、記憶媒体の状態が遷移する様子を示した図である。電源投入時において、ＣＰＵ１１のレジスタ１１０は、電源遮断前の状態を保持していないので、その記憶内容は不特定の値「Ｘ」である。一方、メモリ１２は、電源遮断前の状態を保持している。まず、レジスタフラグ１２０は「１」であるため、ステップＳＦ１０１の判断の結果、ＭＭＵ１７は、ステップＳＦ１０２へ処理を進める。そして、ステップＳＦ１０２において、ＭＭＵ１７は、メモリ１２のレジスタ記憶領域１２３の主領域１２３１から、その記憶内容である「Ｒ０」を読み出し、レジスタ１１０をこの「Ｒ０」で上書きする。次に、ＭＭＵ１７は、ステップＳＦ１０３において、メモリ１２のデータ記憶領域１２４の全領域に対応するフラグのうち、バックアップ済みではないことを示す「０」でないものを検出する。ここでは、データ記憶領域１２４は、図２５（ｂ）に示す状態を保持しているとする。したがって、データ記憶領域１２４のフラグは「０」となっているため、起動処理が完了する。
次に、データアクセスが発生し、データ退避処理が呼び出される。ここでは、ＣＰＵ１１によって、領域ｃに対してアクセス要求されたとする。領域ｃに対応するフラグｃは「０」であるため（ステップＳＦ２０１；ＹＥＳ）、ＭＭＵ１７は、ステップＳＦ２０２において、バックアップ領域１２５に空領域を特定する。ここでは、空領域として、領域δが特定されたとする。ＭＭＵ１７は、ステップＳＦ２０３において、特定した空領域である領域δの記憶内容を、アクセス要求された領域ｃの記憶内容である「Ｃ０」によって上書きする。そして、ＭＭＵ１７は、ステップＳＦ２０４において、バックアップ領域１２５のアドレスｃに、アクセス要求された領域ｃに対応する物理アドレスとして「ｃ」を書き込み、ステップＳＦ２０５において、データ記憶領域のフラグｃに「１」を上書きする。
【００６４】
次に、ステップＳＥ００２において、ＣＰＵ１１により、要求された処理が実行されるため、レジスタ１１０と領域ｃの記憶内容が処理に伴って変化する。ここでは、レジスタ１１０は「Ｒ０」から「Ｒ１」へ、領域ｃの記憶内容は「Ｃ０」から「Ｃ１」へそれぞれ変化したとする。ここで、情報処理装置１が所定の終了条件を満たしたため、レジスタ退避処理が呼び出されたとすると、ステップＳＦ３０１において、ＭＭＵ１７は、レジスタ１１０の記憶内容である「Ｒ１」を副領域１２３２に記憶し、ステップＳＦ３０２において、レジスタフラグ１２０を「２」に設定する。そして、ステップＳＦ３０３において、ＭＭＵ１７は、領域ｃに対応するフラグｃを「１」から「０」に変更することで、領域δを開放する。なお、これ以降もバックアップ領域１２５の領域δには「Ｃ０」が、アドレスδには「ｃ」が記憶され続けるが、これらは、フラグｃが「０」である限り、参照されることは無く、改めてフラグｃが「１」になる前には、ステップＳＦ２０３〜ＳＦ２０５によって、上述のように上書きされるので、領域δおよびアドレスδは実質的に開放されていることとなる。その後、ＭＭＵ１７は、ステップＳＦ３０４において、レジスタ１１０の記憶内容「Ｒ１」を主領域１２３１に記憶し、ステップＳＦ３０５において、レジスタフラグ１２０を「１」に設定すると、ＣＰＵ１１は、情報処理装置１の電源を遮断して、処理を終了する。
【００６５】
例えば、上述のステップＳＦ３０１が完了した時点で、予期せぬ電源遮断があったとすると、電源を再投入した場合、起動処理において、「ステップＳＦ１０１；ＹＥＳ→ステップＳＦ１０２→ステップＳＦ１０３→ステップＳＦ１０４→ステップＳＦ１０５」という処理が行われる。すなわち、レジスタ１１０には主領域１２３１が記憶している「Ｒ０」が書き込まれ、領域ｃに対応するフラグｃが「０」でないため、ＭＭＵ１７は、物理アドレス「ｃ」をアドレスとして記憶している領域をバックアップ領域１２５から検索し、アドレスδを特定する。そして、ＭＭＵ１７は、アドレスδに対応する領域δからその記憶内容である「Ｃ０」を読み出して、領域ｃを上書きすることでデータ復帰を行い（ステップＳＦ１０４）、フラグｃを「０」で上書きする（ステップＳＦ１０５）。したがって、ＣＰＵ１１は、領域ｃの記憶内容として、領域δが記憶している「Ｃ０」を用いることとなる。
【００６６】
一方、上述のステップＳＦ３０２が完了した時点で、予期せぬ電源遮断があったとすると、電源を再投入した場合、起動処理において、「ステップＳＦ１０１；ＮＯ→ステップＳＦ１０６→ステップＳＦ１０７→ステップＳＦ１０８→ステップＳＦ１０９」という処理が行われる。すなわち、レジスタ１１０には副領域１２３２が記憶している「Ｒ１」が書き込まれ、領域ｃに対応するフラグｃは「０」で上書きされ、主領域１２３１には、レジスタ１１０の記憶内容である「Ｒ１」が書き込まれた後、レジスタフラグ１２０は「１」に設定される。したがって、ＣＰＵ１１は、領域ｃの記憶内容としてそのまま「Ｃ１」を用いることとなる。
【００６７】
すなわち、この変形例６は、上述した変形例５におけるアドレス表１７０のバックアップ先アドレスの機能を、データ記憶領域１２４のフラグとバックアップ領域１２５のアドレスとによって実現している。なお、この変形例６において、ＭＭＵ１７はアドレス表１７０を備えていなかったが、仮想アドレスと物理アドレスを対応付けるアドレス表を用いてもよい。また、この変形例６においても、ＭＭＵ１７を設けず、上述したＭＭＵ１７の機能を、ＣＰＵ１１が読み込んで実行するプログラムで実現してもよい。また、上述の変形例６で、データ記憶領域１２４が４つの領域を有しており、バックアップ領域１２５が４つの領域を有していたが、この領域の数はこれに限られず、種々の数を用いることができる。また、データ記憶領域１２４とバックアップ領域１２５のそれぞれの容量は可変であってもよい。例えば、ＭＭＵ１７が、メモリ１２の物理アドレスの小さい側からデータ記憶領域１２４を順次確保していく一方、物理アドレスの大きい側から必要に応じてバックアップ領域１２５を順次確保していくようにしてもよい。
【００６８】
（Ｃ−７：変形例７）
上述の変形例６では、メモリ１２とＣＰＵ１１の間にＭＭＵ１７を介在させて、このＭＭＵ１７によりメモリのコントロールを行っていたが、メモリ内部において、メモリを制御し、ＣＰＵ１１とのインタフェースとなるメモリコントローラを設けてもよい。
また、上述の変形例６では、メモリ１２のバックアップはバックアップ領域１２５で行われ、レジスタ１１０のバックアップはレジスタフラグ１２０とレジスタ記憶領域１２３を用いて行われていた。すなわち、メモリ１２とレジスタ１１０のバックアップは区別されていたが、レジスタ１１０のバックアップをデータ記憶領域１２４およびバックアップ領域１２５を用いて行ってもよい。以下、メモリ１２にメモリコントローラを設け、レジスタ１１０のバックアップをデータ記憶領域１２４およびバックアップ領域１２５を用いて行う態様について、詳細に説明する。
【００６９】
（Ｃ−７−１：変形例７の構成）
図３０は、メモリ１２にメモリコントローラ１２９を設けた情報処理装置１の全体構成を示すブロック図である。この構成は上述した変形例６と大部分で共通しているため、以下では、異なる構成について主に説明し、共通する構成については説明を省略する。この情報処理装置１は、ＭＭＵ１７を備えていない。そして、メモリ１２は、システムバス１９と直接接続されており、メモリ１２の内部には、レジスタフラグ１２０およびレジスタ記憶領域１２３はなく、メモリコントローラ１２９とリフレッシュフラグ１２６が備えられている。
図３１は、この変形例におけるメモリ１２の構成を示す概略図である。メモリ１２は、図３１（ａ）に示すように構成され、リフレッシュフラグ１２６、データ記憶領域１２４およびバックアップ領域１２５を備えている。データ記憶領域１２４は、ページ単位の記憶領域として領域ａ〜ｃおよび領域ｒの４つの領域を有しており、各領域には「その領域がバックアップ済みか否かを示す」フラグａ〜ｃおよびフラグｒが対応付けられている。このフラグは「０」と「１」の少なくとも２つの状態を示すことができるデータでる。ここで「０」は「バックアップ済みでない」ことを示し、「１」は「バックアップ済みである」ことを示す。図３１（ｂ）は、このデータ記憶領域１２４の一例を示す図である。例えば、領域ａとフラグａは物理アドレス「ａ」によってアクセスされ、領域ａのデータは「Ａ０」であり、フラグａは「０」である。なお、領域ｒは他の領域ａ〜ｃとは異なり、ＣＰＵ１１が実行するプログラムによって、レジスタ１１０の内容を記憶するための領域として予め定められている。
バックアップ領域１２５は、図３１（ｃ）に示すように、ページ単位の記憶領域として領域α〜δの４つの領域を有している。このバックアップ領域１２５は、図２５（ｃ）により説明した変形例６と同様であるため、説明を省略する。
【００７０】
（Ｃ−７−２：変形例７の動作）
次に、この変形例における情報処理装置１の動作を説明する。
図３２は、この変形例における情報処理装置１の全体処理の動作を説明するためのフロー図である。情報処理装置１に電力が供給されると、情報処理装置１のメモリ１２のメモリコントローラ１２９は、起動処理を行う（ステップＳＧ１００）。次に、メモリコントローラ１２９はＣＰＵ１１からのデータアクセスがあるか否かを判断し（ステップＳＧ００１）、データアクセスがあると判断すると（ステップＳＧ００１；ＹＥＳ）、データ退避処理を行う（ステップＳＧ２００）。そして、その後、ＣＰＵ１１はその要求された処理を実行する（ステップＳＧ００２）。データアクセスがないと判断すると（ステップＳＧ００１；ＮＯ）、メモリコントローラ１２９は、所定のリフレッシュ条件が満たされている場合にＣＰＵ１１が要求する「リフレッシュ要求」が要求されているか否かを判断する（ステップＳＧ００３）。そして、このリフレッシュ要求が要求されていると判断した場合には（ステップＳＧ００３；ＹＥＳ）、メモリコントローラ１２９は、リフレッシュ処理を実行する（ステップＳＧ３００）。ここで「リフレッシュ処理」とは、その時点でデータ記憶領域１２４に記憶されているメモリ１２とレジスタ１１０との最新の組み合わせをバックアップとして利用するために、バックアップ領域１２５に記憶した古い内容を放棄する一連の処理をいう。ＣＰＵ１１が判断する所定のリフレッシュ条件としては様々なものが適用し得るが、例えば、ＣＰＵ１１に内蔵されたタイマにより周期的な割り込み信号が発されたときや、操作部１５を介して利用者から終了指示を受けたことを示す制御信号をＣＰＵ１１が受け取ったときなどを「所定のリフレッシュ条件」としてもよい。なお、ＣＰＵ１１は、このリフレッシュ条件が満たされている場合において、リフレッシュ要求に先立って、レジスタ１１０の内容を退避する命令であるレジスタ退避命令をメモリコントローラ１２９に命令する。
メモリコントローラ１２９は、リフレッシュ処理を行った後、処理をステップＳＧ００１へ戻す。
【００７１】
一方、このリフレッシュ要求が要求されていないと判断した場合には（ステップＳＧ００３；ＮＯ）、メモリコントローラ１２９は、所定の終了条件を満たしているか否かを判断する（ステップＳＧ００４）。この終了条件は上述の変形例で記載したとおりであるため、説明を省略する。終了条件を満たしていると判断すると（ステップＳＧ００４；ＹＥＳ）、メモリコントローラ１２９は、リフレッシュ処理を行い（ステップＳＧ３００）、処理を終了する。そして、終了条件を満たしていないと判断すると（ステップＳＧ００４；ＮＯ）、メモリコントローラ１２９は、直接、処理をステップＳＧ００１に戻す。
【００７２】
（Ｃ−７−３：変形例７の起動処理の動作）
図３３は、この変形例における起動処理の動作を説明するためのフロー図である。メモリコントローラ１２９は、メモリ１２のリフレッシュフラグ１２６が「０」であるか否かを判断する（ステップＳＧ１０１）。リフレッシュフラグ１２６が「０」でないと判断した場合（ステップＳＧ１０１；ＮＯ）、メモリコントローラ１２９は、データ記憶領域１２４の全領域に対応するフラグを「０」で上書きしたのち（ステップＳＧ１０２）、リフレッシュフラグ１２６を「０」で上書きし（ステップＳＧ１０３）、処理をステップＳＧ１０８へ進める。
一方、リフレッシュフラグ１２６が「０」であると判断した場合（ステップＳＧ１０１；ＹＥＳ）、メモリコントローラ１２９は、データ記憶領域の全フラグの確認を開始する。具体的にはメモリコントローラ１２９は、着目するページのフラグが「０」であるか否かを判断し（ステップＳＧ１０４）、このフラグが「０」でないと判断した場合には（ステップＳＧ１０４；ＮＯ）、バックアップ領域を検索してそのページの物理アドレスを記憶しているページからデータを復帰させる（ステップＳＧ１０５）。そして、メモリコントローラ１２９は、データ記憶領域において、データを復帰させたページに対応するフラグを「０」で上書きして（ステップＳＧ１０６）、処理をステップＳＧ１０７に進める。一方、データ記憶領域において着目するページのフラグが「０」であると判断した場合には（ステップＳＧ１０４；ＹＥＳ）、メモリコントローラ１２９は、直接、処理をステップＳＧ１０７に進める。
【００７３】
ステップＳＧ１０７では、メモリコントローラ１２９がデータ記憶領域の全フラグを確認し終わったか否か判断し（ステップＳＧ１０７）、全フラグが確認済みと判断されるまで（ステップＳＧ１０７；ＮＯ）、メモリコントローラ１２９は、ステップＳＧ１０４〜ステップＳＧ１０６の処理を行う。そして、全フラグが確認済みと判断されると（ステップＳＧ１０７；ＹＥＳ）、メモリコントローラ１２９は、処理をステップＳＧ１０８へ進める。
ステップＳＧ１０８では、メモリコントローラ１２９は、ＣＰＵ１１にレジスタを復元するタイミングであることを報知する。ＣＰＵ１１は、これを受けてレジスタ１１０の内容を記憶するための領域として予め定められている領域ｒから記憶内容を読み出し、この内容をレジスタ１１０に書き込むことによりレジスタの復元を行う（ステップＳＧ１０８）。
【００７４】
（Ｃ−７−４：変形例７のデータ退避処理の動作）
図３４は、この変形例におけるデータ退避処理の動作を説明するためのフロー図である。このデータ退避処理は変形例６で図２７に示したデータ退避処理と同じであり、ステップＳＧ２０１〜ＳＧ２０５は、ステップＳＦ２０１〜ＳＦ２０５にそれぞれ対応している。ただし、メモリコントローラ１２９は、ＣＰＵ１１からレジスタ１１０の内容を退避するデータ退避命令であるレジスタ退避命令を受けた場合であっても、それ以外のデータ退避命令を受けた場合であっても、同様に処理を行う。すなわち、ＣＰＵ１１からレジスタ退避命令を受けた場合には、メモリコントローラ１２９は「アクセス要求された領域」として領域ｒを特定し、領域ｒに対応するフラグが「０」であるか否かを判断する（ステップＳＧ２０１）。領域ｒに対応するフラグが「０」である場合（ステップＳＧ２０１；ＹＥＳ）、メモリコントローラ１２９はバックアップ領域１２５に空領域を特定する（ステップＳＧ２０２）。この空領域の特定の方法は、変形例６と同様であるため説明を省略する。次に、メモリコントローラ１２９は、特定した空領域を領域ｒの記憶内容で上書きし（ステップＳＧ２０３）、上書きした領域に対応するアドレスに、領域ｒの物理アドレスを書き込む（ステップＳＧ２０４）。そして、メモリコントローラ１２９は、領域ｒに対応するフラグに「１」を上書きする（ステップＳＧ２０５）。
以上により、メモリコントローラ１２９は、バックアップの対象がレジスタ１１０の記憶内容であるか否かに関わらず、データ記憶領域１２４に対するアクセス要求がされたときに、バックアップ済みでない領域については、バックアップ領域１２５にバックアップ先を確保してバックアップを行う。
【００７５】
（Ｃ−７−５：変形例７のリフレッシュ処理の動作）
図３５は、この変形例におけるリフレッシュ処理の動作を説明するためのフロー図である。メモリコントローラ１２９は、上述したようにＣＰＵ１１からリフレッシュ要求が要求されていると判断した場合にはリフレッシュ処理を行うが、ＣＰＵ１１はリフレッシュ要求に先立って、レジスタ退避命令を命令する。すなわち、ＣＰＵ１１はリフレッシュ要求をする前に、レジスタ１１０の内容をメモリコントローラ１２９に退避させるべく、領域ｒにアクセス要求をする。これはデータアクセスの発生であるので（ステップＳＧ００１；ＹＥＳ）、データ退避処理が呼び出され（ステップＳＧ２００）、領域ｒは退避済みの状態になる。そして、ＣＰＵ１１は、領域ｒにレジスタ１１０の記憶内容を書き込み（ステップＳＧ００２）、メモリコントローラ１２９に対してリフレッシュ要求を要求する。メモリコントローラ１２９は、リフレッシュフラグ１２６を「１」で上書きし（ステップＳＧ３０１）、データ記憶領域１２４の全てのフラグを「０」で上書きした後（ステップＳＧ３０２）、リフレッシュフラグ１２６を「０」で上書きする（ステップＳＧ３０３）。
【００７６】
（Ｃ−７−６：変形例７の動作例）
図３６は、この変形例における情報処理装置１の動作の一例において、起動処理中に記憶媒体の状態が遷移する様子を示した図である。電源投入時において、ＣＰＵ１１のレジスタ１１０は、電源遮断前の状態を保持していないので、その記憶内容は不特定の値「Ｘ」である。一方、メモリ１２は、電源遮断前の状態を保持している。まず、リフレッシュフラグ１２６は「０」であるため、ステップＳＧ１０１の判断の結果、メモリコントローラ１２９は、ステップＳＧ１０４へ処理を進める。そして、領域ｃに着目している際のステップＳＧ１０４において、メモリコントローラ１２９は、領域ｃに対応するフラグｃが「０」でないと判断し、ステップＳＧ１０５へ処理を進める。ステップＳＧ１０５において、メモリコントローラ１２９は、バックアップ領域を検索して、アドレスが「ｃ」である領域γを見つけ出し、領域γの記憶内容「Ｃ１」をデータ記憶領域の領域ｃに上書きすることでデータを復帰させる。そして、ステップＳＧ１０６において、メモリコントローラ１２９は、領域ｃに対応するフラグｃを「０」で上書きする。そして、ステップＳＧ１０７において、データ記憶領域の全フラグを確認し終わると、ステップＳＧ１０８において、メモリコントローラ１２９はＣＰＵ１１にレジスタを復元するタイミングであることを報知し、ＣＰＵ１１は、これを受けて領域ｒの記憶内容「Ｒ０」をレジスタ１１０に上書きすることにより、レジスタを復元する。
【００７７】
図３７は、この変形例における情報処理装置１の動作の一例において、データ退避処理中に記憶媒体の状態が遷移する様子を示した図である。図３７に示すデータ退避処理では、ステップＳＧ００１の判断処理時において、領域ｃに対してアクセス要求がなされている。したがって、メモリコントローラ１２９は、まず、領域ｃに対応するフラグｃが「０」であるか否かを判断する。領域ｃに対応するフラグｃは「０」であるため、メモリコントローラ１２９は、ステップＳＧ２０２において、バックアップ領域の空領域として領域γを特定し、ステップＳＧ２０３において、特定された空領域（領域γ）をアクセス要求された領域（領域ｃ）の記憶内容「Ｃ１」で上書きする。そして、メモリコントローラ１２９は、ステップＳＧ２０４において、上書きした領域γに対応するアドレスγに、領域ｃの物理アドレス「ｃ」を書き込み、ステップＳＧ２０５において、領域ｃに対応するフラグｃに「１」を上書きする。以上がデータ退避処理であり、これに続いてステップＳＧ００２において、ＣＰＵ１１は、要求された処理の実行として、領域ｃの記憶内容を新たな内容「Ｃ２」で上書きする。
【００７８】
例えば、上述のステップＳＧ００２の途中で予期せぬ電源遮断があったとすると、領域ｃの記憶内容は破壊されている可能性があり、電源を再投入した場合、フラグｃは「１」である。よって、起動処理において、「ステップＳＧ１０１；ＹＥＳ→ステップＳＧ１０４；ＮＯ（領域ｃについて）→ステップＳＧ１０５→ステップＳＧ１０６→ステップＳＧ１０７；ＹＥＳ→ステップＳＧ１０８」という処理が行われる。すなわち、ＣＰＵ１１は、領域γにバックアップされた記憶内容である「Ｃ１」を復元して用いることとなる。
一方、ＳＧ２０５の前に予期せぬ電源遮断があったとすると、電源を再投入した場合、フラグｃは「０」である。よって、起動処理において、「ステップＳＧ１０１；ＹＥＳ→ステップＳＧ１０４；ＹＥＳ（領域ｃについて）→ステップＳＧ１０７；ＹＥＳ→ステップＳＧ１０８」という処理が行われる。すなわち、ＣＰＵ１１は、領域ｃの記憶内容としてそのまま「Ｃ１」を用いることとなる。
【００７９】
図３８は、この変形例における情報処理装置１の動作の一例において、データ退避処理中に記憶媒体の状態が遷移する様子を示した図である。図３８に示すデータ退避処理では、ステップＳＧ００１の判断処理時において、レジスタの内容を記憶するための領域として予め定められた領域ｒに対してアクセス要求がなされている。したがって、メモリコントローラ１２９は、まず、ステップＳＧ２０１において、領域ｒに対応するフラグｒが「０」であるか否かを判断する。領域ｒに対応するフラグｒは「０」であるため、メモリコントローラ１２９は、ステップＳＧ２０２において、バックアップ領域の空領域として領域δを特定し、ステップＳＧ２０３において、特定された空領域（領域δ）を領域ｒの記憶内容「Ｒ１」で上書きする。そして、メモリコントローラ１２９は、ステップＳＧ２０４において、上書きした領域δに対応するアドレスδに、領域ｒの物理アドレス「ｒ」を書き込み、ステップＳＧ２０５において、領域ｒに対応するフラグｒに「１」を上書きする。以上がデータ退避処理であり、これに続いてステップＳＧ００２において、ＣＰＵ１１は、要求された処理の実行として、領域ｒの記憶内容をレジスタ１１０の記憶内容「Ｒ２」で上書きする。
【００８０】
例えば、上述のステップＳＧ００２の途中で予期せぬ電源遮断があったとすると、領域ｒの記憶内容は破壊されている可能性があり、電源を再投入した場合、フラグｒは「１」である。よって、起動処理において、「ステップＳＧ１０１；ＹＥＳ→ステップＳＧ１０４；ＮＯ（領域ｒについて）→ステップＳＧ１０５→ステップＳＧ１０６→ステップＳＧ１０７；ＹＥＳ→ステップＳＧ１０８」という処理が行われる。すなわち、ＣＰＵ１１は、領域δにバックアップされた記憶内容である「Ｒ１」をレジスタ１１０に復元して用いることとなる。
一方、ＳＧ２０５の前に予期せぬ電源遮断があったとすると、電源を再投入した場合、フラグｒは「０」である。よって、起動処理において、「ステップＳＧ１０１；ＹＥＳ→ステップＳＧ１０４；ＹＥＳ（領域ｒについて）→ステップＳＧ１０７；ＹＥＳ→ステップＳＧ１０８」という処理が行われる。すなわち、ＣＰＵ１１は、領域ｒの記憶内容である「Ｒ１」をそのままレジスタ１１０に復元して用いることとなる。
【００８１】
このように、レジスタ１１０の内容をバックアップ領域１２５にバックアップする場合であっても、書き換えに伴ってデータ記憶領域１２４の内容をバックアップ領域１２５にバックアップする場合であっても、メモリコントローラ１２９は共通した処理によって、バックアップを行う。
【００８２】
図３９は、この変形例における情報処理装置１の動作の一例において、リフレッシュ処理中に記憶媒体の状態が遷移する様子を示した図である。ＣＰＵ１１はリフレッシュ要求を要求するに先立って、レジスタ退避命令を命令し、これを受けたメモリコントローラ１２９は、ステップＳＧ００１においてデータアクセスが発生したとして、ステップＳＧ２００のデータ退避処理を呼び出す。ここでは、領域ｒのフラグｒは「１」であるから、データ退避処理のステップＳＧ２０１における判断は否定的となり、データ退避処理は終了する。続いて、ＣＰＵ１１は、ステップＳＧ００２において領域ｒにレジスタ１１０の記憶内容「Ｒ３」を書き込み、メモリコントローラ１２９に対してリフレッシュ要求を要求する。メモリコントローラ１２９は、これを受けてリフレッシュ要求が要求されていると判断し、ステップＳＧ３０１においてリフレッシュフラグを「１」で上書きし、続いてステップＳＧ３０２において全フラグを「０」で上書きする。そしてその後、メモリコントローラ１２９は、ステップＳＧ３０３においてリフレッシュフラグを「０」で再度上書きする。このように、リフレッシュフラグが「１」となっているときは、全フラグを「０」に上書き中であることを示しており、この途中で予期しない電源遮断が起こったとしても、再起動の際に、メモリコントローラ１２９はリフレッシュフラグの内容に応じて処理を再開するため、一斉に全フラグが「０」になる処理は確実に行われる。なお、このようなリフレッシュフラグを用いなくとも、一斉に全フラグを「０」にする処理が確実に行われる機構を有している場合や、これにかかる時間が極めて短いなどの理由により、全フラグを「０」にする処理中に電源が遮断される場合を想定しなくてよい場合においては、リフレッシュフラグは必要ない。
【００８３】
例えば、上述のステップＳＧ００２が完了した時点で、予期せぬ電源遮断があったとすると、電源を再投入した場合、リフレッシュフラグ１２６は「０」である。よって、起動処理において、「ステップＳＧ１０１；ＹＥＳ→ステップＳＧ１０４；ＹＥＳ（全ての領域について）→ステップＳＧ１０７；ＹＥＳ→ステップＳＦ１０８」という処理が行われる。すなわち、レジスタ１１０には領域ｒが記憶している「Ｒ３」が書き込まれ、領域ｃに対応するフラグｃが「０」であるため、領域ｃは「Ｃ２」のまま上書きされないで処理が進行する。
一方、上述のステップＳＧ３０２の途中で、予期せぬ電源遮断があったとすると、電源を再投入した場合、リフレッシュフラグ１２６は「１」である。よって、起動処理において、「ステップＳＧ１０１；ＮＯ→ステップＳＧ１０２→ステップＳＧ１０３→ステップＳＦ１０８」という処理が行われる。電源遮断がステップＳＧ３０２の処理の途中で起きているので、フラグｒやフラグｃは「０」と「１」のいずれをも取り得る状態で再起動がなされるところ、メモリコントローラ１２９は、リフレッシュフラグ１２６が「１」であることを確認して、フラグｒおよびフラグａ〜ｃを全て「０」にする。したがって、必ず、レジスタ１１０には、領域ｒが記憶している「Ｒ３」が書き込まれ、領域ｃは「Ｃ２」のまま上書きされないで処理が進行する。
【００８４】
すなわち、この変形例７は、上述した変形例６におけるＭＭＵ１７の機能をメモリ１２の内部のメモリコントローラ１２９で実現しており、レジスタ１１０のバックアップとメモリ１２のバックアップとは、ＣＰＵ１１からは区別されることなく実現される。そして、リフレッシュ条件が満たされる任意のタイミングで、再起動の際の状態は更新されるため、情報処理装置１は予期せぬ電源遮断が生じたあとに、メモリ１２とレジスタ１１０の状態が上記のタイミングよりも戻り過ぎてしまうことがない。
なお、この変形例７において、メモリコントローラ１２９はアドレス表１７０を備えていなかったが、仮想アドレスと物理アドレスを対応付けるアドレス表を用いてもよい。また、この変形例７においても、メモリコントローラ１２９を設けず、上述したメモリコントローラ１２９の機能を、ＣＰＵ１１が読み込んで実行するプログラムで実現してもよい。また、上述の変形例７で、データ記憶領域１２４が４つの領域を有しており、バックアップ領域１２５が４つの領域を有していたが、この領域の数はこれに限られず、種々の数を用いることができる。また、データ記憶領域１２４とバックアップ領域１２５のそれぞれの容量は可変であってもよい。例えば、メモリコントローラ１２９が、メモリ１２の物理アドレスの小さい側からデータ記憶領域１２４を順次確保していく一方、物理アドレスの大きい側から必要に応じてバックアップ領域１２５を順次確保していくようにしてもよい。
【符号の説明】
【００８５】
１…情報処理装置、１１…ＣＰＵ、１１０…レジスタ、１２…メモリ、１２０…レジスタフラグ、１２３…レジスタ記憶領域、１２３１…主領域、１２３２…副領域、１２４…データ記憶領域、１２５…バックアップ領域、１２６…リフレッシュフラグ、１２９…メモリコントローラ、１３…メモリ置換ユニット、１４…記憶部、１５…操作部、１６…出力部、１７…ＭＭＵ、１７０…アドレス表、１９…システムバス、１２１…領域Ａ、１２１０…レジスタ記憶領域Ａ、１２１１…データ記憶領域Ａ、１２２…領域Ｂ、１２２０…レジスタ記憶領域Ｂ、１２２１…データ記憶領域Ｂ。
【図１】
2010020748.tif 000003
【図２】
2010020748.tif 000004
【図３】
2010020748.tif 000005
【図４】
2010020748.tif 000006
【図５】
2010020748.tif 000007
【図６】
2010020748.tif 000008
【図７】
2010020748.tif 000009
【図８】
2010020748.tif 000010
【図９】
2010020748.tif 000011
【図１０】
2010020748.tif 000012
【図１１】
2010020748.tif 000013
【図１２】
2010020748.tif 000014
【図１３】
2010020748.tif 000015
【図１４】
2010020748.tif 000016
【図１５】
2010020748.tif 000017
【図１６】
2010020748.tif 000018
【図１７】
2010020748.tif 000019
【図１８】
2010020748.tif 000020
【図１９】
2010020748.tif 000021
【図２０】
2010020748.tif 000022
【図２１】
2010020748.tif 000023
【図２２】
2010020748.tif 000024
【図２３】
2010020748.tif 000025
【図２４】
2010020748.tif 000026
【図２５】
2010020748.tif 000027
【図２６】
2010020748.tif 000028
【図２７】
2010020748.tif 000029
【図２８】
2010020748.tif 000030
【図２９】
2010020748.tif 000031
【図３０】
2010020748.tif 000032
【図３１】
2010020748.tif 000033
【図３２】
2010020748.tif 000034
【図３３】
2010020748.tif 000035
【図３４】
2010020748.tif 000036
【図３５】
2010020748.tif 000037
【図３６】
2010020748.tif 000038
【図３７】
2010020748.tif 000039
【図３８】
2010020748.tif 000040
【図３９】
2010020748.tif 000041