JPWO2008099786A1 - メモリ障害復旧方法、情報処理装置およびプログラム - Google Patents

メモリ障害復旧方法、情報処理装置およびプログラム Download PDF

Info

Publication number
JPWO2008099786A1
JPWO2008099786A1 JP2008558076A JP2008558076A JPWO2008099786A1 JP WO2008099786 A1 JPWO2008099786 A1 JP WO2008099786A1 JP 2008558076 A JP2008558076 A JP 2008558076A JP 2008558076 A JP2008558076 A JP 2008558076A JP WO2008099786 A1 JPWO2008099786 A1 JP WO2008099786A1
Authority
JP
Japan
Prior art keywords
page
error
memory
execution
occurred
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008558076A
Other languages
English (en)
Inventor
亮仁 小比賀
亮仁 小比賀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2008099786A1 publication Critical patent/JPWO2008099786A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

ページングによる仮想記憶管理を行っているコンピュータにおいて、訂正が困難なメモリエラーが発生した場合に障害を復旧させてプロセスの実行を継続させる。訂正が困難なメモリエラーが発生したとき、エラー検出装置103から出力される割り込み信号107により、CPU101は実行中のプロセスを中断し、制御をOSに移す。OSは、メモリエラーが発生したページ枠に格納されているページの属性をページ表202から参照し、読み込み専用ならば、物理メモリ管理表201を更新してエラーの生じたページ枠を使用禁止状態に設定し、エラーの生じたページ枠に格納されていた仮想ページが何れのページ枠にも割り当てられていないようにページ表202を更新し、プロセスの実行を再開させる。プロセスの実行再開後、ページフォルト処理が引き起こされ、メモリエラーに遭遇した仮想ページが正常な他のページ枠に格納される。

Description

本発明は情報処理装置におけるメモリ障害復旧方法に関し、特にプロセスの実行中に訂正が困難なメモリエラーが発生したときのメモリ障害復旧方法、情報処理装置、およびプログラムに関する。
情報処理装置におけるメモリ障害復旧方法の一例が、特開2000−132462号公報(以下、文献1と称する)に記載されている。以下、図1および図2を参照して、文献1に記載のメモリ障害復旧方法を説明する。
図1を参照すると、文献1に記載の情報処理装置は、CPU101、主記憶装置102、エラー検出装置(ECC)103、サービスプロセッサ104、サービスプロセッサ用記憶装置(ROM)105、補助記憶装置109及びそれらを接続するデータバス108から構成されている。
このような構成を有する情報処理装置において、システム運転中の主記憶装置102のプログラムエリアにエラーが発生した場合、図2に示される処理が実行される。最初にエラー検出装置103がメモリエラーの発生を検出し、メモリエラーの内容を確認する(S101)。エラー検出装置103は、ECC(Error Check and Correct)と呼ばれる回路が用いられている。ECCは、メモリに誤った値が記録されていることを検出し、正しい値に訂正することができるエラー検出および訂正回路である。通常のECCで訂正することのできるエラービット数は1ビットのみであるが、他の種類のECCであれば、2ビットないし多ビットエラーを訂正できるものもある。文献1では、通常のECC(1ビットのみの訂正機能)を使用している。1ビットのエラーであれば(S102のNO)、ECCによるエラー訂正を実行し(S103)、処理を終了する。
2ビット以上のエラーであれば、エラー検出装置103はCPU101およびサービスプロセッサ104に向けて割り込み信号106、107を発生し、CPU101を一時停止させ(S104)、またサービスプロセッサ104に復旧処理を依頼する。サービスプロセッサ104は、補助記憶装置109内にあるバックアップファイルからメモリエラーが発生したアドレスのデータとその一つ前のアドレスのデータとを取得し(S105)、主記憶装置102上の修復エリアにこれらのデータを書き込む(S106)。次に、エラーの発生したメモリアドレスの一つ前のアドレスに修復エリアに書き込んだデータに分岐するための分岐命令を書き込み、また修復エリアに書き込んだデータの直後に、主記憶装置102のメモリエラーが発生したアドレスの次のアドレスに分岐するための分岐命令を書き込む(S107)。そして、プログラムカウンタの値をメモリエラーが発生したアドレスの一つ前のアドレス(書き込んだ分岐命令のアドレス)に変更し(S108)、CPU101に対する一時停止命令を解除する(S109)。
CPU101の実行が再開されると、メモリエラーが発生したアドレスの一つ前のアドレスに設定された分岐命令が実行されるため、主記憶装置102におけるメモリエラーが発生したアドレスのデータとその一つ前のアドレスのデータの代わりに、修復エリアに書き込まれたこれらのバックアップデータが実行され、その後に主記憶装置102におけるメモリエラーが発生したアドレスの一つ後のデータに分岐する。これによって、訂正が困難なメモリエラーが発生した場合でも、プログラムを継続して実行することができる。
上述した従来のメモリ障害復旧方法では、訂正が困難なメモリエラーが発生した主記憶装置のメモリ素子をアクセスする代わりに分岐命令によって修復エリアがアクセスされるように実行プログラムを書き換えているため、マルチタスクのように実行プログラムが複数動作する場合や、障害の発生しているメモリ領域にアクセスする命令が実行プログラム内に複数存在している場合は、アクセスがある都度、余分な分岐命令を実行しなければならず、オーバヘッドが大きくなるという課題がある。特に、ページングによる仮想記憶管を採用したパーソナルコンピュータ等のコンピュータに上述した技術を適用した場合、訂正が困難なメモリエラーが発生したメモリ素子を含むページフレームに或るプログラムの或るページが格納され、そのメモリ素子のアクセスによりメモリエラーが発生して上記方法で障害を復旧したとしても、そのページがそのページフレームから掃き出され、別のプログラムや同じプログラムの別のページが新たに格納された場合には、再度同じような復旧方法を実行する必要があるため、オーバヘッドがより一層大きくなる。
また上述したメモリ障害復旧方法では、サービスプロセッサ104やサービスプロセッサ用記憶装置105という、一般のパーソナルコンピュータには余り使われない特殊な装置が必要になるという課題もある。
さらに上述したメモリ障害復旧方法では、読み込みのみ可能なプログラムエリアに発生したメモリエラーを対象としており、書き込み可能なデータエリアに発生した訂正が困難なメモリエラーについてはその障害を復旧することができなかった。
本発明の目的は、ページングによる仮想記憶管理を行っているパーソナルコンピュータ等のコンピュータにおいて、読み込みのみ可能な領域に訂正が困難なメモリエラーが発生した場合に、実行プログラムを書き換えることなく、また、サービスプロセッサやサービスプロセッサ用の記憶装置などの特殊な装置を必要とせずに、メモリ障害を復旧させることができるようにすることにある。
上記目的を達成するための本発明のメモリ障害復旧方法は、仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式の情報処理装置におけるメモリ障害復旧方法において、プロセスの実行中に訂正が困難なメモリエラーが発生したときに割り込みにより前記プロセスの実行を中断し、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させる。
また、上記目的を達成するための本発明の情報処理装置は、仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式の情報処理装置において、主記憶装置のメモリエラーを検出し、割り込み信号を発生するエラー検出装置と、前記割り込み信号を受信するCPUとを備え、前記CPUは、プロセスの実行中に前記割り込み信号を受信したとき前記プロセスの実行を中断し、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させる。
また、上記目的を達成するための本発明のプログラムは、仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式のコンピュータに、プロセスの実行中にメモリエラーが発生したときに割り込みにより前記プロセスの実行を中断するステップと、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させるステップと、を実行させるためのプログラムである。
本発明によれば、ページングによる仮想記憶管理を行っているパーソナルコンピュータ等のコンピュータにおいて、読み込みのみ可能な領域に訂正が困難なメモリエラーが発生した場合に、実行プログラムを書き換えることなく、また、サービスプロセッサやサービスプロセッサ用の記憶装置などの特殊な装置を必要とせずに、メモリ障害を復旧させることが可能となる。その理由は、メモリエラーが発生したページフレームに格納されているページの属性が読み込み専用ならば、そのページフレームを使用禁止状態に設定すると共に、仮想ページが何れのページフレームにも割り当てられていないようにページ表を更新してプロセスの実行を再開させることで、ページフォルト処理を意図的に引き起こし、ページフォルト処理により、メモリエラーに遭遇した仮想ページをメモリ障害の無い別のページフレームに割り当てるようにしているためである。
文献1に記載の情報処理装置の構成を示すブロック図である。 文献1に記載の情報処理装置による障害復旧手順を示すフローチャートである。 スワップ処理を行う情報処理装置の構成の一例を示すブロック図である。 ページ表エントリの構成図である。 物理メモリ管理表エントリの構成図である。 スワップ処理の手順を示すフローチャートである。 ページフォルト処理を行う情報処理装置の構成の一例を示すブロック図である。 TLBエントリの構成図である。 ファイル参照エントリの構成図である。 ページフォルト処理の手順を示すフローチャートである。 本発明の第1の実施形態のブロック図である。 本発明の第1の実施形態の動作手順を示すフローチャートである。 本発明の第1の実施形態において、1ビットのエラーを訂正することのできるECCエラー検出装置を用いる場合の処理手順を示すフローチャートである。 本発明の第2の実施の形態のブロック図である。 スワップ情報格納部エントリの構成図である。 本発明の第2の実施形態の動作手順を示すフローチャートである。 本発明の第2の実施形態において、1ビットのエラーを訂正することのできるECCエラー検出装置を用いる場合の処理手順を示すフローチャートである。 本発明の実施例のブロック図である。 本発明の実施例の動作手順を示すフローチャートである。
以下、本発明を実施するための最良の形態について説明するが、それに先立ってページング方式による仮想記憶方式について、特にスワップ機能ならびにページフォルト機能を中心に説明する。
ページング方式による仮想記憶方式は、計算機のアーキテクチャが提供する論理的なアドレス空間(仮想アドレス空間)をページと呼ばれる固定長の領域に分割すると共に主記憶も同じ大きさのページフレーム(ページ枠)に分割し、仮想アドレスと主記憶アドレスとの対応をページ表によってページ単位で管理し、プロセス実行時にアドレス変換機構によって仮想アドレスを物理アドレスに動的に変換する方式である。ページ表内の各ページに対応するエントリには、そのページの属性、そのページが主記憶装置に存在しているか否かを示すプレゼントビット、主記憶装置に存在している場合にはそのページフレーム番号(存在していない場合には補助記憶装置上のスワップ領域に退避されているページのアドレス)が含まれている。
アドレス変換機構によるアドレス変換の過程において、プレゼントビットが1(ページが主記憶装置に有る状態)ならば仮想アドレスから物理アドレスの変換がそのまま行われるが、プレゼントビットが0(ページが主記憶装置に無い状態)ならばページフォルト割り込みが発生し、制御は基本ソフトウェア(以下、OSと称す)に移る。OSはページフォルト処理において、必要なページを補助記憶装置から主記憶装置の未使用のページフレームに転送し、それに合わせてページ表を書き換える。主記憶装置に未使用のページフレームが存在しないときは、所定のページ置き換えアルゴリズムに従って主記憶装置上の何れかのページを補助記憶装置上のスワップ領域に書き出した後、ページの読み込みを行う。ページをスワップ領域に書き出す処理をスワップ処理と呼ぶ。
スワップ処理について図3を参照して説明する。図3はスワップ処理を行う情報処理装置の構成の一例を示すブロック図であり、この情報処理装置は、CPU101と主記憶装置102と補助記憶装置109とから構成される。CPU101は、スワップ処理手段205がある。主記憶装置102には、物理メモリ管理表201、ページ表202及び複数のページフレーム203がある。補助記憶装置109には、スワップ領域206がある。
物理メモリ管理表201は、ページフレーム203がどのような状態にあるのかを管理するための表である。ページ表202は、仮想メモリアドレスを物理メモリアドレスに変換するための表であり、プロセス毎に生成される。プロセスは仮想メモリアドレスを指定することによってデータを読み書きする。プロセスが仮想メモリアドレスを指定してデータにアクセスした場合は、OSがページ表202を用いて仮想メモリアドレスを物理メモリアドレスに変換する。これによりプロセスは、物理メモリアドレスが示す主記憶(物理メモリとも称す)領域にアクセスすることができる。物理メモリはページと同じ大きさのブロック単位で管理されており、1ページに相当する物理メモリ領域がページフレーム203となる。スワップ領域206は、補助記憶装置109に設置された一時記憶領域であり、物理メモリの内容が一時的に退避される領域である。スワップ領域206へのアクセスはページフレーム単位である。
ページ表202は、図4に示すページ表エントリ301から構成される。ページ表エントリ301は、保護ビット302、プレゼントビット303、ページフレーム番号304から構成される。仮想メモリアドレスは、ページ表エントリ301のエントリ番号(仮想ページ番号)とオフセットの2つの部分に論理的に分割される。仮想メモリアドレスを物理メモリアドレスに変換する際は、まず仮想メモリアドレスのページ番号を確認して、それに対応するページ表エントリ301を取得する。そして、ページ表エントリ301中のページフレーム番号304を取得し、そのページフレーム番号304にオフセットを結合して、物理メモリアドレスを生成する。保護ビット302は、アクセスするページの属性を記述する。ページの属性には、「読み込みのみ可能」、「書き込み可能」あるいは「読み込み書き込み可能」の種類がある。プレゼントビット303は、アクセスするページが物理メモリ上にあるのかどうかを判別するためのビットである。物理メモリにない場合は、スワップ処理によってスワップ領域206へ一時的に内容が退避されている場合がある。
物理メモリ管理表201は、図5に示す物理メモリ管理表エントリ401から構成される。物理メモリ管理表エントリ401は、状態フラグ402、修正ビット407、参照頻度404、プロセス番号405、仮想ページ番号403から構成される。各ページフレーム203にはページフレーム番号が一意につけられている。ページフレーム番号は、物理メモリ管理表201のエントリ位置と一致する。すなわち、物理メモリ管理表201の1番目のエントリはページフレーム番号1のページフレーム203のための管理情報となる。
状態フラグ402は、「使用中」「未使用」「使用禁止」など、当該ページフレーム203の状態を表すフラグである。参照頻度404は、当該ページフレームに格納されているデータが使われている頻度を表す数値であり、通常は最後のアクセスからの経過時間を格納している。修正ビット407は、当該ページフレーム203の内容が書き換えられているかどうかを示すビットである。書き換えられているなら「1」に、書き換えられていないなら「0」に設定される。修正ビット407の利用方法を以下に例示する。まず、プロセスへ物理メモリ領域(ページフレーム)が割り当てられる。割り当てられた時点で、物理メモリ領域には何も書き込みが行われていないので修正ビット407は0のままである。そして、プロセスが何らかのデータを当該メモリ領域に書き込んだ時点で修正ビット407は1に変わる。そして、そのデータがファイルに保存されると修正ビット407は0に戻る。つまり、修正ビット407は、物理メモリ上のデータと同一のデータが、ディスクなどその他の装置上に存在するときに0、存在しないときに1を示す。物理メモリ管理表エントリ401中のプロセス番号405と仮想ページ番号403は、当該ページフレーム203を参照しているプロセスおよびその仮想ページの番号を示す。
スワップ処理の手順を図6に示す。前述したように、スワップ処理は、新たなページを読み込むための未使用のページフレームが主記憶装置に存在しなかった場合に開始される。最初に参照頻度404の最も低い物理メモリ管理表エントリ401を取得する(S201)。次に、当該物理メモリ管理表エントリ401の状態フラグ402を「未使用」状態にする(S202)。次に、当該物理メモリ管理表エントリ401の修正ビット407を確認する(S203)。修正ビットが1(修正あり)ならば(S204のYES)、当該ページフレーム203の内容(ページ)をスワップ領域206にコピーする(S205)。
次に、物理メモリ管理表エントリ401中のプロセス番号405と仮想ページ番号403とを参照し、当該プロセス番号および仮想ページ番号に対応するページ表エントリ301を取得する(S208)。そして、当該ページ表エントリ301のプレゼントビット303を0にし(S209)、且つページフレーム番号304をコピーしたスワップ領域206のアドレスに変更する(S210)。
修正ビットが0ならば(S204のNO)、スワップ領域にデータをコピーする必要がないので、S206とS207の処理を実行する。S206とS207の処理は、S208とS209の処理と同じである。
以上のスワップ処理によって、ページフレーム203の内容がディスクに一時退避させられる。
次にページフォルト処理について説明する。ページフォルト処理は、プロセスが仮想メモリアドレスを使用してデータにアクセスする際、ページ表エントリ301のプレゼントビット303が0になっていた場合に起きる割り込みによって開始される。プレゼントビット303が0になるのは、アクセスしようとしたページフレーム203が、次の3つの場合である。
(1)スワップ処理によって内容がディスクに退避させられている。
(2)スワップ処理によって、テキストマッピングが行われているページフレームの内容が消されている。
(3)まだ、物理メモリが割り当てられていない。
上記(1)は、前述のスワップ処理で説明したとおりである。上記(2)は、スワップ処理において、スワップ領域206への退避の必要がなかった場合に発生する。ディスクに格納されている実行プログラムファイル603の内容を「読み込みのみ可能」の状態で、任意のページフレーム203にコピーすることをテキストマッピングと呼ぶ。テキストマッピングは、当該ページフレーム203がスワップ処理の対象となった場合、書き換えを行っていない、すなわち、ページフレーム203の内容は実行プログラムファイル603に存在するので、ページフレーム203の内容をスワップ領域206にコピーする必要はない。上記(3)は、OSによってメモリ割り当てが遅延させられている場合である。ユーザからメモリ割り当て要求があっても、そのユーザのためにメモリ領域をすぐには用意しない。実際には、ユーザが確保したメモリ領域にデータを書き込もうとした時点で割り当てられることになる。以下に具体的なページフォルト処理の動作を説明する。
図7は、ページフォルト処理を行う情報処理装置の構成の一例を示すブロック図であり、この情報処理装置は、CPU101と主記憶装置102と補助記憶装置109とから構成される。CPU101には、ページフォルト処理手段601がある。主記憶装置102には、物理メモリ管理表201、ページ表202、複数のページフレーム203およびファイル参照表605がある。補助記憶装置109には、スワップ領域206および実行プログラムファイル603がある。また、CPU101には、TLB(Translation Lookaside buffer)602が設けられている。
TLB602は、仮想ページ番号と主記憶ページフレーム番号との変換早見表である。主記憶装置102にあるページ表202を使用して仮想メモリアドレスを物理メモリアドレスに変換する処理は負荷が高いので、一度変換した仮想ページ番号と主記憶ページフレーム番号との対はTLB602に保存しておき、次にアクセスする際は、TLB602を用いて仮想メモリアドレスを物理メモリアドレスに変換する。TLB602はプロセス切り替え毎に内容がすべて消される。TLB602は少なくとも1つのTLBエントリ701から構成される。図8にTLBエントリ701の構成を示す。TLBエントリ701は仮想ページ番号703と物理メモリアドレス(ページフレーム番号)702の組である。
ファイル参照表605は、プロセスの使用する各仮想ページがどのファイルのどのページをファイルマッピングの際に利用していたかを示す表である。ファイル参照表605は、図9に示されるようなファイル参照エントリ801から構成される。ファイル参照エントリ801は、仮想ページ番号804、ファイル名802、オフセット803から構成される。オフセット803は、実行プログラムファイル603先頭からのオフセットをさしている。ファイル参照表605はプロセス毎に作成される。
ページフォルト処理の手順を図10に示す。ページフォルト処理は、仮想メモリアドレスを物理メモリアドレスに変換する際に、仮想メモリアドレスに関連するページ表エントリ301のプレゼントビット303が0であった時点で開始される。最初に物理メモリ管理表201から「未使用」のページフレーム203を取得する(S301)。このとき未使用のページフレーム203が一つもなければ、前述したスワップ処理が行われて、未使用のページフレームが生成される。
次にページ表エントリ301の保護ビット302から、テキスト領域か(読み込みのみ可能か)、データ領域か(読み込みおよび書き込み可能か)を判別する(S302)。テキスト領域であれば(S303のYES)、ファイル参照表605内で、当該仮想ページ番号と一致するエントリを取得して、ファイル名802とオフセット803を取得する(S304)。そして、ファイル名802とオフセット803を使って、補助記憶装置109の該当する実行プログラムファイル603から該当する内容を取得して、ページフレーム203にコピーする(S305)。次に、物理メモリ管理表エントリ401の状態フラグ402を「使用中」にして(S306)、ページ表エントリ301のプレゼントビット303を1にする(S307)。次に、TLB602内の仮想ページ番号703と一致するエントリを消去する(S308)。そして、ページフォルト処理を終了する。
もし、テキスト領域でなければ(S303のNO)、スワップ領域アドレスがページ表エントリ301に格納されているかを確認する。ページ表エントリ301のページフレーム番号304の箇所には、プレゼントビット303が0の場合、一度でもスワップ処理が行われていれば、スワップ領域アドレスが格納されている。従って、もし格納されていれば(S310のYES)、スワップ領域アドレスを取得して(S311)、スワップ領域206の内容を当該ページフレーム203にコピーし(S312)、ステップS306からS308までの処理を実行する。スワップ領域アドレスが格納されていなければ(S310のNO)、まだ割り当てられていない領域へのアクセスとなるので、S311とS312のステップは実行せず、ステップS306からステップS308までの処理を実行する。
続いて、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
(第1の実施形態)
図11を参照すると、本発明の第1の実施形態にかかる情報処理装置は、CPU101、主記憶装置102、エラー検出装置103、補助記憶装置109およびTLB602を含んで構成される。CPU101には、ページフォルト処理手段601、復旧判定手段901および復旧実行手段902が設けられる。主記憶装置102には、物理メモリ管理表201、ページ表202、複数のページフレーム203およびファイル参照表605が配置される。補助記憶装置109には、実行プログラムファイル603が格納されている。これらの構成要素のうち、復旧判定手段901および復旧実行手段902以外のものは上述したものと同じである。
復旧判定手段901および復旧実行手段902は、ページフォルト処理手段601と共にOSの一機能として実装されている。
復旧判定手段901は、エラー検出装置103から送信された割り込み信号107を受け取って、検出されたエラーが復旧可能かどうかを判定する手段である。この復旧判定手段901は、メモリエラーが発生したページフレームに格納されているページの属性が読み込み専用ならば復旧可能と判断し、それ以外は復旧不可能と判断する。エラー検出装置103から送られてくる割り込み信号107には、エラーの発生した物理メモリアドレスが含まれている。復旧判定手段901は、その物理メモリアドレスから該当するページフレーム203を特定し、さらにそのページフレームに格納されている仮想ページの情報(プロセス番号と仮想ページ番号)を特定し、当該仮想ページがどのようなページ属性であるかを確認する。具体的には、該当するページ表エントリ301の保護ビット302を参照し、読み込みのみ可能、つまりテキストマッピングに当該ページフレーム203を使用しているのであれば、復旧可能であると判断し、復旧を実行するように復旧実行手段902へ命令する。読み込みのみ可能でなく、書き込みも可能なページ属性であれば、本実施の形態による復旧は不可能と判断する。この場合のその後の処理としては、例えばコンピュータの強制終了や、エラーに遭遇したプロセスのみの強制終了といった処理が考えられるが、本発明では特に限定するものではない。
復旧実行手段902は、復旧判定手段901からの復旧実行命令を受け取って、エラーの復旧を行う。具体的には、エラーの発生した物理メモリアドレスを含むページフレームの状態を管理する物理メモリ管理表エントリ401を参照し、当該ページフレームを使用しているプロセスの情報(プロセス番号と仮想ページ番号)を取得する。そして、取得したプロセス番号および仮想ページ番号に対応するページ表202の該当ページ表エントリ301を取得し、当該ページ表エントリ301のページフレーム番号304の内容を消去すると共に、プレゼントビット303を0にする。さらに、テキストマッピングの際にエラーの検出されたページフレーム203を再度使用しないように、当該ページフレーム203のために物理メモリ管理表エントリ401の状態フラグ402を「使用不可」にしておく。これらの処理を施した後、エラーに遭遇したプロセスの実行を再開させると、上述したページフォルト処理が発生し、保護ビット302の状態からテキスト領域であることが判明するので、テキストマッピングが実行される。
次に、図12に示すフローチャートを参照して本実施形態の動作について詳細に説明する。
或るプロセスの実行中に主記憶装置102上でメモリエラーが発生すると、エラー検出装置103によって当該メモリエラーが検出される(S401)。エラー検出装置103は、物理メモリのエラーを検出すると、エラーを検出した物理メモリアドレスを含む割り込み信号107をCPU101に送信する。CPU101は、割り込み信号107を受信すると、実行中のプロセスを中断し、復旧判定手段901による処理を開始する。
まず、復旧判定手段901は、エラーがテキスト領域で起きたかどうかを判別する(S402)。具体的には、エラーが検出された物理メモリアドレスから特定されるページフレーム203に対応する物理メモリ管理表エントリ401から、当該ページフレームを参照するプロセスの情報(プロセス番号405と仮想ページ番号403)を取得して、当該プロセス番号および仮想ページ番号に対応するページ表エントリ301を取得する。次に、このページ表エントリ301の保護ビット302を参照し、エラーの発生しているページフレーム203が、読み込みのみ可能なテキスト領域か、読み込みと書き込みの双方が可能なデータ領域かを判別する。
次に、エラーが起きた領域がテキスト領域でなければ(S403のNO)、エラー復旧は不可能と判断して図12に示される処理を終了する。テキスト領域であれば、エラー復旧が可能と判断し、制御を復旧実行手段902に移す。
復旧実行手段902は、取得されたページ表エントリ301のページフレーム番号304の内容を消去し(S404)、プレゼントビット303を0にする(S405)。次に、TLB602の該当エントリ(前記エラーの発生した物理ページのアドレスと仮想ページのアドレスとの対応を保持するエントリ)の内容を消去し(S406)、当該物理メモリ管理表エントリ401の状態フラグ402を「使用不可」にする(S407)。そして、図12に示した処理を終了し、中断したプロセスの実行を再開させる。
プロセスの実行は、エラーが発生した仮想アドレスから再開される。このとき、ステップS406でTLB602の該当エントリ(エラーの発生している物理メモリアドレスを格納しているTLBエントリ)が消去されているため、必ずページ表エントリ301を参照してアドレス変換が行われる。そして、ページ表エントリ301を参照すると、そのプレゼントビット303はステップS405で0にされているため、ページフォルト割り込みが発生し、再びプロセスの実行が中断され、ページフォルト処理手段601によるページフォルト処理が開始される。このページフォルト処理において、図10に示すステップS301からステップS308までの処理が実行されることにより、実行プログラムファイル603の該当するページの内容が、エラー検出されたページフレーム以外の未使用のページフレームにコピーされると共に、ページ表エントリ301のプレゼントビット303を1に書き換え、またページフレーム番号304にページフレームの番号を設定し、プロセスの実行が再開される。これにより、当該ページ表エントリ301を使用したアドレス変換が実行され、エラーの発生した物理メモリの箇所とは別の箇所に対するメモリアクセスが行われ、プロセスの実行が継続される。
次に、本実施形態において、1ビットのエラーを訂正することのできるECCエラー検出装置を用いる場合の処理手順について説明する。
図13は、本実施形態において、1ビットのエラーを訂正することのできるECCエラー検出装置を用いる場合の処理手順を示すフローチャートである。ここでは、エラー検出装置103に1ビットのエラーを訂正することのできるECCエラー検出装置を用いる。この場合、1ビットエラーはハードウェアで自動修正ができるため、エラー検出装置103によってECCエラーを検出すると(S501)、まず、検出したエラーが1ビットのエラーであれば(S502のNO)、ECCによるエラー訂正を行って(S503)、図13の処理を終了する。このとき、割り込み信号107は出力されない。2ビット以上のエラーであれば(S502のYES)、割り込み信号107が出力されて、上述したステップS402からステップS407までの処理が実行される。
上記では、エラー検出装置103が1ビットのエラーを自動修正できる機能を有する場合の処理手順について説明したが、2ビット以上のエラーを自動修正できるエラー検出装置103を用いることもできる。その場合、訂正可能なエラーであれば、エラー検出装置103内で訂正を行って処理を終了し、訂正が困難なエラーであれば、ステップS402以降の処理を実行する。
本実施形態によれば、ページングによる仮想記憶管理を行っている情報処理装置において、読み込みのみ可能な属性を持つ仮想ページが割り当てられた主記憶ページフレームでメモリエラーが発生した場合に、実行プログラムを書き換えることなく、また、サービスプロセッサやサービスプロセッサ用の記憶装置などの特殊の装置を必要とせずに、メモリ障害を復旧させることができる。その理由は、ページフォルトの機構を利用して、エラー検出されたページフレームに格納されていた仮想ページを別のページフレームに復元することでメモリ障害を復旧するためである。
(第2の実施形態)
次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。
図14を参照すると、本発明の第2の実施形態にかかる情報処理装置は、CPU101、主記憶装置102、エラー検出装置103、補助記憶装置109およびTLB602を含んで構成される。CPU101には、ページフォルト処理手段601、スワップファイル保護手段1001、復旧判定手段1003および復旧実行手段1004が設けられる。主記憶装置102には、物理メモリ管理表201、ページ表202、複数のページフレーム203、ファイル参照表605およびスワップ情報格納部1002が配置される。補助記憶装置109には実行プログラムファイル603およびスワップ領域206が格納されている。これらの構成要素のうち、スワップファイル保護手段1001、復旧判定手段1003、復旧実行手段1004およびスワップ情報格納部1002以外のものは上述したものと同じである。
スワップファイル保護手段1001、復旧判定手段1003および復旧実行手段1004は、ページフォルト処理手段601と共にOSの一機能として実装されている。
スワップファイル保護手段1001は、スワップ処理によってスワップ領域206に格納されたデータを消さずに残しておく手段である。スワップ領域206に格納されたデータは、ページフォルト処理によって物理メモリに移動した後は不要なデータとして消去されていたが、本実施形態では、移動先の物理メモリのメモリ障害によってデータが破壊された場合に備えて消去しない。具体的には、スワップファイル保護手段1001は、当該ページフレーム203を使用しているプロセスが終了するまでスワップ領域206に書き込まれたデータをそのまま保存しておく。また、ページフォルト処理によってデータが物理メモリに読み込まれると、ページ表エントリ301のページフレーム番号304に格納されていたスワップ領域アドレスがページフレーム番号により上書きされるので、当該スワップ領域アドレスをスワップ情報格納部1002に格納しておく。
スワップ情報格納部1002は、図15に示されるようなスワップ情報格納部エントリ1101から構成される。スワップ情報格納部エントリ1101は、仮想ページ番号1103およびスワップ領域アドレス1102から構成される。スワップ情報格納部1002はプロセス毎に存在する。
復旧判定手段1003は、エラー検出装置103から送信された割り込み信号107を受け取って、検出されたエラーが復旧可能かどうかを判定する手段である。この復旧判定手段1003は、メモリエラーが発生したページフレームに格納されている仮想ページの属性が読み込み専用ならば、第1の実施形態の復旧判定手段901と同様にテキストマッピングによる復旧が可能と判断する。さらに復旧判定手段1003は、ページ属性が書き込み可能な属性の場合、そのページフレームの修正ビット407が0(修正無し)で且つ当該ページフレームに格納されていた仮想ページのスワップ領域アドレスがスワップ情報格納部1002に格納されているときは(即ち、一度でもスワップ処理が行われていれば)、スワップファイルによる復旧が可能と判断し、それ以外のときは復旧不可能と判断する。復旧不可能と判断した場合のその後の処理としては、例えばコンピュータの強制終了や、エラーに遭遇したプロセスのみの強制終了といった処理が考えられるが、本発明では特に限定するものではない。
復旧実行手段1004は、復旧判定手段1003からの復旧実行命令を受け取って、エラーを復旧する。本実施形態では、第1の実施形態と異なり、復旧実行手段1004は復旧判定手段1003から「テキストマッピングによる復旧」と「スワップファイルによる復旧」の2種類の命令を受け取る。「テキストマッピングによる復旧」は第1の実施形態と同様の手順で行われる。「スワップファイルによる復旧」は、エラーの発生した物理メモリアドレスを含むページフレームの状態を管理する物理メモリ管理表エントリ401を参照し、当該ページフレームを使用しているプロセスのプロセス番号と仮想ページ番号を取得する。そして、取得したプロセス番号および仮想ページ番号に関連するページ表202の該当エントリ301を取得し、当該ページ表エントリ301のページフレーム番号304の内容を消去すると共に、プレゼントビット303を0にする。さらに、スワップ情報格納部1002から、前回スワップされたスワップ領域アドレスを取得し、ページ表エントリ301のページフレーム番号304の箇所に書き込む。また、エラーの検出されたページフレーム203は再度使用しないように、当該ページフレーム203に対応する物理メモリ管理表エントリ401の状態フラグ402を「使用不可」にする。これらの処理を施した後に、メモリエラーに遭遇したプロセスの実行を再開させることによって、ページフォルト処理が発生し、スワップ領域206の内容を使って、物理メモリ上の当該ページフレーム203に格納されていたページがメモリ障害の無い別のページフレーム203に再現することができる。
次に、図16に示すフローチャートを参照して本実施形態の動作について詳細に説明する。
或るプロセスの実行中に主記憶装置102上でメモリエラーが発生すると、エラー検出装置103によって当該メモリエラーが検出される(S601)。エラー検出装置103は、物理メモリのエラーを検出すると、エラー検出した物理メモリアドレスを含む割り込み信号107をCPU101に送信する。CPU101は、割り込み信号107を受信すると、実行中のプロセスを中断し、復旧判定手段1003による処理を開始する。
まず、復旧判定手段1003は、エラーがテキスト領域で起きたか、データ領域で起きたかを判別する(S602)。具体的には、エラー検出された物理メモリアドレスから特定されるページフレーム203に対応する物理メモリ管理表エントリ401から、当該ページフレームを参照するプロセスの情報(プロセス番号と仮想ページ番号)を取得して、当該プロセスおよび仮想ページ番号に対応するページ表エントリ301を取得する。次に、このページ表エントリ301の保護ビット302を参照し、エラーの発生しているページフレーム203が、読み込みのみ可能なテキスト領域か、読み込みと書き込みの双方が可能なデータ領域かを判別する(S602)。
エラーの起きた領域がテキスト領域であれば、復旧実行手段1004において、図12に示す第1の実施形態におけるステップS404からステップS407までの処理と同様にしてステップS604からステップS607までの処理を実行することにより、テキストマッピングによる復旧を行う。
エラーの起きた領域がテキスト領域でなくデータ領域であれば(S603のNO)、復旧判定手段1003は、当該物理メモリ管理表エントリ401の修正ビット407を確認する(S608)。修正ビットが0(修正無し)ならば(S609のNO)、当該プロセスに対応するスワップ情報格納部1002を参照して、当該仮想ページと対になるスワップ領域アドレスを取得する(S610)。そして、この取得に成功すれば(S611のYES)、当該プロセスおよび仮想ページに対応するページ表エントリ301のページフレーム番号304の箇所にそのスワップ領域アドレスを格納し(S612)、ステップS605からステップS607までの処理を実行する。そして、図16に示す処理を終えて、中断したプロセスの実行を再開させる。
また、修正ビットが1(修正有り)であるか(S609のYES)、スワップ領域アドレスの取得に失敗した場合(S611のNO)、復旧判定手段1003は、復旧は不可能と判断する。この場合、その後の処理としては、例えばコンピュータの強制終了や、エラーに遭遇したプロセスのみの強制終了といった処理が考えられるが、本発明では特に限定するものではない。
ステップS610からステップS612までの処理、およびステップS605からステップS607までの処理が行われた後に中断プロセスの実行が再開された場合には、次のような動作が行われる。プロセスの実行は、エラーが発生した仮想アドレスから再開される。このとき、ステップS606でTLB602の該当エントリ(エラーの発生している物理メモリアドレスを格納しているTLBエントリ)が消去されているため、必ずページ表エントリ301を参照するアドレス変換が行われる。そして、ページ表エントリ301を参照すると、そのプレゼントビット303はステップS605で0にされているため、ページフォルト割り込みが発生し、再びプロセスの実行が中断され、ページフォルト処理手段601によるページフォルト処理が開始される。このページフォルト処理において、図10に示すステップS301からステップS303までの処理、ステップS309からステップS312までの処理、およびステップS306からステップS308までの処理が実行されることにより、スワップ領域206に退避されていた該当するページの内容が、エラー検出されたページフレーム以外の未使用のページフレームにコピーされると共に、ページ表エントリ301のプレゼントビット303を1に書き換え、またページフレーム番号304にページフレームの番号を設定し、プロセスの実行が再開される。これにより、当該ページ表エントリ301を使用したアドレス変換が実行され、エラーの発生した物理メモリの箇所とは別の箇所に対するメモリアクセスが行われ、プロセスの実行が継続されていく。
次に、本実施形態において、1ビットのエラーを訂正することのできるECCエラー検出装置を用いる場合の処理手順について説明する。
図17は、本実施形態において、1ビットのエラーを訂正することのできるECCエラー検出装置を用いる場合の処理手順を示すフローチャートである。ここでは、エラー検出装置103に1ビットのエラーを訂正することのできるECCエラー検出装置を用いる。
この場合、1ビットエラーはハードウェアで自動修正ができるため、エラー検出装置103によってECCエラーを検出すると(S701)、まず、検出したエラーが1ビットのエラーであれば(S702のNO)、ECCによるエラー訂正を行って(S703)、図13の処理を終了する。このとき、割り込み信号107は出力されない。他方、2ビット以上のエラーであれば(S702のYES)、割り込み信号107が出力されて、第2の実施の形態におけるS602〜S612のステップが実行される。
上記では、エラー検出装置103が1ビットのエラーを自動修正できる機能を有する場合の処理手順について説明したが、2ビット以上のエラーを自動修正できるエラー検出装置103を用いることもできる。その場合、訂正可能なエラーであれば、エラー検出装置103内で訂正を行って処理を終了し、訂正が困難なエラーであれば、S602以降のステップを実行する。
本実施形態によれば、第1の実施形態と同様の効果が得られると共に、さらに、データ領域であっても、一度スワップ処理が実行されており且つ前回のスワップ時から修正が行われていなければ、スワップ領域206のデータを利用して、再度別のページフレーム203に復元することによって、メモリ障害を復旧することができる。
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。実施例で使用するOSは、LinuxOSである。図18を参照すると、実施例を適用した情報処理装置は、CPU101、主記憶装置102、エラー検出装置(ECC)103、補助記憶装置109およびTLB602から構成され、CPU101は、ページフォルトハンドラ601と、復旧判定手段901および復旧実行手段902を含む割り込みハンドラ1204と備え、主記憶装置102には、ページディスクリプタ1201、ページテーブル1202およびページフレーム203が配置され、補助記憶装置109には、実行プログラムファイル603が格納されている。
ページディスクリプタ1201は、実施形態における物理メモリ管理表エントリ401に相当する。ページテーブル1202は、実施形態におけるページ表202に相当する。割り込みハンドラ1204は、ハードウェアから送られてきた割り込み信号107を受け取り、送られてきた割り込み信号107の種類に応じた割り込み処理を実行する。本発明に関しては、割り込みハンドラ1204が、復旧判定手段901と復旧実行手段902を含んでいる。
次に、図19に示すフローチャートを参照して実施例の動作について詳細に説明する。或るプロセスの実行中に主記憶装置102でメモリエラーが発生すると、エラー検出装置(ECC)103がそのメモリエラーを検出する(S701)。メモリエラーが検出されると、CPU101に対して割り込み信号107が送信される。割り込み信号107を受け取ったCPU101は、実行中のプロセスを中断し、OSによって登録されている割り込みハンドラ1204を実行する。この割り込みハンドラ1204の実行過程において、復旧判定手段901と復旧実行手段902によって以下の処理を実行する。
まず、TLBの該当エントリを消去する(S702)。次にページディスクリプタの状態フラグを「PG_reserved」にする(S703)。PG_reservedは、ページフレームの状態を表すフラグの一つで、当該ページフレームを使用禁止にすることを意味している。次にページディスクリプタから当該ページフレームを参照するページテーブルエントリを取り出し(S704)、この取り出したページテーブルエントリに対してpte_writeマクロを実行する(S706)。pte_writeマクロは、ページテーブルエントリがページフレーム番号を格納している場合、当該ページフレームが書き込み可能かを判定するプログラムである。書き込み可能であれば(S707のYES)、復旧は不可能と判断し、図19の処理を終了する。書き込み可能でなければ(S707)、復旧が可能と判断し、ページテーブルエントリのページフレーム番号を消去し(S709)、プレゼントビットを0にする(S710)。そして、図19の処理を終了して、中断したプロセスの実行を再開する。
以上、本発明の実施形態および実施例について説明したが、本発明は上述した内容にのみ限定されず、その他各種の付加変更が可能である。例えば、異なる複数のプロセスの仮想ページを同一の主記憶ページフレームにマッピングするプロセス間共有メモリ機能を有する情報処理装置に対しても適用可能である。この場合、図12に示すステップS404、ステップS405、および図16に示すステップS612では、メモリエラーが発生したページフレームを共有している全てのプロセスの該当仮想ページに対応するエントリのページフレーム番号が消去され、プレゼントビットが0に設定され、およびスワップ領域アドレスが設定される。
本発明では、プロセスの実行中にECC等のエラー検出装置によってメモリエラーが検出されると、訂正可能なエラーであれば自動修正され、訂正が困難なエラーであれば、CPUに割り込みがかけられる。この割り込みによってプロセスの実行が中断され、メモリ復旧の可能性が判定される。メモリエラーの起きた物理メモリ(ページフレーム)の領域が、実行プログラムのテキストマッピングによる領域で、読み込みのみ可能であれば、メモリ障害が復旧可能と判断される。これにより、ページングによる仮想記憶管理を行っているパーソナルコンピュータ等のコンピュータにおいて、読み込みのみ可能な領域に訂正が困難なメモリエラーが発生した場合に、実行プログラムを書き換えることなく、また、サービスプロセッサやサービスプロセッサ用の記憶装置などの特殊な装置を必要とせずに、メモリ障害を復旧させることが可能となる。
また、本発明では、書き込み可能な領域であっても、前回物理メモリに格納されてから一度も修正されておらず、かつ一度スワップ処理されたメモリ領域であれば、メモリ障害が復旧可能と判断される。そして、CPUは、当該物理メモリ領域をOSのメモリ割り当て領域から除外し、ページ表のプレゼントビットを0にすることによって、プロセス実行再開後にページフォルト処理を意図的に引き起こす。ページフォルト処理により、障害の発生しているメモリ領域の内容がテキストマッピングであれば、ファイルから読み込まれ、スワップ処理されていれば、スワップ領域から復旧される。これにより、ページングによる仮想記憶管理を行っているパーソナルコンピュータ等のコンピュータにおいて、読み込みのみ可能な領域だけでなく書き込み可能な領域に訂正が困難なメモリエラーが発生した場合でも、その状況次第ではメモリ障害を復旧させることが可能となる。
なお、この出願は、2007年2月13日に出願された日本出願特願2007−031883号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、ECCなど単純なエラー検出装置をもつ一般的なパーソナルコンピュータのためのメモリ障害復旧といった用途に適用できる。

