JP2015529927A - 訂正不能エラーを含むアドレス範囲の通知 - Google Patents

訂正不能エラーを含むアドレス範囲の通知 Download PDF

Info

Publication number
JP2015529927A
JP2015529927A JP2015533032A JP2015533032A JP2015529927A JP 2015529927 A JP2015529927 A JP 2015529927A JP 2015533032 A JP2015533032 A JP 2015533032A JP 2015533032 A JP2015533032 A JP 2015533032A JP 2015529927 A JP2015529927 A JP 2015529927A
Authority
JP
Japan
Prior art keywords
memory
range
operating system
uncorrectable
error
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.)
Granted
Application number
JP2015533032A
Other languages
English (en)
Other versions
JP5965076B2 (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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2015529927A publication Critical patent/JP2015529927A/ja
Application granted granted Critical
Publication of JP5965076B2 publication Critical patent/JP5965076B2/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/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
    • 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

Abstract

訂正不能メモリエラーから回復するための技法が提供される。メモリロケーションにアクセスすることができる。このメモリロケーションが訂正不能エラーを含むと判断される場合がある。このメモリロケーションに関連付けられたアドレスの範囲を判断することができる。アドレスの範囲全体に対して訂正動作を行い、訂正不能メモリエラーを含むアドレスの範囲内にある他のアドレスを識別することができる。【選択図】図1

Description

マシンチェックアーキテクチャは、現代のコンピューティングシステムにおいて、メモリ内の障害等の障害を検出するのに用いることができる技法である。多くのコンピューティングシステムでは、メモリは、エラー訂正符号(ECC)によって保護されている。通常用いられているエラー訂正符号は、単一ビットエラーを検出して訂正することができる。マルチビットエラーの場合、ECCは、エラーを検出することができる場合があるが、そのエラーを訂正することはできない。マシンチェックアーキテクチャを利用するシステムでは、訂正不能エラーを含むメモリロケーションが発見されたとき、ポイズンシグネチャ(poison signature)又は単にポイズン(poison)と呼ばれる特殊な値が、そのメモリロケーションに配置される。ポイズンシグネチャは、通常、ECCビットを操作することによって生成される。データ内の訂正不能エラーは、メモリコントローラ、CPUキャッシュ、IOデバイスによって、又は任意の数の他の要素において識別される場合があり、それらの要素のうちのいずれもが、データ内にポイズンシグネチャを生成することができる。
システムは、ポイズンが存在する場合であっても、長時間の間、動作することができる場合がある。しかしながら、中央処理ユニット(CPU)が、ポイズンを含むメモリロケーションの使用を試みると、マシンチェック例外が、プロセッサによって生成される場合がある。このマシンチェック例外は、コンピューティングデバイスのファームウェア又はオペレーティングシステムによってインターセプトされる場合がある。幾つかの場合には、訂正動作を行うことができず、システム全体がクラッシュする場合がある。一方、他の場合には、オペレーティングシステムは、回復動作を行うことができる場合がある。例えば、オペレーティングシステムは、ポイズンを含むと判断されたメモリロケーションを用いていた特定のプロセスをキルする場合がある。
本明細書において説明する技法によるシステムの一例を示す図である。 訂正不能メモリエラーを処理するための高レベル流れ図の一例を示す図である。 訂正不能エラーの検出に基づいてメモリを初期化する(initializing)ための高レベル流れ図の一例を示す図である。 オペレーティングシステムがメモリアドレスの範囲をクリーンアップする高レベル流れ図の一例を示す図である。 訂正不能メモリエラーによって引き起こされる回復可能エラー及び回復不能エラーを処理するための高レベル流れ図の一例を示す図である。 ポイズン消費を検出するための高レベル流れ図の一例を示す図である。 ポイズンの検出及びポイズンからの回復のための高レベル流れ図の一例を示す図である。
マシンチェックアーキテクチャシステムにおけるポイズンの使用は、訂正不能エラーを含むメモリの検出及びCPUがエラーを含むメモリを用いることの防止において非常に有用である。幾つかの場合には、メモリは、ソフトウェアによって用いられるデータ値を含む場合がある。破損したデータ値の使用によって、正しくない結果が取得される場合がある。他の場合には、メモリロケーションは、CPUによって実行される命令を含む場合がある。そのような場合、メモリロケーションに含まれる命令は、本質的にはランダムな命令である。なぜならば、エラーがその命令をどのように変更したのかを判断することができないからである。ECCを用いると、破損した命令を識別することができるが、必ずしも訂正することはできない。
上述したように、マシンチェック例外の受信の際にオペレーティングシステムによってとられる通常の動作は、影響を受けるメモリロケーションを用いていたプロセスをパージすることである。プロセスをパージすることは、通常、プロセスの動作を停止して、そのプロセスにアロケートされていたメモリ等の全てのリソースを解放することを意味する。しかしながら、プロセスが単にパージされるとき、ポイズンの存在に起因して、幾つかの問題が発生する。発生する1つの問題は、オペレーティングシステムがプロセスをパージすると、そのプロセスによる使用中のメモリが未知の状態で放置されるということである。メモリは、更なるエラーを含む場合があり、この場合、異なるプロセスがこのメモリの使用を試みると、その結果、追加のマシンチェック例外が生じることになる。別の問題は、プロセスによって用いられるメモリがポイズンを有する可能性があり、OSがそのメモリ領域を別のプロセスに割り当てた場合、そのプロセスは、ポイズン化したメモリ内に立ち入る可能性があるということである。現行のシステムにおけるオペレーティングシステムは、通例、パージされるプロセスのメモリのポイズンを浄化するメモリコントローラについて十分に知らない。
オペレーティングシステムは、2つの選択肢を有する。第1に、パージされるプロセスによって用いられていたメモリを使用不能と宣言することができる。そのような場合、オペレーティングシステムは、そのメモリの使用をもはや試みない。リブート間で長時間動作するシステムでは、これは、ますます多くのプロセスがパージされ、それらのメモリリソースが利用不能あるとしてマーキングされるにつれて、メモリマップに非常に多くのギャップを発生させる場合がある。第2の選択肢では、最初にポイズンを引き起こしたメモリハードウェアに関連した実際の問題が存在し得る場合であっても、オペレーティングシステムは、プロセスをパージするものの、メモリの継続使用を可能にする場合がある。メモリにポイズンがないこと及び未訂正のエラーを引き起こすフォールトがないことを確実にするステップがとられていない場合、メモリをむやみに再利用すると、追加のマシンチェックの生成を引き起こす場合がある。
上記議論は、まず第1に、エラーを含むメモリを用いていたプロセスをパージすることができるものと仮定していた。ポイズンが、オペレーティングシステムカーネル等の影響を受け易いプロセスにおいて検出された場合、そのプロセスをパージすると、その結果、一般に、システムはクラッシュする。多くの場合、オペレーティングシステムの設計者は、カーネル等のクリティカルなプロセスがパージされるとき、このクリティカルなプロセスによって用いられるメモリのメモリダンプを提供する。このダンプによって、専門家は、クリティカルなプロセスが障害時に行っていたことを解析し、この障害をより良くデバッグすることが可能になる。しかしながら、クリティカルなプロセスによって用いられるメモリが追加のエラーを含む場合、単にメモリにアクセスして内容をダンプするにすぎない動作が、追加のマシンチェック例外を引き起こす場合がある。
ポイズンによって引き起こされるマシンチェック例外に関連した問題を更に悪化させることは、ポイズンの単なる生成が、それ自体はプロセスをパージする理由ではないということである。例えば、メモリコントローラが、CPUキャッシュ用にキャッシュラインのプリフェッチを試みたとき、メモリ内にエラーを検出する場合がある。メモリコントローラは、この場合、エラーを含むメモリをポイズンシグネチャと取り替え、このポイズンシグネチャをキャッシュにロードすることができる。この時点において、システムは、そのポイズンが生成されたことは知っているが、そのポイズンが消費されるか否か及びいつ消費されるのかを判断する方法を有しない。例えば、プロセスは、プリフェッチされたキャッシュラインへのアクセスを決して試みることはなく、したがって、マシンチェック例外を決して生成することはない。さらに、システムは、オペレーティングシステムが、ポイズンを消費したプロセスをパージすることによって、ポイズンの消費から回復することができたか否かを判断する明確な方法を有しない。
本明細書において説明する技法は、ポイズンの消費によって引き起こされるマシンチェック例外からの回復に関連した上述の問題を克服するものである。そのような例外が発生したとき、オペレーティングシステムは、オペレーティングシステムとハードウェアとの間の抽象化レイヤとして機能するシステムファームウェアに、マシンチェック例外が受信されたことを知らせることができる。オペレーティングシステムは、プロセスのパージに成功したか否か又はメモリのダンプ等の他の回復動作が行われるか否かもファームウェアに知らせることができる。加えて、オペレーティングシステムは、パージされるプロセスによって用いられていたメモリアドレスの単数又は複数の範囲をファームウェアに知らせることができる。
次に、システムファームウェアは、オペレーティングシステムによって提供されたメモリアドレスの範囲を調べることができる。このファームウェアは、メモリが追加のエラーを含むか否かを判断し、メモリ範囲を再初期化(reinitialize)して、以前のエラーについて生成されたポイズンのメモリ範囲をクリアすることができる。システムファームウェアは、メモリを検査して、エラーがメモリ内の実際の欠陥によって引き起こされたか否かを判断することもできる。ファームウェアは、破損したデータを含む場合があるキャッシュメモリ等の全ての他のロケーションをパージすることもできる。メモリのクリーンアップが実行されると、ファームウェアは、結果をオペレーティングシステムに返信して報告することができる。これらの結果は、どのメモリの範囲がクリーンアップに成功したのか、及びどのメモリの範囲がクリーンアップに成功しなかったのかを含むことができる。
次に、オペレーティングシステムは、ファームウェアによって提供された情報を用いて、メモリを使用可能な状態に戻すこともできるし、メモリを使用不能としてマーキングすることもできる。検査に成功したとしてファームウェアによって示されたメモリは、異なるプロセスに再利用されるようにオペレーティングシステムに返すことができる。
幾つかの場合には、エラーを含むメモリを用いているプロセスをパージすることができない。例えば、オペレーティングシステムカーネルを実行しているプロセスは、直接パージすることができない。なぜならば、これは、システムクラッシュを引き起こす場合があるからである。そのような場合には、オペレーティングシステムは、後の解析に備えてダンプされるメモリアドレスの範囲をファームウェアに知らせることができる。この場合、ファームウェアは、メモリの再初期化を試みることができず、ポイズンシグネチャを含むメモリロケーション、又はOSがアクセスした場合に追加の未訂正のエラーを引き起こすことになるメモリロケーションに単に留意するだけである。この情報は、オペレーティングシステムに提供することができ、オペレーティングシステムは、その結果、メモリをダンプするときに、ポイズン又はエラーを含むメモリロケーションを回避することができる。
図1は、本明細書において説明する技法によるシステムの一例である。このシステム100は、サーバコンピュータ又はパーソナルコンピュータに見られるようなコンピューティングシステムとすることができる。システム100は、スマートフォン、タブレット、携帯情報端末、又は他の任意のそのようなデバイス等の他の任意のタイプのコンピューティングデバイスとすることもできる。本明細書において説明する技法は、どの特定のタイプのデバイスにも限定されるものではなく、逆に、以下で説明するタイプの要素を含む任意のタイプのデバイスに適用可能である。
システム100は、プロセッサ110、非一時的プロセッサ可読媒体120、及びメモリ130を備えることができる。プロセッサは、プロセッサ可読命令を取り出して実行することができる任意のタイプのプロセッサとすることができる。さらに、プロセッサは、メモリエラーを検出し、それらのエラーをシステムの他の構成要素に通知することができるタイプのものとすることができる。例えば、プロセッサは、訂正不能エラーを含むメモリがポイズンシグネチャと呼ばれる特殊なシグネチャを用いてマーキングされるマシンチェックアーキテクチャを採用することができる。ポイズンシグネチャは、通常、メモリエラーを含むキャッシュラインのECCビットを、ポイズンとして認識することができるパターンを用いて変更することによって作成される。プロセッサがポイズンを消費したとき、マシンチェック例外等の例外を発生させることができる。ファームウェア及びオペレーティングシステムは、以下で説明するように、この例外を受信して、訂正動作を行うことができる。プロセッサは、キャッシュメモリ115を備えることもできる。このキャッシュメモリは、プロセッサダイ自体に位置するメモリとすることができ、データへの高速アクセスを可能にすることができる。キャッシュメモリの使用については、以下で更に詳細に説明する。
システムは、一組の命令を含む非一時的プロセッサ可読媒体120も備えることができる。これらの命令がプロセッサによって実行されるとき、プロセッサは、本明細書において説明する機能を実施することができる。この媒体は、アプリケーション122、オペレーティングシステム124、及びファームウェア126を含むことができる。これらのアプリケーションは、システム100の機能を提供することができる。例えば、ウェブホスティングサーバでは、アプリケーションは、ウェブサーバとすることができる。本明細書において説明する技法は、どの特定のタイプのアプリケーションにも限定されるものではない。理解すべきは、アプリケーションが、システム上で動作して、エンドユーザが所望する機能を提供するプログラムであるということである。
媒体は、オペレーティングシステムも含むことができる。このオペレーティングシステムは、システム100のリソースを管理することができる。例えば、オペレーティングシステムは、システム上で動作しているアプリケーションにメモリ等のリソースをアロケートすることによって、それらのアプリケーションを管理することができる。オペレーティングシステムは、オペレーティングシステムアプリケーションプログラミングインタフェース(API)を通じて様々な能力をアプリケーションに提供することもできる。これらのAPIを通じて、アプリケーションは、コンピューティングシステムのリソースへのアクセスを得ることができる。オペレーティングシステムは、システム100の全てのリソースの経過を追跡し、どのリソースが利用可能であるのか、及びどのリソースが使用中、すなわち利用不能であるのかを判断することができる。
オペレーティングシステム124は、ファームウェア126を用いて、プロセッサ及びシステム100の他の構成要素とインタフェースすることができる。このファームウェアは、ハードウェアとオペレーティングシステムとの間に抽象化レイヤを提供するソフトウェア命令とすることができる。例えば、オペレーティングシステムは、下層にあるハードウェアの能力を利用したい場合がある。オペレーティングシステムは、ハードウェアとのより大きな度合いの一体性を有するファームウェアとインタフェースして、その能力を要求することができる。ファームウェアは、ハードウェアについてのより大きな知識レベルを有し、したがって、オペレーティングシステムからの一般化されたリソース要求を取り込み、それらの要求を、必要とされる特定のハードウェアレベルコマンドに変換することができる。ファームウェアは、通常はオペレーティングシステムに利用可能でないコマンドをハードウェア上で実行することができる場合もある。例えば、ファームウェアは、ハードウェアの能力の有効化及び無効化を行うことができる場合がある。
システム100は、メモリ130も備えることができる。このメモリは、通常、プロセッサが用いることができるランダムアクセスメモリである。通常のコンピューティングシステムでは、非一時的プロセッサ可読媒体120上に記憶されたプロセッサ命令は、通常、プロセッサによる実行の前にメモリ130内にロードされる。プロセッサによるメモリへのアクセスは、通常、媒体120にアクセスすることによって達成することができる速度よりもはるかに高速にすることができる。
アプリケーションは、通常、オペレーティングシステムによって管理されるプロセスとして実行される。オペレーティングシステムは、アプリケーションによって用いられるメモリアドレスの或る範囲をアロケートすることができる。図示するように、2つの例示のアプリケーションプロセス132、134がある。これらのプロセスは、ウェブサーバ、ワードプロセッシングプログラム、又は他の任意のタイプのアプリケーション等の任意のタイプのアプリケーションとすることができる。図1に示すように、これらのプロセスは、メモリアドレスの或る範囲を占有する。このメモリアドレスの範囲は、連続した範囲として示されているが、これは、説明を簡単にするためである。メモリアドレスの範囲は、不連続な場合がある。例えば、プロセスに配分されたメモリの間に、空いているメモリアドレスのセクション133、135が存在する場合がある。この説明の残りの部分では、プロセスによって用いられるアドレスの範囲は、そのプロセスにアロケートされた全てのメモリを意味し、そのメモリが1つ又は複数の連続した範囲にあるか否かを問わない。
アプリケーションの観点からプロセスを説明してきたが、オペレーティングシステム自体がプロセスである。他の任意のプロセスと同様に、オペレーティングシステムは、そのオペレーティングシステムの機能を提供するのに用いられる命令を記憶するために、それ自体にメモリ131をアロケートすることができる。ハードウェアの観点からすれば、オペレーティングシステムは、本質的には、実行される別のプロセスにすぎない。
動作中、プロセッサは、命令及びデータをメモリからロードすることができる。キャッシュメモリを含むプロセッサアーキテクチャでは、メモリの内容は、プロセッサによるより高速なアクセスを得るためにキャッシュ内にロードすることができる。通常、メモリの内容は、キャッシュラインと呼ばれる場合がある複数バイトの単位で、プロセッサからプロセッサキャッシュへ及びプロセッサキャッシュからプロセッサへ移動される。例えば、メモリの8バイトの集合体をキャッシュラインとして合わせてグループ化することができる。しかしながら、本明細書において説明する技法は、どの所与のサイズのキャッシュラインにも限定されるものではないことが理解されるべきである。キャッシュラインは、ECCによって保護することができる。上述したように、ECCは、通常、キャッシュライン内の単一ビットエラーを検出して訂正することができる。したがって、単一ビットエラーについては、これ以上説明しないことにする。複数ビットエラーの場合には、ECCは、エラーを検出することができる場合があるが、そのエラーを訂正することはできない。キャッシュライン内の複数ビットエラーは、訂正不能エラーと呼ばれる場合がある。
メモリには、多くのエラー発生源が存在する。1つの可能な発生源は、高エネルギー粒子である。高エネルギー粒子は、メモリロケーションに記憶された1つ又は複数のビットの値を変化させる場合があり、したがって、メモリは正しくない値を含む。別の可能なエラー発生源は、機能不良のメモリチップである。更に別のエラー発生源は、メモリに直接アクセスしてデータを不正確に記憶する場合がある入力/出力デバイス(図示せず)である場合がある。さらに、アプリケーションソフトウェア、オペレーティングシステム、又はファームウェア内のバグが、メモリ内にエラーを引き起こす場合がある。
メモリ内のエラーは、複数のメカニズムを通じて検出することができる。例えば、多くのプロセッサアーキテクチャは、メモリ内の各キャッシュラインをステップスルーすることができるスクラバハードウェアを含む。ECCを用いることによって、スクラバは、メモリにエラーが存在すると判断することができる。エラーが、マルチビットエラーを意味する訂正不能なタイプのものである場合、スクラバは、キャッシュラインの内容を、メモリが破損していることを示すポイズンシグネチャと取り替えることができる。同様に、キャッシュラインがメモリからプロセッサ又はプロセッサキャッシュ内にロードされるとき、メモリをロードするのに用いられるハードウェアは、訂正不能エラーがこのキャッシュラインに存在すると判断することができる。この場合も、そのキャッシュラインをポイズンシグネチャと取り替えることができる。破損したキャッシュラインがプロセッサキャッシュから排除されるとき、CPUキャッシュコントローラは、このキャッシュラインがメモリに返信される前にこのキャッシュラインをポイズン化することができる。ポイズンシグネチャを生成する他のあり得る理由は、当業者に知られている。理解すべきは、訂正不能エラーがキャッシュラインに発見されたとき、そのラインをポイズンシグネチャと取り替えることができるということである。
或る時点において、プロセッサは、ポイズンシグネチャを含むキャッシュラインに対して或るタイプのアクセスを試みる場合がある。プロセッサは、そのキャッシュラインをメモリ又はプロセッサキャッシュから直接ロードすることができる。このアクセス動作は、キャッシュラインに記憶された命令を実行しようとしている場合もあるし、キャッシュラインに記憶されたデータ値を用いようとしている場合もある。ポイズンシグネチャを含むキャッシュラインへのアクセスの試みは、ポイズンの消費と呼ばれる。マシンチェックアーキテクチャを採用したプロセッサでは、ポイズンの消費は、プロセッサにマシンチェック例外を生成させる。このマシンチェック例外は、プロセッサハードウェアからファームウェアに渡すことができる。次に、ファームウェアは、マシンチェック例外の表示をオペレーティングシステムに渡すことができる。
オペレーティングシステムが、マシンチェック例外の表示を受信すると、オペレーティングシステムは、そのエラーが回復可能であるか否かを最初に決定しなければならない。上述したように、各プロセスには、メモリアドレスの或る範囲がアロケートされる。マシンチェック例外は、ポイズンを含んだ特定のメモリロケーションを識別する。したがって、オペレーティングシステムは、どのプロセス及び関連付けられたメモリ範囲がマシンチェック例外の原因であったのかを判断することができる。
幾つかの場合には、オペレーティングシステムは、例外を引き起こしたプロセスをパージすることによって、マシンチェック例外から回復することができる場合がある。プロセスをパージすることは、通常、このプロセスを停止させることと、このプロセスによって用いられている全てのリソースを解放することとを伴う。プロセスをパージすることは、プロセスをキルすると表現される場合もある。しかしながら、マシンチェック例外に関して上記で説明した問題が発生するのは、この時点である。オペレーティングシステムがプロセスをパージすることができる場合であっても、そのプロセスによって用いられていたメモリは、依然としてエラーを含んでいる場合がある。例えば、ポイズンの生成を引き起こしたキャッシュラインを含むメモリチップが実際に欠陥を有する場合、そのプロセスによって用いられるアドレス範囲にある他のキャッシュラインも、ポイズンシグネチャを含むか又はポイズンの生成をもたらすことになるエラーを含む可能性が非常に高い。
オペレーティングシステムは、パージされたプロセスによって用いられていたメモリを他のプロセスに利用可能にする前に、そのメモリをまずクリーニングして検証することが望ましい場合がある。1つの例示の実施態様では、オペレーティングシステムは、ポイズンが消費されたことと、オペレーティングシステムが、ポイズンを有するキャッシュラインを含んでいたプロセスをパージすることによって回復を試みていることとの表示をファームウェアに送信することができる。オペレーティングシステムは、パージされたプロセスによって用いられていたメモリアドレスの範囲をファームウェアに知らせることができる。換言すれば、プロセッサは、ポイズン又は他のエラーの存在の有無についてチェックする必要があるメモリアドレスの範囲をファームウェアに知らせることができる。
この表示を受信すると、ファームウェアは、パージされたプロセスによって用いられていたメモリアドレスの範囲のクリーンアップを試みることができる。幾つかの例示の実施態様では、このクリーンアップの一部として、ファームウェアは、プロセッサ内におけるポイズンの生成及びポイズン消費の検出を一時的に無効化することができる。上記で説明したように、ファームウェアは、プロセッサと密接に一体化され、したがって、これらの下位レベルの機能を制御することができる。ファームウェアは、クリーンアッププロセスの間、マシンチェック例外を無効化することができる。なぜならば、メモリをクリーンアップするにすぎない動作が、それ以外で追加のマシンチェック例外を引き起こす場合があるからである。例えば、パージされたプロセスに関連付けられた幾つかのキャッシュラインを含むメモリチップが欠陥を有し、したがって、多くのエラーを有すると仮定する。メモリのクリーンアップを試みるプロセスにおいて、メモリはアクセスされる。マシンチェック例外が有効化されている場合、メモリにアクセスしてメモリをクリーンアップすることによって、追加のマシンチェック例外が引き起こされる。
1つの例示の実施態様では、ファームウェアは、システムの起動中に行われるのと同様にメモリアドレスの範囲を初期化することによって、このメモリアドレスの範囲のクリーンアップを試みることができる。換言すれば、メモリは、エラーを含まない既知の良好な値であるものに初期化することができる。この初期化が行われるとき、メモリコントローラは、ポイズンのない既知の良好な状態にECCビットを初期化するモードにすることができる。次に、ファームウェアは、メモリアドレスの範囲を検査して、このメモリアドレスの範囲に既知の良好な値を適切に記憶することができたか否かを判断することができる。一時的フォールトの場合、この検査は成功するはずである。一方、欠陥のあるメモリチップ等の永続的なフォールトの場合、この初期化は失敗する場合がある。いずれの場合も、ファームウェアは、どのメモリロケーションの初期化を成功することができ、どのメモリロケーションの初期化を成功することができなかったかを判断することができる場合がある。
次に、ファームウェアは、この情報をオペレーティングシステムに戻すことができる。次に、オペレーティングシステムは、初期化に成功したメモリロケーションを、他のプロセスによる使用に今後利用可能であるとしてマーキングすることができる。初期化に成功しなかったメモリロケーションは、使用には利用不能であるとしてマーキングすることができる。
メモリ自体をクリーンアップすることに加えて、ファームウェアは、ポイズンシグネチャ又はエラーを含むメモリが伝播した任意のロケーションもクリーンアップすることができる。上記で説明したように、幾つかのプロセッサアーキテクチャでは、メモリは、直接読み出されるのではなく、まずプロセッサキャッシュ内に読み込まれ、このプロセッサキャッシュからプロセッサによって読み出される。ポイズンシグネチャがメモリ内のキャッシュラインに存在する場合、そのポイズンシグネチャは、プロセッサキャッシュにも現われる。したがって、ファームウェアは、ポイズンの存在の有無についてプロセッサキャッシュも調べることができ、見つかった場合には、ポイズンを含むキャッシュラインをプロセッサキャッシュからパージすることができる。ファームウェアは、メモリ内のポイズンのクリーンアップを試みる前に、CPUキャッシュの全てをフラッシュすることもできる。
プロセッサキャッシュは、ポイズン又は他のエラーの存在の有無についてチェックされる。なぜならば、欠陥のあるキャッシュラインが、プリフェッチ動作等を通じてプロセッサキャッシュ内にロードされている場合があるが、プロセッサによって実際には消費されていない可能性があるからである。したがって、メモリ及びプロセッサキャッシュ等の、破損したキャッシュラインが存在し得る全てのロケーションを見直すことによって、欠陥のあるキャッシュラインがマシンチェック例外を引き起こしていなかった場合であっても、それらの全てのキャッシュラインを検出することができる。
幾つかの場合には、プロセスをパージすることによる回復が可能でない。例えば、マシンチェック例外を引き起こしたメモリに関連付けられたプロセスがオペレーティングシステムプロセス自体である場合、このプロセスをパージすることは、直ちにシステムクラッシュをもたらす。ポイズンの消費は、システムのクラッシュ以外に選択肢がない場合があるが、多くのオペレーティングシステムは、クラッシュの前にデバッグ情報のログファイルへのダンプを試みる。このデバッグ情報は、クラッシュの前にシステムに起こっていたことを判断するために技術者に有用な場合がある。
用いられる1つの共通の技法は、オペレーティングシステムプロセスのメモリの内容を含むコアファイルをダンプすることである。オペレーティングシステムは、クラッシュの前に、オペレーティングシステムプロセスに関連付けられたメモリを読み出し、メモリの内容のファイルに書き込むことができる。しかしながら、上記と同様に、メモリをダンプするためにメモリにアクセスするにすぎない動作が、追加のマシンチェック例外を引き起こす場合がある。本明細書において説明する技法は、メモリの内容をダンプすることを可能にするように僅かに変更することができる。
オペレーティングシステムは、この場合も、プロセスがパージされようとしている表示と、そのプロセスによって用いられるアドレスの範囲とをファームウェアに送信することができる。一方、この表示は、オペレーティングシステムがエラーからの回復を試行しようとしていないことも含むことができる。この場合、ファームウェアは、メモリの再初期化を試みない場合がある。なぜならば、これは、メモリをファイルにダンプする目的を無効にするからである。逆に、ファームウェアは、メモリアドレスの範囲を調べて、どのアドレスがポイズン又は訂正不能エラーを含むのかを判断することができる。訂正不能エラーを含むメモリロケーションは、オペレーティングシステムに返信することができる。オペレーティングシステムが、メモリの内容のファイルへのダンプを試みるとき、エラーを含むとして示されたメモリロケーションを省略することができ、したがって、追加のマシンチェック例外の生成が防止される。この結果、オペレーティングシステムによって用いられるメモリのダンプは完全なものには満たないが、得られる結果は、デバッグデータが全く作成されないシステムクラッシュよりも優れている。
上記で説明した回復技法に加えて、ファームウェアは、ポイズンを含むと以前判断されたことがあるメモリロケーションの経過を追跡することもできる。例えば、メモリチップが欠陥を有し、したがって、そのチップ上のメモリが用いられるごとにポイズンが連続して生成されるものと仮定する。ポイズンが最初に検出されると、オペレーティングシステムは、プロセスをパージし、メモリを使用状態に戻すことができる(障害は、初期化及び検査を通過することができるタイプのものであると仮定する)。オペレーティングシステムは、そのメモリロケーションを異なるプロセスに割り当てることができ、その結果、再びポイズンが生成される。ファームウェアは、ポイズンを一貫して生成しているメモリロケーションの経過を追跡することができ、それらのロケーションが初期化を通過することができる場合であっても、それらのロケーションを欠陥有りとして示すことができる。
図2は、訂正不能メモリエラーを処理するための高レベル流れ図の一例である。ブロック210において、訂正不能メモリエラーの表示をプロセッサから受信することができる。例えば、マシンチェックアーキテクチャを利用するシステムの場合、この表示は、ポイズンの消費によって引き起こされたマシンチェック例外である場合がある。ブロック220において、訂正不能メモリエラーの通知をオペレーティングシステムに送信することができる。例えば、この通知は、マシンチェック例外とすることができ、この通知は、オペレーティングシステムの例外ハンドラに送信することができる。
ブロック230において、初期化されるメモリアドレスの範囲をオペレーティングシステムから受信することができる。このアドレスの範囲は、上記ブロック210において示された訂正不能メモリエラーのアドレスを含む場合がある。上記で説明したように、メモリアドレスの範囲は、訂正不能メモリエラーを含んだメモリロケーションに関連付けられたプロセスによって用いられるメモリアドレスの範囲である場合がある。
図3は、訂正不能エラーの検出に基づいてメモリを初期化するための高レベル流れ図の一例である。ブロック305において、上記と同様に、訂正不能メモリエラーの表示をプロセッサから受信することができる。ブロック310において、訂正不能メモリエラーの通知をオペレーティングシステムに送信することができる。ブロック315において、オペレーティングシステムが訂正不能メモリエラーから回復することができるか否かを示す表示をオペレーティングシステムから受信することができる。上記で説明したように、回復は、プロセスがパージに成功した場合を含むことができる。
ブロック320において、訂正不能メモリエラーをエラーログにログ記録することができる。このログ記録は、オペレーティングシステムがエラーから回復することができたか否かを含むことができる。上記で説明したように、ファームウェアは、訂正不能メモリエラーの経過を追跡して、物理メモリに関連した問題が存在するか否かを判断することができる。メモリの或る特定の範囲が訂正不能メモリエラーに繰り返し該当する場合、ファームウェアは、物理メモリに関連した問題が存在すると判断することができ、そのメモリをサービスから除去することもできるし、そのメモリの使用を停止するようにOSに伝えることもできる。
ブロック325において、メモリアドレスの範囲をオペレーティングシステムから受信することができる。このメモリアドレスの範囲は、訂正不能メモリエラーのアドレスを含む場合がある。このアドレスの範囲は、訂正不能メモリエラーに起因してパージされたことがあるプロセスによって用いられていたメモリアドレスである場合がある。ブロック330において、少なくともこのメモリアドレスの範囲について、訂正不能メモリエラーの検出を無効化することができる。上記で説明したように、ファームウェアがこのメモリアドレスの範囲のクリーンアップを試みているとき、メモリは、再初期化、検査、及びポイズンのクリアが行われようとしているので、ファームウェアが、ネストされたマシンチェックを行うことは逆効果を招くことになる。
ブロック335において、上記メモリアドレスの範囲を初期化することができる。上記で説明したように、メモリアドレスの範囲を初期化することは、物理メモリ自体を初期化することに加えて、ポイズンが伝播した他の任意のエリアも初期化することを含むことができる。例えば、ポイズンを含むキャッシュラインが、メモリに加えてCPUキャッシュにも存在する場合、メモリの初期化によりシステムからポイズンが除去されるように、そのキャッシュラインをキャッシュからフラッシュすることができる。ブロック340において、メモリアドレスの範囲を検査することができる。メモリアドレスが初期化された後、メモリを検査して、エラーを引き起こしている物理メモリ自体に関連した実際の問題が存在するか否かを判断することができる。
ブロック345において、訂正不能メモリエラーの検出を再有効化することができる。ブロック350において、初期化に成功しなかったメモリアドレスの範囲内にあるメモリアドレスをオペレーティングシステムに通知することができる。初期化の成功は、ブロック340において行われた検査に基づいて判断することができる。オペレーティングシステムは、初期化に成功しなかったメモリを、任意のプロセスによる更なる使用には利用不能であると宣言することができる。ブロック355において、メモリアドレスの範囲の初期化の成功をオペレーティングシステムに通知することができる。したがって、初期化に成功したメモリアドレスをオペレーティングシステムに通信することができる。次に、オペレーティングシステムは、これらのメモリアドレスの範囲を、他のプロセスによる使用に利用可能とすることができる。
図4は、オペレーティングシステムがメモリアドレスの範囲をクリーンアップする高レベル流れ図の一例である。ブロック410において、訂正不能メモリエラーの表示をファームウェアから受信することができる。例えば、この表示は、プロセッサアーキテクチャがマシンチェックを備える場合には、マシンチェック例外とすることができる。ブロック420において、そのアドレス範囲が訂正不能メモリエラーを含むプロセスを回復させることができるか否かを判断することができる。上記で説明したように、回復は、プロセスをパージすることを含むことができる。幾つかの場合には、オペレーティングシステムカーネル等のプロセスは、システムに更なる影響を引き起こすことなくパージすることはできない。
ブロック430において、初期化されるメモリアドレスの範囲をファームウェアに送信することができる。このメモリアドレスの範囲は、訂正不能メモリエラーのアドレスを含む場合がある。上記で説明したように、回復動作は、エラーを含んだメモリロケーションを用いていたプロセスをパージすることとすることができる。回復プロセスの一部は、プロセスによって用いられていた全てのメモリをチェックすることとすることができる。この提供されたメモリアドレスの範囲は、プロセスによって用いられていたメモリの全てを含むことができる。
図5は、訂正不能メモリエラーによって引き起こされる回復可能エラー及び回復不能エラーを処理するための高レベル流れ図の一例である。ブロック505において、訂正不能メモリエラーの表示を、プロセッサ上で実行されているファームウェアから受信することができる。ブロック510において、そのアドレス範囲が訂正不能メモリエラーを含むプロセスを回復させることができるか否かを判断することができる。回復可能なプロセスは、パージすることができるが、それでもシステムの残りの部分は動作し続けることが可能なプロセスとすることができる。例えば、アプリケーションプロセスは、パージすることができるが、それでも他のアプリケーション及びオペレーティングシステム自体は動作し続けることが可能である。一方、オペレーティングシステム自体等の幾つかのプロセスは、パージすることができない場合がある。
ブロック515において、プロセスが回復可能であるか否かを判断することができる。回復可能でない場合、プロセスはブロック545に移動する。このブロックについては、以下で説明する。回復可能である場合、プロセスはブロック520に移動する。ブロック520において、初期化されるメモリアドレスの範囲をファームウェアに送信することができる。この範囲は、訂正不能メモリエラーのアドレスを含む場合がある。ブロック525において、プロセスをパージすることができる。上記で説明したように、プロセスをパージすることは、このプロセスを停止させることと、このプロセスによって用いられていたメモリ等の全てのリソースを解放することとを含むことができる。
ブロック530において、初期化に成功したメモリアドレスの範囲の表示をファームウェアから受信することができる。幾つかの場合には、初期化に成功したメモリアドレスの範囲は、ブロック520において送信されたアドレスの範囲と同じである場合がある。しかしながら、これは、常に当てはまるとは限らない。幾つかの状況では、メモリアドレスの範囲に対するサブセットしか、初期化に成功していない場合がある。ブロック535において、初期化に成功したメモリアドレスの範囲を、使用のために利用可能であるとしてマーキングすることができる。したがって、オペレーティングシステムは、再初期化に成功したメモリを他のプロセスに自由にリアロケートすることができる。ブロック540において、初期化に成功しなかったメモリは、利用不能であるとしてマーキングすることができる。オペレーティングシステムは、利用不能であるとしてマーキングされたメモリのアロケートを試みることはできない。
訂正不能エラーを含んだメモリを用いていたプロセスが回復可能でない場合、プロセスはブロック540に移動する。ブロック540において、その内容がログにダンプされるメモリアドレスの範囲を、ファームウェアが受信することができる。ファームウェア自体は、ダンププロセスを認識しておらず、メモリアドレスの範囲と、プロセスが回復されないとの表示とを単に受信するだけである。ログへのデータの実際のダンプは、オペレーティングシステムによって行われる。
ブロック550において、オペレーティングシステムは、訂正不能メモリエラーを含む範囲内にあるメモリロケーションの表示をファームウェアから受信することができる。換言すれば、オペレーティングシステムは、アクセスされた場合に追加のマシンチェック例外を引き起こすメモリアドレスを受信することができる。ブロック555において、訂正不能メモリエラーを含まないメモリアドレスをログにダンプすることができる。換言すれば、オペレーティングシステムは、ブロック550において、エラーを含むメモリロケーションの通知を受け、ブロック555において、エラーを含まないロケーションのみがログにダンプされる。したがって、ダンプするためにメモリ内のデータを取り出すプロセスは、エラーを有するメモリロケーションがダンプされないので、追加のマシンチェック例外を引き起こさない。
図6は、ポイズン消費を検出するための高レベル流れ図の一例である。ブロック610において、メモリロケーションにアクセスすることができる。このアクセスは、メモリコントローラ、IOデバイス、又はメモリにアクセスすることができる他の任意の要素によることができる。ブロック620において、このメモリロケーションがポイズンを含むと判断される場合がある。幾つかの場合には、ポイズンは、そのメモリロケーションに既に存在している場合がある。他の場合には、メモリロケーションがアクセスされたとき、メモリにエラーが存在すると判断される場合がある。例えば、エラーは、ECCによって検出することができる。エラーを訂正することができない場合、ポイズンシグネチャをそのメモリロケーションに配置することができる。
ブロック630において、オペレーティングシステムは、ポイズンの消費の通知を受けることができる。例えば、プロセッサは、メモリロケーションの利用(例えば、消費)を試み、そのメモリロケーションがポイズンを含むことを検出すると、マシンチェック例外を引き起こすことができる。このマシンチェック例外は、通常はファームウェアを通じてオペレーティングシステムに伝播させることができる。
ブロック640において、ポイズンを含むメモリロケーションに関連付けられたプロセスによって占有されるメモリアドレスの範囲をオペレーティングシステムから受信することができる。オペレーティングシステムは、プロセスをパージして、ポイズンの消費から回復している場合があり、したがって、他のプロセスのためのメモリの再利用を試行する前に、プロセスによって用いられていたメモリの全てをチェックする必要がある。ブロック650において、訂正不能メモリエラーを含むメモリアドレスの範囲内にあるメモリアドレスを判断することができる。
図7は、ポイズンを検出し、ポイズンから回復するための高レベル流れ図の一例である。ブロック705において、上記と同様に、メモリロケーションにアクセスすることができる。ブロック710において、このメモリロケーションのアクセスは、マシンチェック例外を引き起こす場合がある。ブロック715おいて、このメモリロケーションがポイズンを含み、プロセッサがポイズンを消費したことから、マシンチェック例外が引き起こされたと判断することができる。ブロック720において、オペレーティングシステムは、ポイズンの消費の通知を受けることができる。この通知は、プロセッサからファームウェアを通じてオペレーティングシステムにマシンチェック例外を渡すことによって行うことができる。次に、オペレーティングシステムは、適切な回復を行うように試みることができる。
ブロック725において、メモリロケーションに関連付けられたプロセスによって占有されるメモリアドレスの範囲をオペレーティングシステムから受信することができる。上記で説明したように、オペレーティングシステムは、プロセスのパージ又はこのプロセスによって用いられているメモリのダンプを行いたい場合がある。メモリアドレスの範囲は、プロセスによって用いられているメモリを含む場合がある。ブロック730において、ポイズン監視を無効化することができる。上記で説明したように、メモリ及びメモリをチェックするのに用いられるECCビットを再初期化するプロセス又はメモリ自体を検査するプロセスは、追加のポイズン生成及び更なるマシンチェック例外を引き起こす場合がある。ポイズン監視を無効化することによって、追加のマシンチェック例外を生成することなく回復動作を進めることを可能にすることができる。
ブロック735において、エラーが回復可能であるか否かを判断することができる。上記で説明したように、回復可能なエラーは、プロセスをパージすることができるとともにメモリを再生することができるエラーである。回復不能なエラーは、プロセスがオペレーティングシステム自体であるとき等、プロセスをパージすることができないエラーである。
プロセスが回復可能である場合、プロセスはブロック750に移動する。このブロックについては、以下で説明する。そうでない場合、プロセスはブロック740に移動する。ブロック740において、メモリアドレスの範囲内にあるメモリアドレスを検査して、どのアドレスが訂正不能エラーを含むのかを判断することができる。これらのメモリロケーションにアクセスすることは、望ましくない場合がある。なぜならば、このアクセス自体が、追加のマシンチェック例外を引き起こす場合があるからである。ブロック745において、訂正不能エラーを含むメモリアドレスの範囲をオペレーティングシステムに送信することができる。次に、オペレーティングシステムは、プロセスによって用いられているメモリをダンプするときにこの情報を利用して、追加のマシンチェック例外を引き起こすロケーションへのアクセスを回避することができる。
プロセスが回復可能である場合、プロセスはブロック750に移動する。ブロック750において、メモリアドレスの範囲内にあるメモリアドレスを初期化することができる。上記で説明したように、メモリアドレスを初期化することは、物理メモリを初期化することを含むことができる。加えて、メモリ内の値が伝播されている場合があるキャッシュ等のロケーションもパージすることができる。ブロック755において、メモリアドレスの範囲を検査して、初期化が成功したか否かを判断することができる。
ブロック760において、初期化に成功しておらず、したがって、訂正不能メモリエラーを含む場合があるメモリアドレスの範囲内にあるメモリアドレスを判断することができる。ブロック765において、初期化に成功したメモリアドレスの範囲をオペレーティングシステムに送信することができる。次に、オペレーティングシステムは、初期化に成功したメモリを、使用のために利用可能とすることができる。加えて、オペレーティングシステムは、初期化に成功しなかったメモリロケーションを、その後の使用には利用不能にすることができる。

Claims (15)

  1. 訂正不能メモリエラーの表示をプロセッサから受信するステップと、
    前記訂正不能メモリエラーの通知をオペレーティングシステムに送信するステップと、
    初期化するメモリアドレスの範囲を前記オペレーティングシステムから受信するステップであって、該アドレスの範囲は、前記訂正不能メモリエラーのアドレスを含んでいるステップと
    を含む、方法。
  2. 前記オペレーティングシステムが前記訂正不能メモリエラーから回復したか否かを示す表示を前記オペレーティングシステムから受信するステップと、
    前記訂正不能メモリエラーをエラーログにログ記録するステップであって、該ログ記録は、前記オペレーティングシステムが前記エラーから回復したか否かを含んでいるステップと
    を更に含む、請求項1に記載の方法。
  3. 前記訂正不能メモリエラーの前記表示は、前記プロセッサがポイズンを消費することによって引き起こされたプロセッサマシンチェック例外である、請求項1に記載の方法。
  4. 少なくとも前記メモリアドレスの範囲について訂正不能メモリエラーの検出を無効化するステップと、
    前記メモリアドレスの範囲を初期化するステップと、
    前記メモリアドレスの範囲を検査するステップと、
    訂正不能メモリエラーの検出を再有効化するステップと
    を更に含む、請求項1に記載の方法。
  5. 前記メモリアドレスの範囲の初期化の成功を前記オペレーティングシステムに通知するステップを更に含む、請求項4に記載の方法。
  6. 前記メモリアドレスの範囲の前記検査の結果に基づいて、初期化に成功しなかった前記メモリアドレスの範囲内にあるメモリアドレスを前記オペレーティングシステムに通知するステップを更に含む、請求項4に記載の方法。
  7. 訂正不能メモリエラーの表示を、プロセッサ上で実行されているファームウェアから受信するステップと、
    アドレス範囲が前記訂正不能メモリエラーを含むプロセスを回復させることができるか否かを判断するステップと、
    初期化されるメモリアドレスの範囲を前記ファームウェアに送信するステップであって、該範囲は、前記訂正不能メモリエラーのアドレスを含んでいるステップと
    を含む、方法。
  8. 前記プロセスを回復させることができる場合、前記方法は前記プロセスをパージするステップを更に含む、請求項7に記載の方法。
  9. 初期化に成功した前記メモリアドレスの範囲の表示を前記ファームウェアから受信するステップと、
    初期化に成功したメモリアドレスを、使用のために利用可能であるとしてマーキングするステップと、
    初期化に成功しなかったメモリアドレスを利用不能であるとしてマーキングするステップと
    を更に含む、請求項8に記載の方法。
  10. 前記プロセスを回復させることができない場合、前記方法は、
    内容がログにダンプされるメモリアドレスの範囲を前記ファームウェアに送信するステップと、
    訂正不能エラーを含む前記範囲内のメモリロケーションの表示を前記ファームウェアから受信するステップと、
    訂正不能メモリエラーを含まない前記メモリアドレスの範囲内にある前記メモリアドレスを前記ログにダンプするステップと
    を更に含む、請求項7に記載の方法。
  11. 前記訂正不能メモリエラーの前記表示は、前記プロセッサがポイズンを消費することによって引き起こされるプロセッサマシンチェック例外である、請求項7に記載の方法。
  12. 非一時的プロセッサ可読媒体であって、プロセッサによって実行されると、該プロセッサに、
    メモリロケーションにアクセスさせ、
    前記メモリロケーションがポイズンを含むと判断させ、
    ポイズンの消費をオペレーティングシステムへ通知させ、
    前記メモリロケーションに関連付けられたプロセスによって占有されたメモリアドレスの範囲を前記オペレーティングシステムから受信させ、
    訂正不能メモリエラーを含む前記メモリアドレスの範囲内にあるメモリアドレスを判断させる
    一組のプロセッサ実行可能命令を含んでいる、非一時的プロセッサ可読媒体。
  13. 前記プロセッサに、
    ポイズン監視を無効化させ、
    前記メモリアドレスの範囲内にあるメモリアドレスを初期化させ、
    前記メモリアドレスの範囲内にある前記メモリアドレスを検査して、初期化の成功を判断させ、
    初期化に成功した前記メモリアドレスの範囲を前記オペレーティングシステムへ送信させる
    命令を更に含む、請求項12に記載の媒体。
  14. 前記プロセッサに、
    ポイズン監視を無効化させ、
    前記メモリアドレスの範囲内にあるメモリアドレスを検査して、どのアドレスが訂正不能エラーを含むのかを判断させ、
    訂正不能エラーを含む前記メモリアドレスの範囲を前記オペレーティングシステムへ送信させる、
    命令を更に含む、請求項12に記載の媒体。
  15. 前記プロセッサは、マシンチェック例外を引き起こすポイズンの消費によって該ポイズンを検出する、請求項12に記載の媒体。
JP2015533032A 2012-09-25 2012-09-25 訂正不能メモリエラー処理方法及びその可読媒体 Expired - Fee Related JP5965076B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/057107 WO2014051550A1 (en) 2012-09-25 2012-09-25 Notification of address range including non-correctable error

Publications (2)

Publication Number Publication Date
JP2015529927A true JP2015529927A (ja) 2015-10-08
JP5965076B2 JP5965076B2 (ja) 2016-08-03

Family

ID=50388759

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015533032A Expired - Fee Related JP5965076B2 (ja) 2012-09-25 2012-09-25 訂正不能メモリエラー処理方法及びその可読媒体

Country Status (6)

Country Link
US (1) US9804917B2 (ja)
EP (1) EP2901281B1 (ja)
JP (1) JP5965076B2 (ja)
CN (1) CN104685474B (ja)
TW (1) TWI543179B (ja)
WO (1) WO2014051550A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652328B2 (en) * 2014-05-12 2017-05-16 International Business Machines Corporation Restoring an application from a system dump file
US9389973B2 (en) * 2014-05-30 2016-07-12 Oracle International Corporation Memory error propagation for faster error recovery
US10176043B2 (en) 2014-07-01 2019-01-08 Hewlett Packard Enterprise Development Lp Memory controller
GB2528901B (en) * 2014-08-04 2017-02-08 Ibm Uncorrectable memory errors in pipelined CPUs
CN104461759B (zh) * 2014-11-27 2018-05-11 杭州华为企业通信技术有限公司 一种内存多位错误的处理方法及装置
US9934117B2 (en) * 2015-03-24 2018-04-03 Honeywell International Inc. Apparatus and method for fault detection to ensure device independence on a bus
US20190034252A1 (en) * 2017-07-28 2019-01-31 Hewlett Packard Enterprise Development Lp Processor error event handler
DE102020121109A1 (de) 2019-09-20 2021-03-25 Samsung Electronics Co., Ltd. Speicher-controller, speichervorrichtungen und betriebsverfahren der speichervorrichtungen
US11385974B1 (en) 2021-03-01 2022-07-12 Google Llc Uncorrectable memory error recovery for virtual machine hosts
US11947420B2 (en) 2021-12-15 2024-04-02 Google Llc Hardware memory error tolerant software system
CN114518972A (zh) * 2022-02-14 2022-05-20 海光信息技术股份有限公司 内存错误处理方法、装置、内存控制器及处理器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265876A (ja) * 1992-03-19 1993-10-15 Fujitsu Ltd エラー報告処理方式
JP2000011677A (ja) * 1998-06-25 2000-01-14 Tokyo Electron Ltd フラッシュメモリシステム
JP2010039895A (ja) * 2008-08-07 2010-02-18 Hitachi Ltd 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム
US20110066899A1 (en) * 2009-09-17 2011-03-17 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of performing erase refresh operation
JP2011233007A (ja) * 2010-04-28 2011-11-17 Hitachi Ltd 障害処理方法および計算機
US20120137168A1 (en) * 2010-11-26 2012-05-31 Inventec Corporation Method for protecting data in damaged memory cells by dynamically switching memory mode

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19861088A1 (de) * 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6405322B1 (en) 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US6594785B1 (en) * 2000-04-28 2003-07-15 Unisys Corporation System and method for fault handling and recovery in a multi-processing system having hardware resources shared between multiple partitions
JP3888631B2 (ja) * 2000-11-02 2007-03-07 株式会社ルネサステクノロジ 半導体メモリおよび半導体メモリの検査方法並びに製造方法
US7734966B1 (en) * 2002-12-26 2010-06-08 Marvell International Ltd. Method and system for memory testing and test data reporting during memory testing
US20050015672A1 (en) * 2003-06-25 2005-01-20 Koichi Yamada Identifying affected program threads and enabling error containment and recovery
US7539909B2 (en) * 2003-09-30 2009-05-26 Intel Corporation Distributed memory initialization and test methods and apparatus
US7353433B2 (en) 2003-12-08 2008-04-01 Intel Corporation Poisoned error signaling for proactive OS recovery
US7376887B2 (en) * 2003-12-22 2008-05-20 International Business Machines Corporation Method for fast ECC memory testing by software including ECC check byte
US7594135B2 (en) 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US7373558B2 (en) 2004-09-23 2008-05-13 Intel Corporation Vectoring process-kill errors to an application program
KR101174936B1 (ko) * 2004-10-14 2012-08-17 주식회사 아도반테스토 오류 정정 부호가 부가된 데이터열을 기억하는 피시험메모리를 시험하는 시험 장치 및 시험 방법
US7546487B2 (en) 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US20070088988A1 (en) 2005-10-14 2007-04-19 Dell Products L.P. System and method for logging recoverable errors
US20070118778A1 (en) * 2005-11-10 2007-05-24 Via Telecom Co., Ltd. Method and/or apparatus to detect and handle defects in a memory
US7339844B2 (en) * 2006-02-17 2008-03-04 Verigy (Singapore) Pte. Ltd. Memory device fail summary data reduction for improved redundancy analysis
US7913147B2 (en) * 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
US7568135B2 (en) * 2006-05-15 2009-07-28 Apple Inc. Use of alternative value in cell detection
KR100736103B1 (ko) * 2006-06-27 2007-07-06 삼성전자주식회사 비휘발성 메모리, 상기 비휘발성 메모리의 데이터 유효성을판단하는 장치 및 방법
US7607060B2 (en) * 2006-09-12 2009-10-20 International Business Machines Corporation System and method for performing high speed memory diagnostics via built-in-self-test
JP5177991B2 (ja) * 2006-10-25 2013-04-10 株式会社東芝 不揮発性半導体記憶装置
US20080294951A1 (en) * 2007-05-01 2008-11-27 Ahmad Mustafa S Methods and devices for testing computer memory
US7783919B2 (en) * 2007-09-12 2010-08-24 Dell Products, Lp System and method of identifying and storing memory error locations
JP4617405B2 (ja) * 2008-02-05 2011-01-26 富士通株式会社 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム
CN101599305B (zh) 2008-06-04 2013-03-27 威刚科技股份有限公司 具有数据修复功能的储存系统及其数据修复方法
US8122308B2 (en) 2008-06-25 2012-02-21 Intel Corporation Securely clearing an error indicator
US8001432B2 (en) * 2008-11-20 2011-08-16 Lsi Corporation Uninitialized memory detection using error correction codes and built-in self test
JP4448895B1 (ja) * 2009-03-10 2010-04-14 株式会社アドバンテスト 試験装置および試験方法
US8166338B2 (en) * 2009-06-04 2012-04-24 International Business Machines Corporation Reliable exception handling in a computer system
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
US8327228B2 (en) * 2009-09-30 2012-12-04 Intel Corporation Home agent data and memory management
KR101603099B1 (ko) * 2009-10-01 2016-03-28 삼성전자주식회사 불안정 메모리 셀 산포를 검출하는 메모리 시스템 및 상기 불안정 메모리 셀 산포 검출방법
US8473809B2 (en) * 2009-11-20 2013-06-25 Sandisk Technologies Inc. Data coding for improved ECC efficiency
KR101090394B1 (ko) 2009-12-24 2011-12-07 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US8327226B2 (en) * 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
US8848421B2 (en) * 2010-03-30 2014-09-30 Panasonic Corporation Forming method of performing forming on variable resistance nonvolatile memory element, and variable resistance nonvolatile memory device
US8874868B2 (en) * 2010-05-19 2014-10-28 Cleversafe, Inc. Memory utilization balancing in a dispersed storage network
US9063836B2 (en) * 2010-07-26 2015-06-23 Intel Corporation Methods and apparatus to protect segments of memory
US8990660B2 (en) * 2010-09-13 2015-03-24 Freescale Semiconductor, Inc. Data processing system having end-to-end error correction and method therefor
US8572445B2 (en) * 2010-09-21 2013-10-29 Freescale Semiconductor, Inc. Non-volatile memory (NVM) with imminent error prediction
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8289773B2 (en) * 2010-11-09 2012-10-16 Freescale Semiconductor, Inc. Non-volatile memory (NVM) erase operation with brownout recovery technique
TWI459393B (zh) * 2011-01-19 2014-11-01 Phison Electronics Corp 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置
US8484542B2 (en) * 2011-02-08 2013-07-09 Sandisk Technologies Inc. Data recovery using additional error correction coding data
US8671309B2 (en) * 2011-07-01 2014-03-11 Intel Corporation Mechanism for advanced server machine check recovery and associated system software enhancements
US8745323B2 (en) * 2011-09-01 2014-06-03 Dell Products L.P. System and method for controller independent faulty memory replacement
US8694855B1 (en) * 2011-11-02 2014-04-08 Pmc-Sierra Us, Inc. Error correction code technique for improving read stress endurance
US8898408B2 (en) * 2011-12-12 2014-11-25 Dell Products L.P. Memory controller-independent memory mirroring
US8811074B2 (en) * 2012-04-03 2014-08-19 Seagate Technology Llc Parametric tracking to manage read disturbed data
US9003224B2 (en) * 2012-04-25 2015-04-07 Western Digital Technologies, Inc. Managing unreliable memory in data storage systems
US8566671B1 (en) * 2012-06-29 2013-10-22 Sandisk Technologies Inc. Configurable accelerated post-write read to manage errors
KR102028128B1 (ko) * 2012-08-07 2019-10-02 삼성전자주식회사 불휘발성 랜덤 액세스 메모리 및 낸드 플래시 메모리를 포함하는 메모리 시스템의 동작 방법
US8966343B2 (en) * 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
KR101961318B1 (ko) * 2012-09-07 2019-07-17 삼성전자주식회사 중앙처리장치에서의 점유시간을 최소화하는 방어코드 운영 방법 및 그에 따른 메모리 시스템
US9378829B2 (en) * 2013-02-07 2016-06-28 Cypress Semiconductor Corporation Non-volatile memory device with an EPLI comparator
WO2014193412A1 (en) * 2013-05-31 2014-12-04 Hewlett-Packard Development Company, L.P. Memory error determination
US9323607B2 (en) * 2014-04-29 2016-04-26 Seagate Technology Llc Data recovery once ECC fails to correct the data

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265876A (ja) * 1992-03-19 1993-10-15 Fujitsu Ltd エラー報告処理方式
JP2000011677A (ja) * 1998-06-25 2000-01-14 Tokyo Electron Ltd フラッシュメモリシステム
JP2010039895A (ja) * 2008-08-07 2010-02-18 Hitachi Ltd 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム
US20110066899A1 (en) * 2009-09-17 2011-03-17 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of performing erase refresh operation
JP2011233007A (ja) * 2010-04-28 2011-11-17 Hitachi Ltd 障害処理方法および計算機
US20120137168A1 (en) * 2010-11-26 2012-05-31 Inventec Corporation Method for protecting data in damaged memory cells by dynamically switching memory mode

Also Published As

Publication number Publication date
CN104685474B (zh) 2018-04-20
US9804917B2 (en) 2017-10-31
EP2901281A1 (en) 2015-08-05
TWI543179B (zh) 2016-07-21
EP2901281A4 (en) 2016-06-22
US20150234702A1 (en) 2015-08-20
WO2014051550A1 (en) 2014-04-03
CN104685474A (zh) 2015-06-03
TW201415476A (zh) 2014-04-16
EP2901281B1 (en) 2017-11-01
JP5965076B2 (ja) 2016-08-03

Similar Documents

Publication Publication Date Title
JP5965076B2 (ja) 訂正不能メモリエラー処理方法及びその可読媒体
US10789117B2 (en) Data error detection in computing systems
US6516429B1 (en) Method and apparatus for run-time deconfiguration of a processor in a symmetrical multi-processing system
EP1659494B1 (en) Method and apparatus for classifying memory errors
US8140908B2 (en) System and method of client side analysis for identifying failing RAM after a user mode or kernel mode exception
US10141955B2 (en) Method and apparatus for selective and power-aware memory error protection and memory management
US6823476B2 (en) Mechanism to improve fault isolation and diagnosis in computers
US20080270842A1 (en) Computer operating system handling of severe hardware errors
EP2329384B1 (en) Memory management techniques selectively using mitigations to reduce errors
US7430683B2 (en) Method and apparatus for enabling run-time recovery of a failed platform
CN113568777B (zh) 一种故障处理方法、装置、网络芯片、设备及存储介质
JP2008523513A (ja) エラーハンドラの実行中に発生するエラーを処理する方法
KR20220008237A (ko) 임시 스토리지에 대한 데이터 복원을 위한 시스템 및 장치
Kudrjavets et al. When malloc () Never Returns NULL—Reliability as an Illusion
US7895493B2 (en) Bus failure management method and system
KR101539933B1 (ko) Cpu 행업 시 로그를 생성하는 방법 및 장치
US20230350786A1 (en) Core dump in multiprocessor device
JP5751626B2 (ja) メモリ試験装置、メモリ試験方法およびメモリ試験プログラム
JP5381151B2 (ja) 情報処理装置、バス制御回路、バス制御方法及びバス制御プログラム
JP2016076152A (ja) エラー検出システム、エラー検出方法およびエラー検出プログラム
JP6334969B2 (ja) 演算処理装置、制御方法、及び、プログラム
CN117170806A (zh) 虚拟机运行稳定性增强的方法、装置、电子设备及介质
Neuhalfen et al. Proactive memory error detection for the Linux kernel

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150522

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160513

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: 20160603

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160630

R150 Certificate of patent or registration of utility model

Ref document number: 5965076

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees