JP5161696B2 - 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム - Google Patents

仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム Download PDF

Info

Publication number
JP5161696B2
JP5161696B2 JP2008203968A JP2008203968A JP5161696B2 JP 5161696 B2 JP5161696 B2 JP 5161696B2 JP 2008203968 A JP2008203968 A JP 2008203968A JP 2008203968 A JP2008203968 A JP 2008203968A JP 5161696 B2 JP5161696 B2 JP 5161696B2
Authority
JP
Japan
Prior art keywords
error
data
cache memory
address
entry
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.)
Expired - Fee Related
Application number
JP2008203968A
Other languages
English (en)
Other versions
JP2010039895A (ja
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008203968A priority Critical patent/JP5161696B2/ja
Priority to US12/507,516 priority patent/US8082469B2/en
Publication of JP2010039895A publication Critical patent/JP2010039895A/ja
Application granted granted Critical
Publication of JP5161696B2 publication Critical patent/JP5161696B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • 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/0712Error 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 virtual computing platform, e.g. logically partitioned systems
    • 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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches

Landscapes

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

Description

本発明は、仮想計算機システムにおけるエラー回復技術に関し、特に、キャッシュメモリのエラー回復技術に適用して有効な技術に関するものである。
従来、複数の物理計算機で別々に稼動していたOS(オペレーティングシステム)およびOS上で稼動するソフトウェアを、1台の物理計算機で稼動させることを可能にする技術として、仮想計算機技術がある。
仮想計算機技術では、例えば、ハイパバイザと呼ばれる仮想計算機制御プログラムが、1つの物理計算機を複数の論理区画に論理的に分割する。仮想計算機制御プログラムは、分割された各論理区画に計算機資源(CPU(中央演算処理装置)、主記憶およびI/O(入出力装置))を割当てる。この論理区画上で仮想計算機制御プログラムの制御によりOS(ゲストOS)が動作する。
この仮想計算機技術は、従来は、汎用機(メインフレーム)等の大型計算機で用いられてきた技術である。しかし、近年のマイクロプロセッサの性能向上等によって、ローエンドのPCサーバにも適用されるようになってきている。このようなローエンドのPCサーバを、企業ビジネス等で使用するミッション・クリティカルなサーバに適用することは、コスト低減を図る上で有利であり、ニーズが高いといえる。
一方、企業ビジネスの国際化やインターネットを代表とするコンピュータネットワークのグローバル化を背景として、計算機システムの長時間連続稼動(24時間、365日稼動)の必要性が高まってきている。この必要性は、ローエンドのPCサーバを用いた仮想計算機システムを用いる場合にも当然あてはまる。
従来、計算機システムにおいて大容量メモリといえば、主記憶が主流であり、主記憶の大容量化に比例して主記憶エラーの発生確率が高かった。しかし、近年は、CPUから主記憶のデータへのアクセス性能を向上させるために用いられるキャッシュメモリの大容量化に伴い、キャッシュメモリエラーの発生確率も高い傾向にある。
キャッシュメモリの大容量化に伴い、データがキャッシュメモリに長く滞在する確率が増え、キャッシュメモリにのみ最新データが存在するという場合も増えてくる。このため、仮想計算機システムにおいて、長時間連続稼動を実現するためには、主記憶エラーのみならず、キャッシュメモリエラーの発生時にシステムを継続稼動させる技術が非常に重要となる。
メモリのエラー回復に関しては、従来から様々な技術が提案されている。例えば、特開平6−52049号公報(特許文献1)には、プロセッサで実行中の処理の開始から終了までにアクセスするデータを、キャッシュメモリで中間状態として管理し、書き換え前のブロックの内容をメインメモリに書き戻し、中間状態のブロックに対する書き換えはキャッシュメモリに格納されているブロックのみを書き換え、実行中の処理が中止する場合には、キャッシュメモリ上の書き換えたブロックのみを無効化することによって、メインメモリの内容の回復を行う技術が開示されている。
上記以外のメモリエラー回復技術として、プロセッサによるメモリへのアクセスとは別に、メモリに格納された全データを周期的にエラーチェックする装置が提案されている。すなわち、プロセッサからのメモリアクセスとは別に、RAM(Random Access Memory)チップに対して、周期的に、全てのデータに対して順番にエラーチェックを行なうメモリスクラビング方法が用いられている。メモリスクラビング方法に関連する技術としては、例えば、特開平8−194648号公報(特許文献2)に記載されている技術がある。
このエラーチェックにてデータにエラーが発見された場合は、エラーの生じた行の全てのアドレスのデータコードをRAMチップから一つずつ取り出してECC(Error Correcting Code)チェックを行ない、エラーの訂正が可能であればデータの誤りを訂正することが行なわれている。なお、この種の技術に関連するものとしては、例えば、特開平1−112599号公報(特許文献3)、特開昭63−269233号公報(特許文献4)などに開示されている技術が挙げられる。
特開平6−52049号公報 特開平8−194648号公報 特開平1−112599号公報 特開昭63−269233号公報
特許文献1に開示されている技術は、キャッシュメモリ上の書き換えたブロックのみを無効化することによって、メインメモリの内容の回復を行うという技術である。従って、キャッシュメモリエラーを回復するためにキャッシュメモリに対して適用することは容易ではないといえる。
また、特許文献2などで用いているメモリスクラビング技術は、一般に、プロセッサによるメモリアクセスとの競合時におけるメモリデータの整合性を保つために、専用のハードウェアを備える必要がある。または、ソフトウェアによるメモリアクセスの排他制御等の技術が必要である。また、キャッシュメモリを対象とする場合、キャッシュメモリをスクラビングするための手段が別途必要となる。
しかし、例えば、ローエンドのPCサーバにも適用可能な仮想計算機システムにおいて、キャッシュメモリエラーの回復を実現するためのハードウェアを追加することは、コスト面で望ましくない。
また、仮想計算機システムの場合は、複数の論理区画上で複数の様々な種類のゲストプログラム(ゲストOS、ゲストアプリケーション)が稼動するシステムである。従って、ソフトウェアによるキャッシュメモリエラーの回復についても、これら全てのゲストプログラムに、長時間連続稼動を達成するほどのキャッシュメモリエラー回復機能の実装を要求することは、非現実的であり望ましくない。
そこで本発明の目的は、ハードウェアの追加を必要とせず、かつ、ゲストプログラムにエラー回復手段を実装することを必要とせず、キャッシュメモリエラーを回復することを可能とする仮想計算機システムおよびエラー回復方法、ならびにこの方法を実行する仮想計算機制御プログラムを提供することにある。本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
本発明の代表的な実施の形態による仮想計算機システムは、物理計算機上で、前記物理計算機を複数の論理区画に分割し、前記各論理区画に前記物理計算機の計算機資源を割当てて制御する仮想計算機制御プログラムを実行することにより、前記各論理区画上でそれぞれゲストOSを含むゲストプログラムを動作させる仮想計算機システムであって、前記仮想計算機制御プログラムは、周期的に前記物理計算機のキャッシュメモリのエラーを回復するエラー回復処理を行うエラー回復モジュールと、前記キャッシュメモリで発生したエラーによる割込み通知に対して、前記キャッシュメモリのエラーを回復するエラー割込み処理を行うエラー割込みハンドラモジュールと、前記論理区画のシャットダウンもしくは再起動を契機に、前記キャッシュメモリのエラーを回復するエラーデータ初期化処理を行うエラーデータ初期化モジュールとを有し、前記各論理区画上で動作する前記ゲストプログラムの動作とは独立して、前記キャッシュメモリのエラーの回復処理を行うことを特徴とするものである。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
本発明の代表的な実施の形態によれば、仮想計算機システムにおいて、キャッシュメモリエラーが発生した場合であっても長時間連続稼動を可能とする高信頼性システムを提供することができる。また、仮想計算機制御プログラム内にキャッシュメモリのエラー回復機能を備えることにより、ハードウェアの追加を必要とせず、かつ、ゲストプログラムにエラー回復手段を実装することを必要とせず、低コストで確実なキャッシュメモリエラー回復機能を提供することができる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
<キャッシュメモリ>
キャッシュメモリは、高速なプロセッサ(CPU)においてCPUから主記憶のデータへのアクセス性能を向上させるために用いられる高速なメモリである。以下では、一般的なキャッシュメモリの動作の一例について説明する。
図2は、一般的なキャッシュメモリの動作の一例を説明するためのブロック図である。図示しないCPUの命令制御部からデータロードの要求が発行されると、キャッシュメモリは、リクエストとロードアドレス200を受信する。ロードアドレス200は、タグアドレス、インデックスアドレス、オフセットアドレスの3つの部分に分類される。
キャッシュメモリは、まず、インデックスアドレスを参照してディレクトリアレイ210の対応するエントリを読み出す。ディレクトリアレイ210のエントリには、アドレスタグ211とともに有効ビット212が格納されている。ディレクトリアレイ210から読み出したエントリの有効ビット212がON(有効)の場合、キャッシュメモリは、ディレクトリアレイ210から読み出したエントリのアドレスタグ211(以下、登録タグと呼ぶ)と、CPUの命令制御部から受信したタグアドレス(以下、受信タグと呼ぶ)とを比較する。
受信タグがディレクトリアレイ210の該当エントリに登録されている登録タグと一致する場合、キャッシュメモリは、CPUの命令制御部から受信したインデックスアドレスとオフセットアドレスとを加算により連結して、データアレイ220のエントリアドレスを生成する。その後、データアレイ220から、エントリアドレスによって参照されるデータ(主記憶と同一のデータ)を読み出して、図示しないCPUの演算部に渡す。
また、受信タグがディレクトリアレイ210に登録されている登録タグと不一致である場合、キャッシュメモリは、主記憶の対応するデータ(最新データ)のコピーを保持していないと判断し、図示しない主記憶の制御部へデータロード要求を送出する。主記憶の制御部から要求データが渡されると、キャッシュメモリは、ディレクトリアレイ210の該当エントリの有効ビット212をONにするとともに、アドレスタグ211を書き込む。また、データアレイ220の対応するエントリに主記憶から渡されたデータを書き込むとともに、データをCPUの演算部へ渡す。ディレクトリアレイ210から読み出したエントリの有効ビット212がOFF(無効)の場合も、主記憶の対応するデータ(最新データ)のコピーを保持していないと判断し、前記と同様の動作を行う。
なお、キャッシュメモリは、あらかじめ定められた大きさの連続アドレス領域を、データ管理単位としている。ディレクトリアレイ210の各エントリには、データ管理単位ごとの情報が登録される。以下では、便宜上、キャッシュメモリでのデータ管理単位をラインと記載する場合がある。一般的に、キャッシュメモリと主記憶との間のデータ転送は、ライン単位に行われる。
以上が、一般的なキャッシュメモリの動作の一例であるが、上記以外の動作により実現されるキャッシュメモリも一般に存在する。
<実施の形態>
以下、本発明の一実施の形態である仮想計算機システムについて説明する。図1は、本発明の一実施の形態である仮想計算機システムの例を示すブロック図である。
本実施の形態の仮想計算機システムでは、1つの物理計算機100において、仮想計算機制御プログラム140が複数の論理区画150(150−1〜150−n)を構成する。この論理区画150では、それぞれ、ゲストOS151(151−1〜151−n)およびゲストアプリケーション152(152−1〜152−n)が動作することが可能である(以下、ゲストOS151、ゲストアプリケーション152を総称してゲストプログラムと記載する場合がある)。すなわち、物理計算機100内において、仮想計算機制御プログラム140の制御により、複数の論理区画150においてゲストプログラムが動作可能である仮想計算機システムが構成される。
物理計算機100は、CPU110、主記憶130およびキャッシュメモリ120を有する。CPU110は、物理計算機100の種々の処理を実行する。また、主記憶130に格納されているプログラムを読み出して、そのプログラムに規定された処理を実行する。主記憶130は、後述する仮想計算機制御プログラム140等の各種プログラムやデータを格納する。
キャッシュメモリ120は、主記憶130のデータの写しを記憶するメモリであり、主記憶130から読み込まれたデータが格納されている。キャッシュメモリ120は、例えば、前述した図2に示すような、ディレクトリアレイ210とデータアレイ220とを備えて構成される。なお、キャッシュメモリ120の一般的な動作の例については、図2を用いて前述した通りである。
また、キャッシュメモリ120内のディレクトリアレイ210のデータの読み出し手段、および、有効ビット212をOFFにする手段(無効化手段)がソフトウェアに対して提供されているものとする。これにより、ソフトウェアからディレクトリアレイ210内のデータを読み出したり、有効ビット212をOFF(無効)にしたりすることが可能である。
次に、仮想計算機制御プログラム140について説明する。仮想計算機制御プログラム140は、物理計算機100のハードウェアリソース(計算機資源)を論理的に分割して論理区画150として管理するハイパバイザ(一般的に、ファームウェアと呼ばれる)である。すなわち、仮想計算機制御プログラム140は、物理計算機100のCPU110や主記憶130等の計算機資源を論理的に分割して、これらを論理区画150として割当てる。
各論理区画150では、論理的に分割されたCPU110が仮想的なCPUとして動作し、OS(ゲストOS151)やプログラム(ゲストアプリケーション152)等を実行する。また、仮想計算機制御プログラム140は、これらOSやプログラムの制御を可能とするため、ゲストプログラムの動作を停止させたり再開させたりする手段を有する。なお、論理区画150の数の設定方法は様々だが、例えば、管理者等によって任意の数が設定されるといった方法がある。
この仮想計算機制御プログラム140は、エラー回復モジュール141とエラー割込みハンドラモジュール142とエラーデータ初期化モジュール144とを備える。また、これらのモジュールが使用するデータ群として、エラー回復制御情報データ部143を備える。
エラー回復モジュール141は、周期的にキャッシュメモリ120のエラーを回復するエラー回復処理を行うモジュールである。エラー割込みハンドラモジュール142は、キャッシュメモリ120で発生したエラーによる割込み通知に対して、キャッシュメモリ120のエラーを回復するエラー割込み処理を行ってハンドリングするモジュールである。エラーデータ初期化モジュール144は、論理区画150のシャットダウンもしくは再起動時に、キャッシュメモリ120のデータを初期化してエラーを回復するエラーデータ初期化処理を行うモジュールである。
図3は、エラー回復制御情報データ部143に保持する情報の例を示した図である。インデックスアドレス情報301は、エラー回復モジュール141等がキャッシュメモリ120のアクセスに用いるインデックスアドレスの値を保持する。このインデックスアドレス情報301は、仮想計算機制御プログラム140の初期化処理において、ディレクトリアレイ210の先頭エントリに対応するインデックスアドレスの値で初期化される。
エラー回復処理フラグ302は、エラー回復モジュール141が処理中であることを示すフラグである。このエラー回復処理フラグ302は、仮想計算機制御プログラム140の初期化処理においてOFFで初期化される。エラーアドレス情報303は、エラー割込みハンドラモジュール142等がキャッシュメモリ120上のエラーアドレスを保持するために用いる。エラーアドレス有効フラグ304は、エラーアドレス情報303が有効か否かを示すフラグである。このエラーアドレス有効フラグ304は、仮想計算機制御プログラム140の初期化処理においてOFFで初期化される。
図4は、エラー回復モジュール141が行うエラー回復処理の例を示すフローチャートである。エラー回復処理では、最初に、全てのゲストプログラムの動作を停止させる(S401)。これは、ゲストプログラムからのキャッシュメモリ120へのアクセスを停止し、その間にエラー回復モジュール141がエラー回復を行うことを可能にするための処理である。
次に、エラー回復処理フラグ302をONにする(S402)。このフラグは、後述するエラー割込みハンドラモジュール142の処理において、対象のエラー割込みが、エラー回復モジュール141の処理中に発生したエラー割込みか否かを判定するために用いられる。次に、カウンタを0に初期化する(S403)。次に、インデックスアドレス情報301に保持されたインデックスアドレスを読み出し、キャッシュメモリ120において、読み出したインデックスアドレスに対応するディレクトリアレイ210のエントリから有効ビット212を読み出す(S404)。
次に、読み出した有効ビット212がON(有効)であるかどうかを判定する(S405)。有効ビット212がONの場合は、当該有効ビット212をOFF(無効)にして、ディレクトリアレイ210の該当エントリを無効化するようキャッシュメモリ120に指示する(S406)。なお、このような無効化を行った際のキャッシュメモリ120の一般的な動作として、無効化しようとするディレクトリアレイ210のエントリに対応するデータアレイ220のデータのみが最新のデータを保持した状態である場合は、当該最新データは次の階層のメモリ(図1の構成例の場合は主記憶130)へ転送され、最新データが失われないことが保証される。
次に、エラー回復モジュール141は、ステップS406で無効化したディレクトリアレイ210のエントリに対応するデータアレイ220のデータ部にデータをロードし直す(S407)。前述したように、キャッシュメモリ120と主記憶130との間のデータ転送はライン単位に行われるのが一般的である。従って、ここでのロードは一般的なロード命令を発行することで実現可能であり、このとき主記憶130のデータがキャッシュメモリ120に転送される。
なお、上述したステップS406およびステップS407の処理は、キャッシュメモリ120のデータアレイ220のデータがエラーデータを保持していた場合にエラー回復またはエラー検出を行う処理である。この具体的な内容については後述する。
ステップS405において、読み出した有効ビット212がONではなかった場合は、ステップS406およびステップS407の処理は行わない。これは、ディレクトリアレイ210の対応するエントリが無効な状態であり、有効なデータが存在していないため、エラー回復が不要なためである。
次に、エラー回復モジュール141は、インデックスアドレス情報301の内容を更新する(S408)。更新後の値は、インデックスアドレス情報301のカレントの値に対し、対応するディレクトリアレイ210の1つ後方のエントリに対応するインデックスアドレスの値とする。ただし、カレントの値がディレクトリアレイ210の最後方(すなわち、最終)のエントリに対応するインデックスアドレスの値である場合は、ディレクトリアレイ210の先頭エントリに対応するインデックスアドレスの値にラップさせて更新後の値とする。この更新処理は、エラー回復モジュール141がキャッシュメモリ120のデータアレイ220のデータの先頭から最後までを周期的にエラー回復することを可能にする。
次に、エラー回復モジュール141は、カウンタを+1インクリメントする(S409)。次に、カウンタの値が予め規定した回数よりも小さいか否かを判定する(S410)。カウンタが規定回数より小さい値であれば、ステップS404に戻り、ステップS404以降の処理を繰り返す。カウンタが規定回数より小さい値でない場合(すなわち、規定回数に達した場合)は、以降の処理に進む。
なお、前記規定回数の値は、仮想計算機システムにおけるシステム性能への影響を最小限にする値とする。この具体的な値は、本実施の形態の仮想計算機システムに要求される性能指標に依存するところがあるため、固定的な値は示さない。ただし、例えば、仮想計算機制御プログラム140に規定回数を設定する手段を設け、回数の変更を容易かつ柔軟に行えるものとする。
これ以降の処理はエンディング処理に相当するものである。まず、エラー回復モジュール141は、エラー回復処理フラグ302をOFFにし(S411)、次に、ゲストプログラムの動作を再開させ(S412)、キャッシュメモリ120のエラー回復処理を終了する。
なお、上述の図4に示した、エラー回復モジュール141によるエラー回復処理は、本実施の形態では、仮想計算機システムにおけるキャッシュメモリ120を処理の対象としているが、仮想計算機の構成をとらない通常の物理計算機システムにおけるキャッシュメモリに対して適用することも可能である。
以下では、上述の図4に示した、エラー回復モジュール141によるキャッシュメモリ120のエラー回復処理の全体的な処理イメージについて説明する。
エラー回復モジュール141は、仮想計算機制御プログラム140の制御により、定期的に起動される。図5は、エラー回復モジュール141の処理の例の概要を示す図である。なお、ディレクトリアレイ210の有効ビット212(V)に関し、図5においては、例として、V=1は有効な状態(ON)であることを示し、V=0は無効な状態(OFF)であることを示すものとする。
エラー回復モジュール141は、ディレクトリアレイ210の各エントリの有効ビット212を先頭エントリから順に読み出し、読み出した有効ビット212が示す状態に応じた処理を行う。図5において、処理500−1は、ディレクトリアレイ210の先頭エントリに対する処理を示し、処理500−2は、ディレクトリアレイ210の2番目のエントリに対する処理を示す。以下、処理500−3は3番目のエントリ、処理500−mは最終エントリに対する処理をそれぞれ示す。
なお、図5の各エントリの有効ビット212の値は、あくまで1つの例であり、図5の例では、先頭エントリ、3番目のエントリ、最終エントリがV=1(有効)であり、2番目のエントリがV=0(無効)である場合を示している。
エラー回復モジュール141は、ディレクトリアレイ210の1つのエントリの有効ビット212を読み出す(S404)。読み出した有効ビット212がV=1(有効、ON)であれば、V=0(無効、OFF)の指示を行い(S406)、続いて、当該エントリに対応するデータアレイ220に1ライン分のデータをロードする(S407)。図5の例では、処理500−1、処理500−3、処理500−mが該当する。読み出した有効ビット212がV=0(無効、OFF)であれば、当該エントリに対しては何も処理しない。図5の例では、処理500−2が該当する。
エラー回復モジュール141は、ディレクトリアレイ210の最終エントリに対する処理(図5の例では処理500−m)を行った後、先頭エントリの有効ビット212を再び読み出し、読み出した有効ビット212が示す状態に応じた処理を行う。このように、エラー回復モジュール141は、ディレクトリアレイ210の先頭エントリから最終エントリまでの全てのエントリに対する処理を順次繰り返して行う。ただし、エラー回復モジュール141は、上記処理を無限に繰り返すことはなく、規定の回数を繰り返した時点で処理を終了し、仮想計算機制御プログラム140の起動元にリターンする。以上が、エラー回復モジュール141によるキャッシュメモリ120のエラー回復処理の概要である。
次に、前述した図4のエラー回復モジュール141の処理のフローチャートにおける、ステップS406およびステップS407の処理の詳細について図6〜図9を用いて説明する。図4におけるステップS406およびステップS407の処理は、キャッシュメモリ120のデータアレイ220のデータがエラーデータを保持していた場合にエラー回復またはエラー検出を行う処理である。
図6は、キャッシュメモリ120のみ最新データを保持しており、キャッシュメモリ120のデータがハードウェア訂正可能なビット反転データを含む場合の、エラー回復モジュール141によるエラー回復処理の一例を説明する図である。
なお、図6の例では、ハードウェア訂正可能なエラーが存在する場合の例であるため、データアレイ220にECC部602が備わっており、データ部601に1ビット反転データ610が存在することを前提とするが、ECC以外のハードウェア訂正可能エラーであってもよい。
図6(a)は、図4のフローチャートのステップS406の実行時の状態を示した図である。ステップS406では、データアレイ220内のエラーデータ(1ビット反転データ610を含む、データ部601で示されるデータ)に対応するディレクトリアレイ210のエントリの有効ビット212をOFF(無効)にする。この無効化により、データ部601の最新データが失われないことを保証するため、キャッシュメモリ120から主記憶130へデータ転送が行われる。これにより、対応する主記憶130の古いデータ(データ部603)が最新のデータに更新される。
この転送シーケンスにおいて、データアレイ220のデータ部601から取り出したデータをECC部602の値を用いて訂正したデータが主記憶130へ転送される。従って、主記憶130のデータ部603には、ビット反転データが存在しない、エラー訂正されたデータが格納される。
しかし、この時点では、データアレイ220内のデータ部601には、1ビット反転データ610が残ったままである。この状態を長く放置しておくと、さらに別の1ビット反転データが発生した場合、2ビットエラーとなり、ハードウェア訂正不可能エラーとなってしまう。このようなハードウェア訂正不可能エラーを回避するために、図4のフローチャートのステップS407の処理が効果的である。
図6(b)は、図4のフローチャートのステップS407の実行時の状態を示した図である。ステップS407では、ステップS406で無効化したディレクトリアレイ210のエントリに対応するデータアレイ220内のエラーデータ(1ビット反転データ610を含む、データ部601で示されるデータ)にデータをロードする。このロードにより、主記憶130のデータ(データ部603)がデータアレイ220へ転送され、データアレイ220のデータ部601の1ビット反転データ610が正しいデータ(回復データ611)に回復される。
図7は、キャッシュメモリ120および主記憶130ともに最新データを保持しており、キャッシュメモリ120のデータがハードウェア訂正可能なビット反転データを含む場合の、エラー回復モジュール141によるエラー回復処理の一例を説明する図である。
なお、図6の例と同様に、図7の例では、ハードウェア訂正可能なエラーが存在する場合の例であるため、データアレイ220にECC部602が備わっており、1ビット反転データ610が存在することを前提とするが、ECC以外のハードウェア訂正可能エラーであってもよい。
図7(a)は、図4のフローチャートのステップS406の実行時の状態を示した図である。ステップS406では、データアレイ220内のエラーデータ(1ビット反転データ610を含む、データ部601で示されるデータ)に対応するディレクトリアレイ210のエントリの有効ビット212をOFF(無効)にする。この無効化を行っても、対応する主記憶130のデータ(データ部603)が最新データであるため、キャッシュメモリ120から主記憶130へのデータ転送は行われない。従って、データアレイ220内のエラーデータ(1ビット反転データ610を含む、データ部601で示されるデータ)は残ったままである。
図7(b)は、図4のフローチャートのステップS407の実行時の状態を示した図である。ステップS407では、ステップS406で無効化したディレクトリアレイ210のエントリに対応するデータアレイ220内のエラーデータ(1ビット反転データ610を含む、データ部601で示されるデータ)にデータをロードする。このロードにより、主記憶130のデータ(データ部603)がデータアレイ220へ転送され、データアレイ220のデータ部601の1ビット反転データ610が正しいデータ(回復データ611)に回復される。
図8は、キャッシュメモリ120および主記憶130ともに最新データを保持しており、キャッシュメモリ120のデータがハードウェア訂正不可能なビット反転データを含む場合の、エラー回復モジュール141によるエラー回復処理の一例を説明する図である。
なお、図8の例では、ハードウェア訂正不可能なエラーが存在する場合の例であるため、データアレイ220にECC部602が備わっており、2ビット反転データ810が存在することを前提とするが、ECC以外のハードウェア訂正不可能エラーであってもよい。
図8(a)は、図4のフローチャートのステップS406の実行時の状態を示した図である。ステップS406では、データアレイ220内のエラーデータ(2ビット反転データ810を含む、データ部601で示されるデータ)に対応するディレクトリアレイ210のエントリの有効ビット212をOFF(無効)にする。この無効化を行っても、対応する主記憶130のデータ(データ部603)が最新データであるため、キャッシュメモリ120から主記憶130へのデータ転送は行われない。従って、データアレイ220内のエラーデータ(2ビット反転データ810を含む、データ部601で示されるデータ)は残ったままである。
図8(b)は、図4のフローチャートのステップS407の実行時の状態を示した図である。ステップS407では、ステップS406で無効化したディレクトリアレイ210のエントリに対応するデータアレイ220内のエラーデータ(2ビット反転データ810を含む、データ部601で示されるデータ)にデータをロードする。このロードにより、主記憶130のデータ(データ部603)がデータアレイ220へ転送され、データアレイ220のデータ部601の2ビット反転データ810が正しいデータ(回復データ811)に回復される。
図9は、キャッシュメモリ120のみ最新データを保持しており、キャッシュメモリ120のデータがハードウェア訂正不可能なビット反転データを含む場合の、エラー回復モジュール141によるエラー回復処理の一例を説明する図である。
なお、図8の例と同様に、図9の例では、ハードウェア訂正不可能なエラーが存在する場合の例であるため、データアレイ220にECC部602が備わっており、2ビット反転データ810が存在することを前提とするが、ECC以外のハードウェア訂正不可能エラーであってもよい。
図9(a)は、図4のフローチャートのステップS406の実行時の状態を示した図である。ステップS406では、データアレイ220内のエラーデータ(2ビット反転データ810を含む、データ部601で示されるデータ)に対応するディレクトリアレイ210のエントリの有効ビット212をOFF(無効)にする。この無効化により、データ部601の最新データが失われないことを保証するため、キャッシュメモリ120から主記憶130へデータ転送が行われる。これにより、対応する主記憶130の古いデータ(データ部603)が最新のデータに更新される。
この転送シーケンスにおいて、データアレイ220のデータ部601から取り出したデータをECC部602の値を用いて訂正しようと試みるが、2ビット反転データ810が含まれるため訂正することは不可能である。このため、主記憶130には訂正されないままのエラーデータ(2ビット反転データ810を含む、データ部601で示されるデータ)が転送される。従って、主記憶130のデータ部603には、ビット反転データが存在する、すなわち、エラー訂正されていないデータが格納される。
図9(b)は、図4のフローチャートのステップS407の実行時の状態を示した図である。ステップS407では、ステップS406で無効化したディレクトリアレイ210のエントリに対応するデータアレイ220内のエラーデータ(2ビット反転データ810を含む、データ部601で示されるデータ)にデータをロードしようと試みる。しかし、主記憶130のデータ(データ部603)に2ビット反転データ910が含まれるため、データ転送エラーとなる。
キャッシュメモリ120でのデータロードにおいて、このような訂正不可能なエラーに起因するデータ転送エラーが発生した場合は、一般的に、訂正不可能なエラーを示す割込みがソフトウェアに通知される。仮想計算機制御プログラム140は、仮想計算機システムにおける割込みハンドリング機能を備えており、訂正不可能なエラーを示す割込みに対して、エラー割込みハンドラモジュール142をコールする。
以下では、訂正不可能なエラーを示すエラー割込みを受けた場合の、エラー割込みハンドラモジュール142の処理について説明する。図10は、エラー割込みハンドラモジュール142が行うエラー割込み処理の例を示すフローチャートである。
エラー割込みハンドラモジュール142の処理は、まず、エラー回復処理フラグ302がONか否かを判定する(S1001)。エラー回復処理フラグ302がONでない場合は、エラー割込みハンドラモジュール142の処理を終了し、コール元である仮想計算機制御プログラム140の割込みハンドリング機能に戻る。エラー回復処理フラグ302がONである場合は、キャッシュメモリ120におけるエラーアドレスを求める処理を行う(S1002)。
図11は、キャッシュメモリ120におけるエラーアドレスを求める方法の例を説明する図である。エラーアドレス1101のタグアドレスの値は、インデックスアドレス情報301に保持されたインデックスアドレスに対応する、ディレクトリアレイ210のエントリのアドレスタグ211の値と等しくなるはずである。従って、この値をエラーアドレス1101のタグアドレスの値とする。
また、エラーアドレス1101のインデックスアドレスの値は、インデックスアドレス情報301に保持されたインデックスアドレスの値と等しくなるはずである。従って、このインデックスアドレスをエラーアドレス1101のインデックスアドレスの値とする。エラーアドレス1101のオフセットアドレスの値は、ライン境界内の先頭のオフセットを指定するため、全て0とする。このように、専用のハードウェア等を必要とせず、仮想計算機制御プログラム140が、キャッシュメモリ120におけるエラーアドレス1101を求めることが可能である。
図10のフローチャートにおいて、ステップS1002でエラーアドレス1101を求めた後は、求めたエラーアドレス1101がいずれかの論理区画150に割当てられたアドレス領域に含まれるアドレスか否かを判定する(S1003)。エラーアドレス1101が論理区画150に含まれるアドレスである場合は、エラー割込みハンドラモジュール142は、エラーアドレス1101をエラーアドレス情報303に格納し(S1004)、続いて、エラーアドレス有効フラグ304をONにする(S1005)。
次に、エラー割込みハンドラモジュール142は、エラーアドレス1101を含むアドレス領域が割当てられた論理区画150で稼動するゲストOS151へエラー割込みを通知する(S1006)。これにより、ゲストOS151にエラー回復処理を委ねることになるが、当該ゲストOS151がエラー回復を行わないOSである場合には、後述する、仮想計算機制御プログラム140のエラーデータ初期化モジュール144にてエラー回復を行うことが可能である。
ステップS1003にて、エラーアドレス1101が論理区画150に含まれないアドレスである場合は、エラーアドレス1101が示すデータアレイ220にデータをストアする(S1007)。このストアはエラー回復のためのストアであるため、ストアするデータの値は初期化データなどの任意の値でよい。次に、インデックスアドレス情報301に対応するディレクトリアレイ210のエントリの有効ビット212をOFF(無効)にするようキャッシュメモリ120に指示する(S1008)。
上述したステップS1007とステップS1008の処理により、図9の例における、キャッシュメモリ120のデータアレイ220と主記憶130のハードウェア訂正不可能なエラーデータが回復される。この処理の詳細については後述する。
その後、エラーアドレス1101が論理区画150に含まれる場合も含まれない場合も、エラー回復処理フラグ302をOFFにする(S1009)。これにより、次にエラー割込みハンドラモジュール142がコールされた場合に、エラー回復モジュール141の処理中であるのか否かの判定を正しく行うための準備が整う。次に、エラー割込みハンドラモジュール142は、エラー回復モジュール141が停止させていたゲストプログラムの動作を再開させ(S1010)、エラー割込みハンドラモジュール142としての処理を終了する。以上が、エラー割込みハンドラモジュール142の処理の説明である。
次に、以下では、前述したエラーデータ初期化モジュール144にてエラー回復を行う処理について説明する。図10のステップS1006により、エラー割込みハンドラモジュール142が、エラーアドレス1101を含むアドレス領域が割当てられている論理区画150で稼動するゲストOS151へエラー割込みを通知する。このとき、当該割込み通知を受けたゲストOS151がエラー回復を行わないOSであった場合、エラーは残ったままとなる。多くのケースでは、このエラーが原因で、当該論理区画150で稼動するゲストプログラムは、当該論理区画150(論理計算機)のシャットダウンまたは再起動を選択することになる。
仮想計算機制御プログラム140は、前述したように、物理計算機100のハードウェアリソース(計算機資源)を論理的に分割して論理区画150として管理するプログラムであり、物理計算機100のCPU110や主記憶130等の計算機資源を論理的に分割して、これらを論理区画150として割当てている。
仮想計算機制御プログラム140は、論理区画150(論理計算機)のシャットダウンまたは再起動の際に、対象の論理区画150に分割して割当てていた主記憶130を開放する。この開放の後、仮想計算機制御プログラム140は、エラーデータ初期化モジュール144を実行する。なお、論理区画150(論理計算機)の再起動の場合に限り、仮想計算機制御プログラム140は、エラーデータ初期化モジュール144の実行に続き、再起動処理にて主記憶130を分割して対象の論理区画150に割当て直す。
図12は、エラーデータ初期化モジュール144が行うエラーデータ初期化処理の例を示すフローチャートである。エラーデータ初期化モジュール144は、まず、エラーアドレス有効フラグ304がONであるか否かを判定する(S1201)。エラーアドレス有効フラグ304がONでない場合は、エラーデータ初期化モジュール144の処理を終了する。
エラーアドレス有効フラグ304がONである場合は、対象の論理区画150における開放されるアドレス領域が、エラーアドレス情報303のアドレスを含む領域か否かを判定する(S1202)。エラーアドレス情報303のアドレスを含まない領域である場合は、エラーデータ初期化モジュール144の処理を終了する。
エラーアドレス情報303のアドレスを含む領域である場合は、エラーアドレス情報303が示すデータアレイ220にデータをストアする(S1203)。このストアはエラー回復のためのストアであるため、ストアするデータの値は初期化データなどの任意の値でよい。次にエラーアドレス情報303のインデックスアドレスに対応するディレクトリアレイ210のエントリの有効ビット212をOFF(無効)にするようキャッシュメモリ120に指示する(S1204)。
上述したステップS1203とステップS1204の処理により、図9の例における、キャッシュメモリ120のデータアレイ220と主記憶130のハードウェア訂正不可能なエラーデータが回復される。この処理の詳細については後述する。その後、エラーアドレス有効フラグ304をOFFにする(S1205)。これにより、次にエラーデータ初期化モジュール144が呼び出された場合に、エラーアドレス情報303の情報が有効であるか否かの判定を正しく行うための準備が整う。以上で、エラーデータ初期化モジュール144の処理は終了する。
次に、前述した図10のフローチャートにおけるステップS1007とステップS1008の処理、もしくは前述した図12のステップS1203とステップS1204の処理により、図9の例における、キャッシュメモリ120のデータアレイ220と主記憶130のハードウェア訂正不可能なエラーデータが回復される処理について図13を用いて説明する。
図13は、前述した図9における、キャッシュメモリ120および主記憶130の状態の例の続きであり、キャッシュメモリ120のみ最新データを保持しており、キャッシュメモリ120のデータがハードウェア訂正不可能なビット反転データを含む場合の、エラー回復モジュール141によるエラー回復処理の一例を説明する図である。
なお、図9の例と同様に、図13の例では、ハードウェア訂正不可能なエラーが存在する場合の例であるため、データアレイ220にECC部602が備わっており、2ビット反転データ810が存在することを前提とするが、ECC以外のハードウェア訂正不可能エラーであってもよい。
図13(a)は、図9(b)と同じ図を再度示したものであり、図4のフローチャートのステップS407の実行時の状態を示した図である。
図13(b)は、図10のフローチャートのステップS1007、もしくは図12のフローチャートのステップS1203の実行時の状態を示した図である。ステップS1007、もしくはステップS1203では、データストアが実行され、データアレイ220内のエラーデータ(2ビット反転データ810を含む、データ部601で示されるデータ)が初期化データ1301で上書きされる。また、このデータストアにより、初期化データ1301のECCが生成され、データアレイ220内のECC部602に格納される。
これにより、データアレイ220内のデータ部601とECC部602の値が、それぞれ初期化データ1301によってエラーのない値となり、訂正不可能エラーが取り除かれる。また、このデータストアにより、データアレイ220内のデータが最新データとなる。
図13(c)は、図10のフローチャートのステップS1008、もしくは図12のフローチャートのステップS1204の実行時の状態を示した図である。ステップS1008、もしくはステップS1204では、データアレイ220内の回復したデータ(回復初期化データ1302を含む、データ部601で示されるデータ)に対応するディレクトリアレイ210のエントリの有効ビット212をOFF(無効)にする。この無効化により、データ部601の最新データが失われないことを保証するため、キャッシュメモリ120から主記憶130へデータ転送が行われる。これにより、対応する主記憶130のデータが最新のデータに更新される。
この転送シーケンスにおいて、データアレイ220のビット反転データが存在しないデータが主記憶130へ転送されるため、主記憶130のデータ部603にはビット反転データが存在しないデータ(回復初期化データ1303を含むデータ)が格納され、主記憶130のデータ部603からも訂正不可能エラーが取り除かれる。
以上に説明したように、本実施の形態の仮想計算機システムでは、図6〜図8に示す例の場合は、キャッシュメモリエラーの影響が全く無い状態でエラーを回復し、システムの長時間連続稼動を可能にする。図9に示す例の場合は、ゲストOS151によるエラー回復が期待できない場合は一部の論理区画150がダウンする可能性があるが、そのような場合でもエラー回復を行うため、一時的なダウンにとどめることが可能である。また、システム全体をダウンさせることはないため、図9に示す例のようなキャッシュメモリエラーが発生してもシステムダウンを防ぐことを可能にする。
このように、本実施の形態の仮想計算機システムによれば、キャッシュメモリエラーが発生した場合であっても長時間連続稼動を可能とする高信頼性システムを提供することができる。また、仮想計算機制御プログラム140内にキャッシュメモリ120のエラー回復機能を備えることにより、ハードウェアの追加を必要とせず、かつ、ゲストプログラムにエラー回復手段を実装することを必要とせず、低コストで確実なキャッシュメモリエラー回復機能を提供することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
本発明は、1つの物理計算機において複数の論理区画を構成する仮想計算機制御プログラムを有する仮想計算機システムに利用可能である。
本発明の一実施の形態である仮想計算機システムの例を示すブロック図である。 一般的なキャッシュメモリの動作の一例を説明するためのブロック図である。 本発明の一実施の形態における、エラー回復制御情報データ部に保持する情報の例を示した図である。 本発明の一実施の形態における、エラー回復モジュールが行うエラー回復処理の例を示すフローチャートである。 本発明の一実施の形態における、エラー回復モジュールの処理の例の概要を示す図である。 本発明の一実施の形態における、エラー回復モジュールによるエラー回復処理の一例を説明する図である。 本発明の一実施の形態における、エラー回復モジュールによるエラー回復処理の一例を説明する図である。 本発明の一実施の形態における、エラー回復モジュールによるエラー回復処理の一例を説明する図である。 本発明の一実施の形態における、エラー回復モジュールによるエラー回復処理の一例を説明する図である。 本発明の一実施の形態における、エラー割込みハンドラモジュールが行うエラー割込み処理の例を示すフローチャートである。 本発明の一実施の形態における、キャッシュメモリにおけるエラーアドレスを求める方法の例を説明する図である。 本発明の一実施の形態における、エラーデータ初期化モジュールが行うエラーデータ初期化処理の例を示すフローチャートである。 本発明の一実施の形態における、エラー回復モジュールによるエラー回復処理の一例を説明する図である。
符号の説明
100…物理計算機、110…CPU、120…キャッシュメモリ、130…主記憶、140…仮想計算機制御プログラム、141…エラー回復モジュール、142…エラー割込みハンドラモジュール、143…エラー回復制御情報データ部、144…エラーデータ初期化モジュール、150…論理区画、151…ゲストOS、152…ゲストアプリケーション、
200…ロードアドレス、210…ディレクトリアレイ、211…アドレスタグ、212…有効ビット、220…データアレイ、
301…インデックスアドレス情報、302…エラー回復処理フラグ、303…エラーアドレス情報、304…エラーアドレス有効フラグ、
500…処理、
601、603…データ部、602…ECC部、610…1ビット反転データ、611…回復データ、
810…2ビット反転データ、811…回復データ、
910…2ビット反転データ、
1101…エラーアドレス、
1301…初期化データ、1302、1303…回復初期化データ。

Claims (5)

  1. 物理計算機上で、前記物理計算機を複数の論理区画に分割し、前記各論理区画に前記物理計算機の計算機資源を割当てて制御する仮想計算機制御プログラムを実行することにより、前記各論理区画上でそれぞれゲストOSを含むゲストプログラムを動作させる仮想計算機システムであって、
    前記仮想計算機制御プログラムは、
    周期的に前記物理計算機のキャッシュメモリのエラーを回復するエラー回復処理を行うエラー回復モジュールと、
    前記キャッシュメモリで発生したエラーによる割込み通知に対して、前記キャッシュメモリのエラーを回復するエラー割込み処理を行うエラー割込みハンドラモジュールと、
    前記論理区画のシャットダウンもしくは再起動を契機に、前記キャッシュメモリのエラーを回復するエラーデータ初期化処理を行うエラーデータ初期化モジュールとを有し、
    前記各論理区画上で動作する前記ゲストプログラムの動作とは独立して、前記キャッシュメモリのエラーの回復処理を行い、
    前記エラー割込み処理では、
    訂正不可能なエラーが発生した前記キャッシュメモリのエントリのアドレスであるエラーアドレスを求め、前記エラーアドレスが、いずれかの前記論理区画に割当てられたアドレス領域に含まれるか否かを判定し、前記判定が真である場合に、該当する前記論理区画上で動作する前記ゲストOSへエラー割込みを通知し、前記判定が偽である場合に、前記エラーアドレスに対応する前記エントリに初期化データをストアすることで、前記キャッシュメモリのエラーを回復し、前記エラーアドレスに対応する前記エントリを無効とすることで、主記憶に前記キャッシュメモリのデータを反映させることを特徴とする仮想計算機システム。
  2. 物理計算機上で、前記物理計算機を複数の論理区画に分割し、前記各論理区画に前記物理計算機の計算機資源を割当てて制御する仮想計算機制御プログラムを実行することにより、前記各論理区画上でそれぞれゲストOSを含むゲストプログラムを動作させる仮想計算機システムにおけるエラー回復方法であって、
    前記仮想計算機制御プログラムにより、
    前記論理区画上で動作する前記ゲストプログラムを停止させるステップと、
    前記物理計算機のキャッシュメモリの各エントリに対して、前記エントリが有効である場合に前記エントリを無効とするステップと、
    無効とされた前記エントリに前記物理計算機の主記憶からデータをロードし直すことで前記キャッシュメモリのエラーを回復するステップと、
    前記論理区画上の前記ゲストプログラムの動作を再開させるステップとを含むエラー回復処理を実行し、
    前記キャッシュメモリの対象の前記エントリに前記物理計算機の主記憶からデータをロードし直すことで前記キャッシュメモリのエラーを回復する際に、前記キャッシュメモリにおける訂正不可能なエラーに起因するエラー割込みの通知を受けた場合、
    前記訂正不可能なエラーが発生した前記キャッシュメモリの前記エントリのアドレスであるエラーアドレスを求めるステップと、
    前記エラーアドレスが、いずれかの前記論理区画に割当てられたアドレス領域に含まれるか否かを判定するステップと、
    前記判定が真である場合に、該当する前記論理区画上で動作する前記ゲストOSへエラー割込みを通知するステップと、
    前記判定が偽である場合に、前記エラーアドレスに対応する前記エントリに初期化データをストアすることで、前記キャッシュメモリのエラーを回復するステップ、および、
    前記エラーアドレスに対応する前記エントリを無効とすることで、前記主記憶に前記キャッシュメモリのデータを反映させるステップとを含むエラー割込み処理を実行することを特徴とする仮想計算機システムにおけるエラー回復方法。
  3. 請求項に記載の仮想計算機システムにおけるエラー回復方法において、
    前記エラーアドレスを含む前記論理区画のシャットダウンもしくは再起動を契機として、
    前記仮想計算機制御プログラムにより、
    前記エラーアドレスに対応する前記エントリに初期化データをストアすることで、前記キャッシュメモリのエラーを回復するステップと、
    前記エラーアドレスに対応する前記エントリを無効とすることで、前記主記憶に前記キャッシュメモリのデータを反映させるステップとを含むエラーデータ初期化処理を実行することを特徴とする仮想計算機システムにおけるエラー回復方法。
  4. 物理計算機上で実行され、前記物理計算機を複数の論理区画に分割し、前記各論理区画に前記物理計算機の計算機資源を割当てて制御することにより、前記物理計算機を、前記各論理区画上でそれぞれゲストOSを含むゲストプログラムを動作させる仮想計算機システムとして機能させる仮想計算機制御プログラムであって、
    前記論理区画上で動作する前記ゲストプログラムを停止させるステップと、
    前記物理計算機のキャッシュメモリの各エントリに対して、前記エントリが有効である場合に前記エントリを無効とするステップと、
    無効とされた前記エントリに前記物理計算機の主記憶からデータをロードし直すことで前記キャッシュメモリのエラーを回復するステップと、
    前記論理区画上の前記ゲストプログラムの動作を再開させるステップとを含むエラー回復処理を実行し、
    前記キャッシュメモリの対象の前記エントリに前記物理計算機の主記憶からデータをロードし直すことで前記キャッシュメモリのエラーを回復する際に、前記キャッシュメモリにおける訂正不可能なエラーに起因するエラー割込みの通知を受けた場合、
    前記訂正不可能なエラーが発生した前記キャッシュメモリの前記エントリのアドレスであるエラーアドレスを求めるステップと、
    前記エラーアドレスが、いずれかの前記論理区画に割当てられたアドレス領域に含まれるか否かを判定するステップと、
    前記判定が真である場合に、対象の前記論理区画上で動作する前記ゲストOSへエラー割込みを通知するステップと、
    前記判定が偽である場合に、前記エラーアドレスに対応する前記エントリに初期化データをストアすることで、前記キャッシュメモリのエラーを回復するステップ、および、
    前記エラーアドレスに対応する前記エントリを無効とすることで、前記主記憶に前記キャッシュメモリのデータを反映させるステップとを含むエラー割込み処理を実行することを特徴とする仮想計算機制御プログラム。
  5. 請求項に記載の仮想計算機制御プログラムにおいて、
    前記エラーアドレスを含む前記論理区画のシャットダウンもしくは再起動を契機として、
    前記エラーアドレスに対応する前記エントリに初期化データをストアすることで、前記キャッシュメモリのエラーを回復するステップと、
    前記エラーアドレスに対応する前記エントリを無効とすることで、前記主記憶に前記キャッシュメモリのデータを反映させるステップとを含むエラーデータ初期化処理を実行することを特徴とする仮想計算機制御プログラム。
JP2008203968A 2008-08-07 2008-08-07 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム Expired - Fee Related JP5161696B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008203968A JP5161696B2 (ja) 2008-08-07 2008-08-07 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム
US12/507,516 US8082469B2 (en) 2008-08-07 2009-07-22 Virtual computer system, error recovery method in virtual computer system, and virtual computer control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008203968A JP5161696B2 (ja) 2008-08-07 2008-08-07 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム

Publications (2)

Publication Number Publication Date
JP2010039895A JP2010039895A (ja) 2010-02-18
JP5161696B2 true JP5161696B2 (ja) 2013-03-13

Family

ID=41654026

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008203968A Expired - Fee Related JP5161696B2 (ja) 2008-08-07 2008-08-07 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム

Country Status (2)

Country Link
US (1) US8082469B2 (ja)
JP (1) JP5161696B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4882845B2 (ja) * 2007-04-19 2012-02-22 株式会社日立製作所 仮想計算機システム
US8543769B2 (en) * 2009-07-27 2013-09-24 International Business Machines Corporation Fine grained cache allocation
US8745618B2 (en) * 2009-08-25 2014-06-03 International Business Machines Corporation Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments
JP5494298B2 (ja) * 2010-07-06 2014-05-14 富士通株式会社 計算機装置,障害復旧制御プログラムおよび障害復旧制御方法
US20120096462A1 (en) * 2010-10-18 2012-04-19 Electronics And Telecommunications Research Institute Dynamic virtualization technique for multicore processor system
JP5645262B2 (ja) * 2011-01-12 2014-12-24 日本電気株式会社 情報処理装置
US9170947B2 (en) 2011-12-29 2015-10-27 Intel Corporation Recovering from data errors using implicit redundancy
US8954797B2 (en) * 2012-04-16 2015-02-10 International Business Machines Corporation Reconfigurable recovery modes in high availability processors
JP5965076B2 (ja) * 2012-09-25 2016-08-03 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 訂正不能メモリエラー処理方法及びその可読媒体
US9003223B2 (en) 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
CN109388519B (zh) * 2017-08-07 2021-06-11 上海寒武纪信息科技有限公司 错误恢复方法及装置、处理器
US10877900B1 (en) * 2019-06-26 2020-12-29 Western Digital Technologies, Inc. Enabling faster and regulated device initialization times
JP7281528B2 (ja) * 2020-04-16 2023-05-25 株式会社三菱Ufj銀行 情報処理装置
US11586513B2 (en) 2020-11-17 2023-02-21 Google Llc Live migrating virtual machines to a target host upon fatal memory errors
US11550673B2 (en) 2020-11-17 2023-01-10 Google Llc Virtual machines recoverable from uncorrectable memory errors
US11977431B2 (en) 2022-03-15 2024-05-07 Google Llc Memory error prevention by proactive memory poison recovery

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63269233A (ja) 1987-04-28 1988-11-07 Oki Electric Ind Co Ltd 誤り検出・訂正回路
JPH01112599A (ja) 1987-10-26 1989-05-01 Matsushita Electric Ind Co Ltd 半導体記憶装置
JP3192664B2 (ja) * 1991-01-22 2001-07-30 株式会社日立製作所 キャッシュメモリシステムおよびキャッシュメモリコントローラ
JPH0588987A (ja) * 1991-09-25 1993-04-09 Hitachi Ltd バツフア記憶装置
JP3427901B2 (ja) 1992-07-28 2003-07-22 日本電信電話株式会社 メモリ内容回復装置
JPH08194648A (ja) 1995-01-13 1996-07-30 Hitachi Ltd 記憶装置
JP3196004B2 (ja) * 1995-03-23 2001-08-06 株式会社日立製作所 障害回復処理方法
WO1996033459A1 (en) * 1995-04-18 1996-10-24 International Business Machines Corporation High available error self-recovering shared cache for multiprocessor systems
JPH1139217A (ja) * 1997-07-18 1999-02-12 Nec Corp キャッシュメモリのエラー処理機構
JP4426736B2 (ja) * 2001-04-27 2010-03-03 株式会社日立製作所 プログラム修正方法およびプログラム
US7111200B2 (en) * 2003-04-17 2006-09-19 International Business Machines Corporation Apparatus and method for debugging a logical partition
US7134052B2 (en) * 2003-05-15 2006-11-07 International Business Machines Corporation Autonomic recovery from hardware errors in an input/output fabric
JP2007034514A (ja) * 2005-07-25 2007-02-08 Fuji Xerox Co Ltd 情報処理装置
US7493515B2 (en) * 2005-09-30 2009-02-17 International Business Machines Corporation Assigning a processor to a logical partition
US8146091B2 (en) * 2008-05-01 2012-03-27 International Business Machines Corporation Expansion and contraction of logical partitions on virtualized hardware

Also Published As

Publication number Publication date
US20100037097A1 (en) 2010-02-11
US8082469B2 (en) 2011-12-20
JP2010039895A (ja) 2010-02-18

Similar Documents

Publication Publication Date Title
JP5161696B2 (ja) 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム
EP2979189B1 (en) Storing data from cache lines to main memory based on memory addresses
US7774636B2 (en) Method and system for kernel panic recovery
US8356149B2 (en) Memory migration
US8122308B2 (en) Securely clearing an error indicator
US20110213954A1 (en) Method and apparatus for generating minimum boot image
CN103493027A (zh) 虚拟磁盘存储技术
EP3084595A1 (en) Memory-preserving reboot
US11620215B2 (en) Multi-threaded pause-less replicating garbage collection
JP2010165251A (ja) 情報処理装置及びプロセッサ並びに情報処理方法
JP2002324058A (ja) パイプライン処理内の実行を順序付ける命令
US9235426B2 (en) Multicore processor system, computer product, and notification method for updating operating system
US10482008B2 (en) Aligned variable reclamation
US20150019906A1 (en) Transparent and Lightweight Recovery From Hardware Memory Errors
WO2015153645A1 (en) Memory migration in presence of live memory traffic
US10346234B2 (en) Information processing system including physical memory, flag storage unit, recording device and saving device, information processing apparatus, information processing method, and computer-readable non-transitory storage medium
CN113127263B (zh) 一种内核崩溃恢复方法、装置、设备及存储介质
JP5035227B2 (ja) 情報処理装置、プログラムの起動制御方法、及び起動制御プログラム
CN110928890B (zh) 数据存储方法、装置、电子设备及计算机可读存储介质
US20220318053A1 (en) Method of supporting persistence and computing device
US11573905B2 (en) Saving page retire information persistently across operating system reboots
JP4155052B2 (ja) エミュレータ、エミュレーション方法およびプログラム
US20170357558A1 (en) Apparatus and method to enable a corrected program to take over data used before correction thereof
JP2001306307A (ja) ファームウェアの処理方法。
US20240069742A1 (en) Chassis servicing and migration in a scale-up numa system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121029

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121214

R150 Certificate of patent or registration of utility model

Ref document number: 5161696

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees