(57)【要約】      （修正有）【課題】システムにおけるメモリ冗長性の制御を可能にする技術を提供する。【解決手段】第１メモリノードに格納されている情報を第２メモリノードにマイグレートするステップと、マイグレートするステップの終了前に、第１メモリノードから第２メモリノードにマイグレートされる情報の情報量を示すため、第１メモリノードに関する第１メモリコントローラの冗長メモリアパーチャストレージを更新するステップと、メモリマイグレーションの終了前にオペレーティングシステムにより制御されるスレッドを実行し、第１メモリノードに対するメモリアクセス中に生じたエラーが第２メモリノードにマイグレートされた第１メモリノードの領域において発生したものである場合、第２メモリノードへのメモリアクセスリクエストをリトライし、第１メモリノードの領域において発生したものでない場合、訂正不可なメモリエラーを通知するステップとを有する。【選択図】図１
2011134327.tif 000002
【特許請求の範囲】
【請求項１】
システムの第１メモリノードに格納されている情報を前記システムの第２メモリノードにマイグレートするステップと、
前記情報をマイグレートするステップの終了前に、前記第１メモリノードから前記第２メモリノードにマイグレートされる前記情報の情報量を示すため、前記第１メモリノードに関する第１メモリコントローラの冗長メモリアパーチャストレージを更新するステップと、
前記メモリマイグレーションの終了前に前記システムのプロセッサ上でオペレーティングシステム（ＯＳ）により制御されるスレッドを実行し、前記ＯＳにより制御されるスレッドの前記第１メモリノードに対するメモリアクセスリクエスト中に生じたエラーが前記第２メモリノードにマイグレートされた前記第１メモリノードの領域において発生したものか判断し、前記第１メモリノードの領域において発生したものである場合、前記第２メモリノードへのメモリアクセスリクエストをリトライし、前記第１メモリノードの領域において発生したものでない場合、訂正不可なメモリエラーを通知するステップと、
を有する方法。
【請求項２】
前記第１メモリノードのエラー閾値に到達したという判定に応答して、前記情報のマイグレーションをトリガするステップをさらに有する、請求項１記載の方法。
【請求項３】
スライスが前記ＯＳにより共有されるタイムスライス方式によりシステム管理モードにより前記情報のマイグレーションを実行するステップをさらに有し、
前記ＯＳにより制御されるスレッドは、前記ＯＳにより共有されるスライスの少なくとも１つにおいて実行される、請求項１記載の方法。
【請求項４】
前記システム管理モードにより前記情報のマイグレートするとき、各タイムスライスを抜け出す前に前記冗長メモリアパーチャストレージを更新するステップをさらに有する、請求項３記載の方法。
【請求項５】
前記メモリアクセスリクエストに関するアドレスが前記第１メモリコントローラの冗長メモリアパーチャストレージに格納されているアドレスより小さい場合、前記エラーが前記第１メモリノードのマイグレートされた領域で発生したと判断するステップをさらに有する、請求項１記載の方法。
【請求項６】
前記第１メモリコントローラの第１ホームエージェントからのメモリアクセスリクエストを前記第２メモリノードに関する第２メモリコントローラの第２ホームエージェントに送信し、前記第２メモリコントローラから前記第１ホームエージェントの要求されたデータを受信し、前記メモリアクセスリクエストを完了させるため、前記要求されたデータを要求元に転送するステップをさらに有する、請求項５記載の方法。
【請求項７】
前記メモリアクセスリクエストが完了したことに応答して、訂正されたメモリエラーをログに書き込むステップをさらに有する、請求項６記載の方法。
【請求項８】
実行されるとシステムに、
メモリの非ミラーリングメモリ領域に格納されている第１メモリページが第１期間中に第１閾値回数より多くアクセスされたことを決定させ、
前記第１メモリページの識別子をミラーリングメモリ領域にマイグレートされるべきページのリストに挿入させ、
前記第１メモリページを前記非ミラーリングメモリ領域から前記ミラーリングメモリ領域にリマッピングさせる、
命令を有するマシーンアクセス可能な記憶媒体からなる物。
【請求項９】
前記第１メモリページを前記ミラーリングメモリ領域にリマッピングする前に、前記システムにまず第２メモリページを前記ミラーリングメモリ領域から前記非ミラーリングメモリ領域にリマッピングすることを可能にする命令をさらに有する、請求項８記載の物。
【請求項１０】
前記第２メモリページは、前記第１期間中に前記第１メモリページより頻繁にはアクセスされない、請求項９記載の物。
【請求項１１】
第２メモリページの識別子が前記ミラーリングメモリ領域からマイグレートされるべきページのリスト内にある場合、前記第１メモリページを前記ミラーリングメモリ領域にリマッピングする前に、前記システムにまず前記第２メモリページを前記ミラーリングメモリ領域から前記非ミラーリングメモリ領域にリマッピングすることを可能にする命令をさらに有する、請求項８記載の物。
【請求項１２】
前記第２メモリページが前記第１期間中に第２閾値回数未満しかアクセスされなかったとき、前記システムが前記第２メモリページの識別子を前記ミラーリングメモリ領域からマイグレートされるべきページのリストに挿入することを可能にする命令をさらに有する、請求項１１記載の物。
【請求項１３】
前記システムが前記第１期間中に前記第１メモリページがアクセスされた回数のカウントを維持することを可能にする命令をさらに有する、請求項８記載の物。
【請求項１４】
前記第１メモリページのアクセスインジケータが設定されると、前記システムが前記第１メモリページのカウントを更新することを可能にする命令をさらに有する、請求項１３記載の物。
【請求項１５】
前記システムがオペレーティングシステム（ＯＳ）のスレッドを用いて前記第１メモリページの識別子を挿入し、前記第１メモリページをリマッピングすることを可能にする命令をさらに有する、請求項８記載の物。
【請求項１６】
前記システムが
前記ミラーリングメモリ領域に格納されている対応するメモリページの識別子を格納するため、複数のエントリを有する第１リストを維持し、
前記非ミラーリングメモリ領域に格納されている対応するメモリページの識別子を格納するため、複数のエントリを有する第２リストを維持する、
ことを可能にする命令をさらに有する、請求項８記載の物。
【請求項１７】
前記システムが、前記対応するメモリページのアクセスインジケータの状態に基づき、前記第１期間の終わりに前記第１リストの各エントリを更新することを可能にする命令をさらに有する、請求項１６記載の物。
【請求項１８】
各プロセッサが少なくとも１つの他のプロセッサに接続され、さらに対応するプロセッサにローカルに接続されるシステムの一部に接続される複数のプロセッサと、
前記複数のプロセッサに接続されるシステムメモリであって、第１プロセッサに接続される前記システムメモリの第１部分が第２プロセッサに接続される前記システムメモリの第２部分により部分的にミラーリングされるパーシャルミラーリング構成によるシステムメモリと、
を有するシステムであって、
前記システムメモリは、当該システムに非ミラーリングメモリ領域に格納されている第１メモリページがホットページであると決定し、前記第１メモリページを前記非ミラーリングメモリ領域から前記第１部分に動的にリマッピングすることを可能にする命令を有するシステム。
【請求項１９】
前記システムが前記第１メモリページの識別子を前記第１部分にマイグレートされるページのリストに挿入することを可能にする命令をさらに有する、請求項１８記載のシステム。
【請求項２０】
前記第１メモリページを前記第１部分にリマッピングする前に、前記システムがまず第２メモリページを前記第１部分から前記非ミラーリングメモリ領域にリマッピングすることを可能にする命令をさらに有し、
前記第２メモリページは、第１期間中に前記第１メモリページより頻繁にはアクセスされない、請求項１８記載のシステム。
【請求項２１】
前記第１メモリページのアクセスインジケータが設定されると、前記システムが前記メモリページがアクセスされた回数のカウントを更新することを可能にする命令をさらに有する、請求項２０記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムにおけるメモリ冗長性の制御に関する。
【背景技術】
【０００２】
今日のユビキタスサーバの世界では、良好なサーバ信頼性と稼働時間とを維持することがほとんど必須なものとなっている。大きなシステム稼働時間を維持するため、システム設計者は、システム全体の信頼性と利用性とを向上させるため、信頼性（ｒｅｌｉａｂｉｌｉｔｙ）、利用性（ａｖａｉｌａｂｉｌｉｔｙ）、サービス可能性（ｓｅｒｖｉｃｅａｂｉｌｉｔｙ）、管理性（ｍａｎａｇｅａｂｉｌｉｔｙ）の各特徴（ＲＡＳＭ）を構築する。このため、システム階層の各レベルにおいて用いられる様々な程度の冗長性、誤り訂正、誤り検出及び誤り封じ込め技術が通常見つけられる。最も一般的なタイプのシステム故障の１つは、システムメモリエラーに起因する。このため、メモリサブシステム（特に、ＤＩＭＭ（Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）は、これについて注目を受けている。
【０００３】
現在のメモリはシングル及びダブルビットエラーを検出及び／又は訂正するため、誤り訂正符号（ＥＣＣ）を利用する。メモリミラーリング及びメモリマイグレーションなどの技術が、メモリエラーによるシステム故障の確率を低下させるのに利用される。ミラーリングは、典型的には、基礎となるオペレーティングシステム／バーチャルマシーンモニタ（ＯＳ／ＶＭＭ）にかなり透過な方法によりメモリ領域全体に完全な冗長性を提供するシステムハードウェア及びファームウェアによって統計的に実行される。しかしながら、それはあまりコスト効果的なものでなく、極めてハイエンドでミッションクリティカルなシステムにのみ利用される傾向がある。これは、効果的な利用可能なメモリが、同じ大きさの利用可能なメモリの電力消費が効果的に２倍になる間に約１／２に低下するためである。また、メモリのコストはハードウェアコストの全体の大きなパーセンテージとなるため、冗長性のためにそれを２倍にすることはまた、広範な採用のための実際的なチャレンジをもたらす。
【０００４】
ミッションクリティカルなサーバでは、システムは、サーバが９９．９９９％の実行稼働時間を達成することが可能となるように、シャットダウン又は動作状態の欠落を受けてはならない。メモリマイグレーションは、メモリミラーリプレースに応答して又はコントローラレベルのメモリスペアリング処理中にトリガされる他のプラットフォームＲＡＳフローである。メモリミラーリプレースメントのため、メモリノードＸとＹとが、双方とも同じデータを格納するという意味で、ＸがマスタとしてＹがスレーブとしてのミラーペアとして設定されると仮定する。様々な理由のため、システムソフトウェアは、ミラーリングを中止し、マスタをパワーダウンし、管理者にマスタのメモリノードをリプレースさせることが可能である。リプレースされると、マスタとスレーブとのメモリコンテンツは再同期可能である。この処理は、メモリマイグレーション（ノードＹに格納されている情報がノードＸにコピーされる）を介して実行される。コントローラレベルのメモリスペアリングでは、非ミラーリングコンフィギュレーションであるスペアのメモリノードがまた、システムに存在可能である。このスペアノードは、他のノードが故障した場合に、当該ノードの“スペア”となりうる。この場合、差し替えられるメモリノードのコンテンツは、メモリマイグレーションを介しスペアノードに複製される。
【０００５】
メモリミラーリングモードでは、メモリリードリクエストはマスタに向かい、メモリライトリクエストはマスタとスレーブの双方に向かう。マスタ上に訂正不可な誤りがある場合、スレーブはリクエストを実行する。基本的に、スレーブは正確なデータのコピーを有し、冗長性を提供する。マイグレーションの場合、すべてのリードリクエストはマスタに向かい、ライトリクエストはミラーリングと同様にマスタとスレーブの双方に向かう。しかしながら、マイグレーション処理中にマスタに訂正不可な誤りがある場合、スレーブは利用可能なデータを有さないため、当該リードリクエストを実行せず、致命的なエラーを引き起こし、システムをダウンさせる。大きなメモリコンフィギュレーションについて、メモリマイグレーションはかなりの時間がかかりうる。マイグレーションイベントを引き起こす訂正可能なエラーをすでに受けたマスタが訂正不可なエラーを確認する確率は妥当なものとなり、マイグレーションモードでは、このような訂正不可なエラーはシステムをクラッシュさせることになる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、システムにおけるメモリ冗長性の制御を可能にする技術を提供することである。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明の一特徴は、システムの第１メモリノードに格納されている情報を前記システムの第２メモリノードにマイグレートするステップと、前記情報をマイグレートするステップの終了前に、前記第１メモリノードから前記第２メモリノードにマイグレートされる前記情報の情報量を示すため、前記第１メモリノードに関する第１メモリコントローラの冗長メモリアパーチャストレージを更新するステップと、前記メモリマイグレーションの終了前に前記システムのプロセッサ上でオペレーティングシステム（ＯＳ）により制御されるスレッドを実行し、前記ＯＳにより制御されるスレッドの前記第１メモリノードに対するメモリアクセスリクエスト中に生じたエラーが前記第２メモリノードにマイグレートされた前記第１メモリノードの領域において発生したものか判断し、前記第１メモリノードの領域において発生したものである場合、前記第２メモリノードへのメモリアクセスリクエストをリトライし、前記第１メモリノードの領域において発生したものでない場合、訂正不可なメモリエラーを通知するステップとを有する方法に関する。
【発明の効果】
【０００８】
本発明によると、システムにおけるメモリ冗長性の制御を可能にする技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の実施例による方法のフロー図である。
【図２】図２は、本発明の一実施例による２つのソケットに関連付けされたメモリのブロック図である。
【図３】図３は、本発明の実施例によるソケットの間の通信のブロック図である。
【図４】図４は、本発明の一実施例によるシステムのブロック図である。
【図５】図５は、本発明の実施例によるデータをミラーリングメモリ領域に動的にリマッピングするハイレベルな方法のフロー図である。
【図６】図６は、本発明の一実施例によるミラーリングメモリ領域への挿入用のページを選択する一例となる方法のフロー図である。
【図７】図７は、本発明の一実施例によるページのマイグレーションを実行する方法のフロー図である。
【図８】図８は、本発明の一実施例によるリマップ処理のフロー図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて本発明の実施の形態を説明する。
【００１１】
各種実施例では、マイグレーション処理中、スーパーバイザソフトウェア（ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）など）が、マスタがマイグレーションモード中に訂正不可なエラーを被った場合、メモリマイグレーションの実行中にアクセスリクエストをスレーブメモリノードが処理することを可能にするため、システムハードウェアとやりとりすることができる。メモリマイグレーション中、ＢＩＯＳは、キャッシュラインを読み（マスタにより書き込まれた）、それを（マスタとスレーブに）書き戻すことが可能である。このようにして、マスタのコンテンツは、キャッシュライン毎に最終的にスレーブに複製可能である。これは、ライト・オン・ライト（ＷＯＷ）コピーと呼ばれる。ライト・オン・リード（ＷＯＲ）が同様に処理されるが、ハードウェア自体はＢＩＯＳのキャッシュラインの読み込み後にライトを実行することに留意されたい。マイグレーション中、スーパーバイザソフトウェアがメモリの複製を開始したため、すでに複製された（現在では冗長となっている）メモリ領域とまだ複製を必要とする領域（まだエラーを受ける可能性がある）とを明確化することが可能である。訂正不可なメモリエラーがすでに複製された領域内でマスタノードに発生した場合、当該エラーは訂正可能であり、システムは処理を継続することができる。
【００１２】
実施例は、スーパーバイザソフトウェアがどの程度のコンテンツがスレーブに複製されたかに関する情報をマスタメモリコントローラに提供可能な機構を提供する。訂正不可なエラーがすでに複製された領域内で発生した場合、コントローラは、ミラーコンフィギュレーションがあたかも存在するかのようにそれを処理し（それはこの目的のためである）、スレーブにリクエストを実行させる（ミラーリングのケースと同様）ことが可能である。このようにして、システムは、この状況を訂正可能なエラーとして処理し、処理を継続することが可能である。
【００１３】
各種実施例では、ＷＯＷ（又はＷＯＲ）コピーを実行するＢＩＯＳ又はスーパーバイザソフトウェアは、すでにスレーブに複製された領域と同様にマスタメモリコントローラのレジスタを更新可能である。いくつかの実現形態では、プロテクションのため、このレジスタはシステムマネージメントモード（ＳＭＭ）内のみから書き込み可能である。メモリマイグレーション処理中、メモリコントローラは、レジスタにあるこの情報を利用して、マスタが訂正不可なエラーを受けた場合にスレーブがリクエストを実行可能であるか決定することが可能である。実行可能である場合、メモリコントローラは、スレーブに当該リクエストを実行するよう要求する。すなわち、複製された領域はミラーペア（冗長性を有する）として機能し、複製されていない領域はマイグレーションモードで動作し、より多くのメモリがＷＯＷ又はＷＯＲコピーエンジンを介しマイグレートされるまで、致命的なエラーを依然として受ける可能性がある。
【００１４】
図１を参照するに、本発明の実施例による方法のフロー図が示される。図１に示されるように、方法１００はシステムレベルで実行される各種ソフトウェアと、メモリコントローラなどのハードウェアとを用いて、メモリマイグレーション処理中に不具合のあるメモリリクエストの処理を可能にするよう実現される。図１に示されるように、方法１００は、エラー閾値を超えると開始される（ブロック１０５）。例えば、ＢＩＯＳは、メモリマイグレーションが実行されるべき閾値セットを有してもよい。例えば、閾値は与えられたソケット上で実行される訂正可能な誤りの個数であってもよい。この閾値を超えると、このことは、メモリミラーリングシステムにおける冗長性の欠落が生じ、メモリマイグレーションが実行されるべきであることを示す。従って、ブロック１１０において、閾値が超えたシステム（スペアメモリノードを有する）のソケット（すなわち、第１ソケット）から第２ソケットへのマイグレーションが開始される。一実施例では、ＢＩＯＳがこのマイグレーションを開始する。システムマネージメントインタラプト（ＳＭＩ）などのインタラプトが、マイグレーションを開始するために生成されてもよい（ブロック１１５）。
【００１５】
一実施例では、マイグレーション処理はタイムスライスされたＳＭＩ形式により実行される。すなわち、マイグレーションを実行するのにやや大きな時間（１時間以上など）がかかるため、マイグレーションは、有用な作業がまた実行されるのを可能にするようタイムスライスされて実行されてもよい。制御はブロック１１５からブロック１２０に移行し、スペアノードへのデータのマイグレーションが実行される。与えられたタイムスライスのエンドにおいて（一実施例では、約３２ミリ秒（ｍｓ）のオーダであってもよい）、制御はブロック１２５に移行し、第１ソケットに関連付けされたメモリコントローラ上の重宝の更新が実行される。より詳細には、冗長なメモリアパーチャが、必要に応じてアクセスされるように、マイグレートが成功した冗長データのデータ量を示すため、１以上のレジスタ（一般に冗長メモリアパーチャレジスタと呼ばれる）などにおいて設定されてもよい。その後、制御は判定ブロック１３０に移行し、複製が終了したか判断されてもよい。複製が終了した場合、制御はブロック１４０に移行し、システムは通常処理を継続する。
【００１６】
他方、タイムスライスの終了時に、マイグレーションが終了していない場合、制御はブロック１４５に移行し、ＯＳはシステムの他のタイムスライスにおいて各種有用な作業を実行する。このタイムスライスにおけるＯＳにより制御されたスレッドの実行中、エラーが発生したか判断される（判定ブロック１５０）。エラーが発生していない場合、タイムスライスの終了時に、上述されたようにブロック１１５におけるマイグレーションを継続するため、ＳＭＩがトリガされる。
【００１７】
他方、エラーが発生した場合、制御は、ＳＭＩインタラプトに応答してトリガされるＳＭＩハンドラなどのシステムソフトウェアにわたされる（ブロック１５５）。一実施例では、早期のＢＩＯＳハンドラが、このＳＭＩと他のＳＭＩとを明確化する。ＳＭＩがメモリエラーに関係していないと判断された場合（判定ブロック１６０）、制御はブロック１６５に移行し、エラーは適切なハンドラにより処理される。他方、エラーがメモリエラーであると判断された場合、制御は判定ブロック１７０に移行し、当該エラーがミラー領域で発生したか判断される。この判定は、エラー状態にあるメモリリクエストに関するアドレスと、第１ソケットのメモリコントローラの冗長なメモリアパーチャレジスタの解析に基づくものであってもよい。
【００１８】
当該エラーがミラー領域で発生している場合、すなわち、第２ノードにすでに複製された領域で発生している場合、制御はブロック１７５に移行し、メモリコントローラは第２ノード上のデータを用いてメモリトランザクションをリトライすることができる。従って、第１メモリコントローラは、すでにミラーリングされた部分の要求されたデータにアクセスするため、メモリトランザクションを第２ノードに関連する第２メモリコントローラに転送可能である。この第２メモリコントローラは、当該データを抽出し、それを第１ソケットのメモリコントローラに送り返し、さらに第１ソケットのメモリコントローラは、トランザクションを終了するため、要求されたデータをレジスタに転送可能である。このようにして、メモリマイグレーション中に生じたエラーは、メモリマイグレーション中に発生した訂正不可なエラーに対してシステムをリセットする必要がなくなるように訂正されてもよい。当該エラーが訂正された場合、訂正されたエラーイベントはメモリリクエストに対して記録される（ブロック１８０）。一実施例では、ＢＩＯＳは、マシーンチェックのアサーションなどによりこのようなエラーを記録してもよい。他方、判定ブロック１７０において、エラーが複製された領域で発生したものでない場合、当該エラーは持続し、必要に応じてエラーを処理するためのブロック１６５に制御が移行する。例えば、ブロック１６５では、エラーは、マシーンチェックがＯＳに通知される従来の方法により処理されてもよく、これは、システムのクラッシュダンプを開始させる。図１の実施例においてこのような実現形態が示されるが、本発明の範囲はこれに限定されるものでない。
【００１９】
図２を参照するに、２つの異なるソケット、すなわち、第１ソケットと第２ソケットとに関連するメモリのブロック図が示される。図示されるように、第１ソケットメモリ２１０は、第２ソケットメモリ２２０にマイグレートされる処理中であってもよい。メモリマイグレーションの可能性のあるインタラプトされる性質と、マイグレーションが実行される長い期間とによって、所与の時点ではマイグレーションの一部しか終了されていない可能性がある。図２に示されるように、第１ソケットメモリ２１０の第１部分２１５は、第２ソケットメモリ２２０の部分２２５に良好に複製された。このため、さらなるメモリが複製されるまで、第１メモリ２１０の第１領域２１５においてエラーが発生した場合に限って、第２メモリ２２０は、第１メモリ２１０で発生したアクセスエラーを解決するためのデータを提供することができる。
【００２０】
図３を参照するに、本発明の一実施例によるソケット間の通信のブロック図が示される。図３に示されるように、第１ソケット３１０は、不具合のあるメモリを有するソケットである。具体的には、第１ソケット３１０は、本発明の実施例による記憶領域３２８を有するホームエージェント３２５を含む又は関連付けされた第１メモリコントローラ３２０を有する。ホームエージェント３２５は、一部の実施例では、メモリコントローラのフロントエンドであってもよい。一実施例では、記憶領域３２８は、第１システム３１０と第２システム３５０との間で良好にマイグレートされたデータのデータ量を示す各種情報を含む冗長メモリアパーチャレジスタであってもよい。図示されるように、メモリコントローラ３２０は、モジュール３３０ａと３３０ｂとを含む各種メモリモジュールへのアクセスを制御する。同様のハードウェアが、第２ホームエージェント３６５を有する又は関連付けされる第２メモリコントローラ３６０を有する第２ソケットに存在してもよく、メモリコントローラ３６０はまた、モジュール３７０ａと３７０ｂなどの各種メモリモジュールと通信するようにしてもよい。図示されるように、モジュール３７０ｂの一部は、メモリモジュール３３０ａからマイグレートされたものなどの冗長データを有してもよい。マイグレーション中に、すでに複製されたメモリ３３０ａの上記部分においてアクセスエラーが発生した場合、データはメモリ３７０ｂの冗長部分からメモリコントローラ３６０を介して第２ソケット３５０から取得されてもよい。
【００２１】
各実施例はさらに、ページ割当て、リマップ及び使用に関する情報のＯＳの知識を利用することによってメモリミラーリングを制御する。メモリエラーは、典型的には、メモリリード／ライトサイクル中に発生し、ソフトエラーレート（ＳＥＲ）は、メモリスピードと使用量に従って増加する。例えば、１００ナノ秒でのメモリサイクリングは、リフレッシュモードでアイドリングするメモリのものの１００倍のソフトエラーレートを生成可能である。すなわち、メモリ使用量は、ソフトエラーの可能性を増加させる可能性がある。また、ＯＳ／ＶＭＭの観点から、何れかの時点において、集中してリード／ライトされるアクティブページのごくわずかな部分（ホットページと呼ばれる）があり、残りは主に非アクティブである（コールドページと呼ばれる）。さらに、ＯＳ／ＶＭＭは、アプリケーション／ゲストアドレススペース（すなわち、バーチャルアドレス）から現実のシステムメモリアドレススペース（すなわち、物理アドレス）へのマッピングを制御する。各実施例は、上記事実を利用して頻繁に使用されるページ、すなわち、ホットページを追跡し、ミラーリングされたメモリ領域に動的にリマッピングすることによって、システム全体の利用性を向上させるＯＳ／ＶＭＭサポートを提供する。
【００２２】
多くの実現形態では、フルメモリミラーリングではなく、パーシャルプラットフォームメモリミラーリング方式が、プラットフォームメモリ全体の利用性を向上させるのに利用される。説明のため、システムメモリのすべてではないが少なくとも一部がメモリミラーリングを有効にするよう構成可能である。例えば、ミラーリングは、マルチソケットシステム上の単一のチャネルに限定されてもよい。ミラーリングされたメモリがスパース又は疎にのみ利用可能であるとき、より良好なシステム利用性を有するように、それは効率的に利用される必要がある。システムは、ＯＳ／ＶＭＭの支援によって、ソフトウェアスタックのクリティカルなコンポーネントに対応するメモリ領域を選択的にミラーリングすることが可能である。システムファームウェアは、ミラーリングされたメモリ領域へのすべてのアクセスがマスタメモリとスレーブ（ミラーリングされたものなど）メモリとの双方に冗長的にわたされるようにプラットフォームを構成可能である。ソフトウェアスタックに対して、これらミラーリングされたメモリアクセスは、メモリの非ミラーリング領域へのアクセスと同様である。システムは、マスタにメモリエラーがある場合、ミラーリングされたメモリ（スレーブ）に透過的にフェイルオーバするであろう。
【００２３】
プラットフォームは、例えば、静的なＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）テーブルなどを介しミラーリングされたメモリ領域の利用性に関する事前の知識をＯＳ／ＶＭＭに提供することが可能である。ＯＳ／ＶＭＭは、ブート時にこのテーブルを解析し、メモリコントローラのテーブル又は同様の機構に関連して、このミラーリング領域内での使用のために利用可能な物理アドレス領域を構成する。さらに、他のテーブルは、ミラーリングされたメモリ領域とミラーリングされていないメモリ領域とに関する情報を提供する。このようなテーブルは、ＯＳの観点から利用可能であって、確保されているメモリアドレス領域を提供するものであってもよい。一実施例では、これらのテーブルは、ＢＩＯＳにあって、ＡＣＰＩインタフェースを介しブート時にＯＳに提供されてもよい。ＯＳ／ＶＭＭは、システムアドレススペースの何れの部分がミラーリングされたメモリに対応するか認識しているが、ＯＳ／ＶＭＭの介入は、プラットフォーム／ハードウェアが実際のミラーリング処理を実行するのに必要でないことに留意されたい。
【００２４】
処理中、ＯＳ／ＶＭＭは、様々な理由のためカーネル及びアプリケーション／ゲストページアクセスの統計を維持してもよい。例えば、ＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ）システムでは、ＯＳ／ＶＭＭは、ページ統計情報を利用してアクセスされているメモリノードにより近いページに移動可能である。同様に、ＯＳ／ＶＭＭは、ページ統計を利用し、アクティブな物理メモリをＤＩＭＭの一部にまとめ、より良好な全体的な省電力化を実現するため、非アクティブなＤＩＭＭをセルフリフレッシュモードに維持する。各実施例は、同様に高い閾値と低い閾値とを規定することによって、ページをホット（アクセスが多いページなど）又はコールド（アクセスが少ないページなど）として分類するようにしてもよい。一実施例では、ＯＳ／ＶＭＭは、ミラーリングされていないメモリアベイラビリティの大きさに対するミラーリングされたメモリアベイラビリティの大きさの比率に応じて閾値を決定する。例えば、システムメモリのｘ％がミラーリングされたメモリである場合、ＯＳ／ＶＭＭは、ミラーリングされた領域に対するすべてのページアクセスカウントの上位ｘ％までのページを動的にマッピングすることが可能である。ページへのアクセス（リード又はライト）の頻度が高い閾値を超えると、当該ページはホットページとしてマークされる。同様に、アクセスの頻度が低い閾値を下回ると、当該ページはコールドページとしてマークされる。その後、ＯＳ／ＶＭＭは、例えば、コールドへのマイグレートリストとホットへのマイグレートリストなどの１以上のマイグレートリストにおいてホットからコールドとコールドからホットへのページ遷移を追跡することができる。異なる実現形態では、これらのリストは、ページテーブルの別々のリスト又は部分として実現可能である。
【００２５】
一部の実施例では、ミラーアウェアページリマッピング手段（及び後述されるマイグレーション解析手段）は、ＯＳ／ＶＭＭ内のソフトウェアスレッドとして実行されてもよい。それは、ホットへのマイグレートリストとコールドへのマイグレートリストをスキャンしながらバックグラウンドで実行可能であり、ホットページがメモリのミラーリングされた領域にあり、コールドページがメモリの非ミラーリング領域にあるようにページをリマッピングすることができる。一実施例では、リマッピング手段はまず、非ミラーリング領域にあるが、高閾値マークを有するアクセス頻度を有するページを含むホットへのマイグレートリストをスキャンすることができる。このリマッピング手段は、ホットへのマイグレートリストにあるページをメモリのミラーリング領域にリマッピングするよう動作する。これらの新たなホットページのための十分なスペースがない場合、それは、ミラーリング領域にあって、アクセス頻度が低閾値マークを下回るページを含むコールドへのマイグレートリストをスキャンし、これらをページをメモリのミラーリング領域から非ミラーリング領域にリマッピングすることによって、ミラーリング領域においてスペースを利用可能にしようとする。ホットへのマイグレートリストのページがミラーリングされたメモリへの配置が成功すると、これらのホットページへの以降のアクセスは、プラットフォームにより透過的にミラーリングされる。このようにして、より頻繁にアクセスされるページ（及びよりエラーとなる可能性の高いページ）の利用性が効果的に増大し、これにより、システム利用性が向上すると共に、システムをメモリエラーに対して回復性の高いものにする。
【００２６】
各実施例は、ＯＳ／ＶＭＭミラーリングメモリ領域アウェアは動的ページリマッピング技術を利用して、ミラーリングされたメモリ領域にアクティブ（ホット）なページを配置し、ミラーリングされたメモリ領域にアクティブに使用されるページを維持することによって、より良好なシステム利用性を提供するようにしてもよい。また、非アクティブなメモリページが非ミラーリングメモリ領域にあるため、これらの領域へのメモリアクセス帯域幅はより低くなり、それらが低電力状態に移行することを可能にする。これは、より良好な全体的なメモリ電力管理をもたらし、さらに非ミラーリングメモリ領域におけるメモリエラー（ソフトエラー）の確率を低下させる。
【００２７】
図４を参照するに、本発明の一実施例によるシステムのブロック図が示される。図４に示されるように、システム４００は、複数のプロセッサ４１０ａ〜４１０ｄを含む高利用性サーバであってもよい。一実施例では、各プロセッサは、マルチコアプロセッサであってもよく、さらに統合されたメモリコントローラ、周辺コントローラなどの追加的なコンポーネントを有してもよい。図示されるように、各プロセッサはシステムメモリのローカル部分に接続される。例えば、プロセッサ４１０ａは、ＤＩＭＭから構成されるメモリモジュールであってもよいローカルメモリ４２０ａ１と４２０ａ２とに接続される。さらに、プロセッサ４１０ｃは、ローカルメモリ４２０ａ３と４２０ａ４とに接続される。同様に、プロセッサ４１０ｂはローカルメモリ４２０ｂ１−ｂ２に接続され、プロセッサ４１０ｄはローカルプロセッサ４２０ｂ３−ｂ４に接続されてもよい。図示されるように、プロセッサは、ポイント・ツー・ポイント（ＰｔＰ）インターコネクトを介し接続されてもよい。
【００２８】
図４の実施例では、複雑さと電力消費とを増大させながら、利用可能な真のメモリ容量の大きさを減少させることが可能なフルミラーリングメモリシステムを有する代わりに、パーシャルミラーリング方式が存在する。図示されるように、ローカルメモリ４２０ａ１と４２０ｂ１とがミラーリングされ、その他のメモリは冗長データを有さない。ここに記載された実施例によると、より頻繁にアクセスされるデータに関連するデータがホットページ４３０に格納可能であり、ホットページ４３０は、メモリモジュール４２０ａ１に格納され、メモリモジュール４２０ｂ１にミラーリングされる。図４にさらに示されるように、周辺コントローラハブ４２５はプロセッサ４１０ｃに接続され、プロセッサ４１０ｃは、入出力（ＩＯ）デバイス、マスストレージなどの各種周辺装置に接続される。図４の実現形態に示されているが、本発明の範囲はこれに限定されるものでない。
【００２９】
図５を参照して、本発明の実施例によるデータをミラーリングメモリ領域に動的にリマッピングするか判断するハイレベルな方法のフロー図が示される。図５に示されるように、ＯＳ又は他のスーパーバイザソフトウェア内で実現される方法５００は、非ミラーリングメモリ領域に格納されている所与のページがミラーリングメモリ領域に格納されるべきか判断する（判定ブロック５１０）。この判定は、後述されるような各種形式をとりうる。一部の実施例では、方法５００は所与の時間間隔でアクセスされる各ページについて繰り返し実行されてもよいことに留意されたい。本発明の範囲はこれに限定されるものでないが、一部の実施例では、この間隔は、アクセスインジケータの状態を確認し、ページアクセスカウントを更新するためのサンプリング間隔である約１〜１０ｍｓであってもよい。この時間間隔中、ページに対するページテーブルエントリのアクセスビットなどのアクセスインジケータは、ページがアクセスされると更新される。一般に、各ページテーブルエントリはさらに、アクセスインジケータがアクセスされた回数の累積値であるアクセスカウントを有してもよい。このカウントはエポックベースであってもよいことに留意されたい。すなわち、エポック内に多数のサンプリング間隔が存在可能であり、アクセスカウントは各エポックの開始時にリセットされる。ミラーリングと非ミラーリングとの間の実際のマイグレーションは、各エポックの開始時に実行可能である。さらに、ＯＳ／ＶＭＭは、サンプリング間隔と共にマイグレーションに関するオーバヘッドをバランスさせるため、エポックの時間期間とを動的に調整可能である。一実施例では、ミラーリング領域と非ミラーリング領域との間の過大なマイグレーションは、ＯＳ／ＶＭＭがサンプリング頻度を増加させ、及び／又はエポックを長くすることを促すかもしれない。所与のページがマイグレートされるべきでない場合、制御はブロック５１５に移行し、次にアクセスされたページに対して解析が実行される。
【００３０】
さらに図５を参照して、ページがミラーリングメモリ領域に格納されるべきであると判断された場合、制御は判定ブロック５２０に移行し、ミラーリングメモリ領域に利用可能なスペースがあるか判断される。利用可能なスペースがない場合、制御はブロック５３０に移行し、第２閾値より小さなアクセスカウントを有するミラーリングメモリ領域からの少なくとも１つのページがイビクトされる。この第２閾値は、上述された低閾値マークであってもよい。その後、制御はブロック５４０に移行し、所望のページが非ミラーリングメモリ領域からミラーリングメモリ領域にリマッピングされる。
【００３１】
上述されるように、所与のメモリページがミラーリングメモリ領域にリマッピングされるべきか判断するための異なる実現形態が可能である。図６を参照するに、ミラーリングメモリ領域に挿入するためのページを選択する一例となる方法のフロー図が示される。図示されるように、再びＯＳ又は他のスーパーバイザソフトウェアにより実行可能な方法６００は、アクセスされるとページのアクセスインジケータを更新することによって開始される（ブロック６１０）。さらに、ページのアクセスカウントがまた、ページに対するアクセス回数を説明するため更新（インクリメントなど）される。その後、ページのアクセスカウントが第１ホットリスト閾値より大きいか判断される（判定ブロック６２０）。第１閾値は、ページがミラーリング領域にマイグレートされるべきか判断するためのプロキシとして利用可能な高閾値マークであってもよい。所与のページがこの閾値より大きなアクセスカウントを有する場合、制御はブロック６３０に移行し、ページがホットへのマイグレートリストに追加される（ページがまだこのリストになく、ミラーリングメモリ領域にあるページのリスト（すなわち、ホットリスト）にない場合）。判定ブロック６２０において判定結果が否定的なものである場合、方法６００は終了する。
【００３２】
図７を参照するに、ミラーリングメモリ領域にあるページが非ミラーリングメモリ領域にマイグレートされるべきか判断する方法が示される。図示されるように、方法６５０は、ミラーリングメモリ領域にある（従って、ホットリストにある）ページのページアクセスインジケータがアクセスなしを示すか判断することによって開始される。すなわち、ミラーリングメモリ領域の当該ページが所与の時間間隔中にアクセスされていないか判断される。当該ページがアクセスされていない場合、ページがホットであるとみなされる（従って、ミラーリングメモリ領域にあるべきである）最小レベルに対応するホット値がデクリメントされる（ブロック６６５）。その後、制御は判定ブロック６７０に移行し、当該ホット値が第２ホットリスト閾値より小さいか判断される。この第２ホットリスト閾値は、その値を下回ると、ミラーリングメモリ領域からページが削除されるべき低い閾値であってもよい。ホット値が第２ホットリスト閾値より小さい場合、制御はブロック６７５に移行し、ページがコールドへのマイグレートリストに追加され、そうでない場合には、当該方法はこのページに関して終了する。このリストは、非ミラーリングメモリ領域に格納されるべきミラーリングメモリ領域に現在格納されているページのリストであってもよい。
【００３３】
さらに図７を参照して、判定ブロック６６０の判定結果が、ページがアクセスされたと示す場合、制御はブロック６８０に移行し、ページのホット値がインクリメントされる。その後、制御は判定ブロック６８５に移行し、ホット値が、上述されるような高レベル閾値であってもよい第１ホットリスト閾値レベルより大きいか判断される。大きい場合、メモリページはそれのアクセスカウントをホット値に設定し（ブロック６９０）、そうでない場合には当該ページに対して本方法は終了する。このようにして、ホット値は、ヒステリシス効果を回避するため、高閾値と低閾値との間に維持することが可能である。
【００３４】
テーブル１を参照して、本発明の一実施例によるマイグレーション解析手段の擬似コードが示される。一実現形態では、ＯＳスレッドが解析手段のために利用されてもよい。一般に、マイグレーション解析手段は、図６及び７に与えられるように実行する。
【００３５】
【表１】
2011134327.tif 000003
図８を参照して、本発明の一実施例によるリマッピング処理のフロー図が示される。図８に示されるように、方法７００は、ホットへのマイグレートリスト及びコールドへのマイグレートリストなどのＯＳにアクセス可能な各種リスト又はテーブルの情報などに基づき、各値を動的にリマッピングするよう実行される。図８に示されるように、方法７００は、ミラーリングメモリ領域に利用可能なスペースがあるか判断することによって開始される（判定ブロック７１０）。利用可能なスペースがある場合、後述されるように、ブロック７５０においてマイグレーションが実行される。利用可能なスペースがない場合、制御は判定ブロック７２０に移行し、非ミラーリングメモリ領域に利用可能なスペースがあるか判断される。利用可能なスペースがある場合、制御はブロック７３０に移行し、コールドへのマイグレートリストからの１以上のページが非ミラーリングメモリ領域のフリーページにリマッピングされる。判定ブロック７２０において利用可能なフリーページがないと判断された場合、１以上のページはスワップファイルに格納される（ブロック７３５）。一実施例では、このスワップファイルは、ハードディスク又はソリッドステートディスクなどのセカンダリストレージに格納されてもよい。
【００３６】
図８に示されるように、ブロック７３０と７３５の双方から、制御はブロック７４０に移行し、コールドへのマイグレートリストがクリアされる（すべてのコールドページが非ミラーリングメモリ領域にマイグレートされた状況において）。この後、ミラーリングメモリ領域には利用可能なスペースが存在するかもしれない。ブロック７５０において、ホットへのマイグレートリストにある１以上のページが、ミラーリングメモリ領域、すなわち、ミラーリングメモリ領域の利用可能なメモリページにリマッピングされる。その後、制御はブロック７６０に移行し、１以上のページがホットへのマイグレートリストから削除される。図８の実施例では特定の実現形態が示されたが、本発明の範囲はこれに限定されるものでない。
【００３７】
テーブル２を参照して、本発明の一実施例によるリマッピング手段の擬似コードが示される。一実現形態では、ＯＳスレッドがリマッピング手段のために利用されてもよい。一般に、リマッピング手段は図８のフロー図に従って実行する。
【００３８】
【表２】
2011134327.tif 000004
各実施例はコードにより実現されてもよく、命令を実行するようシステムをプログラムするのに利用可能な命令を格納する記憶媒体に格納される。記憶媒体は、以下に限定されることなく、フロッピー（登録商標）ディスク、光ディスク、ソリッドステートドライブ（ＳＳＤ）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＷ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  ＲｅＷｒｉｔａｂｌｅ）、光磁気ディスク、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  ＥＰＲＯＭ）などの半導体デバイス、磁気カード若しくは光カード、又は電子命令を格納するのに適した他の何れかのタイプのメディアを含むものであってもよい。
【００３９】
本発明が限定数の実施例に関して説明されたが、当業者は多数の改良及び変更を理解するであろう。添付した請求項はこのようなすべての改良及び変更を本発明の真の趣旨及び範囲内に属するものとしてカバーする。
【００４０】
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４１】
２１０，２２０  メモリ
３１０，３５０  システム
３２０，３６０  メモリコントローラ
【図１】
2011134327.tif 000005
【図２】
2011134327.tif 000006
【図３】
2011134327.tif 000007
【図４】
2011134327.tif 000008
【図５】
2011134327.tif 000009
【図６】
2011134327.tif 000010
【図７】
2011134327.tif 000011
【図８】
2011134327.tif 000012