Claims (9)

  1. 仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式の情報処理装置が行うメモリ障害復旧方法において、
    プロセスの実行中にメモリエラーが発生したときに割り込みにより前記プロセスの実行を中断し、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させることを特徴とするメモリ障害復旧方法。
  2. 前記ページの属性が読み込み専用でなければ、前記物理メモリ管理表を参照して前記ページが修正されているか否かを判定し、修正されていなければ、前記ページの内容が前回スワップされたスワップ領域のアドレスを前記ページに対応する前記ページ表のエントリに設定し、且つ、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させることを特徴とする請求項1記載のメモリ障害復旧方法。
  3. 前記発生したメモリエラーが自動訂正可能なメモリエラーであれば、メモリエラーを検出したエラー検出装置で自動訂正を行い、訂正が困難なメモリエラーであれば、前記情報処理装置が前記割り込みを行うことを特徴とする請求項1または2記載のメモリ障害復旧方法。
  4. 仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式の情報処理装置において、
    主記憶装置のメモリエラーを検出し、割り込み信号を発生するエラー検出装置と、
    前記割り込み信号を受信するCPUと、を備え、
    前記CPUは、プロセスの実行中に前記割り込み信号を受信したとき前記プロセスの実行を中断し、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させることを特徴とする情報処理装置。
  5. 前記CPUは、前記ページの属性が読み込み専用でなければ、前記物理メモリ管理表を参照して前記ページが修正されているか否かを判定し、修正されていなければ、前記ページの内容が前回スワップされたスワップ領域のアドレスを前記ページに対応する前記ページ表のエントリに設定し、且つ、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させることを特徴とする請求項4記載の情報処理装置。
  6. 前記エラー検出装置は、前記発生したメモリエラーが自動訂正可能なメモリエラーであれば自動訂正を行い、訂正が困難なメモリエラーであれば前記割り込み信号を出力することを特徴とする請求項4または5記載の情報処理装置。
  7. 仮想アドレス空間および物理アドレス空間をページおよびページフレームに分割してページ表および物理メモリ管理表で管理する仮想記憶方式のコンピュータに、プロセスの実行中にメモリエラーが発生したときに割り込みにより前記プロセスの実行を中断するステップと、メモリエラーが発生したページフレームに格納されているページの属性を前記ページ表から参照し、読み込み専用ならば、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させるステップと、を実行させるためのプログラム。
  8. 前記コンピュータに、前記ページの属性が読み込み専用でなければ、前記物理メモリ管理表を参照して前記ページが修正されているか否かを判定し、修正されていなければ、前記ページの内容が前回スワップされたスワップ領域のアドレスを前記ページに対応する前記ページ表のエントリに設定し、且つ、前記物理メモリ管理表を更新して前記メモリエラーの発生したページフレームを使用禁止状態に設定すると共に前記ページが何れの前記ページフレームにも割り当てられていないように前記ページ表を更新して、前記プロセスの実行を再開させるステップをさらに実行させることを特徴とする請求項7記載のプログラム。
  9. 前記メモリエラーは、エラー検出装置で自動訂正が困難なメモリエラーであることを特徴とする請求項7または8記載のプログラム。
