(57)【要約】      （修正有）【課題】データを効率的に冗長化し、システムの安定化を図ることが可能な情報処理装置、メモリ管理方法、およびメモリ管理プログラムを提供する。【解決手段】情報処理装置は、データを記憶するための記憶装置を用いる。情報処理装置は、記憶装置よりも高速にアクセス可能であり、複数の記憶領域を論理的に設けることが可能なメモリ１０２と、メモリ１０２を管理するためのメモリ管理部１５１とを備える。メモリ管理部１５１は、複数の記憶領域の中で使用状態が遷移する対象記憶領域が、記憶装置に対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか記憶装置に対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、対象記憶領域に他の記憶領域を冗長記憶領域として割り当てて対象記憶領域のデータのコピーを格納するか否かを決定する。【選択図】図２
2011159101.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するための記憶装置を用いる情報処理装置であって、
前記記憶装置よりも高速にアクセス可能であり、複数の記憶領域を論理的に設けることが可能なメモリと、
前記メモリを管理するためのメモリ管理部とを備え、
前記メモリ管理部は、前記複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定する、情報処理装置。
【請求項２】
前記メモリ管理部は、前記第１の使用状態から前記第２の使用状態へ前記対象記憶領域が遷移する場合には、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納し、前記第２の使用状態から前記第１の使用状態へ前記対象記憶領域が遷移する場合には、前記対象記憶領域に対する前記冗長記憶領域の割り当てを解除する、請求項１に記載の情報処理装置。
【請求項３】
前記メモリ管理部は、前記対象記憶領域が前記第１の使用状態から前記第２の使用状態へ遷移する前に前記対象記憶領域に対する前記冗長記憶領域の割り当てを行ない、前記対象記憶領域が前記第２の使用状態から前記第１の使用状態へ遷移した後に前記対象記憶領域に対する前記冗長記憶領域の割り当ての解除を行なう、請求項２に記載の情報処理装置。
【請求項４】
前記メモリ管理部は、さらに、前記冗長記憶領域が割り当てられた前記対象記憶領域においてエラーが発生した場合には、前記対象記憶領域の使用を停止して対応の前記冗長記憶領域を前記対象記憶領域として新たに設定し、前記複数の記憶領域のうち、エラーの発生した前記対象記憶領域および新たに設定した前記対象記憶領域以外の前記記憶領域を新たに冗長記憶領域として割り当て、新たに割り当てられた前記冗長記憶領域に、新たに設定された前記対象記憶領域のデータのコピーを格納する、請求項１から３のいずれかに記載の情報処理装置。
【請求項５】
データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理方法であって、
（ａ）前記メモリに複数の記憶領域を論理的に設けるステップと、
（ｂ）前記複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定するステップとを含む、メモリ管理方法。
【請求項６】
データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理プログラムであって、コンピュータに、
（ａ）前記メモリに複数の記憶領域を論理的に設けるステップと、
（ｂ）前記複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定するステップとを実行させる、メモリ管
理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリ管理方法、およびメモリ管理プログラムに関し、特に、記憶領域の冗長化を行なう情報処理装置、メモリ管理方法、およびメモリ管理プログラムに関する。
【背景技術】
【０００２】
ミッションクリティカルなサーバシステムでは、故障によってサービスが停止する時間を減らすために様々な技術が用いられている。特に、本番系が故障したときに待機系に切り替える二重化および冗長化の技術は、サーバ、ディスクおよびメモリなど、さまざまな部分で用いられている。しかしながら、従来の冗長化では本番環境と同一の待機系を用意しなければならないため、導入コストおよび保守コストが高くなるという難点があった。
【０００３】
このような問題を解決するために、たとえば、特許文献１（特開平０５-０８８９８９号公報）には、以下のような技術が開示されている。すなわち、メモリ部に格納するプログラムまたはデータの重要度に応じて、メモリ部をソフトウェアによりブロック単位で二重化構成とする。より詳細には、メモリ装置は、内部が複数のブロックに分かれかつこれらの複数のブロックの中の２つのブロックを二重化メモリとして機能させることが可能に構成したメモリ部と、各ブロックを二重化構成とするかしないかの情報が格納されたブロック・ステータスレジスタと、このレジスタに格納されたステータス情報が二重化構成を指示する場合、ＣＰＵ（Central Processing Unit）部からのアドレスを変換してメモリ部に与えるアドレス変換手段と、レジスタに格納された情報が二重化構成を指示する場合、対応するブロックを二重化メモリとして機能するように制御する二重化メモリ制御部とを備える。
【０００４】
また、特許文献２（特開平０７-２５３９３５号公報）には、以下のような技術が開示されている。すなわち、ディスクキャッシュメモリ及びディスクを備えたコンピュータにおいて、上記ディスクキャッシュメモリを不揮発性メモリで構成し、上記コンピュータ本体の起動指令の入力に対応して上記ディスクキャッシュメモリの内容を上記ディスクに書込む。
【０００５】
一方、メモリの高可用性（availability）機能としては、特許文献３（特開２００８−１３４８０９号公報）および特許文献４（特開２００６−１３４２４１号公報）に記載されているようなメモリミラーリングに加えて、エラー発生時にエラーを閉じこめることによりシステムを安全に継続できる技術が最近実現されつつある。ここで、エラーの閉じ込め機能とは、エラーが発生したメモリ位置に印をつけて、エラーの発生後にそのデータを参照しないようにすることにより、エラーを無害化する機能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０５-０８８９８９号公報
【特許文献２】特開平０７-２５３９３５号公報
【特許文献３】特開２００８−１３４８０９号公報
【特許文献４】特開２００６−１３４２４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、ＯＳ（Operating System）およびアプリケーション等のプログラムが使用す
る内部変数等の内部データの重要度は時々刻々と変化する場合が多い。
【０００８】
しかしながら、特許文献１に記載の技術では、データの重要度の具体的な判定基準、すなわち冗長化の必要性を判断するための具体的な基準が与えられていないため、上記のような重要度の変化するデータについて効率の良い冗長化を実現することが困難である。
【０００９】
また、特許文献２に記載の技術では、単にディスクキャッシュメモリの内容をディスクに格納するだけであるため、上記のような重要度の変化するデータを冗長化することには適していない。
【００１０】
また、エラーの閉じ込め機能では、エラーが発生したメモリ位置にあるデータを、ストレージから読み出すなどの方法で修復できる場合にはシステムを正常に継続できる。その一方で、当該データを修復できない場合にはシステムを正常に継続することができず、アプリケーションあるいはシステムがダウンしてしまう、という問題点があった。
【００１１】
この発明は、上述の課題を解決するためになされたもので、その目的は、データを効率的に冗長化し、システムの安定化を図ることが可能な情報処理装置、メモリ管理方法、およびメモリ管理プログラムを提供することである。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、この発明のある局面に係わる情報処理装置は、データを記憶するための記憶装置を用いる情報処理装置であって、
前記記憶装置よりも高速にアクセス可能であり、複数の記憶領域を論理的に設けることが可能なメモリと、
前記メモリを管理するためのメモリ管理部とを備え、
前記メモリ管理部は、前記複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定する。
【００１３】
上記課題を解決するために、この発明のある局面に係わるメモリ管理方法は、データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理方法であって、
（ａ）前記メモリに複数の記憶領域を論理的に設けるステップと、
（ｂ）前記複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定するステップとを含む。
【００１４】
上記課題を解決するために、この発明のある局面に係わるメモリ管理プログラムは、データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理プログラムであって、コンピュータに、
（ａ）前記メモリに複数の記憶領域を論理的に設けるステップと、
（ｂ）前記複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定するステップとを実行させる。
【発明の効果】
【００１５】
本発明によれば、データを効率的に冗長化し、システムの安定化を図ることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態に係る情報処理装置の概略構成図である。
【図２】本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。
【図３】フラグとページ状態の関係を示す図である。
【図４】図３に示す４種類のページ状態間の遷移を示す図である。
【図５】本発明の実施の形態に係る情報処理装置がメモリ管理処理を行なう際の動作手順を示すフローチャートである。
【図６】本発明の実施の形態に係る情報処理装置が冗長化開始処理を行なう際の動作手順を示すフローチャートである。
【図７】本発明の実施の形態に係る情報処理装置が冗長化終了を行なう際の動作手順を示すフローチャートである。
【図８】本発明の実施の形態に係る情報処理装置がデータ復旧処理を行なう際の動作手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
［概要］
本発明の実施の形態では、メモリ上でハードウェアのエラーが発生したときに、特許文献１〜４に記載の技術等の従来の方法よりも効率良く高可用性を実現することが可能となる。すなわち、本発明の実施の形態では、エラーにより失われたデータを修復する手段がない場合のみ、データの冗長化を行なう。これにより、従来の方法ではデータを復旧できなかった場合でも、冗長化領域へフェイルオーバーすることにより、システムを正常に継続させることができる。さらに、冗長化のために用いるメモリ領域を小さく抑えることができるため、メモリの使用効率を高めることができる。
【００１８】
このような効果を実現するためには、メモリ上の各データについて、従来の方法でデータを修復できるかどうかを判断し、修復不可能なメモリ領域のみ部分的に冗長化する必要がある。本発明の実施の形態では、一例として、ＯＳのメモリ管理機能に対して、動的に冗長化のオン・オフを切り替えるための仕組みを追加することにより、上記効果を実現する。
【００１９】
本発明の実施の形態は、メモリ冗長化の範囲を動的に変更するメモリ管理機能を実現しており、メモリ冗長化の範囲を、メモリエラーに対するデータの修復可能性に応じて動的に制御する。言い換えれば、エラー発生時のデータの修復可能性に基づいてメモリ冗長化の範囲を判断し、メモリ冗長化の範囲を動的に制御する。
【００２０】
本発明の実施の形態に係る情報処理装置は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、予めインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フロッピーディスク（登録商標）およびＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの記録媒体に格納されて、あるいはネットワークなどを介して流通する。
【００２１】
本発明の実施の形態に係るプログラムは、ＯＳ等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係る
プログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【００２２】
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００２３】
［装置構成］
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００２４】
図１は、本発明の実施の形態に係る情報処理装置の概略構成図である。図１を参照して、情報処理装置２００は、演算処理部であるＣＰＵ（Central Processing Unit）１０１と、メインメモリ１０２と、ハードディスク１０３と、入力インターフェイス１０４と、表示コントローラ１０５と、データリーダ／ライタ１０６と、通信インターフェイス１０７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００２５】
ＣＰＵ１０１は、ハードディスク１０３に格納されたプログラム（コード）をメインメモリ１０２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１０２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１０３から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ハードディスク１０３は不揮発性の磁気記憶装置であり、ＣＰＵ１０１で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク１０３にインストールされるプログラムは、後述するように、記録媒体１１１に格納された状態で流通する。なお、ハードディスク１０３に加えて、あるいはハードディスク１０３に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００２６】
入力インターフェイス１０４は、ＣＰＵ１０１とキーボード１０８、マウス１０９および図示しないタッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス１０４は、ユーザが入力部を操作することで与えられる操作指令などの外部からの入力を受付ける。
【００２７】
表示コントローラ１０５は、表示部の典型例であるディスプレイ１１０と接続され、ディスプレイ１１０での表示を制御する。すなわち、表示コントローラ１０５は、ＣＰＵ１０１による画像処理の結果などをユーザに対して表示する。ディスプレイ１１０は、たとえばＬＣＤ（Liquid Crystal Display）またはＣＲＴ（Cathode Ray Tube）である。
【００２８】
データリーダ／ライタ１０６は、ＣＰＵ１０１と記録媒体１１１の間のデータ伝送を仲介する。すなわち、記録媒体１１１は、情報処理装置２００で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１０６は、この記録媒体１１１からプログラムを読み出す。また、データリーダ／ライタ１０６は、ＣＰＵ１０１の内部指令に応答して、情報処理装置２００における処理結果などを記録媒体１１１へ書き込む。なお、記録媒体１１１は、たとえば、ＣＦ（Compact Flash）およびＳＤ（Secure Digital）などの汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体、またはＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体である。
【００２９】
通信インターフェイス１０７は、ＣＰＵ１０１とパーソナルコンピュータおよびサーバ装置などの間のデータ伝送を仲介する。通信インターフェイス１０７は、典型的には、イーサネット（登録商標）またはＵＳＢ（Universal Serial Bus）の通信機能を有する。な
お、記録媒体１１１に格納されたプログラムを情報処理装置２００にインストールする形態に代えて、通信インターフェイス１０７を介して配信サーバなどからダウンロードしたプログラムを情報処理装置２００にインストールしてもよい。
【００３０】
また、情報処理装置２００には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００３１】
［制御構造］
次に、情報処理装置２００におけるメモリ管理機能を提供するための制御構造について説明する。
【００３２】
図２は、本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。図２に示す各ブロックは、ハードディスク１０３に格納されたプログラム（コード）などをメインメモリ１０２に展開して、ＣＰＵ１０１に実行させることで提供される。なお、図２に示す制御構造の一部もしくは全部を専用ハードウェアおよび／または配線回路によって実現してもよい。
【００３３】
図２を参照して、情報処理装置２００は、その制御構造として、メモリ管理部１５１を備える。メモリ管理部１５１は、キャッシュ領域管理部１５２と、冗長領域管理部１５３とを含む。この制御構造は、たとえばＯＳの機能の一部として提供される。メモリ管理部１５１は、メインメモリ１０２を管理する。
【００３４】
より詳細には、冗長領域管理部１５３は、キャッシュ領域管理部１５２からの要求（Ｃ１１）に応じて冗長化のオン・オフを実行し、冗長領域の情報を管理する。
【００３５】
物理メモリであるメインメモリ１０２は、ハードディスク１０３よりも高速にアクセス可能である。メインメモリ１０２は、論理的に設けられた連続する複数の記憶領域を有する。ＯＳは、この記憶領域を単位としてメインメモリ１０２を管理する。この単位をページと呼ぶ。ページ管理データ２０１〜２０６は、メインメモリ１０２上の固定サイズ領域３０１〜３０６をそれぞれ管理するためのデータである。
【００３６】
各ページ管理データは、ページが未使用（フリー）であることを示すフリーフラグと、ページがキャッシュ領域管理部１５２に繋がれていることを示すキャッシュフラグと、キャッシュがハードディスク１０３などのストレージにバックアップを持たないことを示すダーティフラグと、ページが冗長ページであることを示す冗長化フラグとを含む。
【００３７】
図３は、フラグとページ状態の関係を示す図である。図３の一番右の列は、ページを冗長化する必要の有無を示している。
【００３８】
図３を参照して、ページが未使用ページである場合には、当該ページを冗長化する必要は無く、フリーフラグがオンに設定され、キャッシュフラグは無効であり、ダーティフラグは無効である。また、ページがクリーンページ、すなわちアプリケーションが使用し、かつハードディスク１０３にデータのコピーが存在する場合には、当該ページを冗長化する必要は無く、フリーフラグがオフに設定され、キャッシュフラグがオンに設定され、ダーティフラグがオフに設定される。また、ページがダーティページ、すなわちアプリケーションが使用し、かつハードディスク１０３にデータのコピーが存在しない場合には、当該ページを冗長化する必要が有り、フリーフラグがオフに設定され、キャッシュフラグがオンに設定され、ダーティフラグがオンに設定される。また、ページがＯＳ使用ページ、すなわちＯＳが使用し、かつハードディスク１０３にデータのコピーが存在しない場合には、当該ページを冗長化する必要が有り、フリーフラグがオフに設定され、キャッシュフ
ラグがオフに設定され、ダーティフラグは無効である。
【００３９】
本発明の実施の形態では、ダーティページおよびＯＳ使用ページに対してのみ冗長化を行ない、他のページに対しては冗長化を行なわない。その理由は、ダーティページおよびＯＳ使用ページは、他の場所にデータのコピーを持たないので、冗長化しなければエラー発生時にデータを修復することができないからである。
【００４０】
［動作］
次に、本発明の実施の形態に係る情報処理装置の動作について図面を用いて説明する。本発明の実施の形態では、情報処理装置２００を動作させることによって、本発明の実施の形態に係るメモリ管理方法が実施される。よって、本発明の実施の形態に係るメモリ管理方法の説明は、以下の情報処理装置２００の動作説明に代える。なお、以下の説明においては、適宜図２を参照する。
【００４１】
図４は、図３に示す４種類のページ状態間の遷移を示す図である。図４を参照して、アプリケーションがハードディスク１０３からデータファイルを読みだして未使用ページ５０１に当該データファイルを格納すると、未使用ページ５０１はクリーンページ５０２に遷移する（ＴＲ５１）。アプリケーションがクリーンページ５０２を解放すると、クリーンページ５０２は未使用ページ５０１に遷移する（ＴＲ５２）。また、アプリケーションがクリーンページ５０２にデータを書き込むと、クリーンページ５０２はダーティページ５０３に遷移する（ＴＲ５３）。アプリケーションがメインメモリ１０２とハードディスク１０３との同期をとると、ダーティページ５０３はクリーンページ５０２に遷移する（ＴＲ５４）。また、アプリケーションが未使用ページ５０１を動的ページとして割り当てると、未使用ページ５０１はダーティページ５０３に遷移する（ＴＲ５５）。アプリケーションがダーティページ５０３を解放すると、ダーティページ５０３は未使用ページ５０１に遷移する（ＴＲ５６）。また、ＯＳが未使用ページ５０１を自身の作業用として割り当てると、未使用ページ５０１はＯＳ使用ページ５０４に遷移する（ＴＲ５７）。ＯＳがＯＳ使用ページ５０４を解放すると、ＯＳ使用ページ５０４は未使用ページ５０１に遷移する（ＴＲ５８）。
【００４２】
図５は、本発明の実施の形態に係る情報処理装置がメモリ管理処理を行なう際の動作手順を示すフローチャートである。
【００４３】
図５を参照して、メモリ管理部１５１は、ページ状態すなわちページの使用状態の遷移が指示されるまで待機し（Ｓ１０でＮＯ）、使用状態の遷移が指示されると（Ｓ１０でＹＥＳ）、当該遷移が冗長化の不要な使用状態から冗長化の必要な使用状態への遷移である場合には（Ｓ１２でＹＥＳ）、冗長化開始処理を行ない（Ｓ１４）、その後、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。また、メモリ管理部１５１は、当該遷移が冗長化の必要な使用状態から冗長化の不要な使用状態への遷移である場合には（Ｓ１２でＮＯ、Ｓ１６でＹＥＳ）、冗長化終了処理を行ない（Ｓ１８）、その後、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。また、メモリ管理部１５１は、当該ページの冗長化の必要性が変わらない場合には（Ｓ１２でＮＯ、Ｓ１６でＮＯ）、次の使用状態の遷移が指示されるまで待機する（Ｓ１０）。
【００４４】
具体的には、使用状態の遷移が指示されたページ（以下、対象ページと称する。）が、冗長化が不要な未使用ページ５０１またはクリーンページ５０２から、冗長化が必要なダーティページ５０３またはＯＳ使用ページ５０４へ遷移するとき（ＴＲ５３、ＴＲ５５、ＴＲ５７）、キャッシュ領域管理部１５２は、冗長領域管理部１５３へ冗長化開始指示を送ることにより、冗長化開始処理を行なう。冗長領域管理部１５３は、キャッシュ領域管理部１５２から冗長化開始指示を受けて、冗長化開始指示の示す対象ページを冗長化する
。
【００４５】
一方、対象ページが冗長化が必要なページ状態から不要なページ状態へ遷移するとき（ＴＲ５４、ＴＲ５６、ＴＲ５８）、キャッシュ領域管理部１５２は、冗長領域管理部１５３へ冗長化終了指示を送ることにより、冗長化終了処理を行なう。冗長領域管理部１５３は、キャッシュ領域管理部１５２から冗長化終了指示を受けて、冗長化終了指示の示す対象ページを非冗長化する。
【００４６】
次に、本発明の実施の形態に係る情報処理装置の冗長化開始処理および冗長化終了処理について説明する。ここでは、図２に示す一例を参照しながら説明する。
【００４７】
図６は、本発明の実施の形態に係る情報処理装置が冗長化開始処理を行なう際の動作手順を示すフローチャートである。
【００４８】
図６を参照して、キャッシュ領域管理部１５２は、冗長化の不要な使用状態から必要な使用状態へ遷移するページ（固定サイズ領域）３０３，３０５を冗長領域管理部１５３に関連付ける（Ｓ６０１、図２のＣ１４，Ｃ１６）。ページ３０３，３０５を管理するためにそれぞれページ管理データ２０３，２０５が用いられる。
【００４９】
次に、キャッシュ領域管理部１５２は、ページ３０３，３０５に対してそれぞれページ３０４，３０６を冗長ページとして割り当てる（Ｓ６０２）。
【００５０】
次に、キャッシュ領域管理部１５２は、冗長ページ３０４，３０６を冗長領域管理部１５３に関連付ける（Ｓ６０３、図２のＣ１５，Ｃ１７）。冗長ページ３０４，３０６を管理するためにそれぞれページ管理データ２０４，２０６が用いられる。
【００５１】
次に、キャッシュ領域管理部１５２は、冗長領域管理部１５３に冗長化開始を要求する（Ｓ６０４）。
【００５２】
次に、冗長領域管理部１５３は、ページ管理データ２０４，２０６の冗長化フラグをオンに設定する（Ｓ６０５）。
【００５３】
次に、ＯＳまたはアプリケーションにより、ページ３０３，３０５の使用状態の遷移処理が実行される（Ｓ６０６、図４のＴＲ５３，ＴＲ５５，ＴＲ５７）。
【００５４】
図７は、本発明の実施の形態に係る情報処理装置が冗長化終了を行なう際の動作手順を示すフローチャートである。
【００５５】
図７を参照して、ＯＳまたはアプリケーションにより、ページ３０３，３０５を冗長化の必要な使用状態から不要な使用状態へ遷移する処理が実行される（Ｓ６１１、図４のＴＲ５４，ＴＲ５６，ＴＲ５８）。
【００５６】
次に、冗長領域管理部１５３は、ページ管理データ２０４，２０６の冗長化フラグをオフに設定する（Ｓ６１２）。
【００５７】
次に、キャッシュ領域管理部１５２は、冗長領域管理部１５３に冗長化終了を要求する（Ｓ６１３）。
【００５８】
次に、キャッシュ領域管理部１５２は、冗長ページ３０４，３０６と冗長領域管理部１５３との関連を消去する（Ｓ６１４、図２のＣ１５，Ｃ１７）。
【００５９】
次に、キャッシュ領域管理部１５２は、冗長ページ３０４，３０６を解放して未使用ページとする（Ｓ６１５）。
【００６０】
次に、キャッシュ領域管理部１５２は、ページ３０３，３０５と冗長領域管理部１５３との関連を消去する（Ｓ６１６、図２のＣ１４，Ｃ１６）。
【００６１】
ステップＳ６０１〜Ｓ６０５とステップＳ６１２〜Ｓ６１６は、本発明の実施の形態における特徴的な処理である。これらの処理により、効率の良い冗長化が可能となる。
【００６２】
また、上記ステップＳ６０４およびＳ６１３の処理の詳細は、メモリ二重化の実装内容に依存する。メモリ二重化の手段として、例えば特許文献１に記載されている二重化手段を用いた場合には、ステップＳ６０４およびＳ６１３の処理は二重化のオン・オフを制御するためのステータスレジスタに値を書き込む処理に相当する。このような二重化手段により二重化をオンにした場合、ＣＰＵ１０１およびメインメモリ１０２間のデータ転送は、二重化されたページの両方に対して同期的に行なわれる。
【００６３】
要約すれば、メモリ管理部１５１は、冗長化の不要な使用状態から冗長化の必要な使用状態へ対象ページが遷移する場合には、対象ページに他のページを冗長ページとして割り当てて対象ページのデータのコピーを格納し、冗長化の必要な使用状態から冗長化の不要な使用状態へ対象ページが遷移する場合には、対象ページに対する冗長ページの割り当てを解除する。
【００６４】
また、メモリ管理部１５１は、対象ページが冗長化の不要な使用状態から冗長化の必要な使用状態へ遷移する前に対象ページに対する冗長ページの割り当てを行ない、対象ページが冗長化の必要な使用状態から冗長化の不要な使用状態へ遷移した後に対象ページに対する冗長ページの割り当ての解除を行なう。すなわち、冗長化開始処理では、ページ遷移処理（Ｓ６０６）を行う前に冗長化のための処理（Ｓ６０１〜Ｓ６０５）を行う。一方、冗長化終了処理では、ページ遷移処理（Ｓ６１１）の後に冗長化のための処理（Ｓ６１２〜Ｓ６１６）を行う。このような方法により、ページ状態の遷移途中でメモリエラーが発生した場合でも、エラーからの復旧が可能となる。
【００６５】
次に、メモリエラー発生時のデータ復旧処理について説明する。図８は、本発明の実施の形態に係る情報処理装置がデータ復旧処理を行なう際の動作手順を示すフローチャートである。
【００６６】
要約すれば、メモリ管理部１５１は、冗長ページが割り当てられた対象ページにおいてエラーが発生した場合には、対象ページの使用を停止して対応の冗長ページを対象ページとして新たに設定する。そして、メモリ管理部１５１は、メインメモリ１０２における複数のページのうち、エラーの発生した対象ページおよび新たに設定した対象ページ以外のページを新たに冗長ページとして割り当てる。そして、メモリ管理部１５１は、新たに割り当てられた冗長ページに、新たに設定された対象ページのデータのコピーを格納する。
【００６７】
図８を参照して、データ復旧処理は、メモリエラー発生時に情報処理装置２００におけるハードウェアが発行するマシンチェック割り込み（Ｓ７０１）を発端として、エラーの発生したエラーページの閉じ込め処理（Ｓ７０２）を行った後に行われる。ここで、エラーページの閉じ込め処理とは、エラーページにハードウェアエラーが起こったことを示すフラグをオンに設定する処理である。この処理以降、当該エラーページへのアクセスは拒否される。データ復旧処理（Ｓ７０３〜Ｓ７０９）では、エラーページの種類（図３に示した４種類）に応じて、以下のように処理の分岐がなされる。
【００６８】
エラーページが未使用ページの場合には、エラーによりデータが失われないため、エラ
ーページの閉じ込め処理を行うだけで、安全に処理を継続することができる（Ｓ７０９）。
【００６９】
エラーページがクリーンページの場合、メインメモリ１０２において冗長化はされていないが、ハードディスク１０３等のストレージにデータのコピーが存在する。このため、メモリ管理部１５１は、ハードディスク１０３からコピーデータを読み出し、新しく割り当てたページに格納する（Ｓ７０４）。これにより、データの整合性が保たれ、安全に処理を継続することができる（Ｓ７０９）。
【００７０】
エラーページがダーティページまたはＯＳ使用ページの場合、まず、メモリ管理部１５１は、冗長領域管理部１５３に冗長ページの位置を問い合わせる（Ｓ７０５）。次に、メモリ管理部１５１は、エラーページの管理データを冗長ページの管理データにコピーする（Ｓ７０６）。さらに、ユーザ空間のアプリケーションを全て検査し、エラーページへの参照を全て冗長ページへの参照に切り替える（Ｓ７０７）。最後に、メモリ管理部１５１は、冗長ページに対して改めて冗長化を行い（Ｓ７０８）、フェイルオーバー処理を完了する。これらの処理により、データの整合性を保ちつつエラーを無害化できるため、安全に処理を継続することができる（Ｓ７０９）。
【００７１】
ステップＳ７０５〜Ｓ７０８は、本発明の実施の形態における特に特徴的な処理である。これらの処理により、メモリ冗長化によるデータ復旧が可能となる。
【００７２】
ところで、特許文献１に記載の技術では、データの重要度の具体的な判定基準、すなわち冗長化の必要性を判断するための具体的な基準が与えられていないため、重要度の変化するデータについて効率の良い冗長化を実現することが困難であった。また、特許文献２に記載の技術では、単にディスクキャッシュメモリの内容をディスクに格納するだけであるため、重要度の変化するデータを冗長化することには適していなかった。
【００７３】
これに対して、本発明の実施の形態に係る情報処理装置２００では、メインメモリ１０２は、ハードディスク１０３よりも高速にアクセス可能であり、複数の記憶領域を論理的に設けることが可能である。また、メモリ管理部１５１は、使用状態が遷移するページである対象ページが、冗長化の不要な使用状態へ遷移するか冗長化の必要な使用状態へ遷移するかに基づいて、対象ページに他のページを冗長ページとして割り当てて対象ページのデータのコピーを格納するか否かを決定する。ここで、冗長化の不要な使用状態とは、ハードディスク１０３に対象ページのデータのコピーが格納される使用状態であり、冗長化の必要な使用状態とは、ハードディスク１０３に対象ページのデータのコピーが格納されない使用状態である。このような構成により、データの重要度の具体的な判定基準、すなわち冗長化の必要性を判断するための具体的な基準に従って、ＯＳ等がプログラムの状態すなわちページの状態に応じて冗長化を行なうか否かを自律的に決定することができる。したがって、重要度の変化するデータについて効率の良い冗長化を実現することが可能となる。
【００７４】
すなわち、本発明の実施の形態に係る情報処理装置２００における各構成要素のうち、メインメモリ１０２およびメモリ管理部１５１により、データを効率的に冗長化し、システムの安定化を図るという本発明の目的を達成することが可能となる。
【００７５】
上記最小構成により、従来の方法ではデータを修復できなかったケースでも、冗長化によりデータを修復することができるため、メモリエラーによりシステムおよびアプリケーションがダウンすることを防ぐことができる。また、従来のメモリミラーリングと比べて、冗長ページのために使用する記憶領域を低減できるため、従来のメモリミラーリングと比べてメモリの使用効率を向上させることができる。
【００７６】
また、特許文献２に記載の技術では、単にディスクキャッシュメモリの内容をディスクに格納するだけであるため、重要度の変化するデータを冗長化することには適していなかった。すなわち、特許文献２に記載の技術は、バックアップをメモリ上に保存していると、電源障害時などシステムレベルの障害時にデータが失われるため、バックアップをディスク上に移す構成である。これに対して、本発明の実施の形態は、メモリの一部が壊れても他の部分が正常に運用を継続できることから、特許文献２に記載の技術とは保護できる障害のレベルが異なる。
【００７７】
また、特許文献２には、「ダーティビット」の記載があるが、これは、「キャッシュエリア番号に対応するブロック内の書込の有無を示す情報」、すなわち、メインメモリ上のデータのコピーをＣＰＵキャッシュ上にコピーしたことを示すビットである。これに対して、本発明の実施の形態における「ダーティページ」は、プログラムの内部データすなわちストレージ上にコピーが無いデータを格納するページを意味しており、本発明の実施の形態と特許文献２に記載の「ダーティ」とはまったく異なる概念である。
【００７８】
なお、本発明の実施の形態では、冗長化開始処理において、ページ遷移処理（Ｓ６０６）を行う前に冗長化のための処理を行ない、冗長化終了処理において、ページ遷移処理（Ｓ６１１）の後に冗長化のための処理を行なったが、これに限定するものではない。冗長化開始処理において、ページ遷移処理（Ｓ６０６）を行なった後に冗長化に関する処理を行ない、冗長化終了処理において、ページ遷移処理（Ｓ６１１）の前に冗長化に関する処理を行なってもよい。
【００７９】
また、情報処理装置２００がハードディスク１０３を備える構成であるとしたが、これに限定するものではなく、情報処理装置２００の外部にハードディスク１０３が設けられる構成であってもよい。
【００８０】
また、上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００８１】
［付記１］
データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理方法であって、
（ａ）前記メモリに複数の記憶領域を論理的に設けるステップと、
（ｂ）前記複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定するステップとを含む、メモリ管理方法。
【００８２】
［付記２］
前記（ｂ）のステップにおいては、前記第１の使用状態から前記第２の使用状態へ前記対象記憶領域が遷移する場合には、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納し、前記第２の使用状態から前記第１の使用状態へ前記対象記憶領域が遷移する場合には、前記対象記憶領域に対する前記冗長記憶領域の割り当てを解除する、付記１に記載のメモリ管理方法。
【００８３】
［付記３］
前記（ｂ）のステップにおいては、前記対象記憶領域が前記第１の使用状態から前記第
２の使用状態へ遷移する前に前記対象記憶領域に対する前記冗長記憶領域の割り当てを行ない、前記対象記憶領域が前記第２の使用状態から前記第１の使用状態へ遷移した後に前記対象記憶領域に対する前記冗長記憶領域の割り当ての解除を行なう、付記２に記載のメモリ管理方法。
【００８４】
［付記４］
前記メモリ管理方法は、さらに、
前記冗長記憶領域が割り当てられた前記対象記憶領域においてエラーが発生した場合には、前記対象記憶領域の使用を停止して対応の前記冗長記憶領域を前記対象記憶領域として新たに設定し、前記複数の記憶領域のうち、エラーの発生した前記対象記憶領域および新たに設定した前記対象記憶領域以外の前記記憶領域を新たに冗長記憶領域として割り当て、新たに割り当てられた前記冗長記憶領域に、新たに設定された前記対象記憶領域のデータのコピーを格納するステップを含む、付記１から３のいずれかに記載のメモリ管理方法。
【００８５】
［付記５］
データを記憶するための記憶装置を用い、前記記憶装置よりも高速にアクセス可能なメモリを備える情報処理装置におけるメモリ管理プログラムであって、コンピュータに、
（ａ）前記メモリに複数の記憶領域を論理的に設けるステップと、
（ｂ）前記複数の記憶領域の中で使用状態が遷移する対象記憶領域が、前記記憶装置に前記対象記憶領域のデータのコピーが格納される第１の使用状態へ遷移するか前記記憶装置に前記対象記憶領域のデータのコピーが格納されない第２の使用状態へ遷移するかに基づいて、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納するか否かを決定するステップとを実行させる、メモリ管理プログラム。
【００８６】
［付記６］
前記（ｂ）のステップにおいては、前記第１の使用状態から前記第２の使用状態へ前記対象記憶領域が遷移する場合には、前記対象記憶領域に他の前記記憶領域を冗長記憶領域として割り当てて前記対象記憶領域のデータのコピーを格納し、前記第２の使用状態から前記第１の使用状態へ前記対象記憶領域が遷移する場合には、前記対象記憶領域に対する前記冗長記憶領域の割り当てを解除する、付記５に記載のメモリ管理プログラム。
【００８７】
［付記７］
前記（ｂ）のステップにおいては、前記対象記憶領域が前記第１の使用状態から前記第２の使用状態へ遷移する前に前記対象記憶領域に対する前記冗長記憶領域の割り当てを行ない、前記対象記憶領域が前記第２の使用状態から前記第１の使用状態へ遷移した後に前記対象記憶領域に対する前記冗長記憶領域の割り当ての解除を行なう、付記６に記載のメモリ管理プログラム。
【００８８】
［付記８］
前記メモリ管理プログラムは、さらに、コンピュータに、
前記冗長記憶領域が割り当てられた前記対象記憶領域においてエラーが発生した場合には、前記対象記憶領域の使用を停止して対応の前記冗長記憶領域を前記対象記憶領域として新たに設定し、前記複数の記憶領域のうち、エラーの発生した前記対象記憶領域および新たに設定した前記対象記憶領域以外の前記記憶領域を新たに冗長記憶領域として割り当て、新たに割り当てられた前記冗長記憶領域に、新たに設定された前記対象記憶領域のデータのコピーを格納するステップを実行させる、付記５から７のいずれかに記載のメモリ管理プログラム。
【符号の説明】
【００８９】
１０１  ＣＰＵ
１０２  メインメモリ
１０３  ハードディスク
１０４  入力インターフェイス
１０５  表示コントローラ
１０６  データリーダ／ライタ
１０７  通信インターフェイス
１２１  バス
１５１  メモリ管理部
１５２  キャッシュ領域管理部
１５３  冗長領域管理部
２００  情報処理装置
【図１】
2011159101.tif 000003
【図２】
2011159101.tif 000004
【図３】
2011159101.tif 000005
【図４】
2011159101.tif 000006
【図５】
2011159101.tif 000007
【図６】
2011159101.tif 000008
【図７】
2011159101.tif 000009
【図８】
2011159101.tif 000010