(57)【要約】【課題】情報処理装置について、装置構成を複雑化させることなく、動作の高速化と高信頼性を実現する。【解決手段】本発明の一例である情報処理装置１は、プロセッサ２と、プロセッサ２に使用される不揮発性メモリ３と、プロセッサ２から不揮発性メモリ３への書き込みが発生した場合に、書き込み位置の重複回数を抑えるために当該書き込み位置がずれるように書き込みアドレスを発生させるアドレス発生手段１６と、書き込みの新しさを表わす順序情報１９を発生させる順序発生手段１７と、アドレス発生手段１６によって発生された書き込みアドレスに対して、順序発生手段１７によって発生された順序情報１９を対応付けて、書き込み情報２１を記憶する書き込み制御手段１８とを具備する。【選択図】      図１
2010165251.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサに使用される不揮発性メモリと、
前記プロセッサから前記不揮発性メモリへの書き込みが発生した場合に、書き込み位置の重複回数を抑えるために当該書き込み位置がずれるように書き込みアドレスを発生させるアドレス発生手段と、
前記書き込みの新しさを表わす順序情報を発生させる順序発生手段と、
前記アドレス発生手段によって発生された書き込みアドレスに対して、前記順序発生手段によって発生された順序情報を対応付けて、書き込み情報を記憶する書き込み制御手段と
を具備する情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
アドレス変換情報を備えたメモリ管理ユニットをさらに具備し、
前記アドレス発生手段は、前記プロセッサから前記不揮発性メモリへの書き込みが発生すると、シーケンシャルに、かつ、前記アドレス変換情報において未使用の書き込みアドレスを発生させ、前記書き込みアドレスが所定値に達すると、再び初期値からシーケンシャルに、かつ、前記アドレス変換情報において未使用の書き込みアドレスを発生させる
ことを特徴とする情報処理装置。
【請求項３】
請求項１又は請求項２記載の情報処理装置において、
前記プロセッサにおける状態情報を生成する状態情報生成手段と、
前記不揮発性メモリの異常検出を行い、前記不揮発性メモリの異常が検出された場合に、例外処理を実行する異常検出手段と
をさらに具備し、
前記書き込み制御手段は、
前記状態情報生成手段によって生成された状態情報を、前記順序発生手段によって発生された順序情報と対応付けて、前記アドレス発生手段によって発生された書き込みアドレスに対して記憶する機能と、前記プロセッサの備えているアドレス変換情報を、前記順序発生手段によって発生された順序情報と対応付けて、前記アドレス発生手段によって発生された書き込みアドレスに対して記憶する機能とを備え、
前記プロセッサの復元時に、前記不揮発性メモリから、前記順序情報に基づいて、最新の状態情報及び最新のアドレス変換情報を読み出し、当該最新の順序情報及び最新のアドレス変換情報を用いて前記プロセッサの復元を行う復元手段をさらに具備する
ことを特徴とする情報処理装置。
【請求項４】
プロセッサから不揮発性メモリへの書き込みが発生した場合に、書き込み位置の重複回数を抑えるために当該書き込み位置がずれるように書き込みアドレスを発生させるアドレス発生手段と、
前記書き込みの新しさを表わす順序情報を発生させる順序発生手段と、
前記アドレス発生手段によって発生された書き込みアドレスに対して、前記順序発生手段によって発生された順序情報を対応付けて、書き込み情報を記憶する書き込み制御手段と
を具備するプロセッサ。
【請求項５】
プロセッサから、当該プロセッサに使用される不揮発性メモリへの書き込みが発生した場合に、アクセス制御装置は、書き込み位置の重複回数を抑えるために当該書き込み位置がずれるように書き込みアドレスと、前記書き込みの新しさを表わす順序情報を発生させ、
前記アクセス制御装置は、発生された前記書き込みアドレスに対して、発生された前記順序情報を対応付けて、書き込み情報を記憶する
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプロセッサ並びに情報処理方法に関する。
【背景技術】
【０００２】
従来の情報処理装置においては、プロセッサのメインメモリとして、例えばＤＲＡＭなどの揮発性メモリが使用されている。さらに、従来の情報処理装置では、揮発性メモリと組み合わせて２次記憶装置が使用される。
【０００３】
この従来の情報処理装置では、電源を切るとメインメモリの内容が消えてしまう。このため、従来の情報処理装置では、毎回ブート時に、システムの立ち上げが必要であり、プログラム起動又はデータの読み込みについてもその都度このプログラム又はデータを２次記憶装置からメインメモリに読み込む必要がある。
【特許文献１】特開２００１−２６６５８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したように、従来の情報処理装置においては、毎回ブート時に、システムの立ち上げが必要であり、プログラム又はデータを２次記憶装置からメインメモリに読み込む必要があり、実行に時間を要していた。
【０００５】
また、従来の情報処理装置では、電源が切れた場合にメインメモリの内容が保存されない。このため、従来の情報処理装置が正しくシャットダウンしなかった場合に、データ、システム、プログラムが破壊される可能性がある。
【０００６】
本発明は、上記実情に鑑みてなされたものであり、装置構成を複雑化させることなく、動作の高速化と高信頼性を実現する情報処理装置及びプロセッサ並びに情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様に係る情報処理装置は、プロセッサと、プロセッサに使用される不揮発性メモリと、プロセッサから不揮発性メモリへの書き込みが発生した場合に、書き込み位置の重複回数を抑えるために当該書き込み位置がずれるように書き込みアドレスを発生させるアドレス発生手段と、書き込みの新しさを表わす順序情報を発生させる順序発生手段と、アドレス発生手段によって発生された書き込みアドレスに対して、順序発生手段によって発生された順序情報を対応付けて、書き込み情報を記憶する書き込み制御手段とを具備する。
【０００８】
本発明の第２の態様に係るプロセッサは、当該プロセッサから不揮発性メモリへの書き込みが発生した場合に、書き込み位置の重複回数を抑えるために当該書き込み位置がずれるように書き込みアドレスを発生させるアドレス発生手段と、書き込みの新しさを表わす順序情報を発生させる順序発生手段と、アドレス発生手段によって発生された書き込みアドレスに対して、順序発生手段によって発生された順序情報を対応付けて、書き込み情報を記憶する書き込み制御手段とを具備する。
【０００９】
本発明の第３の態様に係る情報処理方法では、プロセッサから、当該プロセッサに使用される不揮発性メモリへの書き込みが発生した場合に、アクセス制御装置は、書き込み位置の重複回数を抑えるために当該書き込み位置がずれるように書き込みアドレスと、書き込みの新しさを表わす順序情報を発生させ、アクセス制御装置は、発生された書き込みアドレスに対して、発生された順序情報を対応付けて、書き込み情報を記憶する。
【発明の効果】
【００１０】
本発明により、装置構成を複雑化させることなく、装置の動作の高速化と高信頼性を実現することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略同一の構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１２】
（第１の実施の形態）
本実施の形態に係る情報処理装置においては、プロセッサに対して不揮発性のメインメモリ（主記憶装置）が利用される。
【００１３】
なお、プロセッサが、不揮発性メモリをメインメモリではない用途で用いる場合であっても、同様のアクセス制御を用いることが可能である。
【００１４】
図１は、本実施の形態に係る情報処理装置の詳細構成の一例を示すブロック図である。
【００１５】
また、図２は、本実施の形態に係る情報処理装置の概略構成の一例を示すブロック図である。
【００１６】
情報処理装置１は、プロセッサ２と不揮発性メインメモリ３とを具備する。プロセッサ２は、２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６などの各種装置をアクセス可能である。なお、２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６などの他の装置が、情報処理装置１の一部として備えられるとしてもよい。
【００１７】
不揮発性メインメモリ３としては、例えばフラッシュ（Ｆｌａｓｈ）メモリが用いられる。フラッシュメモリとしては、ＮＡＮＤ型、ＮＯＲ型などのフラッシュメモリを適用可能である。
【００１８】
不揮発性メインメモリ３は、コアプログラム（復元用）７、オペレーティングシステム８、例えば、プログラムＰ１，Ｐ２などの各種プログラム（命令）、例えばデータＤ１，Ｄ２などの各種データを記憶する。
【００１９】
不揮発性メインメモリ３における上記の各種のプログラム及びデータは、例えば、２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６から不揮発性メインメモリ３に記憶され、あるいは、プロセッサ２から不揮発性メインメモリ３に記憶される。
【００２０】
プロセッサ２は、少なくとも一つの演算コア（この図１の例では４つ）９１〜９４、キャッシュメモリ１０、ライトバッファ１１、メモリ管理ユニット（ＭＭＵ）１２を具備し、さらに、状態情報生成部（例えばＰＳＷ制御部）１３、アクセス制御部１４を具備する。
【００２１】
演算コア９１〜９４は、それぞれがキャッシュメモリ１０又は不揮発性メインメモリ３をアクセスしつつ、プログラムを実行する。演算コア９１〜９４は、並列に動作可能とする。
【００２２】
キャッシュメモリ１０の出力段にはライトバッファ１１が設けられており、キャッシュメモリ１０の内容（例えば、データとプログラムのうちの少なくとも一方を含むページ）は、ライトバッファ１１経由で、不揮発性メインメモリ３に記憶される。
【００２３】
なお、本実施の形態においては、例として、キャッシュメモリ１０及び不揮発性メインメモリ３への書き込み、読み出し、消去は、所定のページ単位、ページサイズよりも大きいブロックサイズのブロック単位、又は、ページサイズの整数倍の単位、ブロックサイズの整数倍の単位で行われるとする。
【００２４】
本実施の形態においては、キャッシュメモリ１０のキャッシュエントリサイズ及び不揮発性メインメモリ３のメモリアクセスサイズを、ページサイズとする。これにより、キャッシュメモリ１０及び不揮発性メインメモリ３のメモリ管理、不揮発性メインメモリ３のアクセス制御を簡略化することができ、情報処理装置１のハードウェア量を削減でき、情報処理装置１の処理効率化を図ることができる。
【００２５】
メモリ管理ユニット１２は、キャッシュメモリ１０及び不揮発性メインメモリ３について、仮想アドレスなどの論理アドレスと物理アドレスとを関係付けたアドレス変換情報１５を備え、論理アドレスと物理アドレスとの間の変換を行う。
【００２６】
状態情報生成部１３は、所定のタイミングで、プロセッサの状態及びプログラムの状態を表わす状態情報（例えばプログラム状態語：ＰＳＷ）を求める。例えば、状態情報生成部１３は、所定時間を経過する毎に、状態情報を生成する。また、例えば、状態情報生成部１３は、所定の回数、プロセッサ２から不揮発性メインメモリ３への書き込みが発生するたびに、状態情報を生成する。
【００２７】
アクセス制御部１４は、プロセッサ２から不揮発性メインメモリ３へのデータ・プログラムなどの書き込み及び読み出し、不揮発性メインメモリ３におけるデータ・プログラムなどの消去など、プロセッサ２と不揮発性メインメモリ３との間におけるアクセスを制御する。本実施の形態において、不揮発性メインメモリ３への書き込み及び読み出しは例えばページ単位で行われ、消去は例えばブロック単位で行われるとしてもよいが、他のサイズによって書き込み、読み出し、消去が行われるとしてもよい。
【００２８】
本実施の形態において、アクセス制御部１４は、アドレス発生部１６、順序発生部１７、書き込み制御部１８を具備する。
【００２９】
アドレス発生部１６は、プロセッサ２から不揮発性メインメモリ３へのデータ・プログラムの書き込みが発生すると、所定の規則にそって、書き込み位置の重複回数を抑える（書き込み回数の均等化を図る）ために当該書き込み位置がずれるように（例えばシーケンシャルに）、書き込みアドレスを発生させる。
【００３０】
例えば、アドレス発生部１６は、所定の初期値から順に書き込み先となるアドレスの値を増加させていき、所定の最終値（初期値より大）に達すると、再び、所定の初期値から順に書き込み先となるアドレスの値を増加させていく、としてもよい。
【００３１】
また、これとは逆に、アドレス発生部１６は、所定の初期値から順に書き込み先となるアドレスの値を減少させていき、所定の最終値（初期値より小）に達すると、再び、所定の初期値から順に書き込み先となるアドレスの値を減少させていく、としてもよい。
【００３２】
さらに、例えば、アドレス発生部１６は、１巡目において数スペースを空けて（例えば所定の間隔で）順に書き込み先のアドレスの値を発生させ、２巡目において１巡目で書き込みのなされなかった空スペースにおいて書き込み先のアドレスの値を順に発生させ、以下同様に、ｎ巡目においてｎ−１巡目までで書き込みのなされなかった空スペースにおいて書き込み先のアドレスの値を順に発生させる動作を繰り返し、利用可能な空スペースがなくなった場合に、上記の１巡目から再び同様の動作を繰り返すとしてもよい。
【００３３】
さらに、アドレス発生部１６は、メモリ管理ユニット１２のアドレス変換情報１５を参照して、アドレス変換情報１５で未使用のアドレスのみを、書き込みアドレスとして発生させる。
【００３４】
順序発生部１７は、書き込みの新しさを判断するための順序情報を発生させる。本実施の形態において、順序発生部１７は、不揮発性メインメモリ３への書き込みが発生するたびに、カウントアップを実行し、このカウント値を順序情報として用いる。この順序情報を書き込み対象のデータ・プログラムと関係付けて不揮発性メインメモリ３に記憶することで、同じデータ・プログラムに関する書き込みが複数の位置になされている場合に、順序情報の大きいデータ・プログラムが最新であることを判断可能となる。
【００３５】
書き込み制御部１８は、プロセッサ２から不揮発性メインメモリ３への書き込み処理を制御する。
【００３６】
書き込み制御部１８は、通常の書き込み時に、書き込み対象のエントリのＶ（Valid）フラグを１にセットする。
【００３７】
書き込み制御部１８は、不揮発性メインメモリ３上のＶフラグが１であってもメモリ管理ユニット１２で使用されていないと判断されたブロックについては、消去を行った上で、再度書き込みを行い、Ｖフラグを１とする。
【００３８】
書き込み制御部１８は、所定数以上のＶフラグが１となったか（例えば全てのＶフラグが１となったか）判断し、所定数以上のＶフラグが１となった場合に、例外処理を発生させ、ソフトウェアにより不揮発性メインメモリ３における不要部分のクリーンアップを行い、該当部分を消去してＶフラグを０とする。
【００３９】
本実施の形態において、書き込み制御部１８は、不揮発性メインメモリ３への書き込み時に、アドレス発生部１６によって発生されたアドレスに対して、順序発生部１７によって発生された順序情報（カウンタ値）１９、Ｖフラグ２０「１」、書き込み対象のデータ・プログラム（ページ）２１、状態情報フラグ２２「０」、ＭＭＵ情報２３を記憶する。
【００４０】
ここで、状態情報フラグ２２は、状態情報の書き込みのためのエントリであるか否かを表わす情報であり、例えばＰＳＷフラグである。該当エントリが状態情報の書き込みである場合には、状態情報フラグ２２には１がセットされ、該当エントリが状態情報の書き込みでない場合には、状態情報フラグ２２には０がセットされる。
【００４１】
さらに、書き込み制御部１８は、状態情報生成部１３によって新規の状態情報が発生された場合には、発生された状態情報２４を対応付けてエントリの書き込みを行う。この状態情報２４の書き込み時において、書き込み制御部１８は、アドレス発生部１６によって発生されたアドレスに対して、順序発生部１７によって発生された順序情報１９、Ｖフラグ２０「１」、状態情報２４、状態情報フラグ２２「１」、ＭＭＵ情報２３を記憶する。
【００４２】
本実施の形態において、不揮発性メインメモリ３はコアプログラム７を記憶している。コアプログラム７は、情報処理装置１の電源が再投入されるなど、プロセッサ２の状態を復元させる場合に、プロセッサ２の演算コア９１〜９４の少なくとも一つによって実行される。
【００４３】
コアプログラム７にしたがって、プロセッサ２は、不揮発性メインメモリ３の内容（書き込まれているエントリ、順序情報１９、Ｖフラグ２０、状態情報フラグ２２、ＭＭＵ情報２３など）を順に読み出し、順序情報１９に基づいて、最新の状態の状態情報２４を求め、この最新の状態情報２４でプロセッサ２を復元する。
【００４４】
また、コアプログラム７にしたがって、プロセッサ２は、順序情報１９に基づいて、最新の状態のＭＭＵ情報２３を読み出し、この最新のＭＭＵ情報２３でプロセッサ２のメモリ管理ユニット１２を復元する。
【００４５】
なお、コアプログラム７は、プロセッサ２が適切に再動作可能な状態情報２４とＭＭＵ情報２３とを選択し、この選択された状態情報２４とＭＭＵ情報２３の中から、最新の状態情報２４とＭＭＵ情報２３とを用いて、プロセッサ２を復元するとしてもよい。
【００４６】
本実施の形態においては、不揮発性メインメモリ３に記憶されているコアプログラム７によりプロセッサ２の復元を実現しているが、例えば、このコアプログラム７を実行する演算コアと同様の処理を行う復元ユニットを用いるとしてもよい。本実施の形態では、コアプログラム７を用いることで装置構成の簡略化が実現されている。
【００４７】
上記図１では、不揮発性メインメモリ３内に、コアプログラム７とメインメモリとして使用されるデータ部２５とが含まれており、データ部２５には、エントリごとに、順序情報１９、Ｖフラグ２０、データ・プログラム２１又は状態情報２４、状態情報フラグ２２、ＭＭＵ情報２３が含まれる。
【００４８】
しかしながら、不揮発性メインメモリ３の記憶形態はこの図１の状態に限定されず、各種の情報が必要に応じて関連付けられていればよい。
【００４９】
上述したように、キャッシュメモリ１０のキャッシュサイズと、不揮発性メインメモリ３の書き込みサイズ、データ・プログラム２１及び状態情報２４の書き込みサイズとは、一致又は整数倍の関係とする。これにより、ハードウェア量を削減させることができ、不揮発性メインメモリ３の制御を簡略化でき、情報処理装置１の処理を効率化させることができる。
【００５０】
上記のような構成を持つ情報処理装置１の動作について、以下で説明する。
【００５１】
上記の図１，２において、プロセッサ２は、例えばＮＡＮＤ型フラッシュメモリ又はＮＯＲ型フラッシュメモリなどの不揮発性メインメモリ３に直接接続される構成を持つ。
【００５２】
情報処理装置１は、最初の起動時に、通常の情報処理システムのように、オペレーティングシステム８のブート処理を実行し、不揮発性メインメモリ３に実行イメージを展開する。情報処理装置１は、その後の起動時においては、オペレーティングシステム８が不揮発性メインメモリ３に記憶されているため、不揮発性メインメモリ３のオペレーティングシステム８を使用し、不揮発性メインメモリ３に実行イメージを展開する動作を省略し、不揮発性メインメモリ３のオペレーティングシステム８を直接起動可能である。
【００５３】
上記図２では、不揮発性メインメモリ３上に、オペレーティングシステム８、プログラムＰ１，Ｐ２、データＤ１，Ｄ２が展開された状態を示している。
【００５４】
演算コア９１〜９４は、仮想アドレスを用いて例えばページ（プログラム、データなどを含む）の読み出し、書き込みを行う。アクセス対象のページがキャッシュメモリ１０上にある場合は、キャッシュメモリ１０から演算コア９１〜９４に、アクセス対象のページが返される。
【００５５】
アクセス対象のページがキャッシュメモリ１０上にない場合、メモリ管理ユニット１２は、アドレス変換情報１２（ページテーブル）を用いて、仮想アドレスを不揮発性メインメモリ３上のアドレスに変換する。ここで、アクセス対象のページに関するアドレスが、メモリ管理ユニット１２のアドレス変換情報１２にない場合、例外イベントが発生し、ソフトウェアによる例外処理が実行される。この例外処理により、アクセス対象のページが、２次記憶装置、外部アクセス装置、Ｉ／Ｏ装置などの装置から、キャッシュメモリ１０又は不揮発性メインメモリ３に記憶される。
【００５６】
図３は、本実施の形態に係る情報処理装置１におけるライトバックの一例を示すフローチャートである。
【００５７】
新たなページを、不揮発性メインメモリ３（又は２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６などの装置のいずれか）から、キャッシュメモリ１０へ持ってくる場合、ライトバック（キャッシュメモリ１０に記憶されているページを、不揮発性メインメモリ３に書き込む処理）が必要になる場合がある。
【００５８】
ライトバックが実行される場合、ステップＳ１において、アクセス制御部１４の書き込み制御部１８は、メモリ管理ユニット１２を参照し、アドレス発生部１６で発生されたアドレスが未使用か否か判断する。
【００５９】
アドレス発生部１６で発生されたアドレスが使用中の場合、ステップＳ２において、アドレス制御部１４のアドレス発生部１６は、次のアドレスを発生させ、処理は、上記ステップＳ１に戻る。これにより、現在使用中のページは新しいページで上書きされないことになる。不揮発性メインメモリ３における書き込み対象のアドレスは、次の空いているエントリのアドレスまでスキップされる。なお、ステップＳ１，Ｓ２のように、ライトバックが開始されてから未使用のアドレスを求めるのではなく、予め次の未使用のアドレスを検出しておくとしてもよい。
【００６０】
アドレス発生部１６で発生されたアドレスが使用中でない場合、ステップＳ３において、書き込み制御部１８は、ライトバック対象のページを、不揮発性メインメモリ３の未使用であり発生されたアドレスの示す位置に書き戻す。
【００６１】
この時、同時に、書き込み制御部１８は、メモリ管理ユニット１２のアドレス変換情報１５を、書き戻し後の状態を表わすように更新し、ライトバック対象のページについて、現在の順序情報１９、メモリ管理ユニット１２のアドレス変換情報１５を含むＭＭＵ情報２３を、不揮発性メインメモリ３に書き込む。また、書き込み制御部１８は、Ｖフラグ２０を１とし、状態情報フラグ２２を０とし、不揮発性メインメモリ３に書き込む。
【００６２】
本実施の形態においては、順序情報１９、Ｖフラグ２０、ページ２１、状態情報フラグ２２、ＭＭＵ情報２３が、発生したアドレスによって示される不揮発性メインメモリ３の位置に記憶される形式により、書き込みが行われる。
【００６３】
上記ステップＳ３の書き込み処理の後、アクセス制御部１４のアドレス発生部１６は、ステップＳ４において、新たなアドレスを発生させ、順序発生部１７は、新たな順序情報を発生させる。
【００６４】
例えば、アドレス発生部１６は、カウンタによりアドレスとなる値を増加させることで新たなアドレスを発生させ、新たなアドレスが所定値以上の場合に、初期値のアドレスを発生させ、同様の動作を繰り返す。また、例えば、順序発生部１７は、カウンタにより書き込みの発生順序を示す値を増加させる。
【００６５】
ここで、状態情報生成部１３は、所定の状態情報イベントが発生した場合に（定期的に、又は、所定回数の書き込み動作実行の後）、プロセッサ２内部のコンテクスト情報などを含む状態情報２４を生成する。
【００６６】
アクセス制御部１４の書き込み制御部１８は、状態情報生成部１３によって生成された状態情報２４を、不揮発性メインメモリ３に記憶する。なお、このように状態情報２４を不揮発性メインメモリ３に記憶する場合には、状態情報フラグ２２に１がセットされて書き込みが行われる。
【００６７】
状態情報２４には、汎用レジスタ、制御レジスタ、プログラムカウンタなどのプロセッサ２の動作状態を復元するために必要な情報が含まれている。
【００６８】
状態情報２４を不揮発性メインメモリ３に書き込む場合において、キャッシュメモリ１０中にダーティラインが存在する場合には、まずこのダーティラインが不揮発性メインメモリ３に書き戻される。
【００６９】
さらに、もし、２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６などの装置において、復元不可能な状態が存在する場合には、状態情報生成部１３は、ＳＹＮＣなどの操作により、これらの装置を復元可能な状態とし、その後状態情報２４を生成する。そして、書き込み制御部１８が、生成された状態情報２４の書き込み処理を行う。
【００７０】
図４は、本実施の形態に係る情報処理装置１におけるフェッチの一例を示すフローチャートである。
【００７１】
ステップＴ１において、メモリ管理ユニット１２は、アクセス対象のデータ（プログラムでも同様）がキャッシュメモリ１０に記憶されているか（キャッシュヒットか）否か判断する。
【００７２】
フェッチ対象のデータがキャッシュメモリ１０に記憶されている場合、ステップＴ２において、演算コア４１〜４４は、キャッシュメモリ１０上のデータをロードする。
【００７３】
データがキャッシュメモリ１０に記憶されていない場合、ステップＴ３において、メモリ管理ユニット１２は、アドレス変換情報１５に、このフェッチ対象のデータに関するページエントリが存在するか否か判断する。
【００７４】
メモリ管理ユニット１２のアドレス変換情報１５にフェッチ対象データのアドレスに関するページエントリが存在する場合、ステップＴ４において、メモリ管理ユニット１２は、アドレス変換情報１５のフェッチ対象のページエントリを参照し、論理アドレスを物理アドレスに変換する。
【００７５】
メモリ管理ユニット１２のアドレス変換情報１５にフェッチ対象データのアドレスに関するページエントリが存在しない場合、ステップＴ５において、例外処理が実行される。
【００７６】
例外処理が実行されると、ステップＴ６において、アクセス制御部１４は、ソフトウェア処理により、フェッチ対象データを、例えば、２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６などの装置から不揮発性メインメモリ３にロードする。メモリ管理ユニット１２は、ロード後のページエントリをアドレス変換情報１５にセットし、アドレス変換情報１５の更新を行う。その後処理は、ステップＴ４に移る。
【００７７】
ステップＴ４の後、ステップＴ７において、アクセス制御部１４は、不揮発性メインメモリ３の物理アドレスに記憶されているデータを読み出し、キャッシュメモリ１０へロードする。また、アクセス制御部１４は、必要であれば、直接、読み出したデータを演算コア４１〜４４にフィードする。
【００７８】
図５は、本実施の形態に係る情報処理装置１の復元処理（再構成）の一例を示すフローチャートである。
【００７９】
例えば、情報処理装置１の電源が再投入されると、プロセッサ２は、不揮発性メインメモリ３に記憶されているコアプログラム７を読み出し、コアプログラム７を実行し、復元を行う。コアプログラム７は、演算コア４１〜４４のうちの少なくとも一つによって実行されるが、以下においては、演算コア４１においてコアプログラム７が実行される場合を例として説明する。
【００８０】
ステップＵ１において、コアプログラム７を実行する演算コア４１は、不揮発性メインメモリ３を順に読み出す。
【００８１】
そして、コアプログラム７を実行する演算コア４１は、Ｖフラグ２０が「１」のエントリの中から、順序情報１９が最新のエントリを求め、この最新のエントリのアドレス（最新のアドレス）を求める。さらに、コアプログラム７を実行する演算コア４１は、状態情報フラグ２２が「１」のエントリの中から、順序情報１９が最新のエントリの状態情報２４（最新の状態情報）、順序情報１９が最新のエントリのＭＭＵ情報２３（最新のＭＭＵ情報）を求める。
【００８２】
ステップＵ２において、コアプログラム７を実行する演算コア４１は、Ｖフラグ２０が「１」で順序情報１９が最新のエントリのアドレスに対する次のアドレスを、アドレス発生部１６に発生させる。
【００８３】
コアプログラム７を実行する演算コア４１は、Ｖフラグ２０が「１」で順序情報１９が最新のエントリの順序情報に対する次の順序情報を、順序発生部１７に発生させる。
【００８４】
コアプログラム７を実行する演算コア４１は、Ｖフラグ２０が「１」で順序情報１９が最新のエントリのＭＭＵ情報２３に基づいて、メモリ管理ユニット１２を復元する。
【００８５】
コアプログラム７を実行する演算コア４１は、状態情報フラグ２２が「１」で順序情報１９が最新の状態情報２４をロードし、このロードした状態情報２４に基づいて、プロセッサ２の状態を復元する。
【００８６】
ステップＵ３において、演算コア４１は、コアプログラム７の実行から抜けて、ロードされた状態情報２４の示す状態から動作を再開する。
【００８７】
以上説明した本実施の形態に係る情報処理装置１の効果について説明する。
【００８８】
従来の情報処理装置では、メインメモリに揮発性メモリが使用されているため、再起動のたびにオペレーティングシステム、プログラム、データをロードする必要があった。
【００８９】
これに対して、本実施の形態に係る情報処理装置１においては、メインメモリに不揮発性メモリが使用されるため、再起動する場合であっても、必要なプログラム及びデータが不揮発性メインメモリ３に記憶されているため、システムブート、プログラム及びデータのロードを削減すること又は不要とすることができ、情報処理装置の処理を高速化させることができる。すなわち、本実施の形態に係る情報処理装置１では、プロセッサ２のメインメモリに不揮発性メモリを使用し、処理経過を不揮発性メインメモリ３に書き込むことにより、バックアップ電源がなくても情報処理装置１の状態を保持可能としている。また、情報処理装置１においては、プログラムの起動が高速化される。
【００９０】
本実施の形態に係る情報処理装置１においては、状態情報２４の生成イベントが発生するたびに、状態情報２４が不揮発性メインメモリ３に記憶されるため、電源が急に切断された場合であっても、最新の状態情報２４を読み出してプロセッサ２の状態を電源切断前の状態に復元させることができ、情報処理装置１の動作を再実行させることができる。
【００９１】
本実施の形態において、例えば、不揮発性メインメモリ３として、ＮＡＮＤ型フラッシュメモリ又はＮＯＲ型フラッシュメモリなどを用いた場合、従来行われていたウェアレべリングを行うことなくメインメモリとして利用することができる。
【００９２】
（第２の実施の形態）
本実施の形態においては、上記第１の実施の形態に係る情報処理装置１の変形例であり、キャッシュメモリが階層化された構成を持つ情報処理装置について説明する。
【００９３】
図６は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
【００９４】
情報処理装置２６は、少なくとも一つのプロセッサ（この図６の例では４つ）２７１〜２７４、制御装置２８、不揮発性メインメモリ３を備えている。情報処理装置２６は、２次記憶装置４、外部アクセス装置５、Ｉ／Ｏ装置６などの他の装置をアクセス可能である。
【００９５】
それぞれのプロセッサ２７１〜２７４は、それぞれ１次キャッシュメモリ２９１〜２９４を備えている。プロセッサ２７１〜２７４は、１次キャッシュメモリ２９１〜２９４においてキャッシュミスが発生すると、アクセス対象のアドレスを制御装置２８に送信する。
【００９６】
制御装置２８は、２次キャッシュメモリ１０、ライトバッファ１１、アクセス制御部１４、状態情報生成部１３、メモリ管理ユニット１２を備えている。この制御装置２８によって実行される例えばライトバック、フェッチ、復元などの各種処理は、上記第１の実施の形態の場合と同様である。
【００９７】
なお、本実施の形態においては、１次キャッシュメモリ２９１〜２９４と２次キャッシュメモリ１０とから構成される２階層の場合を例に説明しているが、キャッシュメモリの階層は３階層以上であっても同様に制御装置２８を適用可能である。
【００９８】
（第３の実施の形態）
本実施の形態においては、上記第１及び第２の実施の形態に係る情報処理装置に、書き込み回数チェック部及び異常検出部を備えた場合について説明する。なお、本実施の形態においては、上記第１の実施の形態に係る情報処理装置１に書き込み回数チェック部及び異常検出部を備えた場合について説明するが、第２の実施の形態に係る情報処理装置など他の形態の情報処理装置についても同様に適用可能である。
【００９９】
図７は、本実施の形態に係る情報処理装置の構成の一例を示すブロック図である。
【０１００】
本実施の形態に係る情報処理装置３０のプロセッサ３１のメモリ管理ユニット３２は、アドレス変換情報１５に加えて、不揮発性メインメモリ３の領域（例えばアドレス又はブロック）毎に、書き込み回数を表わす書き込み回数情報３３と、Ｂａｄ情報３４とを備える。
【０１０１】
Ｂａｄ情報３４は、不揮発性メインメモリ３のそれぞれの領域について、書き込み回数情報３３の示す書き込み回数が上限を超えた場合に、異常を示す値となる。なお、Ｂａｄ情報３４は、不揮発性メインメモリ３のデータ部３５にも記憶される。
【０１０２】
本実施の形態において、メモリ管理ユニット３２は、不揮発性メインメモリ３が書き込まれるタイミングで、書き込み回数情報３３を更新する（書き込み対象の領域又はエントリに関する書き込み回数に１を加える）。
【０１０３】
アクセス制御部３６の書き込み制御部３７は、書き込み回数情報３３を、不揮発性メインメモリ３の該当領域に記憶する。
【０１０４】
アクセス制御部３６には、書き込み回数チェック部３８が備えられている。書き込み回数チェック部３８は、不揮発性メインメモリ３への書き込み時に、書き込み先の領域の書き込み回数をチェックし、この書き込み回数が上限を表わす所定値を超える場合に例外処理を発生させる。例外処理では、ソフトウェアが起動され、このソフトウェアにより必要な処理が実行される。
【０１０５】
例えば、このソフトウェアによる例外処理では、メモリ管理ユニット３４と不揮発性メインメモリ３に対して、書き込み回数が上限を超えた領域のエントリにＢａｄ情報をセットし、書き込み回数が上限を超えたエントリへの書き込みを行わないようにする。メモリ管理ユニット３２は、Ｂａｄ情報３４が異常を表わすエントリへの書き込みを禁止する。
【０１０６】
さらに、本実施の形態に係る情報処理装置３０において、プロセッサ３１は、異常検出部３９を備えている。異常検出部３９としては例えばＥＣＣ回路などが用いられる。異常検出部３９は、ビット誤り訂正、訂正不可能エラー検出、例外発生を行う。
【０１０７】
上記の書き込み回数チェック部３８では、書き込み回数が上限を超えた場合に使用不可としているが、書き込み回数が上限を超える前であってもビットエラーが発生する場合がある。
【０１０８】
このようなエラーに対応するために、異常検出部３９は、不揮発性メインメモリ３に対するビットエラー検出を行う。さらに、異常検出部３９は、発生したビットエラーを訂正可能な場合には、訂正を行う。そして、異常検出部３９は、訂正不可能なビットエラーが発生した場合に、例外処理を発生させ、ソフトウェアにより必要な処理を行う。例えば、このソフトウェアによる例外処理により、メモリ管理ユニット３４と不揮発性メインメモリ３に対して、訂正不可能なエラーの発生した領域のエントリにＢａｄ情報をセットし、訂正不可能なエラーの発生した領域のエントリに対して書き込みを行わないようにする。メモリ管理ユニット３２は、Ｂａｄ情報３４が異常を表わすエントリへの書き込みを禁止する。
【０１０９】
以上説明した本実施の形態においては、不揮発性メインメモリ３への書き込みに異常が発生した場合に、異常の発生した領域の使用禁止、ユーザへの取り替え指示、など適当な処理をソフトウェアにより行うことができる。
【０１１０】
上記各実施の形態においては、キャッシュメモリからのライトバックのレート制御を行うとしてもよい。
【０１１１】
上記各実施の形態において、不揮発性メインメモリ３への記憶形式は、例えばプログラム、データ、プログラム状態情報などのように分けるとしてもよい。
【０１１２】
上記各実施の形態において、プロセッサは、キャッシュメモリを介して、不揮発性メインメモリをアクセスするものとする。また、上記各実施の形態において、プロセッサと不揮発性メインメモリとの間に、揮発性メモリを備えることで、処理を高速化させることができる。
【０１１３】
また、上記各実施の形態の制御は、不揮発性メモリをメインメモリではない他の目的で利用する場合にも適用可能である。
【図面の簡単な説明】
【０１１４】
【図１】本発明の第１の実施の形態に係る情報処理装置の詳細構成の一例を示すブロック図。
【図２】第１の実施の形態に係る情報処理装置の概略構成の一例を示すブロック図。
【図３】第１の実施の形態に係る情報処理装置におけるライトバックの一例を示すフローチャート。
【図４】第１の実施の形態に係る情報処理装置におけるフェッチの一例を示すフローチャート。
【図５】第１の実施の形態に係る情報処理装置の復元処理の一例を示すフローチャート。
【図６】本発明の第２の実施の形態に係る情報処理装置の構成の一例を示すブロック図。
【図７】本発明の第３の実施の形態に係る情報処理装置の構成の一例を示すブロック図。
【符号の説明】
【０１１５】
１，２６，３０…情報処理装置、２，２７１〜２７４，３１…プロセッサ、３…不揮発性メインメモリ、７…コアプログラム、９１〜９４…演算コア、１０，２９１〜２９４…キャッシュメモリ、１１…ライトバッファ、１２，３２…メモリ管理ユニット、１３…状態情報生成部、１４，３６…アクセス制御部、１５…アクセス変換情報、１６…アドレス発生部、１７…順序発生部、１８，３７…書き込み制御部、１９…順序情報、２０…Ｖフラグ、２１…データ・プログラム、２２…状態情報プログラム、２３…ＭＭＵ情報、２４…状態情報、２８…制御装置、３３…書き込み回数情報、３４…Ｂａｄ情報、３８…書き込み回数チェック部、３９…異常検出部
【図１】
2010165251.tif 000003
【図２】
2010165251.tif 000004
【図３】
2010165251.tif 000005
【図４】
2010165251.tif 000006
【図５】
2010165251.tif 000007
【図６】
2010165251.tif 000008
【図７】
2010165251.tif 000009