JP2008558076A 2007-02-13 2008-02-08 メモリ障害復旧方法、情報処理装置およびプログラム Pending JPWO2008099786A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007031883 2007-02-13
JP2007031883 2007-02-13
PCT/JP2008/052173 WO2008099786A1 (ja) 2007-02-13 2008-02-08 メモリ障害復旧方法、情報処理装置およびプログラム

Publications (1)

Publication Number Publication Date
JPWO2008099786A1 true JPWO2008099786A1 (ja) 2010-05-27

Family

ID=39690019

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008558076A Pending JPWO2008099786A1 (ja) 2007-02-13 2008-02-08 メモリ障害復旧方法、情報処理装置およびプログラム

Country Status (3)

Country Link
US (1) US8051333B2 (ja)
JP (1) JPWO2008099786A1 (ja)
WO (1) WO2008099786A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452402B (zh) * 2008-11-28 2012-05-30 珠海金山快快科技有限公司 软件运行系统和软件运行方法
US8201024B2 (en) * 2010-05-17 2012-06-12 Microsoft Corporation Managing memory faults
WO2013102163A1 (en) 2011-12-30 2013-07-04 Rambus Inc. Wear leveling in a memory system
US9032244B2 (en) 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
JP6191159B2 (ja) * 2013-02-25 2017-09-06 日本電気株式会社 サーバ、バックアップシステム、バックアップ方法、および、コンピュータ・プログラム
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US10445243B2 (en) 2013-03-14 2019-10-15 Nvidia Corporation Fault buffer for resolving page faults in unified virtual memory system
US9244852B2 (en) * 2013-05-06 2016-01-26 Globalfoundries Inc. Recovering from uncorrected memory errors
KR102116984B1 (ko) * 2014-03-11 2020-05-29 삼성전자 주식회사 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템
FR3040523B1 (fr) * 2015-08-28 2018-07-13 Continental Automotive France Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur
US10102116B2 (en) * 2015-09-11 2018-10-16 Red Hat Israel, Ltd. Multi-level page data structure
US10459803B2 (en) * 2017-06-28 2019-10-29 Western Digital Technologies, Inc. Method for management tables recovery
JP6679122B1 (ja) * 2019-03-19 2020-04-15 Necプラットフォームズ株式会社 メモリ障害対処システム、情報処理装置及びメモリ障害対処方法
CN114675959A (zh) * 2020-12-24 2022-06-28 华为技术有限公司 一种内存回收的方法及相关装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4342084A (en) * 1980-08-11 1982-07-27 International Business Machines Corporation Main storage validation means
JPS622339A (ja) 1985-06-28 1987-01-08 Hitachi Ltd 処理装置の立上げ処理方法
JPS62243045A (ja) 1986-04-16 1987-10-23 Nec Corp 主記憶障害時の処理方式
JPH03127241A (ja) 1989-10-13 1991-05-30 Fuji Xerox Co Ltd ページング仮想記憶方式におけるメモリ管理方式
JP2513060B2 (ja) 1990-03-15 1996-07-03 日本電気株式会社 故障回復型計算機
JPH03271844A (ja) 1990-03-20 1991-12-03 Fujitsu Ltd エラー処理方法
US5838893A (en) * 1996-12-26 1998-11-17 Microsoft Corporation Method and system for remapping physical memory
JP2000132462A (ja) 1998-10-27 2000-05-12 Hitachi Ltd プログラム自己修復方式

