(57)【特許請求の範囲】
【請求項１】
物理アドレス空間を利用するプロセスを起動し、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のエントリに、前記物理アドレス空間で発生した訂正可能障害の回数を示す障害回数、及び前記プロセスが許容する最大訂正可能障害数を示す障害閾値を登録し、前記訂正可能障害は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）で訂正が完了した障害を示し、前記障害回数を更新した際、前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを停止するプロセッサと、
前記物理アドレス空間を有し、前記訂正可能障害が発生する毎に、前記障害回数をカウントし、前記障害回数を前記プロセッサに通知する障害カウンタ付きメモリユニットと
を具備する
メモリ障害処理システム。
【請求項２】
請求項１に記載のメモリ障害処理システムであって、
前記プロセッサは、
前記ＴＬＢを有し、前記ＴＬＢのエントリに、前記プロセスを識別するプロセス識別子、前記障害回数、及び前記障害閾値を格納する障害カウンタ付きＴＬＢと、
前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを起動したオペレーティングシステム（ＯＳ）に対し、割り込み信号を発信すると共に、前記プロセス識別子を送信する障害回数監視手段と
を具備する
メモリ障害処理システム。
【請求項３】
請求項２に記載のメモリ障害処理システムであって、
前記障害回数監視手段は、
前記ＴＬＢ上で前記障害回数が更新されると、前記プロセス識別子、前記障害回数、及び前記障害閾値を参照し、前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセス識別子の通知を行う比較手段と、
前記プロセス識別子の通知に応じて、前記オペレーティングシステム（ＯＳ）に対し、前記プロセス識別子と前記割り込み信号と
を発信する割り込み通知手段と
を具備する
メモリ障害処理システム。
【請求項４】
請求項１乃至３のいずれか一項に記載のメモリ障害処理システムであって、
前記障害カウンタ付きメモリユニットは、
前記物理アドレス空間を最小物理ページ単位毎に分割されており、分割単位毎に、前記障害回数をカウントし保持するカウンタを有するメモリ本体と、
前記メモリ本体において前記訂正可能障害が発生する毎に、障害アドレス及び前記障害回数を前記プロセッサに通知する障害通知手段と
を具備する
メモリ障害処理システム。
【請求項５】
請求項４に記載のメモリ障害処理システムであって、
前記障害カウンタ付きメモリユニットは、前記訂正可能障害が発生した場合、前記ＥＣＣに基づいて、前記訂正可能障害の訂正を実施し、前記訂正可能障害が発生したアドレスを含む最小物理ページに対応した前記障害回数をカウントし、
前記プロセッサは、前記障害カウンタ付きメモリユニットから前記障害アドレス及び前記障害回数を取得し、前記ＴＬＢ上で前記障害アドレスに対応するエントリを検索し、発見されたエントリに格納された前記障害回数を更新し、前記障害回数が更新されると、前記エントリに格納された前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを停止する
メモリ障害処理システム。
【請求項６】
請求項１乃至５のいずれか一項に記載のメモリ障害処理システムであって、
前記プロセッサは、ページインが開始された場合、前記障害カウンタ付きメモリユニット上のページイン対象になる物理メモリ空間を検索し、障害が規定値以下である物理メモリ空間を検出し、前記検出された物理メモリ空間に対して、ページインが実施可能であると判断する
メモリ障害処理システム。
【請求項７】
障害カウンタ付きメモリユニットの物理アドレス空間を利用するプロセスを起動するステップと、
プロセッサが保持するＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のエントリに、前記物理アドレス空間で発生した訂正可能障害の回数を示す障害回数、及び前記プロセスが許容する最大訂正可能障害数を示す障害閾値を登録するステップと、前記訂正可能障害は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）で訂正が完了した障害を示し、
前記障害カウンタ付きメモリユニット上で、前記訂正可能障害が発生する毎に、前記障害回数をカウントし、前記障害回数を前記ＴＬＢに提供するステップと、
前記ＴＬＢ上で前記障害回数を更新した際、前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを停止するステップと
を含む
メモリ障害処理方法。
【請求項８】
請求項７に記載のメモリ障害処理方法であって、
前記ＴＬＢのエントリに、前記プロセスを識別するプロセス識別子、前記障害回数、及び前記障害閾値を格納するステップと、
前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを起動したオペレーティングシステム（ＯＳ）に対し、割り込み信号を発信すると共に、前記プロセス識別子を送信するステップと
を更に含む
メモリ障害処理方法。
【請求項９】
請求項８に記載のメモリ障害処理方法であって、
前記ＴＬＢ上で前記障害回数が更新されると、前記プロセス識別子、前記障害回数、及び前記障害閾値を参照し、前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセス識別子の通知を行うステップと、
前記プロセス識別子の通知に応じて、前記オペレーティングシステム（ＯＳ）に対し、前記プロセス識別子と前記割り込み信号と
を発信するステップと
を更に含む
メモリ障害処理方法。
【請求項１０】
請求項７乃至９のいずれか一項に記載のメモリ障害処理方法であって、
前記物理アドレス空間を最小物理ページ単位毎に分割し、分割単位毎に、前記障害回数をカウントし保持するステップと、
前記訂正可能障害が発生する毎に、障害アドレス及び前記障害回数を通知するステップと
を更に含む
メモリ障害処理方法。
【請求項１１】
請求項１０に記載のメモリ障害処理方法であって、
前記訂正可能障害が発生した場合、前記障害カウンタ付きメモリユニット上で、前記ＥＣＣに基づいて、前記訂正可能障害の訂正を実施し、前記訂正可能障害が発生したアドレスを含む最小物理ページに対応した前記障害回数をカウントするステップと、
前記障害カウンタ付きメモリユニットから前記障害アドレス及び前記障害回数を取得し、前記ＴＬＢ上で前記障害アドレスに対応するエントリを検索し、発見されたエントリに格納された前記障害回数を更新するステップと、
前記障害回数が更新されると、前記エントリに格納された前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを停止するステップと
を更に含む
メモリ障害処理方法。
【請求項１２】
請求項７乃至１１のいずれか一項に記載のメモリ障害処理方法であって、
ページインが開始された場合、前記障害カウンタ付きメモリユニット上のページイン対象になる物理メモリ空間を検索し、障害が規定値以下である物理メモリ空間を検出するステップと、
前記検出された物理メモリ空間に対して、ページインが実施可能であると判断するステップと
を更に含む
メモリ障害処理方法。
【請求項１３】
障害カウンタ付きメモリユニットの物理アドレス空間を利用するプロセスを起動するステップと、
プロセッサが保持するＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のエントリに、前記物理アドレス空間で発生した訂正可能障害の回数を示す障害回数、及び前記プロセスが許容する最大訂正可能障害数を示す障害閾値を登録するステップと、前記訂正可能障害は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）で訂正が完了した障害を示し、
前記障害カウンタ付きメモリユニット上で、前記訂正可能障害が発生する毎に、前記障害回数をカウントし、前記障害回数を前記ＴＬＢに提供するステップと、
前記ＴＬＢ上で前記障害回数を更新した際、前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを停止するステップと
をプロセッサに実行させるための
メモリ障害処理プログラム。
【請求項１４】
請求項１３に記載のメモリ障害処理プログラムであって、
前記ＴＬＢのエントリに、前記プロセスを識別するプロセス識別子、前記障害回数、及び前記障害閾値を格納するステップと、
前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを起動したオペレーティングシステム（ＯＳ）に対し、割り込み信号を発信すると共に、前記プロセス識別子を送信するステップと
を更にプロセッサに実行させるための
メモリ障害処理プログラム。
【請求項１５】
請求項１４に記載のメモリ障害処理プログラムであって、
前記ＴＬＢ上で前記障害回数が更新されると、前記プロセス識別子、前記障害回数、及び前記障害閾値を参照し、前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセス識別子の通知を行うステップと、
前記プロセス識別子の通知に応じて、前記オペレーティングシステム（ＯＳ）に対し、前記プロセス識別子と前記割り込み信号と
を発信するステップと
を更にプロセッサに実行させるための
メモリ障害処理プログラム。
【請求項１６】
請求項１３乃至１５のいずれか一項に記載のメモリ障害処理プログラムであって、
前記物理アドレス空間を最小物理ページ単位毎に分割し、分割単位毎に、前記障害回数をカウントし保持するステップと、
前記訂正可能障害が発生する毎に、障害アドレス及び前記障害回数を通知するステップと
を更にプロセッサに実行させるための
メモリ障害処理プログラム。
【請求項１７】
請求項１６に記載のメモリ障害処理プログラムであって、
前記訂正可能障害が発生した場合、前記障害カウンタ付きメモリユニット上で、前記ＥＣＣに基づいて、前記訂正可能障害の訂正を実施し、前記訂正可能障害が発生したアドレスをプロセッサに実行させるための最小物理ページに対応した前記障害回数をカウントするステップと、
前記障害カウンタ付きメモリユニットから前記障害アドレス及び前記障害回数を取得し、前記ＴＬＢ上で前記障害アドレスに対応するエントリを検索し、発見されたエントリに格納された前記障害回数を更新するステップと、
前記障害回数が更新されると、前記エントリに格納された前記障害回数と前記障害閾値とを比較し、前記障害回数が前記障害閾値を超えている場合、前記プロセスを停止するステップと
を更にプロセッサに実行させるための
メモリ障害処理プログラム。
【請求項１８】
請求項１３乃至１７のいずれか一項に記載のメモリ障害処理プログラムであって、
ページインが開始された場合、前記障害カウンタ付きメモリユニット上のページイン対象になる物理メモリ空間を検索し、障害が規定値以下である物理メモリ空間を検出するステップと、
前記検出された物理メモリ空間に対して、ページインが実施可能であると判断するステップと
を更にプロセッサに実行させるための
メモリ障害処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ障害処理システムに関し、特にプロセスの動作を継続するためのメモリ障害処理システムに関する。
【背景技術】
【０００２】
通常、同一コンピュータシステム内には、様々な目的を持ったプロセスが動作している。それらのプロセスの中には、訂正可能障害が何回起きようとも動作し続けなければならないプロセスもあれば、訂正可能障害が訂正不可能障害にエスカレーションするのを避けるために即停止しても良いプロセスも存在する。
【０００３】
なお、ここでは、メモリの訂正可能障害とは、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）で、訂正が完了した障害を示すものとする。動作し続けなければならないプロセスの例としては、カーネルやミッションクリティカル領域で動作しているアプリケーションソフトウェア（ａｐｐｌｉｃａｔｉｏｎ  ｓｏｆｔｗａｒｅ）によるプロセス等が挙げられる。反対に、即停止しても良いプロセスの例としては、単純に、プロセッサのアイドル時間を活用して動作しているものであり、失敗してもやり直しの効くアプリケーションソフトウェアによるプロセス等が挙げられる。
【０００４】
即停止しても良いプロセスが利用しているメモリ空間において訂正可能障害が発生した場合、そのまま当該プロセスを動作させて、訂正可能障害が訂正不可能障害にエスカレーションしてしまうと、即停止しても良いプロセスを継続したがためにシステムダウンが発生することになる。そして、その結果として重要なプロセスまでも止まってしまうという弊害があった。
【０００５】
関連する技術として、特開平０４−３４３１４８号公報（特許文献１）に組込型マルチタスクオペレーティングシステムの例外処理方法が開示されている。
この関連技術では、同一タスクが不正なシステムコールを所定回数連続して発行すると、そのタスクを終了する。
【０００６】
また、特開平１１−１７５４０９号公報（特許文献２）にメモリ制御方式が開示されている。
この関連技術では、物理ページの累積障害数が、予め定めた規定値を超えると、代替処理に入り、その処理の終了を待って動作を完了する。
【０００７】
【特許文献１】特開平０４−３４３１４８号公報
【特許文献２】特開平１１−１７５４０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
通常、同一コンピュータシステム内には、様々な目的を持ったプロセスが動作している。その中には、極めて重要なプロセスもあれば、単にプロセッサの空き時間を利用しているだけの重要度の低いプロセスも存在する。しかし、既存の障害処理方法では、一元的に生涯処理を実施しているため、その重要度に応じた適切な処理を施すことができなかった。
【課題を解決するための手段】
【０００９】
本発明のメモリ障害処理システムは、物理アドレス空間を利用するプロセスを起動し、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のエントリに、物理アドレス空間で発生した訂正可能障害の回数を示す障害回数、及びプロセスが許容する最大訂正可能障害数を示す障害閾値を登録し、訂正可能障害は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）で訂正が完了した障害を示し、障害回数を更新した際、障害回数と障害閾値とを比較し、障害回数が障害閾値を超えている場合、プロセスを停止するプロセッサと、物理アドレス空間を有し、訂正可能障害が発生する毎に、障害回数をカウントし、障害回数をプロセッサに通知する障害カウンタ付きメモリユニットとを具備する。
【００１０】
本発明のメモリ障害処理方法は、障害カウンタ付きメモリユニットの物理アドレス空間を利用するプロセスを起動するステップと、プロセッサが保持するＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のエントリに、物理アドレス空間で発生した訂正可能障害の回数を示す障害回数、及びプロセスが許容する最大訂正可能障害数を示す障害閾値を登録するステップと、訂正可能障害は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）で訂正が完了した障害を示し、障害カウンタ付きメモリユニット上で、訂正可能障害が発生する毎に、障害回数をカウントし、障害回数をＴＬＢに提供するステップと、ＴＬＢ上で障害回数を更新した際、障害回数と障害閾値とを比較し、障害回数が障害閾値を超えている場合、プロセスを停止するステップとを含む。
【００１１】
本発明のメモリ障害処理プログラムは、障害カウンタ付きメモリユニットの物理アドレス空間を利用するプロセスを起動するステップと、プロセッサが保持するＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）のエントリに、物理アドレス空間で発生した訂正可能障害の回数を示す障害回数、及びプロセスが許容する最大訂正可能障害数を示す障害閾値を登録するステップと、訂正可能障害は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）で訂正が完了した障害を示し、障害カウンタ付きメモリユニット上で、訂正可能障害が発生する毎に、障害回数をカウントし、障害回数をＴＬＢに提供するステップと、ＴＬＢ上で障害回数を更新した際、障害回数と障害閾値とを比較し、障害回数が障害閾値を超えている場合、プロセスを停止するステップとをプロセッサに実行させるためのプログラムである。
【発明の効果】
【００１２】
メモリの訂正可能障害が発生した際、当該メモリ領域を利用しているプロセスの用途に応じて、そのプロセスを継続するか／中止するかの決定ができる。
【発明を実施するための最良の形態】
【００１３】
本発明のメモリ障害処理システムでは、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）に登録されるエントリに「障害回数」、及び、「障害閾値」を追加する。障害回数は、対応する物理アドレス空間で発生した訂正可能障害の回数を保持する。なお、物理アドレス空間は、メモリアドレスによってアクセス可能なメモリ空間を示す。障害閾値は、対応するプロセスが許容する最大訂正可能障害数を保持する。また、ＴＬＢに接続される障害回数監視機構は、これら２つを比較し障害回数が障害閾値を超えている場合には、当該プロセスを停止させる信号を発行する機能を有する。
【００１４】
以下に、本発明の第１実施形態について添付図面を参照して説明する。
図１を参照すると、本発明のメモリ障害処理システムは、プロセッサ１と、障害カウンタ付きメモリユニット２を含む。
【００１５】
プロセッサ１は、障害カウンタ付きＴＬＢ１１と、障害回数監視部１２と、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１３を備える。
【００１６】
障害カウンタ付きＴＬＢ１１は、一般的なＴＬＢ機能に加えて、以下の３つのエントリを有している。
（１）第１のエントリは、物理ページを利用しているプロセスを識別するプロセス識別子エントリである。
（２）第２のエントリは、物理ページで発生した障害回数を保持する障害回数エントリである。
（３）第３のエントリは、物理ページを利用しているプロセスが、許容できる障害回数を保持する障害閾値エントリである。
【００１７】
プロセス識別子エントリは、オペレーティングシステム（ＯＳ）１３により設定される固有の値である。障害回数エントリは、メモリの訂正可能障害が発生したときに、その障害の発生が物理ページにおいて何回目かを示す障害回数を示す値である。ここで、メモリの訂正可能障害とは、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）で、訂正が完了した障害を示すものとする。障害カウンタ付きメモリユニット２は、メモリの訂正可能障害が発生する毎に、発生したメモリの訂正可能障害をＥＣＣで訂正し、障害回数を更新する。障害閾値エントリは、プロセスの重要度に応じて、プロセスを起動した際に、指定される値である。指定された値が、障害閾値となる。ここでは、これら３つのエントリをＴＬＢエントリと呼ぶ。
【００１８】
障害回数監視部１２は、ＴＬＢエントリ中の障害回数と障害閾値を比較し、比較の結果、「障害回数  ＞  障害閾値」であることを検出した場合、プロセッサ１に対し割り込み信号を発信すると共に、物理ページを利用しているプロセスを示すプロセス識別子を送信する機能を有する。
【００１９】
オペレーティングシステム（ＯＳ）１３は、プロセッサ１上で動作し、障害回数監視部１２から割り込み信号とプロセス識別子を受信すると、当該プロセスを停止させる機能を有する。但し、実際には、オペレーティングシステム（ＯＳ）１３は、プロセッサ１の外部で動作するようにすることも可能である。例えば、オペレーティングシステム（ＯＳ）１３は、プロセッサ１と連携する他のプロセッサ上で動作していても良い。また、オペレーティングシステム（ＯＳ）１３は、ファームウェア（ｆｉｒｍｗａｒｅ）、又はアプリケーションソフトウェア（ａｐｐｌｉｃａｔｉｏｎ  ｓｏｆｔｗａｒｅ）と読み替えても良い。
【００２０】
障害カウンタ付きメモリユニット２は、障害通知部２１と、メモリ本体２２を備える。
【００２１】
障害通知部２１は、メモリ本体２２において、訂正可能障害が発生する毎に、その発生事象を、障害アドレス、及び、障害回数と共にプロセッサ１に通知する機能を有する。ここで、障害アドレスとは、障害が発生したアドレスを示す。なお、障害通知部２１は、メモリの訂正可能障害が発生する毎に、発生したメモリの訂正可能障害をＥＣＣで訂正し、障害回数を更新した後に、障害アドレス、及び、障害回数と共にプロセッサ１に通知するようにしても良い。
【００２２】
メモリ本体２２は、物理アドレス空間を最小物理ページ単位毎に分割されており、分割単位毎に、訂正可能障害が何回発生したかを示す障害回数をカウントし保持するカウンタを持っている。ここでは、メモリ本体２２は、ＭＭ−０からＭＭ−Ｎ（Ｎは任意）に分割されている。また、カウンタは、訂正可能障害が発生する毎に、障害回数を加算する。
【００２３】
なお、プロセッサ１の例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やマイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）等の処理装置、又は同様の機能を有する半導体集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）が考えられる。また、障害カウンタ付きメモリユニット２の例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）等の半導体記憶装置が考えられる。但し、実際には、これらの例に限定されない。
【００２４】
図２を参照して、プロセッサ１の構成例について詳細に説明する。
障害カウンタ付きＴＬＢ１１は、ＴＬＢエントリとして、「仮想ページ番号」、「物理ページ番号」、「プロセス識別子」、「障害回数」、「障害閾値」の各々について、表形式で情報を格納している。
【００２５】
障害回数監視部１２は、比較部１２１と、割り込み通知部１２２を備える。
【００２６】
比較部１２１は、障害カウンタ付きＴＬＢ１１のＴＬＢエントリ中の「プロセス識別子」、「障害回数」、及び「障害閾値」を取得し、「障害回数」と「障害閾値」を比較し、比較の結果、「障害回数  ＞  障害閾値」であることを検出した場合、割り込み通知部１２２に対し、当該「プロセス識別子」を通知する。
【００２７】
例えば、訂正可能障害が発生した際に、即停止しても良いプロセスＡがあると仮定する。これには単にプロセッサの空き時間を有効利用するようなプロセス等が該当する。プロセスＡのように即停止しても良いプロセスの場合、当該プロセスが動作するメモリ空間に対応するＴＬＢエントリの障害閾値は０に設定される。このとき、対応する物理ページＰＰＮ０において訂正可能障害が発生した場合、ＴＬＢ内の対応するエントリの障害回数が更新される。その後、障害回数と障害閾値の比較が実施されると、障害回数が障害閾値を超えることになるため、対応するプロセスＡを停止させる信号が発行される。その結果として訂正可能障害が発生したメモリ空間は利用されなくなり、障害のエスカレーションを回避できることになる。同様にプロセスＢで見た場合は、障害回数は４、障害閾値は５であり、これは、許容する最大訂正可能障害数を下回っているため、処理は継続されることになる。プロセスＣでは、障害閾値は∞になっている。これは、何回訂正可能障害が起きようとも動作し続けなければならないプロセスであることを示している。
【００２８】
割り込み通知部１２２は、比較部１２１からの「プロセス識別子」の通知に応じて、オペレーティングシステム（ＯＳ）１３に対し、当該「プロセス識別子」と割り込み信号を発信する。
【００２９】
次に、本実施形態の動作について詳細に説明する。
図３のフローチャートを参照して、プロセスを起動するときの処理について説明する。
（１）ステップＳ１０１
プロセスの起動処理では、プロセスの起動要求が発行される。基本的には、通常のプロセスの起動処理と同じだが、本実施形態では、プロセスの起動と同時に、そのプロセスの重要度、若しくは、その重要度に応じた障害閾値そのものを指定する。重要度を指定した場合には、その重要度に応じた規定の障害閾値を利用するものとするが、今回は、説明の簡単化のために、障害閾値そのものを利用すると仮定して、順次説明を進める。このとき、プロセッサ１のオペレーティングシステム（ＯＳ）１３は、プロセスの起動要求及び指定された障害閾値に基づいて、障害閾値付きでプロセスを起動する。
（２）ステップＳ１０２
障害閾値付きで起動されたプロセスは、オペレーティングシステム（ＯＳ）１３により、障害カウンタ付きＴＬＢ１１に登録されるが、そのときのＴＬＢエントリに、そのプロセスの識別子と起動時に指定された障害閾値も同時に登録される。このとき、プロセッサ１のオペレーティングシステム（ＯＳ）１３は、少なくとも、障害閾値付きで起動されたプロセスの「プロセスの識別子」及び「障害閾値」を障害カウンタ付きＴＬＢ１１のＴＬＢエントリに登録する。起動時の処理は、これで完了する。
【００３０】
次に、実際に障害が発生したときの一連の処理について説明する。
図４のフローチャートを参照して、メモリユニット上の処理について説明する。
（１）ステップＳ２０１
まず、訂正可能障害が発生した場合、障害カウンタ付きメモリユニット２上で、当該メモリ障害の訂正を実施する。このとき、障害カウンタ付きメモリユニット２は、ＥＣＣに基づいて、メモリ障害の訂正を実施する。
（２）ステップＳ２０２
次に、障害カウンタ付きメモリユニット２上で最小物理ページ単位毎に備えている障害カウンタを更新する。具体的には、障害カウンタ付きメモリユニット２は、訂正可能障害が発生したアドレスを含む最小物理ページに対応したカウンタを１つインクリメント（ｉｎｃｒｅｍｅｎｔ）する。このとき、障害カウンタ付きメモリユニット２は、メモリ本体２２のＭＭ−０からＭＭ−Ｎの各々に対応したカウンタを１つインクリメントする。
（３）ステップＳ２０３
障害カウンタ付きメモリユニット２は、カウンタの更新が完了すると、訂正可能障害が発生したことをプロセッサ１に通知する。このとき、障害カウンタ付きメモリユニット２の障害通知部２１は、障害カウンタ付きＴＬＢ１１に対して、訂正可能障害が発生したアドレスと障害カウンタの値を合わせて通知する。続いて、処理がプロセッサ１側に移る。プロセッサ１上での処理を図５に示す。
【００３１】
図５のフローチャートを参照して、プロセッサ上の処理について説明する。
（１）ステップＳ３０１
プロセッサ１は、障害カウンタ付きメモリユニット２より障害発生通知を受信し、障害アドレスと障害回数を受理する。このとき、障害カウンタ付きＴＬＢ１１は、障害通知部２１より障害発生通知と共に、障害アドレスと障害回数を受理する。なお、このプロセッサ上の処理において、障害カウンタ付きＴＬＢ１１が行う処理は、実際には、オペレーティングシステム（ＯＳ）１３が障害カウンタ付きＴＬＢ１１に対して行うようにしても良い。
（２）ステップＳ３０２
次に、プロセッサ１は、ＴＬＢ上でこの障害アドレスを含むエントリを検索し、そのエントリが保持している障害回数を更新する。このとき、障害カウンタ付きＴＬＢ１１は、ＴＬＢエントリ中から、この障害アドレスを含むエントリを検索し、発見されたエントリが保持している障害回数を更新する。
（３）ステップＳ３０３
プロセッサ１は、障害回数が更新されると、当該障害回数と当該障害閾値を比較する。このとき、障害回数監視部１２の比較部１２１は、障害カウンタ付きＴＬＢ１１において障害回数が更新されると、当該障害回数と当該障害閾値を比較する。この障害閾値とは、図３のフローで設定されたものであり、障害回数と同じようにＴＬＢ上で保持されているものである。プロセッサ１は、障害回数と障害閾値を比較した結果、障害回数が障害閾値以下だった場合には、以降は何もせずに処理を終了する。反対に、プロセッサ１は、障害回数が障害閾値を超えていた場合には、処理を継続する。
（４）ステップＳ３０４
プロセッサ１は、障害回数が障害閾値を超えたことをオペレーティングシステム（ＯＳ）１３に通知する。このとき、プロセッサ１の比較部１２１は、割り込み通知部１２２を介して、障害回数が障害閾値を超えたことをオペレーティングシステム（ＯＳ）１３に通知する。割り込み通知部１２２は、該ＴＬＢエントリにはその物理ページを利用しているプロセス識別子が登録されているため、割り込み信号を発信する際、そのプロセス識別子も同時にオペレーティングシステム（ＯＳ）１３に通知する。プロセッサ１からオペレーティングシステム（ＯＳ）１３への通知が発行されるケースでは、処理がオペレーティングシステム（ＯＳ）１３側に移る。オペレーティングシステム（ＯＳ）１３上での処理を図６に示す。
【００３２】
図６のフローチャートを参照して、オペレーティングシステム（ＯＳ）上の処理について説明する。
（１）ステップＳ４０１
オペレーティングシステム（ＯＳ）１３は、プロセッサ１からの通知と同時にプロセス識別子を受信する。ここでは、オペレーティングシステム（ＯＳ）１３は、割り込み通知部１２２からプロセス識別子と割り込み信号を受信する。
（２）ステップＳ４０２
オペレーティングシステム（ＯＳ）１３は、受信されたプロセス識別子に対応するプロセスを強制終了させて処理を完了する。
【００３３】
以上が、本実施形態の動作である。
【００３４】
本実施形態では、訂正可能なメモリ障害のカウンタ／閾値をＴＬＢのエントリに持たせることにより、プロセスの重要度に応じた障害処理機能を実現できる。
【００３５】
以下に、本発明の第２実施形態について説明する。
本実施形態では、実メモリ空間側にも障害回数を保持し、ページイン／ページアウトの際に、プロセスに応じたメモリ割り当てを実施する。すなわち、ページインで実メモリを割り当てる際に、実メモリ上の障害回数と割り当てられるプロセスの閾値を比較する。閾値∞のような重要プロセスでは、過去に障害が起きているメモリを使用しないようにする。
【００３６】
なお、本実施形態におけるメモリ障害処理システムは、プロセッサ１と、障害カウンタ付きメモリユニット２を含む。プロセッサ１及び障害カウンタ付きメモリユニット２については、基本的に、第１実施形態と同様である。
【００３７】
具体的に、本実施形態の動作について説明する。
図７のフローチャートを参照して、ページインで実メモリを割り当てる処理について説明する。
（１）ステップＳ５０１
プロセッサ１は、ページインが開始された場合、まず、障害カウンタ付きメモリユニット２上のページイン対象になる物理メモリ空間を検索する。このとき、オペレーティングシステム（ＯＳ）１３は、ページインが開始された場合、メモリ本体２２から、ページイン対象になる物理メモリ空間を検索する。
（２）ステップＳ５０２
プロセッサ１は、検出された物理メモリ空間の障害が規定値以下であった場合には、ページインが実施可能であると判断する。このとき、オペレーティングシステム（ＯＳ）１３は、検出された物理メモリ空間の障害が規定値以下であった場合、検出された物理メモリ空間に対して、ページインが実施可能であると判断する。ここでは、規定値は、予め設定された値であり、例えば、閾値∞のような重要プロセスでは、”０”と設定される。この場合、プロセッサ１は、今までに一度も障害が発生していないメモリ空間を利用するようにする。
（３）ステップＳ５０３
プロセッサ１は、障害回数が規定値以下でなかった場合には、最大検索回数を調査し、最大検索回数以下の場合には、ページイン対象になる物理メモリ空間を検索する処理に戻り、再び、規定値が小さい物理メモリ空間の検出に努める。このとき、オペレーティングシステム（ＯＳ）１３は、障害回数が規定値以下でなかった場合には、最大検索回数を調査し、最大検索回数以下の場合には、再度、規定値が小さい物理メモリ空間を検索する。但し、仮に、一回も障害が発生したことのないページが存在しない場合等は、期待されたページが存在しないことになるので、ここでは、最大検索回数を設けており、プロセッサ１は、最大検索回数を超えた場合には、処理を継続し、やむを得ず障害が発生したことのある物理メモリ空間でもページインを実施することとする。このとき、オペレーティングシステム（ＯＳ）１３は、最大検索回数を超えた場合、障害が発生したことのある物理メモリ空間でもページインが実施可能であると判断する。
（４）ステップＳ５０４
プロセッサ１は、ページイン対象になる物理メモリ空間を決定する。このとき、オペレーティングシステム（ＯＳ）１３は、ページインが実施可能であると判断した物理メモリ空間を、ページイン対象になる物理メモリ空間として決定する。
【００３８】
以上の動作を繰り返すことにより、重要なプロセスには、常に安全な物理メモリ空間を割り当てられるようになる。
【００３９】
以上のように、本発明は、ＴＬＢに登録されるエントリに「障害回数」、及び、「障害閾値」を追加することで実現する。障害回数は、対応する物理アドレス空間で発生した訂正可能障害の回数を保持する。障害閾値は、対応するプロセスが許容する最大訂正可能障害数を保持する。また、ＴＬＢに接続される障害回数監視機構は、これら２つを比較し障害回数が障害閾値を超えている場合には、当該プロセスを停止させる信号を発行する機能を有する。
【００４０】
なお、実メモリ空間側にも障害回数を保持しているため、ページイン／ページアウトの際に、プロセスに応じたメモリ割り当てを実施することも可能である。すなわち、ページインで実メモリを割り当てる際に、実メモリ上の障害回数と割り当てられるプロセスの閾値を比較し、閾値∞のような重要プロセスでは、過去に障害が起きているメモリを使用しないようにすることができる。
【００４１】
本発明は、小規模から大規模までのあらゆるコンピュータに適用可能であるが、柔軟な障害処理方式を備えるため、ミッションクリティカルな領域で動作する計算機において特に有効である。
【図面の簡単な説明】
【００４２】
【図１】図１は、本発明のメモリ障害処理システムの構成例を示す図である。
【図２】図２は、プロセッサの構成例を示す図である。
【図３】図３は、プロセスを起動するときの処理を示すフローチャートである。
【図４】図４は、メモリユニット上の処理を示すフローチャートである。
【図５】図５は、プロセッサ上の処理を示すフローチャートである。
【図６】図６は、オペレーティングシステム（ＯＳ）上の処理を示すフローチャートである。
【図７】図７は、ページインで実メモリを割り当てる処理を示すフローチャートである。
【符号の説明】
【００４３】
１…  プロセッサ
１１…  障害カウンタ付きＴＬＢ
１２…  障害回数監視部
１２１…  比較部
１２２…  割り込み通知部
１３…  オペレーティングシステム（ＯＳ）
２…  障害カウンタ付きメモリユニット
２１…  障害通知部
２２…  メモリ本体
【図１】
0005272443.tif 000002
【図２】
0005272443.tif 000003
【図３】
0005272443.tif 000004
【図４】
0005272443.tif 000005
【図５】
0005272443.tif 000006
【図６】
0005272443.tif 000007
【図７】
0005272443.tif 000008