(57)【要約】【課題】仮想パーティションシステムにおけるグローバルオペレーションに起因するオペレーティングシステムパニックおよびシステム性能劣化等を防ぐ。【解決手段】データ処理システムおよびデータ処理方法。実施の形態は、複数の仮想パーティションを含む少なくとも１つのハードパーティションを備えるデータ処理システムであって、仮想パーティションのそれぞれが、仮想アドレスを実メモリの実アドレスに関係付けるメモリアクセス手段を介してアクセス可能なそれぞれの仮想アドレス空間を備え、各仮想アドレス空間が、それぞれの一意の仮想アドレスを備える、データ処理システムを提供する。【選択図】図２
2008276772.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想パーティションを含む少なくとも１つのハードパーティションを備えるデータ処理システムであって、
前記仮想パーティションのそれぞれが、
仮想アドレスを実メモリの実アドレスに関係付けるメモリアクセス手段を介してアクセス可能なそれぞれの仮想アドレス空間
を備え、
前記仮想アドレス空間のそれぞれは、
その一意の仮想アドレス
を備える
データ処理システム。
【請求項２】
前記複数の仮想パーティションのうちの１つの仮想パーティションに、それぞれの一意の仮想アドレスを備える１つの仮想アドレス空間を割り当てる手段
を備える請求項１に記載のデータ処理システム。
【請求項３】
前記割り当てる手段は、所定のオペレーションに応答する
請求項２に記載のデータ処理システム。
【請求項４】
前記所定のオペレーションは、
所定のクラスのソフトウェアを、前記複数の仮想パーティションのうちの少なくとも１つの仮想パーティションに関連付けること
を含む
請求項３に記載のデータ処理システム。
【請求項５】
前記所定のクラスのソフトウェアは、
オペレーティングシステム
を含む
請求項４に記載のデータ処理システム。
【請求項６】
前記所定のオペレーションは、
ブートオペレーション
を含む
請求項３〜５のいずれか一項に記載のデータ処理システム。
【請求項７】
前記それぞれの一意の仮想アドレスのいずれにも、一意の仮想アドレスをさらに割り当てる手段
を備える請求項１〜６のいずれか一項に記載のデータ処理システム。
【請求項８】
前記一意の仮想アドレスをさらに割り当てる手段は、所定のクラスのソフトウェアに関連付けられる、より多くのメモリを求める要求に応答する
請求項７に記載のデータ処理システム。
【請求項９】
請求項１〜８のいずれか一項に記載のデータ処理システム
を備える複合体（complex）。
【請求項１０】
データ処理方法であって、
コンピュータシステムの第１の仮想パーティション、または、このようなコンピュータシステムのこのような仮想パーティションのカーネルの少なくとも一方に第１の一組の仮想アドレスを関連付けること
を含み、
前記第１の一組の仮想アドレスのうちの仮想アドレスは、
前記コンピュータシステムの前記第１の仮想パーティション、および、前記コンピュータシステムの前記第１の仮想パーティションの前記カーネルの少なくとも一方に一意であり、
前記第１の一組は、
前記コンピュータシステムの第２の仮想パーティション、および、前記コンピュータシステムの前記第２の仮想パーティションの第２のカーネルの少なくとも一方に関連付けられる少なくとも第２の一組の仮想アドレスと共通の仮想アドレス
を含まない
データ処理方法。
【請求項１１】
データ処理方法であって、
前記コンピュータシステムの前記第１の仮想パーティション、または、前記コンピュータ前記（such the）システムの第１の仮想パーティションの前記カーネルの前記少なくとも一方に第３の一組の仮想アドレスを関連付けること
を含み、
前記第３の一組の仮想アドレスのうちの仮想アドレスは、前記コンピュータシステムの前記第１の仮想パーティション、および、前記コンピュータシステムの前記第１の仮想パーティションの前記カーネルの前記少なくとも一方に一意であり、
前記第３の一組は、前記コンピュータシステムの前記第２の仮想パーティション、および、前記コンピュータシステムの前記第２の仮想パーティションの前記第２のカーネルの少なくとも一方に関連付けられる少なくとも前記第２の一組の仮想アドレスと共通の仮想アドレスを含まない
請求項１０に記載のデータ処理方法。
【請求項１２】
請求項１〜９のいずれかに記載のシステムを実現するように構成される命令、または、
請求項１０または１１に記載の方法を実施するように構成される命令を有するコンピュータプログラム
を含むコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムおよびデータ処理方法に関する。
【背景技術】
【０００２】
仮想パーティションは、システムアドミニストレータが、独立した動作環境を作成することを可能にする。
サーバ環境内の仮想パーティションは、単一のサーバ内においてまたは実現される単一サーバ内のハードウェアパーティション内において複数の仮想サーバまたは仮想パーティションを可能にするソフトウェアパーティショニング技術を使用して実現される。
たとえば、ＨＰ−ＵＸ  １１ｉ仮想パーティション（ｖＰａｒｓ）は、単一のサーバ内においてまたはｎＰａｒｔｉｔｉｏｎと組み合わせれば１つまたは２つ以上のハードウェアパーティション内において仮想パーティションを提供する。
各仮想パーティションは、それぞれのオペレーティングシステムのインスタンスのホストとなり、関連するサポート資源を有する。
オプションとして、各仮想パーティションは、１つまたは２つ以上のアプリケーションおよび１人または２人以上のユーザを含む。
【０００３】
複数の仮想パーティションを有するように構成されたサーバの物理メモリは、各仮想パーティションのオペレーティングシステムが、全仮想メモリアドレス空間にアクセスするように見える方法で管理される。
仮想メモリは、当該技術分野では既知であり、ＣＰＵハードウェアは、仮想パーティション内で使用される仮想アドレスと、仮想アドレスをサポートするサーバまたは他のコンピュータシステムのメモリの実アドレスとの間のマッピングをキャッシュする変換索引バッファ（ＴＬＢ）を実装することによって、仮想メモリの実現を助ける。
【０００４】
グローバルな結果およびグローバルな影響を有するさまざまなイベントがコンピュータシステム内で生じる。
たとえば、所与の仮想アドレスに関連付けられるＴＬＢパージオペレーションは、パージされる仮想アドレスのすべてのインスタンスをＴＬＢから削除する。
これは、仮想パーティションをハンドリングする複数のオペレーティングシステム間で共有されるＴＬＢを有するシステム内において、ＴＬＢパージを引き起こしたオペレーティングシステムには容認可能であり得るが、ＴＬＢパージオペレーションは、そのパージを引き起こしたオペレーティングシステムを含むパーティション以外のパーティションに関連付けられる同じ仮想アドレスを有するＴＬＢエントリを含めて、パージされた仮想アドレスのすべてのインスタンスを削除することになる。
このようなグローバルオペレーションは、オペレーティングシステムパニックおよびシステム性能劣化等の深刻な問題を引き起こす恐れがある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上述のような背景技術の問題点を解消することを目的とする。
【課題を解決するための手段】
【０００６】
次に、単なる例として、添付図面に関して本発明の実施の形態を説明することにする。
【発明を実施するための最良の形態】
【０００７】
図１を参照すると、４つの中央処理装置１０２〜１０８を備えるパーティショニングされたコンピュータシステム１００が示されている。
中央処理装置１０２〜１０８は、複数の仮想パーティション１１０〜１１４をサポートするように構成されている。
仮想パーティション１１０〜１１４は、それぞれのカーネル１１６〜１２０を含む。
これらのカーネルは、たとえば、図示される４つのアプリケーション１２２〜１２８等の１つまたは２つ以上のアプリケーションをサポートする。
各カーネル１１６〜１２０は、それぞれの仮想アドレス空間１３０〜１３４の全体にアクセスする。
たとえばＩｔａｎｉｕｍアーキテクチャ上のグローバル仮想アドレスは、領域ＩＤおよび仮想アドレスから成る。
したがって、グローバル仮想アドレスは、＜領域ＩＤ＞．＜仮想アドレス＞という形態を有する。
したがって、仮想アドレス空間は、領域ＩＤ０ｘ００００００〜０ｘＦＦＦＦＦＦと組み合わせて仮想アドレス０ｘ００００００〜０ｘＦＦＦＦＦＦを含むことを十分理解することができる。
仮想アドレス空間１３０〜１３４は、変換索引バッファ１３６および実メモリ１３８の組み合わせを使用して実現される。
図１には、説明を簡単にすると共に図を過度に複雑にすることを回避するために、単一のＴＬＢ１３６が示されている。
しかしながら、ＣＰＵ１０２〜１０８のそれぞれが、それぞれのＴＬＢを実装することに留意すべきである。
【０００８】
また、コンピュータシステム１００は、コンピュータシステム１００のＣＰＵ１０２〜１０８および他の資源をカーネル１１６〜１２０に適切に割り当てることによって３つの仮想パーティション１１０〜１１４を確立するためのパーティションモニタ１４０も備える。
【０００９】
第２のカーネル１１８に関連付けられる仮想メモリ１３２は、全仮想アドレス空間０ｘ００００００〜０ｘＦＦＦＦＦＦ、および、０ｘ００００００〜０ｘＦＦＦＦＦＦの全領域空間を備えることを十分理解することができる。
メモリ１３２は、「ｒｉｄ１．ｖａ１」というグローバル仮想アドレスを有する特定の仮想アドレス１４２を含むものとしても示されている。
ＴＬＢ１３６は、エントリ１４４を含む複数のエントリを含む。
エントリ１４４は、仮想アドレス１４２を実メモリ１３８内の実アドレス１４６にマッピングする。
【００１０】
また、第３のカーネル１２０に関連付けられる仮想メモリ１３４も、全仮想アドレス空間０ｘ００００００〜０ｘＦＦＦＦＦＦ、および、０ｘ００００００〜０ｘＦＦＦＦＦＦの全領域空間を備えることを十分理解することができる。
メモリ１３４は、グローバル仮想アドレス「ｒｉｄ１．ｖａ１」を有する特定の仮想アドレス１４８を含むものとしても示されている。
ＴＬＢ１３６は、エントリ１５０を含む。
エントリ１５０は、仮想アドレス１４８を実メモリ１３８内の実アドレス１５２にマッピングする。
【００１１】
第２のカーネル１１８に関連付けられる仮想メモリ１３２の仮想アドレス「ｒｉｄ１．ｖａ１」に関連付けられるＴＬＢパージオペレーションが生成されるものと仮定する。
このＴＬＢパージオペレーションは、「ｒｉｄ１．ｖａ１」のすべてのインスタンスをＴＬＢ１３６から削除する。
したがって、このパージオペレーションは、第２のカーネル１１８のメモリ１３２のグローバル仮想アドレス「ｒｉｄ１．ｖａ１」、すなわち仮想アドレス１４２に関連付けられるエントリを削除する。
しかしながら、このパージオペレーションは、第３のカーネル１２０に関連付けられる仮想メモリ１３４の仮想アドレス「ｒｉｄ１．ｖａ１」、すなわち仮想アドレス１４８に関連付けられるエントリ１５０も削除する。
ＴＬＢ１３６からエントリ１５０を削除することによって、第３の仮想パーティション１１４の適切なオペレーションが不都合に妨げられることになる。
【００１２】
図２を参照すると、４つの中央処理装置２０２〜２０８を備えるパーティショニングされたコンピュータシステム２００が示されている。
中央処理装置２０２〜２０８は、複数の仮想パーティション２１０〜２１４をサポートするように構成されている。
仮想パーティション２１０〜２１４は、それぞれのカーネル２１６〜２２０を含む。
これらのカーネルは、たとえば、図示される４つのアプリケーション２２２〜２２８等の１つまたは２つ以上のアプリケーションをサポートする。
各カーネル２１６〜２２０は、それぞれの仮想アドレス空間の全体のうちのそれぞれの部分２３０〜２３４にアクセスする。
単なる例示の目的で、仮想アドレス空間は、仮想アドレス０ｘ００００００〜０ｘＦＦＦＦＦＦ、および、０ｘ００００００〜０ｘＦＦＦＦＦＦの領域ＩＤ空間を備えるものと仮定する。
この仮想アドレス空間のそれぞれの部分２３０〜２３４は、変換索引バッファ２３６および実メモリ２３８の組み合わせを使用して実現される。
この場合も、図１に関して解説したように、単一のＴＬＢ２３６が図２に示されている。
しかしながら、ＣＰＵ２０２〜２０８のそれぞれが、それぞれのＴＬＢ２３６を実装することに留意すべきである。
【００１３】
また、コンピュータシステム２００は、コンピュータシステム２００のＣＰＵ２０２〜２０８および他の資源をカーネル２１６〜２２０に適切に割り当てることによって３つの仮想パーティション２１０〜２１４を確立するためのパーティションモニタ２４０も備える。
【００１４】
第２のカーネル２１８に関連付けられる仮想メモリ２３２は、ｒｉｄ００〜ｒｉｄ０１にわたる領域ＩＤ空間を備えることを十分理解することができる。
ここで、ｒｉｄ００は、第１の領域ＩＤ、すなわち下位領域ＩＤを表し、ｒｉｄ０１は、第２の領域ＩＤ、すなわち上位領域ＩＤを表している。
たとえば、領域ＩＤ  ｒｉｄ００およびｒｉｄ０１は、０ｘ００００００〜０ｘＦＦＦＦＦＦの利用可能な領域ＩＤ空間のうちの０ｘ４０００００〜０ｘ７ＦＦＦＦにわたることができる。
メモリ２３２は、ｒｉｄ００〜ｒｉｄ０１によって定められる領域ＩＤ空間または領域ＩＤ範囲内にあるｒｉｄＷを有する「ｒｉｄＷ．ｖａＸ」というグローバル仮想アドレスを有する特定の仮想アドレス２４２を含むものとしても示されている。
この特定の例では、ｒｉｄＷは、０ｘ４０００００〜０ｘ７ＦＦＦＦの領域ＩＤ空間内にある。
ＴＬＢ２３６は、エントリ２４４を含む複数のエントリを含む。
エントリ２４４は、仮想アドレス２４２、すなわちｒｉｄＷ．ｖａＸを実メモリ２３８内の実アドレス２４６にマッピングする。
【００１５】
また、第３のカーネル２２０に関連付けられる仮想メモリ２３４は、ｒｉｄ１０〜ｒｉｄ１１にわたる領域ＩＤ空間を備えることを十分理解することができる。
ここで、ｒｉｄ１０は、第１の領域ＩＤ、すなわち下位領域ＩＤを表し、ｒｉｄ１１は、第２の領域ＩＤ、すなわち上位領域ＩＤを表している。
たとえば、領域ＩＤ  ｒｉｄ１０およびｒｉｄ１１は、全領域ＩＤ空間または領域ＩＤ範囲０ｘ００００００〜０ｘＦＦＦＦＦＦのうちの０ｘ８０００００〜０ｘＢＦＦＦＦＦにわたることができる。
メモリ２３４は、ｒｉｄ１０〜ｒｉｄ１１によって定められる領域ＩＤ空間または領域ＩＤ範囲内にあるｒｉｄＹを有する「ｒｉｄＹ．ｖａＺ」というグローバル仮想アドレスを有する特定の仮想アドレス２４８を含むものとしても示されている。
この特定の例では、ｒｉｄＹは、０ｘ８０００００〜０ｘＢＦＦＦＦの領域ＩＤ空間内にある。
ＴＬＢ２３６はエントリ２５０を含む。
エントリ２５０は、仮想アドレス２４８を実メモリ２３８内の実アドレス２５２にマッピングする。
【００１６】
モニタ２４０は、カーネル２５６と領域ＩＤ２５８の対応する範囲との間のマッピングを提供するテーブル２５４にアクセスする。
たとえば、当業者は、たとえばＩＡ−６４アーキテクチャ内の仮想アドレスが、領域ＩＤ（ＲＩＤ）とも呼ばれる仮想領域番号（ｖｒｎ）、仮想ページ番号（ｖｐｎ）、およびオフセットを含むことを十分理解する。
カーネル２１６〜２２０は、割り当てられる領域ＩＤの範囲についてモニタまたはＣＰＵに要求を発行するように構成されている。
モニタ２４０は、連続する一組の利用可能な領域ＩＤをテーブル２５４から求め、それを要求側カーネルに割り当てる。
要求側カーネルによって使用される仮想アドレスは、当該一組の割り当てられる仮想領域番号を使用して定められる。
モニタは、カーネルが異なる仮想領域番号を有し、それによって、カーネルに割り当てられる仮想アドレス空間が確実に異なるように、仮想領域番号の割り当てを管理する。
したがって、上記例において、たとえ「ｖａＸ」が「ｖａＹ」と同一であっても、対応するグローバルアドレス「ｒｉｄＷ．ｖａＸ」および「ｒｉｄＹ．ｒｉｄＺ」は異なり、領域ＩＤの割り当てを制御するモニタまたは他のエンティティが原因で同じになる可能性は決してない。
したがって、上述したそれぞれの部分は、仮想領域番号および仮想ページ番号およびオフセットの組み合わせを使用して定められる。
仮想領域番号は、所定のビット数を含むことができる。
たとえば、仮想領域番号は、３ビットを使用して表すことができる。
この３ビットによって、実行中のパーティション間で分配することができる最大８つの仮想領域番号が提供される。
【００１７】
第２のカーネル２１８に関連付けられる仮想メモリ２３２のグローバル仮想アドレス「ｒｉｄＷ．ｖａＸ」に関連付けられるＴＬＢパージオペレーションが生成されるものと仮定する。
このＴＬＢパージオペレーションは、「ｒｉｄＷ．ｖａＸ」のすべてのインスタンスをＴＬＢ２３６から削除する。
しかしながら、従来技術とは異なり、第２の仮想パーティション２１２が利用可能な領域ＩＤの範囲は、他のあらゆる仮想パーティションと共通のいかなる領域ＩＤも含まず、特に第３の仮想パーティション２１４と共通のいかなる領域ＩＤも含まないので、このＴＬＢパージオペレーションは、たとえ仮想アドレス「ｖａＸ」および「ｖａＺ」が同じであっても、他の仮想パーティション２１０および２１４に関連付けられるＴＬＢ２３６のエントリに悪影響を与える可能性はない。
さらに例示するために、「ｒｉｄＷ」は、領域ＩＤ範囲ｒｉｄ００〜ｒｉｄ０１内にあり、この範囲は、他のどのパーティションに割り当てられる範囲とも重ならない。
これによって、パーティション間にわたるグローバル仮想アドレスが常に一意となり、したがって、或るパーティションに対するＴＬＢパージが他のパーティションに影響を与える可能性がないことが確実になる。
【００１８】
上記実施形態は、グローバルオペレーションの一実施形態であるＴＬＢパージオペレーションに関して説明されたが、実施形態は、これに限定されるものではない。
仮想アドレスが、特にグローバルベースの他のあらゆるタイプのオペレーション、すなわち、本発明がなければ他の仮想パーティションまたはＣＰＵに関連付けられるグローバル仮想アドレスに悪影響を与える可能性を有する他のあらゆるタイプのオペレーションによる影響を受ける可能性がある実施形態を実現することができる。
【００１９】
上述した実施形態は、３つのパーティション２１０〜２１４を使用して例示されている。
しかしながら、他の或る個数のパーティションも、等しく本発明から十分に利益を受けることができる。
さらに、上記実施形態は、３つのカーネル２１６〜２２０を使用して例示されている。
しかしながら、他の或る個数のカーネルも、等しく良好に使用することができる。
またさらに、アプリケーション２２２、２２４、２２６、および２２８は、単なる例示にすぎない。
他の或る個数、すなわち、アプリケーションの総数または仮想パーティション当たりのアプリケーションの個数も、等しく良好に本発明の実施形態の利点を例示するために使用することができたであろう。
【００２０】
上記実施形態は、４つのＣＰＵを使用して例示されている。
しかしながら、実施形態は、このような構成に限定されるものではない。
実施形態は、任意の個数のハードパーティションを使用して実現することができる。
上記実施形態では、第１のＣＰＵ２０２および第２のＣＰＵ２０４は、第１のハードパーティションおよび第２のハードパーティションの一部を成すのに対して、残りの２つのＣＰＵ２０６および２０８は、同じハードパーティションの一部を成す。
【００２１】
本明細書では、以下の定義が適用される。
【００２２】
複合体は、パーティショニング可能なコンピュータシステム全体であり、これには、たとえば、少なくとも１つのキャビネット、すべてのセル、ＩＯ筐体、ケーブル、並びに電力コンポーネントおよびユーティリティコンポーネントを含むサーバを備えることができる。
上記コンピュータシステム２００は、このような複合体の一部を形成するにすぎない。
【００２３】
ハードパーティションは、たとえば、サーバ内のｎＰａｒｔｉｔｉｏｎ等、隔離されたハードウェア環境である。
ｎＰａｒｔｉｔｉｏｎ製品は、Ｈｅｗｌｅｔｔ  Ｐａｃｋａｒｄ社から入手可能である。
単一のスタンドアロンサーバは、いくつかの実施形態のハードパーティションと等価であると考えることができる。
【００２４】
ｎＰａｒｔｉｔｉｏｎは、各グループが他のグループから独立して動作するセルボードのグループに複合体を分割する複合体のサブセットである。
たとえば、ｎＰａｒｔｉｔｉｏｎは、たとえばＨＰ−ＵＸ等のオペレーティングシステムの単一のインスタンスを実行することもできるし、仮想パーティションにさらに分割することもできる。
【００２５】
仮想パーティションは、ハードパーティションのソフトウェアパーティションであり、各仮想パーティションは、たとえばＨＰ−ＵＸ等のオペレーティングシステムのインスタンスを含む。
ハードパーティションは、複数の仮想パーティションを含むことができるが、その逆は当てはまらない。
仮想パーティションは、ハードパーティションの境界にまたがることができない。
【００２６】
仮想パーティションの仮想アドレスが相互に排他的であるような仮想アドレス空間の仮想アドレスの注意深い割り当てによって、仮想パーティションに関連付けられる仮想アドレス間の重なりがなくなるので、或る仮想パーティションにより引き起こされるかまたは発行されるグローバルオペレーションが、別の仮想パーティションに悪影響を与える可能性がないことが確実になることを十分理解することができる。
【００２７】
上記実施形態は、仮想アドレス空間のそれぞれの部分を形成する連続する領域ＩＤ範囲に関して説明されている。
たとえば、仮想アドレスの第２の部分２３２は、領域ＩＤ０ｘ４０００００〜０ｘ０７ＦＦＦＦＦを含む。
しかしながら、実施形態は、このような構成に限定されるものではない。
第２のカーネルに関連付けられる仮想アドレス空間が、不連続な領域ＩＤおよび連続する領域ＩＤの少なくとも一方を含む実施形態を実現することができる。
さらに、上記それぞれの部分は、領域ＩＤ空間の連続するブロックを使用して例示されている。
しかしながら、領域ＩＤのブロックのうちの任意の１つまたは２つ以上が、仮想アドレスの他のブロックのうちの任意の１つまたは２つ以上と連続していない代替的な実施形態を実現することができる。
たとえば、０ｘ８０００００〜０ｘＢＦＦＦＦＦにわたる領域ＩＤを有するのではなく、第３のカーネル２２０に関連付けられる領域ＩＤ空間２３４は、他の仮想アドレス空間２３０および２３２のどの領域ＩＤとも重ならない場合には、範囲０ｘＣ０００００〜０ｘＦＦＦＦＦＦまたは他の或る値にわたることができる。
【００２８】
加えて、仮想パーティション内のカーネルのいずれもが追加領域ＩＤ空間を要求することができる実施形態を実現することもできる。
追加領域ＩＤ空間の要求に応答して、パーティションモニタまたは他のエンティティは、要求側カーネルに関連付けられる既存の領域ＩＤ空間にさらなる領域ＩＤ空間を割り当てることができる。
このさらなる領域ＩＤ空間は、追加領域ＩＤ空間を要求したカーネルに関連付けられる既存の領域ＩＤ空間と連続していてもよいし、連続していなくてもよい。
要求側カーネルに割り当てられる追加領域ＩＤ空間は、要求側カーネルまたは要求側カーネルを含む仮想パーティションに専用または一意である１つまたは２つ以上の領域ＩＤを含む。
これによって、たとえばＴＬＢパージオペレーション等のグローバルオペレーションが、他のカーネルまたは仮想パーティションに関連付けられる仮想アドレスに悪影響を与えないことが確実になる。
【００２９】
本発明の実施形態は、ハードウェア、ソフトウェア、または、ハードウェアおよびソフトウェアの組み合わせの形態で実現することができることが十分理解されよう。
適切には、実施形態は、上記実施形態に関して説明したようなコンピュータシステムを実現するように構成された命令、または、上記実施形態に関して説明したような方法を実施するように構成された命令を含むプログラムを記憶、収容、通信、伝搬、またはトランスポートするコンピュータ可読媒体を提供する。
コンピュータ可読媒体には、たとえば、電子ベース、磁気ベース、光ベース、電磁気ベース、赤外線ベース、または半導体ベースのシステム、装置、デバイス、または伝搬媒体が含まれ得る。
特に、コンピュータ可読媒体の具体的な例には、１つまたは２つ以上のワイヤを有する電気接続、ポータブルコンピュータディスクまたはディスケット、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ若しくはフラッシュメモリ等の消去可能プログラマブルメモリ、光ファイバ、ＣＤ、ＤＶＤ、コンピュータ可読テープが含まれ得る。
またさらに、コンピュータ可読媒体には、プログラムを印刷でき且つたとえば光学式スキャンを介して読み取ることができ、その後、メモリに記憶される前にコンパイルできるか、解釈実行できるかまたは別の方法で実行することができる用紙または他の適した媒体も含まれ得る。
【図面の簡単な説明】
【００３０】
【図１】共通の変換索引バッファを有する従来技術のパーティショニングされたシステムを示す図である。
【図２】本発明の一実施形態によるパーティショニングされたシステムを示す図である。
【符号の説明】
【００３１】
１１０・・・仮想パーティション，
１１６・・・カーネル，
１３６・・・変換索引バッファ，
１３８・・・メインメモリ実アドレス，
１４０・・・パーティションモニタ，
２１０・・・仮想パーティション，
２１６・・・カーネル，
２３６・・・変換索引バッファ，
２４０・・・パーティションモニタ，
【図１】
2008276772.tif 000003
【図２】
2008276772.tif 000004
【外国語明細書】
DATA PROCESSING SYSTEM AND METHOD
Background to the invention
Virtual partitions allow a system administrator to create independent operating environments.  Virtual partitions within a server environment are realised using software partitioning technology that enables multiple virtual servers or partitions within a single server or within a hardware partition within a single server to be realised.  For example, HP-UX 11i Virtual Partitions (vPars) provides virtual partitions within a single server or, in conjunction with nPartition, within one or more hardware partitions.  Each virtual partition hosts an instance of a respective operating system and has associated supporting resources.  Optionally, each virtual partition comprises one or more applications and one or more users.
The physical memory of a server configured to have multiple virtual partitions is managed in such a manner that the operating system of each virtual partition appears to have access to the full virtual memory address space.  Virtual memory is well known within the art and CPU hardware assists in its realization by implementing a translation look aside buffer (TLB) that caches mappings between virtual addresses used within the virtual partitions to real addresses of memory of the server or other computer system supporting virtual addresses.
Various events occur within computer systems that have global consequences and global effects.  For example, a TLB purge operation associated with a given virtual address will remove from the TLB all instances of the virtual address to be purged.  While this may be acceptable to the operating system that instigated the TLB purge, within a system having a TLB that is shared among a number of operating systems handling the virtual partitions, the TLB purge operation will remove all instances of the purged virtual address, including those TLB entries having the same virtual address that are associated with partitions other than the partition containing the operating system that instigated the purge.  Such global operations can cause serious problems such as operating system panics and degraded system performance.
Brief description of the drawings
Embodiments of the present invention will now be described, by way of example only, with reference to the accompanying drawings in which:
figure 1 shows a prior art partitioned system having a common translation look aside buffer; and
figure 2 shows a partitioned system according to an embodiment of the present invention.
Detailed description
Referring to figure 1, there is shown a partitioned computer system 100 comprising four central processing units 102 to 108.  The central processing units 102 to 108 are arranged to support a number of virtual partitions 110 to 114.  The virtual partitions 110 to 114 comprise respective kernels 116 to 120.  The kernels support one or more applications such as, for example, the four applications 122 to 128 illustrated.  Each kernel 116 to 120 has access to the whole of a respective virtual address space 130 to 134.   A global virtual address on, for example, the Itanium architecture comprises of a region id and a virtual address.  Therefore, a global virtual address has the form <region id>.<virtual address>.  It can be appreciated that the virtual address spaces, therefore, comprise virtual addresses 0x000000 to 0xFFFFFF in combination with region ids 0x000000 to 0xFFFFFF.  The virtual address spaces 130 to 134 are realised using a combination of a translation look aside buffer 136 and a real memory 138. A single TLB 136 is shown in figure 1 to simplify explanation and to avoid an overly complicated diagram.  It should be noted, however, that each of the CPUs 102 to 108 implement respective TLBs.
The computer system 100 also comprises a partition monitor 140 for establishing the three virtual partitions 110 to 114 by appropriately assigning the CPUs 102 to 108 and other resources of the computer system 100 to the kernels 116 to 120.
It can be appreciated that the virtual memory 132 associated with the second kernel 118 comprises a full virtual address space 0x000000 to 0xFFFFFF, and the full region space of 0x000000 to 0xFFFFFF.  The memory 132 is also shown as comprising a particular virtual address 142, having a global virtual address of "rid1.va1".  The TLB 136 comprises a number of entries including an entry 144 that maps the virtual address 142 to a real address 146 within the real memory 138.
Also, it can be appreciated that the virtual memory 134 associated with the third kernel 120 comprises a full virtual address space 0x000000 to 0xFFFFFF, and the full region space of 0x000000 to 0xFFFFFF.  The memory 134 is also shown as comprising a particular virtual address 148, having a global virtual address "rid1.va1".  The TLB 136 comprises an entry 150 that maps the virtual address 148 to a real address 152 within the real memory 138.
Assume that a TLB purge operation associated with the virtual address "rid1.va1" of virtual memory 132 associated with the second kernel 118 is generated.  The TLB purge operation will remove all instances of the "rid1.va1" from the TLB 136.  Therefore, the purge operation will remove the entry associated with the global virtual address "rid1.va1", that is, virtual address 142, of the memory 132 of the second kernel 118.  However, the purge operation will also remove the entry 150 associated with the virtual address "rid1.va1", that is, virtual address 148, of virtual memory 134 associated with the third kernel 120.  Removing entry 150 from the TLB 136 will adversely interfere with the proper operation of the third virtual partition 114.
Referring to figure 2, there is shown a partitioned computer system 200 comprising four central processing units 202 to 208.  The central processing units 202 to 208 are arranged to support a number of virtual partitions 210 to 214.  The virtual partitions 210 to 214 comprise respective kernels 216 to 220.  The kernels support one or more applications such as, for example, the four applications 222 to 228 illustrated.  Each kernel 216 to 220 has access to a respective portion 230 to 234 of the whole of a respective virtual address space.  For the purposes of illustration only, assume that the virtual address spaces comprise virtual addresses 0x000000 to 0xFFFFFF and region id space of 0x000000 to 0xFFFFFF inclusive.  The respective portions 230 to 234 of the virtual address space are realised using a combination of a translation look aside buffer 236 and a real memory 238.  Again, as discussed with reference to figure1, a single TLB 236 is shown in figure 2. However, it should be noted that each of the CPUs 202 to 208 implement respective TLBs 236.
The computer system 200 also comprises a partition monitor 240 for establishing the three virtual partitions 210 to 214 by appropriately assigning the CPUs 202 to 208 and other resources of the computer system 200 to the kernels 216 to 220.
It can be appreciated that the virtual memory 232 associated with the second kernel 218 comprises a region id space spanning rid00 to rid01, wherein rid00 represents a first, or lower, region id, and rid01 represents a second, higher region id.  For example, the region ids rid00 and rid01 may span 0x400000 to 0x7FFFF of the available region id space of 0x000000 to 0xFFFFFF.  The memory 232 is also shown as comprising a particular virtual address 242, having a global virtual address of "ridW.vaX" with ridW falling within the region id space or range defined by rid00 to rid01.  In the particular example, ridW falls within the region id space of 0x400000 to 0x7FFFF.  The TLB 236 comprises a number of entries including an entry 244 that maps the virtual address 242, ridW.vaX, to a real address 246 within the real memory 238.
Also, it can be appreciated that the virtual memory 234 associated with the third kernel 220 comprises a region id space spanning rid10 to rid11, wherein rid10 represents a first, or lower, region id, and rid11 represents a second, higher region id.  For example, the region ids rid10 and rid11 may span 0x800000 to 0xBFFFFF of the full region id space or range 0x000000 to 0xFFFFFF.  The memory 234 is also shown as comprising a particular virtual address 248, having a global virtual address of "ridY.vaZ" with ridY falling within the region id space or range defined by rid10 to rid11.  In the particular example, ridY falls within the region id space of 0x800000 to 0xBFFFF.  The TLB 236 comprises an entry 250 that maps the virtual address 248 to a real address 252 within the real memory 238.
The monitor 240 has access to a table 254 that provides a mapping between kernels 256 and corresponding ranges of region ids 258.  For example, one skilled in the art appreciates that a virtual address within, for example, an IA-64 architecture comprises a virtual region number (vrn) also called as region id (RID), a virtual page number (vpn) and an offset.  The kernels 216 to 220 are arranged to issue a request to the monitor or CPUs for a range of region ids to be assigned.  The monitor 240 determines from the table 254 a contiguous set of available region ids and allocates it to the requesting kernel.  The virtual addresses used by the requesting kernel are defined using the set of allocated virtual region numbers.  The monitor manages the allocation of the virtual region numbers such that the kernels have different virtual region numbers thereby ensuring that the virtual address spaces allocated to the kernels are different.  Therefore, even if, in the above example, "vaX" is identical to "vaY", the corresponding global addresses, "ridW.vaX" and "ridY.ridZ", are different and can never be the same due to the monitor, or other entity, controlling allocating of region ids.  . Therefore, the above mentioned respective portions are defined using a combination of the virtual region number and the virtual page number and the offset.  The virtual region number may comprise a predetermined number of bits.  For example, the virtual region number may be represented using 3 bits, which would provide up to 8 virtual region numbers that can be divided up among the running partitions.
Assume that a TLB purge operation associated with the global virtual address "ridW.vaX" of virtual memory 232 associated with the second kernel 218 is generated.  The TLB purge operation will remove all instances of the "ridW.vaX" from the TLB 236.  However, in contrast to the prior art, since the range of region ids available to the second virtual partition 212 does not comprise any region ids that are common to any other virtual partitions and, in particular, to the third virtual partition 214, the TLB purge operation cannot adversely affect entries in the TLB 236 that are associated with the other virtual partitions 210 and 214 even if the virtual addresses "vaX" and "vaZ" are the same.  To illustrate further, "ridW" would fall within a region id range rid00 to rid01, and this range does not overlap with the ranges assigned to any other partition.  This ensures that the global virtual addresses across partitions are always unique and, hence, that TLB purges on one partition cannot impact others.
Although the above embodiments have been described with reference to a TLB purge operation, which is an embodiment of a global operation, embodiments are not limited thereto.  Embodiments can be realised in which the virtual addresses can be affected by any other type of operation, particularly on a global basis, that is, with the potential, but for the invention, to adversely affect global virtual addresses associated with other virtual partitions or CPUs.
The embodiments described above have been illustrated using three partitions 210 to 214.  However, some other number of partitions can equally well benefit from the invention.  Furthermore, the above embodiments have been illustrated using three kernels 216 to 220.  However, some other number of kernels can equally well be used.  Still further, the applications 222, 224, 226 and 228 are merely illustrative.  Some other number, that is, total number of applications or number of applications per virtual partition could equally well have been used to illustrate the advantages of the embodiments of the invention. 
The above embodiments have been illustrated using four CPUs.  However, embodiments are not limited to such an arrangement.  Embodiments can be realised using any number of hard partitions.  In the above embodiment, the first CPU 202 and the second CPU 204 form part of first and second hard partitions whereas the remaining two CPUs 206 and 208 for part of the same hard partition.
As used herein, the following definitions apply
A complex is an entire partitionable computer system, which may comprise, for example, a server, including at least one cabinet, all cells, IO chassis, cables, and power and utility components.  The above computer system 200 merely forms part of such a complex.
A hard partition is an isolated hardware environment, such as, for example, an nPartition within a server.  The nPartition product is available from Hewlett Packard Company.  A single standalone server can be thought of as being equivalent to a hard partition for some embodiments.
An nPartition is a subset of a complex that divides the complex into groups of cell boards where each group operates independently of other groups.  For example, an nPartition can run a single instance of an operating system such as, for example, HP-UX or be further divided into virtual partitions.
A virtual partition is a software partition of a hard partition where each virtual partition contains an instance of an operating system such as, for example, HP-UX.  Although a hard partition can contain multiple virtual partitions, the inverse is not true.  A virtual partition cannot span a hard partition boundary.
It can be appreciated that careful assignment of virtual addresses of the virtual address space such that the virtual addresses of the virtual partitions are mutually exclusive ensures that global operations instigated or issued by one virtual partition cannot adversely affect another virtual partition since there is no overlap between virtual addresses associated with virtual partitions.
The above embodiments have been described with reference to contiguous region id ranges forming a respective portion of the virtual address spaces.  For example, the second portion 232 of virtual addresses comprises region ids 0x400000 to 0x07FFFFF.  However, embodiments are not limited to such an arrangement.  Embodiments can be realised in which the virtual address space associated with the second kernel comprises at least one of non-contiguous and contiguous region ids.  Furthermore, the above respective portions have been illustrated using contiguous blocks of region id space.  However, alternative embodiments can be realised in which any one or more of the blocks of region ids are not contiguous with any one or more of the other blocks of virtual addresses.  For example, rather than having region ids spanning 0x800000 to 0xBFFFFF, the region id space 234 associated with the third kernel 220 may span a range 0xC00000 to 0xFFFFFF or some other value providing there is no overlap with any region ids of the other virtual address spaces 230 and 232.
Additionally, embodiments can be realised in which any of the kernels within the virtual partitions may request additional region id space.  In response to a request for additional region id space, the partition monitor, or other entity, may assign further region id space to the existing region id space associated with the requesting kernel.  The further region id space may be contiguous or otherwise with the existing region id space associated with the kernel requesting the additional region id space.  The additional region id space assigned to the requesting kernel will comprise one or more region ids that are exclusive or unique to the requesting kernel or virtual partition comprising the requesting kernel.  This ensures that global operations such as, for example, TLB purge operations do not adversely affect virtual addresses associated with other kernels or virtual partitions.
It will be appreciated that embodiments of the present invention can be realised in the form of hardware, software or a combination or hardware and software.  Suitably, embodiments provide computer readable medium storing, containing, communicating, propagating or transporting a program containing instructions arranged to realise a computer system as described with reference to the above embodiments or to implement a method as described with reference to the above embodiments.  The computer readable medium may comprise, for example, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor based system, apparatus, device or propagation medium.  In particular, specific examples of a computer readable medium may comprises an electrical connection having one or more wires, a portable computer disk or diskette, RAM, ROM, erasable, programmable memory, such as EPROM, EEPROM, or Flash memory, an optical fibre, a CD, a DVD, a computer readable tape.  Still further, the computer readable medium may comprise paper or other suitable medium upon which the program can be printed and read via, for example, optical scanning, then compiled or interpreted or otherwise executed before being stored in a memory.
CLAIMS
1. A data processing system comprising at least one hard partition comprising a plurality of virtual partitions; each of the virtual partitions comprising respective virtual address spaces accessible via a memory access means for relating virtual addresses to real addresses of a real memory; wherein each virtual address space comprises respective unique virtual addresses.
2. A data processing system as claimed in claim 1 comprising means to assign to a virtual partition of the plurality of virtual partitions a virtual address space comprising respective unique virtual addresses.
3. A data processing system as claimed in claim 2 wherein the means for assigning is responsive to a predetermined operation.
4. A data processing system as claimed in claim 3 wherein the predetermined operation comprises associating a predetermined class of software with at least one virtual partition of the plurality of virtual partitions.
5. A data processing system as claimed in claim 4 wherein the predetermined class of software comprises an operating system.
6. A data processing system as claimed any of claims 3 to 5 wherein the predetermined operation comprises a boot operation.
7. A data processing system as claimed in any preceding claim comprising means for assigning further unique virtual addresses to any of said respective unique virtual addresses.
8. A data processing system as claimed in claim 7 wherein the means for assigning further unique virtual addresses to any of said respective unique virtual addresses is responsive to a request associated with a predetermined class of software for more memory.
9. A complex comprising a data processing system as claimed in any preceding claim.
10. A data processing method comprising associating a first set of virtual addresses with at least of one a first virtual partition of a computer system or a kernel of such a virtual partition of such a computer system wherein the virtual addresses of the first set of virtual addresses are unique to the least one of the first virtual partition of the computer system or the kernel of the first virtual partition of the computer system such that the first set comprises no virtual addresses in common with at least a second set of virtual address associated with at least one of a second virtual partition of the computer system or a second kernel of the second virtual partition of the computer system.
11. A data processing method as claimed in claim 10 comprising associating a third set of virtual addresses with said at least of one the first virtual partition of the computer system or the kernel of such the first virtual partition of the computer system wherein the virtual addresses of the third set of virtual addresses are unique to the least one of the first virtual partition of the computer system or the kernel of the first virtual partition of the computer system such that the third set comprises no virtual addresses in common with at least said a second set of virtual address associated with at least one of said second virtual partition of the computer system or said second kernel of the second virtual partition of the computer system.
12. Computer readable medium comprising a computer program having instructions arranged to realise a system as claimed in any of claims 1 to 9 or to implement a method as claimed in any of claims 10 to 11.
ABSTRACT
Data processing system and method
Embodiments provide a data processing system comprising at least one hard partition comprising a plurality of virtual partitions; each of the virtual partitions comprising respective virtual address spaces accessible via a memory access means for relating virtual addresses to real addresses of a real memory; wherein each virtual address space comprises respective unique virtual addresses.
(Figure 2)
2008276772.tif 000005
2008276772.tif 000006