Also Published As

Publication number Publication date
US8051333B2 (en) 2011-11-01
WO2008099786A1 (ja) 2008-08-21
US20100318845A1 (en) 2010-12-16

Similar Documents

Publication Publication Date Title
JPWO2008099786A1 (ja) メモリ障害復旧方法、情報処理装置およびプログラム
US7313683B2 (en) Computer system and method which boots from a bootup-memory-image stored in nonvolatile memory and copies data within an address range of predetermined width to main memory so that the system boots quickly after initialization
JP3923955B2 (ja) フラッシュメモリのエラーブロック管理方法及び装置
US8381032B2 (en) System-directed checkpointing implementation using a hypervisor layer
JP5607943B2 (ja) メモリシステム及びその磨耗度管理方法
JP4385215B2 (ja) スナップショットシミュレーション機能を有するディスクアレイ装置
US7734842B2 (en) Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages
WO2022193768A1 (zh) 内存读写指令的执行方法及计算设备
JP2010165251A (ja) 情報処理装置及びプロセッサ並びに情報処理方法
TW202230110A (zh) 記憶體系統及控制方法
CN115705152A (zh) 使用存储器内日志在非易失性存储器装置中的元数据管理
CN115705153A (zh) 有条件更新和延迟的查找
KR101548452B1 (ko) 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치
JP2010536112A (ja) 中断された書込みの回復のためのデータ記憶方法、機器およびシステム
JP5204265B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
WO2016139774A1 (ja) 情報処理装置、情報処理システム
WO2015040694A1 (ja) 記憶制御装置、記憶制御方法および記憶制御プログラム
TWI850721B (zh) 記憶體內日誌
KR101545077B1 (ko) 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치
JP6221702B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
TWI856880B (zh) 非暫態電腦可讀取媒體、儲存裝置、及儲存方法
JPH07201190A (ja) 不揮発性メモリファイルシステム
US11989435B2 (en) Re-partitioning of a flash memory device
JP2011159101A (ja) 情報処理装置、メモリ管理方法、およびメモリ管理プログラム
CN115705263A (zh) 存储器内日志