(57)【要約】      （修正有）【課題】システムの立ち上げ時間を早めるための方法を提供する。【解決手段】システム上にストアされたオペレーティング・システムの起動動作と並行しかつその後に、追加量のメモリを割り当てのためにスクラビングして利用することができるようにするステップとを含む。システムは、各々が最少ノード資源構成に関連付けられた１個もしくは複数個のノードを含むことができ、前記最少ノード資源構成は、前記ノードを活性化するために、活性化される必要のあるノードに含まれる最少数のプロセッサに対応する。システムは、各パーティションが少なくとも１個のノードを包含する１個もしくは複数個のパーティションを更に含むことができる。各パーティションには他のパーティションに対する優先度が割り当てられることができ、そのパーティションはその割り当てられた優先度に基づき活性化される。【選択図】図２
2011118900.tif 000002
【特許請求の範囲】
【請求項１】
システムの立ち上げ時間を早める方法であって、
スクラビングして、最少量のメモリを割り当てのために利用可能にするステップと、
前記システム上にストアされたオペレーティング・システムの起動動作を実行するステップと、
前記オペレーティング・システムの前記起動動作と並行しかつその後に、スクラビングして、追加量のメモリを割り当てのために利用可能にするステップと
を含む方法。
【請求項２】
複数個のメモリ・ユニットと、
最少ノード資源構成に関連付けさせられる少なくとも１個のノードと、
前記少なくとも１個のノードに含まれる少なくとも１個のプロセッサと、
前記少なくとも１個のプロセッサに含まれる少なくとも１個のコアと、
前記少なくとも１個のコアにインターフェースで結合する少なくとも１個のメモリ・コントローラと
を前記システムが含み、
前記少なくとも１個のメモリ・コントローラが前記複数個のメモリ・ユニットのうちの少なくとも１個のメモリ・ユニットを制御し、かつ
前記最少ノード資源構成が、前記少なくとも１個のノードを活性化させるために、メモリがスクラブされて前記少なくとも１個のノードに割り当てられるべき前記複数個のメモリ・ユニットのうちの１個もしくは複数個のメモリ・ユニットに最少量のメモリに対応するようにした、
請求項１に記載の方法。
【請求項３】
複数個のメモリ・ユニットと、
各々が最少ノード資源構成に関連付けられた複数個のノードと、
前記複数個のノードのうちの少なくとも１個を包含する少なくとも１個の論理パーティションと、
前記複数個のノードの各々に含まれる複数個のプロセッサと、
前記複数個のプロセッサの各々に含まれる複数個のコアと、
複数個のメモリ・コントローラと
を前記システムが含み、
複数個のコアの各々が前記複数個のメモリ・コントローラのうちの１個のメモリ・コントローラにインターフェースで結合し、前記複数個のメモリ・コントローラの各々が少なくとも１個のメモリ・ユニットを制御し、かつ
前記最少ノード資源構成が、前記ノードを活性化させるために、活性化される必要のあるノードに含まれる最少数のプロセッサに対応する、請求項１に記載の方法。
【請求項４】
前記ノードと関連する前記最少ノード資源構成が更に前記最少数のプロセッサを活性化するために活性化される必要のある最少数のコアに対応する、請求項３に記載の方法。
【請求項５】
前記ノードと関連する前記最少ノード資源構成は更に、最少数のコアを活性化させるために、有効とされるのに必要とされる最少数のメモリ・コントローラに対応する、請求項４に記載の方法。
【請求項６】
前記複数個のメモリ・コントローラの各々は初期に無効状態とされ、かつ前記メモリ・コントローラは前記メモリ・コントローラが制御する少なくとも１個のメモリ・ユニットにおいて最少量のメモリがスクラブされるような条件で有効とされる、請求項５に記載の方法。
【請求項７】
各々が少なくとも１個のノードを包含する複数個のパーティションを前記システムが更に含み、
前記複数個のパーティションの各々に他のパーティションとの関係で優先度が割り当てられ、該割り当てられた優先度に基づいて前記複数個のパーティションが成功裡に活性化される、請求項３に記載の方法。
【請求項８】
十分な量のスクラブされたメモリが割り当てのために利用することが可能であるという条件で、前記パーティションのメモリ資源需要に合致しなければならないパーティションを活性化させるステップを更に含む、請求項７に記載の方法。
【請求項９】
前記パーティションを活性化させるステップの前に、前記パーティションの前記メモリ資源需要を、スクラブされたメモリ量に比較して、割り当てのために利用することができるようにするステップを更に含み、
スクラブされて割り当てのために利用することができるようにされた前記メモリ量が前記パーティションの前記メモリ資源需要に合致するのに十分であるという条件の下で、前記スクラブされたメモリが、前記パーティションにより包含される１個もしくは複数個のノード間で割り当てられて前記パーティションが活性化されるようにし、かつ
スクラブされて割り当てのために利用することができるようにされた前記メモリ量が前記パーティションのメモリ資源需要に合致するのに十分でないという条件の下で、前記パーティションの前記メモリ資源需要に合致するのに十分なスクラブされた合計メモリ量が前記パーティションにより包含される１個もしくは複数個のノード間で割り当てられて前記パーティションが活性化されるように、追加量のメモリがスクラブされる、請求項８に記載の方法。
【請求項１０】
前記オペレーティング・システムの起動動作の実行と並行し、かつその後で、追加のメモリがスクラブされて、所定の基準に基づきパーティションにより包含される１個もしくは複数個のノードに割り当てられる、請求項７に記載の方法。
【請求項１１】
前記所定の基準が前記パーティションに割り当てられた優先度、およびメモリの追加の割り当てのための前記パーティションの需要のうちの少なくとも一つを含む、請求項１０に記載の方法。
【請求項１２】
スクラブされた前記追加のメモリが使用済みのメモリを含む、請求項１に記載の方法。
【請求項１３】
複数個のメモリ・ユニットと、
１個のメモリ・ユニットにおいてメモリをスクラブするように構成され割り当てのために利用することができるようにされたスクラビング・ユニットと、
オペレーティング・システムと
を含み、
前記スクラビング・ユニットがスクラブして、最少量のメモリを割り当てのために利用可能にし、
前記オペレーティング・システムの起動動作は、前記最少量のメモリがスクラブされかつ割り当てのために利用可能にされた後に実行され、かつ
前記オペレーティング・システムの起動動作の実行と並行しかつその後に、前記スクラビング・ユニットがスクラブし、追加量のメモリを割り当てのために利用可能にするシステム。
【請求項１４】
複数個のメモリ・ユニットと、
最少ノード資源構成に関連付けさせられる少なくとも１個のノードと、
前記少なくとも１個のノードに含まれる少なくとも１個のプロセッサと、
前記少なくとも１個のプロセッサに含まれる少なくとも１個のコアと、
前記少なくとも１個のコアにインターフェースで結合する少なくとも１個のメモリ・コントローラと
を前記システムが含み、
前記少なくとも１個のメモリ・コントローラが前記複数個のメモリ・ユニットのうちの少なくとも１個のメモリ・ユニットを制御し、かつ
前記最少ノード資源構成が、前記ノードを活性化させるために、前記スクラビング・ユニットにより、メモリがスクラブされて前記少なくとも１個のノードに、割り当てのために利用できるようにされなければならない最少量のメモリに対応する、
請求項１３に記載のシステム。
【請求項１５】
各々が最少ノード資源構成に関連付けられた複数個のノードと、
前記複数個のノードのうちの少なくとも１個を包含する少なくとも１個のパーティションと、
前記複数個のノードの各々に含まれる複数個のプロセッサと、
前記複数個のプロセッサの各々に含まれる複数個のコアと、
複数個のメモリ・コントローラと
を更に含み、
複数個のコアの各々が前記複数個のメモリ・コントローラのうちの少なくとも１個のメモリ・コントローラにインターフェースで結合し、
前記複数個のメモリ・コントローラの各々が少なくとも１個のメモリ・ユニットを制御し、かつ
前記最少ノード資源構成が、前記ノードを活性化するために、活性化される必要のあるノードに含まれる最少数のプロセッサに対応する、請求項１３に記載のシステム。
【請求項１６】
前記ノードと関連する前記最少ノード資源構成が更に前記最少数のプロセッサを活性化させるために活性化される必要のある最少数のコアに対応する、請求項１５に記載のシステム。
【請求項１７】
前記ノードと関連する前記最少ノード資源構成は更に、最少数のコアを活性化させるために、有効とされるのに必要とされる最少数のメモリ・コントローラに対応する、請求項１６に記載のシステム。
【請求項１８】
前記複数個のメモリ・コントローラの各々は初期に無効状態とされ、かつ前記メモリ・コントローラは前記メモリ・コントローラが制御する複数個のメモリ・ユニットのうちの少なくとも１個のメモリ・ユニットにおいて前記スクラビング・ユニットが最少量のメモリをスクラブするような条件で有効とされる、請求項１７に記載のシステム。
【請求項１９】
各々が少なくとも１個のノードを包含する複数個のパーティションを更に含み、
前記複数個のパーティションの各々に他のパーティションとの関係で優先度が割り当てられ、該割り当てられた優先度に基づいて前記複数個のパーティションが成功裡に活性化される、請求項１５に記載のシステム。
【請求項２０】
十分な量のメモリが前記スクラビング・ユニットによりスクラブされて、前記パーティションのメモリ資源需要に合致するように割り当てのために利用可能にされるという条件で、パーティションが活性化される、請求項１９に記載のシステム。
【請求項２１】
前記パーティションを活性化させる前に、前記パーティションの前記メモリ資源需要が、スクラブされたメモリ量に比較され、割り当てのために利用することができるようにされ、
スクラブされて割り当てのために利用することができるようにされた前記メモリ量が前記パーティションの前記メモリ資源需要に合致するのに十分であるという条件の下で、前記スクラブされたメモリが、前記パーティションにより包含される１個もしくは複数個のノード間で割り当てられて前記パーティションが活性化され、かつ
スクラブされて割り当てのために利用することができるようにされた前記メモリ量が前記パーティションのメモリ資源需要に合致するのに十分でないという条件の下で、前記スクラビング・ユニットは、前記パーティションの前記メモリ資源需要に合致するのに十分なスクラブされた合計メモリ量が前記パーティションにより包含される１個もしくは複数個のノード間で割り当てられて前記パーティションが活性化されるように、追加量のメモリをスクラブする、請求項２０に記載のシステム。
【請求項２２】
前記オペレーティング・システムの起動動作の実行と並行し、かつその後で、前記スクラビング・ユニットがスクラブして、所定の基準に基づきパーティションにより包含される１個もしくは複数個のノードに追加量のメモリを割り当てる、請求項１９に記載のシステム。
【請求項２３】
前記所定の基準が前記パーティションに割り当てられた優先度、およびメモリの追加の割り当てのための前記パーティションの需要のうちの少なくとも一つを含む、請求項２２に記載のシステム。
【請求項２４】
コンピュータにより実行されることで、当該コンピュータに
スクラビングして、最少量のメモリを割り当てのために利用することができるようにするステップと、
前記システム上にストアされたオペレーティング・システムの起動動作を実行するステップと、
前記オペレーティング・システムの前記起動動作と並行しかつその後に、スクラビングして、追加量のメモリを割り当てのために利用することができるようにするステップと
を実行させることのできる、システムの立ち上げ時間を早めるためのコンピュータ・プログラム。
【請求項２５】
各々が最少ノード資源構成に関連付けられた複数個のノードであって、前記最少ノード資源構成が確立される条件で前記ノードが活性化されるようにする前記複数個のノードと、
各々が少なくとも１個のノードを包含する複数個のパーティションと
を前記システムが更に含み、
前記複数個のパーティションの各々に他のパーティションとの関係で優先度が割り当てられ、該割り当てられた優先度に基づいて前記複数個のパーティションが成功裡に活性化される、請求項２４に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概略、メモリ・スクラビングに関し、特にシステムの立ち上げ（wake-up）時間を早めるように適用された方法、装置およびコンピュータ・プログラムに関する。
【背景技術】
【０００２】
今日のコンピュータ・メモリ・チップの集積密度が高くなるとともに、個々のメモリ・セル構造のサイズが小さくなる結果として、個々のメモリ・セルは宇宙線やアルファ粒子放出により引き起こされるビット・エラーに対し益々脆弱になっている。そのようなビット・エラーはソフト・エラーとして知られている。個々のメモリ・ビットでソフト・エラーが生じる可能性は小さいが、コンピュータ、特にサーバーに大量のメモリが存在するとすれば、総体としてインストールされたメモリにおけるソフト・エラーの可能性は非常に大きい。
【０００３】
従来のシステムでは１個もしくは複数個のテスト・パターンを用いるメモリ・スクラビングはシステム上にインストールされた１個もしくは複数個のオペレーティング・システムの起動動作を開始し、そしてそのシステムをランタイム状態に移行する前にそのシステムのメモリ全体で行われる。ホスト・オペレーティング・システムのローディングの後に、そのシステム上に定義される１個もしくは複数個のパーティションが活性化されてもよいが、そのようなシステムは効率的でない。何故ならば全てのメモリがそのメモリによりたまたま使用されることになるかどうかに関係なく、そのシステムをランタイム（実行時）状態に移行させる前にそのシステムのメモリ全体をスクラビングする必要があるからである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は上記のような効率的でない従来のシステムを改良することにある。
【課題を解決するための手段】
【０００５】
本発明の一側面は、システムの立ち上げ時間を早める方法を含む。この方法は、スクラビングして、最少量のメモリを割り当てのために利用可能にするステップと、前記システム上にストアされたオペレーティング・システムの起動動作を実行するステップと、前記オペレーティング・システムの前記起動動作と並行しかつその後に、スクラビングして、追加量のメモリを割り当てのために利用可能にするステップとを含む。
【０００６】
本発明の他の側面は、複数個のメモリ・ユニットと、１個のメモリ・ユニットにおいてメモリをスクラブするように構成され、割り当てのために利用することができるようにされたスクラビング・ユニットと、オペレーティング・システムとを含む。前記スクラビング・ユニットはスクラブして、最少量のメモリを割り当てのために利用することができるようにし、前記オペレーティング・システムの起動動作は前記最少量のメモリがスクラブされかつ割り当てのために利用可能にされた後に実行される。更に、前記オペレーティング・システムの起動動作の実行と並行しかつその後に、前記スクラビング・ユニットがスクラブし、追加量のメモリを割り当てのために利用可能にする。
【０００７】
本発明の他の側面からみたシステムは、各々が最少ノード資源構成に関連付けられた複数個のノードと、前記複数個のノードのうちの少なくとも１個を包含する少なくとも１個のパーティションと、前記複数個のノードの各々に含まれる複数個のプロセッサと、前記複数個のプロセッサの各々に含まれる複数個のコアと、複数個のメモリ・コントローラとを含む。前記複数個のコアの各々が前記複数個のメモリ・コントローラのうちの少なくとも１個のメモリ・コントローラにインターフェースで結合し、前記複数個のメモリ・コントローラの各々が少なくとも１個のメモリ・ユニットを制御し、かつ前記最少ノード資源構成が、前記ノードを活性化するために、活性化される必要のあるノードに含まれる最少数のプロセッサに対応する。
【０００８】
本発明の他の側面は、システムの立ち上げ時間を早めるためのプロセスを含むコンピュータ・プログラムである。そのプロセスは、コンピュータにより実行されることで、当該コンピュータに、スクラビングして、最少量のメモリを割り当てのために利用することができるようにするステップと、前記システム上にストアされたオペレーティング・システムの起動動作を実行するステップと、前記オペレーティング・システムの前記起動動作と並行しかつその後に、スクラビングして、追加量のメモリを割り当てのために利用することができるようにするステップとを実行させることができる。
【０００９】
前述した側面による一つまたは複数の実施形態のシステムは、各々が少なくとも１個のノードを包含する複数個のパーティションを更に含んでもよい。またその少なくとも１個のノードは、最少ノード資源構成に関連付けられたノードであって、前記最少ノード資源構成が確立される条件で前記ノードが活性化されるようにすることができる。更に、前記複数個のパーティションの各々に他のパーティションとの関係で優先度が割り当てられ、該割り当てられた優先度に基づいて前記複数個のパーティションが成功裡に活性化されてもよい。
【図面の簡単な説明】
【００１０】
【図１】本発明の１個もしくは複数個の実施形態に従ったシステムを説明するブロック図である。
【図２】本発明の１個もしくは複数個の実施形態に従った方法を説明するフローチャートである。
【図３】本発明の１個もしくは複数個の実施形態に従った方法を説明するフローチャートである。
【図４】本発明の１個もしくは複数個の実施形態に従った方法を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
本発明の前記およびその他の実施形態は、添付図面に関連させて詳細に説明する。
【００１２】
当業者に知られているように、本発明は、システム、方法、コンピュータ・プログラムとして具体化され得る。
従って、本発明は、完全にハードウエアの実施形態、完全にソフトウエアの実施形態（ファームウエア、常駐ソフトウエア、マイクロコード等を含む）、またはソフトウエアおよびハードウエアの両側面を組み合わせた実施形態であって、両側面を含めて「回路」、「モジュール」または「システム」としてここでは言及され得る形態のいずれかの形式を取ることができる。更に、本発明の他の捉え方は、コンピュータ・プログラム・コードを内蔵させた１個もしくは複数個のコンピュータ可読媒体において具体化されるコンピュータ・プログラムの形式を取ることもできる。
【００１３】
１つもしくは複数のコンピュータ可読媒体の任意の組み合わせが使用されることができる。コンピュータ可読媒体はコンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体であってよい。コンピュータ可読ストレージ媒体は、例えば、以下に限定されるものではないが、電子的、磁気的、光学的、電磁気的、赤外線の、または半導体のシステム、装置、デバイス、または前述のものの任意の適当な組み合わせであってよい。コンピュータ可読ストレージ媒体のもっと具体的な例（全ては網羅していないリスト）は、１本もしくは複数本のワイヤ、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、消去可能なプログラマブル読出し専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読出し専用メモリ（ＣＤＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述のものの任意の適当な組み合わせを含む。本実施形態のコンテキストでは、コンピュータ可読ストレージ媒体は、命令実行システム、装置もしくはデバイスによりまたはそれと関連して使用されるプログラムをストアしあるいは含むことができる具体的な媒体であってよい。
【００１４】
本発明の実施形態の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ（登録商標）、Ｃ＋＋など、オブジェクト指向のプログラミング言語、およびＣプログラミング言語もしくは類似のプログラミング言語など、従来からある手続きプログラミング言語を含む１つもしくは複数のプログラミング言語の任意の組み合わせで記述されてもよい。そのプログラム・コードは、スタンドアローンのソフトウエア・パッケージとして、ユーザーのコンピュータ上で完全にもしくは部分的に実行されてもよいし、または部分的にユーザーのコンピュータ上、かつ部分的に遠隔のコンピュータ上で実行されてもよいし、あるいは遠隔のコンピュータまたはサーバー上で完全に実行されてもよい。後者のシナリオでは、遠隔のコンピュータがユーザーのコンピュータに任意の型のネットワーク、例えばローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）を介して接続されていてもよい。あるいは外部コンピュータ（例えば、インターネット・サービス・プロバイダを用いるインターネットを介して）その接続がなされていてもよい。
【００１５】
本発明の実施例による方法、装置（システム）およびコンピュータ・プログラムのフローチャートおよび／もしくはブロック図を参照して本発明を説明する。フローチャートおよび／もしくはブロック図の各ブロックおよびそれらのブロックの組合せがコンピュータ・プログラム命令によって実施され得ることが理解されよう。これらのコンピュータ・プログラム命令は、コンピュータもしくは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令がフローチャートおよび／もしくはブロック図の１個もしくは複数個のブロックで特定される機能／アクションを実行するための手段を生じるようなマシーンを提供するために、汎用目的のコンピュータ、特定目的のコンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。
【００１６】
これらのコンピュータ・プログラム命令はまたコンピュータ可読媒体にストアされてもよい。これはコンピュータもしくは他のプログラマブル・データ処理装置に特定の態様で機能するように指示することができ、その結果、コンピュータ可読媒体にストアされた命令が、フローチャートおよび／もしくはブロック図の１個もしくは複数個のブロックで特定される機能／アクションを実行する命令手段を含む製品（an article of manufacture）をもたらすようにするものである。このコンピュータ・プログラム命令はまた、一連の動作ステップがコンピュータもしくは他のプログラマブル・データ処理装置上で実行させられるようにコンピュータまたは他のプログラムマブル・データ処理装置上にロードされてもよい。これはコンピュータもしくは他のプログラマブル装置上で実行する命令が、フローチャートおよび／もしくはブロック図の１個もしくは複数個のブロックで特定される機能／アクションを実行するためのプロセスを提供するようなコンピュータ実装プロセスを生じるためである。
【００１７】
図１を参照すると、本発明の１個もしくは複数個の実施形態に従うシステムが１個もしくは複数個のノード１１０を内部に有するサーバー１００を含む。このノード１１０はまたノード・ブック、プロセッサ・ブックまたはドロワーとも呼ばれる。各ノード１１０は１個もしくは複数個のプロセッサ１２０を含み、各プロセッサ１２０は１個もしくは複数個のコア１３０を含む。各コア１３０は１個もしくは複数個のメモリ・コントローラ１４０にインターフェースで結合する。各メモリ・コントローラ１４０は１個もしくは複数個のメモリ・ユニット１５０を制御する。サーバー１００は、一例として、８個までのノードを含み、各ノードが４個のプロセッサを含む高性能ＰＯＷＥＲサーバーであってもよい。
【００１８】
更に、本発明の１個もしくは複数個の実施形態によるサーバー１００はそこに画成される１個もしくは複数個の論理パーティション即ちパーティション１６０を含んでもよい。パーティション１６０は１個もしくは複数個のノード１１０に跨っても包含してもよい。ノード１１０がサーバー１００に含まれる物理的なエンティティであるが、パーティション１６０はサーバー１００上に画成される論理的なエンティティである。各パーティション１６０はそこに同じかまたは異なるオペレーティング・システム（図示せず）を備えていてもよい。サーバー１００はハイパーバイザとも呼ばれるホスト・オペレーティング・システム（図示せず）を含んでいてもよい。そのハイパーバイザはハードウエア制御を提供するとともに他のいろいろなパーティションのロードされ得る他のオペレーティング・システムをモニタする。更に、各パーティション１６０はそのインストールされたオペレーティング・システムのほかに、そこにインストールされたいろいろなアプリケーション（図示せず）をも含んでもよい。更に、単一のユーザーまたは複数の異なるユーザーが複数の異なるパーティションを制御してもよい。
【００１９】
各メモリ・ユニット１５０はＤＩＭＭ（デュアル・インライン・メモリ・モジュール）であってもよい。ＤＩＭＭは一連のＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）集積回路を含む。ＤＩＭＭはこの産業で使用される任意の適当な型のであってよい。例えば、ＤＩＭMは、ビット・エラーを検出および／もしくは訂正するようメモリ・コントローラにより使用される特別のデータ・ビットを含むＥＣＣ（エラー訂正コード）ＤＩＭＭであってもよい。ここで採用される特定のＥＣＣスキームは、これに限るものではないが、ビット・エラーを検出および／もしくは訂正することのできる任意のスキームであってよい。例えば、ここで採用されるＥＣＣスキームは、６４ビット・ワードごとに特別のバイト（８ビットの組み合わせ）を使用するＳＥＣＤＥＤ（一つのエラー訂正、二つのエラー検出）スキームであってよい。そのようなエラー訂正スキームの一例はハミング・コードである。
【００２０】
図１を再度参照すると、本発明の１個もしくは複数個の実施形態によるサーバー１００がメモリ・スクラビング・ユニット１７０を含む。このメモリ・スクラビング・ユニット１７０はフレキシブル・サービス・プロセッサ（ＦＳＰ）のようなサービス・プロセッサであってもよい。メモリ・スクラビングはサーバー１００の信頼性を確保するのに使用される技法である。従って、メモリ・スクラビングはサーバーおよび他のコンピューティング装置のための長い使用可能時間に亘るＲＡＳ（信頼性、可用性、保守性）パラダイムの範囲内に入る。メモリ・スクラビングは予め定義されたテスト・パターンをあるメモリ・アドレスに書き込むこと、そのメモリ・アドレスからパターンを読み出すこと、そして潜在的なビット・エラーを同定するためにそのオリジナルのテスト・パターンにその読み出されたパターンを比較することを一般的に含む。
【００２１】
従来のシステムでは１個もしくは複数個のテスト・パターンを用いるメモリ・スクラビングはシステム上にインストールされた１個もしくは複数個のオペレーティング・システムの起動動作を開始し、そしてそのシステムをランタイム状態に移行する前にそのシステムのメモリ全体で行われる。ホスト・オペレーティング・システムのローディングの後に、そのシステム上に定義される１個もしくは複数個のパーティションが活性化されてもよい。そのようなシステムは効率的でない。何故ならば全てのメモリがそのメモリによりたまたま使用されることになるかどうかに関係なく、そのシステムをランタイム（実行時）状態に移行させる前にそのシステムのメモリ全体をスクラビングする必要があるからである。
【００２２】
図２は本発明の１個もしくは複数個の実施形態に従う方法を例示するフローチャートである。図２を参照すると、この方法のステップ２００では１個もしくは複数個のメモリ・ユニット１５０中の最少量のメモリがスクラブされ、割り当てのために利用可能にされる。メモリ・ユニット１５０はシングル・チャネルＤＩＭＭを指していてもよい。スクラビングする動作が実行されるメモリ量はそのサーバーにある全てのメモリ・ユニットまたはシングル・メモリ・ユニットにある全てのメモリ・ユニット１５０を含まないかもしれない。もっと具体的にいうと、スクラブされた最少量のメモリは、ノード１１０ごとに特定された最少ノード資源構成を確立するのに必要とされるメモリ量に対応するのであってよい。
【００２３】
特に、図１を再度参照すると、各メモリ・コントローラ１４０は１個もしくは複数個のメモリ・ユニット１５０を制御する。サーバー１００上にロードされるオペレーティング・システムの起動動作の初期化の前に、各メモリ・コントローラ１４０が最初は無効状態にされる。特定のメモリ・コントローラ１４０が制御する少なくとも１個のメモリ・ユニット１５０において最少量のメモリにメモリ・スクラビング動作が実行された後、このメモリ・コントローラ１４０は無効状態から有効状態に遷移して、そのメモリ・コントローラ１４０と関連付けられたスクラブされたメモリが１個もしくは複数個のノードに割り当てのために利用することができるようになる。
【００２４】
図１を再度参照すると、各ノード１１０が１個もしくは複数個のプロセッサ１２０を含み、各プロセッサ１２０が１個もしくは複数個のコア１３０を含むことができる。各コア１３０は１個もしくは複数個のメモリ・コントローラ１４０にインターフェースで結合する。特定のメモリ・コントローラ１４０が制御する少なくとも１個のメモリ・ユニット１５０において少なくとも最少量のメモリがメモリ・スクラビング動作を受けた後、そのメモリ・コントローラ１４０は有効とされる。そこでそのスクラブされたメモリはノード１１０中に含まれるプロセッサ１２０のコア１３０に割り当てのために利用可能となる。
【００２５】
前述のとおり、最少ノード資源構成がノード１１０ごとに特定される。その最少ノード資源構成は、スクラブされる必要のある最少量のメモリに対応し、かつそのノード１１０を活性化する（すなわち、そのノードを動作可能にしそのシステムにより使用される準備が整う）ためにそのノード１１０を割り当てのために利用可能にされる。その最少ノード資源構成は、そのノード１１０を活性化させるために、活性化されるべきノード１１０に含まれる最少数のプロセッサ１２０に更に対応する。加えて、その最少ノード資源構成は、ノード１１０を活性化させるために、活性化されるべきプロセッサ１２０に含まれる最少数のコア１３０に更に対応する。
【００２６】
一例として、最少ノード資源構成は少なくとも１６ＧＢのスクラブされたメモリの割り当てと、ノードを活性化させるため少なくとも２個の活性化されたコアの割り当てを必要とするかもしれない。従って、もし特定のノードが４個のプロセッサを含み、各プロセッサが２個のコアを含むなら、そのノードを活性化させるためにその４個のプロセッサのうちの２個のプロセッサの各々における１個のコアの中から１６ＧＢのスクラブされたメモリの割り当てを、そのノードのための最少ノード資源構成が必要とするかも知れない。１個のノードのための最少ノード資源構成はノードを活性化させるのに必要とされる最少のコア／プロセッサの組み合わせに対し割り当てのために利用可能でなければばらない最少量のスクラブされたメモリに対応する。
【００２７】
図２を参照すると、ノードごとの最少ノード資源構成を確立するために必要とされる最少量のメモリがスクラブされて割り当てのために利用可能とされた後、そのサーバー上でロードされるホスト・オペレーティング・システムの起動動作が実行される（ステップ２０２）。ステップ２０３では、そのオペレーティング・システムの起動動作と並列にかつその後追加量のメモリがスクラブされ、利用可能とされる。
【００２８】
図１を再度参照すると、本発明の１個もしくは複数個の実施形態に従うサーバー１００は、１個もしくは複数個のノード１１０を包含する１個もしくは複数個のパーティション１６０をそのサーバー上に定義して含んでもよい。そのパーティション１６０はそのサーバー上に定義される論理的なエンティティであり、１個もしくは複数個のノードに跨り、あるいは包含する。各パーティション１６０は、オペレーティング・システム（群）、および／もしくはそれと関連付けられるかもしれずかつそのパーティションとともにランするアプリケーションに基づいて或る程度のメモリわりあてを必要とする。更には、１個もしくは複数個のパーティション１６０の各々が他の全てのパーティションに対し優先度が割り当てられてもよい。特定のパーティションに割り当てられる優先度は、そのパーティションが他のパーティションに対しどの時点で活性化されるかを決定する際の一つの要素となり得る。
【００２９】
もっと具体的にいうと、一つのパーティションは全てのパーティションの中で最高の優先度を割り当てられることができる。残りの各パーティションはそこで独特の優先度を割り当てられてもよく、これによって最高から最低の優先度までそれらのパーティションを順序付けることができる。特定のパーティションに割り当てられる優先度は静的であってもよい。代わりに、あるパーティションの優先度は、例えばそのパーティションのメモリ資源のための需要次第で変えてもよい。
【００３０】
図３は本発明の１個もしくは複数個の実施形態に従う方法の略図を提供するフローチャートを示す。その方法の初期のステップとして、全ての必要なパーティションが活性化されてしまったか判定される（ステップ３００）。もし全ての必要なパーティションが活性化されてしまったと判定されるなら、残りの割り当てられていないメモリがスクラブされて、パーティションの優先度、および／もしくは追加のメモリ資源を求めるパーティションの需要に基づき１個もしくは複数個のパーティションに割り当てられる（ステップ３０７）。ブロック３０７のステップを後で更に詳細に説明する。代わりに、もし活性化を必要とするが未だ活性化されないパーティションがあると判定されるなら、そのパーティションは、サーバーの動作状態を活性化を必要とする他の全てのパーティションとの関係で最高の優先度を有するパーティションが識別される（ステップ３０１）。その後、その方法のステップ３０２では、ステップ３０１で識別されたそのパーティションのメモリ資源需要が判定される。
【００３１】
パーティションのメモリ資源需要とは、スクラブされなければならず、かつそのパーティションを活性化させるように割り当てのため利用することができるようにされるメモリ量を云う。パーティションのメモリ資源需要次第では、そのパーティションにより包含された１個もしくは複数個のノードが活性化されてもよい。例えば、パーティションの単一のノードは、そのパーティションのメモリ資源需要が低い場合のシナリオにおけるそのノードの最少ノード資源構成とともに活性化されてもよい。代わりに、パーティションにより包含される１個よりも多いノードは、そのパーティションのメモリ資源需要が高いときに活性化されてもよい。例えば、パーティションが１個よりも多いノードを含み、かつそれにメモリを割り当てさせる単一のノードがそのパーティションのメモリ資源需要に合致することができない場合、１個もしくは複数個の追加ノードがそのパーティションのメモリ資源需要に合致するように活性化されてもよい。
【００３２】
図３を再度参照すると、そのパーティションのメモリ資源需要が判定された（ステップ３０２）後、そのメモリ資源需要は、スクラブされかつ割り当てのために利用可能にされたメモリ量に比較される（ステップ３０３）。もしそのメモリ資源需要が利用可能なスクラブされたメモリ量よりも少ないか等しいなら（すなわち、割り当てのために利用可能な、スクラブされたメモリ量がそのパーティションのメモリ資源需要に十分合致するなら）、そのパーティションのメモリ資源需要に合致し得る、スクラブされたメモリ量がそのパーティションに割り当てられ、そのパーティションが活性化される（ステップ３０４）。
【００３３】
ステップ３０４においてそのパーティションが活性化された後、全ての必要なパーティションが活性化されてしまったか判定が再び行われる（ステップ３００）。もしこの段階で全ての必要なパーティションが活性化されてしまっていると判定されるなら、メモリ・スクラビング動作がその残りの割り当てのないメモリで行われる（ステップ３０７）。その結果として得られるスクラブされたメモリは、パーティション優先度および／もしくはパーティションのメモリ資源需要を含むいろいろな基準に基づき１個もしくは複数個のパーティションに割り当てられる（ステップ３０７）。代わりに、もし活性化を必要とする追加のパーティションがあると判定されるなら、そのパーティションは、活性化を必要とするが未だ活性化されていないパーティションの中から最高の割り当て優先度をいまや有するパーティションが識別される（ステップ３０１）。
【００３４】
もしステップ３０３において割り当てのために利用可能なスクラブされたメモリの量がそのパーティションのメモリ資源需要に合致させるには不十分であると判定されるなら、メモリ・スクラビング・ユニット１７０にリクエストが送られて、スクラブし、追加量のメモリを割り当てのために利用することができるようにする。その割り当てのために利用することができるメモリの合計量はそのパーティションのメモリ資源需要に合致するようにされる。その後、そのパーティションメモリ資源需要に合致するのに十分なスクラブされたメモリ量がそのパーティションに割り当てられ、そのパーティションが活性化される（ステップ３０６）。そのパーティションが活性化された後、全ての必要とされるパーティションが活性化されてしまったかもう一度判定され、この実施形態の方法が前述のとおり続行する。
【００３５】
前述のとおり、ステップ３０７では、メモリ・スクラビング動作が、残りの割り当てられていないメモリ上で実行され、そこでそれらの割り当てられていないメモリが、それらのパーティションの間での優先度の変動および／もしくはそれらのパーティションのメモリ資源需要の変動に基づき１個もしくは複数個のパーティションに割り当てられる。メモリ割り当てがＤＬＰAＲ（動的論理パーティショニング）メカニズムを介して実行されてもよい。ＤＬＰＡＲメカニズムは、そのパーティションで実行中のオペレーティング・システムをシャットダウンして再起動しなければならないということなしに、メモリが所与のパーティションに割り当てられたり、あるいはそこから取り除かれたりするのを許容するメカニズムである。メモリの割り当てはまた所与のパーティションから他のパーティションにパーティションの優先度および／もしくはパーティションのメモリ資源需要に基づき動的に転送されてもよい。
【００３６】
加えて、全ての必要とされるパーティションが活性化され、かつ十分なメモリ資源が各パーティションに割り当てられてしまった後、使用されていないメモリをスクラビングするよりもパーティションがメモリの割り当てを必要としない期間中に使用済みのメモリ上で更なるメモリ・スクラビングが行われてもよい。このようにして、使用されていないメモリはスクラブされる必要がなくてもよい。
【００３７】
本発明の１つもしくは複数の実施形態では、メモリ・スクラビング・ユニット１７０（図１）が例えば、ファームウエアを関連させたサービス・プロセッサであってもよい。これまでにも説明したように、メモリ・ユニット１５０（図１）はＤＩＭＭであってもよい。しかし、メモリ・ユニット１５０がＤＩＭＭに限定されることなく、この産業界で使用される任意の型のメモリであってもよいことに留意されたい。各ＤＩＭMは、そのＤＩＭＭのフル・データ・ビット幅（例えば６４ビット）のためにアクセスされ得るＤＲＡＭの独立したセットの数に対応するかもしれない或る数のランクを一緒に関連付けさせていてもよい。
【００３８】
本発明の一つもしくは複数の実施形態では、サービス・プロセッサ・ファームウエアはＤＩＭＭおよびＲＡＮＫｉｄのインデックス付きのテーブルを維持していてもよい。そのインデックス付きのテーブルにおける特定の位置の値は、その位置により表される特定のＤＩＭＭにおける特定のＲＡＮＫがスクラブされてしまったかを示していてもよい。
【００３９】
図４が本発明の一つもしくは複数の実施形態に従う方法のフローチャートを示す。追加的なメモリの割り当てのリクエストに応答して、本発明の方法のステップ４００では、サービス・プロセッサ・ファームウエアは、スクラブされ、割り当てのない必要とされる量のメモリが利用可能かどうか判定するためにそのインデックス付きテーブル上でルックアップ動作を行う。もし追加メモリを求めたリクエストに十分合致する、スクラブされた割り当てのないメモリの量が利用可能なら、そのメモリ・リクエストを満足させるに十分なスクラブされたメモリの量が１個もしくは複数個のパーティションの間で割り当てられる（ステップ４０１）。
【００４０】
もしスクラブされた、割り当てのない利用可能なメモリの量が追加のメモリ需要に合致させるのに十分でないなら、サービス・プロセッサ・ファームウエアは、リクエストされたメモリのサイズに対応する、スクラブされていないメモリの連続したセクションを検索する（ステップ４０２）。もしスクラブされていないメモリの連続したセクションが割り当てのために利用可能であると、そのサービス・プロセッサ・ファームウエアが判定するなら、メモリのその連続したセクションがスクラブ（洗い出）され、そして１個もしくは複数個のパーティションの間で割り当てられる。
【００４１】
他方、もしステップ４０２において、割り当てのためにリクエストされた量のメモリのサイズに対応する、スクラブされていないメモリの連続したセクションが利用可能でないと、サービス・プロセッサ・ファームウエアが判定するなら、そのファームウエアは、割り当てのためにリクエストされたメモリのサイズに対応する組み合わせサイズを持つ最適の塊の数のメモリ（その幾つかは不連続であってもよい）を識別する（ステップ４０４）。その最適な数は、例えばリクエストされたメモリのサイズに対応する、再少数の不連続な塊のメモリであってもよい。その後、その識別されたメモリの塊はスクラブされ、１個もしくは複数個のパーティションの間で割り当てられる（ステップ４０５）。割り当てのためにリクエストされたメモリのサイズがそのＲＡＮＫのサイズの倍数でないかもしれないから、サービス・プロセッサ・ファームウエアが、スクラブしてもよいＲＡＮＫの次にもっとも近い倍数のサイズであるサイズを持つ或る量のメモリを、代わりに検索し、そしてスクラブしてもよいということに留意されたい。
【００４２】
図のフローチャートおよびブロック図は、本発明のいろいろな実施形態に従うシステム、方法およびコンピュータ・プログラムの可能な導入例のアーキテクチャ、機能および動作を説明している。この点で、フローチャートまたはブロック図の各ブロックが、モジュール、セグメント、または特定の論理機能を実装するための１個もしくは複数個の実行可能命令を含むコードの部分を表してもよい。代替実施形態ではそのブロックに示された機能が、図に示された順序から外れて生じてもよいことに留意されたい。例えば、連続して示されている２個のブロックが、そこに含まれる機能によっては、実際はほぼ同時に実行されたり、それらのブロックがときには逆の順序で実行されたりする。ブロック図および／もしくはフローチャートの説明の各ブロック、およびブロック図および／もしくはフローチャートの説明のブロックの組み合わせが、特定目的のハードウエアおよびコンピュータ命令の機能もしくは動作またはその組み合わせを実行する特定目的のハードウエアをベースにするシステムによって実装され得ることにも留意されたい。
【００４３】
本発明を１個もしくは複数個の実施形態およびその変形した形態について具体的にかつ詳細に図示し説明してきたが、特許請求の範囲に示したような発明の真の趣旨および範囲から逸れずにその形態の等価な変化および詳細をなし得ることは当業者が容易に理解できよう。特許請求の範囲内に属するそのような変形物および等価物まで本発明がカバーしていると思料する。
【符号の説明】
【００４４】
１００  サーバー
１１０  ノード
１２０  プロセッサ
１３０  コア
１４０  メモリ・コントローラ
１５０  メモリ・ユニット
１６０  パーティション
１７０  メモリ・スクラビング・ユニット
【図１】
2011118900.tif 000003
【図２】
2011118900.tif 000004
【図３】
2011118900.tif 000005
【図４】
2011118900.tif 000006